adspecs 0.1.19 → 0.1.21

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.
Files changed (74) hide show
  1. package/.adspecs/feature.json +16 -16
  2. package/.adspecs/feature.yml +28 -28
  3. package/.adspecs/paths.json +17 -17
  4. package/.adspecs/templates/04-/345/211/215/347/253/257/345/212/237/350/203/275/350/256/276/350/256/241/346/250/241/346/235/277.md +1 -1
  5. package/.adspecs/templates/05-/345/220/216/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +613 -724
  6. package/.adspecs/templates/05b-/345/211/215/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +51 -51
  7. package/.claude-plugin/marketplace.json +23 -23
  8. package/.claude-plugin/plugin.json +18 -18
  9. package/.qoder-plugin/plugin.json +31 -31
  10. package/CLAUDE.md +1 -5
  11. package/INSTALL.md +3 -3
  12. package/README.md +395 -395
  13. package/bin/adspecs.js +129 -129
  14. package/hooks/commit-queue.js +245 -245
  15. package/hooks/hooks.json +63 -63
  16. package/hooks/session-start.js +44 -44
  17. package/hooks/wiki-queue.js +127 -127
  18. package/package.json +61 -61
  19. package/references/ant6-front-standard/index.md +99 -99
  20. package/references/antd-front-demo/public/mockServiceWorker.js +361 -361
  21. package/references/ecp-end-standard/index.md +63 -63
  22. package/references/python-end-standard/01-Python/345/220/216/347/253/257/347/274/226/347/240/201/350/247/204/350/214/203.md +372 -372
  23. package/references/python-end-standard/02-/346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/344/270/216/344/275/277/347/224/250/350/247/204/350/214/203.md +226 -226
  24. package/references/python-end-standard/03-Celery/345/274/202/346/255/245/344/273/273/345/212/241/350/247/204/350/214/203.md +237 -237
  25. package/references/python-end-standard/04-Redis/344/275/277/347/224/250/350/247/204/350/214/203.md +231 -231
  26. package/scripts/postinstall.js +107 -107
  27. package/scripts/sync-version.js +105 -105
  28. package/skills/.claude/.wiki-update-queue +26 -26
  29. package/skills/adspecs-constitution/SKILL.md +157 -0
  30. package/skills/adspecs-export-word/SKILL.md +498 -498
  31. package/skills/adspecs-export-word/references/md-to-docx.js +862 -862
  32. package/skills/adspecs-export-word/references/package-lock.json +220 -220
  33. package/skills/adspecs-export-word/references/package.json +10 -10
  34. package/skills/adspecs-front-prototype/SKILL.md +405 -405
  35. package/skills/adspecs-front-spec/SKILL.md +4 -4
  36. package/skills/adspecs-front-tasks/SKILL.md +213 -173
  37. package/skills/adspecs-plan/SKILL.md +59 -69
  38. package/skills/adspecs-prd/SKILL.md +13 -5
  39. package/skills/adspecs-prd-to-demo/SKILL.md +532 -0
  40. package/skills/adspecs-tasks/SKILL.md +175 -204
  41. package/skills/adspecs-update-status/SKILL.md +382 -382
  42. package/skills/adspecs-utest/SKILL.md +107 -116
  43. package/skills/grill-me/SKILL.md +7 -0
  44. package/skills/grill-me/agents/openai.yaml +5 -0
  45. package/skills/playwright-cli/SKILL.md +420 -0
  46. package/skills/playwright-cli/references/element-attributes.md +23 -0
  47. package/skills/playwright-cli/references/playwright-tests.md +39 -0
  48. package/skills/playwright-cli/references/request-mocking.md +87 -0
  49. package/skills/playwright-cli/references/running-code.md +241 -0
  50. package/skills/playwright-cli/references/session-management.md +225 -0
  51. package/skills/playwright-cli/references/storage-state.md +275 -0
  52. package/skills/playwright-cli/references/test-generation.md +433 -0
  53. package/skills/playwright-cli/references/tracing.md +139 -0
  54. package/skills/playwright-cli/references/video-recording.md +143 -0
  55. package/skills/playwright-trace/SKILL.md +171 -0
  56. package/skills/project-init/SKILL.md +93 -22
  57. package/skills/project-init/references/front-demo/.claude/settings.local.json +9 -0
  58. package/skills/wiki-update/SKILL.md +232 -232
  59. package/src/commands/doctor.js +197 -197
  60. package/src/commands/init.js +83 -83
  61. package/src/commands/plugin.js +165 -165
  62. package/src/commands/update.js +87 -87
  63. package/src/lib/area-scanner.js +129 -129
  64. package/src/lib/copier.js +104 -104
  65. package/src/lib/dir-utils.js +161 -133
  66. package/src/lib/json-merge.js +114 -114
  67. package/src/lib/paths-defaults.js +37 -37
  68. package/src/lib/prompts.js +428 -347
  69. package/src/lib/readme-gen.js +143 -143
  70. package/src/lib/report.js +338 -327
  71. package/src/lib/scaffolder.js +551 -518
  72. package/src/lib/short-name.js +36 -36
  73. package/src/utils.js +80 -80
  74. package/references/antd-front-demo/.env +0 -15
