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.
Files changed (42) hide show
  1. package/.6aspec/rules/6A/6A_code_implementation_sop.md +65 -0
  2. package/.6aspec/rules/6A/6A_import_model_table_sop.md +96 -0
  3. package/.6aspec/rules/6A/6A_init_event_list_sop.md +62 -0
  4. package/.6aspec/rules/6A/6A_init_map_sop.md +79 -0
  5. package/.6aspec/rules/6A/6A_model_sop.md +139 -0
  6. package/.6aspec/rules/6A/6A_new_feature_sop.md +174 -0
  7. package/.6aspec/rules/6A/6A_task_sop.md +137 -0
  8. package/{.cursor → .6aspec}/rules/6A/6A_visual_logic_sop.md +2 -2
  9. package/.6aspec/rules/biz/c_user_system_rule.md +240 -0
  10. package/.6aspec/script/create_entities_from_markdown.py +688 -0
  11. package/.claude/commands/6A/6A-execute-task.md +20 -0
  12. package/.claude/commands/6A/6A-import-model-table.md +8 -0
  13. package/.claude/commands/6A/6A-init.md +14 -0
  14. package/.claude/commands/6A/6A-model.md +11 -0
  15. package/.claude/commands/6A/6A-new.md +7 -0
  16. package/.claude/commands/6A/6A-task.md +7 -0
  17. package/.claude/commands/6A/6A-visual-logic.md +9 -0
  18. package/.cursor/commands/6A-execute-task.md +21 -0
  19. package/.cursor/commands/6A-import-model-table.md +9 -0
  20. package/.cursor/commands/6A-init.md +15 -0
  21. package/.cursor/commands/6A-model.md +7 -3
  22. package/.cursor/commands/6A-new.md +1 -1
  23. package/.cursor/commands/6A-task.md +1 -1
  24. package/.cursor/commands/6A-visual-logic.md +1 -1
  25. package/lib/installer.js +96 -56
  26. package/package.json +3 -1
  27. package/.cursor/commands/6A-excel-table-gen.md +0 -9
  28. package/.cursor/commands/execute-task.md +0 -9
  29. package/.cursor/rules/6A/6A_export_table_to_excel_sop.md +0 -133
  30. package/.cursor/rules/6A/6A_model_sop.md +0 -91
  31. package/.cursor/rules/6A/6A_new_feature.md +0 -255
  32. package/.cursor/rules/6A/6A_new_feature_sop.md +0 -168
  33. package/.cursor/rules/6A/6A_task_sop.md +0 -106
  34. package/.cursor/rules/biz/event-list.md +0 -9742
  35. package/.cursor/rules/biz/functional-capability-Map.md +0 -12
  36. package/.cursor/script/md_to_excel.py +0 -376
  37. /package/{.cursor → .6aspec}/rules/biz/api_rule.md +0 -0
  38. /package/{.cursor → .6aspec}/rules/biz/background_job_rule.md +0 -0
  39. /package/{.cursor → .6aspec}/rules/biz/code.md +0 -0
  40. /package/{.cursor → .6aspec}/rules/biz/event_subscriber_rule.md +0 -0
  41. /package/{.cursor → .6aspec}/rules/biz/project-structure.md +0 -0
  42. /package/{.cursor → .6aspec}/rules/biz/scheduled_job_rule.md +0 -0
