@dtt_siye/atool 1.3.0 → 1.4.0

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 (47) hide show
  1. package/VERSION +1 -1
  2. package/hooks/doc-sync-reminder +4 -4
  3. package/hooks/hooks-cursor.json +20 -0
  4. package/hooks/hooks.json +21 -1
  5. package/hooks/pre-commit +191 -0
  6. package/hooks/prompt-guard +84 -35
  7. package/hooks/session-start +34 -12
  8. package/hooks/task-state-tracker +145 -0
  9. package/lib/common.sh +36 -23
  10. package/lib/compute-importance.sh +73 -0
  11. package/lib/install-cursor.sh +2 -2
  12. package/lib/install-hooks.sh +64 -0
  13. package/lib/install-skills.sh +19 -0
  14. package/lib/knowledge-graph.sh +483 -81
  15. package/lib/pre-scan.sh +81 -6
  16. package/package.json +1 -1
  17. package/skills/agent-audit/SKILL.md +180 -0
  18. package/skills/architecture-guard/SKILL.md +164 -0
  19. package/skills/architecture-guard/rules/violation-detection.md +90 -0
  20. package/skills/ci-feedback/SKILL.md +165 -0
  21. package/skills/project-analyze/SKILL.md +131 -23
  22. package/skills/project-analyze/phases/phase1-setup.md +15 -1
  23. package/skills/project-analyze/phases/phase2-understand.md +17 -2
  24. package/skills/project-analyze/phases/phase2.5-refine.md +293 -0
  25. package/skills/project-analyze/phases/phase3-graph.md +7 -1
  26. package/skills/project-analyze/phases/phase4-synthesize.md +117 -120
  27. package/skills/project-analyze/phases/phase5-export.md +117 -33
  28. package/skills/project-analyze/prompts/understand-agent.md +17 -0
  29. package/skills/project-analyze/rules/android.md +61 -260
  30. package/skills/project-analyze/rules/devops.md +61 -421
  31. package/skills/project-analyze/rules/generic.md +53 -221
  32. package/skills/project-analyze/rules/go.md +60 -275
  33. package/skills/project-analyze/rules/harmony.md +64 -237
  34. package/skills/project-analyze/rules/java.md +47 -485
  35. package/skills/project-analyze/rules/mobile-flutter.md +57 -292
  36. package/skills/project-analyze/rules/mobile-react-native.md +65 -262
  37. package/skills/project-analyze/rules/mobile-swift.md +58 -303
  38. package/skills/project-analyze/rules/python.md +50 -296
  39. package/skills/project-analyze/rules/rust-tauri.md +51 -217
  40. package/skills/project-analyze/rules/rust.md +50 -274
  41. package/skills/project-analyze/rules/web-nextjs.md +61 -335
  42. package/skills/project-analyze/rules/web-react.md +50 -272
  43. package/skills/project-analyze/rules/web-vue.md +58 -352
  44. package/skills/project-analyze/rules/web.md +55 -347
  45. package/skills/project-query/SKILL.md +681 -120
  46. package/skills/requirements-writer/SKILL.md +48 -1
  47. package/skills/software-architecture/SKILL.md +73 -3
@@ -1,507 +1,69 @@
1
- # Java / Spring Boot 项目分析规则
1
+ # Java / Spring Boot 分析规则
2
2
 
3
- ## 分析粒度
3
+ > **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `java-conventions` skill 作为规范约束。
4
4
 
5
- Maven/Gradle 模块和 Spring 分层架构(Controller → Service → Repository → Entity)进行分析。
5
+ ## 模块发现策略
6
6
 
7
- ```
8
- Application Entry (main)
9
-
10
- Config / Bootstrap(配置)
11
-
12
- Controller / REST(API 入口)
13
-
14
- Service / UseCase(业务逻辑)
15
-
16
- Repository / DAO(数据访问)
17
-
18
- Entity / Model(数据模型)
19
-
20
- Security(安全)
21
-
22
- Common / Utils(工具)
23
- ```
24
-
25
- ## 目录扫描策略
26
-
27
- ### 1. 识别构建文件
7
+ - **Maven 多模块**:检查根 `pom.xml` 的 `<modules>` 标签,每个 `<module>` 为独立分析单元
8
+ - **Gradle 多模块**:检查 `settings.gradle` / `settings.gradle.kts` 的 `include` 声明
9
+ - **包路径推断**:从 `pom.xml` `<groupId>` 推断(跳过 `org.springframework.*` 等框架 groupId),备选读首个 `.java` 文件的 `package` 声明;禁止使用 `com.example` 等占位符
10
+ - **Java 版本推断**:从 `<java.version>` / `sourceCompatibility` 提取;禁止默认使用 JDK 17+
28
11
 
