SKILL.md
4.82 KB
name: db-design-gen description: A3 DB 设计 + REQ 回填——基于 docs/01 REQ 卡片正向设计 docs/03 并回填 REQ 卡片与模块头的 TBD 占位。 user-invocable: false
allowed-tools: Read Write Edit Grep Glob AskUserQuestion
所有输出必须使用中文。
db-design-gen
执行步骤
步骤 A0:确认 ERP schema 约定(一次性)
先 Grep docs/04-技术规范.md § 四 数据库 schema 约定。已存在则读取后直接进入步骤 A;缺失则按下表默认值,逐项问用户是否覆盖:
| 键 | 默认值(ERP 沿用) |
|---|---|
PK_CONVENTION |
iIncrement int 主键 + sId varchar(100) 业务 ID |
TENANT_COLS |
sBrandsId varchar(100) + sSubsidiaryId varchar(100),默认值 1111111111(无多租户则填「无」) |
COL_PREFIX_RULE |
匈牙利前缀 i=int / s=varchar / t=datetime(无前缀则填「无前缀」) |
如 docs/04 § 四 缺失,用 AskUserQuestion 一次性收三项覆盖(默认即沿用上表),然后 Edit 追加 docs/04 § 四 + 在 CLAUDE.md「Schema 演化规约」末尾追加「数据库 schema 约定(A3 确认)」一段引用 docs/04 § 四。后续 B/C 步骤一律引用确认后的值。
A. 读取设计输入
读:
docs/04-技术规范.md-
docs/01-需求清单/index.md模块索引 -
docs/01-需求清单/*/REQ-*.md所有 REQ 卡片
B. 推导 schema
基于步骤 A 读到的 REQ + 命名规范,正向推导业务实体 → 表 + 字段 + 索引 + 外键。要求:
- 严格套用
docs/04的命名规范 + 步骤 A0 确认的COL_PREFIX_RULE列命名前缀规则 -
主键:套用步骤 A0 确认的
PK_CONVENTION。REQ 明确要求与确认约定不同的主键(复合主键 / UUID / 业务主键)时按 REQ,并在该表业务注记里注明偏离原因 -
外键:依据 REQ 中的引用关系(如「订单引用客户」),明确列出
ON DELETE/ON UPDATE策略;不能确定时默认RESTRICT -
索引:根据 REQ 的查询模式推导业务索引;外键列默认建索引;步骤 A0 确认的
TENANT_COLS租户隔离列(若非「无」),按业务查询模式建组合索引 - 业务注记:对每张表用一两句话说明业务用途、关键约束、与其他表的关系
如果某 REQ 表述模糊以致无法推断关键 schema 细节(如:枚举值范围 / 字段长度上限 / 必填性),先按合理默认推导并在该字段「业务含义」列加 【人工填写:需用户审阅】 标注,待步骤 E 用户审阅时调整;不打断本次推导。
C. 渲染 docs/03
- 读取
${CLAUDE_SKILL_DIR}/templates/docs-03-header-template.md,填充schema_name(从.env.local读DB_SCHEMA,无则填【人工填写:DB_SCHEMA】)、er_overview(纯文本 ER 概览),以及步骤 A0 确认的{{PK_CONVENTION}}/{{TENANT_COLS}}/{{COL_PREFIX_RULE}}。 - 渲染「表清单」:对每张表:读取并填充
${CLAUDE_SKILL_DIR}/templates/docs-03-table-template.md,其中标准列区块用步骤 A0 确认的{{PK_CONVENTION}}/{{TENANT_COLS}}展开(TENANT_COLS= 「无」时不输出租户列行)。 - 写入
docs/03-数据库设计文档.md。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/03-数据库设计文档.md 已生成
D. 回填模块头 + REQ 卡片的 TBD 字段
- 列出
docs/01-需求清单/*/_module.md(模块头)和docs/01-需求清单/*/REQ-*.md(REQ 卡片)。 - 在这些文件中搜索
TBD(A3 自动补)的并回填。 不动TBD(A5 自动补) - 打印回填统计:
A3 回填 <M> 处模块"涉及表" + <N> 处 REQ"依赖表"。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/01 各 REQ 卡片"依赖表" + 模块头"涉及表" 已回填
E. 勾选 A3 顶层 + 停下等人工审阅
-
完成后,用
Edit在docs/08-模块任务管理.md中勾选 A3 顶层(A3 两个子项已在 C / D 步骤分别勾选):- [ ] A3 DB 设计 + REQ 回填 — db-design-gen
打印停下横幅并停下,不调用任何下游 skill:
[db-design-gen] ✅ A3 DB 设计完成
产出:docs/03-数据库设计文档.md + REQ 卡片依赖表/模块头涉及表已回填
⏸ 请审阅 docs/03(业务实体覆盖、字段类型/默认值、索引、外键策略、`【人工填写:需用户审阅】` 标注)。
审阅完成后运行:/erp-workflow:plan-start
参考
${CLAUDE_SKILL_DIR}/templates/docs-03-header-template.md${CLAUDE_SKILL_DIR}/templates/docs-03-table-template.md-
docs/04-技术规范.md§ 一+(命名规范输入) -
docs/01-需求清单/<module>/_module.md(模块头:回填涉及表) -
docs/01-需求清单/<module>/REQ-*.md(REQ 输入 + 回填依赖表)