119 lines
4.2 KiB
Makefile
119 lines
4.2 KiB
Makefile
PYTHON := .venv/bin/python
|
||
PIP := .venv/bin/pip
|
||
TODAY := $(shell date +%Y-%m-%d)
|
||
|
||
.PHONY: help setup init status preview preview-dates dry-run dry-run-dates fill fill-range fill-dates teams-test start stop restart server-status start-fg docker-build docker-up docker-down docker-logs docker-restart docker-start
|
||
|
||
help:
|
||
@echo "吉八小 · 集滿八小時"
|
||
@echo ""
|
||
@echo " make setup 建立 venv + 安裝依賴 + 建立 .env"
|
||
@echo " make status 檢查設定 / Session / 任務數"
|
||
@echo " make preview 用 Grok 預覽今天的填寫計畫"
|
||
@echo " make dry-run 試跑今天(不送出 PTS)"
|
||
@echo " make fill 一鍵填寫今天"
|
||
@echo " make fill-range START=... END=... 補寫日期區間"
|
||
@echo " make fill-dates 依 dates.txt 補寫指定日期"
|
||
@echo " make preview-dates 預覽 dates.txt 的分配"
|
||
@echo " make teams-test [START=] [END=] 只測 Teams 抓會議(不寫 PTS)"
|
||
@echo " make start 背景啟動 Web UI + API"
|
||
@echo " make stop 關閉伺服器"
|
||
@echo " make restart 重啟伺服器"
|
||
@echo " make server-status 查看伺服器是否在跑"
|
||
@echo " make start-fg 前景啟動(開發用,Ctrl+C 結束)"
|
||
@echo " make docker-start 一鍵:關本地 + 建置 + 啟動 Docker"
|
||
@echo " make docker-build 建置 Docker 映像"
|
||
@echo " make docker-up 啟動 Docker(無主機掛載,/data 為 tmpfs,關容器即消失)"
|
||
@echo " make docker-down 停止 Docker"
|
||
@echo " make docker-logs 查看 Docker log"
|
||
@echo ""
|
||
@echo "第一次請先:"
|
||
@echo " 1) 編輯 .env 填入 GITLAB_TOKEN / XAI_API_KEY"
|
||
@echo " 2) make start → 網頁輸入 PTS(與選用 Teams)帳密登入"
|
||
@echo " 3) make fill"
|
||
|
||
setup: init
|
||
python3 -m venv .venv
|
||
$(PIP) install -r backend/requirements.txt
|
||
$(PYTHON) -m playwright install chromium
|
||
@echo "Setup done. Edit .env then open http://localhost:8765 to login with PTS / Teams accounts."
|
||
|
||
init:
|
||
@test -f .env || cp .env.example .env
|
||
|
||
status:
|
||
cd backend && ../$(PYTHON) cli.py status
|
||
|
||
preview:
|
||
cd backend && ../$(PYTHON) cli.py preview --start $(TODAY) --end $(TODAY)
|
||
|
||
dry-run:
|
||
cd backend && ../$(PYTHON) cli.py fill-today --dry-run
|
||
|
||
fill:
|
||
cd backend && ../$(PYTHON) cli.py fill-today
|
||
|
||
fill-range:
|
||
@test -n "$(START)" && test -n "$(END)" || (echo "Usage: make fill-range START=YYYY-MM-DD END=YYYY-MM-DD" && exit 1)
|
||
cd backend && ../$(PYTHON) cli.py fill-range --start $(START) --end $(END)
|
||
|
||
preview-dates:
|
||
cd backend && ../$(PYTHON) cli.py preview-dates --file ../dates.txt
|
||
|
||
dry-run-dates:
|
||
cd backend && ../$(PYTHON) cli.py fill-dates --file ../dates.txt --dry-run
|
||
|
||
fill-dates:
|
||
cd backend && ../$(PYTHON) cli.py fill-dates --file ../dates.txt
|
||
|
||
teams-test:
|
||
cd backend && ../$(PYTHON) cli.py teams-test $(if $(START),--start $(START),) $(if $(END),--end $(END),) $(if $(INCLUDE_HOLIDAYS),--include-holidays,)
|
||
|
||
start:
|
||
@chmod +x scripts/server.sh
|
||
@./scripts/server.sh start
|
||
|
||
stop:
|
||
@chmod +x scripts/server.sh
|
||
@./scripts/server.sh stop
|
||
|
||
restart:
|
||
@chmod +x scripts/server.sh
|
||
@./scripts/server.sh restart
|
||
|
||
server-status:
|
||
@chmod +x scripts/server.sh
|
||
@./scripts/server.sh status
|
||
|
||
start-fg:
|
||
cd backend && ../$(PYTHON) main.py
|
||
|
||
docker-start:
|
||
@chmod +x scripts/docker-start.sh
|
||
@./scripts/docker-start.sh
|
||
|
||
docker-build:
|
||
docker compose build --pull
|
||
|
||
docker-up:
|
||
@echo "Ephemeral mode: no host data mount (tmpfs /data only)"
|
||
docker compose up -d --build --force-recreate --remove-orphans
|
||
@echo "Web UI: http://localhost:$${BACKEND_PORT:-8765}"
|
||
@echo "資料僅在容器內,docker compose down 後即消失"
|
||
|
||
docker-down:
|
||
docker compose down --remove-orphans
|
||
|
||
docker-logs:
|
||
docker compose logs -f
|
||
|
||
docker-restart:
|
||
docker compose up -d --force-recreate --build --remove-orphans
|
||
|
||
# Stop local Python server + Docker container
|
||
stop-all:
|
||
@chmod +x scripts/server.sh
|
||
@./scripts/server.sh stop 2>/dev/null || true
|
||
@docker compose down --remove-orphans 2>/dev/null || true
|
||
@echo "All local + Docker services stopped"
|