29
- **信号文件检测:**
30
- - `pom.xml` → Maven 项目
31
- - `build.gradle` / `build.gradle.kts` → Gradle 项目
32
- - `settings.gradle` / `settings.gradle.kts` → Gradle settings
12
+ 模块间依赖拓扑:从所有模块 pom.xml/build.gradle 提取,检测循环依赖(标记 Critical)。
33
13
 
34
- ### 2. 识别 Spring 特征
14
+ ## 入口识别
35
15
 
36
- - `@SpringBootApplication` Spring Boot
37
- - `spring-boot-starter-*` 依赖 → Spring Boot starters
38
- - `application.yml` / `application.properties` Spring 配置
39
- - `bootstrap.yml` Spring Cloud 配置中心
16
+ | 标记 | 含义 |
17
+ |------|------|
18
+ | `@SpringBootApplication` | 应用主入口(`main()` 方法所在类) |
19
+ | `@RestController` / `@Controller` | HTTP API 入口 |
20
+ | `@FeignClient` | 外部服务调用入口 |
21
+ | `@KafkaListener` / `@RabbitListener` | 消息消费入口 |
22
+ | `@Scheduled` | 定时任务入口 |
23
+ | `bootstrap.yml` | Spring Cloud 配置中心入口 |
40
24
 
41
- ### 3. 多模块结构提取
25
+ ## 架构模式识别
42
26
 
43
- `pom.xml` `<modules>` 或 `settings.gradle` 的 `include` 提取:
44
- - 每个模块为一个分析单元
45
- - 模块间依赖关系
46
-
47
- ### 4. 依赖提取
48
-
49
- | 类别 | 常见依赖 |
27
+ | 模式 | 检测特征 |
50
28
  |------|----------|
