@rdmind/rdmind 0.0.9-alpha.1 → 0.0.9

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 (109) hide show
  1. package/.knowledge/.ext/.bmad-core/agent-teams/team-all.yaml +15 -0
  2. package/.knowledge/.ext/.bmad-core/agent-teams/team-fullstack.yaml +19 -0
  3. package/.knowledge/.ext/.bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
  4. package/.knowledge/.ext/.bmad-core/agent-teams/team-no-ui.yaml +14 -0
  5. package/.knowledge/.ext/.bmad-core/agents/analyst.md +84 -0
  6. package/.knowledge/.ext/.bmad-core/agents/architect.md +85 -0
  7. package/.knowledge/.ext/.bmad-core/agents/bmad-master.md +110 -0
  8. package/.knowledge/.ext/.bmad-core/agents/bmad-orchestrator.md +147 -0
  9. package/.knowledge/.ext/.bmad-core/agents/dev.md +81 -0
  10. package/.knowledge/.ext/.bmad-core/agents/pm.md +84 -0
  11. package/.knowledge/.ext/.bmad-core/agents/po.md +79 -0
  12. package/.knowledge/.ext/.bmad-core/agents/qa.md +90 -0
  13. package/.knowledge/.ext/.bmad-core/agents/ra.md +74 -0
  14. package/.knowledge/.ext/.bmad-core/agents/sm.md +65 -0
  15. package/.knowledge/.ext/.bmad-core/agents/ux-expert.md +69 -0
  16. package/.knowledge/.ext/.bmad-core/checklists/architect-checklist.md +440 -0
  17. package/.knowledge/.ext/.bmad-core/checklists/change-checklist.md +184 -0
  18. package/.knowledge/.ext/.bmad-core/checklists/pm-checklist.md +372 -0
  19. package/.knowledge/.ext/.bmad-core/checklists/po-master-checklist.md +434 -0
  20. package/.knowledge/.ext/.bmad-core/checklists/story-dod-checklist.md +96 -0
  21. package/.knowledge/.ext/.bmad-core/checklists/story-draft-checklist.md +155 -0
  22. package/.knowledge/.ext/.bmad-core/checklists/trd-checklist.md +226 -0
  23. package/.knowledge/.ext/.bmad-core/core-config.yaml +22 -0
  24. package/.knowledge/.ext/.bmad-core/data/bmad-kb.md +809 -0
  25. package/.knowledge/.ext/.bmad-core/data/brainstorming-techniques.md +38 -0
  26. package/.knowledge/.ext/.bmad-core/data/elicitation-methods.md +156 -0
  27. package/.knowledge/.ext/.bmad-core/data/technical-preferences.md +5 -0
  28. package/.knowledge/.ext/.bmad-core/data/test-levels-framework.md +148 -0
  29. package/.knowledge/.ext/.bmad-core/data/test-priorities-matrix.md +174 -0
  30. package/.knowledge/.ext/.bmad-core/enhanced-ide-development-workflow.md +248 -0
  31. package/.knowledge/.ext/.bmad-core/install-manifest.yaml +512 -0
  32. package/.knowledge/.ext/.bmad-core/tasks/advanced-elicitation.md +119 -0
  33. package/.knowledge/.ext/.bmad-core/tasks/analyze-prd.md +123 -0
  34. package/.knowledge/.ext/.bmad-core/tasks/apply-qa-fixes.md +150 -0
  35. package/.knowledge/.ext/.bmad-core/tasks/brownfield-create-epic.md +162 -0
  36. package/.knowledge/.ext/.bmad-core/tasks/brownfield-create-story.md +149 -0
  37. package/.knowledge/.ext/.bmad-core/tasks/correct-course.md +72 -0
  38. package/.knowledge/.ext/.bmad-core/tasks/create-brownfield-story.md +314 -0
  39. package/.knowledge/.ext/.bmad-core/tasks/create-deep-research-prompt.md +280 -0
  40. package/.knowledge/.ext/.bmad-core/tasks/create-doc.md +103 -0
  41. package/.knowledge/.ext/.bmad-core/tasks/create-next-story.md +114 -0
  42. package/.knowledge/.ext/.bmad-core/tasks/document-project.md +345 -0
  43. package/.knowledge/.ext/.bmad-core/tasks/execute-checklist.md +88 -0
  44. package/.knowledge/.ext/.bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
  45. package/.knowledge/.ext/.bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
  46. package/.knowledge/.ext/.bmad-core/tasks/index-docs.md +175 -0
  47. package/.knowledge/.ext/.bmad-core/tasks/kb-mode-interaction.md +77 -0
  48. package/.knowledge/.ext/.bmad-core/tasks/nfr-assess.md +345 -0
  49. package/.knowledge/.ext/.bmad-core/tasks/qa-gate.md +163 -0
  50. package/.knowledge/.ext/.bmad-core/tasks/review-story.md +316 -0
  51. package/.knowledge/.ext/.bmad-core/tasks/risk-profile.md +355 -0
  52. package/.knowledge/.ext/.bmad-core/tasks/shard-doc.md +187 -0
  53. package/.knowledge/.ext/.bmad-core/tasks/test-design.md +176 -0
  54. package/.knowledge/.ext/.bmad-core/tasks/trace-requirements.md +266 -0
  55. package/.knowledge/.ext/.bmad-core/tasks/validate-next-story.md +136 -0
  56. package/.knowledge/.ext/.bmad-core/tasks/validate-trd.md +158 -0
  57. package/.knowledge/.ext/.bmad-core/templates/architecture-tmpl.yaml +651 -0
  58. package/.knowledge/.ext/.bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  59. package/.knowledge/.ext/.bmad-core/templates/brownfield-architecture-tmpl.yaml +478 -0
  60. package/.knowledge/.ext/.bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
  61. package/.knowledge/.ext/.bmad-core/templates/competitor-analysis-tmpl.yaml +349 -0
  62. package/.knowledge/.ext/.bmad-core/templates/front-end-architecture-tmpl.yaml +273 -0
  63. package/.knowledge/.ext/.bmad-core/templates/front-end-spec-tmpl.yaml +360 -0
  64. package/.knowledge/.ext/.bmad-core/templates/fullstack-architecture-tmpl.yaml +947 -0
  65. package/.knowledge/.ext/.bmad-core/templates/market-research-tmpl.yaml +253 -0
  66. package/.knowledge/.ext/.bmad-core/templates/prd-tmpl.yaml +203 -0
  67. package/.knowledge/.ext/.bmad-core/templates/project-brief-tmpl.yaml +222 -0
  68. package/.knowledge/.ext/.bmad-core/templates/qa-gate-tmpl.yaml +103 -0
  69. package/.knowledge/.ext/.bmad-core/templates/story-tmpl.yaml +138 -0
  70. package/.knowledge/.ext/.bmad-core/templates/trd-tmpl.yaml +198 -0
  71. package/.knowledge/.ext/.bmad-core/user-guide.md +530 -0
  72. package/.knowledge/.ext/.bmad-core/utils/bmad-doc-template.md +327 -0
  73. package/.knowledge/.ext/.bmad-core/utils/workflow-management.md +71 -0
  74. package/.knowledge/.ext/.bmad-core/workflows/brownfield-fullstack.yaml +298 -0
  75. package/.knowledge/.ext/.bmad-core/workflows/brownfield-service.yaml +188 -0
  76. package/.knowledge/.ext/.bmad-core/workflows/brownfield-ui.yaml +198 -0
  77. package/.knowledge/.ext/.bmad-core/workflows/greenfield-fullstack.yaml +241 -0
  78. package/.knowledge/.ext/.bmad-core/workflows/greenfield-service.yaml +207 -0
  79. package/.knowledge/.ext/.bmad-core/workflows/greenfield-ui.yaml +236 -0
  80. package/.knowledge/.ext/.bmad-core/working-in-the-brownfield.md +606 -0
  81. package/.knowledge/.ext/coding/ddd-architecture.md +223 -0
  82. package/.knowledge/.ext/coding/java-standards.md +308 -0
  83. package/.knowledge/.ext/coding/mybatis-standards.md +407 -0
  84. package/.knowledge/.ext/coding/sql-standards.md +263 -0
  85. package/.knowledge/.ext/coding/thrift-service.md +292 -0
  86. package/.knowledge/BMAD.md +255 -0
  87. package/.knowledge/coding.md +135 -0
  88. package/dist/package.json +4 -3
  89. package/dist/src/config/extension.js.map +1 -1
  90. package/dist/src/generated/git-commit.d.ts +2 -2
  91. package/dist/src/generated/git-commit.js +2 -2
  92. package/dist/src/generated/git-commit.js.map +1 -1
  93. package/dist/src/services/McpPromptLoader.js +1 -1
  94. package/dist/src/services/McpPromptLoader.js.map +1 -1
  95. package/dist/src/services/prompt-processors/atFileProcessor.js +1 -1
  96. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -1
  97. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  98. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  99. package/dist/src/ui/components/Tips.js +1 -1
  100. package/dist/src/ui/components/Tips.js.map +1 -1
  101. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  102. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  103. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
  104. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  105. package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
  106. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  107. package/dist/src/utils/installationInfo.test.js.map +1 -1
  108. package/dist/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +4 -3
