6aspec 2.0.0-dev.9 → 3.0.0-dev.1
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/.6aspec/rules/biz/code.md +122 -28
- package/.6aspec/rules/biz/code_implementation_sop.md +77 -0
- package/.6aspec/rules/brown/brown_analyze_sop.md +289 -0
- package/.6aspec/rules/brown/brown_archive_sop.md +43 -78
- package/.6aspec/rules/brown/brown_constitution.md +11 -0
- package/.6aspec/rules/brown/brown_continue_sop.md +6 -13
- package/.6aspec/rules/brown/brown_design_sop.md +210 -95
- package/.6aspec/rules/brown/brown_explore_sop.md +314 -0
- package/.6aspec/rules/brown/brown_ff_sop.md +27 -64
- package/.6aspec/rules/brown/brown_impact_sop.md +101 -45
- package/.6aspec/rules/brown/brown_implement_sop.md +88 -58
- package/.6aspec/rules/brown/brown_list_sop.md +12 -12
- package/.6aspec/rules/brown/brown_new_sop.md +56 -77
- package/.6aspec/rules/brown/brown_proposal_sop.md +243 -76
- package/.6aspec/rules/brown/brown_quick_sop.md +5 -5
- package/.6aspec/rules/brown/brown_review_sop.md +4 -4
- package/.6aspec/rules/brown/brown_rollback_sop.md +27 -45
- package/.6aspec/rules/brown/brown_specs_sop.md +364 -120
- package/.6aspec/rules/brown/brown_status_sop.md +16 -32
- package/.6aspec/rules/brown/brown_tasks_sop.md +205 -87
- package/.6aspec/rules/brown/brown_understand_sop.md +97 -23
- package/.6aspec/rules/brown/brown_update_sop.md +283 -0
- package/.6aspec/rules/brown/brown_verify_sop.md +71 -309
- package/.6aspec/rules/brown/subagents/implementer.md +68 -0
- package/.6aspec/rules/brown/subagents/spec-compliance-reviewer.md +65 -0
- package/.6aspec/rules/green/{6A_archive_sop.md → green_archive_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_clarify_sop.md → green_clarify_sop.md} +1 -1
- package/.6aspec/rules/green/{6A_code_implementation_sop.md → green_code_implementation_sop.md} +18 -3
- package/.6aspec/rules/green/{6A_continue_sop.md → green_continue_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_new_sop.md → green_new_sop.md} +90 -11
- package/.6aspec/rules/green/green_status_schema.md +4 -4
- package/.6aspec/rules/green/{6A_status_sop.md → green_status_sop.md} +3 -3
- package/.6aspec/rules/green/{6A_tasks_sop.md → green_tasks_sop.md} +1 -1
- package/.claude/agents/implementer.md +6 -0
- package/.claude/agents/spec-compliance-reviewer.md +6 -0
- package/.claude/commands/6aspec/brown/analyze.md +11 -0
- package/.claude/commands/6aspec/brown/archive.md +11 -11
- package/.claude/commands/6aspec/brown/continue.md +11 -11
- package/.claude/commands/6aspec/brown/design.md +11 -11
- package/.claude/commands/6aspec/brown/explore.md +11 -0
- package/.claude/commands/6aspec/brown/ff.md +11 -11
- package/.claude/commands/6aspec/brown/impact.md +11 -11
- package/.claude/commands/6aspec/brown/implement.md +11 -11
- package/.claude/commands/6aspec/brown/list.md +11 -11
- package/.claude/commands/6aspec/brown/new.md +11 -11
- package/.claude/commands/6aspec/brown/proposal.md +11 -11
- package/.claude/commands/6aspec/brown/quick.md +11 -11
- package/.claude/commands/6aspec/brown/review.md +11 -11
- package/.claude/commands/6aspec/brown/status.md +11 -11
- package/.claude/commands/6aspec/brown/tasks.md +11 -11
- package/.claude/commands/6aspec/brown/understand.md +11 -11
- package/.claude/commands/6aspec/brown/update.md +11 -0
- package/.claude/commands/6aspec/brown/verify.md +11 -11
- package/.claude/commands/6aspec/code.md +10 -0
- package/.claude/commands/6aspec/green/archive.md +1 -1
- package/.claude/commands/6aspec/green/clarify.md +2 -2
- package/.claude/commands/6aspec/green/continue.md +1 -1
- package/.claude/commands/6aspec/green/design.md +2 -2
- package/.claude/commands/6aspec/green/{execute-task.md → implement.md} +1 -1
- package/.claude/commands/6aspec/green/import-model-table.md +1 -1
- package/.claude/commands/6aspec/green/init.md +2 -2
- package/.claude/commands/6aspec/green/model.md +2 -2
- package/.claude/commands/6aspec/green/new.md +2 -2
- package/.claude/commands/6aspec/green/rollback.md +1 -1
- package/.claude/commands/6aspec/green/status.md +1 -1
- package/.claude/commands/6aspec/green/tasks.md +2 -2
- package/.claude/commands/6aspec/green/visual-logic.md +2 -2
- package/.claude/settings.local.json +21 -1
- package/.cursor/commands/6aspec/brown/explore.md +11 -0
- package/.cursor/commands/6aspec/brown/update.md +9 -0
- package/.cursor/commands/6aspec/code.md +8 -0
- package/.cursor/commands/6aspec/green/archive.md +1 -1
- package/.cursor/commands/6aspec/green/clarify.md +2 -2
- package/.cursor/commands/6aspec/green/continue.md +1 -1
- package/.cursor/commands/6aspec/green/design.md +2 -2
- package/.cursor/commands/6aspec/green/{execute-task.md → implement.md} +1 -1
- package/.cursor/commands/6aspec/green/import-model-table.md +1 -1
- package/.cursor/commands/6aspec/green/init.md +2 -2
- package/.cursor/commands/6aspec/green/model.md +2 -2
- package/.cursor/commands/6aspec/green/new.md +2 -2
- package/.cursor/commands/6aspec/green/rollback.md +1 -1
- package/.cursor/commands/6aspec/green/status.md +1 -1
- package/.cursor/commands/6aspec/green/tasks.md +2 -2
- package/.cursor/commands/6aspec/green/visual-logic.md +2 -2
- package/README.md +1 -1
- package/lib/cli.js +2 -2
- package/lib/installer.js +19 -2
- package/package.json +1 -1
- /package/.6aspec/rules/green/{6A_constitution.md → green_constitution.md} +0 -0
- /package/.6aspec/rules/green/{6A_design_sop.md → green_design_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_import_model_table_sop.md → green_import_model_table_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_init_event_list_sop.md → green_init_event_list_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_init_map_sop.md → green_init_map_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_model_sop.md → green_model_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_rollback_sop.md → green_rollback_sop.md} +0 -0
- /package/.6aspec/rules/green/{6A_visual_logic_sop.md → green_visual_logic_sop.md} +0 -0
|
@@ -1,39 +1,133 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
3
|
-
globs:
|
|
4
|
-
alwaysApply:
|
|
2
|
+
description: 代码编写规范与质量标准
|
|
3
|
+
globs: "**/*.{java,js,ts,py,go,cpp,c,cs}"
|
|
4
|
+
alwaysApply: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
7
|
+
# 代码编写规范
|
|
8
|
+
|
|
9
|
+
## 🚨 红线规则(绝对禁止)
|
|
10
|
+
|
|
11
|
+
### 性能红线
|
|
12
|
+
- **禁止在循环中进行数据库查询**:避免N+1问题,使用批量查询或预加载
|
|
13
|
+
- **禁止在循环中进行网络请求**:使用批量API或异步处理
|
|
14
|
+
- **禁止在循环中进行文件I/O操作**:批量读写或使用缓存
|
|
15
|
+
- **禁止在热点代码路径中使用反射**:影响性能,考虑编译时生成或缓存
|
|
16
|
+
- **禁止在生产环境使用System.out.println调试**:使用日志框架
|
|
17
|
+
|
|
18
|
+
### 安全红线
|
|
19
|
+
- **禁止直接拼接SQL语句**:必须使用参数化查询防止SQL注入
|
|
20
|
+
- **禁止在日志中输出敏感信息**:密码、token、身份证号等
|
|
21
|
+
- **禁止硬编码密钥和敏感配置**:使用配置文件或环境变量
|
|
22
|
+
- **禁止信任用户输入**:所有外部输入必须验证和过滤
|
|
23
|
+
- **禁止使用弱加密算法**:MD5、SHA1等已不安全
|
|
24
|
+
|
|
25
|
+
### 架构红线
|
|
26
|
+
- **禁止循环依赖**:包、模块、类之间不能相互依赖
|
|
27
|
+
- **禁止跨层直接调用**:Controller不能直接调用DAO
|
|
28
|
+
- **禁止在实体类中包含业务逻辑**:保持实体类的纯净性
|
|
29
|
+
- **禁止在静态代码块中进行复杂操作**:可能导致类加载问题
|
|
30
|
+
- **禁止捕获异常后不处理**:空catch块是代码异味
|
|
31
|
+
|
|
32
|
+
## 🔒 安全规范
|
|
33
|
+
|
|
34
|
+
### 输入验证
|
|
35
|
+
- **参数校验**:所有API入参必须校验
|
|
36
|
+
- **数据过滤**:防止XSS、SQL注入等攻击
|
|
37
|
+
- **权限检查**:每个操作都要验证用户权限
|
|
38
|
+
- **敏感数据处理**:加密存储,脱敏展示
|
|
39
|
+
|
|
40
|
+
### 日志安全
|
|
41
|
+
- **敏感信息脱敏**:密码、token等不能明文记录
|
|
42
|
+
- **操作审计**:关键操作必须记录审计日志
|
|
43
|
+
- **错误信息**:不暴露系统内部信息给用户
|
|
44
|
+
|
|
45
|
+
## ⚡ 性能优化
|
|
46
|
+
|
|
47
|
+
### 数据库优化
|
|
48
|
+
- **索引使用**:查询字段必须有合适的索引
|
|
49
|
+
- **批量操作**:使用批量插入/更新减少数据库交互
|
|
50
|
+
- **连接池管理**:合理配置数据库连接池
|
|
51
|
+
- **查询优化**:避免全表扫描,使用分页查询
|
|
13
52
|
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
53
|
+
### 缓存策略
|
|
54
|
+
- **多级缓存**:本地缓存 + 分布式缓存
|
|
55
|
+
- **缓存更新**:及时更新或失效过期数据
|
|
56
|
+
- **缓存穿透**:防止恶意查询不存在的数据
|
|
57
|
+
- **缓存雪崩**:设置随机过期时间
|
|
19
58
|
|
|
59
|
+
### 算法复杂度
|
|
60
|
+
- **时间复杂度**:优先选择O(1)、O(log n)算法
|
|
61
|
+
- **空间复杂度**:避免不必要的内存占用
|
|
62
|
+
- **数据结构选择**:根据使用场景选择合适的数据结构
|
|
20
63
|
|
|
21
|
-
## 编码规范
|
|
22
|
-
- **命名规范**:类名、方法名、变量名清晰表达意图
|
|
23
|
-
- **代码结构**:合理的包结构和类层次
|
|
24
|
-
- **注释规范**:必要的类和方法注释
|
|
25
|
-
- **代码复用**:避免重复代码,提取公共方法
|
|
64
|
+
## 📝 编码规范
|
|
26
65
|
|
|
66
|
+
### 命名规范
|
|
67
|
+
- **类名**:大驼峰命名,名词,表达清晰意图
|
|
68
|
+
- **方法名**:小驼峰命名,动词开头,表达具体行为
|
|
69
|
+
- **变量名**:小驼峰命名,避免缩写,见名知意
|
|
70
|
+
- **常量名**:全大写,下划线分隔
|
|
71
|
+
- **包名**:全小写,层次清晰
|
|
27
72
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
73
|
+
### 代码结构
|
|
74
|
+
- **包结构**:按功能模块划分,层次清晰
|
|
75
|
+
- **类大小**:单个类不超过500行
|
|
76
|
+
- **方法长度**:单个方法不超过50行
|
|
77
|
+
- **参数个数**:方法参数不超过5个
|
|
78
|
+
- **嵌套层次**:代码嵌套不超过4层
|
|
33
79
|
|
|
80
|
+
### 注释规范
|
|
81
|
+
- **类注释**:说明类的职责和使用场景
|
|
82
|
+
- **方法注释**:说明参数、返回值、异常
|
|
83
|
+
- **复杂逻辑注释**:解释为什么这样做
|
|
84
|
+
- **TODO注释**:标记待完成的工作
|
|
34
85
|
|
|
35
|
-
##
|
|
36
|
-
|
|
86
|
+
## 🏗️ 设计原则
|
|
87
|
+
|
|
88
|
+
### SOLID原则
|
|
89
|
+
- **单一职责原则**:一个类只负责一个功能领域
|
|
90
|
+
- **开闭原则**:对扩展开放,对修改关闭
|
|
91
|
+
- **里氏替换原则**:子类可以替换父类
|
|
92
|
+
- **接口隔离原则**:使用多个专门的接口
|
|
93
|
+
- **依赖倒置原则**:依赖抽象而不是具体实现
|
|
94
|
+
|
|
95
|
+
### 其他原则
|
|
96
|
+
- **DRY原则**:不重复自己,提取公共代码
|
|
97
|
+
- **KISS原则**:保持简单,避免过度设计
|
|
98
|
+
- **YAGNI原则**:你不会需要它,不做过度设计
|
|
99
|
+
- **最少知识原则**:对象应该对其他对象有最少的了解
|
|
100
|
+
|
|
101
|
+
## 🔄 重构策略
|
|
102
|
+
|
|
103
|
+
### 重构时机
|
|
104
|
+
- **新功能开发时**:同步重构相关代码
|
|
105
|
+
- **Bug修复时**:改善代码结构
|
|
106
|
+
- **代码审查时**:发现问题及时重构
|
|
107
|
+
- **性能优化时**:重构性能瓶颈代码
|
|
108
|
+
|
|
109
|
+
### 重构原则
|
|
110
|
+
- **小步快跑**:每次重构范围要小
|
|
37
111
|
- **测试保护**:重构前确保测试覆盖
|
|
38
|
-
-
|
|
39
|
-
-
|
|
112
|
+
- **持续集成**:频繁提交,及时发现问题
|
|
113
|
+
- **技术债务管理**:定期评估和偿还
|
|
114
|
+
|
|
115
|
+
## ✅ 检查清单
|
|
116
|
+
|
|
117
|
+
### 代码提交前检查
|
|
118
|
+
- [ ] 是否违反红线规则
|
|
119
|
+
- [ ] 是否有安全漏洞
|
|
120
|
+
- [ ] 是否有性能问题
|
|
121
|
+
- [ ] 命名是否规范
|
|
122
|
+
- [ ] 是否有充分的测试
|
|
123
|
+
- [ ] 是否有必要的注释
|
|
124
|
+
- [ ] 是否符合团队编码风格
|
|
125
|
+
|
|
126
|
+
### 代码审查检查
|
|
127
|
+
- [ ] 业务逻辑是否正确
|
|
128
|
+
- [ ] 异常处理是否完善
|
|
129
|
+
- [ ] 边界条件是否考虑
|
|
130
|
+
- [ ] 是否有代码重复
|
|
131
|
+
- [ ] 是否符合设计原则
|
|
132
|
+
- [ ] 是否有技术债务
|
|
133
|
+
- [ ] 文档是否需要更新
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 代码实现标准操作流程 (Code Implementation SOP)
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# code: 代码实现标准操作流程
|
|
7
|
+
|
|
8
|
+
你现在是 **Senior Developer**,负责根据用户描述的需求编写高质量、可运行的业务代码。
|
|
9
|
+
|
|
10
|
+
## 0. 需求类型智能判断
|
|
11
|
+
|
|
12
|
+
分析用户描述中的关键词和场景,判断需求类型:
|
|
13
|
+
|
|
14
|
+
**判断规则**:
|
|
15
|
+
- **API接口**:接口、API、Controller、HTTP、REST、查询、新增、修改、删除、DataApi
|
|
16
|
+
- **后台任务**:BackgroundJob、异步任务、批量操作、批量绑定、批量解绑、批量更新
|
|
17
|
+
- **定时任务**:定时任务、Job、定时执行、Cron、每天、每小时、凌晨、定时清理
|
|
18
|
+
- **事件订阅**:EventSubscriber、监听事件、订阅、事件处理、事件触发
|
|
19
|
+
- **其他类型**:不属于以上四种类型(工具类、辅助方法、配置类、实体类等)
|
|
20
|
+
|
|
21
|
+
**判断输出**:
|
|
22
|
+
```
|
|
23
|
+
📋 需求类型:<类型名称>
|
|
24
|
+
📚 加载规范:<规范文件列表>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 1. 上下文加载
|
|
28
|
+
|
|
29
|
+
### 1.1 必须加载(所有类型)
|
|
30
|
+
1. `.6aspec/rules/biz/code.md` - 代码编写规范
|
|
31
|
+
2. `.6aspec/rules/biz/project-structure.md` - 项目结构规范
|
|
32
|
+
|
|
33
|
+
### 1.2 根据类型加载
|
|
34
|
+
- **API接口** → `.6aspec/rules/biz/api_rule.md`
|
|
35
|
+
- **后台任务** → `.6aspec/rules/biz/background_job_rule.md`
|
|
36
|
+
- **定时任务** → `.6aspec/rules/biz/scheduled_job_rule.md`
|
|
37
|
+
- **事件订阅** → `.6aspec/rules/biz/event_subscriber_rule.md`
|
|
38
|
+
- **其他类型** → 只加载基础规范
|
|
39
|
+
|
|
40
|
+
## 2. 代码实现
|
|
41
|
+
|
|
42
|
+
严格按照加载的规范文件进行实现,遵循规范中定义的:
|
|
43
|
+
- 包结构和命名规范
|
|
44
|
+
- 类结构和注解使用
|
|
45
|
+
- 实现顺序和关键要点
|
|
46
|
+
- 异常处理和日志记录
|
|
47
|
+
|
|
48
|
+
## 3. 质量检查
|
|
49
|
+
|
|
50
|
+
### 3.1 代码规范检查
|
|
51
|
+
使用 `.6aspec/rules/biz/code.md` 中的"检查清单"进行自我验证。
|
|
52
|
+
|
|
53
|
+
**红线规则(零容忍)**:
|
|
54
|
+
- [ ] 循环中的数据库查询、网络请求、文件I/O操作
|
|
55
|
+
- [ ] SQL字符串拼接、敏感信息硬编码、弱加密算法使用
|
|
56
|
+
- [ ] 循环依赖、跨层直接调用、空catch块
|
|
57
|
+
|
|
58
|
+
### 3.2 类型特定检查
|
|
59
|
+
使用对应规范文件中的"检查清单"章节进行验证。
|
|
60
|
+
|
|
61
|
+
## 4. 完成输出
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
✅ 代码实现完成
|
|
65
|
+
|
|
66
|
+
**需求类型**:<类型名称>
|
|
67
|
+
**实现文件**:<文件列表>
|
|
68
|
+
**关键点**:<关键实现点>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 5. 异常处理
|
|
72
|
+
|
|
73
|
+
遇到以下情况时停止并报告:
|
|
74
|
+
- 需求不清晰,无法判断类型或实现方式
|
|
75
|
+
- 缺少必要信息(参数定义、消息类型等)
|
|
76
|
+
- 技术方案冲突,与现有架构或规范冲突
|
|
77
|
+
- 依赖缺失,需要的 Service、Repository 等不存在
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# 棕地需求 - Analyze SOP
|
|
2
|
+
|
|
3
|
+
需求澄清与影响面分析(合并原 Understand + Impact 两个阶段)
|
|
4
|
+
|
|
5
|
+
**适用流程**:标准级、完整级
|
|
6
|
+
|
|
7
|
+
**流程定位**:标准级/完整级的第一阶段,通过对话式澄清理解需求,确认后分析影响面,产出单一 analysis.md 文档
|
|
8
|
+
|
|
9
|
+
**输入**:`/6aspec:brown:analyze` 后可选需求名称。如果省略,从上下文推断或提示选择。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 步骤
|
|
14
|
+
|
|
15
|
+
### 1. 选择需求并检查状态
|
|
16
|
+
|
|
17
|
+
如果提供了名称,使用它。否则:
|
|
18
|
+
- 从对话上下文推断
|
|
19
|
+
- 如果模糊,读取 `6aspecdoc/brown/` 目录,让用户选择
|
|
20
|
+
|
|
21
|
+
读取 `6aspecdoc/brown/<name>/status.json`:
|
|
22
|
+
- 确认流程深度为 "standard" 或 "complete"
|
|
23
|
+
- 如果是 "lightweight",提示轻量级流程不需要 analyze 阶段,应直接运行 `/6aspec:brown:proposal`
|
|
24
|
+
- 确认 `phases.analyze` 为 "pending"
|
|
25
|
+
- 如果 analyze 已完成,提示使用 `/6aspec:brown:continue` 进入下一阶段
|
|
26
|
+
|
|
27
|
+
### 2. 读取需求描述
|
|
28
|
+
|
|
29
|
+
读取 `6aspecdoc/brown/<name>/artifacts/original-requirement.md` 获取原始需求内容。
|
|
30
|
+
|
|
31
|
+
### 3. 探索代码,分析现有系统
|
|
32
|
+
|
|
33
|
+
根据需求关键词搜索相关代码,自主判断需要分析哪些维度。重点是找到与需求直接相关的代码结构,不需要对整个系统做全面文档化。
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
rg "<关键词>" --type java -g "*Entity.java"
|
|
37
|
+
rg "<关键词>" --type java -g "*Service.java"
|
|
38
|
+
rg "<关键词>" --type java -C 3
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**可选分析维度**(根据需求涉及范围自主选取,不强制每项都有):
|
|
42
|
+
- 相关实体类与数据库表关系(ERD)
|
|
43
|
+
- 相关服务类与核心业务流程(flowchart)
|
|
44
|
+
- 相关 API 接口 / 定时任务 / 消息队列
|
|
45
|
+
- 隐性假设、状态机约束、权限控制逻辑
|
|
46
|
+
- 其他与需求直接相关的系统结构
|
|
47
|
+
|
|
48
|
+
如果找不到相关代码,询问用户提供更多关键词。
|
|
49
|
+
|
|
50
|
+
### 4. 创建 analysis.md(含现有系统分析内容)
|
|
51
|
+
|
|
52
|
+
分析完成后,立即创建文档并填充第1节"现有系统分析"。第2-5节保留占位符,后续边澄清边填充。
|
|
53
|
+
|
|
54
|
+
创建 `6aspecdoc/brown/<name>/artifacts/analysis.md`:
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
# 需求澄清与影响面分析
|
|
58
|
+
|
|
59
|
+
> **需求**: <name>
|
|
60
|
+
> **流程**: <flowDepth>
|
|
61
|
+
> **阶段**: Analyze
|
|
62
|
+
> **状态**: 🔄 澄清中
|
|
63
|
+
> **创建时间**: <timestamp>
|
|
64
|
+
|
|
65
|
+
## 1. 现有系统分析
|
|
66
|
+
|
|
67
|
+
> 根据需求涉及范围,聚焦与需求直接相关的部分,自由组织内容。
|
|
68
|
+
|
|
69
|
+
<AI 根据实际情况自主选择分析维度并组织内容,不强制固定结构。
|
|
70
|
+
可包含:实体类与表关系(ERD)、服务类与业务流程(flowchart)、
|
|
71
|
+
API/定时任务/消息队列、隐性假设与约束等,按需取舍。>
|
|
72
|
+
|
|
73
|
+
## 2. 需求澄清
|
|
74
|
+
|
|
75
|
+
### 待澄清问题
|
|
76
|
+
|
|
77
|
+
<按维度分组的问题清单,初始为空,逐步填入>
|
|
78
|
+
|
|
79
|
+
### 澄清结果
|
|
80
|
+
|
|
81
|
+
<用户回答后逐步填入>
|
|
82
|
+
|
|
83
|
+
## 3. 影响面分析
|
|
84
|
+
|
|
85
|
+
> 待需求澄清完成后填写
|
|
86
|
+
|
|
87
|
+
**模块范围**:<单模块 / 跨模块,列出涉及的模块/服务>
|
|
88
|
+
|
|
89
|
+
**数据层变更**:
|
|
90
|
+
- schema 变更:<是/否,说明>
|
|
91
|
+
- 数据迁移:<是/否,说明>
|
|
92
|
+
- 索引:<是/否,说明>
|
|
93
|
+
|
|
94
|
+
**间接影响范围**:
|
|
95
|
+
- 缓存:<有影响 / 无影响>
|
|
96
|
+
- 权限:<有影响 / 无影响>
|
|
97
|
+
- 事件订阅:<有影响 / 无影响>
|
|
98
|
+
- 数据同步:<有影响 / 无影响>
|
|
99
|
+
- Excel 导入导出:<有影响 / 无影响>
|
|
100
|
+
- 前端页面:<有影响 / 无影响>
|
|
101
|
+
|
|
102
|
+
## 4. 非功能需求评估
|
|
103
|
+
|
|
104
|
+
> 待需求澄清完成后填写
|
|
105
|
+
|
|
106
|
+
- 性能:<是否影响核心查询路径>
|
|
107
|
+
- 安全:<是否涉及敏感数据或权限变更>
|
|
108
|
+
- 可用性:<是否需要灰度发布或特殊回滚方案>
|
|
109
|
+
|
|
110
|
+
## 5. 风险清单
|
|
111
|
+
|
|
112
|
+
> 待需求澄清完成后填写
|
|
113
|
+
|
|
114
|
+
1. <风险描述(聚焦业务和数据风险)>
|
|
115
|
+
2. <风险描述>
|
|
116
|
+
3. <风险描述(可选)>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 5. 生成待澄清问题清单
|
|
120
|
+
|
|
121
|
+
基于需求描述和已找到的代码,识别所有需要明确的问题,**按维度分组**展示:
|
|
122
|
+
|
|
123
|
+
**展示格式**:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
## 待澄清问题(共 N 个维度,M 个问题)
|
|
127
|
+
|
|
128
|
+
### 维度一:[维度名称](X 个问题)
|
|
129
|
+
1. [问题]
|
|
130
|
+
2. [问题]
|
|
131
|
+
|
|
132
|
+
### 维度二:[维度名称](X 个问题)
|
|
133
|
+
3. [问题]
|
|
134
|
+
4. [问题]
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
你可以一次性回答所有问题,也可以逐个回答。对于暂时不确定的问题可以先跳过,我会在需要时追问。
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**同时将问题清单写入 analysis.md 的"待澄清问题"章节**。
|
|
141
|
+
|
|
142
|
+
**问题维度参考**(根据需求实际情况选取):
|
|
143
|
+
- 字段设计(名称、类型、必填、默认值、值域)
|
|
144
|
+
- 业务规则(状态流转、修改限制、删除规则)
|
|
145
|
+
- 数据关系(关联表、历史数据处理)
|
|
146
|
+
- 集成影响(事件、缓存、权限、第三方)
|
|
147
|
+
- UI/UX(展示字段、交互逻辑)
|
|
148
|
+
|
|
149
|
+
### 6. 对话式澄清循环
|
|
150
|
+
|
|
151
|
+
**用户回答后的处理规则**:
|
|
152
|
+
|
|
153
|
+
a. **立即将答案写入 analysis.md** 的"澄清结果"章节(按维度整理,不是原文堆砌)
|
|
154
|
+
|
|
155
|
+
b. **判断是否需要追问或指出风险**:
|
|
156
|
+
- 答案有歧义或不完整 → 追问
|
|
157
|
+
- 答案暗示存在未覆盖的**业务边界场景** → 用反问引导用户思考(例:"你说只有待执行状态可以删除,那执行中途系统重启,状态会是什么?")
|
|
158
|
+
- 多个答案之间存在**业务规则矛盾** → 直接指出矛盾,请用户确认(例:"你说入账失败会回滚,但又说状态只有待执行和执行成功两种——回滚后状态回到待执行吗?")
|
|
159
|
+
- 答案清晰完整且无风险 → 继续
|
|
160
|
+
- **不涉及技术实现层面的问题**(事务、通知机制、回滚策略等),那是 design 阶段的职责
|
|
161
|
+
|
|
162
|
+
c. **追问格式**(简洁,不重复已知信息):
|
|
163
|
+
> "关于[具体问题],你提到了[用户答案],我想进一步确认:[追问内容]"
|
|
164
|
+
|
|
165
|
+
d. **禁止**:不得在用户未回答完所有问题时自动进入影响面分析
|
|
166
|
+
|
|
167
|
+
e. **持续更新文档**:每次用户回复后,更新 analysis.md,确保文档与对话同步
|
|
168
|
+
|
|
169
|
+
### 7. 判断澄清完成
|
|
170
|
+
|
|
171
|
+
当以下条件满足时,AI 主动询问用户是否完成澄清:
|
|
172
|
+
- 所有维度的问题均已有答案
|
|
173
|
+
- 没有新的追问需要提出
|
|
174
|
+
|
|
175
|
+
询问方式:
|
|
176
|
+
> "所有问题已经澄清完毕,我没有需要继续追问的了。需求澄清是否已经完成?确认后我将进行影响面分析。"
|
|
177
|
+
|
|
178
|
+
**如果用户说还有补充**:继续记录,回到步骤 6。
|
|
179
|
+
|
|
180
|
+
**如果用户确认完成**:进入步骤 8。
|
|
181
|
+
|
|
182
|
+
### 8. 粗粒度影响面评估
|
|
183
|
+
|
|
184
|
+
基于澄清结果,评估需求的"重量",为需求范围决策提供依据。**不做函数级映射**,那是 design 阶段的职责。
|
|
185
|
+
|
|
186
|
+
填充到 analysis.md 第3节:
|
|
187
|
+
|
|
188
|
+
**模块范围**:涉及哪些模块/服务,是单模块改动还是跨模块?
|
|
189
|
+
|
|
190
|
+
**数据层变更**(这是最关键的判断):
|
|
191
|
+
- schema 变更:是否需要加字段/加表/改类型?
|
|
192
|
+
- 数据迁移:是否涉及存量数据处理?
|
|
193
|
+
- 索引:是否需要新增索引?
|
|
194
|
+
|
|
195
|
+
**间接影响范围**(只判断有/无,不展开细节):
|
|
196
|
+
- 缓存、权限、事件订阅、数据同步、Excel 导入导出、前端页面
|
|
197
|
+
|
|
198
|
+
**非功能需求**(粗粒度评估):
|
|
199
|
+
- 性能:是否影响核心查询路径?
|
|
200
|
+
- 安全:是否涉及敏感数据或权限变更?
|
|
201
|
+
- 可用性:是否需要灰度发布或特殊回滚方案?
|
|
202
|
+
|
|
203
|
+
**关键风险**(2-3 条,聚焦业务和数据风险,不涉及技术实现细节)
|
|
204
|
+
|
|
205
|
+
### 9. 完成文档并更新状态
|
|
206
|
+
|
|
207
|
+
更新 analysis.md 头部状态为 `✅ 已完成`,补充完成时间。
|
|
208
|
+
|
|
209
|
+
更新 `6aspecdoc/brown/<name>/status.json`:
|
|
210
|
+
|
|
211
|
+
**标准级流程**:
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"status": "proposal_pending",
|
|
215
|
+
"flowDepth": "standard",
|
|
216
|
+
"phases": {
|
|
217
|
+
"analyze": "done",
|
|
218
|
+
"proposal": "pending",
|
|
219
|
+
"specs": "blocked",
|
|
220
|
+
"design": "blocked",
|
|
221
|
+
"tasks": "blocked",
|
|
222
|
+
"implement": "blocked"
|
|
223
|
+
},
|
|
224
|
+
"artifacts": ["analysis.md"]
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
同时更新 `6aspecdoc/brown/<name>/requirement.md`:
|
|
229
|
+
- 更新"状态"字段为 `📋 Proposal 待开始`
|
|
230
|
+
- 更新"最后修改"时间戳
|
|
231
|
+
- 更新"当前阶段"为 `Analyze - 需求澄清与影响面分析(已完成)`
|
|
232
|
+
- 更新"下一步操作"为 `运行 /6aspec:brown:proposal 继续下一阶段`
|
|
233
|
+
- 在"进度概览"中标记 Analyze 阶段为已完成 `[x]`
|
|
234
|
+
|
|
235
|
+
### 10. 停止并等待用户指令
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 输出
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
## Analyze 完成:<name>
|
|
243
|
+
|
|
244
|
+
**流程**: 标准级/完整级
|
|
245
|
+
**进度**: 1/N 阶段完成
|
|
246
|
+
|
|
247
|
+
### 澄清结果摘要
|
|
248
|
+
- 澄清维度:<数量>
|
|
249
|
+
- 澄清问题:<数量>
|
|
250
|
+
|
|
251
|
+
### 影响范围
|
|
252
|
+
- 模块范围:<单模块 / 跨模块>
|
|
253
|
+
- schema 变更:<是/否>
|
|
254
|
+
- 数据迁移:<是/否>
|
|
255
|
+
- 间接影响:<列出有影响的项>
|
|
256
|
+
|
|
257
|
+
### 关键风险
|
|
258
|
+
<列出 2-3 个关键风险>
|
|
259
|
+
|
|
260
|
+
### 文档位置
|
|
261
|
+
6aspecdoc/brown/<name>/artifacts/analysis.md
|
|
262
|
+
|
|
263
|
+
### 下一步
|
|
264
|
+
- 运行 `/6aspec:brown:proposal` → 进入需求提案阶段
|
|
265
|
+
- 运行 `/6aspec:brown:continue` → 自动进入下一阶段
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 用户补充信息时的处理
|
|
271
|
+
|
|
272
|
+
当用户在 analyze 完成后补充遗漏的影响点或修正分析(未使用阶段命令):
|
|
273
|
+
1. 将补充内容整合到 analysis.md 对应章节
|
|
274
|
+
2. 展示变更摘要
|
|
275
|
+
3. 再次提示可继续补充或用命令推进
|
|
276
|
+
4. **禁止**:不得自动进入下一阶段
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 防护措施
|
|
281
|
+
|
|
282
|
+
- 只适用于标准级和完整级流程
|
|
283
|
+
- 代码范围确认前不得生成问题清单
|
|
284
|
+
- 问题必须按维度分组,不得使用扁平编号列表
|
|
285
|
+
- 每次用户回复后必须更新 analysis.md,保持文档与对话同步
|
|
286
|
+
- 追问时一次最多提出 1-2 个问题,不得连续追问超过 3 轮同一问题
|
|
287
|
+
- 必须用户明确确认澄清完成后才能进入影响面分析
|
|
288
|
+
- 影响面分析只做粗粒度评估(模块范围、schema变更、间接影响有/无),不做函数级映射
|
|
289
|
+
- 间接影响的每一项必须明确写出结论(有影响/无影响),不得留空
|