51
- | Web | spring-boot-starter-web, spring-boot-starter-webflux |
52
- | ORM | mybatis-plus, mybatis-spring-boot, spring-data-jpa |
53
- | 数据库 | mysql-connector, postgresql, h2, oracle |
54
- | 安全 | spring-boot-starter-security, shiro-spring |
55
- | 缓存 | spring-boot-starter-data-redis, caffeine |
56
- | 消息 | spring-kafka, spring-amqp |
57
- | 微服务 | spring-cloud-starter-*, nacos, eureka |
58
- | 文档 | springdoc-openapi, knife4j |
59
- | 工具 | lombok, mapstruct, hutool |
60
-
61
- ### 5. 按层扫描路径
62
-
63
- - **Controller**: `*/controller/`, `*/rest/`, `*/api/`
64
- - **Service**: `*/service/`, `*/service/impl/`
65
- - **Repository**: `*/repository/`, `*/dao/`, `*/mapper/`
66
- - **Model**: `*/model/`, `*/entity/`, `*/domain/`, `*/dto/`, `*/vo/`
67
- - **Config**: `*/config/`, `*/configuration/`
68
- - **Security**: `*/security/`
69
- - **Common**: `*/common/`, `*/utils/`, `*/enums/`
70
-
71
- ## 多模块项目发现策略
72
-
73
- ### Maven 多模块项目
74
-
75
- **前置检测(Step 3 模块发现之前必须执行)**:
76
-
77
- 1. 检查根 `pom.xml` 中是否存在 `<modules>` 标签
78
- 2. 如果存在,提取所有 `<module>` 值作为独立分析单元
79
- 3. 对每个模块,执行以下提取:
80
-
81
- ```
82
- {module}/
83
- ├── pom.xml → groupId, artifactId, parent, dependencies
84
- ├── src/main/java/{package}/ → 所有 Java 源码
85
- │ ├── controller/ → API 入口
86
- │ ├── service/ → 业务逻辑
87
- │ ├── mapper/ or repository/ → 数据访问
88
- │ ├── domain/ or entity/ or model/ → 数据模型
89
- │ ├── config/ → 配置
90
- │ └── ...
91
- ├── src/main/resources/ → application.yml, mapper XML
92
- └── src/test/java/ → 测试
93
- ```
94
-
95
- #### 包路径推断(关键 — 防止生成 `com/example/` 等占位符)
96
-
97
- 1. **优先从 pom.xml `<groupId>` 推断**:
98
- - `<groupId>com.ftms.scrm</groupId>` → `com/ftms/scrm/`
99
- - **跳过**框架 groupId(`org.springframework.*`, `org.apache.*`, `com.alibaba.*`)
100
- 2. **备选从首个 .java 文件的 `package` 声明推断**:
101
- - `package com.ftms.scrm.auth;` → `com/ftms/scrm/auth/`
102
- 3. **禁止使用** `com/example/`、`com.demo`、`com.yourcompany` 等默认占位符
103
-
104
- #### Java 版本推断(防止默认 JDK 17+)
105
-
106
- 1. 从 `<java.version>` 属性提取(如 `<java.version>1.8</java.version>` → `JDK 8`)
107
- 2. 从 maven-compiler-plugin `<source>` 提取
108
- 3. 从 build.gradle `sourceCompatibility` 提取
109
- 4. **禁止默认使用** `JDK 17+` 或 `JDK 11+` 等猜测值
110
-
111
- #### 每个模块必须提取的信息
112
-
113
- | 信息 | 来源 | 用途 |
114
- |------|------|------|
115
- | artifactId | pom.xml | 模块名称 |
116
- | groupId | pom.xml | 包路径推断 |
117
- | Java 版本 | pom.xml properties | 环境要求 |
118
- | Spring Boot 版本 | pom.xml parent/dependency | 技术栈表格 |
119
- | 模块依赖 | pom.xml dependencies | 依赖关系图 |
120
- | 端口 | application.yml server.port | 架构图标注 |
121
- | 数据库 URL | application.yml datasource | 微服务适应性评估 |
122
-
123
- ### Gradle 多模块项目
124
-
125
- 1. 检查 `settings.gradle` 或 `settings.gradle.kts` 中的 `include` 声明
126
- 2. 每个 include 项为一个独立模块
127
- 3. 源码路径:`{module}/src/main/java/` 和 `{module}/src/main/kotlin/`
128
-
129
- ### 模块依赖拓扑图
130
-
131
- 从所有模块的 pom.xml/build.gradle 提取模块间依赖,生成 ASCII 拓扑图:
132
- - 分析时按拓扑顺序(被依赖的模块先分析)
133
- - 检测循环依赖(存在则标记为 Critical 问题)
134
-
135
- ## 架构适应性评估
136
-
137
- 在模块分析完成后,生成架构合规报告。评估以下 4 个维度:
138
-
139
- ### 1. 分层合规性
29
+ | 标准 Spring 三层 | `controller/` + `service/` + `repository/mapper/` 目录并存 |
30
+ | 按功能分包(DDD) | 包路径含业务域名(如 `order/`, `payment/`),每个包内含完整分层 |
31
+ | 微服务 | 存在 `spring-cloud-*` / nacos / eureka 依赖 + 多个可独立部署模块 |
32
+ | CQRS | 存在 `command/` + `query/` 分离目录或 `CommandHandler` / `QueryHandler` 类 |
140
33
 
141
- 扫描所有 Java 文件的 import 语句,检测层间依赖是否合规:
34
+ 架构合规检测:扫描 Controller import 是否引用 Mapper/Repository(层间越级);检查 Entity 是否引用 Service(反向依赖)。
142
35
 
143
- | 层 | 允许依赖 | 禁止依赖 |
144
- |----|----------|----------|
145
- | Controller | Service, DTO, VO | Repository, Entity, Mapper |
146
- | Service | Repository, Entity, DTO, 其他 Service | Controller |
147
- | Repository | Entity | Service, Controller |
148
- | Entity / Model | 无(纯数据类) | Service, Repository, Controller |
149
- | DTO / VO | 无(纯数据类) | Service, Repository |
150
- | Config | Service, Repository(通过 @Bean) | — |
36
+ ## 数据流模式
151
37
 
152
- **检测方法**:
153
- - 分析每个 `*Controller.java` import,查找 `*Mapper`、`*Repository`、`*Dao` 的引用
154
- - 分析每个 `*Entity.java` import,查找 `*Service` 的引用
155
- - 分析每个 `*Service.java` import,查找 `*Controller` 的引用
38
+ - **HTTP 请求链**:Filter → Controller → Service → Repository → DB
39
+ - **异步消息链**:MQ Listener Service Repository → DB
40
+ - **定时任务链**:@Scheduled Service Repository → DB
41
+ - **Feign 调用链**:Controller → Service FeignClient 外部服务
156
42
 
