- Makefile:top-level convenience targets(呼叫各子專案的 Makefile)
- README.md:擴充為 monorepo 索引(local-tool / visionA-backend /
visionA-frontend / local-agent 各組件說明 + dev-with-mc / stage 部署 quickstart)
- .gitignore:
- .env.dev / .env.dev.generated / .env.stage 排除(dev 與 stage 環境檔不進 git)
- .autoflow/ 整包 ignore(個人/per-branch 工作目錄;progress.md 與 review 報告
皆 ignored;共享產品文件已搬到 docs/ 進 git)
- graphify-out/ 排除
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
111 lines
4.6 KiB
Makefile
111 lines
4.6 KiB
Makefile
# visionA monorepo dev convenience Makefile
|
||
#
|
||
# 對應文件:
|
||
# - docs/DEV-SETUP.md(完整 dev 環境流程,含 OAuth client 註冊)
|
||
# - docker-compose.dev.yml(dev all-in-one:postgres + member-center + visiona-backend)
|
||
# - .autoflow/04-architecture/oidc-tdd.md §12
|
||
#
|
||
# 子專案 Makefile(不在這裡 wrap,請進子目錄使用):
|
||
# - visionA-backend/Makefile — go build / docker-compose prod / 單元測試
|
||
# - local-agent/Makefile — wails build(Agent 桌面端)
|
||
# - local-tool/ — 離線版桌面工具(獨立子專案)
|
||
#
|
||
# 設計原則:
|
||
# 1. dev 環境用 docker compose 一鍵啟動 backend + DB + Member Center(OIDC provider)
|
||
# 2. frontend 仍用 host pnpm dev(HMR 體驗較好,不放 compose)
|
||
# 3. dev-reset 是核選項,會清掉 DB volume,慎用
|
||
#
|
||
# ⚠️ 此 Makefile 僅供 dev 使用,production 走 visionA-backend/docker/docker-compose.yml + IaC。
|
||
|
||
COMPOSE_FILE := docker-compose.dev.yml
|
||
COMPOSE := docker compose -f $(COMPOSE_FILE)
|
||
ENV_FILE := .env.dev
|
||
ENV_EXAMPLE := .env.dev.example
|
||
FRONTEND_DIR := visionA-frontend
|
||
|
||
.DEFAULT_GOAL := help
|
||
.PHONY: help dev-up dev-down dev-logs dev-status dev-reset dev-rebuild \
|
||
frontend-dev backend-dev clean check-env
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Help
|
||
# ---------------------------------------------------------------------------
|
||
help:
|
||
@echo "visionA Dev Commands:"
|
||
@echo ""
|
||
@echo " make dev-up # 起 dev 環境(postgres + member-center + visiona-backend)"
|
||
@echo " make dev-down # 停 dev 環境(保留 DB volume)"
|
||
@echo " make dev-reset # 停 dev 環境並清掉 DB volume(從零重來,慎用)"
|
||
@echo " make dev-rebuild # 重 build images 並重啟(程式碼改動後用)"
|
||
@echo " make dev-logs # 跟蹤 dev 環境 logs(tail=50, follow)"
|
||
@echo " make dev-status # 看 dev 環境 service 狀態"
|
||
@echo ""
|
||
@echo " make frontend-dev # 起 frontend dev server(pnpm dev,host)"
|
||
@echo ""
|
||
@echo " make clean # 清掉所有 build artifact(不含 docker volumes)"
|
||
@echo ""
|
||
@echo "完整流程(含 OAuth client 手動註冊)見 docs/DEV-SETUP.md"
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# dev environment(docker compose)
|
||
# ---------------------------------------------------------------------------
|
||
|
||
# 確保 .env.dev 存在;不存在則從範本複製並提示使用者編輯
|
||
check-env:
|
||
@if [ ! -f $(ENV_FILE) ]; then \
|
||
echo ">>> 未找到 $(ENV_FILE),從 $(ENV_EXAMPLE) 複製一份..."; \
|
||
cp $(ENV_EXAMPLE) $(ENV_FILE); \
|
||
echo ""; \
|
||
echo " 已建立 $(ENV_FILE)(預設 VISIONA_AUTH_TYPE=static,可立刻起來跑)"; \
|
||
echo " 要切到 OIDC 模式:請依 docs/DEV-SETUP.md §5 註冊 OAuth client,"; \
|
||
echo " 把 client_id/secret 填入 $(ENV_FILE),並改 VISIONA_AUTH_TYPE=oidc 後重啟。"; \
|
||
echo ""; \
|
||
fi
|
||
|
||
dev-up: check-env
|
||
$(COMPOSE) --env-file $(ENV_FILE) up -d
|
||
@echo ""
|
||
@echo ">>> 等 service 起動..."
|
||
@sleep 3
|
||
@$(COMPOSE) ps
|
||
@echo ""
|
||
@echo ">>> 啟動完成。下一步:"
|
||
@echo " 1. 等所有 service healthy:watch -n 2 'docker compose -f $(COMPOSE_FILE) ps'"
|
||
@echo " 2. 起 frontend: make frontend-dev"
|
||
@echo " 3. 開瀏覽器: http://localhost:3000"
|
||
@echo " (首次需手動註冊 OAuth client,見 docs/DEV-SETUP.md §5)"
|
||
|
||
dev-down:
|
||
$(COMPOSE) down
|
||
|
||
dev-reset:
|
||
@echo "⚠️ 將清掉所有 dev DB volume(pgdata + api-storage),無法復原。"
|
||
@printf "確定?(y/N) "; read ans; if [ "$$ans" != "y" ] && [ "$$ans" != "Y" ]; then echo "取消"; exit 1; fi
|
||
$(COMPOSE) down -v
|
||
@echo "✓ Dev 環境已清掉(含 DB volume)"
|
||
|
||
dev-rebuild: check-env
|
||
$(COMPOSE) --env-file $(ENV_FILE) up -d --build
|
||
@$(COMPOSE) ps
|
||
|
||
dev-logs:
|
||
$(COMPOSE) logs -f --tail=50
|
||
|
||
dev-status:
|
||
$(COMPOSE) ps
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# frontend(host,不在 compose 內)
|
||
# ---------------------------------------------------------------------------
|
||
frontend-dev:
|
||
cd $(FRONTEND_DIR) && pnpm install && pnpm dev
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# clean
|
||
# ---------------------------------------------------------------------------
|
||
clean:
|
||
-cd visionA-backend && $(MAKE) clean 2>/dev/null || true
|
||
-cd local-agent && $(MAKE) clean 2>/dev/null || true
|
||
-cd $(FRONTEND_DIR) && rm -rf .next out node_modules
|
||
@echo "✓ build artifact 已清除(docker volumes 不受影響,請另用 make dev-reset)"
|