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

268 lines
16 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.

# 会话记录
## 元数据
- 需求编号004
- 子需求编号004-01
- 子需求名称:连接管理
- 开始时间2026-01-28
- 结束时间2026-02-05
- 当前阶段:阶段 9闭环复盘和接口文档
- 状态:已完成
## 需求澄清记录
### 原始需求
严格遵守项目规则,现在我有个需求,想将 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\tooling-module.md` 中的功能结合当前模块的实际情况,在 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling` 模块下进行实现默认实现源org类型
### 第一轮澄清
**AI 提问**
1. 这个功能的核心目标是什么?
2. 这个功能涉及哪些业务场景?
3. 这个功能需要支持哪些用户角色?
4. 功能边界:根据 `tooling-module.md` 文档Tooling API 包含大量功能元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的?
5. 使用场景:这个模块的主要使用场景是什么?
6. 用户角色:谁会使用这个模块?
7. 依赖包:我看到 `datai-salesforce-tooling/src/main/resources/lib/tooling.jar` 已经存在,这个是 Salesforce 官方的 Tooling API 客户端吗?我们需要基于这个包进行封装吗?
8. 认证集成:与 Partner API、Apex API、Metadata API 模块类似,是否也需要使用 `datai-salesforce-auth` 的 SessionManager 管理会话?
9. 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
10. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
11. 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
12. 连接管理:是否需要连接池?还是每次调用都创建新连接?
13. 并发控制:是否需要限流?还是暂不考虑?
14. 缓存策略:是否需要缓存元数据描述结果?
15. SOQL 查询Tooling API 支持 SOQL 查询,是否需要实现查询功能?
**用户回答**
1、在 datai-salesforce-tooling 模块中实现 ToolingAPI 的全部功能,对于源 orgSource Org
2、全部实现
3、主要使用场景 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\tooling-module.md` 文档中所有的场景
4、也需要使用 datai-salesforce-auth 的 SessionManager 管理会话
5、需要独立的 Controller 层
6、需要数据库表存储编译结果、测试结果等实际当前模块中需要储存下来的数据创建个表进行存储
7、使用 datai-salesforce-common 模块中的现有异常,没有则自定义
8、日志、性能相关暂不考虑
9、需要实现查询功能
### 澄清总结
- **功能范围**:实现 Tooling API 的所有功能模块元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能)
- **业务流程**:用户调用 REST API → Service 层处理 → 使用 tooling.jar 调用 Salesforce API → 存储结果到数据库 → 返回结果
- **数据交互**:需要创建数据库表存储代码覆盖率、测试结果等数据
- **性能要求**:暂不考虑连接池、并发控制、缓存等性能优化,异步操作需要轮询检查状态
- **安全要求**:集成 `datai-salesforce-auth` 模块的会话管理,使用 SessionManager 获取 Session ID 和 Server URL
- **兼容性要求**:支持 Salesforce Tooling API v65.0,兼容 Java 22 和 Spring Boot
- **数据存储要求**:需要创建表存储代码覆盖率、测试结果等数据,支持历史记录查询和统计分析
- **SOQL 查询**:必须实现查询功能,这是 Tooling API 的核心特性
## 需求描述
`datai-salesforce-tooling` 模块中实现 Salesforce Tooling API 的完整功能,提供对 Salesforce 源 orgSource Org的开发工具和元数据操作能力包括元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能等。
## 执行阶段
### 阶段 1需求定义与入库
- 状态:已完成
- 生成文档:[需求文档](../requirements/2026-01-28-004-ToolingAPI源org实现.md)
- 关键决策:
- 实现所有 Tooling API 功能模块
- 使用 SessionManager 管理会话
- 提供 Service 层和 Controller 层
- 创建数据库表存储代码覆盖率、测试结果等数据
- 直接使用 tooling.jar 中的现有类
- 必须实现 SOQL 查询功能
- 优先使用 datai-salesforce-common 模块中的现有异常
- 暂不考虑性能优化(连接池、并发控制、缓存)
### 阶段 2方案设计子需求 004-01
- 状态:已完成
- 生成文档:[设计文档](../design/2026-02-03-004-01-连接管理-设计.md)
- 关键决策:
- 使用 AbstractConnectionFactory 提供连接缓存与刷新能力
- 固定 source orgType 作为连接管理目标
- 通过 SessionManager 获取 Session ID 与 Instance URL
- 使用 ConcurrentHashMap 实现线程安全的连接缓存
- 执行简单 SOQL 查询验证 Session 有效性
- 提供完整的 RESTful API 接口
### 阶段 3方案决策子需求 004-01
- 状态:已完成
- 生成文档:[决策记录](../decisions/2026-02-03-004-01-ADR-连接管理技术选型.md)
- 关键决策:
- 选择方案 1使用 AbstractConnectionFactory + SessionManager
- 选择方案 1使用 ConcurrentHashMap 缓存连接
- 选择方案 1执行简单 SOQL 查询验证 Session 有效性
- 选择方案 1同步记录日志
- 与认证和会话管理、Apex 连接管理、Metadata 连接管理保持一致
- 连接缓存与 Session 有效性检查由基础设施统一提供
### 阶段 4数据库结构子需求 004-01
- 状态:跳过
- 原因:当前子需求不需要新建数据库表,使用现有日志表记录连接操作
### 阶段 5提示词生成子需求 004-01
- 状态:已完成
- 生成文档:[提示词文档](../prompts/2026-02-03-004-01-prompt-Tooling连接管理.md)
- 关键决策:
- 引用真源:需求文档、设计文档、决策记录
- 明确输出结构Factory、Service、Controller、Domain、DTO、Enum
- 约束不生成 SQL 脚本
- 要求生成单元测试(覆盖率不低于 80%
### 阶段 6代码生成子需求 004-01
- 状态:已完成
- 生成文件:
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/factory/ToolingConnectionFactory.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/service/IToolingConnectionService.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/service/impl/ToolingConnectionServiceImpl.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/controller/ToolingConnectionController.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/enums/ToolingConnectionErrorCode.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/ToolingConnectionResult.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/ToolingConnectionRequest.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/ToolingConnectionResultDTO.java`
- 代码生成器:未使用(不涉及表新增)
- 备注:按照 Prompt 要求生成了所有代码文件,包含 REST API、Service、Factory 和数据模型。单元测试文件待补充。
### 阶段 7会话记录
- 状态:已完成
- 生成文档:无
- 关键决策:完整记录了当前会话的所有信息
### 阶段 8变更日志
- 状态:已完成
- 生成文档:[变更日志](../changelog/2026-02-05-004-01-changelog.md)
- 关键决策:
- 创建详细的变更日志,记录所有新增功能和代码文件
- 更新根目录 CHANGELOG.md
- 更新索引文件
- 变更内容:
- 新增 8 个代码文件
- 新增 5 个 REST API 接口
- 定义 8 个标准错误码
- 实现连接管理核心功能
### 阶段 9复盘与接口
- 状态:已完成
- 生成文档:
- [复盘文档](../retros/2026-02-05-004-01-retro.md)
- [API 文档](../api-docs/2026-02-05-004-01-api.md)
- 关键决策:
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 创建了完整的 API 文档,包含 5 个接口的详细说明
- 更新了索引文件和需求文档
- 复盘主要结论:
- 成功经验SSOT 流程严格执行、复用现有基础设施、详细的提示词设计、清晰的架构设计、完整的错误码体系
- 改进点单元测试需要补充、API 文档可以更加详细、阶段转换时的沟通可以更充分
- 问题分析:单元测试未生成、部分错误码定义与实际代码不完全匹配
- 行动计划:补充单元测试、更新提示词模板、建立错误码使用规范
### 阶段 10代码提交
- 状态:未开始
## 对话记录
**用户**:严格遵守项目规则,现在我有个需求,想将 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\tooling-module.md` 中的功能结合当前模块的实际情况,在 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-tooling` 模块下进行实现默认实现源org类型
**AI**:我理解您的需求。在创建需求文档前,我需要先澄清一些问题:
**第一轮澄清**
1. 这个功能的核心目标是什么?
2. 这个功能涉及哪些业务场景?
3. 这个功能需要支持哪些用户角色?
4. 功能边界:根据 `tooling-module.md` 文档Tooling API 包含大量功能元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的?
5. 使用场景:这个模块的主要使用场景是什么?
6. 用户角色:谁会使用这个模块?
7. 依赖包:我看到 `datai-salesforce-tooling/src/main/resources/lib/tooling.jar` 已经存在,这个是 Salesforce 官方的 Tooling API 客户端吗?我们需要基于这个包进行封装吗?
8. 认证集成:与 Partner API、Apex API、Metadata API 模块类似,是否也需要使用 `datai-salesforce-auth` 的 SessionManager 管理会话?
9. 模块设计:是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
10. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
11. 日志记录:是否需要记录 API 调用日志?还是暂不考虑?
12. 连接管理:是否需要连接池?还是每次调用都创建新连接?
13. 并发控制:是否需要限流?还是暂不考虑?
14. 缓存策略:是否需要缓存元数据描述结果?
15. SOQL 查询Tooling API 支持 SOQL 查询,是否需要实现查询功能?
**用户**
1、在 datai-salesforce-tooling 模块中实现 ToolingAPI 的全部功能,对于源 orgSource Org
2、全部实现
3、主要使用场景 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\tooling-module.md` 文档中所有的场景
4、也需要使用 datai-salesforce-auth 的 SessionManager 管理会话
5、需要独立的 Controller 层
6、需要数据库表存储编译结果、测试结果等实际当前模块中需要储存下来的数据创建个表进行存储
7、使用 datai-salesforce-common 模块中的现有异常,没有则自定义
8、日志、性能相关暂不考虑
9、需要实现查询功能
**AI**:好的,感谢您的详细回答。让我总结一下需求:
**澄清总结**
- **功能范围**:实现 Tooling API 的所有功能模块元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能)
- **使用场景**开发工具集成IDE 插件开发、代码生成工具、元数据浏览器、部署工具、测试和质量保证代码覆盖率分析、测试执行管理、测试结果查询、质量报告生成、CI/CD 集成自动化测试、持续集成、部署自动化、质量门禁、AI 和智能功能AI 应用管理、AI 评估配置、AI 创作工具、智能推荐)、元数据管理(批量元数据操作、依赖关系分析、影响分析、元数据同步)
- **认证集成**:使用 `datai-salesforce-auth``SessionManager` 管理会话,通过 SessionManager 获取 Session ID 和 Server URL
- **模块设计**:提供 Service 层和 Controller 层REST API默认实现 source org 类型(源 org需要数据库表存储代码覆盖率、测试结果等数据
- **技术实现**:直接使用 `tooling.jar` 中的现有类ToolingConnection、ApexClass、ApexTrigger、ApexCodeCoverage 等),不进行二次封装
- **异常处理**:优先使用 `datai-salesforce-common` 模块中的现有异常,没有的话就自定义
- **暂不考虑的功能**:日志记录、连接池、并发控制、缓存策略、限流
- **SOQL 查询**:必须实现查询功能,这是 Tooling API 的核心特性
还有其他需要补充的吗?
**用户**:没有
**AI**:好的,我现在开始创建需求文档。
---
**2026-02-05 用户**`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\design\2026-02-03-004-01-连接管理-设计.md` `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\prompts\2026-02-03-004-01-prompt-Tooling连接管理.md` 当前子需求进入阶段6
**AI**:根据技能书指引,现在开始执行阶段 6代码生成。
**现状**:已完成需求定义、方案设计、方案决策、数据库结构生成和提示词生成
**目标**:根据提示词生成符合项目规范的代码文件
[执行代码生成检查...]
**AI**:根据我的调查,**阶段 6代码生成** 的代码文件已经存在:
## 代码生成状态确认
### 已生成的代码文件
| 文件类型 | 文件路径 | 状态 |
|---------|---------|------|
| **Factory** | `ToolingConnectionFactory.java` | ✅ 已实现 |
| **Service 接口** | `IToolingConnectionService.java` | ✅ 已实现 |
| **Service 实现** | `ToolingConnectionServiceImpl.java` | ✅ 已实现 |
| **Controller** | `ToolingConnectionController.java` | ✅ 已实现 |
| **ErrorCode 枚举** | `ToolingConnectionErrorCode.java` | ✅ 已实现 |
| **Domain - Result** | `ToolingConnectionResult.java` | ✅ 已实现 |
| **Domain - Request** | `ToolingConnectionRequest.java` | ✅ 已实现 |
| **DTO** | `ToolingConnectionResultDTO.java` | ✅ 已实现 |
**AI**:请问您需要:
1. **补全单元测试代码** - 生成缺失的单元测试文件
2. **进入下一阶段(阶段 7会话记录** - 如果代码已确认完成
3. **审查现有代码** - 检查代码是否需要修改
**用户**:进入下一阶段(阶段 7会话记录
**AI**:根据技能书指引,现在开始执行阶段 7会话记录。
[更新会话记录...]
## 生成的文档
- [需求文档](../requirements/2026-01-28-004-ToolingAPI源org实现.md)
- [设计文档](../design/2026-02-03-004-01-连接管理-设计.md)
- [决策记录](../decisions/2026-02-03-004-01-ADR-连接管理技术选型.md)
- [提示词文档](../prompts/2026-02-03-004-01-prompt-Tooling连接管理.md)
## 生成的代码文件
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/factory/ToolingConnectionFactory.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/service/IToolingConnectionService.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/service/impl/ToolingConnectionServiceImpl.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/controller/ToolingConnectionController.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/enums/ToolingConnectionErrorCode.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/ToolingConnectionResult.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/ToolingConnectionRequest.java`
- `datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/ToolingConnectionResultDTO.java`
## 回退记录