@gordon.gan/specflow 1.4.1 → 1.4.2-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/prompts/approval/generate.md +54 -23
- package/skills/specflow-approval/SKILL.md +3 -1
- package/templates/approval.md +29 -3
package/README.md
CHANGED
|
@@ -126,7 +126,7 @@ npm install -g @gordon.gan/specflow
|
|
|
126
126
|
npm install -g github:Gordon-Gan-Jiang/specflow
|
|
127
127
|
|
|
128
128
|
# 验证
|
|
129
|
-
specflow --version # 以 npm / package.json 为准(当前 1.4.
|
|
129
|
+
specflow --version # 以 npm / package.json 为准(当前 1.4.2-beta)
|
|
130
130
|
specflow --help
|
|
131
131
|
```
|
|
132
132
|
|
package/package.json
CHANGED
|
@@ -598,6 +598,20 @@ sequenceDiagram
|
|
|
598
598
|
|
|
599
599
|
> **质量硬门槛(库表路径)**:只要本变更读写/依赖任何数据库表(含"零 DDL、只改读写语义"),§4.4 **必须**按下列结构输出,不得用一句话带过、不得省略 ER / DDL / 字段说明表。参考质量标杆:`scenario-job-compile` 类审批文档的「表与数据设计」章(总则结论表 → ER → 表一览 → 逐表 DDL+字段表 → 非表字段与回滚)。
|
|
600
600
|
|
|
601
|
+
> **大纲 / 标题层级(硬门槛 — 防 TOC 爆炸)**:Markdown 预览大纲**只允许**下列标题进入目录;「DDL」「字段说明」「JSON 形状」等**禁止**写成 `####`/`#####`/`######`,一律用 **加粗标签** + 正文/代码块/表格。
|
|
602
|
+
|
|
603
|
+
```text
|
|
604
|
+
### 4.4 数据结构 / 数据模型变更
|
|
605
|
+
├── #### 4.4.1 总则与本迭代结构变更结论
|
|
606
|
+
├── #### 4.4.2 ER 图(核心实体关系)
|
|
607
|
+
├── #### 4.4.3 逐表详设
|
|
608
|
+
│ ├── ##### `table_a`(中文名) ← 每张表仅此一级标题
|
|
609
|
+
│ └── ##### `table_b`(中文名)
|
|
610
|
+
└── #### 4.4.4 非表字段、数据迁移与回滚兼容
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
表内固定顺序用加粗标签(不是标题):`**本迭代动作**` → `**本迭代变更语句**` → `**DDL(现网/目标)**` → `**字段说明**` →(可选)`**JSON 形状 · <字段名>**`。
|
|
614
|
+
|
|
601
615
|
#### A. 库表路径(MySQL / PostgreSQL / SQLite 等关系库)——强制结构
|
|
602
616
|
|
|
603
617
|
按以下小节**顺序**生成。缺任一强制项 → 视为详细设计质量不合格,在确认摘要中报告用户并标记 `[待 refine 澄清]` 或补全后再写入。
|
|
@@ -651,23 +665,20 @@ erDiagram
|
|
|
651
665
|
|
|
652
666
|
##### 4.4.3 逐表详设(强制骨架)
|
|
653
667
|
|
|
654
|
-
对表一览中的**每一张表**输出同构小节
|
|
668
|
+
对表一览中的**每一张表**输出同构小节 `##### \`table_name\`(中文名)`(**仅此一级**进大纲;其下**禁止**再开标题)。顺序固定,标签一律 `**加粗**`:
|
|
655
669
|
|
|
656
670
|
1. **本迭代动作**:只读 / 写入(既有路径) / 新建 / 改结构(列清单) —— 一句话 + 关键不变量(如幂等键)。
|
|
657
671
|
2. **本迭代变更语句**:`无` 或完整 `ALTER`/`CREATE` 片段(可执行)。
|
|
658
|
-
3. **DDL(
|
|
659
|
-
-
|
|
660
|
-
-
|
|
661
|
-
|
|
662
|
-
- 首行注释标明 DDL 来源(迁移文件路径或「本迭代新增」)。
|
|
663
|
-
4. **字段说明表** —— 强制列:
|
|
672
|
+
3. **DDL(现网/目标)**:完整 `CREATE TABLE ...`(即使本迭代零 DDL 也给出对照用完整表定义)。
|
|
673
|
+
- **必须含存储引擎与字符集**(MySQL:`ENGINE=InnoDB DEFAULT CHARSET=utf8mb4` …;PostgreSQL 写明 schema;SQLite 可省略 ENGINE)。
|
|
674
|
+
- 含 PRIMARY KEY、UNIQUE、KEY/INDEX、必要时列/表 `COMMENT`;首行注释标明 DDL 来源。
|
|
675
|
+
4. **字段说明**:紧跟一张表(强制列):
|
|
664
676
|
|
|
665
677
|
| 字段名称 | 字段类型 | 是否有默认值 | 字段说明 | 本迭代用法 |
|
|
666
678
|
|----------|----------|--------------|----------|------------|
|
|
667
679
|
|
|
668
|
-
- 「本迭代用法」写清:读 / 写 / 不涉及 /
|
|
669
|
-
|
|
670
|
-
5. 若表含 JSON / 大字段契约:另开子节给出**非表列的 JSON 形状**(字段/类型/必填/说明),与参考文档 `runtime_payload` 写法一致。
|
|
680
|
+
- 「本迭代用法」写清:读 / 写 / 不涉及 / **固定赋值**等;索引已在 DDL 声明即可。
|
|
681
|
+
5. 若含 JSON / 大字段契约:用 `**JSON 形状 · <列名或逻辑名>**` 加粗标签 + 形状表/代码块,**不要**再开 `##### 字段说明` / `##### runtime_payload…` 标题。
|
|
671
682
|
|
|
672
683
|
##### 4.4.4 非表字段、数据迁移与回滚兼容
|
|
673
684
|
|
|
@@ -691,6 +702,7 @@ erDiagram
|
|
|
691
702
|
- [ ] **G4**:回滚数据兼容有明确方案或显式「无新旧互读问题」
|
|
692
703
|
- [ ] 无「仅文字描述表结构、无 DDL」或「DDL 缺 ENGINE/CHARSET」的偷懒写法
|
|
693
704
|
- [ ] 零 DDL 迭代禁止假装「不涉及数据库」—— 只要读写表,仍走库表路径并展示现网 DDL
|
|
705
|
+
- [ ] **大纲干净**:§4.4 目录仅为 `4.4.1–4.4.4` + 各表 `##### \`name\``;**无**「DDL / 字段说明 / JSON 形状」标题节点
|
|
694
706
|
|
|
695
707
|
#### C. 非库表路径(CLI / 库 / 配置 / 状态文件)
|
|
696
708
|
|
|
@@ -736,6 +748,19 @@ CREATE TABLE `orders` (
|
|
|
736
748
|
|
|
737
749
|
> **质量硬门槛(对外/跨端接口路径)**:只要本变更新增、修改、行为扩展或**新消费**对外接口,§4.5 **必须**按下列结构输出。参考质量标杆:`scenario-job-compile`「接口设计」章(总览与约定 → 接口清单 → 通用错误码 → 逐接口字段表+HTTP 示例 → 调用关系)。禁止只有路径名、无字段表、无错误约定、无请求/响应示例。
|
|
738
750
|
|
|
751
|
+
> **大纲 / 标题层级(硬门槛 — 防 TOC 爆炸)**:大纲**只允许**下列标题;「请求体字段」「请求示例」「响应示例」「错误」等**禁止**写成标题,一律 `**加粗**`。
|
|
752
|
+
|
|
753
|
+
```text
|
|
754
|
+
### 4.5 接口设计
|
|
755
|
+
├── #### 4.5.1 总览与约定 ← 通道 / 清单 / 通用错误码 均用加粗小标题,不进更深目录
|
|
756
|
+
├── #### 4.5.2 逐接口详设
|
|
757
|
+
│ ├── ##### I1 · <短名>(变更类型) ← 每个接口仅此一级标题
|
|
758
|
+
│ └── ##### I2 · …
|
|
759
|
+
└── #### 4.5.3 调用关系
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
接口内固定顺序用加粗标签:`**元信息**` → `**请求体字段**`(或路径/Query/CLI flags) → `**请求示例**` → `**成功响应字段**` → `**响应示例(成功)**` → `**响应示例(失败)**`(G2) → `**错误**` →(可选)`**处理顺序**`。
|
|
763
|
+
|
|
739
764
|
#### A. 对外/跨端接口路径——强制结构
|
|
740
765
|
|
|
741
766
|
##### 4.5.1 总览与约定
|
|
@@ -783,9 +808,9 @@ CREATE TABLE `orders` (
|
|
|
783
808
|
|
|
784
809
|
##### 4.5.2 逐接口详设(强制骨架)
|
|
785
810
|
|
|
786
|
-
对清单中每个需展开的编号 `In`,输出同构小节
|
|
811
|
+
对清单中每个需展开的编号 `In`,输出同构小节 `##### In · <短名>(<变更类型>)`(**仅此一级**进大纲;其下**禁止**再开 `####`/`#####`/`######`)。顺序固定,标签一律 `**加粗**`:
|
|
787
812
|
|
|
788
|
-
1.
|
|
813
|
+
1. **元信息**(强制表):
|
|
789
814
|
|
|
790
815
|
| 项 | 内容 |
|
|
791
816
|
|----|------|
|
|
@@ -796,29 +821,25 @@ CREATE TABLE `orders` (
|
|
|
796
821
|
| 鉴权 | 本接口鉴权要点(可引用通道表) |
|
|
797
822
|
| 本迭代变更 | 一句话(新增字段 / 行为扩展 / 不变仅消费 …) |
|
|
798
823
|
|
|
799
|
-
2.
|
|
824
|
+
2. **请求体字段**(有则写;路径参数 / Query / CLI flags 用同级加粗标签分块,如 `**Query 参数**`,仍**不要**升为标题):
|
|
800
825
|
|
|
801
826
|
| 字段 | 类型 | 必填 | 默认 | 说明 |
|
|
802
827
|
|------|------|------|------|------|
|
|
803
828
|
|
|
804
|
-
-
|
|
805
|
-
- 互斥参数(二选一)在说明或表下用引用块写清。
|
|
829
|
+
- 合法值枚举、别名归一、与表字段差异写在「说明」;互斥参数用引用块。
|
|
806
830
|
|
|
807
|
-
3. **请求示例**(
|
|
808
|
-
- Web:` ```http ` 完整请求行 + 头 + JSON 正文
|
|
809
|
-
- CLI:` ```text ` 或 shell 调用示例
|
|
810
|
-
- 库:调用伪代码 / TypeScript 签名调用示例
|
|
831
|
+
3. **请求示例**(强制 ≥1 主路径成功请求):Web 用完整 `http` 块;CLI/库用等价示例。多场景时用加粗副标区分,例:`**请求示例(场景)**` / `**请求示例(接口用例 · 兼容旧客户端)**` —— **不是**标题。
|
|
811
832
|
|
|
812
|
-
4.
|
|
833
|
+
4. **成功响应字段** + **响应示例(成功)**(强制)。
|
|
813
834
|
|
|
814
|
-
5.
|
|
835
|
+
5. **响应示例(失败)**(质量红线 G2 — 强制):每个「新增/修改/行为扩展」接口 **≥1** 组报错示例(完整 HTTP 或等价);副标可写失败原因,例:`**响应示例(失败 · 无启用步)**`,仍**不是**标题。
|
|
815
836
|
|
|
816
|
-
6.
|
|
837
|
+
6. **错误**(强制表:条件 → 状态/退出码 → 说明):
|
|
817
838
|
|
|
818
839
|
| 条件 | 状态 / 退出码 | 说明 |
|
|
819
840
|
|------|---------------|------|
|
|
820
841
|
|
|
821
|
-
7.
|
|
842
|
+
7. **处理顺序**(可选):多步服务端合同用编号列表;与 §4.2/§4.3、§4.4 对齐。
|
|
822
843
|
|
|
823
844
|
##### 4.5.3 调用关系(推荐)
|
|
824
845
|
|
|
@@ -837,6 +858,7 @@ CREATE TABLE `orders` (
|
|
|
837
858
|
- [ ] 「不变·本迭代消费」接口至少有场景+协议+关键消费约定,不假装不存在
|
|
838
859
|
- [ ] 无「只有路径、无字段/无示例/无错误」的偷懒写法;示例与字段表一致
|
|
839
860
|
- [ ] 接口编号可被 §4.2/§4.3 流程、§6 测试引用
|
|
861
|
+
- [ ] **大纲干净**:§4.5 目录仅为 `4.5.1–4.5.3` + 各 `##### In · …`;**无**「请求体字段 / 请求示例 / 响应示例 / 错误」标题节点
|
|
840
862
|
|
|
841
863
|
#### C. CLI / 库项目路径(无 HTTP 时)
|
|
842
864
|
|
|
@@ -899,6 +921,7 @@ specflow init --artifact-language <language>
|
|
|
899
921
|
- [ ] 涉及数据/接口的均非留空;不涉及类别显式标注
|
|
900
922
|
- [ ] **§4.4**:ER + DDL + 字段说明;若 JSON/新列变更则有**存量填充策略(G3)**与回滚数据兼容(G4)
|
|
901
923
|
- [ ] **§4.5**:通道/清单/错误码 + 字段/成功示例 + **失败示例(G2)** + 错误表
|
|
924
|
+
- [ ] **§4.4/§4.5 大纲**:目录仅含 `4.4.x`/`4.5.x` + 表名/`In` 小节;字段/示例/DDL/错误均为加粗标签,无标题节点
|
|
902
925
|
- [ ] **§4.8**:回滚兼容结论明确(或显式声明无新旧数据互读问题)
|
|
903
926
|
- [ ] **文风**:无「尽量/大概/一般情况下」等含糊词;生僻缩写首次已注解
|
|
904
927
|
- [ ] 若无法写出实现级细节,标记 `[待 refine 澄清: <元素>]`
|
|
@@ -1189,3 +1212,11 @@ specflow init --artifact-language <language>
|
|
|
1189
1212
|
LLM-only SpecFlow §4.4 rules. Do not invent MCP tools; do not `npx skills add`.
|
|
1190
1213
|
Record `skills/database/<stack>` or `LLM-fallback` in the §4.4.1 总则 table.
|
|
1191
1214
|
|
|
1215
|
+
17. **§4.4 / §4.5 outline hygiene (hard rule)**: Markdown TOC must stay shallow.
|
|
1216
|
+
- §4.4 headings only: `#### 4.4.1–4.4.4` + per-table `##### \`table\`(中文名)`.
|
|
1217
|
+
- §4.5 headings only: `#### 4.5.1–4.5.3` + per-interface `##### In · <短名>(类型)`.
|
|
1218
|
+
- Labels such as「请求体字段」「请求示例」「响应示例」「错误」「DDL」「字段说明」
|
|
1219
|
+
「JSON 形状」「通用错误码约定」MUST be `**bold**` body labels — **never**
|
|
1220
|
+
`####` / `#####` / `######` headings. Multiple examples use bold sub-labels
|
|
1221
|
+
(e.g. `**响应示例(失败 · 无启用步)**`), not extra heading nodes.
|
|
1222
|
+
|
|
@@ -285,7 +285,9 @@ Order and hard requirements (from `generate.md` §4.1–4.8):
|
|
|
285
285
|
4. **数据结构** — Before drafting §4.4: follow `database-guidance.md`. If `dbStack` hit,
|
|
286
286
|
`Read` `skills/database/<stack>/SKILL.md` (+ DDL/index/JSON refs as needed).
|
|
287
287
|
If `none`, LLM-only with SpecFlow §4.4 hard bar (ER + full CREATE TABLE + field tables…).
|
|
288
|
+
**Outline**: only `4.4.1–4.4.4` + `##### table`; DDL/字段说明/JSON = `**bold**`, not headings.
|
|
288
289
|
5. **接口设计** — inventory + fields + examples + errors…
|
|
290
|
+
**Outline**: only `4.5.1–4.5.3` + `##### In`; 请求体字段/示例/错误 = `**bold**`, not headings.
|
|
289
291
|
6. **核心算法 / 配置 / 兼容性** — as applicable.
|
|
290
292
|
|
|
291
293
|
**Traceability**: every element → **§5** Requirement/Scenario and **§2** decision.
|
|
@@ -358,7 +360,7 @@ Key rules:
|
|
|
358
360
|
- Decision Review includes every `design.md` decision.
|
|
359
361
|
- §5 Acceptance exhaustive with 3-level testability; placed after §3/§4.
|
|
360
362
|
- §3 every architecture diagram has「设计说明 / 图要点」; component table with「不做什么」.
|
|
361
|
-
- §4 has 设计要点一览, complete Happy Path sequence + notes, each business scenario with 设计要点; DB/API hard bars (§4.4/§4.5).
|
|
363
|
+
- §4 has 设计要点一览, complete Happy Path sequence + notes, each business scenario with 设计要点; DB/API hard bars (§4.4/§4.5); outline hygiene (no heading for 请求体字段/DDL/字段说明 — bold labels only).
|
|
362
364
|
- **Quality Gates G1–G4**: >5-line prose flow → Mermaid; interfaces need failure examples; JSON/new-column need存量填充策略; rollback data compatibility explicit.
|
|
363
365
|
- **Style & Tone**: plain language; gloss obscure abbreviations on first use; ban「尽量/大概/一般情况下」; use「必须/禁止/采用 XX 方案」.
|
|
364
366
|
- **§8 闭环**: one compact table only; PASS one line; ⚠️/❌ ≤3 bullets; no per-Pass essays.
|
package/templates/approval.md
CHANGED
|
@@ -223,7 +223,8 @@ sequenceDiagram
|
|
|
223
223
|
### 4.4 数据结构 / 数据模型变更 (Data Structures)
|
|
224
224
|
|
|
225
225
|
<!-- 库表硬门槛 + DB 技能路由:命中 skills/database/<stack> 则 Read 补强;
|
|
226
|
-
未命中 LLM-fallback。总则表填写「DB 技能」列。详见 prompts/approval/database-guidance.md。
|
|
226
|
+
未命中 LLM-fallback。总则表填写「DB 技能」列。详见 prompts/approval/database-guidance.md。
|
|
227
|
+
大纲硬门槛:仅 4.4.1–4.4.4 + ##### 表名;DDL/字段说明/JSON 用 **加粗**,禁止再开标题。 -->
|
|
227
228
|
|
|
228
229
|
#### 4.4.1 总则与本迭代结构变更结论
|
|
229
230
|
|
|
@@ -257,8 +258,11 @@ erDiagram
|
|
|
257
258
|
##### `<table_name>`(中文名)
|
|
258
259
|
|
|
259
260
|
**本迭代动作**: …
|
|
261
|
+
|
|
260
262
|
**本迭代变更语句**: …
|
|
261
263
|
|
|
264
|
+
**DDL(现网/目标)**:
|
|
265
|
+
|
|
262
266
|
```sql
|
|
263
267
|
CREATE TABLE `table_name` (
|
|
264
268
|
...
|
|
@@ -266,10 +270,14 @@ CREATE TABLE `table_name` (
|
|
|
266
270
|
COMMENT='...';
|
|
267
271
|
```
|
|
268
272
|
|
|
273
|
+
**字段说明**:
|
|
274
|
+
|
|
269
275
|
| 字段名称 | 字段类型 | 是否有默认值 | 字段说明 | 本迭代用法 |
|
|
270
276
|
|----------|----------|--------------|----------|------------|
|
|
271
277
|
| | | | | |
|
|
272
278
|
|
|
279
|
+
<!-- 可选:**JSON 形状 · runtime_payload** + 形状表/代码块 — 仍用加粗,不要 ##### -->
|
|
280
|
+
|
|
273
281
|
#### 4.4.4 非表字段、数据迁移与回滚兼容
|
|
274
282
|
|
|
275
283
|
| 项 | 说明 |
|
|
@@ -282,7 +290,9 @@ CREATE TABLE `table_name` (
|
|
|
282
290
|
|
|
283
291
|
### 4.5 接口设计 (Interface Design)
|
|
284
292
|
|
|
285
|
-
<!-- 硬门槛:通道 → 清单 → 错误约定 → 逐接口字段/示例/错误表 →
|
|
293
|
+
<!-- 硬门槛:通道 → 清单 → 错误约定 → 逐接口字段/示例/错误表 → 调用关系。
|
|
294
|
+
大纲硬门槛:仅 4.5.1–4.5.3 + ##### In;请求体字段/示例/错误用 **加粗**,禁止再开标题。
|
|
295
|
+
详见 generate.md §4.5。 -->
|
|
286
296
|
|
|
287
297
|
#### 4.5.1 总览与约定
|
|
288
298
|
|
|
@@ -308,17 +318,33 @@ CREATE TABLE `table_name` (
|
|
|
308
318
|
|
|
309
319
|
##### I1 · `<短名>`(`<变更类型>`)
|
|
310
320
|
|
|
321
|
+
**元信息**:
|
|
322
|
+
|
|
311
323
|
| 项 | 内容 |
|
|
312
324
|
|----|------|
|
|
313
325
|
| 应用场景 | |
|
|
314
326
|
| 协议 | |
|
|
315
327
|
| 本迭代变更 | |
|
|
316
328
|
|
|
329
|
+
**请求体字段**:
|
|
330
|
+
|
|
317
331
|
| 字段 | 类型 | 必填 | 默认 | 说明 |
|
|
318
332
|
|------|------|------|------|------|
|
|
319
333
|
| | | | | |
|
|
320
334
|
|
|
321
|
-
|
|
335
|
+
**请求示例**: …
|
|
336
|
+
|
|
337
|
+
**成功响应字段**: …
|
|
338
|
+
|
|
339
|
+
**响应示例(成功)**: …
|
|
340
|
+
|
|
341
|
+
**响应示例(失败)** *(G2 强制)*: …
|
|
342
|
+
|
|
343
|
+
**错误**:
|
|
344
|
+
|
|
345
|
+
| 条件 | 状态 / 退出码 | 说明 |
|
|
346
|
+
|------|---------------|------|
|
|
347
|
+
| | | |
|
|
322
348
|
|
|
323
349
|
#### 4.5.3 调用关系
|
|
324
350
|
|