From af69f2230bb0ecb81f9dba2c4f3815f3e4768f40 Mon Sep 17 00:00:00 2001 From: zichun Date: Tue, 12 May 2026 10:38:50 +0800 Subject: [PATCH] feat(scope-lock): REQ 输入表新增「预加载」列 --- README.md | 2 +- skills/plan/scope-lock/templates/req-card-template.md | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index afdd2d0..0a2fdb0 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ erp-workflow-plugin/ | # | Skill | 作用 | 流程中谁调用 | |---|---|---|---| | A0 | `project-init` | • 依赖检查(`mysql` 在 PATH,缺失则尝试自动安装)
• 空目录初始化:`cp` 模板创建 CLAUDE.md / docs/01/index.md / docs/08
• `git init` | `plan-start` | -| A1 | `scope-lock` | • 引导填项目概述 / 技术栈 / 需求索引
• 按 `docs/01-需求清单//{_module.md, REQ-*.md}` 子目录结构生成 REQ 卡片骨架(CC 起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表(输入 7 列 / 输出 3 列),全部原样复制自模板,由人工按业务编辑;`依赖表 / 依赖接口` 留 `TBD(A3/A5 自动补)`)
• **停下**等人工审阅 + 改输入 / 输出,审阅完毕用 `/plan-start` 恢复续进 A2 | A0 | +| A1 | `scope-lock` | • 引导填项目概述 / 技术栈 / 需求索引
• 按 `docs/01-需求清单//{_module.md, REQ-*.md}` 子目录结构生成 REQ 卡片骨架(CC 起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表(输入 8 列 / 输出 3 列),全部原样复制自模板,由人工按业务编辑;`依赖表 / 依赖接口` 留 `TBD(A3/A5 自动补)`)
• **停下**等人工审阅 + 改输入 / 输出,审阅完毕用 `/plan-start` 恢复续进 A2 | A0 | | A2 | `skeleton-gen` | • 生成架构文档:docs/04 § 一+ / docs/06 / docs/07 / docs/09
• 生成工具脚本:scripts/*.sh、.githooks/pre-push、.env.local
• 创建 `sql/migrations/` 空目录(Flyway 准备)
• 合并 .gitignore(逐行判重) | `plan-start` | | A3 | `db-design-gen` | • 从 docs/01 REQ 卡片正向设计 `docs/03-数据库设计文档.md`(schema SSoT)
• 回填 REQ 卡片依赖表(`TBD(A3 自动补)` → 实际表名)
• **停下**等人工审阅 docs/03,审阅完毕用 `/plan-start` 恢复续进 A4 | A2 | | A4 | `db-init` | • LLM 解析 docs/03 → `sql/migrations/V1__initial_schema.sql`(DDL only)
• **5 维度全量校验** DDL ↔ docs/03(表名 / 列名+列序 / 类型+nullable+默认值 / 索引名 / FK 名),fail-closed
• 验证 MySQL 连接
• 调 `scripts/setup-test-db.sh` 复用三层防护(与 B 阶段 test.sh 共用)→ DROP+CREATE 空库
• apply V1 + `SHOW TABLES` 行数自检 | A3 | diff --git a/skills/plan/scope-lock/templates/req-card-template.md b/skills/plan/scope-lock/templates/req-card-template.md index 8aba89a..bb5a169 100644 --- a/skills/plan/scope-lock/templates/req-card-template.md +++ b/skills/plan/scope-lock/templates/req-card-template.md @@ -7,7 +7,7 @@ req-card-template:单张 REQ 卡片骨架。每张卡片是 docs/01-需求清 - goal:用一句话展开 title - rules / constraints / acceptance:业务语义层面的合理起草,待人工审阅修订 2) `**输入**` / `**输出**` 二级结构:每段先一句话总结(如「用户提交...」/「返回用户 id」),再跟「表1 / 表2 / ...」N 张平铺的字段表。CC 渲染时对**两段简述 + 所有表(含示例数据)全部原样复制**,不要根据 REQ 业务篡改示例字段、也不要换列结构: - - `输入` 的表:7 列(字段 / 类型 / 必填 / 输入方式 / 显示来源 / 默认值 / 业务规则),模板内含示例数据(表1 6 行、表2 3 行) + - `输入` 的表:8 列(字段 / 类型 / 必填 / 输入方式 / 显示来源 / 预加载 / 默认值 / 业务规则),其中 `预加载` 取值为 `页面加载时` / `用户操作时` / `—`;模板内含示例数据(表1 6 行、表2 3 行) - `输出` 的表:3 列(字段 / 类型 / 显示来源),模板内含示例数据(表1 / 表2 各 3 行) - 表的数量是可变的:人工拿到卡片后按 REQ 实际情况增删表(删多余的 `表N` 整段 / 复制为 `表3 / 表4 / ...`)和编辑字段 3) `**依赖表**: TBD(A3 自动补)` 和 `**依赖接口**: TBD(A5 自动补)` 是后续 skill 自动回填的占位,渲染时**保持原样**,不要替换为 `-` 也不要替换为 `{{...}}` @@ -21,22 +21,22 @@ req-card-template:单张 REQ 卡片骨架。每张卡片是 docs/01-需求清 - **表1**: - | 字段 | 类型 | 必填 | 输入方式 | 显示来源 | 默认值 | 业务规则 | - | ---- | ---- | --- | ---- | ----- | --- | ------------------- | - | 用户名 | 文本 | 是 | 手工输入 | `职员表` | — | 3-20 位字母数字下划线;系统内唯一 | - | 姓名 | 文本 | 是 | 下拉单选 | `职员表` | — | 2-50 个字符 | - | 手机号 | 文本 | 是 | 手工输入 | `职员表` | — | 11 位数字;系统内唯一 | - | 邮箱 | 文本 | 否 | 手工输入 | `职员表` | — | 标准邮箱格式 | - | 角色 | 文本 | 是 | 下拉单选 | 普通用户/超级管理员 | 普通用户 | 至少选择 1 个 | - | 初始密码 | 文本 | 是 | 手工输入 | — | — | 8-20 位;含大小写字母和数字;显示星号 | + | 字段 | 类型 | 必填 | 输入方式 | 显示来源 | 预加载 | 默认值 | 业务规则 | + | ---- | ---- | --- | ---- | ----- | --- | --- | ------------------- | + | 用户名 | 文本 | 是 | 手工输入 | `职员表` | 否 | — | 3-20 位字母数字下划线;系统内唯一 | + | 姓名 | 文本 | 是 | 下拉单选 | `职员表` | 用户操作时 | — | 2-50 个字符 | + | 手机号 | 文本 | 是 | 手工输入 | `职员表` | 否 | — | 11 位数字;系统内唯一 | + | 邮箱 | 文本 | 否 | 手工输入 | `职员表` | 否 | — | 标准邮箱格式 | + | 角色 | 文本 | 是 | 下拉单选 | 普通用户/超级管理员 | 页面加载时 | 普通用户 | 至少选择 1 个 | + | 初始密码 | 文本 | 是 | 手工输入 | — | — | — | 8-20 位;含大小写字母和数字;显示星号 | - **表2**: - | 字段 | 类型 | 必填 | 输入方式 | 显示来源 | 默认值 | 业务规则 | - | --- | --- | --- | --- | --- | --- | --- | - | 用户名 | 文本 | 是 | 手工输入 | `职员表` | — | 3-20 位字母数字下划线;系统内唯一 | - | 姓名 | 文本 | 是 | 下拉单选 | `职员表` | — | 2-50 个字符 | - | 手机号 | 文本 | 是 | 手工输入 | `职员表` | — | 11 位数字;系统内唯一 | + | 字段 | 类型 | 必填 | 输入方式 | 显示来源 | 预加载 | 默认值 | 业务规则 | + | --- | --- | --- | --- | --- | --- | --- | --- | + | 用户名 | 文本 | 是 | 手工输入 | `职员表` | 否 | — | 3-20 位字母数字下划线;系统内唯一 | + | 姓名 | 文本 | 是 | 下拉单选 | `职员表` | 用户操作时 | — | 2-50 个字符 | + | 手机号 | 文本 | 是 | 手工输入 | `职员表` | 否 | — | 11 位数字;系统内唯一 | - **输出**: 返回用户 id -- libgit2 0.22.2