17 KiB
会话记录
元数据
- 需求编号:003
- 子需求编号:003-01
- 子需求名称:连接管理
- 开始时间:2026-01-28
- 结束时间:2026-02-05
- 当前阶段:阶段 9:复盘与接口
- 状态:已完成
需求澄清记录
原始需求
严格遵守项目规则,现在我有个需求,想将 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\metadata-module.md 中的功能结合当前模块的实际情况,在 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-metadata 模块下进行实现,默认实现源org类型
第一轮澄清
AI 提问:
- 这个功能的核心目标是什么?
- 这个功能涉及哪些业务场景?
- 这个功能需要支持哪些用户角色?
- 功能边界:根据
metadata-module.md文档,Metadata API 包含大量功能(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的? - 使用场景:这个模块的主要使用场景是什么?
- 用户角色:谁会使用这个模块?
- 现有实现:我看到
datai-salesforce-metadata模块已经有一些 Mapper 文件(DataiMetaComponentMapper、DataiMetaDeployHistoryMapper 等),说明已经有部分实现。新的需求是完善现有功能?还是重新实现所有功能?还是基于现有实现进行扩展? - 依赖包:我看到
datai-salesforce-metadata/src/main/resources/lib/metadata.jar已经存在,这个是 Salesforce 官方的 Metadata API 客户端吗?我们需要基于这个包进行封装吗? - 认证集成:与 Partner API、Apex API 模块类似,是否也需要使用
datai-salesforce-auth的 SessionManager 管理会话? - 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
- 异常处理:是否需要自定义异常类?还是使用
datai-salesforce-common模块中的现有异常? - 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
- 连接管理:是否需要连接池?还是每次调用都创建新连接?
- 并发控制:是否需要限流?还是暂不考虑?
- 缓存策略:是否需要缓存元数据描述结果?
用户回答:
1、实现Metadata API的全部功能,对于源 org(Source Org)
2、Mapper 文件全部删除,忽略,重新实现所有功能
3、模块主要场景就是 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\metadata-module.md 文档中的主要场景
4、需要使用 datai-salesforce-auth 的 SessionManager 管理会话
5、需要独立的 Controller 层
6、需要数据库表(存储编译结果、测试结果等),实际当前模块中需要储存下来的数据,创建个表进行存储
7、使用 datai-salesforce-common 模块中的现有异常,没有则自定义
8、日志、性能相关暂不考虑
澄清总结
- 功能范围:实现 Metadata API 的所有功能模块(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据)
- 业务流程:用户调用 REST API → Service 层处理 → 使用 metadata.jar 调用 Salesforce API → 存储结果到数据库 → 返回结果
- 数据交互:需要创建数据库表存储部署结果、检索结果等数据
- 性能要求:暂不考虑连接池、并发控制、缓存等性能优化,异步操作需要轮询检查状态
- 安全要求:集成
datai-salesforce-auth模块的会话管理,使用 SessionManager 获取 Session ID 和 Server URL - 兼容性要求:支持 Salesforce Metadata API v65.0,兼容 Java 22 和 Spring Boot
- 数据存储要求:需要创建表存储部署结果、检索结果等数据,支持历史记录查询和统计分析
- 代码重构:删除现有 Mapper 文件,重新实现所有功能
需求描述
在 datai-salesforce-metadata 模块中实现 Salesforce Metadata API 的完整功能,提供对 Salesforce 源 org(Source Org)的元数据操作能力,包括元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等功能。
执行阶段
阶段 1:需求定义与入库
- 状态:已完成
- 生成文档:需求文档
- 关键决策:
- 实现所有 Metadata API 功能模块
- 使用 SessionManager 管理会话
- 提供 Service 层和 Controller 层
- 创建数据库表存储部署结果、检索结果等数据
- 删除现有 Mapper 文件,重新实现所有功能
- 直接使用 metadata.jar 中的现有类
- 优先使用 datai-salesforce-common 模块中的现有异常
- 暂不考虑性能优化(连接池、并发控制、缓存)
阶段 2:方案设计
- 状态:已完成
- 生成文档:设计文档
- 关键决策:
- 使用 AbstractConnectionFactory 提供连接缓存与刷新能力
- 固定 source orgType 作为连接管理目标
- 通过 SessionManager 获取 Session ID 与 Server URL
- 连接状态写入 datai_metadata_connection 表
阶段 3:方案决策
- 状态:已完成
- 生成文档:决策记录
- 关键决策:
- 选择方案 1:使用 AbstractConnectionFactory + SessionManager
- 与认证和会话管理、Apex 连接管理保持一致
- 连接缓存与 Session 有效性检查由基础设施统一提供
阶段 4:数据库结构
- 状态:跳过
- 原因:当前子需求不需要 SQL 脚本
阶段 5:提示词生成
- 状态:已完成
- 生成文档:提示词文档
- 关键决策:
- 引用真源:需求文档、设计文档、决策记录
- 明确输出结构:Factory、Service、Controller、Mapper、DTO/VO、Config
- 约束不生成 SQL 脚本
阶段 6:代码生成(子需求 003-01)
- 状态:已完成
- 生成文件:
datai-salesforce-metadata/src/main/java/com/datai/metadata/model/domain/DataiMetadataConnection.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetadataConnectionMapper.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/model/dto/SetCallOptionsDto.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/model/vo/ConnectionStatusVo.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/factory/MetadataConnectionFactory.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/service/IMetadataConnectionService.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/MetadataConnectionServiceImpl.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/controller/MetadataConnectionController.javadatai-salesforce-metadata/src/main/java/com/datai/metadata/config/MetadataConnectionConfig.java
- 代码生成器:未使用
- 备注:按照 Prompt 要求生成了所有代码文件,包含 REST API、Service、Factory、Mapper、Domain、DTO、VO 和 Config。单元测试文件待补充。
阶段 7:会话记录(子需求 003-01)
- 状态:已完成
- 生成文档:无
- 关键决策:
- 更新了会话记录的元数据(子需求编号、子需求名称、结束时间、当前阶段、状态)
- 完整记录了子需求 003-01 的执行过程
- 记录了所有生成的文档和代码文件
- 会话记录内容:
- 需求澄清记录(原始需求、第一轮澄清、澄清总结)
- 需求描述
- 执行阶段(阶段 1-7 的详细记录)
- 对话记录
- 生成的文档和代码文件列表
- 回退记录
阶段 8:变更日志(子需求 003-01)
- 状态:已完成
- 生成文档:变更日志
- 关键决策:
- 创建了详细的变更日志,记录所有新增功能、API 接口、数据模型和代码文件
- 更新了需求文档,添加变更日志引用
- 变更日志包含元数据、变更概述、变更内容、影响范围、技术实现要点、测试要求和待办事项
- 变更内容摘要:
- 新增 Metadata 连接工厂和连接状态管理功能
- 新增 7 个 REST API 接口
- 新增 3 个数据模型(Domain、DTO、VO)
- 新增 9 个代码文件
阶段 9:复盘与接口(子需求 003-01)
- 状态:已完成
- 生成文档:
- 关键决策:
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 创建了完整的 API 文档,包含 7 个接口的详细说明
- 提取了 3 条有效的 Prompt 技巧和 3 个避免的坑
- 提出了模板迭代的建议
- 复盘主要结论:
- 成功经验:SSOT 流程严格执行、复用现有基础设施、详细的提示词设计、清晰的架构设计
- 改进点:单元测试需要补充、阶段转换沟通可以更充分、API 文档可以更加详细
- 行动计划:补充单元测试、优化阶段转换沟通、完善 API 文档
阶段 10:代码提交
- 状态:未开始
对话记录
用户:严格遵守项目规则,现在我有个需求,想将 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\metadata-module.md 中的功能结合当前模块的实际情况,在 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-metadata 模块下进行实现,默认实现源org类型
AI:我理解您的需求。在创建需求文档前,我需要先澄清一些问题:
第一轮澄清:
- 这个功能的核心目标是什么?
- 这个功能涉及哪些业务场景?
- 这个功能需要支持哪些用户角色?
- 功能边界:根据
metadata-module.md文档,Metadata API 包含大量功能(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的? - 使用场景:这个模块的主要使用场景是什么?
- 用户角色:谁会使用这个模块?
- 现有实现:我看到
datai-salesforce-metadata模块已经有一些 Mapper 文件(DataiMetaComponentMapper、DataiMetaDeployHistoryMapper 等),说明已经有部分实现。新的需求是完善现有功能?还是重新实现所有功能?还是基于现有实现进行扩展? - 依赖包:我看到
datai-salesforce-metadata/src/main/resources/lib/metadata.jar已经存在,这个是 Salesforce 官方的 Metadata API 客户端吗?我们需要基于这个包进行封装吗? - 认证集成:与 Partner API、Apex API 模块类似,是否也需要使用
datai-salesforce-auth的 SessionManager 管理会话? - 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
- 异常处理:是否需要自定义异常类?还是使用
datai-salesforce-common模块中的现有异常? - 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
- 连接管理:是否需要连接池?还是每次调用都创建新连接?
- 并发控制:是否需要限流?还是暂不考虑?
- 缓存策略:是否需要缓存元数据描述结果?
用户:
1、实现Metadata API的全部功能,对于源 org(Source Org)
2、Mapper 文件全部删除,忽略,重新实现所有功能
3、模块主要场景就是 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\metadata-module.md 文档中的主要场景
4、需要使用 datai-salesforce-auth 的 SessionManager 管理会话
5、需要独立的 Controller 层
6、需要数据库表(存储编译结果、测试结果等),实际当前模块中需要储存下来的数据,创建个表进行存储
7、使用 datai-salesforce-common 模块中的现有异常,没有则自定义
8、日志、性能相关暂不考虑
AI:好的,感谢您的详细回答。让我总结一下需求:
澄清总结:
- 功能范围:实现 Metadata API 的所有功能模块(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据)
- 使用场景:元数据部署(部署 Apex 类、触发器、页面、自定义对象等)、元数据检索(检索组织中的元数据、导出元数据到本地)、CI/CD 集成(自动化部署流程、持续集成测试、环境间元数据同步)、元数据管理(批量更新元数据、删除不需要的组件)、分析和报告(创建和更新报告、管理仪表板)
- 认证集成:使用
datai-salesforce-auth的SessionManager管理会话,通过 SessionManager 获取 Session ID 和 Server URL - 模块设计:提供 Service 层和 Controller 层(REST API),默认实现 source org 类型(源 org),需要数据库表(存储部署结果、检索结果等数据),删除现有 Mapper 文件,重新实现所有功能
- 技术实现:直接使用
metadata.jar中的现有类(Metadata、CustomObject、CustomField、DeployOptions、DeployResult 等),不进行二次封装 - 异常处理:优先使用
datai-salesforce-common模块中的现有异常,没有的话就自定义 - 暂不考虑的功能:日志记录、连接池、并发控制、缓存策略、限流
- 数据存储要求:需要创建表存储部署结果、检索结果等数据,支持历史记录查询和统计分析
还有其他需要补充的吗?
用户:没有,创建需求文档
AI:好的,我现在开始创建需求文档。
生成的文档(子需求 003-01)
需求文档
- 子需求文档 - Metadata API 连接管理子需求文档
设计文档
- 设计文档 - Metadata API 连接管理设计文档
决策记录
- 决策记录 - Metadata 连接管理技术选型决策记录
提示词文档
- 提示词文档 - Metadata 连接管理代码生成提示词
生成的代码文件
datai-salesforce-metadata/src/main/java/com/datai/metadata/model/domain/DataiMetadataConnection.java- 连接状态实体类datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetadataConnectionMapper.java- MyBatis Plus Mapperdatai-salesforce-metadata/src/main/java/com/datai/metadata/model/dto/SetCallOptionsDto.java- 调用选项 DTOdatai-salesforce-metadata/src/main/java/com/datai/metadata/model/vo/ConnectionStatusVo.java- 连接状态 VOdatai-salesforce-metadata/src/main/java/com/datai/metadata/factory/MetadataConnectionFactory.java- 连接工厂datai-salesforce-metadata/src/main/java/com/datai/metadata/service/IMetadataConnectionService.java- Service 接口datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/MetadataConnectionServiceImpl.java- Service 实现datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/MetadataConnectionController.java- REST API Controllerdatai-salesforce-metadata/src/main/java/com/datai/metadata/config/MetadataConnectionConfig.java- 配置类
新增对话记录(子需求 003-01 代码生成阶段)
2026-02-05 用户:d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-003-01-连接管理.md 更新相关文档
AI:已完成子需求 003-01 需求文档的相关文档更新:
- 修正了设计文档的相对路径
- 添加了决策记录链接
- 保留了提示词文档链接
2026-02-05 用户:进入子需求 003-01 的代码生成阶段(阶段 6)
AI:根据技能书指引,开始执行子需求 003-01 的阶段 6:代码生成。
- 读取了提示词文档和设计文档
- 检查了数据库表需求
- 生成了 9 个代码文件
2026-02-05 用户:进入下一阶段(阶段 7:会话记录)
AI:根据技能书指引,开始执行子需求 003-01 的阶段 7:会话记录。
- 更新了会话记录的元数据
- 补充了阶段 7 的详细信息
- 添加了生成的文档和代码文件列表
- 添加了新增对话记录
2026-02-05 用户:进入下一阶段(阶段 8:变更日志)
AI:根据技能书指引,开始执行子需求 003-01 的阶段 8:变更日志。
- 创建了详细的变更日志文档
- 记录了所有新增功能、API 接口、数据模型和代码文件
- 更新了需求文档,添加变更日志引用
- 更新了会话记录的阶段 8 信息
2026-02-05 用户:进入下一阶段(阶段 9:复盘与接口)
AI:根据技能书指引,开始执行子需求 003-01 的阶段 9:复盘与接口。
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 创建了完整的 API 文档,包含 7 个接口的详细说明
- 提取了 3 条有效的 Prompt 技巧和 3 个避免的坑
- 更新了需求文档,添加复盘和 API 文档引用
- 更新了会话记录的阶段 9 信息
回退记录
无