@chenmk/superflow 0.1.2 → 0.1.3

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.
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## 标准模板
10
10
 
11
- ```
11
+ ````
12
12
  使用superpower技能,开启合适的团队,最少包含一名开发和一名测试交叉验证进行需求开发,测试验证闭环交付,更新测试文档和api.md:
13
13
 
14
14
  # P{batch-id} Prompt:{batch-name}
@@ -154,20 +154,33 @@
154
154
  ```bash
155
155
  rg -n "<field>|<enum>|<status>|<column>" .
156
156
  rg -n "<setter>|<getter>|<mapper column>|<dto field>" src test
157
- ```
157
+ ````
158
158
 
159
159
  同时检查 Mapper XML、实体注解、DTO/VO、SQL 脚本、定时任务、MQ/事件消费、
160
160
  回调、第三方适配器、共享表/SDK 和兄弟仓消费方。
161
161
 
162
162
  完成报告必须包含:
163
163
 
164
- | 字段/状态 | 写入点 | 读取/过滤点 | 派生/同步点 | 跨模块消费方 | 已同步调整 | 不调整理由 | 覆盖测试 |
165
- |---|---|---|---|---|---|---|---|
166
- | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
164
+ | 字段/状态 | 写入点 | 读取/过滤点 | 派生/同步点 | 跨模块消费方 | 已同步调整 | 不调整理由 | 覆盖测试 |
165
+ | --------- | -------- | ----------- | ----------- | ------------ | ---------- | ---------- | -------- |
166
+ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ |
167
167
 
168
168
  只证明直接 setter/writer 已修改,不证明读取方、过滤方、派生同步方和消费方,
169
169
  视为未完成。
170
170
 
171
+ ## 外部枚举绑定确认(强制)
172
+
173
+ 如果本批涉及第三方、SDK、BEM/停车、支付退款、财务展示、来源字段、状态同步、
174
+ 外部字典或外部枚举,必须从 api.md / sdd-quality-gate.md /
175
+ Superpowers 技术详设复制 `外部枚举绑定确认` / `External Enum Binding`,并在编码前复核。
176
+
177
+ | 业务字段 | 本系统真源字段/枚举 | 外部系统字段 | 外部枚举/字典值 | 展示文案/业务语义/财务语义 | 取值来源 | owner/确认时间 | 不确定项/阻塞处理 | 覆盖测试 |
178
+ | -------- | ------------------- | ------------ | --------------- | -------------------------- | --------------------------- | -------------- | ---------------------- | -------- |
179
+ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | \_\_\_\_ | 文档/日志/接口样例/用户确认 | \_\_\_\_ | 无 / Blocked: \_\_\_\_ | \_\_\_\_ |
180
+
181
+ 禁止用请求成功、值非空或字段存在替代外部枚举业务语义确认。未确认的外部枚举、
182
+ 支付来源、财务展示含义或兜底映射,必须停止并报告 `Blocked`。
183
+
171
184
  ## SDD 门禁激活(第一步,在所有编码工作之前执行)
172
185
 
173
186
  本机已配置 Codex Hooks,会在 Edit/Write 时自动拦截。你必须按以下顺序激活:
@@ -195,9 +208,11 @@ cd {project-path} && rm -f .sdd-enforced
195
208
  **跳过以上步骤直接编辑代码会被 Hook 拦截。**
196
209
 
197
210
  ## 本批目标
211
+
198
212
  {一句话描述本批要完成的业务闭环}
199
213
 
200
214
  示例:
215
+
201
216
  - 完成主数据的 CRUD 接口,包括数据库表、实体、Mapper、Service、Controller,支持后台列表查询和批量导入模板下载。
202
217
  - 完成外部事件接入,包括消息解析、准入校验、事件格式化、向 MQ 发布 BusinessEvent。
203
218
 
@@ -229,6 +244,7 @@ pwd
229
244
  git branch --show-current
230
245
  git status --short
231
246
  ```
247
+
232
248
  - 确认当前目录包含本批次 worktree 名称
233
249
  - 确认当前分支是本批次分支
234
250
  - 如有异常,停止工作,不得开始任何代码编辑
@@ -238,16 +254,19 @@ git status --short
238
254
  本任务预设端口 = {base-port} + {batch-id} = {port}(如 9250 + 15 = 9265)。
239
255
 
240
256
  启动应用前检查端口占用:
257
+
241
258
  ```bash
242
259
  PORT={port}
243
260
  lsof -i :$PORT 2>/dev/null || netstat -tlnp 2>/dev/null | grep ":$PORT "
244
261
  ```
262
+
245
263
  - 若预设端口被其他 agent 占用 → 向后递增查找可用端口(到 9350),禁止关闭其他进程