157
- **白名单(不计为违规)**:
158
- - `@ControllerAdvice` + `@ExceptionHandler` — 全局异常处理
159
- - `@Configuration` 类(`*Config.java`)— 通过 @Bean 注入
160
- - Actuator/HealthCheck 端点
161
- - Test 类(`src/test/` 下)
162
- - `*Application.java` 启动类
43
+ ## 分析关注点
163
44
 
164
- ### 2. 微服务适应性
45
+ - **Bean 注入图**:从 `@Autowired` / 构造注入扫描 Service/Repository 依赖关系,识别循环依赖
46
+ - **事务边界**:`@Transactional` 标注的方法,是否跨模块事务
47
+ - **多数据源**:多个 `DataSource` Bean / 多个 datasource URL,标记微服务共享数据库风险
48
+ - **安全配置**:`SecurityFilterChain` → 认证方式(JWT/Session/OAuth2)+ 公开路径白名单
49
+ - **配置提取**:`application.yml` 中的端口、数据库 URL、Redis 地址用于架构图标注
165
50
 
166
- **适用条件**:项目包含 Spring Cloud/Nacos/Dubbo 等 微服务框架依赖。
51
+ ## 输出示例
167
52
 
168
- | 检测项 | 判定标准 | 严重度 |
169
- |--------|----------|--------|
170
- | 共享数据库 | 多个模块的 application.yml 指向同一数据库 URL | Critical |
171
- | 跨服务直接数据访问 | 服务 A 的 Mapper 查询服务 B 的表 | Critical |
172
- | 共享业务逻辑库 | common 模块包含 `*Service.java` | Warning |
173
- | Feign 调用链过深 | 调用链 >3 层 | Warning |
174
- | 服务无法独立部署 | 模块间存在非 API 的编译期依赖 | Critical |
175
- | API 网关仅做路由 | Gateway 模块无聚合/限流/认证逻辑 | Info |
176
-
177
- **检测方法**:
178
- ```
179
- # 共享数据库:提取所有模块的 datasource URL
180
- grep -r 'spring.datasource.url' */src/main/resources/
181
-
182
- # 跨服务数据访问:检查 Mapper XML 是否引用其他服务的表
183
- grep -r '<tableName>' */src/main/resources/mapper/
184
-
185
- # Feign 调用链:扫描 @FeignClient 接口,构建调用图
186
- grep -r '@FeignClient' --include='*.java' .
187
- ```
188
-
189
- ### 3. 包结构健康度
190
-
191
- | 检测项 | 判定标准 | 严重度 |
192
- |--------|----------|--------|
193
- | 组织模式 | 按层分包 vs 按功能分包 vs 混合 | — |
194
- | 大泥球 | 单个包内 >50 个 .java 文件 | Warning |
195
- | 循环依赖 | 包 A import 包 B,包 B 也 import 包 A | Critical |
196
- | 包层次过深 | 包路径 >6 层 | Info |
197
-
198
- ### 4. 依赖方向
199
-
200
- 从 pom.xml/build.gradle 提取模块间依赖,构建有向图:
201
- - 上层依赖下层,不存在反向依赖
202
- - 公共模块(common, utils, core)不依赖业务模块
203
- - API 模块(仅含接口/DTO)不依赖实现模块
204
- - 检测并标注循环依赖
205
-
206
- ### 输出格式
207
-
208
- 在每个模块的 MODULE-DOC.md 中增加「架构合规评估」章节:
209
-
210
- ```markdown
211
- ## 架构合规评估
212
-
213
- ### 分层合规
214
- | 规则 | 状态 | 违规位置 | 严重度 |
215
- |------|------|----------|--------|
216
- | Controller 不直接调用 Repository | ⚠️ 违规 | UserController.java:45 imports UserMapper | Warning |
217
- | Entity 不包含业务逻辑 | ✅ 合规 | — | — |
218
- | Service 不依赖 Controller | ✅ 合规 | — | — |
219
-
220
- ### 包结构
221
- - 组织模式:按层分包(建议迁移为按功能分包)
222
- - 包层次深度:4 层
223
- - 循环依赖:无
224
-
225
- ### 微服务适应性(适用时)
226
- | 检测项 | 状态 | 详情 |
227
- |--------|------|------|
228
- | 独立数据库 | ❌ | 3 个服务共享同一 MySQL |
229
- | 同步耦合 | ⚠️ | Feign 调用链最深 3 层 |
230
- ```
231
-
232
- ## 各层提取规则
233
-
234
- ### 层 1: Controller 层
235
-
236
- **扫描文件**: `*Controller.java`, `*Resource.java`, `*Endpoint.java`
237
-
238
- **提取内容**:
239
- - 类名 + `@RequestMapping` 基础路径
240
- - API 方法列表(HTTP 方法 + 路径 + 参数 + 返回类型 + Swagger 注解)
241
- - 权限注解(`@PreAuthorize`, `@RequiresPermissions`)
242
- - 请求/响应 DTO
243
-
244
- **输出示例**:
53
+ Controller 提取片段:
245
54
  ```
246
- ### UserController
247
- - **路径**: `com.example.system.controller.UserController`
248
- - **基础路径**: `/system/user`
249
- - **依赖注入**: UserService, DeptService
250
- - **API 方法**:
251
- | 方法 | HTTP | 路径 | 参数 | 返回类型 | 权限 | 说明 |
252
- |------|------|------|------|----------|------|------|
253
- | list | GET | /list | UserQueryDTO | TableDataInfo<UserVO> | @PreAuthorize("@ss.hasPermi('system:user:list')") | 分页查询 |
254
- | getInfo | GET | /{userId} | @PathVariable Long | R<UserVO> | @PreAuthorize("@ss.hasPermi('system:user:query')") | 获取详情 |
255
- | add | POST | / | @Validated @RequestBody UserDTO | R<Void> | @PreAuthorize("@ss.hasPermi('system:user:add')") | 新增用户 |
256
- | edit | PUT | / | @Validated @RequestBody UserDTO | R<Void> | @PreAuthorize("@ss.hasPermi('system:user:edit')") | 修改用户 |
257
- | remove | DELETE | /{userIds} | @PathVariable Long[] | R<Void> | @PreAuthorize("@ss.hasPermi('system:user:remove')") | 删除用户 |
258
- | export | POST | /export | UserQueryDTO | void (Excel) | @PreAuthorize("@ss.hasPermi('system:user:export')") | 导出 Excel |
259
- - **Swagger**: @Tag(name = "用户管理")
55
+ UserController /system/user
56
+ GET /list → UserService.selectUserList() @PreAuthorize
57
+ POST / → UserService.insertUser() @PreAuthorize
58
+ PUT / → UserService.updateUser() @PreAuthorize
260
59
  ```
