|
| 1 | +# AI Schema 编写规则 |
| 2 | + |
| 3 | +本文档用于放入业务 Directus 项目,约束 Codex/AI 使用 DSK 编写 `dsk/schemas/*.ts`、`dsk/resources/*.ts` 和 `dsk/seeds/**/*.json`。 |
| 4 | + |
| 5 | +## 开始前 |
| 6 | + |
| 7 | +让 AI 写 schema 前,应要求它先阅读: |
| 8 | + |
| 9 | +1. 当前业务项目的 `dsk/` 目录。 |
| 10 | +2. 当前业务项目已有的 `.ai/` 规则文档。 |
| 11 | +3. DSK 文档中的 [Schema DSL](./schema-dsl.md)。 |
| 12 | +4. DSK 文档中的 [Manifest V1](./manifest.md)。 |
| 13 | + |
| 14 | +## 必须遵守 |
| 15 | + |
| 16 | +- 只从 `@deeptimes/directus-schema-kit` 导入公开 API。 |
| 17 | +- 不手写、不编辑 `dsk/generated/manifest.json`。 |
| 18 | +- 文件名只用于组织源码,不代表 Directus namespace。 |
| 19 | +- collection 名在整个项目中全局唯一。 |
| 20 | +- 一个 collection 只能在一个文件中完整定义。 |
| 21 | +- 关系优先使用 `relation.*` blueprint。 |
| 22 | +- `field.audit()` 在 `fields` 数组中必须写作 `...field.audit()`。 |
| 23 | +- `plan`、`apply` 和 `clear` 始终基于完整 Manifest,不按文件局部执行。 |
| 24 | +- 普通 `apply` 不做删除、字段类型迁移、collection 重命名或存量数据迁移。 |
| 25 | + |
| 26 | +## 命名约定 |
| 27 | + |
| 28 | +- collection 和 field 使用小写 `snake_case`。 |
| 29 | +- 业务 collection 默认使用复数名,例如 `articles`、`products`。 |
| 30 | +- 业务 collection 禁止使用 `directus_` 前缀。 |
| 31 | +- 主键使用 `id`。 |
| 32 | +- 内容状态字段使用 `status`。 |
| 33 | +- 手动排序字段使用 `sort`。 |
| 34 | +- 审计字段使用 `...field.audit()`。 |
| 35 | +- 业务时间字段使用 `date_` 前缀。 |
| 36 | +- 用户关系字段使用 `user_` 前缀。 |
| 37 | +- 布尔字段使用 `is_` 前缀。 |
| 38 | + |
| 39 | +## 禁止 |
| 40 | + |
| 41 | +- 发明 DSK 未公开的 helper、字段类型或导入路径。 |
| 42 | +- 把 Directus interface/display/special 当成数据库类型。 |
| 43 | +- 声明或修改 `directus_*` 系统 collection。 |
| 44 | +- 用 `created_at`、`updated_at`、`created_by`、`updated_by` 替代 Directus 标准审计字段。 |
| 45 | +- 用 JSON 数组保存文件 ID 或多用户 ID。 |
| 46 | +- 硬编码 Directus role、policy、user 等系统资源 UUID。 |
| 47 | +- 声明 Flow、Operation、Dashboard、Panel,当前版本不支持。 |
| 48 | + |
| 49 | +## 推荐提示词 |
| 50 | + |
| 51 | +```text |
| 52 | +你正在为 Directus 项目编写 DSK schema。开始前必须阅读当前项目 .ai/、dsk/ 和 DSK 的 docs/schema-dsl.md、docs/manifest.md。不要手写 Manifest,不要修改 dsk/generated/manifest.json。所有 relation 优先使用 relation.* blueprint。修改后运行 pnpm dsk build 和 pnpm dsk validate;如果涉及真实实例差异,再运行 pnpm dsk plan。 |
| 53 | +``` |
0 commit comments