@@ -0,0 +1,223 @@
1
+ # DDD架构规范
2
+
3
+ ## 架构分层
4
+
5
+ ### 分层结构
6
+
7
+ | 层级 | 职责 | 依赖关系 |
8
+ | ------------------ | -------------------------------- | ------------------------------------- |
9
+ | **start** | 应用启动入口、Thrift协议暴露 | 依赖 app 层 |
10
+ | **app** | 应用服务层、协调领域对象完成用例 | 依赖 domain 层,可依赖 Thrift DTO |
11
+ | **domain** | 领域层、核心业务逻辑 | **不依赖任何外部DTO,只使用领域对象** |
12
+ | **infrastructure** | 基础设施层、技术细节实现 | 依赖 domain 层接口 |
13
+ | **common** | 通用组件层、工具类和常量 | 无外部依赖 |
14
+
15
+ ### 分层职责详解
16
+
17
+ #### Start层(启动层)
18
+
19
+ - **职责**:应用启动、Thrift服务暴露、请求路由
20
+ - **特点**:只负责协议转换,不包含业务逻辑
21
+ - **依赖**:仅依赖App层
22
+
23
+ #### App层(应用服务层)
24
+
25
+ - **职责**:协调领域对象完成用户用例、事务管理
26
+ - **特点**:可以依赖Thrift DTO,负责DTO与领域对象转换
27
+ - **依赖**:依赖Domain层接口
28
+
29
+ #### Domain层(领域层)
30
+
31
+ - **职责**:核心业务逻辑、领域规则、业务概念
32
+ - **特点**:纯业务逻辑,无外部技术依赖
33
+ - **依赖**:不依赖任何外部技术
34
+
35
+ #### Infrastructure层(基础设施层)
36
+
37
+ - **职责**:数据持久化、外部服务调用、技术实现
38
+ - **特点**:实现Domain层定义的接口
39
+ - **依赖**:依赖Domain层接口
40
+
41
+ #### Common层(通用组件层)
42
+
43
+ - **职责**:工具类、常量、通用组件
44
+ - **特点**:无业务逻辑,可被各层使用
45
+ - **依赖**:无外部依赖
46
+
47
+ ---
48
+
49
+ ## 依赖关系约束
50
+
51
+ ### 核心原则
52
+
53
+ **严格遵循依赖倒置原则,确保领域层不被外部技术细节污染**
54
+
55
+ ### 依赖规则
56
+
57
+ - **domain 层**:核心业务逻辑,**绝对不允许**依赖 Thrift DTO、外部API、数据库等
58
+ - **app 层**:可以依赖 Thrift DTO(如 `xxxReq`、`xxxResp`),负责DTO与领域对象的转换
59
+ - **infra 层**:实现 domain 层定义的接口,不能反向依赖 domain 层
60
+ - **start 层**:只依赖 app 层,不直接调用 domain 层
61
+
62
+ ### 依赖方向图
63
+
64
+ ```
65
+ Start层 → App层 → Domain层 ← Infrastructure层
66
+ ↓ ↓ ↑
67
+ Common层 ← Common层 ← Common层
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 分层实现规范
73
+
74
+ ### 实现顺序(必须遵循)
75
+
76
+ 1. **第一优先级**:实现 domain 层(核心业务逻辑,无外部依赖)
77
+ 2. **第二优先级**:实现 infra 层(实现 domain 层接口)
78
+ 3. **第三优先级**:实现 app 层(协调 domain 层,依赖 infra 层)
79
+ 4. **第四优先级**:实现 start 层(依赖 app 层,暴露 Thrift 接口)
80
+
81
+ ### 依赖处理策略
82
+
83
+ **当需要调用下层依赖或外部依赖时,必须先生成TODO说明,而不是立即实现**
84
+
85
+ ```java
86
+ // TODO标记规范
87
+ // TODO: 依赖 [模块名].[类名].[方法名]
88
+ // 说明:此方法需要调用[具体描述]
89
+ // 实现时机:在[具体层]实现完成后实现
90
+ // 当前状态:等待依赖实现
91
+ ```
92
+
93
+ ### 分层调用流程
94
+
95
+ ```
96
+ Start层 (Thrift DTO) → App层 (DTO转换) → Domain层 (领域对象) → Infrastructure层
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 常见架构错误
102
+
103
+ ### Domain层依赖错误
104
+
105
+ ❌ **错误**:Domain层直接使用Thrift DTO
106
+ ✅ **正确**:Domain层只使用领域对象,App层负责DTO转换
107
+
108
+ **解决方案**:
109
+
110
+ ```java
111
+ // ❌ 错误示例
112
+ public class CircleDomainService {
113
+ public void createCircle(CreateCircleReq request) { // 错误:直接使用Thrift DTO
114
+ // 业务逻辑
115
+ }
116
+ }
117
+
118
+ // ✅ 正确示例
119
+ public class CircleDomainService {
120
+ public void createCircle(Circle circle) { // 正确:使用领域对象
121
+ // 业务逻辑
122
+ }
123
+ }
124
+ ```
125
+
126
+ ### App层DTO创建错误
127
+
128
+ ❌ **错误**:App层创建新的入参/出参DTO
129
+ ✅ **正确**:App层直接使用Thrift DTO,不创建新对象
130
+
131
+ **解决方案**:
132
+
133
+ ```java
134
+ // ❌ 错误示例
135
+ public class CircleAppServiceImpl {
136
+ public CreateCircleResult createCircle(CreateCircleRequest request) { // 错误:创建新DTO
137
+ // 业务逻辑
138
+ }
139
+ }
140
+
141
+ // ✅ 正确示例
142
+ public class CircleAppServiceImpl {
143
+ public CreateCircleResp createCircle(CreateCircleReq request) { // 正确:使用Thrift DTO
144
+ // 业务逻辑
145
+ }
146
+ }
147
+ ```
148
+
149
+ ### 分层调用错误
150
+
151
+ ❌ **错误**:Start层直接调用Domain层
152
+ ✅ **正确**:Start层只调用App层,App层调用Domain层
153
+
154
+ **解决方案**:
155
+
156
+ ```java
157
+ // ❌ 错误示例
158
+ public class CircleThriftServiceImpl {
159
+ @Resource
160
+ private CircleDomainService circleDomainService; // 错误:直接依赖Domain层
161
+
162
+ public CreateCircleResp createCircle(Context ctx, CreateCircleReq request) {
163
+ circleDomainService.createCircle(request); // 错误:跨层调用
164
+ }
165
+ }
166
+
167
+ // ✅ 正确示例
168
+ public class CircleThriftServiceImpl {
169
+ @Resource
170
+ private CircleAppService circleAppService; // 正确:依赖App层
171
+
172
+ public CreateCircleResp createCircle(Context ctx, CreateCircleReq request) {
173
+ return circleAppService.createCircle(request); // 正确:调用App层
174
+ }
175
+ }
176
+ ```
177
+
178
+ ### 依赖倒置错误
179
+
180
+ ❌ **错误**:Infrastructure层反向依赖Domain层
181
+ ✅ **正确**:Infrastructure层实现Domain层接口
182
+
183
+ **解决方案**:
184
+
185
+ ```java
186
+ // ❌ 错误示例
187
+ public class CircleRepositoryImpl {
188
+ @Resource
189
+ private CircleDomainService circleDomainService; // 错误:反向依赖
190
+
191
+ public void save(Circle circle) {
192
+ // 实现逻辑
193
+ }
194
+ }
195
+
196
+ // ✅ 正确示例
197
+ public class CircleRepositoryImpl implements CircleRepository { // 正确:实现Domain层接口
198
+ public void save(Circle circle) {
199
+ // 实现逻辑
200
+ }
201
+ }
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 质量检查清单
207
+
208
+ ### DDD架构检查
209
+
210
+ - [ ] 是否严格遵循了DDD分层架构?
211
+ - [ ] 是否正确处理了DTO与领域对象转换?
212
+ - [ ] 是否避免了Domain层依赖外部DTO?
213
+ - [ ] 是否按层逐步实现?(domain→infra→app→start)
214
+ - [ ] 是否使用TODO标记了依赖关系?
215
+ - [ ] 是否遵循了依赖倒置原则?
216
+ - [ ] 是否避免了跨层调用?
217
+ - [ ] 是否实现了正确的分层调用流程?
218
+
219
+ ### 代码开发检查
220
+
221
+ - [ ] 是否生成了完整的MyBatis映射文件?
222
+ - [ ] 是否包含了必要的注释和校验?
223
+ - [ ] 是否实现了领域对象与DO的双向转换?
@@ -0,0 +1,308 @@
1
+ # Java开发规范
2
+
3
+ ## 值对象设计规范
4
+
5
+ ### 重要约束
6
+
7
+ **重要:值对象必须有足够的业务语义和多个字段,单个字段的值对象应该直接使用原始类型**
8
+
9
+ ### 值对象设计决策矩阵
10
+
11
+ | 字段数量 | 业务语义 | 推荐方案 | 说明 |
12
+ | ----------- | -------------------------- | ----------------------- | ---------------------------- |
13
+ | **1个字段** | 简单存储、标识、状态、计数 | ❌ **直接使用原始类型** | 避免为单个字段创建封装类 |
14
+ | **2个字段** | 相关概念组合 | ✅ **创建值对象** | 当字段之间存在业务关联时 |
15
+ | **3+字段** | 复杂业务概念 | ✅ **创建值对象** | 当字段组合表达完整业务含义时 |
16
+
17
+ ### 禁止创建的值对象类型
18
+
19
+ - ❌ **单字段封装**:任何只包含一个字段的封装类,无论字段类型
20
+ - ❌ **无业务逻辑封装**:仅为了封装而封装,不包含验证规则或业务行为
21
+ - ❌ **业务概念封装**:CircleName、CircleDescription、CircleAvatar等单字段封装
22
+
23
+ ### 推荐使用的原始类型
24
+
25
+ - **基础数据类型**:`String`、`Integer`、`Long`、`Boolean`、`BigDecimal`
26
+ - **时间类型**:`LocalDateTime`、`LocalDate`、`LocalTime`
27
+ - **集合类型**:`List<T>`、`Set<T>`、`Map<K,V>`
28
+ - **枚举类型**:直接使用`enum`或`Integer`、`String`表示
29
+
30
+ ---
31
+
32
+ ## Lombok使用规范
33
+
34
+ ### 强制要求
35
+
36
+ **重要:所有实体类和值对象必须使用Lombok注解,禁止手动实现getter、setter、toString等方法**
37
+
38
+ ### 必须使用的Lombok注解
39
+
40
+ - **@Data**:自动生成getter、setter、toString、equals、hashCode方法
41
+ - **@AllArgsConstructor**:生成包含所有字段的构造函数
42
+ - **@NoArgsConstructor**:生成无参构造函数
43
+ - **@Builder**:生成Builder模式(可选,用于复杂对象)
44
+
45
+ ### 禁止手动实现的方法
46
+
47
+ - ❌ **getter方法**:不要手动实现getName()、getId()等方法
48
+ - ❌ **setter方法**:不要手动实现setName()、setId()等方法
49
+ - ❌ **toString方法**:不要手动实现toString()方法
50
+ - ❌ **equals方法**:不要手动实现equals()方法
51
+ - ❌ **hashCode方法**:不要手动实现hashCode()方法
52
+
53
+ ---
54
+
55
+ ## 分层设计规范
56
+
57
+ ### App层设计规范(强制要求)
58
+
59
+ **重要:App层必须设计为接口+实现类的模式,遵循依赖倒置原则**
60
+
61
+ #### App层接口设计
62
+
63
+ - **接口命名**:`{Entity}AppService`,定义业务操作接口
64
+ - **职责范围**:协调领域对象完成用户用例,处理事务
65
+ - **方法签名**:使用Thrift DTO作为参数和返回值
66
+ - **依赖关系**:依赖domain层接口,不依赖具体实现
67
+
68
+ #### App层实现类设计
69
+
70
+ - **实现类命名**:`{Entity}AppServiceImpl`,实现业务操作接口
71
+ - **注解标注**:使用`@Service`注解标记为Spring服务
72
+ - **依赖注入**:通过`@Resource`注入domain层服务
73
+ - **事务处理**:在方法级别处理事务边界
74
+
75
+ ### Repository层设计规范(强制要求)
76
+
77
+ **重要:Repository层是领域对象存储的抽象,必须设计为接口+实现类模式**
78
+
79
+ #### Repository接口设计
80
+
81
+ - **接口命名**:`{Entity}Repository`,在Domain层定义
82
+ - **职责范围**:领域对象的存储和检索,提供领域友好的接口
83
+ - **方法命名**:使用业务语义命名,如`findByCircleId`、`existsByName`
84
+ - **返回类型**:返回领域对象或领域对象集合,不返回技术细节
85
+
86
+ #### Repository接口方法规范
87
+
88
+ - **基础CRUD**:`save`、`findById`、`deleteById`
89
+ - **业务查询**:`findBy{Field}`、`findBy{Field}And{Field}`、`findBy{Field}Like`
90
+ - **分页查询**:`findBy{Field}AndPage`、`findByPage`
91
+ - **统计查询**:`count`、`countBy{Field}`、`existsBy{Field}`
92
+ - **批量操作**:`findBy{Field}s`、`deleteBy{Field}s`
93
+
94
+ ### DAO层设计规范(强制要求)
95
+
96
+ **重要:DAO层是数据访问的具体实现,负责与数据库的交互和异常处理**
97
+
98
+ #### DAO类设计
99
+
100
+ - **类命名**:`{Entity}Dao`,在Infrastructure层实现
101
+ - **注解标注**:使用`@Component`注解标记为Spring组件
102
+ - **职责范围**:数据库操作、参数校验、异常处理、日志记录
103
+ - **依赖关系**:依赖对应的Mapper接口,不依赖其他业务组件
104
+
105
+ #### DAO异常处理规范
106
+
107
+ - **参数校验异常**:记录warn级别日志,返回默认值
108
+ - **数据库异常**:记录error级别日志,返回默认值
109
+ - **返回值一致性**:查询方法异常返回null,删除方法异常返回false
110
+
111
+ ---
112
+
113
+ ## Java包路径规范
114
+
115
+ ### 包路径格式
116
+
117
+ **标准格式:** `com.xiaohongshu.sns.{project}.{模块}.{子层}`
118
+
119
+ ### 模块划分
120
+
121
+ - **app** - 应用服务层
122
+ - **common** - 通用组件层
123
+ - **domain** - 领域层
124
+ - **infrastructure** - 基础设施层
125
+ - **start** - 启动层
126
+
127
+ ### 子层职责
128
+
129
+ - **service** - 业务服务
130
+ - **dao** - 数据访问对象
131
+ - **mapper** - MyBatis映射器
132
+ - **model** - 数据模型
133
+ - **repository** - 仓储接口和实现
134
+ - **config** - 配置类
135
+ - **constant** - 常量定义
136
+
137
+ ---
138
+
139
+ ## 常见Java错误
140
+
141
+ ### 值对象设计错误
142
+
143
+ ❌ **错误**:为单个字段创建封装类(如CircleName、CircleDescription)
144
+ ✅ **正确**:单个字段直接使用原始类型(String、Integer、Long等)
145
+
146
+ **解决方案**:
147
+
148
+ ```java
149
+ ❌ 错误示例:
150
+ public class CircleName {
151
+ private String value;
152
+
153
+ public CircleName(String value) {
154
+ this.value = value;
155
+ }
156
+
157
+ public String getValue() {
158
+ return value;
159
+ }
160
+ }
161
+
162
+ ✅ 正确示例:
163
+ public class Circle {
164
+ private String name; // 直接使用String类型
165
+
166
+ public Circle(String name) {
167
+ this.name = name;
168
+ }
169
+
170
+ public String getName() {
171
+ return name;
172
+ }
173
+ }
174
+ ```
175
+
176
+ ### 手动实现方法错误
177
+
178
+ ❌ **错误**:手动实现getter、setter、toString等方法
179
+ ✅ **正确**:使用@Data注解自动生成这些方法
180
+
181
+ **解决方案**:
182
+
183
+ ```java
184
+ ❌ 错误示例:
185
+ public class Circle {
186
+ private String name;
187
+
188
+ public String getName() { // 错误:手动实现getter
189
+ return name;
190
+ }
191
+
192
+ public void setName(String name) { // 错误:手动实现setter
193
+ this.name = name;
194
+ }
195
+
196
+ @Override
197
+ public String toString() { // 错误:手动实现toString
198
+ return "Circle{name='" + name + "'}";
199
+ }
200
+ }
201
+
202
+ ✅ 正确示例:
203
+ @Data
204
+ @AllArgsConstructor
205
+ @NoArgsConstructor
206
+ public class Circle {
207
+ private String name;
208
+ // Lombok自动生成getter、setter、toString等方法
209
+ }
210
+ ```
211
+
212
+ ### 包路径不一致错误
213
+
214
+ ❌ **错误**:包路径与目录结构不一致
215
+ ✅ **正确**:包路径必须与物理目录结构完全一致
216
+
217
+ **解决方案**:
218
+
219
+ ```java
220
+ ❌ 错误示例:
221
+ // 文件路径:src/main/java/com/xiaohongshu/sns/demo/Circle.java
222
+ package com.xiaohongshu.sns.circle; // 错误:包路径与目录不一致
223
+
224
+ ✅ 正确示例:
225
+ // 文件路径:src/main/java/com/xiaohongshu/sns/demo/Circle.java
226
+ package com.xiaohongshu.sns.demo; // 正确:包路径与目录一致
227
+ ```
228
+
229
+ ### 模块选择错误
230
+
231
+ ❌ **错误**:在错误的模块下生成代码
232
+ ✅ **正确**:必须根据业务逻辑选择正确的模块
233
+
234
+ **解决方案**:
235
+
236
+ ```bash
237
+ ❌ 错误示例:
238
+ # 在common模块下生成业务逻辑代码
239
+ common/src/main/java/com/xiaohongshu/sns/demo/service/CircleService.java
240
+
241
+ ✅ 正确示例:
242
+ # 在app模块下生成业务逻辑代码
243
+ app/src/main/java/com/xiaohongshu/sns/demo/service/CircleService.java
244
+ ```
245
+
246
+ ---
247
+
248
+ ## 文件操作规范
249
+
250
+ ### Java项目目录结构规范(强制要求)
251
+
252
+ **重要:源代码必须放在正确的src目录下,绝对禁止在target目录下生成代码**
253
+
254
+ #### 正确的目录结构
255
+
256
+ ```
257
+ {project}/
258
+ ├── {module}/
259
+ │ ├── src/
260
+ │ │ ├── main/
261
+ │ │ │ ├── java/ ← ✅ 源代码目录
262
+ │ │ │ └── resources/ ← ✅ 资源文件目录
263
+ │ │ └── test/
264
+ │ │ └── java/ ← ✅ 测试代码目录
265
+ │ └── target/ ← ❌ 禁止在此目录生成代码
266
+ ```
267
+
268
+ #### 源代码生成位置规范
269
+
270
+ | 文件类型 | 正确位置 | 错误位置 |
271
+ | -------------- | ---------------------------- | ------------ |
272
+ | **Java类文件** | `src/main/java/` | ❌ `target/` |
273
+ | **Mapper.xml** | `src/main/resources/mapper/` | ❌ `target/` |
274
+ | **SQL文件** | `src/main/resources/sql/` | ❌ `target/` |
275
+ | **配置文件** | `src/main/resources/` | ❌ `target/` |
276
+ | **测试文件** | `src/test/java/` | ❌ `target/` |
277
+
278
+ ### 路径规范
279
+
280
+ - **绝对路径优先**:所有文件操作使用绝对路径
281
+ - **路径一致性**:确保不同工具的路径参数指向同一物理文件
282
+ - **src目录优先**:Java源代码必须放在src目录下
283
+
284
+ ---
285
+
286
+ ## 质量检查清单
287
+
288
+ ### Java开发检查
289
+
290
+ - [ ] 值对象设计是否合理?(避免单字段无意义封装)
291
+ - [ ] 是否优先使用原始类型而非过度封装?
292
+ - [ ] 是否使用了@Data注解而非手动实现方法?
293
+ - [ ] 是否避免了CircleName、CircleDescription等单字段封装?
294
+ - [ ] App层是否设计为接口+实现类模式?
295
+ - [ ] App层实现类是否使用@Service注解?
296
+ - [ ] Repository层是否设计为接口+实现类模式?
297
+ - [ ] Repository接口是否在Domain层定义?
298
+ - [ ] DAO层是否使用@Component注解?
299
+ - [ ] DAO层是否包含完整的异常处理?
300
+ - [ ] 包路径是否与目录结构一致?
301
+ - [ ] 是否在正确的模块下生成代码?
302
+
303
+ ### 文件操作检查
304
+
305
+ - [ ] 是否遵守了文件路径规范?
306
+ - [ ] Java代码是否放在正确的src目录下?
307
+ - [ ] 是否避开了target目录?
308
+ - [ ] 包路径是否与目录结构一致?