@@ -2,7 +2,7 @@
2
2
  name: "adspecs-plan"
3
3
  description: "基于 PRD 文件一次性完成需求分析与系统设计(OOA+OOD),输出统一设计文档(_system-design.md)和建表 SQL(_schema.sql)"
4
4
  argument-hint: "指定 PRD 文件路径,如 docs/20-prd/crm/sales-forecast/M06-01_销售预测需求规格说明书.md"
5
- compatibility: "需要 docs/ 目录体系,含 03-系统设计模板.md v1.2、项目约定文档、ECP 编码规范"
5
+ compatibility: "需要 docs/ 目录体系,含 03-系统设计模板.md v1.2、项目后端编码规范(由 docs/40-project_conventions/end-integration/index.md 提供)"
6
6
  metadata:
7
7
  author: "qingwen"
8
8
  user-invocable: true
@@ -37,24 +37,22 @@ $ARGUMENTS
37
37
  读取用户指定的 PRD 文件(`{PRD_DIR}/`),一次性完成系统设计(OOD),生成 **2 个输出**:
38
38
 
39
39
  1. **统一系统设计文档**(`.md`)— 按 `03-系统设计模板.md` v1.2 单阶段 13 部分生成,覆盖 OOA+OOD 全部内容
40
- 2. **建表 SQL**(`.sql`)— 完整 DDL,遵循 ECP 审计字段规范(经 Liquibase 管理)
40
+ 2. **建表 SQL**(`.sql`)— 完整 DDL,遵循项目后端规范(审计字段、DB 迁移格式等)
41
41
 
42
42
  ## 输入
43
43
 
44
44
  ### 必读文件(按顺序)
45
45
 
46
- | 序号 | 文件 | 用途 |
47
- | ---- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
48
- | 1 | `{PRD_DIR}/{用户指定的 PRD 文件}` | 需求来源 — 提取用户故事(US-ID)、业务规则(BR-ID)、功能清单、验收标准 |
49
- | 2 | `CLAUDE.md` | 项目技术栈、模块结构、ECP 编码约定 |
50
- | 3 | `.adspecs/templates/03-系统设计模板.md` | **统一设计模板 v1.2**(单阶段 13 部分,含 gushen-demo 角色管理填写示例) |
51
- | 4 | `docs/40-project_conventions/end-integration/后端分层开发与数据库设计规范.md` | ECP 编码规范:Entity/DTO/Ro/DAO+XML/Service/Controller 标准 |
52
- | 5 | `docs/40-project_conventions/end-integration/多语言及全局异常处理规范.md` | 错误码格式、ResponseMsgCode 枚举、i18n 文件规范 |
53
- | 6 | `docs/40-project_conventions/end-integration/Liquibase 数据库变更管理规范.md` | 建表 SQL 规范(DDL/DML 幂等、changeset 命名) |
46
+ | 序号 | 文件 | 用途 |
47
+ | ---- | ------------------------------------------------------ | ----------------------------------------------------------------------------------- |
48
+ | 1 | `{PRD_DIR}/{用户指定的 PRD 文件}` | 需求来源 — 提取用户故事(US-ID)、业务规则(BR-ID)、功能清单、验收标准 |
49
+ | 2 | `CLAUDE.md` | 项目技术栈、模块结构 |
50
+ | 3 | `.adspecs/templates/03-系统设计模板.md` | **统一设计模板 v1.2**(单阶段 13 部分,填写示例仅作参考,实际以 index.md 规范为准) |
51
+ | 4 | `docs/40-project_conventions/end-integration/index.md` | 后端编码规范索引(按其中推荐顺序加载全部规范) |
54
52
 
