Pydantic 多模型 API 契约
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/pydantic-models-py。
技能介绍
要解决什么问题
REST 或 RPC 接口里,创建、更新、响应和落库字段往往不一致:创建时不能带 id,更新要全可选,响应对外字段和 Mongo/文档库里的 doc_type 结构也不该混在一个 Model 里。手写几套类容易漏字段、Optional 写错,前后端类型也对不齐。
技能如何工作
本技能约定 多模型模式,用 assets/template.py 复制模板后替换占位符:
{{ResourceName}}→ PascalCase(如Project){{resource_name}}→ snake_case(如project)
各模型分工如下:
| 模型 | 用途 |
|------|------|
| Base | 共享公共字段 |
| Create | 创建请求体(必填字段) |
| Update | 更新请求体(全部可选) |
| Response | 完整 API 响应 |
| InDB | 带 doc_type 的数据库文档 |
文档中还覆盖 camelCase 别名、可选更新字段等常见约定。集成路径固定为三步:在 src/backend/app/models/ 建模型 → 从 src/backend/app/models/__init__.py 导出 → 补对应 TypeScript 类型。非核心能力与生产检查清单见 references/capabilities.md。
适用边界
这是 Pydantic 模型结构与命名 的脚手架指引,不包含路由、鉴权或 ORM 迁移。若项目已有自己的 DTO 分层规范,需对照是否与本技能的 Base/Create/Update 划分一致再套用模板。
使用场景
- 为新业务实体(如 Project)从 template.py 生成 Base/Create/Update/Response/InDB 五类模型并替换占位符
- 接口评审发现创建与更新共用一个 Model,需按技能约定拆成 Create 必填与 Update 全可选
- 在 src/backend/app/models/ 新增资源模型后,同步补全前端 TypeScript 类型以保持字段一致
- 文档库文档带 doc_type,需要单独 InDB 模型与对外 Response 字段分离时对照模板实现
适合人员
- 维护 FastAPI/Starlette 类项目、每次上新资源都要在 models 目录补 Pydantic 类的后端工程师
- 全栈开发者在 monorepo 里同时改 Python 模型与 TS 类型、希望 Create/Update 语义一致的同学
- 负责 API 契约评审、要检查响应体是否混入了仅数据库使用的字段的技术负责人
- 从智雨科技模板栈接入项目、需要按 references/capabilities.md 做生产环境检查的新成员