246
264
  - 若更换端口,所有接口测试 URL 同步更新
247
265
 
248
266
  ### 编译依赖问题处理(强制)
249
267
 
250
268
  编译失败时禁止直接终止:
269
+
251
270
  - 分析错误类型 → 对照 design.md 检查 → 尝试修复 → 重新 clean compile
252
271
  - 其他 agent 能正常编译说明环境是对的,问题出在自己的代码
253
272
  - 15 分钟无法解决才上报 Leader
@@ -255,6 +274,7 @@ lsof -i :$PORT 2>/dev/null || netstat -tlnp 2>/dev/null | grep ":$PORT "
255
274
  ### Token 获取(强制)
256
275
 
257
276
  接口测试必须先获取真实 token:
277
+
258
278
  ```bash
259
279
  # 1. 获取验证码(带 Cookie)
260
280
  curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
@@ -268,6 +288,7 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
268
288
 
269
289
  # 3. 从响应 data.token 提取,后续请求 Header 带 token: $TOKEN
270
290
  ```
291
+
271
292
  - 禁止 mock-only、禁止假设固定 token
272
293
  - 登录失败时必须输出完整响应分析原因
273
294
 
@@ -290,23 +311,28 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
290
311
  或把任务标记为 `Blocked` / `Partially verified` 并说明阻塞原因。
291
312
 
292
313
  ## 允许修改的仓库
314
+
293
315
  {repository-name}
294
316
 
295
317
  ## 允许修改的目录/文件范围
318
+
296
319
  {具体列出允许修改的文件路径,精确到类名}
297
320
 
298
321
  示例:
322
+
299
323
  - src/main/java/com/example/domain/entity/BusinessRecord.java
300
324
  - src/main/java/com/example/domain/mapper/BusinessRecordMapper.java
301
325
  - src/main/resources/mapper/BusinessRecordMapper.xml
302
326
  - src/main/java/com/example/domain/service/BusinessRecordService.java
303
327
  - src/main/java/com/example/domain/controller/BusinessRecordController.java
304
- - src/main/resources/db/migration/V{version}__add_business_record.sql
328
+ - src/main/resources/db/migration/V{version}\_\_add_business_record.sql
305
329
 
306
330
  ## 禁止修改的范围
331
+
307
332
  {明确列出禁止触碰的边界}
308
333
 
309
334
  示例:
335
+
310
336
  - 禁止修改 OtherDomainService.java 及其相关接口(由其他批次负责)
311
337
  - 禁止修改 PublicApiController.java(对外接口由其他批次负责)
312
338
  - 禁止修改消息协议相关配置和类(由其他批次负责)
@@ -314,17 +340,21 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
314
340
  - 禁止修改既有枚举值(如需新增枚举值,在报告中声明)
315
341
 
316
342
  ## 依赖的前置批次
343
+
317
344
  {列出本批依赖哪些批次已完成}
318
345
 
319
346
  示例:
347
+
320
348
  - P0 基线:已完成,数据库表结构和实体已对齐
321
349
  - P1 核心主数据:已完成,基础 CRUD 可用
322
350
 
323
351
  ## 业务背景
352
+
324
353
  {简述本批在整体业务中的位置和上下游关系}
325
354
 
326
355
  示例:
327
356
  本批是某业务流程的 P2 核心链路。用户或外部系统提交业务请求后,系统需要:
357
+
328
358
  1. 校验主数据有效性(依赖 P1 的主数据能力)
329
359
  2. 创建业务记录并初始化状态机
330
360
  3. 根据用户、租户或配置计算业务规则命中
@@ -332,6 +362,7 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
332
362
  5. 调用下游依赖完成资源锁定、通知或后续处理
333
363
 
334
364
  ## 精确实现步骤
365
+
335
366
  {按顺序列出具体要做什么,引用 design.md 章节}
336
367
 