55
53
  ### 参考文件(按需)
56
54
 
57
- - `gushen-demo/` 参考代码 — 已有的包路径、基类、IotBaseRole 标准写法范例
55
+ - 项目已有参考代码(如有)— 已有的包路径、基类标准写法范例
58
56
  - `{PRD_DIR}/` 下的其他 PRD 文件 — 了解关联模块的业务
59
57
 
60
58
  ## 执行前检查
@@ -106,11 +104,17 @@ $ARGUMENTS
106
104
  - 读取 `.adspecs/templates/03-系统设计模板.md`,获取系统设计的完整结构
107
105
  - 如果模板不存在,使用内置的分析结构(见下方"## 工作流程")
108
106
 
109
- 3. **加载项目上下文**(可选):
107
+ 3. **加载后端编码规范**(必选):
108
+ - 读取 `docs/40-project_conventions/end-integration/index.md`
109
+ - 按 `index.md` 中"推荐读取顺序"依次加载所有关联规范文件
110
+ - 后续所有设计决策(实体命名、基类选择、注解使用、审计字段、响应包装、异常处理、DB 迁移格式等)均以该规范为准
111
+ - 如该目录不存在或 `index.md` 缺失,中止执行并提示先运行 `/project-init` 选择技术栈
112
+
113
+ 4. **加载项目上下文**(可选):
110
114
  - 如果 `CLAUDE.md` 存在,读取以了解项目背景
111
115
  - 如果 `docs/{PRD_DIR}/` 下有相关文档,读取以补充需求背景
112
116
 
113
- 4. **识别二级模块**:
117
+ 5. **识别二级模块**:
114
118
  - 扫描 `{ARCH_DIR}/` 目录,查找 `01-*_business_scenarios.md` 或 `01-*_business_architecture.md` 文件(业务功能架构文档,两者命名均可能出现)
115
119
  - 如果找到,读取文件内容,重点关注:
116
120
  - **二、系统模块总览** → **2.2 子模块清单**:获取所有主模块(M00~M{N})及其下属的二级模块(子模块,编号格式如 M03-01、M03-02、SYS-01 等)
@@ -124,7 +128,7 @@ $ARGUMENTS
124
128
  - 将匹配到的二级模块编号记为 `MODULE_ID`(如 `M03-02`),对应的主模块编号记为 `PARENT_MODULE`(如 `M03`)
125
129
  - 如果架构文档不存在,跳过此步骤,`MODULE_ID` 留空,输出目录不包含模块子目录
126
130
 
127
- 5. **确定输出路径**:
131
+ 6. **确定输出路径**:
128
132
  - 输出根目录:`{OUTPUT_DIR}/`(由路径配置加载阶段解析,默认 `docs/{DESIGN_DIR}/`)
129
133
  - 如果 `MODULE_ID` 已识别(非空):
130
134
  - 输出子目录:`{OUTPUT_DIR}/{MODULE_ID}/`(如 `docs/{DESIGN_DIR}/M03-02/`)
@@ -191,23 +195,11 @@ $ARGUMENTS
191
195
 
192
196
  #### 0.2 加载模板和约定
193
197
 
194
- 按上表序号 2-7 依次读取必读文件。重点理解:
198
+ 按上表序号 2-4 依次读取必读文件。重点理解:
195
199
 
196
200
  - `03-系统设计模板.md`的 13 个部分结构(§1~§13 必填)及填写示例