@@ -0,0 +1,137 @@
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
+ ## 0. 执行协议 (Protocol) - 必须遵守
13
+
14
+ 你是一个**技术项目经理 (TPM)**。在执行任务拆解前,请严格遵守:
15
+
16
+ 1. **主动检索 (Active Retrieval)**:
17
+ * 当用户指定 `{功能名称}` 时,优先尝试读取 `.docs/{功能名称}/TDD_{功能名称}.md`。
18
+ * 如果找不到 TDD 文档,**立即停止**并报错,提示用户先完成 TDD 设计。
19
+
20
+ 2. **思维链门禁 (Chain of Thought Gatekeeping)**:
21
+ * 在输出任务列表前,**必须**先输出 `<thinking>` 块。
22
+ * **Check**: TDD 是否包含清晰的“接口列表”、“定时任务列表”、“事件订阅列表”?
23
+ * **Check**: 所有的入口点是否都有对应的“执行逻辑”描述?
24
+ * **Decision**: 若 TDD 内容严重缺失(如只有标题无逻辑),拒绝拆解,要求用户先完善 TDD。
25
+
26
+ 3. **依赖分析 (Dependency Analysis)**:
27
+ * 在 `<thinking>` 块中,分析任务间的依赖关系(例如:退款任务依赖于支付查询接口)。
28
+ * 基于依赖关系生成合理的**开发顺序**,而不是简单的线性排列。
29
+
30
+ ## 核心原则
31
+ 1. **纵向拆解**:一个任务即一个完整的功能入口,包含其关联的枚举、 DTO、Service、Repository,gateway 等所有逻辑实现
32
+ 2. **职责完备**:在执行某个任务时,AI 应根据需要自动创建或修改涉及的模型与逻辑,而不是拆分成多个任务
33
+ 3. **规约驱动**:不同类型的任务必须显式指定对应的编码规约文件
34
+
35
+ ## 输入要求
36
+ - **必需输入**:已完成的 `TDD_{功能名称}.md` 文档
37
+ - **关联规约**:
38
+ - API 任务:`./.6aspec/rules/biz/api_rule.md`
39
+ - 事件订阅任务:`./.6aspec/rules/biz/event_subscriber_rule.md`
40
+ - 定时任务任务:`./.6aspec/rules/biz/scheduled_job_rule.md`
41
+ - 后台任务任务:`./.6aspec/rules/biz/background_job_rule.md`
42
+
43
+ ## 第一阶段:任务分类与规则映射
44
+
45
+ 在拆解时,AI 必须识别 TDD 中的功能点属于哪种类型,并分配对应的规约文件:
46
+
47
+ | 任务类型 | 识别特征 | 关联规约文件 |
48
+ | :--- | :--- | :--- |
49
+ | **API 任务** | TDD 中的 RESTful API 设计、Controller 接口 | `./.6aspec/rules/biz/api_rule.md` |
50
+ | **事件订阅任务** | TDD 中的事件订阅 (Subscriber)、异步消息处理 | `./.6aspec/rules/biz/event_subscriber_rule.md` |
51
+ | **定时任务任务** | TDD 中的定时任务 (Scheduled Task)、Cron 任务 | `./.6aspec/rules/biz/scheduled_job_rule.md` |
52
+ | **后台任务任务** | TDD 中的后台任务(Async Background Job)、需要异步执行的任务 | `./.6aspec/rules/biz/background_job_rule.md` |
53
+
54
+ ## 第二阶段:输出规范
55
+
56
+ ### 1. 目录结构
57
+ 所有任务文件必须存储在以下路径:
58
+ - `.docs/{功能名称}/task/`
59
+
60
+ ### 2. 文件命名规范
61
+ - 格式:`task_{序号}_{任务类型}_{功能简名}.md`
62
+ - 示例:`task_001_api_create_contract.md`, `task_002_event_contract_signed.md`
63
+
64
+ ### 3. 任务文档模板 (Task Template)
65
+ 每个生成的任务文件必须**严格包含**以下章节:
66
+
67
+ ```markdown
68
+ # 任务 [序号]: [任务标题 (如: 开发 XXX 接口)]
69
+
70
+ ### 0. 任务状态
71
+ - 状态:[待开始 / 进行中 / 已完成 / 阻塞 / 取消]
72
+ - 最后更新:[YYYY-MM-DD]
73
+
74
+ ### 1. 任务目标
75
+ - 描述任务的入口点(如:开发 API `POST /v1/contract/save`)
76
+ - 明确该任务需要实现的功能边界
77
+
78
+ ### 2. 预计工时(小时)
79
+ - 预计:X 小时
80
+ - **评估基准 (Baseline)**:
81
+ - 简单 CRUD 接口:0.5 - 1h
82
+ - 带简单业务逻辑(校验/状态变更):1 - 2h
83
+ - 复杂逻辑(外部调用/并发锁/事务):3 - 5h
84
+ - 极高复杂度(核心金融链路):5h+
85
+
86
+ ### 2.5 任务依赖与前置条件 (Dependencies)
87
+ - **前置任务**:[Task-001 / 无] (必须先完成的任务)
88
+ - **依赖模块**:[UserFacade / PaymentService] (需调用的外部依赖)
89
+
90
+ ### 3. 业务规则与实现细节
91
+ - **核心逻辑**:基于 TDD 中的“执行逻辑”描述,详细说明 Service 层及领域层需处理的规则(如存在对应的可视化文档 `TDD_{功能名称}_Visual.md`,可作为辅助参考,但不得脱离 TDD 自行补充规则)。
92
+ - **核心技术决策**:回顾 TDD 中的关键决策(如幂等方案),再次确认落实。
93
+ - **数据结构与契约 (Binding)**:
94
+ - **API 契约**:必须严格遵循 `TDD_{功能名称}_API_def.md` 中的 Request/Response 结构。
95
+ - **Entity 引用**:实体类与 Mapper 均已预生成,请在代码实现阶段搜索并复用(如 `MyEntity.java`, `MyEntityMapper.java`或者`MyEntityDao.java`),**严禁重复创建**。
96
+ - **状态流转**:若涉及状态变更,明确状态机逻辑。
97
+ - **数据结构**:涉及的 DTO、Command、Query 的定义要求
98
+ - **异常处理**:需捕获并抛出的业务异常类型。
99
+
100
+ ### 4. 跨模块依赖调用
101
+ - 明确需要调用哪些已有模块的 Facade 或 RMI 接口
102
+ - 描述依赖的数据来源或前置条件
103
+
104
+ ### 5. 必须参考的编码规则
105
+ - **本任务类型**:[API / 事件订阅 / 定时任务 / 后台任务]
106
+ - **规则文件**:[此处填入对应的 .md 规则路径]
107
+ - **编码公共规则文件**:`.6aspec/rules/biz/code.md`和`.6aspec/rules/biz/project-structure.md`
108
+ - **执行说明**:在执行本任务代码生成时,必须严格遵守该规则文件中的代码分层、命名及注释规范
109
+ - **C/B 端标识**:API 接口必须识别是 C 端(小程序端)还是 B 端(PC 端和 APP 端)
110
+
111
+ ### 6. 验收标准 (DoD)
112
+ - [ ] 对应的接口/订阅者/定时器已成功创建。
113
+ - [ ] 内部逻辑(Service/Repository)完整实现且符合业务预期。
114
+ - [ ] 幂等性与并发控制已按 TDD 要求实现。
115
+ - [ ] 满足规约文件中的所有强制性要求。
116
+ ```
117
+
118
+ ## 第三阶段:拆解执行步骤
119
+ 1. **扫描入口点**:从 TDD 文档中提取所有“接口设计”、“事件设计”、“定时任务”和“后台任务”中的条目。
120
+ 2. **合并依赖项**:将该入口点涉及的所有业务逻辑(Service)、数据访问(Repository)、模型定义(DTO/VO/Enum)全部归入该入口点的原子任务中。
121
+ 3. **排序与编排**:基于`<thinking>`中的依赖分析,对任务进行逻辑排序(先基础后上层,先前置后依赖)。
122
+ 4. **生成文件**:为每个识别出的入口点生成独立的任务 Markdown 文件。
123
+ 5. **生成总览**:任务拆解完成后,必须在 `.docs/{功能名称}/task/README.md` 输出任务总览。
124
+ 6. **状态维护(必须执行)**:后续每当完成一个任务,必须同步更新:
125
+ - 对应任务文件中的“任务状态”。
126
+ - `.docs/{功能名称}/task/README.md` 中该任务的状态展示。
127
+
128
+ ## 输出要求
129
+ 1. **格式**:Markdown 源码格式。
130
+ 2. **一致性**:任务中的类名、方法名和字段名必须与 TDD 保持完全一致。
131
+ 3. **禁用范围**:不拆解前端任务、不拆解单纯的单元测试任务、不拆解 Entity/SQL 任务。
132
+ 4. **总览 README(必须输出)**:在 `.docs/{功能名称}/task/README.md` 生成任务总览文件,必须包含:
133
+ - **项目进度看板**:任务总工时、已完成工时、进度条。
134
+ - **任务清单**:按推荐执行顺序排列,包含状态图标 (✅/🔄/⏳)。
135
+ - **开发阶段划分**:建议将任务划分为 Phase 1 (Core), Phase 2 (Extensions) 等阶段。
136
+ - **验收标准汇总**:从各任务 DoD 汇总,形成整体 DoD。
137
+ - **注意事项与相关文档链接**: 至少包含:TDD、API_def、如存在则包含 Visual 文档链接
@@ -30,8 +30,8 @@ alwaysApply: false
30
30
  ### 可选输入(用于补齐 TDD 未显式写清的信息)
