129 lines
6.7 KiB
Markdown
129 lines
6.7 KiB
Markdown
# 复盘文档
|
||
|
||
## 元数据
|
||
- 需求编号:004-03
|
||
- 创建时间:2026-02-05
|
||
- 创建人:AI Assistant
|
||
- 状态:已完成
|
||
|
||
## 复盘概述
|
||
本次复盘对 Tooling API 开发工具功能的开发过程进行了全面回顾,从需求定义到变更日志的每个阶段都进行了分析,总结了成功经验、改进点、问题分析和行动计划,旨在提高后续开发过程的效率和质量。
|
||
|
||
## 目标与实际产出对比
|
||
|
||
### 目标
|
||
- 实现 Tooling API 开发工具功能,包括代码覆盖率查询、测试队列管理、日志获取、成员查询
|
||
- 遵循 SSOT 流程,确保所有开发活动都有文档依据
|
||
- 生成符合项目规范的代码
|
||
- 提供完整的 REST API 接口文档
|
||
|
||
### 实际产出
|
||
- 成功实现了开发工具功能,包括代码覆盖率查询、测试队列管理、日志获取、成员查询
|
||
- 严格按照 SSOT 流程执行,每个阶段都有相应的文档
|
||
- 生成的代码符合项目规范,包含 14 个代码文件
|
||
- 提供 8 个 REST API 接口
|
||
- 完整记录了会话过程,包括对话记录、生成的文档和代码、关键决策等
|
||
- 创建了详细的变更日志和复盘文档
|
||
|
||
## 成功经验
|
||
|
||
### 1. SSOT 流程的严格执行
|
||
从需求定义到变更日志的每个阶段都严格按照项目规则执行,确保了所有开发活动都有文档依据,提高了代码的可追溯性和可维护性。特别是在阶段 5(提示词生成)中,详细的提示词设计为后续的代码生成提供了清晰的指导。
|
||
|
||
### 2. 复用现有组件
|
||
成功复用了 004-01 的 ToolingConnectionFactory 进行连接管理,复用了 SoqlBuilder 工具类构建 SOQL 查询语句,减少了重复代码,提高了开发效率。
|
||
|
||
### 3. 异步日志记录设计
|
||
使用 Spring @Async 异步记录操作日志,避免了日志记录对主流程性能的影响,这是一个很好的性能优化实践。
|
||
|
||
### 4. 完整的错误码体系
|
||
定义了 11 个标准错误码(TOOLING_DEVTOOLS_001 ~ TOOLING_DEVTOOLS_011),为错误处理提供了统一的标准,便于问题定位和排查。
|
||
|
||
### 5. 分层架构设计
|
||
采用 Controller → Service → Factory → Tooling API 的分层架构,职责清晰,便于维护和扩展。
|
||
|
||
## 改进点
|
||
|
||
### 1. DTO 设计可以更加灵活
|
||
当前的 DTO 设计比较固定,可以考虑使用 Builder 模式或 MapStruct 进行对象映射,提高代码的灵活性。
|
||
|
||
### 2. 单元测试覆盖率可以提升
|
||
虽然生成了代码,但单元测试的覆盖率还有提升空间,特别是异常场景的测试。
|
||
|
||
### 3. API 文档的自动化生成
|
||
可以探索使用 Swagger 等工具自动生成 API 文档,提高文档的准确性和维护性。
|
||
|
||
### 4. 缓存策略可以考虑
|
||
对于代码覆盖率等查询结果,可以考虑引入缓存策略,减少重复查询,提高性能。
|
||
|
||
## 问题分析
|
||
|
||
### 问题 1:代码生成器生成的实体类命名不一致
|
||
- **现象**:代码生成器生成的实体类名为 `DataiToolingDevtoolsOperationLog`,而手动生成的业务代码使用 `ToolingDevTools` 前缀
|
||
- **根因**:代码生成器使用表名作为实体类名,与业务代码的命名规范不完全一致
|
||
- **解决方案**:在提示词中明确指定实体类命名规范,或在代码生成后手动调整
|
||
|
||
### 问题 2:部分接口的参数校验可以更加严格
|
||
- **现象**:部分接口的参数校验只做了基本的非空校验,缺少更严格的业务规则校验
|
||
- **根因**:提示词中对参数校验的要求不够详细
|
||
- **解决方案**:在后续的提示词设计中,增加更详细的参数校验要求
|
||
|
||
### 问题 3:日志记录的字段可以更加丰富
|
||
- **现象**:操作日志记录的字段虽然完整,但缺少一些业务上下文信息
|
||
- **根因**:设计阶段对日志字段的考虑不够全面
|
||
- **解决方案**:在后续迭代中,根据实际需求补充日志字段
|
||
|
||
## 行动计划
|
||
|
||
| 序号 | 改进项 | 责任人 | 时间节点 | 优先级 |
|
||
|------|--------|--------|----------|--------|
|
||
| 1 | 优化 DTO 设计,考虑使用 Builder 模式 | AI Assistant | 下一个迭代 | 中 |
|
||
| 2 | 提升单元测试覆盖率至 80% 以上 | AI Assistant | 下一个迭代 | 高 |
|
||
| 3 | 探索 Swagger 自动生成 API 文档 | 项目团队 | 下一个迭代 | 中 |
|
||
| 4 | 评估代码覆盖率查询结果的缓存策略 | 项目团队 | 后续迭代 | 低 |
|
||
| 5 | 统一代码生成器和手动代码的命名规范 | AI Assistant | 立即执行 | 高 |
|
||
| 6 | 完善接口参数校验 | AI Assistant | 下一个迭代 | 中 |
|
||
|
||
## 提取模式
|
||
|
||
### 有效的 Prompt 技巧
|
||
|
||
1. **引用真源**:在提示词开头引用需求文档和设计文档的链接,确保生成的代码符合需求和设计要求。
|
||
- 示例:`## 引用真源 - 需求文档:[004-03-开发工具功能](../requirements/sub/2026-01-28-004-03-开发工具功能.md)`
|
||
|
||
2. **明确的输出格式**:在提示词中明确指定需要生成的文件、路径、格式等,可以提高生成代码的准确性和规范性。
|
||
- 示例:`## 输出格式要求 - 必须生成以下文件(共 17 个文件)`
|
||
|
||
3. **详细的错误码定义**:在提示词中定义完整的错误码体系,确保错误处理的一致性。
|
||
- 示例:`TOOLING_DEVTOOLS_001("TOOLING_DEVTOOLS_001", "查询条件不能为空")`
|
||
|
||
### 避免的坑
|
||
|
||
1. **不要忽略代码生成器的命名规范**:代码生成器生成的实体类名可能与手动代码的命名规范不一致,需要在设计阶段就明确命名规范。
|
||
|
||
2. **不要忽略参数校验的详细要求**:在提示词中只指定基本的非空校验是不够的,需要明确业务规则校验的要求。
|
||
|
||
3. **不要忽略日志字段的完整性**:在设计阶段需要充分考虑日志需要记录的字段,避免后续补充。
|
||
|
||
## 模板迭代
|
||
|
||
经过本次复盘,发现当前的提示词模板在以下方面可以改进:
|
||
|
||
1. **命名规范**:增加对代码生成器生成代码的命名规范要求,确保与手动代码保持一致。
|
||
|
||
2. **参数校验**:增加更详细的参数校验要求,包括业务规则校验。
|
||
|
||
3. **日志设计**:增加日志字段设计的检查清单,确保日志字段的完整性。
|
||
|
||
计划在下一个迭代中更新提示词模板,增加上述内容。
|
||
|
||
## 相关文档
|
||
- [需求文档](../requirements/sub/2026-01-28-004-03-开发工具功能.md)
|
||
- [设计文档](../design/2026-02-03-004-03-开发工具功能-设计.md)
|
||
- [决策文档](../decisions/2026-02-03-004-03-ADR-开发工具功能技术选型.md)
|
||
- [SQL 脚本](../sql/2026-02-03-004-03-开发工具操作日志.sql)
|
||
- [提示词文档](../prompts/2026-02-05-004-03-prompt-开发工具功能.md)
|
||
- [变更日志](../changelog/2026-02-05-004-03-changelog.md)
|
||
- [API 文档](../api-docs/2026-02-05-004-03-api.md)
|
||
- [会话记录](../sessions/2026-02-03-004-03-session.md)
|