datai/datai-scenes/datai-scene-salesforce/docs/retros/2026-02-05-004-03-retro.md

6.7 KiB
Raw Blame History

复盘文档

元数据

  • 需求编号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. 日志设计:增加日志字段设计的检查清单,确保日志字段的完整性。

计划在下一个迭代中更新提示词模板,增加上述内容。

相关文档