2026-06-08 22:39:45 +08:00
# AI Video Assistant 平台 —— 开发常用命令
#
# 用法:make <目标>,例如 make up / make db-seed。
# 多数目标是对 docker compose 的薄封装,集中沉淀平时手敲的开发脚本。
# 容器内执行 psql 的固定前缀(postgres/postgres/postgres,见 docker-compose.yaml)
PSQL = docker compose exec -T postgres psql -U postgres -d postgres
2026-07-09 16:29:10 +08:00
UV = UV_CACHE_DIR = /private/tmp/ai-video-uv-cache uv run --with-requirements requirements.txt
2026-06-08 22:39:45 +08:00
.DEFAULT_GOAL := help
2026-07-09 16:29:10 +08:00
.PHONY : help up down restart logs api -logs db db -list db -up db -migrate db -revision db -current db -sync -interface -definitions db -init db -seed db -seed -model -resources db -seed -assistants db -clear db -reset db -drop -schema db -reset -hard
2026-06-08 22:39:45 +08:00
help : ## 列出所有可用目标
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $( MAKEFILE_LIST) \
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-12s\033[0m %s\n", $$1, $$2}'
# ---- 服务编排 ----
up : ## 起 postgres + api + ui
docker compose up -d
down : ## 停掉所有服务(保留数据卷)
docker compose down
restart : ## 重建 api 容器(改了 env/CORS 后用)
docker compose up -d --force-recreate api
logs : ## 跟随全部服务日志
docker compose logs -f
api-logs : ## 只看后端日志
docker compose logs -f api
# ---- 数据库 ----
db : ## 进入交互式 psql
docker compose exec postgres psql -U postgres -d postgres
2026-06-14 19:36:12 +08:00
db-list : ## 列出模型资源与助手
@$( PSQL) -c "SELECT id, name, capability, interface_type, is_default FROM model_resources ORDER BY id;"
2026-06-09 10:37:29 +08:00
@$( PSQL) -c "SELECT id, name, type FROM assistants ORDER BY id;"
2026-06-08 22:39:45 +08:00
2026-07-07 22:08:42 +08:00
db-up : ## 仅启动 postgres
docker compose up -d postgres
2026-07-09 16:29:10 +08:00
db-migrate : ## 执行 Alembic 迁移到最新版
cd backend && $( UV) alembic upgrade head
2026-07-07 22:08:42 +08:00
2026-07-09 16:29:10 +08:00
db-revision : ## 自动生成 Alembic 迁移: make db-revision msg="add xxx"
cd backend && $( UV) alembic revision --autogenerate -m " $( msg) "
2026-07-07 22:08:42 +08:00
2026-07-09 16:29:10 +08:00
db-current : ## 查看当前数据库迁移版本
cd backend && $( UV) alembic current
db-sync-interface-definitions : ## 从 interface_catalog.py 同步接口定义(幂等)
cd backend && $( UV) python -m db.sync_interface_definitions
db-init : db -migrate db -sync -interface -definitions ## 用 Alembic 建表并同步接口定义
2026-07-07 22:08:42 +08:00
2026-06-14 19:36:12 +08:00
db-seed-model-resources : ## 灌入 12 条模型资源种子(幂等)
$( PSQL) < backend/db/seed_model_resources.sql
2026-06-08 22:39:45 +08:00
2026-06-14 19:36:12 +08:00
db-seed-assistants : ## 灌入 知识库 + 助手 种子(幂等;依赖模型资源已就绪)
2026-06-09 10:37:29 +08:00
$( PSQL) < backend/db/seed_assistants.sql
2026-06-08 22:39:45 +08:00
2026-07-07 22:08:42 +08:00
db-seed : db -init db -seed -model -resources db -seed -assistants ## 全量灌种子(接口定义→模型资源→知识库→助手,幂等,可重复执行)
2026-06-09 10:37:29 +08:00
2026-07-07 21:50:15 +08:00
db-clear : ## 清空 助手/知识库/模型资源(按依赖顺序;表不存在时跳过)
@$( PSQL) -c "DO \$ $\$ $ BEGIN IF EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'model_resources') THEN TRUNCATE assistant_model_bindings, assistants, knowledge_bases, model_resources CASCADE; END IF; END \$ $\$ $;"
2026-06-09 10:37:29 +08:00
2026-07-07 22:08:42 +08:00
db-reset : db -up db -clear db -seed ## 启动库、建表/清空后重新灌全部种子
2026-07-07 21:58:56 +08:00
db-drop-schema : ## 删除并重建 public schema(开发用:表结构变更后会清空全部数据)
@$( PSQL) -c "DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public;"
2026-07-07 22:08:42 +08:00
db-reset-hard : db -up db -drop -schema db -seed ## 启动库、重建 schema,建表,再灌种子