visionA/Makefile
jim800121chen d9d8f03fba chore: visionA Cloud monorepo 根目錄設定(Makefile + README + .gitignore)
- 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>
2026-05-01 11:22:57 +08:00

111 lines
4.6 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# visionA monorepo dev convenience Makefile
#
# 對應文件:
# - docs/DEV-SETUP.md完整 dev 環境流程,含 OAuth client 註冊)
# - docker-compose.dev.ymldev all-in-onepostgres + 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 buildAgent 桌面端)
# - local-tool/ — 離線版桌面工具(獨立子專案)
#
# 設計原則:
# 1. dev 環境用 docker compose 一鍵啟動 backend + DB + Member CenterOIDC provider
# 2. frontend 仍用 host pnpm devHMR 體驗較好,不放 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 環境 logstail=50, follow"
@echo " make dev-status # 看 dev 環境 service 狀態"
@echo ""
@echo " make frontend-dev # 起 frontend dev serverpnpm devhost"
@echo ""
@echo " make clean # 清掉所有 build artifact不含 docker volumes"
@echo ""
@echo "完整流程(含 OAuth client 手動註冊)見 docs/DEV-SETUP.md"
# ---------------------------------------------------------------------------
# dev environmentdocker 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 healthywatch -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 volumepgdata + 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
# ---------------------------------------------------------------------------
# frontendhost不在 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"