197
- - **ECP 平台核心约定**:
198
- - **Entity**: 继承 `BaseEntity<T>`,`@TableName` 反引号,每字段 `@TableField` + `@Schema`,主键 `Long` + `IdType.ASSIGN_ID`。**BaseEntity 已含审计字段,Entity 中禁止重复声明**
199
- - **DTO**: 继承 `ReqeustCommonDataBean`(注意平台拼写),Date 字段 `@JSONField(format = "yyyy-MM-dd HH:mm:ss")`,校验分组为 DTO 内部接口
200
- - **Ro**: 简单 POJO + `implements Serializable` + `serialVersionUID`,手动声明所有字段,位于 `model/entity/readonly/`
201
- - **DAO**: 继承 `BaseCommonDAO_HI`,**所有 SQL 通过 MyBatis XML,禁止 QueryWrapper/LambdaQueryWrapper**
202
- - **Service**: 接口 `II{Entity}`(双 I 前缀),实现 `@Component("{camel}Service")` 继承 `BaseCommonServer`
203
- - **Controller**: 继承 `CommonAbstractService`,重写 `getBaseCommonServer()`,标准 5 端点,全端点 `@CheckToken`
204
- - **Save 用 FastJSON**: `JSONObject.parseObject(JSONObject.toJSONString(dto), Entity.class)`
205
- - **Update 用 Spring BeanUtils**: `BeanUtils.copyProperties(dto, entity, "createdBy", "creationDate", "versionNum")`
206
- - **子表更新**: 先删后增策略 — `deleteBy{父}Id(id)` → `saveListBy{父}Id(id, list)`
207
- - **异常在 Service 层抛出**(`RecordNotExistsException`、`GushenRuntimeException`),Controller 仅做参数空校验
208
- - **错误码格式**: `{port}_{table_snake}_{三位序号}`,定义在 `ResponseMsgCode` 枚举中,**禁止硬编码字符串**
209
- - **注入方式**: `@Autowired` + `@Component("{camel}Name")`
210
- - **表规范**: `delete_flag` 默认 0,`version_num` 默认 0,不使用外键,主键雪花 ID
201
+ - **核心约定**:
202
+ - 按照`index.md`文件约定读取相关规范
211
203
 
212
204
  ---
213
205
 
@@ -228,19 +220,19 @@ $ARGUMENTS
228
220
 
229
221
  从 PRD 业务实体中直接落地为三类对象的完整字段表:
230
222
 
231
- - **Entity 字段表**:Java 类型、DB 类型、长度、必填、默认值、注解、说明。审计字段继承自 BaseEntity,禁止重复声明
232
- - **DTO 字段表**:校验注解、必填、说明。标注 `extends ReqeustCommonDataBean`,验证分组 `save{Entity}` / `update{Entity}`
233
- - **Ro 字段表**:Java 类型、注解(`@DateTimeFormat` + `@JsonFormat`)、说明。标注 `implements Serializable` + `serialVersionUID`
223
+ - **Entity 字段表**:类型、DB 类型、长度、必填、默认值、注解、说明。审计字段继承自基类(按后端规范),禁止重复声明
224
+ - **DTO 字段表**:校验注解、必填、说明。按后端规范标注 DTO 基类与验证分组
225
+ - **Ro 字段表**:类型、注解、说明。按后端规范定义只读视图对象的字段与序列化
234
226
 
235
- **每个实体标注来源需求 ID、表名(反引号)、主键(ASSIGN_ID)、索引、关联关系。**
227
+ **每个实体标注来源需求 ID、表名、主键策略、索引、关联关系。**
236
228
 
237
229
  #### §3 数据模型(必填,设计)
238
230
 
239
231
  基于 §2 的实体定义:
240
232
 
241
233
  - 绘制 Mermaid classDiagram(标注 1:N 等关系基数)
242
- - 完整的 DDL 字段表(含 ECP 8 个审计字段:tenant_id / creation_date / created_by / last_update_date / last_updated_by / last_update_login / delete_flag / version_num)
243
- - MyBatis XML 结构(BaseResultMap、Base_Column_List、BASE_QUERY_CONDITION、findPagination,含 `WHERE delete_flag = 0`)
234
+ - 完整的 DDL 字段表(含后端规范定义的审计字段)
235
+ - ORM 映射结构(按后端规范,含软删除过滤条件)
244
236
  - DAO 接口定义(类路径、继承、自定义方法签名)
245
237
 
246
238
  #### §4 业务行为与 Service 设计(必填,分析→设计)
@@ -249,19 +241,19 @@ $ARGUMENTS
249
241
  - Mermaid flowchart 业务流程图
