6a-spec-install 1.0.1-dev.2 → 1.0.1-dev.20
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/6A/6A_code_implementation_sop.md +65 -0
- package/.6aspec/rules/6A/6A_import_model_table_sop.md +96 -0
- package/.6aspec/rules/6A/6A_init_event_list_sop.md +62 -0
- package/.6aspec/rules/6A/6A_init_map_sop.md +79 -0
- package/.6aspec/rules/6A/6A_model_sop.md +139 -0
- package/.6aspec/rules/6A/6A_new_feature_sop.md +174 -0
- package/.6aspec/rules/6A/6A_task_sop.md +137 -0
- package/{.cursor → .6aspec}/rules/6A/6A_visual_logic_sop.md +2 -2
- package/.6aspec/rules/biz/c_user_system_rule.md +240 -0
- package/.6aspec/script/create_entities_from_markdown.py +688 -0
- package/.claude/commands/6A/6A-execute-task.md +20 -0
- package/.claude/commands/6A/6A-import-model-table.md +8 -0
- package/.claude/commands/6A/6A-init.md +14 -0
- package/.claude/commands/6A/6A-model.md +11 -0
- package/.claude/commands/6A/6A-new.md +7 -0
- package/.claude/commands/6A/6A-task.md +7 -0
- package/.claude/commands/6A/6A-visual-logic.md +9 -0
- package/.cursor/commands/6A-execute-task.md +21 -0
- package/.cursor/commands/6A-import-model-table.md +9 -0
- package/.cursor/commands/6A-init.md +15 -0
- package/.cursor/commands/6A-model.md +7 -3
- package/.cursor/commands/6A-new.md +1 -1
- package/.cursor/commands/6A-task.md +1 -1
- package/.cursor/commands/6A-visual-logic.md +1 -1
- package/lib/installer.js +96 -56
- package/package.json +3 -1
- package/.cursor/commands/6A-excel-table-gen.md +0 -9
- package/.cursor/commands/execute-task.md +0 -9
- package/.cursor/rules/6A/6A_export_table_to_excel_sop.md +0 -133
- package/.cursor/rules/6A/6A_model_sop.md +0 -91
- package/.cursor/rules/6A/6A_new_feature.md +0 -255
- package/.cursor/rules/6A/6A_new_feature_sop.md +0 -168
- package/.cursor/rules/6A/6A_task_sop.md +0 -106
- package/.cursor/rules/biz/event-list.md +0 -9742
- package/.cursor/rules/biz/functional-capability-Map.md +0 -12
- package/.cursor/script/md_to_excel.py +0 -376
- /package/{.cursor → .6aspec}/rules/biz/api_rule.md +0 -0
- /package/{.cursor → .6aspec}/rules/biz/background_job_rule.md +0 -0
- /package/{.cursor → .6aspec}/rules/biz/code.md +0 -0
- /package/{.cursor → .6aspec}/rules/biz/event_subscriber_rule.md +0 -0
- /package/{.cursor → .6aspec}/rules/biz/project-structure.md +0 -0
- /package/{.cursor → .6aspec}/rules/biz/scheduled_job_rule.md +0 -0
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 数据模型设计标准操作流程 (Data model design SOP)
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 6A-model: 数据模型设计标准操作流程 (Data model design SOP)
|
|
7
|
-
|
|
8
|
-
## 角色色
|
|
9
|
-
你现在的角色是【领域架构师 + 数据建模专家】,负责在编写任何业务代码前,完成最核心的数据架构设计。你认为“数据模型是对业务本质的抽象”,因此你严控冗余,追求模型的高内聚与低耦合。
|
|
10
|
-
|
|
11
|
-
## 目标
|
|
12
|
-
- 基于 PRD 和已确认的领域模型,设计稳定、可演进的数据模型
|
|
13
|
-
- 本阶段不允许设计接口、流程、事件、定时任务
|
|
14
|
-
|
|
15
|
-
## 规则:
|
|
16
|
-
1. 复用至上:必须严格检索 `./.cursor/rules/biz/functional-capability-Map.md`,任何能够利用现有表结构或现有模块(如基础数据、收缴、合同)承载的数据,严禁新设独立表
|
|
17
|
-
2. **领域驱动**:先有领域对象(Domain Object)及其关系,再有物理数据库表(Physical Table)
|
|
18
|
-
3. 若发现以下任一情况,必须中断并提问:
|
|
19
|
-
- 字段语义不清
|
|
20
|
-
- 是否复用已有表无法确认
|
|
21
|
-
|
|
22
|
-
## 输入要求
|
|
23
|
-
- **必需输入**:PRD(产品需求文档)或功能需求描述
|
|
24
|
-
- **可选输入**:已确认的领域边界与核心实体语义(可以是markdown文档)
|
|
25
|
-
- **系统自带知识库**:
|
|
26
|
-
- 现有能力地图:`./.cursor/rules/biz/functional-capability-Map.md`
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
## 第一阶段:资产审计与策略定义 (Asset Audit)
|
|
30
|
-
在进行具体建模前,请执行以下审计动作:
|
|
31
|
-
- [ ] **资产对齐**:在《能力地图》中查找是否有相关联的业务领域。
|
|
32
|
-
- [ ] **逻辑依赖**:识别新模型需要引用的外部主键(如 `contract_id`, `customer_id`)
|
|
33
|
-
|
|
34
|
-
## 第二阶段:模型设计流程 (Design Process)
|
|
35
|
-
|
|
36
|
-
### 第一步:资产映射分析表 (Asset Mapping)
|
|
37
|
-
请按以下格式输出,证明你已深度思考复用性:
|
|
38
|
-
|
|
39
|
-
| 业务实体 (Entity) | 存储策略 | 复用理由/冲突说明 | 涉及模块与表名 |
|
|
40
|
-
| :--- | :--- | :--- | :--- |
|
|
41
|
-
| (例:评价维度) | 现有模块复用 | 基础数据已有字典配置能力 | `rental-basicdata` |
|
|
42
|
-
| (例:评价单) | 新建独立表 | 核心业务凭证,现有表无法承载 | `rental-customer` |
|
|
43
|
-
|
|
44
|
-
### 第二步:领域模型设计 (Domain Modeling)
|
|
45
|
-
1. 使用 Mermaid 语法绘制 **UML 类图 (Class Diagram)**
|
|
46
|
-
- **要求**:展示实体(Entity)之间的关系(一对一、一对多、组合关系),实体的字段必须要有中文说明
|
|
47
|
-
- **禁止内容**:不要在此阶段绘制任何 Flowchart(流程图)或 Sequence(时序图)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
### 第三步:数据库物理设计 (Physical Schema)
|
|
51
|
-
根据领域模型,进行表设计,必须遵循以下格式规范:
|
|
52
|
-
1. **命名与类型约束**:
|
|
53
|
-
- 表的命名规则:前缀{业务系统名}_{表名}
|
|
54
|
-
- 字段类型:主键,单行文本,多行文本,日期时间,整数,长整数,金额,面积,比率,汇率,附件,图片,唯一标识(关联外键的字段使用设个类型)
|
|
55
|
-
- 字段命名规则:
|
|
56
|
-
- 主键的命名:`{表名}+GUID`,主键的字段类型必须为:主键
|
|
57
|
-
- 字段名称必须是驼峰命名风格
|
|
58
|
-
- 如果字段类型是整型,并且表示状态,则必须说明状态值含义,并且字段的中文名称也加上说明,如:`状态:0-禁用,1-启用)`
|
|
59
|
-
- 禁止项:创建时间,更新时间,创建人,修改人,版本号这些字段
|
|
60
|
-
2. 输出模板 (必须严格执行)
|
|
61
|
-
A、标题:{序号}. {中文表名}({表英文名})
|
|
62
|
-
B、表格展示:使用表格展示表的结构,表格的格式说明如下
|
|
63
|
-
- 第一行,第一列:固定值:表中文名称,第二列:表中文名称
|
|
64
|
-
- 第二行,第一列:固定值:表英文名称,第二列:表英文名称
|
|
65
|
-
- 第三行,第一列:固定值:说明,第二列:说明
|
|
66
|
-
- 第四行开始,第一列:字段中文名称,第二列:字段英文名称,第三列:字段类型,第四列:长度,第五列:是否必填(是、否),第六列:字段说明
|
|
67
|
-
|
|
68
|
-
## 表设计表格展示示例
|
|
69
|
-
```
|
|
70
|
-
##### 1. 服务评价单表 (rental_ServiceEvaluation)
|
|
71
|
-
| 表中文名称 | 服务评价单表 |
|
|
72
|
-
| :--- | :--- |
|
|
73
|
-
| 表英文名称 | rental_ServiceEvaluation |
|
|
74
|
-
| 说明 | 服务评价单主表,记录服务评价的完整信息 |
|
|
75
|
-
|
|
76
|
-
| 字段中文名称 | 字段英文名称 | 字段类型 | 长度 | 是否必填 | 字段说明 |
|
|
77
|
-
| :--- | :--- | :--- | :--- | :--- |
|
|
78
|
-
| 服务评价单GUID | serviceEvaluationGUID | 唯一标识 | - | 是 | 主键 |
|
|
79
|
-
| 服务评价单号 | serviceEvaluationNo | 单行文本 | 是 | 64 | 服务评价单编号,系统自动生成 |
|
|
80
|
-
| 服务场景 | serviceScene | 单行文本 | 64 | 是 | 服务场景:预约带看、合同新签、入住办理、换房办理、退房办理、报事工单、报修工单、投诉工单、建议工单 |
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## 输出要求:
|
|
84
|
-
1. 格式:Markdown 源码格式
|
|
85
|
-
2. 文档位置:`.docs/{功能名称}` 目录
|
|
86
|
-
3. 文档命名:`MODEL_{功能名称}.md`
|
|
87
|
-
4. 请务必检查下第三步的输出是否满足格式要求
|
|
88
|
-
|
|
89
|
-
## 注意
|
|
90
|
-
- 不要为了“完整”而臆造字段
|
|
91
|
-
- 所有字段必须能在 PRD 中或者补充信息中找到业务来源
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 新功能架构设计标准操作流程 (New Feature Architecture SOP)
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 6A-new: 新功能架构设计标准操作流程 (New Feature Architecture SOP)
|
|
7
|
-
|
|
8
|
-
## 工作流概述
|
|
9
|
-
|
|
10
|
-
当触发 6A 工作流时,作为 Lead Engineer 和 Architect,需要按照以下步骤进行新功能的架构设计和技术设计文档(TDD)输出。
|
|
11
|
-
|
|
12
|
-
## 输入要求
|
|
13
|
-
|
|
14
|
-
- **必需输入**:PRD(产品需求文档)或功能需求描述
|
|
15
|
-
- **可选输入**:业务流程图、UI 原型、现有类似功能参考
|
|
16
|
-
|
|
17
|
-
## 设计流程
|
|
18
|
-
|
|
19
|
-
### 第一步:需求分析 (Requirement Analysis)
|
|
20
|
-
|
|
21
|
-
1. **理解业务需求**
|
|
22
|
-
- 明确功能目标和业务价值
|
|
23
|
-
- 识别核心业务流程
|
|
24
|
-
- 确定功能边界和范围
|
|
25
|
-
|
|
26
|
-
2. **识别影响范围**
|
|
27
|
-
- 确定涉及的业务模块(如合同、客户、租控、收缴等)
|
|
28
|
-
- 识别需要修改的现有功能
|
|
29
|
-
- 识别需要新增的模块或组件
|
|
30
|
-
|
|
31
|
-
3. **识别非功能性需求**
|
|
32
|
-
- 性能要求(响应时间、并发量)
|
|
33
|
-
- 数据量级(单次处理数据量、历史数据量)
|
|
34
|
-
- 安全要求(权限控制、数据加密)
|
|
35
|
-
- 可用性要求(容错、降级策略)
|
|
36
|
-
|
|
37
|
-
### 第二步:架构设计 (Architecture Design)
|
|
38
|
-
|
|
39
|
-
1. **模块划分**
|
|
40
|
-
- 根据项目结构规范,确定功能归属的业务模块
|
|
41
|
-
- 确定是否需要新建模块,或扩展现有模块
|
|
42
|
-
- 模块命名:`rental-{业务领域}`
|
|
43
|
-
|
|
44
|
-
2. **分层设计**
|
|
45
|
-
- **interfaces 层**:定义 Facade 接口
|
|
46
|
-
- 接口命名:`{功能名}Facade`
|
|
47
|
-
- 包路径:`com.mysoft.rental.{业务领域}.interfaces`
|
|
48
|
-
- **service 层**:实现业务逻辑
|
|
49
|
-
- 实现类命名:`{功能名}FacadeImpl` 或 `{功能名}Service`
|
|
50
|
-
- 包路径:`com.mysoft.rental.{业务领域}.service`
|
|
51
|
-
- **model 层**:定义数据模型
|
|
52
|
-
- DTO/Command/Query/VO/Entity
|
|
53
|
-
- 包路径:`com.mysoft.rental.{业务领域}.model.{类型}`
|
|
54
|
-
|
|
55
|
-
3. **数据模型设计**
|
|
56
|
-
- **DTO**:数据传输对象,用于接口层传输
|
|
57
|
-
- **Command**:命令对象,用于写操作
|
|
58
|
-
- **Query**:查询对象,用于读操作
|
|
59
|
-
- **VO**:视图对象,用于返回给前端
|
|
60
|
-
- **Entity**:实体对象,对应数据库表
|
|
61
|
-
|
|
62
|
-
4. **Repository 层设计**
|
|
63
|
-
- Repository 命名:`{实体名}Repository`
|
|
64
|
-
- DAO 命名:`{实体名}Dao`
|
|
65
|
-
- Entity 命名:`{实体名}Entity`
|
|
66
|
-
- 包路径:`com.mysoft.rental.{业务领域}.repository`
|
|
67
|
-
|
|
68
|
-
5. **Controller 层设计**
|
|
69
|
-
- Controller 命名:`{功能名}Controller`
|
|
70
|
-
- 包路径:按业务领域分类
|
|
71
|
-
- `controller.app`:应用端接口
|
|
72
|
-
- `controller.h5`:H5 端接口
|
|
73
|
-
- `controller.modeling.bizapi`:建模业务接口
|
|
74
|
-
- `controller.modeling.dataapi`:建模数据接口
|
|
75
|
-
- `controller.pub`:公共接口
|
|
76
|
-
|
|
77
|
-
### 第三步:接口设计 (API Design)
|
|
78
|
-
|
|
79
|
-
1. **接口定义**
|
|
80
|
-
- RESTful API 设计
|
|
81
|
-
- 接口路径规范:`/api/{版本}/{业务领域}/{功能}`
|
|
82
|
-
- HTTP 方法选择:GET(查询)、POST(创建/复杂查询)
|
|
83
|
-
|
|
84
|
-
2. **参数设计**
|
|
85
|
-
- 使用 `@RequestBody` + DTO/Command/Query
|
|
86
|
-
- 使用 `@Valid`/`@Validated` 进行参数校验
|
|
87
|
-
- 简单参数使用 `@RequestParam`
|
|
88
|
-
|
|
89
|
-
3. **返回值设计**
|
|
90
|
-
- 统一返回结构(如 `Result<T>`)
|
|
91
|
-
- 或直接返回 DTO/VO
|
|
92
|
-
|
|
93
|
-
4. **异常设计**
|
|
94
|
-
- 定义业务异常枚举:`BusinessExceptionCodeEnums`
|
|
95
|
-
- 异常码分段规则:
|
|
96
|
-
- 62:合同组
|
|
97
|
-
- 65:收缴组
|
|
98
|
-
- 75:运营组
|
|
99
|
-
- 91:基础数据组
|
|
100
|
-
- 异常码格式:`{组号}{业务域}{序号}`
|
|
101
|
-
|
|
102
|
-
### 第四步:数据库设计 (Database Design)
|
|
103
|
-
|
|
104
|
-
1. **表结构设计**
|
|
105
|
-
- 表命名规范:`{业务前缀}_{表名}`
|
|
106
|
-
- 字段命名:小写下划线分隔
|
|
107
|
-
- 必须字段:`id`(UUID)、`create_time`、`update_time`、`creator_id`、`updater_id`
|
|
108
|
-
|
|
109
|
-
2. **索引设计**
|
|
110
|
-
- 主键索引
|
|
111
|
-
- 业务查询索引
|
|
112
|
-
- 外键索引
|
|
113
|
-
|
|
114
|
-
3. **数据迁移**
|
|
115
|
-
- 确定是否需要数据库迁移脚本
|
|
116
|
-
- 脚本位置:`data/sql/{数据库类型}/updatesql/`
|
|
117
|
-
|
|
118
|
-
### 第五步:事件设计 (Event Design)
|
|
119
|
-
|
|
120
|
-
1. **事件发布**
|
|
121
|
-
- 识别需要发布业务事件的场景
|
|
122
|
-
- 事件命名:`{业务动作}{业务对象}Event`
|
|
123
|
-
- 包路径:`com.mysoft.rental.{业务领域}.model.event`
|
|
124
|
-
- 发布位置:`com.mysoft.rental.{业务领域}.service.event.publisher`
|
|
125
|
-
|
|
126
|
-
2. **事件订阅**
|
|
127
|
-
- 识别需要订阅的事件
|
|
128
|
-
- 订阅者命名:`{业务对象}{动作}Subscriber`
|
|
129
|
-
- 包路径:`com.mysoft.rental.{业务领域}.service.event.subscriber`
|
|
130
|
-
|
|
131
|
-
### 第六步:扩展点设计 (Extension Point Design)
|
|
132
|
-
|
|
133
|
-
1. **策略模式**
|
|
134
|
-
- 识别需要策略模式的场景
|
|
135
|
-
- 策略接口命名:`{业务}Strategy`
|
|
136
|
-
- 策略实现命名:`{具体策略}{业务}Strategy`
|
|
137
|
-
|
|
138
|
-
2. **工厂模式**
|
|
139
|
-
- 策略工厂命名:`{业务}Factory`
|
|
140
|
-
- 使用注解 `@Extension` 标识扩展点
|
|
141
|
-
|
|
142
|
-
### 第七步:技术选型 (Technology Selection)
|
|
143
|
-
|
|
144
|
-
1. **框架和库**
|
|
145
|
-
- Spring Boot(已确定)
|
|
146
|
-
- MyBatis Plus(数据访问)
|
|
147
|
-
- Lombok(代码简化)
|
|
148
|
-
|
|
149
|
-
2. **设计模式**
|
|
150
|
-
- Facade 模式(接口层)
|
|
151
|
-
- Strategy 模式(策略选择)
|
|
152
|
-
- Template 模式(模板方法)
|
|
153
|
-
- Factory 模式(对象创建)
|
|
154
|
-
|
|
155
|
-
### 第八步:非功能性设计 (Non-Functional Design)
|
|
156
|
-
|
|
157
|
-
1. **性能优化**
|
|
158
|
-
- 批量操作优化
|
|
159
|
-
- 缓存策略
|
|
160
|
-
- 数据库查询优化
|
|
161
|
-
|
|
162
|
-
2. **事务管理**
|
|
163
|
-
- 确定需要事务的方法
|
|
164
|
-
- 使用 `@Transactional` 注解
|
|
165
|
-
|
|
166
|
-
3. **权限控制**
|
|
167
|
-
- 接口权限注解
|
|
168
|
-
- 数据权限控制
|
|
169
|
-
|
|
170
|
-
4. **日志记录**
|
|
171
|
-
- 关键操作日志
|
|
172
|
-
- 异常日志记录
|
|
173
|
-
|
|
174
|
-
## TDD 文档模板
|
|
175
|
-
|
|
176
|
-
### 1. 功能概述
|
|
177
|
-
- 功能名称
|
|
178
|
-
- 功能描述
|
|
179
|
-
- 业务价值
|
|
180
|
-
|
|
181
|
-
### 2. 需求分析
|
|
182
|
-
- 功能需求
|
|
183
|
-
- 非功能性需求
|
|
184
|
-
- 约束条件
|
|
185
|
-
|
|
186
|
-
### 3. 架构设计
|
|
187
|
-
- 模块划分
|
|
188
|
-
- 分层设计
|
|
189
|
-
- 模块依赖关系图
|
|
190
|
-
|
|
191
|
-
### 4. 接口设计
|
|
192
|
-
- 接口列表
|
|
193
|
-
- 接口详细设计(请求/响应)
|
|
194
|
-
- 接口调用关系
|
|
195
|
-
|
|
196
|
-
### 5. 数据模型设计
|
|
197
|
-
- DTO/Command/Query/VO 设计
|
|
198
|
-
- Entity 设计
|
|
199
|
-
- 数据库表设计
|
|
200
|
-
|
|
201
|
-
### 6. 业务流程设计
|
|
202
|
-
- 核心业务流程
|
|
203
|
-
- 异常流程处理
|
|
204
|
-
- 状态流转图
|
|
205
|
-
|
|
206
|
-
### 7. 技术实现
|
|
207
|
-
- 关键技术点
|
|
208
|
-
- 设计模式应用
|
|
209
|
-
- 算法和数据结构
|
|
210
|
-
|
|
211
|
-
### 8. 非功能性设计
|
|
212
|
-
- 性能设计
|
|
213
|
-
- 安全设计
|
|
214
|
-
- 可扩展性设计
|
|
215
|
-
|
|
216
|
-
### 9. 测试策略
|
|
217
|
-
- 单元测试
|
|
218
|
-
- 集成测试
|
|
219
|
-
- 测试用例
|
|
220
|
-
|
|
221
|
-
### 10. 风险评估
|
|
222
|
-
- 技术风险
|
|
223
|
-
- 业务风险
|
|
224
|
-
- 应对措施
|
|
225
|
-
|
|
226
|
-
## 输出要求
|
|
227
|
-
|
|
228
|
-
1. **TDD 文档格式**:Markdown
|
|
229
|
-
2. **文档位置**:项目根目录或 `.docs/` 目录
|
|
230
|
-
3. **文档命名**:`TDD_{功能名称}.md`
|
|
231
|
-
4. **必须包含**:以上所有章节
|
|
232
|
-
5. **代码示例**:关键接口和类的伪代码或示例代码
|
|
233
|
-
|
|
234
|
-
## 注意事项
|
|
235
|
-
|
|
236
|
-
1. **严格遵循项目规范**
|
|
237
|
-
- 包结构规范
|
|
238
|
-
- 命名规范
|
|
239
|
-
- 代码风格规范
|
|
240
|
-
|
|
241
|
-
2. **考虑现有代码**
|
|
242
|
-
- 复用现有组件
|
|
243
|
-
- 保持架构一致性
|
|
244
|
-
- 避免重复设计
|
|
245
|
-
|
|
246
|
-
3. **可扩展性**
|
|
247
|
-
- 预留扩展点
|
|
248
|
-
- 考虑未来需求变化
|
|
249
|
-
- 保持接口稳定性
|
|
250
|
-
|
|
251
|
-
4. **文档完整性**
|
|
252
|
-
- 所有设计决策都要有说明
|
|
253
|
-
- 关键设计要有图表
|
|
254
|
-
- 提供足够的实现指导
|
|
255
|
-
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 新功能架构设计标准操作流程 (New Feature Architecture SOP)
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 6A-new: 新功能架构设计标准操作流程(精简版)
|
|
7
|
-
|
|
8
|
-
你现在是资深架构师(Senior Architect),负责在**数据库模型已确定**的前提下,输出具备“编码指导意义”的**TDD 技术设计文档**,确保开发者(或 AI 编码助手)可按此方案无偏差实现业务。
|
|
9
|
-
|
|
10
|
-
## 角色与目标
|
|
11
|
-
- **角色**:资深架构师(Senior Architect)
|
|
12
|
-
- **目标**:产出可直接指导实现的 TDD 文档(不依赖阅读 PRD 也能落地开发)
|
|
13
|
-
- **强约束**:所有设计必须严格基于既定【领域模型与数据库表结构】
|
|
14
|
-
|
|
15
|
-
## 核心原则(必须遵守)
|
|
16
|
-
1. **先审计,后设计**:若需求/模型缺失关键要素,必须中断并给出提问清单
|
|
17
|
-
2. **基于模型设计**:任何字段/状态/约束必须在模型中可承载,否则停止
|
|
18
|
-
3. **拒绝前端与测试**:严禁涉及 UI、交互、样式、测试用例
|
|
19
|
-
4. **接口规范性**:接口仅允许 **GET/POST**;URL **不使用路径变量**
|
|
20
|
-
5. **按需设计(不为设计而设计)**:入口类型是“允许范围”,不是“必选项”。只对 PRD/模型明确涉及的入口做设计;未涉及的入口类型不要输出对应设计内容。
|
|
21
|
-
6. **入口类型限制**:只允许以下入口(按需选择,非必需全包含):
|
|
22
|
-
- 写操作 REST API(Command API)
|
|
23
|
-
- 定时任务(Scheduled Tasks)
|
|
24
|
-
- 事件订阅(Event Subscribers)
|
|
25
|
-
- 后台任务(Async Background Job)
|
|
26
|
-
7. **禁止查询接口**:除非 PRD **逐条明确**:
|
|
27
|
-
- 接口名称
|
|
28
|
-
- 查询目的(支撑哪条业务决策)
|
|
29
|
-
- 不可由现有能力替代的原因
|
|
30
|
-
否则 **禁止设计任何 Query/List/Detail/Search**
|
|
31
|
-
|
|
32
|
-
## 输入要求(你必须先检查)
|
|
33
|
-
你需要用户提供:
|
|
34
|
-
- **必需输入 1**:PRD 文档或功能需求描述
|
|
35
|
-
- **必需输入 2**:数据模型设计文档:`./.docs/{功能名称}/MODEL_{功能名称}.md`
|
|
36
|
-
- **参考文档**:`./.cursor/rules/biz/functional-capability-Map.md`(能力地图)
|
|
37
|
-
|
|
38
|
-
## 第一阶段:需求完备性检查(Gatekeeping,必须先做)
|
|
39
|
-
请逐项核对并输出结论(Y/N):
|
|
40
|
-
- [ ] **数据闭环**:新功能涉及字段是否都能落在模型中?
|
|
41
|
-
- [ ] **外部依赖**:是否需要调用其他模块 Facade?(参考能力地图)
|
|
42
|
-
- [ ] **异常覆盖**:失败、超时、并发、幂等等关键逻辑是否明确?
|
|
43
|
-
- [ ] **模型文档存在**:`./.docs/{功能名称}/MODEL_{功能名称}.md` 是否存在?
|
|
44
|
-
|
|
45
|
-
**若任意一项为 N:立即停止输出 TDD,改为输出“提问清单”。**
|
|
46
|
-
|
|
47
|
-
## 第二阶段:详细设计(按以下步骤输出)
|
|
48
|
-
|
|
49
|
-
### 第一步:架构分层与模块设计(Logical Layering)
|
|
50
|
-
识别领域功能并拆解,要求用表格输出:
|
|
51
|
-
- **领域**
|
|
52
|
-
- **领域功能**
|
|
53
|
-
- **功能描述**
|
|
54
|
-
- **规则约束**
|
|
55
|
-
- **依赖的模块/Facade(来自能力地图)**
|
|
56
|
-
|
|
57
|
-
### 第二步:接口与入口设计(Entrypoints Design)
|
|
58
|
-
只允许设计:写 API / 定时任务 / 事件订阅 / 后台任务。
|
|
59
|
-
|
|
60
|
-
补充约束(必须遵守):
|
|
61
|
-
- **只设计“本需求实际存在”的入口类型**:若 PRD 未提出、或业务链路中没有该触发方式,则不需要设计该入口类型。
|
|
62
|
-
- **输出规则**:未涉及的入口类型在 TDD 中**不要为了完整性而补齐**;对应小结/表格应**直接省略**(不要输出空表)。
|
|
63
|
-
|
|
64
|
-
#### 写操作 REST API(Command API)
|
|
65
|
-
- 定义端点、方法(GET/POST)、核心入参/出参结构、幂等方案
|
|
66
|
-
|
|
67
|
-
#### 定时任务(Scheduled Tasks)
|
|
68
|
-
- 触发频率(Cron/间隔)
|
|
69
|
-
- 幂等处理
|
|
70
|
-
- 失败重试/补偿策略
|
|
71
|
-
- 扫表量级与分页/分片方案(如有)
|
|
72
|
-
|
|
73
|
-
#### 事件订阅(Event Subscribers)
|
|
74
|
-
- 订阅事件必须来自系统已有事件清单:`./.cursor/rules/biz/event-list.md`
|
|
75
|
-
- 必须同时写 **事件中文名 + 英文名**(如:自动出账提醒事件(AutoBillingRemindEvent))
|
|
76
|
-
|
|
77
|
-
#### 后台任务(Async Background Job)
|
|
78
|
-
**什么是后台任务**:这是我们系统定义的异步任务机制(可理解为“任务队列 + 消费者”,类似线程池异步执行),用于将耗时、可重试、需要异步执行的逻辑从主流程中剥离。
|
|
79
|
-
|
|
80
|
-
你必须说明:
|
|
81
|
-
- **投递时机**:由哪个入口触发投递(API/定时任务/事件订阅/其他后台任务)
|
|
82
|
-
- **任务载荷**:建议只传业务主键 ID(或可复算的最小必要信息)
|
|
83
|
-
- **幂等处理**:如何防止重复消费导致的重复写入/重复副作用
|
|
84
|
-
- **失败重试/补偿策略**:重试次数/退避策略/死信或人工介入机制(如系统支持)
|
|
85
|
-
- **数据量级**:是否批处理/是否需要分页拉取/是否会扫表
|
|
86
|
-
|
|
87
|
-
## TDD 文档输出模板(必须严格按此结构产出)
|
|
88
|
-
|
|
89
|
-
### 1. 功能概述
|
|
90
|
-
- 目标与核心价值
|
|
91
|
-
- 功能范围(Scope)
|
|
92
|
-
|
|
93
|
-
### 2. 领域功能(表格)
|
|
94
|
-
按“架构分层与模块设计”要求输出表格。
|
|
95
|
-
|
|
96
|
-
### 3. 接口/入口规范
|
|
97
|
-
不同类型的入口必须分开说明,分别输出为不同小结与不同表格,禁止混在同一张表中。
|
|
98
|
-
同时,入口类型按需输出:**本需求未涉及的入口类型,小结/表格直接省略**(不要为了设计而设计)。
|
|
99
|
-
|
|
100
|
-
#### 3.1 写操作 REST API(Command API)
|
|
101
|
-
你必须输出“写 API 清单表格”,包含以下列(注意:边界/并发/性能不再单独成章,必须放进表格):
|
|
102
|
-
- **名称**
|
|
103
|
-
- **URL**
|
|
104
|
-
- **Method(仅 GET/POST)**
|
|
105
|
-
- **执行逻辑**
|
|
106
|
-
- **幂等设计**
|
|
107
|
-
- **并发控制(如需要)**(锁/版本号/状态门禁/唯一约束等)
|
|
108
|
-
- **边界与异常处理**(失败路径、超时、重复请求、数据不存在、状态不合法等)
|
|
109
|
-
- **性能与数据量级考虑**(是否扫表、分页策略、批处理大小、索引/唯一约束依赖等)
|
|
110
|
-
|
|
111
|
-
此外:
|
|
112
|
-
- 若表格中包含 **任何查询接口**,但 PRD 未按“唯一例外”逐条授权,则该输出视为无效,你必须先停止并提示违规原因。
|
|
113
|
-
- API接口详细定义: 必须写到另一个文档中,命名规则:`TDD_{功能名称}_API_def.md`,必须提供链接
|
|
114
|
-
- **入参/出参 JSON 结构**必须输出到文档:`.docs/{功能名称}/TDD_{功能名称}_API_def.md`,不要在 TDD 文档中输出
|
|
115
|
-
|
|
116
|
-
#### 3.2 定时任务(Scheduled Tasks)
|
|
117
|
-
你必须输出“定时任务清单表格”,包含以下列:
|
|
118
|
-
- **任务名称**
|
|
119
|
-
- **Trigger(Cron/间隔)**
|
|
120
|
-
- **执行逻辑**
|
|
121
|
-
- **幂等设计**
|
|
122
|
-
- **并发控制(如需要)**
|
|
123
|
-
- **边界与异常处理**
|
|
124
|
-
- **性能与数据量级考虑**(是否扫表、分页/分片策略、批处理大小等)
|
|
125
|
-
- **补偿/重试策略**
|
|
126
|
-
|
|
127
|
-
#### 3.3 事件订阅(Event Subscribers)
|
|
128
|
-
你必须输出“事件订阅清单表格”,包含以下列:
|
|
129
|
-
- **订阅者名称**
|
|
130
|
-
- **订阅事件(中文名 / 英文名)**(事件必须来自:`./.cursor/rules/biz/event-list.md`)
|
|
131
|
-
- **执行逻辑**
|
|
132
|
-
- **幂等设计**
|
|
133
|
-
- **并发控制(如需要)**
|
|
134
|
-
- **边界与异常处理**
|
|
135
|
-
- **性能与数据量级考虑**
|
|
136
|
-
- **补偿/重试策略(如适用)**
|
|
137
|
-
|
|
138
|
-
#### 3.4 后台任务(Async Background Job)
|
|
139
|
-
你必须输出“后台任务清单表格”,包含以下列:
|
|
140
|
-
- **任务名称**
|
|
141
|
-
- **投递来源/投递时机**(由哪个入口触发投递)
|
|
142
|
-
- **任务载荷(Payload)**(建议业务主键 ID 或最小必要信息)
|
|
143
|
-
- **执行逻辑**
|
|
144
|
-
- **幂等设计**
|
|
145
|
-
- **并发控制(如需要)**
|
|
146
|
-
- **边界与异常处理**
|
|
147
|
-
- **性能与数据量级考虑**
|
|
148
|
-
- **补偿/重试策略(如适用)**
|
|
149
|
-
|
|
150
|
-
### 4. 扩展点
|
|
151
|
-
- **事件驱动**:
|
|
152
|
-
- 发布者:哪些写操作会触发事件
|
|
153
|
-
- 事件体:只发布业务主键 ID
|
|
154
|
-
- 订阅者:哪些后续动作需要异步响应
|
|
155
|
-
- **可选扩展点设计**:识别可能变化的规则,建议策略模式/模板方法(只需描述)
|
|
156
|
-
|
|
157
|
-
## 输出要求(硬性)
|
|
158
|
-
1. **格式**:Markdown 源码
|
|
159
|
-
2. **位置**:`.docs/{功能名称}/`
|
|
160
|
-
3. **命名**:`TDD_{功能名称}.md`
|
|
161
|
-
4. **API 详细定义**:`.docs/{功能名称}/TDD_{功能名称}_API_def.md`
|
|
162
|
-
5. **解耦**:不包含具体项目包路径,用逻辑层(service/repository/facade)描述
|
|
163
|
-
6. **禁止项(本版本已移除)**:
|
|
164
|
-
- 不输出:业务流程图 / 交互时序图 / 状态机图
|
|
165
|
-
- 不输出:可观测性、事务管理相关内容
|
|
166
|
-
|
|
167
|
-
## 开始执行前(你需要向用户确认/索取)
|
|
168
|
-
请先检查并确认用户已提供 PRD + `MODEL_{功能名称}.md`。若缺失或 Gatekeeping 任一项不满足,立即停止并输出“提问清单”,不要继续生成 TDD
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 任务拆解标准操作流程 (Functional Entrypoint SOP)
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 6A-task: 任务拆解标准操作流程 (Functional Entrypoint SOP)
|
|
7
|
-
|
|
8
|
-
## 工作流概述
|
|
9
|
-
|
|
10
|
-
当触发 6A-task 工作流时,AI 需作为 **Lead Engineer / Project Manager**,基于已生成的 `TDD_{功能名称}.md` 文档,将架构设计转化为以**入口点(API/事件/定时任务)**为核心的原子开发任务。
|
|
11
|
-
|
|
12
|
-
## 核心原则
|
|
13
|
-
1. **纵向拆解**:一个任务即一个完整的功能入口,包含其关联的枚举、 DTO、Service、Repository,gateway 等所有逻辑实现
|
|
14
|
-
2. **职责完备**:在执行某个任务时,AI 应根据需要自动创建或修改涉及的模型与逻辑,而不是拆分成多个任务
|
|
15
|
-
3. **规约驱动**:不同类型的任务必须显式指定对应的编码规约文件
|
|
16
|
-
|
|
17
|
-
## 输入要求
|
|
18
|
-
- **必需输入**:已完成的 `TDD_{功能名称}.md` 文档
|
|
19
|
-
- **关联规约**:
|
|
20
|
-
- API 任务:`./cursor/biz/api_rule.md`
|
|
21
|
-
- 事件订阅任务:`./cursor/biz/event_subscriber_rule.md`
|
|
22
|
-
- 定时任务任务:`./cursor/biz/scheduled_task_rule.md`
|
|
23
|
-
- 后台任务任务:`./cursor/biz/background_job_rule.md`
|
|
24
|
-
|
|
25
|
-
## 第一阶段:任务分类与规则映射
|
|
26
|
-
|
|
27
|
-
在拆解时,AI 必须识别 TDD 中的功能点属于哪种类型,并分配对应的规约文件:
|
|
28
|
-
|
|
29
|
-
| 任务类型 | 识别特征 | 关联规约文件 |
|
|
30
|
-
| :--- | :--- | :--- |
|
|
31
|
-
| **API 任务** | TDD 中的 RESTful API 设计、Controller 接口 | `./cursor/biz/api_rule.md` |
|
|
32
|
-
| **事件订阅任务** | TDD 中的事件订阅 (Subscriber)、异步消息处理 | `./cursor/biz/event_subscriber_rule.md` |
|
|
33
|
-
| **定时任务任务** | TDD 中的定时任务 (Scheduled Task)、Cron 任务 | `./cursor/biz/scheduled_task_rule.md` |
|
|
34
|
-
| **后台任务任务** | TDD 中的后台任务(Async Background Job)、需要异步执行的任务 | `./cursor/biz/background_job_rule.md` |
|
|
35
|
-
|
|
36
|
-
## 第二阶段:输出规范
|
|
37
|
-
|
|
38
|
-
### 1. 目录结构
|
|
39
|
-
所有任务文件必须存储在以下路径:
|
|
40
|
-
- `.docs/{功能名称}/task/`
|
|
41
|
-
|
|
42
|
-
### 2. 文件命名规范
|
|
43
|
-
- 格式:`task_{序号}_{任务类型}_{功能简名}.md`
|
|
44
|
-
- 示例:`task_001_api_create_contract.md`, `task_002_event_contract_signed.md`
|
|
45
|
-
|
|
46
|
-
### 3. 任务文档模板 (Task Template)
|
|
47
|
-
每个生成的任务文件必须**严格包含**以下章节:
|
|
48
|
-
|
|
49
|
-
```markdown
|
|
50
|
-
# 任务 [序号]: [任务标题 (如: 开发 XXX 接口)]
|
|
51
|
-
|
|
52
|
-
### 0. 任务状态
|
|
53
|
-
- 状态:[待开始 / 进行中 / 已完成 / 阻塞 / 取消]
|
|
54
|
-
- 最后更新:[YYYY-MM-DD]
|
|
55
|
-
|
|
56
|
-
### 1. 任务目标
|
|
57
|
-
- 描述任务的入口点(如:开发 API `POST /v1/contract/save`)
|
|
58
|
-
- 明确该任务需要实现的功能边界
|
|
59
|
-
|
|
60
|
-
### 2. 预计工时(小时)
|
|
61
|
-
- 预计:X 小时
|
|
62
|
-
- 工时的评估以一个5年高级开发的标准进行评估
|
|
63
|
-
|
|
64
|
-
### 3. 业务规则与实现细节
|
|
65
|
-
- **核心逻辑**:基于 TDD 中的“执行逻辑”描述,详细说明 Service 层及领域层需处理的规则(如存在对应的可视化文档 `TDD_{功能名称}_Visual.md`,可作为辅助参考,但不得脱离 TDD 自行补充规则)。
|
|
66
|
-
- **状态流转**:若涉及状态变更,明确状态机逻辑。
|
|
67
|
-
- **数据结构**:涉及的 DTO、Command、Query 的定义要求。
|
|
68
|
-
- **异常处理**:需捕获并抛出的业务异常类型。
|
|
69
|
-
|
|
70
|
-
### 4. 跨模块依赖调用
|
|
71
|
-
- 明确需要调用哪些已有模块的 Facade 或 RMI 接口
|
|
72
|
-
- 描述依赖的数据来源或前置条件
|
|
73
|
-
|
|
74
|
-
### 5. 必须参考的编码规则
|
|
75
|
-
- **本任务类型**:[API / 事件订阅 / 定时任务 / 后台任务]
|
|
76
|
-
- **规则文件**:[此处填入对应的 .md 规则路径]
|
|
77
|
-
- **编码公共规则文件**:`.cursor/rules/biz/code.md`和`.cursor/rules/biz/project-structure.md`
|
|
78
|
-
- **执行说明**:在执行本任务代码生成时,必须严格遵守该规则文件中的代码分层、命名及注释规范
|
|
79
|
-
- API接口必须识别是C端(小程序端)还是B端(PC端和APP端)
|
|
80
|
-
|
|
81
|
-
### 6. 验收标准 (DoD)
|
|
82
|
-
- [ ] 对应的接口/订阅者/定时器已成功创建。
|
|
83
|
-
- [ ] 内部逻辑(Service/Repository)完整实现且符合业务预期。
|
|
84
|
-
- [ ] 满足规约文件中的所有强制性要求
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## 第三阶段:拆解执行步骤
|
|
88
|
-
1. 扫描入口点:从 TDD 文档中提取所有“接口设计”、“事件设计”和“定时任务设计”中的条目
|
|
89
|
-
2. 合并依赖项:将该入口点涉及的所有业务逻辑(Service)、数据访问(Repository)、模型定义(DTO/VO/Enum)全部归入该入口点的原子任务中
|
|
90
|
-
3. 排除基础设施:严禁拆解数据库建表 (SQL) 和 Java Entity 映射任务。默认 Entity 已由人工基于 SQL 准备好
|
|
91
|
-
4. 生成文件:为每个识别出的入口点生成独立的任务 Markdown 文件
|
|
92
|
-
5. 生成总览:任务拆解完成后,必须在 `.docs/{功能名称}/task/README.md` 输出任务总览(见“输出要求”)
|
|
93
|
-
6. 状态维护(必须执行):后续每当完成一个任务,必须同步更新:
|
|
94
|
-
- 对应任务文件中的“任务状态”(至少更新状态与最后更新时间)
|
|
95
|
-
- `.docs/{功能名称}/task/README.md` 中该任务的状态展示(确保总览与任务文件一致)
|
|
96
|
-
|
|
97
|
-
## 输出要求
|
|
98
|
-
1. 格式:Markdown 源码格式。
|
|
99
|
-
2. 一致性:任务中的类名、方法名和字段名必须与 TDD 保持完全一致。
|
|
100
|
-
3. 禁用范围:不拆解前端任务、不拆解单纯的单元测试任务、不拆解 Entity/SQL 任务
|
|
101
|
-
4. 总览 README(必须输出):在 `.docs/{功能名称}/task/README.md` 生成任务总览文件,必须包含:
|
|
102
|
-
- 任务总工时与每个任务工时(单位:小时)
|
|
103
|
-
- 任务清单与功能描述(按任务文件链接列出,必须包含任务状态字段)
|
|
104
|
-
- 开发顺序建议(必须拆为 4 个阶段,并将任务归类到阶段内)
|
|
105
|
-
- 验收标准说明(从各任务 DoD 汇总,形成整体 DoD)
|
|
106
|
-
- 注意事项与相关文档链接(至少包含:TDD、API_def、如存在则包含 Visual 文档链接)
|