Commit af69f2230bb0ecb81f9dba2c4f3815f3e4768f40

Authored by zichun
1 parent fda88865

feat(scope-lock): REQ 输入表新增「预加载」列

输入字段表从 7 列扩展为 8 列,在「显示来源」之后插入「预加载」(取值:页面加载时 / 用户操作时 / 否),描述显示来源数据的加载时机。
README.md
... ... @@ -102,7 +102,7 @@ erp-workflow-plugin/
102 102 | # | Skill | 作用 | 流程中谁调用 |
103 103 |---|---|---|---|
104 104 | A0 | `project-init` | • 依赖检查(`mysql` 在 PATH,缺失则尝试自动安装)<br>• 空目录初始化:`cp` 模板创建 CLAUDE.md / docs/01/index.md / docs/08<br>• `git init` | `plan-start` |
105   -| A1 | `scope-lock` | • 引导填项目概述 / 技术栈 / 需求索引<br>• 按 `docs/01-需求清单/<module>/{_module.md, REQ-*.md}` 子目录结构生成 REQ 卡片骨架(CC 起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表(输入 7 列 / 输出 3 列),全部原样复制自模板,由人工按业务编辑;`依赖表 / 依赖接口` 留 `TBD(A3/A5 自动补)`)<br>• **停下**等人工审阅 + 改输入 / 输出,审阅完毕用 `/plan-start` 恢复续进 A2 | A0 |
  105 +| A1 | `scope-lock` | • 引导填项目概述 / 技术栈 / 需求索引<br>• 按 `docs/01-需求清单/<module>/{_module.md, REQ-*.md}` 子目录结构生成 REQ 卡片骨架(CC 起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表(输入 8 列 / 输出 3 列),全部原样复制自模板,由人工按业务编辑;`依赖表 / 依赖接口` 留 `TBD(A3/A5 自动补)`)<br>• **停下**等人工审阅 + 改输入 / 输出,审阅完毕用 `/plan-start` 恢复续进 A2 | A0 |