250
242
  - Mermaid stateDiagram 状态机图(如有状态流转)
251
243
  - Service 接口方法表(方法签名、入参、出参、事务标注)
252
- - Service 实现伪代码(save/update/delete 的关键步骤 + FastJSON/BeanUtils 转换说明)
253
- - 事务边界汇总表(哪些方法需 `@Transactional(rollbackFor = Exception.class)`)
244
+ - Service 实现伪代码(save/update/delete 的关键步骤 + 对象转换策略,按后端规范)
245
+ - 事务边界汇总表(哪些方法需事务注解,按后端规范)
254
246
 
255
247
  #### §5 接口与 Controller 设计(必填,设计)
256
248
 
257
249
  - 标准 5 端点 + 自定义端点清单(HTTP 方法、路径、说明、请求/响应包装、校验分组)
258
- - Controller 完整 Java 代码骨架(`@Tag`、`@RestController`、`CommonAbstractService`、`@CheckToken`、`ResponseData`)
250
+ - Controller 完整代码骨架(含认证注解、响应包装,按后端规范)
259
251
  - 权限矩阵
260
252
 
261
253
  #### §6 枚举与数据字典(必填,分析→设计)
262
254
 
263
255
  - 枚举值定义表(枚举值、编码、显示名称、说明、使用场景),标注存储类型和类路径
264
- - 数据校验规则表(数据项、Java 类型、必填、取值范围、校验注解、消息码)
256
+ - 数据校验规则表(数据项、数据类型、必填、取值范围、校验注解、消息码)
265
257
 
266
258
  #### §7 异常处理(必填,分析→设计)
267
259
 
@@ -271,8 +263,8 @@ $ARGUMENTS
271
263
 
272
264
  #### §8 缓存与性能(必填)
273
265
 
274
- - 仅当有明确缓存需求时填写,使用 DawnRedis + ICacheKey
275
- - 并发控制策略(乐观锁 version_num + 分布式锁 @Klock)
266
+ - 仅当有明确缓存需求时填写,按后端规范选择缓存组件
267
+ - 并发控制策略(乐观锁 + 分布式锁,按后端规范)
276
268
 
277
269
  #### §9 测试场景(必填)
278
270
 
@@ -289,15 +281,15 @@ $ARGUMENTS
289
281
 
290
282
  ### 阶段 2:生成建表 SQL
291
283
 
292
- 按 `Liquibase 数据库变更管理规范.md` 规范生成:
284
+ 按 `docs/40-project_conventions/end-integration/index.md` 中指定的 DB 迁移规范生成:
293
285
 
294
- - SQL 文件头含 `--liquibase formatted sql` 和 changeset 注释
295
- - 每张表包含完整业务字段 + ECP 标准审计字段(8 个)
296
- - 每列必须带 `COMMENT`
297
- - `delete_flag` 默认 0,`version_num` 默认 0
298
- - 索引命名:`uk_{table}_{field}`(唯一)、`idx_{field}`(普通)
286
+ - SQL 文件按后端规范的迁移格式编写(含版本控制注释)
287
+ - 每张表包含完整业务字段 + 后端规范定义的审计字段
288
+ - 每列必须带 `COMMENT`(或后端规范等效的字段说明方式)
289
+ - 软删除字段和版本字段默认值按后端规范
290
+ - 索引命名规则按后端规范
299
291
  - 不使用外键约束
300
- - DDL/DML 必须幂等:`CREATE TABLE IF NOT EXISTS` / `REPLACE INTO`
292
+ - DDL/DML 必须幂等(按后端规范的幂等语法)
301
293
 
302
294
  ---
303
295
 
@@ -324,32 +316,31 @@ $ARGUMENTS
324
316
 
325
317
  - [ ] 04 号模板必填部分(§1~§9)全部覆盖
326
318
  - [ ] 需求 ID 映射表记录了 PRD 中所有 US/BR 编号