31
31
  - 数据模型文档:`.docs/{功能名称}/MODEL_{功能名称}.md`
32
32
  - PRD:`.prd/{功能名称}-prd.md`
33
- - 事件清单:`./.cursor/rules/biz/event-list.md`(当涉及事件订阅/发布时)
34
- - 能力地图:`./.cursor/rules/biz/functional-capability-Map.md`(当涉及跨模块 Facade 依赖时)
33
+ - 事件清单:`./.6aspec/biz/event-list.md`(当涉及事件订阅/发布时)
34
+ - 能力地图:`./.6aspec/biz/functional-capability-Map.md`(当涉及跨模块 Facade 依赖时)
35
35
 
36
36
  ## 中断机制(必须执行)
37
37
  如果出现以下任一情况,必须停止画图并输出“提问清单”,等待人类补充:
@@ -0,0 +1,240 @@
1
+ ---
2
+ description: C端用户体系规范
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # C端用户体系规范
7
+
8
+ ## 概述
9
+
10
+ 本规范定义了系统中C端用户体系的设计标准,包括用户表结构、认证机制、身份类型、数据关联规范等。
11
+
12
+ **适用范围**:所有面向C端用户的门户应用,主要依赖微信小程序。
13
+
14
+ ---
15
+
16
+ ## 一、核心表结构
17
+
18
+ ### 1.1 C端用户中心表(mdm_mycuser)
19
+
20
+ **表说明**:C端用户中心的核心表,存储所有C端用户的基础信息。
21
+
22
+ **使用场景**:
23
+ - 用户在小程序登录后会自动生成一条用户记录
24
+ - 存储用户基础信息和手机号
25
+ - 未认证用户的业务关联直接使用此表
26
+
27
+ **关键字段**:
28
+ - 用户ID(主键)
29
+ - 手机号:用户授权后的实名认证手机号
30
+ - 创建时间:用户首次登录时间
31
+ - 其他用户基础信息字段
32
+
33
+ **使用原则**:
34
+ - ✅ 查询所有C端用户(包括未认证用户)
35
+ - ✅ 未认证用户的业务数据关联
36
+ - ✅ 用户基础信息的存储和查询
37
+ - ❌ 不应直接在此表存储业务相关字段
38
+
39
+ ---
40
+
41
+ ### 1.2 门户用户表(nr_tocuser)
42
+
43
+ **表说明**:门户管理应用中的用户表,与 `mdm_mycuser` 一一对应(历史遗留原因)。
44
+
45
+ **使用场景**:
46
+ - 经过认证的用户业务关联
47
+ - 门户业务相关的用户扩展信息
48
+ - 用户身份信息的存储
49
+
50
+ **关键字段**:
51
+ - 用户ID(主键)
52
+ - 关联的 mdm_mycuser 用户ID(外键)
53
+ - 身份类型
54
+ - 认证状态
55
+ - 其他门户业务相关字段
56
+
57
+ **使用原则**:
58
+ - ✅ 已认证用户的业务数据关联(推荐使用此表)
59
+ - ✅ 门户业务相关的用户扩展信息
60
+ - ✅ 用户身份和权限相关的查询
61
+ - ❌ 不应用于未认证用户的关联
62
+
63
+ ---
64
+
65
+ ### 1.3 表关系说明
66
+
67
+ ```
68
+ ┌─────────────────┐ 一对一关系 ┌─────────────────┐
69
+ │ mdm_mycuser │ ─────────────────────────> │ nr_tocuser │
70
+ │ (C端用户中心) │ │ (门户用户) │
71
+ └─────────────────┘ └─────────────────┘
72
+ ↑ ↑
73
+ │ │
74
+ │ │
75
+ 未认证用户关联 已认证用户关联
76
+ ```
77
+
78
+ **说明**:
79
+ 1. 每个 `nr_tocuser` 记录对应一个 `mdm_mycuser` 记录
80
+ 2. `mdm_mycuser` 记录不一定有对应的 `nr_tocuser` 记录(未认证用户)
81
+ 3. 这是历史遗留的表结构设计,需要理解并正确使用
82
+
83
+ ---
84
+
85
+ ## 二、用户身份体系
86
+
87
+ ### 2.1 身份类型
88
+
89
+ 系统支持以下四种C端用户身份类型:
90
+
91
+ | 身份类型 | 认证状态 | 说明 | 使用场景 |
92
+ |---------|---------|------|---------|
93
+ | **游客** | 未认证 | 仅登录小程序,未进行手机号认证 | 浏览公开信息、查看基础内容 |
94
+ | **管理员** | 已认证 | 通过手机号认证,匹配为管理员身份 | 管理功能、审批操作 |
95
+ | **业务代理人** | 已认证 | 通过手机号认证,匹配为业务代理人身份 | 代理业务操作、客户服务 |
96
+ | **企业员工** | 已认证 | 通过手机号认证,匹配为企业员工身份 | 企业内部业务操作 |
97
+
98
+ ### 2.2 身份识别流程
99
+
100
+ ```
101
+ 用户登录小程序
102
+
103
+ 创建 mdm_mycuser 记录
104
+
105
+ 授权手机号?
106
+ ├─ 否 → 游客身份(只有 mdm_mycuser 记录)
107
+ └─ 是 → 手机号实名认证
108
+
109
+ 手机号匹配系统基础数据
110
+
111
+ 创建 nr_tocuser 记录
112
+
113
+ 分配对应身份(管理员/业务代理人/企业员工)
114
+ ```
115
+
116
+ ### 2.3 认证机制
117
+
118
+ **认证方式**:
119
+ - 用户授权手机号
120
+ - 手机号与系统基础数据的客户进行匹配
121
+ - 匹配逻辑由认证服务统一处理(具体匹配规则由业务层定义)
122
+
123
+ **认证状态判断**:
124
+ ```java
125
+ // 判断用户是否已认证
126
+ boolean isAuthenticated = nr_tocuser 记录存在;
127
+
128
+ // 判断用户身份类型
129
+ if (nr_tocuser.身份类型 == "管理员") {
130
+ // 管理员权限
131
+ } else if (nr_tocuser.身份类型 == "业务代理人") {
132
+ // 业务代理人权限
133
+ } else if (nr_tocuser.身份类型 == "企业员工") {
134
+ // 企业员工权限
135
+ } else {
136
+ // 游客权限(仅有 mdm_mycuser 记录)
137
+ }
138
+ ```
139
+
140
+ ---
141
+
142
+ ## 三、数据关联规范
143
+
144
+ ### 3.1 选择关联表的原则
145
+
146
+ 根据用户的认证状态选择合适的表进行业务数据关联:
147
+
148
+ #### 规则一:已认证用户 → 使用 nr_tocuser
149
+
150
+ **适用场景**:
151
+ - 需要身份验证的业务操作
152
+ - 需要权限控制的功能
153
+ - 门户业务数据的用户关联
154
+
155
+ #### 规则二:未认证用户 → 使用 mdm_mycuser
156
+
157
+ **适用场景**:
158
+ - 游客可访问的功能
159
+ - 不需要身份验证的业务场景
160
+ - 用户行为追踪
161
+
162
+ #### 规则三:混合场景 → 同时支持两种关联
163
+
164
+ **适用场景**:
165
+ - 业务数据需要支持游客和已认证用户
166
+ - 用户从游客升级为认证用户后,数据需要保持连续性
167
+
168
+ ---
169
+
170
+ ### 3.2 实体字段命名规范
171
+
172
+ **关联字段命名**:
173
+
174
+ | 关联表 | 字段名称 | 字段类型 | 说明 |
175
+ |-------|---------------|---------|------|
176
+ | `mdm_mycuser` | `cuserId` | UUID(唯一标识) | 关联C端用户中心用户ID |
177
+ | `mdm_mycuser` | `cuserName` | String(单行文本,长度128) | 冗余字段:用户名称 |
178
+ | `nr_tocuser` | `tocuserId` | UUID(唯一标识) | 关联门户用户ID |
179
+ | `nr_tocuser` | `tocuserName` | String(单行文本,长度128) | 冗余字段:用户名称 |
180
+
181
+ ---
182
+
183
+ ## 四、常见问题
184
+
185
+ ### Q1: 什么时候使用 mdm_mycuser,什么时候使用 nr_tocuser?
186
+
187
+ **回答**:
188
+ - **mdm_mycuser**:
189
+ - 未认证用户(游客)的业务关联
190
+ - 需要追踪所有用户(包括游客)的场景
191
+ - 用户基础信息的存储
192
+
193
+ - **nr_tocuser**:
194
+ - 已认证用户的业务关联(推荐)
195
+ - 需要身份验证的业务场景
196
+ - 需要权限控制的功能
197
+
198
+ **判断标准**:看业务是否需要用户认证,需要认证就用 nr_tocuser,不需要认证就用 mdm_mycuser。
199
+
200
+ ---
201
+
202
+ ### Q2: 为什么有两个用户表?
203
+
204
+ **回答**:
205
+ 这是历史遗留原因造成的设计。最初系统只有 `mdm_mycuser`(C端用户中心),后来门户系统独立发展,创建了 `nr_tocuser` 来存储门户业务相关的用户信息。虽然存在冗余,但两者有明确的职责划分:
206
+ - `mdm_mycuser`:用户中心的核心表,存储用户基础信息
207
+ - `nr_tocuser`:门户业务的扩展表,存储认证和身份信息
208
+
209
+ ---
210
+ ### Q5: C端用户的身份是如何匹配的?
211
+
212
+ **回答**:
213
+ 用户通过手机号授权后,系统会执行以下匹配逻辑:
214
+ 1. 获取用户授权的手机号
215
+ 2. 将手机号与系统基础数据中的客户信息进行匹配
216
+ 3. 根据匹配结果分配相应的身份类型(管理员/业务代理人/企业员工)
217
+ 4. 创建 `nr_tocuser` 记录,存储身份信息
218
+
219
+ **注意**:具体的匹配规则由业务层定义,不同的业务系统可能有不同的匹配逻辑。本规范只说明匹配机制的存在,不涉及具体匹配规则的实现细节。
220
+
221
+ ---
222
+
223
+ ## 五、检查清单
224
+
225
+ 在开发涉及C端用户的功能时,请确认:
226
+
227
+ - [ ] 明确业务场景是否需要用户认证
228
+ - [ ] 选择了正确的用户表进行关联(mdm_mycuser 或 nr_tocuser)
229
+ - [ ] 实体字段命名符合规范(cuserId / tocuserId)
230
+ - [ ] API 添加了正确的权限注解(@IdentityUserPermission())
231
+ - [ ] 添加了用户认证状态的判断逻辑
232
+ - [ ] 考虑了不同身份类型的权限差异
233
+ - [ ] 添加了必要的日志记录
234
+ - [ ] 处理了用户不存在或未认证的异常情况
235
+ ---
236
+
237
+ **文档版本**:v1.0
238
+ **最后更新**:2026-02-05
239
+ **维护人**:开发团队
240
+