Files
hunjing/Makefile
T
2026-09-21 11:19:07 +08:00

111 lines
3.8 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.
# 默认目标:显示帮助
.DEFAULT_GOAL := help
# ===== 后端(Python / FastAPI,uv 管理) =====
.PHONY: backend-setup
backend-setup: ## 安装后端依赖(uv sync)
cd backend && uv sync
.PHONY: backend-dev
backend-dev: ## 启动后端开发服务(127.0.0.1:8000)
cd backend && uv run --env-file .env uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
.PHONY: backend-test
backend-test: ## 运行后端测试(pytest)
cd backend && uv run pytest
.PHONY: backend-lint
backend-lint: ## 后端静态检查(ruff + mypy)
cd backend && uv run ruff check . && uv run mypy app
.PHONY: mock-model
mock-model: ## 启动开发档 Mock 模型服务(127.0.0.1:8001,联调 Run 流水线)
cd backend && uv run python scripts/mock_model.py
# ===== 灵台引擎(C++23 / CMake) =====
.PHONY: engine-build
engine-build: ## 构建灵台引擎(CMake + Ninja/Makefile)
cmake -S engine -B engine/build -DCMAKE_BUILD_TYPE=Release && cmake --build engine/build
.PHONY: engine-test
engine-test: ## 运行灵台引擎测试(ctest)
cmake -S engine -B engine/build -DCMAKE_BUILD_TYPE=Debug && cmake --build engine/build && ctest --test-dir engine/build --output-on-failure
# ===== 数据库(PostgreSQL 统一,ADR-024) =====
.PHONY: docker-up
docker-up: ## 启动本地 PostgreSQL(docker compose)
docker compose -f docker/docker-compose.yml up -d
.PHONY: docker-down
docker-down: ## 停止本地 PostgreSQL
docker compose -f docker/docker-compose.yml down
.PHONY: backend-migrate
backend-migrate: ## 执行数据库迁移(Alembic upgrade head)
cd backend && uv run alembic upgrade head
# ===== 契约(OpenAPI 3.1 单一真源) =====
.PHONY: openapi-lint
openapi-lint: ## 校验 OpenAPI 契约(redocly lint + bundle)
npx --yes @redocly/cli@latest lint openapi/openapi.yaml --config openapi/redocly.yaml && npx --yes @redocly/cli@latest bundle openapi/openapi.yaml -o openapi/bundled.json
.PHONY: generate
generate: openapi-lint ## 生成代码(TypeScript 类型等)
cd frontend && pnpm generate:api
# ===== 灵台引擎 gRPC 服务(ADR-017 双形态) =====
.PHONY: lingtai-proto
lingtai-proto: ## 重新生成 gRPC stub(proto 变更后执行)
cd backend && uv run python -m grpc_tools.protoc -I../engine/proto \
--python_out=../engine/server/generated \
--grpc_python_out=../engine/server/generated \
liushen/v1/liushen.proto
.PHONY: lingtai-server
lingtai-server: ## 启动灵台引擎独立服务(开发档 127.0.0.1:50051;生产须 mTLS)
cd backend && uv run python ../engine/server/lingtai_server.py
# ===== 前端与桌面(Next.js / Tauri v2) =====
.PHONY: frontend-setup
frontend-setup: ## 安装前端依赖
cd frontend && pnpm install
.PHONY: frontend-dev
frontend-dev: ## 启动前端开发服务(127.0.0.1:3000)
cd frontend && pnpm dev
# ===== 自托管与备份(WP-14) =====
.PHONY: selfhost-up
selfhost-up: ## 启动自托管档(API + PostgreSQL,docker compose)
docker compose -f docker/docker-compose.app.yml up -d --build
.PHONY: selfhost-down
selfhost-down: ## 停止自托管档
docker compose -f docker/docker-compose.app.yml down
.PHONY: db-dump
db-dump: ## 备份数据库到 backups/hunjing-<时间戳>.sql.gz
@mkdir -p backups
@docker exec hunjing-postgres pg_dump -U hunjing -d hunjing | gzip > backups/hunjing-$$(date +%Y%m%d-%H%M%S).sql.gz
@echo "备份完成:backups/"
.PHONY: db-restore
db-restore: ## 从最新备份恢复(DB=备份文件路径,make db-restore FILE=backups/xxx.sql.gz)
@gzip -dc $(FILE) | docker exec -i hunjing-postgres psql -U hunjing -d hunjing
@echo "恢复完成"
# ===== 帮助 =====
.PHONY: help
help: ## 显示本帮助
@echo "Hunjing 统一命令入口(详见各目标 ## 说明)"
@echo
@grep -E '^[a-zA-Z_-]+:.*?## ' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'