261
60
 
262
- ### 层 2: Service 层
263
-
264
- **扫描文件**: `*Service.java` (接口), `*ServiceImpl.java` (实现)
265
-
266
- **提取内容**:
267
- - 接口方法签名
268
- - 实现类的业务逻辑摘要
269
- - 依赖的其他 Service / Repository
270
- - 事务注解(`@Transactional`)
271
-
272
- **输出示例**:
61
+ 架构合规评估片段:
273
62
  ```
274
- ### UserService (接口)
275
- - **路径**: `com.example.system.service.UserService`
276
- - **方法**:
277
- | 方法 | 签名 | 说明 |
278
- |------|------|------|
279
- | selectUserList | (UserQueryDTO) → List<UserVO> | 分页查询用户列表 |
280
- | selectUserById | (Long) → UserVO | 查询用户详情 |
281
- | insertUser | (UserDTO) → int | 新增用户 |
282
- | updateUser | (UserDTO) → int | 修改用户 |
283
- | deleteUser | (Long[]) → int | 批量删除 |
284
- | resetPwd | (Long, String) → int | 重置密码 |
63
+ 分层合规
64
+ ⚠️ UserController:45 imports UserMapper(Controller 越级调用 Mapper)
65
+ Entity 无反向 Service 依赖
285
66
 
286
- ### UserServiceImpl (实现)
287
- - **路径**: `com.example.system.service.impl.UserServiceImpl`
288
- - **依赖注入**: UserMapper, RoleMapper, DeptService, PasswordEncoder
289
- - **关键业务逻辑**:
290
- - insertUser: 校验用户名唯一 → 加密密码 → 初始化角色 → 插入用户+角色关联
291
- - updateUser: 校验权限 → 更新用户信息 → 同步角色关联
292
- - **事务**: @Transactional (insertUser, updateUser, deleteUser)
67
+ 微服务适应性
68
+ 3 个服务共享同一 MySQL datasource URL
293
69
  ```
