1.4 KiB
1.4 KiB
AGENTS.md — @app/types
职责
对外/跨层输入校验与共享类型的唯一源。只放 Zod schema 与纯类型,不依赖数据库、不跑 IO。
- 入参 schema:
userSchemas(create / update / get / list / delete)、authSchemas - 输出类型:
User、UserListOutput等(手写 DTO,供前端与 service 对齐)
结构
src/
schemas.ts # Zod schema + 输出类型(业务入口)
index.ts # export * from "./schemas.js"
修改指南
- 新实体:在
schemas.ts增加xxxSchemas对象(按 create/update/get/list/delete 分组),并在index.ts重导出。 - schema 必须被
@app/trpc的 procedure 直接使用,不要在 router 里再写一份校验。 - 输出类型若与 Drizzle 行结构一致,可从
@app/models的$inferSelect派生;若 API 形状与表不一致(如UserListOutput),在此手写 DTO。 - 错误消息用中文(与现有
userSchemas一致)。
约束
- 零运行时依赖除
zod外的包;禁止 import@app/db/@app/models。 exactOptionalPropertyTypes:可选字段用.optional(),TS 侧?: T | undefined。src/下若有*.js/*.d.ts产物(历史编译输出),不要手改;真源是.ts。新增代码只写.ts。
命令
yarn workspace @app/types typecheck
yarn workspace @app/types lint
yarn workspace @app/types build # 产出 dist/ 供下游