2026-02-02 16:12:25 +08:00
|
|
|
|
# 会话记录
|
|
|
|
|
|
|
|
|
|
|
|
## 元数据
|
|
|
|
|
|
- 需求编号:003
|
|
|
|
|
|
- 开始时间:2026-01-28
|
|
|
|
|
|
- 结束时间:2026-01-28
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 当前阶段:阶段 9:复盘与接口
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
## 需求澄清记录
|
|
|
|
|
|
|
|
|
|
|
|
### 原始需求
|
|
|
|
|
|
严格遵守项目规则,现在我有个需求,想将 `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 提问**:
|
|
|
|
|
|
1. 这个功能的核心目标是什么?
|
|
|
|
|
|
2. 这个功能涉及哪些业务场景?
|
|
|
|
|
|
3. 这个功能需要支持哪些用户角色?
|
|
|
|
|
|
4. 功能边界:根据 `metadata-module.md` 文档,Metadata API 包含大量功能(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的?
|
|
|
|
|
|
5. 使用场景:这个模块的主要使用场景是什么?
|
|
|
|
|
|
6. 用户角色:谁会使用这个模块?
|
|
|
|
|
|
7. 现有实现:我看到 `datai-salesforce-metadata` 模块已经有一些 Mapper 文件(DataiMetaComponentMapper、DataiMetaDeployHistoryMapper 等),说明已经有部分实现。新的需求是完善现有功能?还是重新实现所有功能?还是基于现有实现进行扩展?
|
|
|
|
|
|
8. 依赖包:我看到 `datai-salesforce-metadata/src/main/resources/lib/metadata.jar` 已经存在,这个是 Salesforce 官方的 Metadata API 客户端吗?我们需要基于这个包进行封装吗?
|
|
|
|
|
|
9. 认证集成:与 Partner API、Apex API 模块类似,是否也需要使用 `datai-salesforce-auth` 的 SessionManager 管理会话?
|
|
|
|
|
|
10. 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
|
|
|
|
|
|
11. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
|
|
|
|
|
|
12. 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
|
|
|
|
|
|
13. 连接管理:是否需要连接池?还是每次调用都创建新连接?
|
|
|
|
|
|
14. 并发控制:是否需要限流?还是暂不考虑?
|
|
|
|
|
|
15. 缓存策略:是否需要缓存元数据描述结果?
|
|
|
|
|
|
|
|
|
|
|
|
**用户回答**:
|
|
|
|
|
|
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:需求定义与入库
|
|
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文档:[需求文档](../requirements/2026-01-28-003-MetadataAPI源org实现.md)
|
|
|
|
|
|
- 关键决策:
|
|
|
|
|
|
- 实现所有 Metadata API 功能模块
|
|
|
|
|
|
- 使用 SessionManager 管理会话
|
|
|
|
|
|
- 提供 Service 层和 Controller 层
|
|
|
|
|
|
- 创建数据库表存储部署结果、检索结果等数据
|
|
|
|
|
|
- 删除现有 Mapper 文件,重新实现所有功能
|
|
|
|
|
|
- 直接使用 metadata.jar 中的现有类
|
|
|
|
|
|
- 优先使用 datai-salesforce-common 模块中的现有异常
|
|
|
|
|
|
- 暂不考虑性能优化(连接池、并发控制、缓存)
|
|
|
|
|
|
|
|
|
|
|
|
### 阶段 2:方案设计
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文档:[设计文档](../design/2026-02-02-003-01-连接管理-设计.md)
|
|
|
|
|
|
- 关键决策:
|
|
|
|
|
|
- 使用 AbstractConnectionFactory 提供连接缓存与刷新能力
|
|
|
|
|
|
- 固定 source orgType 作为连接管理目标
|
|
|
|
|
|
- 通过 SessionManager 获取 Session ID 与 Server URL
|
|
|
|
|
|
- 连接状态写入 datai_metadata_connection 表
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 3:方案决策
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文档:[决策记录](../decisions/2026-02-02-003-01-ADR-连接管理技术选型.md)
|
|
|
|
|
|
- 关键决策:
|
|
|
|
|
|
- 选择方案 1:使用 AbstractConnectionFactory + SessionManager
|
|
|
|
|
|
- 与认证和会话管理、Apex 连接管理保持一致
|
|
|
|
|
|
- 连接缓存与 Session 有效性检查由基础设施统一提供
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 4:数据库结构
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:跳过
|
|
|
|
|
|
- 原因:当前子需求不需要 SQL 脚本
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 5:提示词生成
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文档:[提示词文档](../prompts/2026-02-02-003-01-prompt-Metadata连接管理.md)
|
|
|
|
|
|
- 关键决策:
|
|
|
|
|
|
- 引用真源:需求文档、设计文档、决策记录
|
|
|
|
|
|
- 明确输出结构:Factory、Service、Controller、Mapper、DTO/VO、Config
|
|
|
|
|
|
- 约束不生成 SQL 脚本
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 6:代码生成
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文件:
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/factory/MetadataConnectionFactory.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/service/IMetadataConnectionService.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/MetadataConnectionServiceImpl.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/MetadataConnectionController.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/model/domain/DataiMetadataConnection.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/model/dto/SetCallOptionsDto.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/model/vo/ConnectionStatusVo.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetadataConnectionMapper.java`
|
|
|
|
|
|
- `datai-salesforce-metadata/src/main/java/com/datai/metadata/config/MetadataConnectionConfig.java`
|
|
|
|
|
|
- 代码生成器:未使用(不涉及表新增)
|
|
|
|
|
|
- 备注:按照 Prompt 要求生成了所有代码文件,包含 REST API、Service、Factory 和数据模型。
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 7:会话记录
|
2026-02-03 16:51:09 +08:00
|
|
|
|
- 状态:已完成
|
|
|
|
|
|
- 生成文档:无
|
|
|
|
|
|
- 关键决策:完整记录了当前会话的所有信息
|
2026-02-02 16:12:25 +08:00
|
|
|
|
|
|
|
|
|
|
### 阶段 8:变更日志
|
|
|
|
|
|
- 状态:未开始
|
|
|
|
|
|
|
|
|
|
|
|
### 阶段 9:复盘与接口
|
|
|
|
|
|
- 状态:未开始
|
|
|
|
|
|
|
|
|
|
|
|
### 阶段 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**:我理解您的需求。在创建需求文档前,我需要先澄清一些问题:
|
|
|
|
|
|
|
|
|
|
|
|
**第一轮澄清**:
|
|
|
|
|
|
1. 这个功能的核心目标是什么?
|
|
|
|
|
|
2. 这个功能涉及哪些业务场景?
|
|
|
|
|
|
3. 这个功能需要支持哪些用户角色?
|
|
|
|
|
|
4. 功能边界:根据 `metadata-module.md` 文档,Metadata API 包含大量功能(元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的?
|
|
|
|
|
|
5. 使用场景:这个模块的主要使用场景是什么?
|
|
|
|
|
|
6. 用户角色:谁会使用这个模块?
|
|
|
|
|
|
7. 现有实现:我看到 `datai-salesforce-metadata` 模块已经有一些 Mapper 文件(DataiMetaComponentMapper、DataiMetaDeployHistoryMapper 等),说明已经有部分实现。新的需求是完善现有功能?还是重新实现所有功能?还是基于现有实现进行扩展?
|
|
|
|
|
|
8. 依赖包:我看到 `datai-salesforce-metadata/src/main/resources/lib/metadata.jar` 已经存在,这个是 Salesforce 官方的 Metadata API 客户端吗?我们需要基于这个包进行封装吗?
|
|
|
|
|
|
9. 认证集成:与 Partner API、Apex API 模块类似,是否也需要使用 `datai-salesforce-auth` 的 SessionManager 管理会话?
|
|
|
|
|
|
10. 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
|
|
|
|
|
|
11. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
|
|
|
|
|
|
12. 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
|
|
|
|
|
|
13. 连接管理:是否需要连接池?还是每次调用都创建新连接?
|
|
|
|
|
|
14. 并发控制:是否需要限流?还是暂不考虑?
|
|
|
|
|
|
15. 缓存策略:是否需要缓存元数据描述结果?
|
|
|
|
|
|
|
|
|
|
|
|
**用户**:
|
|
|
|
|
|
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**:好的,我现在开始创建需求文档。
|
|
|
|
|
|
|
|
|
|
|
|
## 生成的文档
|
|
|
|
|
|
- [需求文档](../requirements/2026-01-28-003-MetadataAPI源org实现.md)
|
|
|
|
|
|
|
|
|
|
|
|
## 回退记录
|
|
|
|
|
|
无
|