datai/datai-scenes/datai-scene-salesforce/docs/sessions/2026-01-28-003-session.md

184 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 会话记录
## 元数据
- 需求编号003
- 开始时间2026-01-28
- 结束时间2026-01-28
- 当前阶段:阶段 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 提问**
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的全部功能对于源 orgSource 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 源 orgSource Org的元数据操作能力包括元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等功能。
## 执行阶段
### 阶段 1需求定义与入库
- 状态:已完成
- 生成文档:[需求文档](../requirements/2026-01-28-003-MetadataAPI源org实现.md)
- 关键决策:
- 实现所有 Metadata API 功能模块
- 使用 SessionManager 管理会话
- 提供 Service 层和 Controller 层
- 创建数据库表存储部署结果、检索结果等数据
- 删除现有 Mapper 文件,重新实现所有功能
- 直接使用 metadata.jar 中的现有类
- 优先使用 datai-salesforce-common 模块中的现有异常
- 暂不考虑性能优化(连接池、并发控制、缓存)
### 阶段 2方案设计
- 状态:已完成
- 生成文档:[设计文档](../design/2026-02-02-003-01-连接管理-设计.md)
- 关键决策:
- 使用 AbstractConnectionFactory 提供连接缓存与刷新能力
- 固定 source orgType 作为连接管理目标
- 通过 SessionManager 获取 Session ID 与 Server URL
- 连接状态写入 datai_metadata_connection 表
### 阶段 3方案决策
- 状态:已完成
- 生成文档:[决策记录](../decisions/2026-02-02-003-01-ADR-连接管理技术选型.md)
- 关键决策:
- 选择方案 1使用 AbstractConnectionFactory + SessionManager
- 与认证和会话管理、Apex 连接管理保持一致
- 连接缓存与 Session 有效性检查由基础设施统一提供
### 阶段 4数据库结构
- 状态:跳过
- 原因:当前子需求不需要 SQL 脚本
### 阶段 5提示词生成
- 状态:已完成
- 生成文档:[提示词文档](../prompts/2026-02-02-003-01-prompt-Metadata连接管理.md)
- 关键决策:
- 引用真源:需求文档、设计文档、决策记录
- 明确输出结构Factory、Service、Controller、Mapper、DTO/VO、Config
- 约束不生成 SQL 脚本
### 阶段 6代码生成
- 状态:已完成
- 生成文件:
- `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 和数据模型。
### 阶段 7会话记录
- 状态:已完成
- 生成文档:无
- 关键决策:完整记录了当前会话的所有信息
### 阶段 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的全部功能对于源 orgSource 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)
## 回退记录