CAM(API Management)的后端服务,负责用户鉴权、服务与接口资产管理、版本迭代,以及 API 草稿的 AI 生成。它是管理台与 cam-fe-code-generator CLI 共同依赖的服务端事实来源。
- 用户注册、登录、JWT 鉴权、个人资料查询与密码修改。
- Service 的创建、查询、软删除与恢复,以及基于
service_uuid + version的历史版本读取。 - 以迭代为工作区管理 API 变更:创建草稿、编辑参数树、提交新版本。
- API 分类与 API 定义管理;请求参数按
query、path、header、cookie、body组织,响应参数按状态码组织。 - 可选的 AI API 草稿建议能力(只生成并校验提案,不直接写库)。
- 面向前端和 CLI 的 JSON HTTP API,路由前缀为
/v1/user、/v1/service、/v1/api、/v1/ai。
Python 3.13+、Robyn、SQLAlchemy、PostgreSQL、Alembic、uv、JWT(python-jose)。
安装 Python 3.13+、uv 和可访问的 PostgreSQL 数据库。
uv sync基于 .env.example 在项目根目录创建 .env(不要提交到仓库)。
首次启动会连接数据库并按当前 ORM 模型创建尚不存在的数据表。生产环境应先准备数据库备份与受控的迁移流程。
# 开发:热重载
uv run ./run-dev.sh
# 生产进程配置
uv run ./run-prod.sh健康检查:GET / 返回 OK。
修改 database/models.py 后,可生成并应用 Alembic 迁移:
uv run database/db-migrate.sh执行前请审查自动生成的迁移内容;不要把生产库结构变更仅交给自动迁移决定。
Service 保存当前已发布版本;ServiceIteration 保存一次迭代及其草稿快照。启动迭代后,API 与参数会复制到 ApiDraft、RequestParamDraft、ResponseParamDraft;提交迭代后再同步回正式表并更新 Service 版本。这样,最新版本与历史版本均可按 service_uuid + version 读取。
受保护接口使用 Authorization: Bearer <access_token>。L0 为管理员级别;普通用户只能操作其拥有或被授权维护的资源。路由仅负责参数与响应,业务和权限校验应放在 services/。
app.py # 应用入口、路由挂载、CORS 与启动钩子
authentication.py # JWT / Robyn 鉴权处理
subRouters/v1/ # HTTP 路由:user、service、api、ai
services/ # 业务逻辑、权限校验与 AI 提案
database/ # SQLAlchemy 模型、枚举、连接与迁移脚本
mailer.py # SMTP 邮件发送
docs/ # 开发说明与产品约束
FE-CAM:通过VITE_API_BASE_URL指向本服务,提供管理界面。cam-fe-code-generator:登录后从本服务拉取指定 Service 与 API 定义,生成 TypeScript 调用代码。
拆库后请把 API 合同(路径、请求/响应字段、版本语义)作为跨仓库变更的一部分同步维护;不要只修改某一端。
- 路由新增在
subRouters/v1/,对应业务放入services/;数据库模型与枚举放入database/。 - 密码必须使用模型提供的哈希方法;不得记录 JWT、数据库口令、SMTP 或模型服务凭据。
- 新增受保护路由应启用
auth_required=True并在业务层校验资源归属。 - AI 功能的输入和模型输出必须经过现有校验,且不应绕过迭代权限校验。
仓库拆分时请在此仓库根目录补充并明确适用的 LICENSE。