337
368
  步骤 1:{具体动作}(参考 design.md #{章节})
@@ -339,15 +370,18 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
339
370
  ...
340
371
 
341
372
  ## 数据库字段要求
373
+
342
374
  {明确字段名、类型、约束,引用 database-contract.md 或 design.md}
343
375
 
344
376
  **汇总 SQL 文件**:`openspec/changes/{change-id}/sql/{汇总SQL文件名}`
377
+
345
378
  - 本批次所有数据库变更脚本必须从该文件获取
346
379
  - 如果需要新增数据库变更,必须追加到该汇总 SQL 文件(按任务编号注释,如 `-- P16 业务字段补齐`)
347
380
  - SQL 脚本采用简单直接格式(ALTER TABLE / INSERT),不使用 INFORMATION_SCHEMA 判断、PREPARE/EXECUTE 等过度兼容脚本
348
381
  - 如果本批次不需要新增 SQL,写明"本批次不新增 SQL,但开始前仍需核查依赖表结构是否已满足设计"
349
382
 
350
383
  示例:
384
+
351
385
  - business_record 表:
352
386
  - id: BIGINT PK AUTO_INCREMENT
353
387
  - name: VARCHAR(64) NOT NULL
@@ -358,15 +392,18 @@ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
358
392
  - created_at / updated_at: datetime
359
393
 
360
394
  ## API/消息契约要求
395
+
361
396
  {明确接口路径、方法、请求/响应字段,或 MQ topic、消息格式}
362
397
 
363
398
  示例:
364
399
  HTTP 接口:
400
+
365
401
  - POST /api/business-records
366
402
  - Request: BusinessRecordCreateDTO
367
403
  - Response: Result<Long>(返回创建后的 id)
368
404
 
369
405
  MQ 消息:
406
+
370
407
  - Topic: domain.business.event
371
408
  - Body: BusinessEvent
372
409
  - recordId: String
@@ -375,9 +412,11 @@ MQ 消息:
375
412
  - timestamp: Long
376
413
 
377
414
  ## 幂等、事务、失败处理要求
415
+
378
416
  {明确每个关键操作的幂等策略、事务边界、失败处理}
379
417
 
380
418
  示例:
419
+
381
420
  - 创建业务记录:
382
421
  - 幂等:基于 userId + businessId + 日期做幂等,重复请求返回已有记录号
383
422
  - 事务:@Transactional(rollbackFor = Exception.class)
@@ -389,6 +428,7 @@ MQ 消息:
389
428
  - 失败:业务异常时抛异常让 MQ 重试,达到最大重试次数后进死信队列
390
429
 
391
430
  ## 测试要求
431
+
392
432
  {明确本批需要验证的用例,引用 tests.md}
393
433
 
394
434
  - 用例 1:{描述}(tests.md #{章节})
@@ -397,6 +437,7 @@ MQ 消息:
397
437
  每个用例必须执行:接口调用 → 数据库验证 → 日志检查
398
438
 
399
439
  ## 验收命令
440
+
400
441
  {列出本批验收时需要执行的命令}
401
442
 
402
443
  ```bash
@@ -471,6 +512,7 @@ grep ERROR {log-path} || echo "无 ERROR"
471
512
  - 如果发现需要修改"禁止修改的范围"内的文件才能完成本批目标,**停止**,上报 Leader,不允许越界修改
472
513
  - 如果发现 tests.md 中的断言在实际环境中不成立,**停止**,列出差异,上报 Leader
473
514
  - 如果编译或启动失败且 15 分钟内无法解决,**停止**,上报 Leader
515
+
474
516
  ```
475
517
 
476
518
  ---
@@ -480,25 +522,31 @@ grep ERROR {log-path} || echo "无 ERROR"
480
522
  当 prompt 涉及跨仓库交互时,必须在"业务背景"或"API/消息契约要求"中增加:
481
523
 
482
524
  ```
525
+
483
526
  ## 跨仓库交互契约
484
527
 
485
528
  ### 本仓库角色
529
+
486
530
  {生产者/消费者/契约层/业务归口}
487
531
 
488
532
  ### 上游依赖(本仓库消费)
489
- | 来源仓库 | 接口/消息 | 契约详情 | 状态 |
490
- |----------|-----------|----------|------|
491
- | {repo} | {path/topic} | {字段定义} | 已由 P{n} 提供 |
533
+
534
+ | 来源仓库 | 接口/消息 | 契约详情 | 状态 |
535
+ | -------- | ------------ | ---------- | -------------- |
536
+ | {repo} | {path/topic} | {字段定义} | 已由 P{n} 提供 |
492
537
 
493
538
  ### 下游契约(本仓库提供)
494
- | 目标仓库 | 接口/消息 | 契约详情 | 状态 |
495
- |----------|-----------|----------|------|
496
- | {repo} | {path/topic} | {字段定义} | 本批交付 |
539
+
540
+ | 目标仓库 | 接口/消息 | 契约详情 | 状态 |
541
+ | -------- | ------------ | ---------- | -------- |
542
+ | {repo} | {path/topic} | {字段定义} | 本批交付 |
497
543
 
498
544
  ### 禁止越界
545
+
499
546
  - 本仓库不处理 {其他仓库的职责}
500
547
  - 本仓库不直接操作 {其他仓库的数据库}
501
- ```
548
+
549
+ ````
502
550
 
503
551
  ---
504
552
 
@@ -533,4 +581,4 @@ grep ERROR {log-path} || echo "无 ERROR"
533
581
 
534
582
  ## 评审清单
535
583
  - [reviewer-checklist.md](reviewer-checklist.md)
536
- ```
584
+ ````