327
- - [ ] 所有 Entity 标注 `@TableName` 反引号 + `@TableId(type = IdType.ASSIGN_ID)`,**未重复声明 BaseEntity 审计字段**
328
- - [ ] DTO 标注 `extends ReqeustCommonDataBean`,校验分组为内部接口
329
- - [ ] Ro 标注 `implements Serializable` + `serialVersionUID`
319
+ - [ ] 所有 Entity 按后端规范标注表名和主键策略,**未重复声明基类审计字段**
320
+ - [ ] DTO 按后端规范标注基类和校验分组
330
321
  - [ ] 实体关系有 Mermaid classDiagram,标注关系基数
331
322
  - [ ] 核心业务流程有 Mermaid flowchart
332
323
  - [ ] 状态流转有 Mermaid stateDiagram(如有)
333
- - [ ] DAO 继承 `BaseCommonDAO_HI`,所有查询通过 MyBatis XML
334
- - [ ] Controller 继承 `CommonAbstractService`,每个方法 `@CheckToken`
335
- - [ ] 接口出参统一为 `ResponseData<T>`,Controller 取参用 `requestData.getParams()`
336
- - [ ] 错误码遵循 `{port}_{table_snake}_{三位序号}` 格式,定义在 `ResponseMsgCode` 枚举中
337
- - [ ] Service 方法标注是否需要 `@Transactional(rollbackFor = Exception.class)`
338
- - [ ] Save 用 FastJSON,Update 用 Spring BeanUtils 排除审计字段
339
- - [ ] 子表更新采用先删后增策略
340
- - [ ] 异常在 Service 层通过 `RecordNotExistsException` / `GushenRuntimeException` 抛出
324
+ - [ ] DAO 按后端规范继承基类,所有查询通过 ORM 映射文件
325
+ - [ ] Controller 按后端规范继承基类,每个方法含认证注解
326
+ - [ ] 接口出参统一为后端规范的响应包装类型
327
+ - [ ] 错误码按后端规范定义的格式和枚举类
328
+ - [ ] Service 方法标注是否需要事务注解
329
+ - [ ] Save/Update 按后端规范的对象转换策略执行
330
+ - [ ] 子表更新采用先删后增策略(或后端规范等效策略)
331
+ - [ ] 异常在 Service 层按后端规范抛出
341
332
  - [ ] 每个业务行为有业务规则(引用 BR-ID)和异常处理
342
- - [ ] ResponseData 使用 `ResponseMsgCode` 枚举消息码,**禁止硬编码字符串**
333
+ - [ ] 响应使用后端规范的消息码枚举,**禁止硬编码字符串**
343
334
  - [ ] 服务名称和端口命名规范严格遵循`02-*_system_architecture.md`中的`技术架构`章节内容
344
335
  - [ ] 测试场景覆盖正常/异常/边界情况必须100%覆盖,每种至少 3 条
345
336
 
346
337
  ### 建表 SQL 检查
347
338
 
348
- - [ ] 文件含 `--liquibase formatted sql` 和 changeset
349
- - [ ] 每张表包含完整 ECP 审计字段(8 个)
350
- - [ ] 每列有 `COMMENT`
351
- - [ ] `delete_flag` 默认 0,`version_num` 默认 0
352
- - [ ] 索引命名符合规范(`uk_` / `idx_`)
339
+ - [ ] 文件按后端规范的 DB 迁移格式编写
340
+ - [ ] 每张表包含完整后端规范审计字段
341
+ - [ ] 每列有 `COMMENT`(或后端规范等效的字段说明方式)
342
+ - [ ] 软删除和版本字段默认值按后端规范
343
+ - [ ] 索引命名符合后端规范
353
344
  - [ ] 无外键约束
354
345
  - [ ] DDL/DML 幂等
355
346
 
@@ -357,10 +348,9 @@ $ARGUMENTS
357
348
 
358
349
  - **按 04 号模板 §1~§10 顺序生成** — 每个部分从分析直接落地到设计,后文引用前文定义的内容,避免重复
359
350
  - **每个设计条目标注** `**来源需求**:` 引用 PRD ID(如 US-01、BR-02、FUNC-03),支撑全链路追溯