106 106 | A2 | `skeleton-gen` | • 生成架构文档:docs/04 § 一+ / docs/06 / docs/07 / docs/09<br>• 生成工具脚本:scripts/*.sh、.githooks/pre-push、.env.local<br>• 创建 `sql/migrations/` 空目录(Flyway 准备)<br>• 合并 .gitignore(逐行判重) | `plan-start` |
107 107 | A3 | `db-design-gen` | • 从 docs/01 REQ 卡片正向设计 `docs/03-数据库设计文档.md`(schema SSoT)<br>• 回填 REQ 卡片依赖表(`TBD(A3 自动补)` → 实际表名)<br>• **停下**等人工审阅 docs/03,审阅完毕用 `/plan-start` 恢复续进 A4 | A2 |
108 108 | A4 | `db-init` | • LLM 解析 docs/03 → `sql/migrations/V1__initial_schema.sql`(DDL only)<br>• **5 维度全量校验** DDL ↔ docs/03(表名 / 列名+列序 / 类型+nullable+默认值 / 索引名 / FK 名),fail-closed<br>• 验证 MySQL 连接<br>• 调 `scripts/setup-test-db.sh` 复用三层防护(与 B 阶段 test.sh 共用)→ DROP+CREATE 空库<br>• apply V1 + `SHOW TABLES` 行数自检 | A3 |
... ...
skills/plan/scope-lock/templates/req-card-template.md
... ... @@ -7,7 +7,7 @@ req-card-template:å•å¼  REQ å¡ç‰‡éª¨æž¶ã€‚æ¯å¼ å¡ç‰‡æ˜¯ docs/01-需求清å
7 7 - goal:用一å¥è¯å±•å¼€ title
8 8 - rules / constraints / acceptance:业务语义层é¢çš„åˆç†èµ·è‰ï¼Œå¾…人工审阅修订
9 9 2) `**输入**` / `**输出**` äºŒçº§ç»“æž„ï¼šæ¯æ®µå…ˆä¸€å¥è¯æ€»ç»“(如「用户æäº¤...ã€/「返回用户 idã€ï¼‰ï¼Œå†è·Ÿã€Œè¡¨1 / 表2 / ...ã€N 张平铺的字段表。CC 渲染时对**两段简述 + 所有表(å«ç¤ºä¾‹æ•°æ®ï¼‰å…¨éƒ¨åŽŸæ ·å¤åˆ¶**,ä¸è¦æ ¹æ® REQ 业务篡改示例字段ã€ä¹Ÿä¸è¦æ¢åˆ—结构:
10   - - `输入` 的表:7 列(字段 / 类型 / å¿…å¡« / è¾“å…¥æ–¹å¼ / æ˜¾ç¤ºæ¥æº / 默认值 / 业务规则),模æ¿å†…å«ç¤ºä¾‹æ•°æ®ï¼ˆè¡¨1 6 行ã€è¡¨2 3 行)
  10 + - `输入` 的表:8 列(字段 / 类型 / å¿…å¡« / è¾“å…¥æ–¹å¼ / æ˜¾ç¤ºæ¥æº / 预加载 / 默认值 / 业务规则),其中 `预加载` å–值为 `页é¢åŠ è½½æ—¶` / `用户æ“作时` / `—`;模æ¿å†…å«ç¤ºä¾‹æ•°æ®ï¼ˆè¡¨1 6 行ã€è¡¨2 3 行)
11 11 - `输出` 的表:3 列(字段 / 类型 / æ˜¾ç¤ºæ¥æºï¼‰ï¼Œæ¨¡æ¿å†…å«ç¤ºä¾‹æ•°æ®ï¼ˆè¡¨1 / 表2 å„ 3 行)
12 12 - è¡¨çš„æ•°é‡æ˜¯å¯å˜çš„:人工拿到å¡ç‰‡åŽæŒ‰ REQ 实际情况增删表(删多余的 `表N` 整段 / å¤åˆ¶ä¸º `表3 / 表4 / ...`)和编辑字段
13 13 3) `**ä¾èµ–表**: TBD(A3 自动补)` å’Œ `**ä¾èµ–接å£**: TBD(A5 自动补)` 是åŽç»­ skill 自动回填的å ä½ï¼Œæ¸²æŸ“æ—¶**ä¿æŒåŽŸæ ·**,ä¸è¦æ›¿æ¢ä¸º `-` 也ä¸è¦æ›¿æ¢ä¸º `{{...}}`
... ... @@ -21,22 +21,22 @@ req-card-template:å•å¼  REQ å¡ç‰‡éª¨æž¶ã€‚æ¯å¼ å¡ç‰‡æ˜¯ docs/01-需求清å
21 21  
22 22 - **表1**:
23 23  
24   - | 字段 | 类型 | å¿…å¡« | è¾“å…¥æ–¹å¼ | æ˜¾ç¤ºæ¥æº | 默认值 | 业务规则 |
25   - | ---- | ---- | --- | ---- | ----- | --- | ------------------- |
26   - | 用户å | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | — | 3-20 ä½å­—æ¯æ•°å­—下划线;系统内唯一 |
27   - | å§“å | 文本 | 是 | 下拉å•选 | `èŒå‘˜è¡¨` | — | 2-50 个字符 |
28   - | æ‰‹æœºå· | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | — | 11 使•°å­—;系统内唯一 |
29   - | 邮箱 | 文本 | å¦ | 手工输入 | `èŒå‘˜è¡¨` | — | æ ‡å‡†é‚®ç®±æ ¼å¼ |
30   - | 角色 | 文本 | 是 | 下拉å•选 | 普通用户/超级管ç†å‘˜ | 普通用户 | 至少选择 1 个 |
31   - | åˆå§‹å¯†ç  | 文本 | 是 | 手工输入 | — | — | 8-20 ä½ï¼›å«å¤§å°å†™å­—æ¯å’Œæ•°å­—ï¼›æ˜¾ç¤ºæ˜Ÿå· |
  24 + | 字段 | 类型 | å¿…å¡« | è¾“å…¥æ–¹å¼ | æ˜¾ç¤ºæ¥æº | 预加载 | 默认值 | 业务规则 |
  25 + | ---- | ---- | --- | ---- | ----- | --- | --- | ------------------- |
  26 + | 用户å | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | å¦ | — | 3-20 ä½å­—æ¯æ•°å­—下划线;系统内唯一 |
  27 + | å§“å | 文本 | 是 | 下拉å•选 | `èŒå‘˜è¡¨` | 用户æ“作时 | — | 2-50 个字符 |
  28 + | æ‰‹æœºå· | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | å¦ | — | 11 使•°å­—;系统内唯一 |
  29 + | 邮箱 | 文本 | å¦ | 手工输入 | `èŒå‘˜è¡¨` | å¦ | — | æ ‡å‡†é‚®ç®±æ ¼å¼ |
  30 + | 角色 | 文本 | 是 | 下拉å•选 | 普通用户/超级管ç†å‘˜ | 页é¢åŠ è½½æ—¶ | 普通用户 | 至少选择 1 个 |
  31 + | åˆå§‹å¯†ç  | 文本 | 是 | 手工输入 | — | — | — | 8-20 ä½ï¼›å«å¤§å°å†™å­—æ¯å’Œæ•°å­—ï¼›æ˜¾ç¤ºæ˜Ÿå· |
32 32  
33 33 - **表2**:
34 34  
35   - | 字段 | 类型 | å¿…å¡« | è¾“å…¥æ–¹å¼ | æ˜¾ç¤ºæ¥æº | 默认值 | 业务规则 |
36   - | --- | --- | --- | --- | --- | --- | --- |
37   - | 用户å | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | — | 3-20 ä½å­—æ¯æ•°å­—下划线;系统内唯一 |
38   - | å§“å | 文本 | 是 | 下拉å•选 | `èŒå‘˜è¡¨` | — | 2-50 个字符 |
39   - | æ‰‹æœºå· | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | — | 11 使•°å­—;系统内唯一 |
  35 + | 字段 | 类型 | å¿…å¡« | è¾“å…¥æ–¹å¼ | æ˜¾ç¤ºæ¥æº | 预加载 | 默认值 | 业务规则 |
  36 + | --- | --- | --- | --- | --- | --- | --- | --- |
  37 + | 用户å | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | å¦ | — | 3-20 ä½å­—æ¯æ•°å­—下划线;系统内唯一 |
  38 + | å§“å | 文本 | 是 | 下拉å•选 | `èŒå‘˜è¡¨` | 用户æ“作时 | — | 2-50 个字符 |
  39 + | æ‰‹æœºå· | 文本 | 是 | 手工输入 | `èŒå‘˜è¡¨` | å¦ | — | 11 使•°å­—;系统内唯一 |
40 40  
41 41 - **输出**: 返回用户 id
42 42  
... ...