294
-
295
- ### 层 3: Repository / Mapper 层
296
-
297
- **扫描文件**: `*Mapper.java`, `*Repository.java`, `*Dao.java`
298
-
299
- #### MyBatis Mapper
300
-
301
- **提取内容**:
302
- - Mapper 接口方法签名
303
- - XML 映射文件中的 SQL(自定义查询)
304
- - ResultMap 映射关系
305
-
306
- **输出示例**:
307
- ```
308
- ### UserMapper
309
- - **路径**: `com.example.system.mapper.UserMapper`
310
- - **继承**: BaseMapper<UserEntity>
311
- - **自定义方法**:
312
- | 方法 | 签名 | SQL 位置 | 说明 |
313
- |------|------|----------|------|
314
- | selectUserByUserName | (String) → UserEntity | UserMapper.xml | 按用户名查询 |
315
- | checkUserNameUnique | (String) → int | UserMapper.xml | 检查用户名唯一 |
316
- | selectUserByPhone | (String) → UserEntity | UserMapper.xml | 按手机号查询 |
317
- - **XML 文件**: `resources/mapper/system/UserMapper.xml`
318
- ```
319
-
320
- #### JPA Repository
321
-
322
- **提取内容**:
323
- - Repository 接口继承的基类
324
- - 自定义查询方法(`findBy*`, `@Query`)
325
-
326
- **输出示例**:
327
- ```
328
- ### UserRepository
329
- - **路径**: `com.example.user.repository.UserRepository`
330
- - **继承**: JpaRepository<User, Long>
331
- - **自定义查询**:
332
- | 方法 | 查询方式 | 说明 |
333
- |------|----------|------|
334
- | findByEmail(String email) | 方法名推导 | 按邮箱查询 |
335
- | findByRole(String role) | 方法名推导 | 按角色查询 |
336
- | findActiveUsers() | @Query("SELECT u FROM User u WHERE u.active = true") | 查询活跃用户 |
337
- ```
338
-
339
- ### 层 4: Entity / Model 层
340
-
341
- **扫描文件**: `*/entity/*.java`, `*/domain/*.java`, `*/dto/*.java`, `*/vo/*.java`
342
-
343
- **提取内容**:
344
- - 实体类 + `@TableName` / `@Table` 注解
345
- - 字段列表(名称 + 类型 + 数据库列名 + 注解)
346
- - DTO/VO 与 Entity 的映射关系
347
- - 枚举类型定义
348
-
349
- **输出示例**:
350
- ```
351
- ### SysUser (Entity)
352
- - **路径**: `com.example.system.domain.SysUser`
353
- - **表名**: sys_user
354
- - **字段**:
355
- | 字段 | 类型 | 列名 | 注解 | 说明 |
356
- |------|------|------|------|------|
357
- | userId | Long | user_id | @TableId | 主键 |
358
- | userName | String | user_name | @NotBlank | 用户名 |
359
- | nickName | String | nick_name | - | 昵称 |
360
- | email | String | email | @Email | 邮箱 |
361
- | phonenumber | String | phonenumber | - | 手机号 |
362
- | status | String | status | - | 状态(0正常 1停用) |
363
- | createTime | Date | create_time | - | 创建时间 |
364
-
365
- ### UserVO (View Object)
366
- - **路径**: `com.example.system.vo.UserVO`
367
- - **来源**: SysUser + 关联查询(deptName, roleNames)
368
- - **字段**: userId, userName, nickName, deptName, roleNames, status, createTime
369
- ```
370
-
371
- ### 层 5: Security 层
372
-
373
- **扫描文件**: `*/security/**/*.java`, `*/config/SecurityConfig.java`
374
-
375
- **提取内容**:
376
- - Security Filter Chain 配置
377
- - 认证方式(JWT / Session / OAuth2)
378
- - 权限模型(RBAC / ABAC)
379
- - 密码编码方式
380
- - CORS 配置
381
-
382
- **输出示例**:
383
- ```
384
- ### Security 配置
385
- - **文件**: `com.example.config.SecurityConfig`
386
- - **认证方式**: JWT (Bearer Token)
387
- - **Filter Chain**:
388
- 1. JwtAuthenticationTokenFilter — 从 header 解析 token,验证签名
389
- 2. LogoutSuccessHandler — 清除 token
390
- 3. AuthenticationEntryPoint — 401 未认证响应
391
- 4. AccessDeniedHandler — 403 无权限响应
392
- - **公开路径**: /login, /register, /captchaImage, /doc.html
393
- - **密码编码**: BCryptPasswordEncoder
394
- - **Token 存储**: Redis (key: login_tokens:{uuid})
395
- ```
396
-
397
- ### 层 6: 配置层
398
-
399
- **扫描文件**: `application.yml`, `application-*.yml`, `bootstrap.yml`
400
-
401
- **提取内容**:
402
- - 服务端口和上下文路径
403
- - 数据库连接配置
404
- - Redis 配置
405
- - 中间件配置
406
- - Profile 环境区分
407
-
408
- **输出示例**:
409
- ```
410
- ### application.yml 核心配置
411
- | 配置项 | 值 | 说明 |
412
- |--------|------|------|
413
- | server.port | 8080 | 服务端口 |
414
- | spring.datasource.url | jdbc:mysql://... | 数据库连接 |
415
- | spring.redis.host | localhost | Redis 地址 |
416
- | mybatis-plus.mapper-locations | classpath*:mapper/**/*Mapper.xml | Mapper XML |
417
- | knife4j.enable | true | API 文档 |
418
- ```
419
-
420
- ## 输出模板
421
-
422
- ### README.md 章节结构
423
-
424
- ```markdown
425
- # {项目名}
426
-
427
- ## 项目概述
428
- 系统功能描述
429
-
430
- ## 技术栈
431
- | 技术 | 版本 | 用途 |
432
- |------|------|------|
433
-
434
- ## 架构设计
435
- ### 架构图(ASCII)
436
- ### 数据流图
437
- 请求 → Filter → Controller → Service → Repository → Database → 返回
438
-
439
- ## 模块结构
440
- Maven/Gradle 模块依赖关系图
441
-
442
- ## API 接口文档
443
- 按模块分组的 API 端点表
444
-
445
- ## 安全设计
446
- 认证流程 + 权限模型
447
-
448
- ## 数据模型
449
- Entity 关系图(ER 图 ASCII)
450
-
451
- ## 配置说明
452
- 关键配置项 + 环境变量
453
-
454
- ## 构建 & 部署
455
- Maven/Gradle 命令 + Docker 配置
456
- ```
457
-
458
- ### COMPONENT.md 章节结构
459
-
460
- ```markdown
461
- # 模块文档
462
-
463
- ## Controller 层
464
- 按模块分组的 API 端点表
465
-
466
- ## Service 层
467
- 接口定义 + 业务逻辑说明
468
-
469
- ## Repository / Mapper 层
470
- 数据访问方法 + SQL 映射
471
-
472
- ## 数据模型
473
- Entity + DTO + VO 定义 + 关系图
474
-
475
- ## 枚举类型
476
- 业务枚举定义
477
-
478
- ## 跨模块依赖
479
- 模块间调用关系图
480
- ```
481
-
482
- ## 模块边界识别
483
-
484
- 以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
485
-
486
- | 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
487
- |----|----------|-------------|---------------------|
488
- | Maven 模块层 | Maven `<modules>` | 每个模块 | artifactId kebab-case |
489
- | Controller 层 | `src/main/java/**/controller/` | 每个子目录 | 目录名 kebab-case |
490
- | Service 层 | `src/main/java/**/service/` | 每个子目录 | 目录名 kebab-case |
491
- | Config 层 | `src/main/java/**/config/` | 每个子目录 | 目录名 kebab-case |
492
- | Entity 层 | `src/main/java/**/entity/` | 每个文件 | 类名 kebab-case |
493
-
494
- **不视为独立模块的情况**:
495
- - 单文件入口(如 `Application.java`)
496
- - 纯导出桶文件(仅有 re-export)
497
- - 工具函数目录(`util/`, `helper/`)— 合并为一个模块
498
- - DTO/VO 目录(`dto/`, `vo/`)— 合并为一个模块
499
-
500
- ## Token 管理
501
-
502
- - 大模块(>20 文件)拆分为子任务
503
- - 每个子任务分析 ≤10 文件
504
- - `pom.xml` / `build.gradle` 依赖分析单独一个子任务
505
- - MyBatis XML 映射文件与对应 Mapper 接口一起分析
506
- - 测试文件(`src/test/`)单独分析
507
- - 配置文件(`application*.yml`)单独分析