360
- - **严格遵循 ECP 编码规范** — 所有设计决策以 `docs/40-project_conventions/end-integration/` 中的规范文件为准
361
- - **禁止使用 sie-cloud 命名** 不使用 `BaseDO`、`TenantBaseDO`、`BaseMapperX`、`LambdaQueryWrapperX`、`CommonResult<T>`、`@Resource`、`@PreAuthorize` 等术语
362
- - **禁止 QueryWrapper / LambdaQueryWrapper** 所有 DB 操作设计为 MyBatis XML 实现
363
- - **禁止生成 Java 源码** — 仅生成设计文档和 SQL,不生成 Java 代码
351
+ - **严格遵循项目后端规范** — 所有设计决策以 `docs/40-project_conventions/end-integration/` 中的规范文件为准
352
+ - **模板填写示例仅作参考**实际设计以 `docs/40-project_conventions/end-integration/index.md` 规范为准,禁止照搬模板中的特定平台类名
353
+ - **禁止生成源码**仅生成设计文档和 SQL,不生成后端源代码
364
354
  - **禁止虚构需求** — 设计内容必须来自 PRD,不自行添加未提及的功能
365
355
  - **禁止过度设计** — 简单 CRUD 不套用策略/工厂模式,选填部分仅在确需时填写
366
356
  - **文件系统操作使用绝对路径**;文档和 agent 上下文文件中的引用使用项目相对路径
@@ -185,12 +185,16 @@ $ARGUMENTS
185
185
  5. 生成功能需求
186
186
  每个需求必须是可测试的
187
187
  对未明确的细节使用合理的默认值(在假设部分记录假设)
188
+ 按模块拆分,每个模块包含:触发条件、展示内容、操作规则、系统反馈。避免‘便捷、智能’等抽象词。涉及字段时列出名称、含义、来源
188
189
  6. 定义成功标准
190
+ 按功能模块生成可验证的验收标准。格式:场景/操作/预期结果。覆盖正常、异常、权限、边界情况。
189
191
  创建可度量、与技术无关的成果
190
192
  包括量化指标(时间、性能、容量)和定性测量(用户满意度、任务完成率)
191
193
  每个标准必须可在不知道实现细节的情况下验证
192
194
  7. 识别关键实体(如果涉及数据)
193
- 8. 返回:成功(spec 可进入计划阶段)
195
+ 8. 状态流转(待处理、处理中、已完成等)必须清晰列出进入/离开条件、触发人、前端展示、通知机制等
196
+ 9. 异常处理表类似:异常场景、触发条件、用户可见内容、系统处理方式、重试机制、数据保存策略等
197
+ 10. 返回:成功(spec 可进入计划阶段)
194
198
 
195
199
  7. 使用模板结构将规格说明书写入 `SPEC_FILE`,用从功能描述(参数)派生的具体细节替换占位符,同时保留章节顺序和标题。
196
200
 
@@ -216,19 +220,23 @@ $ARGUMENTS
216
220
 
217
221
  - [ ] 无 [NEEDS CLARIFICATION] 标记残留
218
222
  - [ ] 需求可测试且无歧义
219
- - [ ] 成功标准可度量
220
- - [ ] 成功标准与技术无关(无实现细节)
223
+ - [ ] 验收标准可验证可度量
224
+ - [ ] 验收标准与技术无关(无实现细节)
221
225
  - [ ] 所有验收场景已定义
222
- - [ ] 边界情况已识别
226
+ - [ ] 状态流转是否完整(进入/离开/展示/通知)
227
+ - [ ] 异常和边界情况已识别且场景是否穷举主要情况
223
228
  - [ ] 范围界限清晰
229
+ - [ ] 功能描述是否具体到研发可直接实现
224
230
  - [ ] 依赖和假设已识别
231
+ - [ ] 权限、数据、兼容性是否说明
232
+ - [ ] 风险与待确认项是否列出
225
233
  - [ ] 一级模块名称和编号是否与 `docs\10-architecture\01-*_business_scenarios.md` 中对应的模块对齐一致性检查
226
234
  - [ ] 二级菜单/模块划分合理性检查
227
235
 
228
236
  ## 功能就绪
229
237
 
230
238
  - [ ] 所有功能需求有清晰的验收标准
231
- - [ ] 用户场景覆盖主要流程
239
+ - [ ] 用户场景覆盖流程完整
232
240
  - [ ] 功能满足成功标准中定义的可度量成果
233
241
  - [ ] 无实现细节泄露到规格说明书中
234
242