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

1066 lines
74 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.

# 会话记录
## 元数据
- 需求编号001
- 开始时间2026-01-28
- 结束时间2026-02-02
- 当前阶段:阶段 9闭环复盘和接口文档高级功能
- 状态已完成认证和会话管理已完成CRUD 操作已完成,批量操作已完成,查询功能已完成,描述功能已完成,高级功能已完成阶段 9
## 需求澄清记录
### 原始需求
严格遵守项目规则,现在我有个需求,想将 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\partner-module.md` 中的功能结合当前模块的实际情况,在 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-partner` 模块下进行实现默认实现源org类型
### 第一轮澄清
**AI 提问**
1. 这个功能的核心目标是什么?
2. 这个功能涉及哪些业务场景?
3. 这个功能需要支持哪些用户角色?
4. 功能边界:根据 `partner-module.md` 文档Partner API 包含大量功能CRUD、批量操作、查询、描述、认证、高级功能等。您希望实现所有功能还是优先实现核心功能哪些功能是必须实现的
5. 使用场景:这个模块的主要使用场景是什么?
6. 用户角色:谁会使用这个模块?
7. 依赖包:我看到 `datai-salesforce-partner/src/main/resources/lib/partner.jar` 已经存在,这个是 Salesforce 官方的 Partner API 客户端吗?我们需要基于这个包进行封装吗?
8. 现有集成:项目中已经有 `datai-salesforce-integration` 模块,其中包含 `PartnerV1Connection``IPartnerV1Connection`,新的 `datai-salesforce-partner` 模块与它们的关系是什么?
**用户回答**
对,就实现源 orgSource Org实现所有功能全部功能除了引用 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-auth` 模块进行登录认证,其它不引用任何模块的代码
### 第二轮澄清
**AI 提问**
1. 功能范围确认:根据 `partner-module.md`Partner API 包含以下功能模块您确认全部实现吗CRUD 操作、批量操作、查询功能、描述功能、认证和会话、高级功能)
2. 认证集成:您提到只引用 `datai-salesforce-auth` 模块进行登录认证,具体是指?
3. 独立模块设计:既然不引用其他模块,那么是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
4. 依赖包使用:`partner.jar` 包含了 Partner API 的核心类Connector、PartnerConnection、SObject 等),我们需要直接使用这些类?还是对这些类进行封装?
5. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
6. 日志记录:是否需要记录 API 调用日志?还是依赖 `datai-salesforce-integration` 的日志功能?
7. 连接管理:是否需要连接池?还是每次调用都创建新连接?
8. 并发控制:是否需要限流?还是依赖 `datai-salesforce-integration` 的限流功能?
9. 缓存策略:是否需要缓存 Describe 结果?
**用户回答**
1、Partner API 包含功能模块,确认全部实现
2、使用 datai-salesforce-auth 的 SessionManager 管理会话然后获取Session ID和url
3、独立模块完全独立模块除了引用auth模块其它都是独立的
4、partner.jar有的直接就用现有的类
5、异常处理datai-salesforce-common 模块中的现有异常可以用就用,没有的话就自定义
6、日志记录暂不考虑
7、连接、并发、缓存等性能相关不影响功能的暂不考虑
### 第三轮澄清
**AI 提问**
提供 Controller 层默认实现source org类型
**用户回答**
提供 Controller 层默认实现source org类型
### 第四轮澄清
**AI 提问**
直接使用 partner.jar 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等)如果确实有需求需要使用自定义类,则新增,不过新增前需要严格判断
**用户回答**
直接使用 partner.jar 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等)如果确实有需求需要使用自定义类,则新增,不过新增前需要严格判断
### 澄清总结
- **功能范围**:实现 Partner API 的所有功能模块CRUD、批量操作、查询、描述、认证、高级功能
- **业务流程**:用户调用 REST API → Service 层处理 → 使用 partner.jar 调用 Salesforce API → 返回结果
- **数据交互**:不涉及数据库表,直接调用 Salesforce API
- **性能要求**:暂不考虑连接池、并发控制、缓存等性能优化
- **安全要求**:集成 `datai-salesforce-auth` 模块的会话管理,使用 SessionManager 获取 Session ID 和 Server URL
- **兼容性要求**:支持 Salesforce Partner API v65.0,兼容 Java 22 和 Spring Boot
## 需求描述
`datai-salesforce-partner` 模块中实现 Salesforce Partner API 的完整功能,提供对 Salesforce 源 orgSource Org的数据操作能力包括 CRUD 操作、批量操作、查询功能、描述功能、认证和会话管理、高级功能等。
## 执行阶段
### 阶段 1需求定义与入库
- 状态:已完成
- 生成文档:[需求文档](../requirements/2026-01-28-001-PartnerAPI源org实现.md)
- 关键决策:
- 实现所有 Partner API 功能模块
- 使用 SessionManager 管理会话
- 提供 Service 层和 Controller 层
- 直接使用 partner.jar 中的现有类
- 优先使用 datai-salesforce-common 模块中的现有异常
- 暂不考虑性能优化(连接池、并发控制、缓存)
### 阶段 2方案设计
- 状态:已完成
- 生成文档:[认证和会话管理-设计](../design/2026-01-29-001-01-认证和会话管理-设计.md)
- 关键设计决策:
- 工厂模式:使用 PartnerConnectionFactory 工厂类创建和管理 PartnerConnection 连接,继承 AbstractConnectionFactory 抽象类
- 连接缓存:利用 AbstractConnectionFactory 提供的连接缓存和自动 Session 有效性检查功能
- 会话管理:集成 SessionManager 获取会话信息,支持 Session 过期时自动重新登录
- RESTful API提供 3 个 REST API 接口(获取会话信息、获取用户信息、修改密码)
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 技术栈Spring Boot 3.x、Spring Security 6.x、MyBatis Plus 3.x、Salesforce Partner API WSC 58.x
- 数据模型:不涉及数据库表,所有数据均来自 Salesforce API
- 性能优化:连接缓存、多线程安全、压缩传输
- 安全设计HTTPS 加密传输、权限控制、防注入
### 阶段 2方案设计
- 状态:进行中
- 生成文档:
- 认证和会话管理:[认证和会话管理-设计](../design/2026-01-29-001-01-认证和会话管理-设计.md)
- CRUD 操作:[CRUD操作-设计](../design/2026-01-30-002-CRUD操作-设计.md)
- 批量操作:[批量操作-设计](../design/2026-01-30-003-批量操作-设计.md)
- 关键设计决策:
- 认证和会话管理:
- 系统架构:采用工厂模式管理 PartnerConnection 连接,继承 AbstractConnectionFactory 抽象类
- 连接缓存:利用 AbstractConnectionFactory 提供的连接缓存和自动 Session 有效性检查功能
- 会话管理:集成 SessionManager 获取会话信息,支持 Session 过期时自动重新登录
- RESTful API提供 3 个 REST API 接口(获取会话信息、获取用户信息、修改密码)
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 性能优化:连接缓存、多线程安全、压缩传输
- 安全设计HTTPS 加密传输、权限控制、防注入
- CRUD 操作:
- 系统架构采用分层架构Controller → Service → Factory → Connection → Salesforce API
- 模块架构:创建 PartnerCrudController、IPartnerCrudService、PartnerCrudServiceImpl、DTO、VO、SObjectConverter
- 技术栈Spring Boot 3.x、Spring Security 6.x、若依框架、Salesforce Partner APIpartner.jar
- 数据模型:不涉及数据库表,所有数据均来自 Salesforce API
- 接口设计:提供 6 个 REST API 接口Create、Retrieve、Update、Delete、Upsert、Merge
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 性能优化:连接缓存、自动 Session 有效性检查、批量操作
- 安全设计HTTPS 加密传输、权限控制、参数验证、防注入
- 批量操作:
- 系统架构采用分层架构Controller → Service → Factory → Connection → Salesforce API
- 模块架构:创建 PartnerBatchController、IPartnerBatchService、PartnerBatchServiceImpl、DTO、VO
- 技术栈Spring Boot 3.x、Spring Security 6.x、若依框架、Salesforce Partner APIpartner.jar
- 数据模型:不涉及数据库表,所有数据均来自 Salesforce API
- 接口设计:提供 4 个 REST API 接口(批量创建、批量更新、批量删除、批量 Upsert
- 核心算法:自动分批处理算法、批量操作统计算法
- 集成方案:与 Salesforce API 集成、与 SessionManager 集成
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 性能优化连接缓存、自动分批处理、AllOrNoneHeader 使用、DisableFeedTrackingHeader 使用、批次间休眠
- 安全设计HTTPS 加密传输、权限控制、参数验证、防注入
### 阶段 3方案决策
- 状态:进行中
- 生成文档:
- 认证和会话管理:[认证和会话管理技术选型](../decisions/2026-01-29-001-01-ADR-认证和会话管理技术选型.md)
- CRUD 操作:[CRUD操作技术选型](../decisions/2026-01-30-002-ADR-CRUD操作技术选型.md)
- 批量操作:[批量操作技术选型](../decisions/2026-01-30-003-ADR-批量操作技术选型.md)
- 关键决策:
- 认证和会话管理:
- 选择方案 1使用 AbstractConnectionFactory + SessionManager
- 决策理由:复用现有基础设施、与 SessionManager 深度集成、开发效率高、维护成本低、线程安全、符合项目架构
- 放弃方案 2自定义工厂模式的理由重复实现连接缓存和 Session 有效性检查、维护成本高、线程安全难以保证
- CRUD 操作:
- 选择方案 1完整分层架构 + 批量操作支持
- 决策理由:符合若依框架规范、便于维护和扩展、支持批量操作、异常处理统一、参数验证完善、符合项目长期规划
- 放弃方案 2简化架构的理由不符合若依框架规范、不支持批量操作、参数验证不完善
- 放弃方案 3使用若依框架通用 CRUD的理由不符合 Salesforce API 的特殊性、难以满足定制化需求
- 批量操作:
- 选择方案 1完整分层架构 + 自动分批处理 + 性能优化
- 决策理由:符合若依框架规范、支持大规模数据处理、支持部分失败情况、性能优化完善、异常处理统一、参数验证完善、符合项目长期规划、与已有 ADR 一致
- 放弃方案 2简化架构 + 固定批量大小)的理由:不符合若依框架规范、不支持大规模数据处理、批量操作行为不够灵活、性能优化不足、参数验证不完善、扩展性受限
- 放弃方案 3使用若依框架通用批量操作的理由不符合 Salesforce API 的特殊性、难以满足定制化需求、不支持自动分批处理、性能优化不足、异常处理不完善、参数验证不完善
### 阶段 4数据库结构
- 状态:进行中
- 数据库变更:
- 认证和会话管理:不涉及
- 原因:设计文档明确说明"不涉及数据库表,所有数据均来自 Salesforce API",认证和会话管理功能直接通过 Salesforce Partner API 操作 Salesforce 数据,不需要在本地数据库中存储任何数据
- SQL 脚本:无
- CRUD 操作:不涉及
- 原因:设计文档明确说明"不涉及数据库表,所有数据均来自 Salesforce API"CRUD 操作功能直接通过 Salesforce Partner API 操作 Salesforce 数据,不需要在本地数据库中存储任何数据
- SQL 脚本:无
- 批量操作:不涉及
- 原因:设计文档明确说明"不涉及数据库表,所有数据均来自 Salesforce API",批量操作功能直接通过 Salesforce Partner API 操作 Salesforce 数据,不需要在本地数据库中存储任何数据
- SQL 脚本:无
### 阶段 5提示词生成
- 状态:进行中
- 生成文档:
- 认证和会话管理:[认证和会话管理提示词](../prompts/2026-01-29-001-01-prompt-认证和会话管理.md)
- CRUD 操作:[CRUD操作提示词](../prompts/2026-01-30-002-prompt-CRUD操作.md)
- 批量操作:[批量操作提示词](../prompts/2026-01-30-003-prompt-批量操作.md)
- 提示词内容摘要:
- 认证和会话管理:
- 引用真源:需求文档、设计文档
- 需求描述:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码、工厂模式管理连接
- 设计方案:使用 PartnerConnectionFactory 工厂类、连接缓存、SessionManager 集成、RESTful API、异常处理
- 输出格式要求:必须包含 Factory、Service、Controller、DTO、VO 文件,必须包含单元测试
- 代码规范要求:类命名、方法命名、变量命名、注释规范、代码格式、导入规范
- 测试要求:单元测试覆盖率不低于 80%,包含正常场景和异常场景
- 注意事项:使用 partner.jar 现有类、继承 AbstractConnectionFactory、使用 SessionManager、使用异常类、权限控制、参数验证、Swagger 文档、日志记录、依赖注入、REST API 定义、Lombok 注解
- CRUD 操作:
- 引用真源:需求文档、设计文档
- 需求描述:实现 Salesforce Partner API 的 CRUD 操作功能,包括 Create、Retrieve、Update、Delete、Upsert、Merge 六个核心操作
- 设计方案:使用 PartnerConnectionFactory 获取连接、分层架构、RESTful API、批量操作支持、异常处理
- 输出格式要求:必须包含 Controller、Service、DTO、VO、工具类、单元测试
- 代码规范要求:类命名、方法命名、变量命名、注释规范、代码格式、导入规范
- 测试要求:单元测试覆盖率不低于 80%,包含正常场景、批量操作场景、异常场景
- 注意事项:使用 partner.jar 现有类、使用 PartnerConnectionFactory、使用异常类、权限控制、参数验证、Swagger 文档、日志记录、依赖注入、REST API 定义、Lombok 注解、SObject 转换、批量操作限制、字段清空、子对象关系
- 批量操作:
- 引用真源:需求文档、设计文档
- 需求描述:实现 Salesforce Partner API 的批量操作功能,包括批量创建、批量更新、批量删除、批量更新或插入四个核心操作
- 设计方案:使用 PartnerConnectionFactory 获取连接、分层架构、RESTful API、自动分批处理、AllOrNoneHeader 控制、性能优化、异常处理
- 输出格式要求:必须包含 Controller、Service、DTO、VO、工具类、单元测试
- 代码规范要求:类命名、方法命名、变量命名、注释规范、代码格式、导入规范
- 测试要求:单元测试覆盖率不低于 80%包含正常场景、部分失败场景、全部失败场景、超过限制场景、自动分批处理场景、AllOrNoneHeader 控制场景、DisableFeedTrackingHeader 使用场景、批次间休眠场景
- 注意事项:使用 partner.jar 现有类、使用 PartnerConnectionFactory、使用异常类、权限控制、参数验证、Swagger 文档、日志记录、依赖注入、REST API 定义、Lombok 注解、SObject 转换、批量操作限制、自动分批处理、AllOrNoneHeader 控制、DisableFeedTrackingHeader 使用、批次间休眠、详细的成功/失败统计、友好的错误消息(中文)、详细的错误日志
### 阶段 6代码生成
- 状态:进行中
- 代码生成器使用:
- 认证和会话管理:不涉及数据库表新增,未使用代码生成器
- CRUD 操作:不涉及数据库表新增,未使用代码生成器
- 批量操作:不涉及数据库表新增,未使用代码生成器
- 生成的代码文件:
- 认证和会话管理:
1. Factory`PartnerConnectionFactory.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java`
2. Service 接口:`IPartnerConnectionService.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java`
3. Service 实现:`PartnerConnectionServiceImpl.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java`
4. Controller`PartnerConnectionController.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java`
5. DTO`ChangePasswordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ChangePasswordDto.java`
6. VO`SessionInfoVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SessionInfoVo.java`
7. VO`UserInfoVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java`
8. 单元测试:`PartnerConnectionServiceImplTest.java`(路径:`datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java`
- CRUD 操作:
1. Controller`PartnerCrudController.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerCrudController.java`
2. Service 接口:`IPartnerCrudService.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerCrudService.java`
3. Service 实现:`PartnerCrudServiceImpl.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerCrudServiceImpl.java`
4. DTO`CreateRecordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/CreateRecordDto.java`
5. DTO`UpdateRecordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpdateRecordDto.java`
6. DTO`DeleteRecordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/DeleteRecordDto.java`
7. DTO`UpsertRecordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpsertRecordDto.java`
8. DTO`MergeRecordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/MergeRecordDto.java`
9. VO`RecordResultVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RecordResultVo.java`
10. VO`RetrieveResultVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RetrieveResultVo.java`
11. VO`ErrorVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ErrorVo.java`
12. 工具类:`SObjectConverter.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/util/SObjectConverter.java`
13. 单元测试:`PartnerCrudServiceImplTest.java`(路径:`datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerCrudServiceImplTest.java`
- 批量操作:
1. Controller`PartnerBatchController.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerBatchController.java`
2. Service 接口:`IPartnerBatchService.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerBatchService.java`
3. Service 实现:`PartnerBatchServiceImpl.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerBatchServiceImpl.java`
4. DTO`BatchCreateDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchCreateDto.java`
5. DTO`BatchUpdateDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpdateDto.java`
6. DTO`BatchDeleteDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchDeleteDto.java`
7. DTO`BatchUpsertDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpsertDto.java`
8. VO`BatchResultVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchResultVo.java`
9. VO`BatchItemResultVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchItemResultVo.java`
10. 单元测试:`PartnerBatchServiceImplTest.java`(路径:`datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerBatchServiceImplTest.java`
- 代码规范遵循Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 测试覆盖率:
- 认证和会话管理:单元测试覆盖率不低于 80%,包含正常场景和异常场景
- CRUD 操作:单元测试覆盖率不低于 80%,包含正常场景、批量操作场景、异常场景
- 批量操作:单元测试覆盖率不低于 80%包含正常场景、部分失败场景、全部失败场景、超过限制场景、自动分批处理场景、AllOrNoneHeader 控制场景、DisableFeedTrackingHeader 使用场景、批次间休眠场景
### 阶段 5提示词生成
- 状态:已完成
- 生成文档:[认证和会话管理提示词](../prompts/2026-01-29-001-01-prompt-认证和会话管理.md)
- 提示词内容摘要:
- 引用真源:需求文档、设计文档
- 需求描述:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码、工厂模式管理连接
- 设计方案:使用 PartnerConnectionFactory 工厂类、连接缓存、SessionManager 集成、RESTful API、异常处理
- 输出格式要求:必须包含 Factory、Service、Controller、DTO、VO 文件,必须包含单元测试
- 代码规范要求:类命名、方法命名、变量命名、注释规范、代码格式、导入规范
- 测试要求:单元测试覆盖率不低于 80%,包含正常场景和异常场景
- 注意事项:使用 partner.jar 现有类、继承 AbstractConnectionFactory、使用 SessionManager、使用异常类、权限控制、参数验证、Swagger 文档、日志记录、依赖注入、REST API 定义、Lombok 注解
### 阶段 6代码生成
- 状态:已完成
- 代码生成器使用:不涉及数据库表新增,未使用代码生成器
- 生成的代码文件:
1. Factory`PartnerConnectionFactory.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java`
2. Service 接口:`IPartnerConnectionService.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java`
3. Service 实现:`PartnerConnectionServiceImpl.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java`
4. Controller`PartnerConnectionController.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java`
5. DTO`ChangePasswordDto.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ChangePasswordDto.java`
6. VO`SessionInfoVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SessionInfoVo.java`
7. VO`UserInfoVo.java`(路径:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java`
8. 单元测试:`PartnerConnectionServiceImplTest.java`(路径:`datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java`
- 代码规范遵循Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 测试覆盖率:单元测试覆盖率不低于 80%,包含正常场景和异常场景
### 阶段 7会话记录
- 状态:已完成
- 生成文档:无
- 关键决策:完整记录了当前会话的所有信息,包括需求澄清、需求定义、方案设计、方案决策、数据库结构生成、提示词生成、代码生成等所有阶段
### 阶段 8变更日志
- 状态:已完成
- 生成文档:
- [认证和会话管理变更日志](../changelog/2026-01-30-001-changelog.md)
- [CRUD操作变更日志](../changelog/2026-01-30-002-changelog.md)
- [批量操作变更日志](../changelog/2026-01-30-003-changelog.md)
- 变更内容:
- 认证和会话管理:
- 新增功能:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码
- 新增代码文件8 个文件7 个 Java 文件 + 1 个测试文件)
- 新增接口3 个 REST API 接口
- 影响范围datai-salesforce-partner 模块
- CRUD 操作:
- 新增功能:实现 Salesforce Partner API 的 CRUD 操作功能,包括 Create、Retrieve、Update、Delete、Upsert、Merge 六个核心操作
- 新增代码文件13 个文件1 个 Controller + 2 个 Service + 5 个 DTO + 3 个 VO + 1 个工具类 + 1 个测试)
- 新增接口6 个 REST API 接口
- 影响范围datai-salesforce-partner 模块
- 批量操作:
- 新增功能:实现 Salesforce Partner API 的批量操作功能,包括批量创建、批量更新、批量删除、批量 Upsert 四个核心操作
- 新增代码文件10 个文件1 个 Controller + 2 个 Service + 4 个 DTO + 2 个 VO + 1 个测试)
- 新增接口4 个 REST API 接口
- 影响范围datai-salesforce-partner 模块
- 核心特性:支持最多 1000 条记录,自动分批处理(每批最多 200 条),支持部分失败情况,提供详细的成功/失败统计
### 阶段 9复盘与接口
- 状态:已完成
- 生成文档:
- 认证和会话管理:
- [复盘文档](../retros/2026-01-30-001-retro.md) - 认证和会话管理功能开发复盘
- [API 文档](../api-docs/2026-01-30-001-api.md) - 认证和会话管理接口文档
- CRUD 操作:
- [复盘文档](../retros/2026-01-30-002-retro.md) - CRUD操作功能开发复盘
- [API 文档](../api-docs/2026-01-30-002-api.md) - CRUD操作接口文档
- 批量操作:
- [复盘文档](../retros/2026-01-30-003-retro.md) - 批量操作功能开发复盘
- [API 文档](../api-docs/2026-01-30-003-api.md) - 批量操作接口文档
- 复盘主要结论:
- 成功经验SSOT 流程的严格执行、详细的提示词设计、完整的会话记录、有效的架构决策、代码生成的规范性、完善的异常处理
- 改进点阶段间的过渡可以更流畅、代码生成前的验证可以更严格、API 文档的自动生成可以考虑、单元测试的覆盖率可以提高、代码注释可以更详细
- 问题分析:代码规范要求不够具体、会话记录的更新不及时、变更日志内容不够详细
- 行动计划:增加对下一阶段的目的和流程的解释、增加对设计文档和决策记录的再次验证、探索使用 Swagger 等工具自动生成 API 文档、增加更多的测试用例、增加更多的代码注释、在后续的提示词设计中增加更具体的若依框架规范要求、在每个阶段完成后立即更新会话记录、在变更日志中增加更多的细节
- 提取模式3 条有效的 Prompt 技巧、3 个避免的坑
- 模板迭代:计划在下一个迭代中更新提示词模板,增加更具体的若依框架规范要求
### 阶段 2方案设计查询功能
- 状态:已完成
- 生成文档:
- [查询功能设计文档](../design/2026-01-30-004-查询功能-设计.md) - 查询功能技术方案设计
- 关键设计决策:
- 采用分层架构Controller → Service → PartnerConnectionFactory → Salesforce API
- 支持四种查询功能Query、QueryAll、QueryMore、Search
- 集成 SoqlBuilder 构建类型安全的 SOQL 查询
- 使用 DTO/VO 模式进行数据封装
- 支持分页查询QueryMore
- 遵循 SOQL 语法限制(不支持 SELECT *、BETWEEN、JOIN、UNION 等)
- 固定使用 source org 类型
- 查询最多返回 50000 条记录
- OFFSET 上限为 2000且必须与 LIMIT 一起使用
### 阶段 3方案决策查询功能
- 状态:已完成
- 生成文档:
- [查询功能 ADR](../decisions/2026-01-30-004-ADR-查询功能技术选型.md) - 查询功能技术选型决策记录
- 关键决策:
- **决策 1**:使用 SoqlBuilder 构建 SOQL 查询
- 理由:类型安全、可读性高、与现有代码一致
- **决策 2**完整转换查询结果SObject → Map
- 理由:解耦、灵活性高、与现有代码一致
- **决策 3**:使用 QueryMore 进行服务端分页
- 理由性能优化、Salesforce 原生支持
- **决策 4**:递归处理嵌套对象
- 理由:支持关系查询、保持数据完整性
- 考虑的替代方案:
- 原生字符串拼接构建 SOQL
- 使用 DTO 映射替代 Map
- 使用 Jackson 序列化 SObject
### 阶段 4数据库结构生成查询功能
- 状态:已跳过
- 分析结论:查询功能不涉及数据库变更
- 理由:
- 所有数据均来自 Salesforce API
- 无需创建数据库表
- 无需修改现有数据库结构
- 查询结果直接通过 API 返回给客户端
- 操作:直接进入阶段 5
### 阶段 5提示词生成查询功能
- 状态:已完成
- 生成文档:
- [查询功能提示词](../prompts/2026-01-30-004-prompt-查询功能.md) - 查询功能执行提示词
- 提示词内容摘要:
- **引用真源**:需求文档、设计文档、决策记录
- **需求描述**Query、QueryAll、QueryMore、Search 四个核心功能
- **设计方案**分层架构、DTO/VO 模式、SoqlBuilder、SObject 转换
- **输出格式要求**
- ControllerPartnerQueryController4 个 RESTful API 接口)
- ServiceIPartnerQueryService、PartnerQueryServiceImpl
- DTOQueryDto、QueryAllDto、QueryMoreDto、SearchDto
- VOQueryResultVo、SearchResultVo、SearchRecordVo
- 单元测试PartnerQueryServiceImplTest
- **代码规范要求**:命名规范、注释规范、代码格式、异常处理、日志规范
- **测试要求**:覆盖率不低于 80%,包含多种测试场景
- **注意事项**SOQL 语法限制、性能考虑、安全性、兼容性、文档要求
- **示例代码**Query、QueryMore、Search 使用示例
### 阶段 6代码生成查询功能
- 状态:已完成
- 生成代码文件:
- **DTO 类**4 个):
- `QueryDto.java` - SOQL 查询请求 DTO
- `QueryAllDto.java` - QueryAll 请求 DTO
- `QueryMoreDto.java` - QueryMore 请求 DTO
- `SearchDto.java` - SOSL 搜索请求 DTO
- **VO 类**3 个):
- `QueryResultVo.java` - 查询结果 VO
- `SearchResultVo.java` - 搜索结果 VO
- `SearchRecordVo.java` - 搜索记录 VO
- **Service 接口**
- `IPartnerQueryService.java` - 查询服务接口
- **Service 实现类**
- `PartnerQueryServiceImpl.java` - 查询服务实现
- **Controller 类**
- `PartnerQueryController.java` - 查询控制器4 个 RESTful API 接口)
- **单元测试**
- `PartnerQueryServiceImplTest.java` - 查询服务单元测试8 个测试用例)
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 SoqlBuilder 构建类型安全的 SOQL 查询
- 使用 SObjectConverter 转换 SObject 到 Map
- 使用 QueryMore 进行服务端分页
- 递归处理嵌套对象(支持关系查询)
- 完整的异常处理和日志记录
- 固定使用 source org 类型
### 阶段 6代码生成描述功能
- 状态:已完成
- 生成代码文件:
- **DTO 类**4 个):
- `DescribeSObjectDto.java` - 描述单个对象请求 DTO
- `DescribeSObjectsDto.java` - 描述多个对象请求 DTO
- `DescribeLayoutDto.java` - 描述对象布局请求 DTO
- `DescribeQuickActionsDto.java` - 描述快速操作请求 DTO
- **VO 类**5 个):
- `DescribeGlobalResultVo.java` - DescribeGlobal 结果 VO
- `DescribeSObjectResultVo.java` - DescribeSObject 结果 VO
- `DescribeLayoutResultVo.java` - DescribeLayout 结果 VO
- `DescribeTabResultVo.java` - DescribeTabs 结果 VO
- `DescribeQuickActionResultVo.java` - DescribeQuickActions 结果 VO
- **Service 接口**
- `IPartnerDescribeService.java` - 描述服务接口
- **Service 实现类**
- `PartnerDescribeServiceImpl.java` - 描述服务实现
- **Controller 类**
- `PartnerDescribeController.java` - 描述控制器6 个 RESTful API 接口)
- **工具类**
- `DescribeResultConverter.java` - 描述结果转换工具类
- **单元测试**
- `PartnerDescribeServiceImplTest.java` - 描述服务单元测试18 个测试用例)
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 DescribeResultConverter 将 Salesforce 描述结果转换为 Map<String, Object> 格式
- 支持字段信息处理(类型、长度、精度、必填性等)
- 支持 Picklist 字段处理(选项值、默认值、有效性规则)
- 支持关系字段处理(引用对象、关系名称、级联删除)
- 支持布局信息处理(字段布局、按钮布局、相关列表)
- 支持批量描述优化DescribeSObjects 批量 API
- 完整的异常处理和日志记录
- 固定使用 source org 类型
### 阶段 7会话记录描述功能
- 状态:已完成
- 生成文档:无
- 关键决策:
- 完整记录了描述功能的执行过程
- 记录了所有生成的代码文件15 个文件)
- 记录了关键实现特性描述结果转换、字段信息处理、Picklist 字段处理、关系字段处理、布局信息处理、批量描述优化)
- 记录了代码规范遵循情况Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 记录了单元测试覆盖率要求(不低于 80%
### 阶段 8变更记录与归档描述功能
- 状态:已完成
- 生成文档:
- [描述功能变更日志](../changelog/2026-02-02-005-changelog.md) - 描述功能变更日志
- 变更内容:
- **新增功能**:实现 Salesforce Partner API 的描述功能,包括 DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions 六个核心功能
- **新增代码文件**15 个文件4 个 DTO + 5 个 VO + 2 个 Service + 1 个 Controller + 1 个工具类 + 1 个单元测试 + 1 个变更日志)
- **新增接口**6 个 REST API 接口
- **影响范围**datai-salesforce-partner 模块
- **核心特性**
- 支持获取 Salesforce 对象的元数据信息
- 支持字段信息处理(类型、长度、精度、必填性等)
- 支持 Picklist 字段处理(选项值、默认值、有效性规则)
- 支持关系字段处理(引用对象、关系名称、级联删除)
- 支持布局信息处理(字段布局、按钮布局、相关列表)
- 支持批量描述优化DescribeSObjects 批量 API最多 100 个对象)
- 关键决策:
- 创建了详细的变更日志,记录了所有变更内容
- 更新了根目录 CHANGELOG.md
- 更新了 docs/index.md添加了变更日志链接
- 更新了会话记录,添加了阶段 8 信息
### 阶段 9闭环复盘和接口文档描述功能
- 状态:已完成
- 生成文档:
- [描述功能复盘文档](../retros/2026-02-02-005-retro.md) - 描述功能开发复盘
- [描述功能 API 文档](../api-docs/2026-02-02-005-api.md) - 描述功能接口文档
- 复盘主要结论:
- **成功经验**
- SSOT 流程的严格执行,确保了所有开发活动都有文档依据
- 详细的提示词设计,确保了生成的代码符合项目规范和需求
- 完整的会话记录,确保了会话的可追溯性和完整性
- 有效的架构决策,选择了最适合项目需求的方案
- 完善的异常处理,使用统一的异常处理机制
- **改进点**
- 阶段间的过渡可以更流畅,增加对下一阶段的目的和流程的解释
- 代码生成前的验证可以更严格,增加对设计文档和决策记录的再次验证
- API 文档的自动生成可以考虑,探索使用 Swagger 等工具
- 单元测试的覆盖率可以提高,增加更多的边界条件测试
- 代码注释可以更详细,增加更多的详细注释
- **问题分析**
- 描述结果转换的复杂性:采用递归算法处理嵌套对象
- 批量描述的限制处理:在代码中添加了参数验证和分批处理逻辑
- 字段类型的映射:创建了完整的字段类型映射表
- **行动计划**
- 在阶段转换时,增加对下一阶段的目的和流程的解释
- 在生成代码前,增加对设计文档和决策记录的再次验证
- 探索使用 Swagger 等工具自动生成 API 文档
- 增加更多的边界条件测试和异常场景测试
- 在后续的代码生成中,增加更多的详细注释
- **提取模式**
- 3 条有效的 Prompt 技巧:具体的输出格式要求、引用真源、详细的代码规范要求
- 3 个避免的坑:不要使用模糊的描述、不要忽略测试要求、不要违反项目规则
- **模板迭代**:计划在下一个迭代中更新提示词模板,增加更具体的若依框架规范要求
- API 文档主要内容:
- 6 个 REST API 接口的详细说明DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions
- 每个接口的请求方式、请求路径、请求参数、响应参数、成功示例、失败示例
- 错误码说明和处理建议
- 注意事项和限制说明
- 关键决策:
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 创建了详细的 API 文档,记录了所有接口的详细信息
- 更新了 docs/index.md添加了复盘文档和 API 文档链接
- 更新了会话记录,添加了阶段 9 信息
### 阶段 10代码提交
- 状态:未开始
### 阶段 5提示词生成高级功能
- 状态:已完成
- 生成文档:
- [高级功能提示词](../prompts/2026-02-02-006-prompt-高级功能.md) - 高级功能代码生成提示词
- 提示词内容摘要:
- **引用真源**:需求文档、设计文档、决策记录
- **需求描述**ConvertLead、EmptyRecycleBin、ProcessSubmitRequest、GetUserInfo、GetServerTimestamp 五个核心功能
- **设计方案**:直接使用 Salesforce Partner API分层架构DTO → Salesforce 对象 → VO 转换
- **输出格式要求**
- 3 个 DTO 类LeadConvertRequest、EmptyRecycleBinRequest、ProcessSubmitRequest
- 5 个 VO 类LeadConvertResultVo、EmptyRecycleBinResultVo、ProcessResultVo、UserInfoVo、ServerTimestampVo
- 2 个 Service 类PartnerAdvancedService 接口和 PartnerAdvancedServiceImpl 实现)
- 1 个 Controller 类PartnerAdvancedController
- 1 个单元测试类PartnerAdvancedServiceImplTest
- **代码规范要求**类命名、方法命名、变量命名、注释规范、Lombok 使用
- **框架规范**Spring Boot 规范、若依框架规范、Validation 规范
- **测试要求**:单元测试覆盖率不低于 80%,使用 JUnit 5 和 Mockito
- **实现细节**ConvertLead、EmptyRecycleBin、ProcessSubmitRequest、GetServerTimestamp 的具体实现要求
- **复用策略**GetUserInfo 复用认证模块的实现
- **注意事项**:固定使用 source org、异常处理、日志记录、时间戳格式、批量限制
- 更新记录:
- 创建了提示词文档
- 更新了 docs/index.md添加了提示词链接
- 更新了需求文档,添加了提示词引用
- 更新了会话记录,添加了阶段 5高级功能信息
### 阶段 4数据库结构生成高级功能
- 状态:已完成(不涉及数据库变更)
- 分析结论:
- **是否涉及数据库变更**:否
- **原因**
1. 高级功能完全基于 Salesforce Partner API 实现
2. 所有数据操作都通过 API 调用完成,不需要本地数据库表
3. 数据模型只包含 DTO 和 VO 类,用于请求/响应参数传递
4. 没有需要持久化的业务数据
5. 用户信息获取复用认证模块的实现,无需新建表
- 数据模型说明:
- **DTO 类**3 个LeadConvertRequest、EmptyRecycleBinRequest、ProcessSubmitRequest
- **VO 类**5 个LeadConvertResultVo、EmptyRecycleBinResultVo、ProcessResultVo、UserInfoVo、ServerTimestampVo
- 所有 DTO/VO 类仅用于 API 请求/响应的数据传递,不涉及数据库持久化
- 跳过原因:
- 与查询功能、描述功能类似,高级功能完全依赖 Salesforce API
- 不需要创建本地数据库表
- 不需要生成 SQL 脚本
- 更新记录:
- 更新了会话记录,记录了阶段 4 的分析结论
- 确认不涉及数据库变更,直接进入阶段 5
### 阶段 6代码生成高级功能
- 状态:已完成
- 代码生成器使用:未使用(不涉及数据库表)
- 生成的代码文件:
- **DTO 类**3 个):
- `LeadConvertDto.java` - 线索转换请求 DTO
- `EmptyRecycleBinDto.java` - 清空回收站请求 DTO
- `ProcessSubmitDto.java` - 流程提交请求 DTO
- **VO 类**4 个):
- `LeadConvertResultVo.java` - 线索转换结果 VO
- `EmptyRecycleBinResultVo.java` - 清空回收站结果 VO
- `ProcessResultVo.java` - 流程提交结果 VO
- `ServerTimestampVo.java` - 服务器时间戳结果 VO
- UserInfoVo 复用认证模块的实现)
- **Service 接口**
- `IPartnerAdvancedService.java` - 高级功能服务接口
- **Service 实现类**
- `PartnerAdvancedServiceImpl.java` - 高级功能服务实现
- **Controller 类**
- `PartnerAdvancedController.java` - 高级功能控制器5 个 RESTful API 接口)
- **单元测试**
- `PartnerAdvancedServiceImplTest.java` - 高级功能服务单元测试12 个测试用例)
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 LeadConvert 对象进行线索转换支持可选参数accountId、contactId、opportunityId、overwriteLeadSource、doNotCreateOpportunity、sendNotificationEmail
- 使用 EmptyRecycleBinResult 处理清空回收站结果,支持批量操作(最多 200 个记录)
- 使用 ProcessSubmitRequest 进行流程提交,支持可选评论参数
- 使用 Calendar 获取服务器时间戳,转换为 ISO 8601 格式yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- GetUserInfo 复用认证模块的 IPartnerConnectionService 实现
- 完整的异常处理和日志记录
- 固定使用 source org 类型
- 统一错误信息转换Error → ErrorVo
- 代码规范遵循Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 测试覆盖率:单元测试覆盖率不低于 80%,包含正常场景、异常场景、部分失败场景
### 阶段 7会话记录高级功能
- 状态:已完成
- 生成文档:无
- 关键决策:
- 完整记录了高级功能的执行过程
- 记录了所有生成的代码文件12 个文件3 个 DTO + 4 个 VO + 2 个 Service + 1 个 Controller + 1 个单元测试 + 1 个复用的 UserInfoVo
- 记录了关键实现特性LeadConvert 转换、EmptyRecycleBin 批量处理、ProcessSubmitRequest 流程提交、Calendar 时间戳获取、GetUserInfo 复用)
- 记录了代码规范遵循情况Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 记录了单元测试覆盖率要求(不低于 80%12 个测试用例)
### 阶段 8变更记录与归档高级功能
- 状态:已完成
- 生成文档:
- [高级功能变更日志](../changelog/2026-02-02-006-changelog.md) - 高级功能变更日志
- 变更内容:
- **新增功能**:实现 Salesforce Partner API 的高级功能,包括 ConvertLead、EmptyRecycleBin、ProcessSubmitRequest、GetUserInfo、GetServerTimestamp 五个核心功能
- **新增代码文件**12 个文件3 个 DTO + 4 个 VO + 2 个 Service + 1 个 Controller + 1 个单元测试 + 1 个复用 VO
- **新增接口**5 个 REST API 接口
- **新增权限**5 个权限标识
- **影响范围**datai-salesforce-partner 模块
- **核心特性**
- 线索转换功能(支持可选参数)
- 清空回收站功能(支持批量操作,最多 200 个记录)
- 流程提交功能(支持可选评论)
- 获取用户信息功能(复用认证模块)
- 获取服务器时间戳功能ISO 8601 格式)
- 关键决策:
- 创建了详细的变更日志,记录了所有变更内容
- 更新了根目录 CHANGELOG.md
- 更新了 docs/index.md添加了变更日志链接并标注需求已完成
- 更新了需求文档,添加了变更日志引用
- 更新了会话记录,添加了阶段 8高级功能信息
### 阶段 9闭环复盘和接口文档高级功能
- 状态:已完成
- 生成文档:
- [高级功能复盘文档](../retros/2026-02-02-006-retro.md) - 高级功能复盘文档
- [高级功能 API 文档](../api-docs/2026-02-02-006-api.md) - 高级功能 API 文档
- 复盘内容:
- **成功经验**
- SSOT 流程的严格执行
- 功能复用策略的成功实施GetUserInfo 复用认证模块)
- 详细的提示词设计
- 完整的异常处理机制
- 全面的单元测试覆盖
- **改进点**
- 阶段间的过渡可以更流畅
- 代码生成前的验证可以更严格
- API 文档的自动生成可以考虑
- 单元测试的覆盖率可以提高
- 代码注释可以更详细
- **问题分析**
- 线索转换可选参数的处理复杂性
- 清空回收站的部分失败处理
- 服务器时间戳的格式转换
- **行动计划**:制定了 8 条具体的行动计划,明确责任人和时间节点
- **提取模式**
- 有效的 Prompt 技巧:明确的功能复用策略、详细的可选参数处理要求、批量操作的部分失败处理
- 避免的坑:不要忽略可选参数的验证、不要简化批量操作的结果处理、不要忽略时间格式转换
- **模板迭代**:计划在下一个迭代中更新提示词模板,增加可选参数处理、批量操作结果处理、时间格式转换、功能复用策略等内容
- API 文档内容:
- **接口列表**5 个 REST API 接口的详细说明
- POST /partner/advanced/convert-lead - 转换线索
- POST /partner/advanced/empty-recycle-bin - 清空回收站
- POST /partner/advanced/process-submit-request - 流程提交
- GET /partner/advanced/user-info - 获取用户信息
- GET /partner/advanced/server-timestamp - 获取服务器时间戳
- **请求参数**:每个接口的请求参数详细说明(参数名、类型、是否必填、说明)
- **响应参数**:每个接口的响应参数详细说明(参数名、类型、说明)
- **示例**:每个接口的成功示例和失败示例
- **错误码**10 个错误码的详细说明
- **注意事项**5 个注意事项,包括线索转换、清空回收站、流程提交、获取用户信息、获取服务器时间戳的使用注意事项
- 关键决策:
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 提取了有效的 Prompt 技巧和避免的坑
- 制定了模板迭代计划
- 创建了详细的 API 文档,包含 5 个接口的详细说明
- 更新了 docs/index.md添加了复盘文档和 API 文档链接
- 更新了需求文档,添加了复盘文档和 API 文档引用
- 更新了会话记录,添加了阶段 9高级功能信息
### 阶段 3方案决策高级功能
- 状态:已完成
- 生成文档:
- [高级功能 ADR](../decisions/2026-02-02-006-ADR-高级功能技术选型.md) - 高级功能技术选型决策记录
- 关键决策:
- **技术选型**:选择直接使用 Salesforce Partner APIpartner.jar
- **选择理由**
1. 官方支持,与 Salesforce API 完全兼容
2. 功能完整,原生支持所有高级功能
3. 与现有架构一致,保持代码风格统一
4. 开发效率高,减少开发工作量
5. 类型安全,减少运行时错误
- **放弃方案**
- 放弃使用 REST API开发工作量大与现有架构不一致
- 放弃使用自定义封装层(增加不必要的抽象层)
- **核心类使用**
- `LeadConvert` / `LeadConvertResult` - 线索转换
- `EmptyRecycleBinResult` - 清空回收站
- `ProcessSubmitRequest` / `ProcessResult` - 流程提交
- `GetUserInfoResult` - 用户信息
- `Calendar` - 服务器时间戳
- **数据转换策略**DTO → Salesforce 对象 → VO
- **异常处理策略**:统一异常映射,将 Salesforce 错误码转换为友好的中文错误消息
- **复用策略**GetUserInfo 复用认证和会话管理子需求的实现
- 更新记录:
- 更新了 docs/index.md添加了 ADR 链接
- 更新了设计文档,添加了决策记录引用
- 更新了会话记录,添加了阶段 3高级功能信息
### 阶段 2方案设计高级功能
- 状态:已完成
- 生成文档:
- [高级功能设计文档](../design/2026-02-02-006-高级功能-设计.md) - 高级功能技术方案设计
- 关键设计决策:
- **架构设计**采用分层架构Controller → Service → Factory → Connection → Salesforce API
- **技术方案**:使用 Salesforce Partner APIpartner.jar实现高级功能
- **DTO 设计**3 个请求 DTOLeadConvertRequest、EmptyRecycleBinRequest、ProcessSubmitRequest
- **VO 设计**5 个响应 VOLeadConvertResultVo、EmptyRecycleBinResultVo、ProcessResultVo、UserInfoVo、ServerTimestampVo
- **接口设计**5 个 REST API 接口
- POST /api/partner/advanced/convert-lead - 转换线索
- POST /api/partner/advanced/empty-recycle-bin - 清空回收站
- POST /api/partner/advanced/process-submit-request - 处理提交请求
- GET /api/partner/advanced/user-info - 获取用户信息(复用认证模块)
- GET /api/partner/advanced/server-timestamp - 获取服务器时间戳
- **复用策略**GetUserInfo 复用认证和会话管理子需求的实现
- **异常处理**:统一异常映射,将 Salesforce 错误码转换为友好的错误消息
- **性能优化**:连接复用、批量处理、参数验证
- **安全设计**:权限控制、数据验证、敏感操作确认、日志记录
- 更新记录:
- 更新了 docs/index.md添加了设计文档链接
- 更新了需求文档,添加了设计文档引用
- 更新了会话记录,添加了阶段 2高级功能信息
## 对话记录
**用户**:严格遵守项目规则,现在我有个需求,想将 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\reference-code\sforce\docs\partner-module.md` 中的功能结合当前模块的实际情况,在 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-partner` 模块下进行实现默认实现源org类型
**AI**:我理解您的需求。在创建需求文档前,我需要先澄清一些问题:
**第一轮澄清**
1. 这个功能的核心目标是什么?
2. 这个功能涉及哪些业务场景?
3. 这个功能需要支持哪些用户角色?
4. 功能边界:根据 `partner-module.md` 文档Partner API 包含大量功能CRUD、批量操作、查询、描述、认证、高级功能等。您希望实现所有功能还是优先实现核心功能哪些功能是必须实现的
5. 使用场景:这个模块的主要使用场景是什么?
6. 用户角色:谁会使用这个模块?
7. 依赖包:我看到 `datai-salesforce-partner/src/main/resources/lib/partner.jar` 已经存在,这个是 Salesforce 官方的 Partner API 客户端吗?我们需要基于这个包进行封装吗?
8. 现有集成:项目中已经有 `datai-salesforce-integration` 模块,其中包含 `PartnerV1Connection``IPartnerV1Connection`,新的 `datai-salesforce-partner` 模块与它们的关系是什么?
**用户**:对,就实现源 orgSource Org实现所有功能全部功能除了引用 `d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-auth` 模块进行登录认证,其它不引用任何模块的代码
**AI**:好的,感谢您的明确回答。让我继续澄清一些细节:
**第二轮澄清**
1. 功能范围确认:根据 `partner-module.md`Partner API 包含以下功能模块,您确认全部实现吗?
2. 认证集成:您提到只引用 `datai-salesforce-auth` 模块进行登录认证,具体是指?
3. 独立模块设计:既然不引用其他模块,那么是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
4. 依赖包使用:`partner.jar` 包含了 Partner API 的核心类Connector、PartnerConnection、SObject 等),我们需要直接使用这些类?还是对这些类进行封装?
5. 异常处理:是否需要自定义异常类?还是使用 `datai-salesforce-common` 模块中的现有异常?
6. 日志记录:是否需要记录 API 调用日志?还是依赖 `datai-salesforce-integration` 的日志功能?
7. 连接管理:是否需要连接池?还是每次调用都创建新连接?
8. 并发控制:是否需要限流?还是依赖 `datai-salesforce-integration` 的限流功能?
9. 缓存策略:是否需要缓存 Describe 结果?
**用户**
1、Partner API 包含功能模块,确认全部实现
2、使用 datai-salesforce-auth 的 SessionManager 管理会话然后获取Session ID和url
3、独立模块完全独立模块除了引用auth模块其它都是独立的
4、partner.jar有的直接就用现有的类
5、异常处理datai-salesforce-common 模块中的现有异常可以用就用,没有的话就自定义
6、日志记录暂不考虑
7、连接、并发、缓存等性能相关不影响功能的暂不考虑
**AI**:好的,感谢您的详细回答。让我总结一下需求:
**澄清总结**
- **功能范围**:实现 Partner API 的所有功能模块CRUD、批量操作、查询、描述、认证、高级功能
- **认证集成**:使用 `datai-salesforce-auth``SessionManager` 管理会话,通过 SessionManager 获取 Session ID 和 Server URL
- **模块设计**:提供 Service 层和 Controller 层REST API默认实现 source org 类型(源 org不需要数据库表
- **技术实现**:直接使用 `partner.jar` 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等),不进行二次封装
- **异常处理**:优先使用 `datai-salesforce-common` 模块中的现有异常,没有的话就自定义
- **暂不考虑的功能**:日志记录、连接池、并发控制、缓存策略、限流
还有其他需要补充的吗?
**用户**:提供 Controller 层默认实现source org类型
**AI**:好的,感谢您的补充。让我更新澄清总结:
**澄清总结(更新)**
- **功能范围**:实现 Partner API 的所有功能模块CRUD、批量操作、查询、描述、认证、高级功能
- **认证集成**:使用 `datai-salesforce-auth``SessionManager` 管理会话,通过 SessionManager 获取 Session ID 和 Server URL
- **模块设计**:提供 Service 层和 Controller 层REST API默认实现 source org 类型(源 org不需要数据库表
- **技术实现**:直接使用 `partner.jar` 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等),不进行二次封装
- **异常处理**:优先使用 `datai-salesforce-common` 模块中的现有异常,没有的话就自定义
- **暂不考虑的功能**:日志记录、连接池、并发控制、缓存策略、限流
还有其他需要补充的吗?
**用户**:直接使用 partner.jar 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等)如果确实有需求需要使用自定义类,则新增,不过新增前需要严格判断
**AI**:好的,感谢您的补充。让我更新澄清总结:
**澄清总结(最终版)**
- **功能范围**:实现 Partner API 的所有功能模块CRUD、批量操作、查询、描述、认证、高级功能
- **认证集成**:使用 `datai-salesforce-auth``SessionManager` 管理会话,通过 SessionManager 获取 Session ID 和 Server URL
- **模块设计**:提供 Service 层和 Controller 层REST API默认实现 source org 类型(源 org不需要数据库表
- **技术实现**:直接使用 `partner.jar` 中的现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等),如果确实有需求需要使用自定义类,则新增,但新增前需要严格判断,不进行不必要的二次封装
- **异常处理**:优先使用 `datai-salesforce-common` 模块中的现有异常,没有的话就自定义
- **暂不考虑的功能**:日志记录、连接池、并发控制、缓存策略、限流
还有其他需要补充的吗?如果没有,我就开始创建需求文档了。
**用户**:开始创建需求文档
**AI**:好的,我现在开始创建需求文档。
**用户**`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-001-01-认证和会话管理.md` 进入阶段二
**AI**:好的,我现在开始阶段二:方案设计。
**用户**:进入下一阶段(方案决策)
**AI**:好的,我现在开始阶段三:方案决策。
**用户**:进入下一阶段(数据库结构生成)
**AI**:好的,我现在开始阶段四:数据库结构生成。
**用户**:进入下一阶段(代码生成)
**AI**:好的,我现在开始阶段六:代码生成。
**用户**:进入下一阶段(会话记录)
**AI**:好的,我现在开始阶段七:会话记录。
**用户**`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-001-02-CRUD操作.md` 进入阶段二
**AI**:好的,我现在开始阶段二:方案设计。
**用户**:进入下一阶段(方案决策)
**AI**:好的,我现在开始阶段三:方案决策。
**用户**:进入下一阶段(数据库结构生成)
**AI**:好的,我现在开始阶段四:数据库结构生成。
**用户**:进入下一阶段(代码生成)
**AI**:好的,我现在开始阶段六:代码生成。
**用户**:进入下一阶段(会话记录)
**AI**:好的,我现在开始阶段七:会话记录。
**用户**`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-001-03-批量操作.md` 进入阶段二
**AI**:好的,我现在开始阶段二:方案设计。
**用户**:进入下一阶段(方案决策)
**AI**:好的,我现在开始阶段三:方案决策。
**用户**:进入下一阶段(数据库结构生成)
**AI**:好的,我现在开始阶段四:数据库结构生成。
**用户**:进入下一阶段(提示词生成)
**AI**:好的,我现在开始阶段五:提示词生成。
**用户**:进入下一阶段(代码生成)
**AI**:好的,我现在开始阶段六:代码生成。
**用户**:进入下一阶段(会话记录)
**AI**:好的,我现在开始阶段七:会话记录。
**用户**`d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-001-04-查询功能.md` 进入阶段二
**AI**:好的,我现在开始阶段二:方案设计。
**用户**:进入下一阶段(方案决策)
**AI**:好的,我现在开始阶段三:方案决策。
**用户**:进入下一阶段(数据库结构生成)
**AI**:好的,我现在开始阶段四:数据库结构生成。
**用户**:进入下一阶段(提示词生成)
**AI**:好的,我现在开始阶段五:提示词生成。
**用户**:进入下一阶段(代码生成)
**AI**:好的,我现在开始阶段六:代码生成。
**用户**:进入下一阶段(会话记录)
**AI**:好的,我现在开始阶段七:会话记录。
## 生成的文档
- [需求文档](../requirements/2026-01-28-001-PartnerAPI源org实现.md)
- [子需求文档 - 认证和会话管理](../requirements/sub/2026-01-28-001-01-认证和会话管理.md)
- [子需求文档 - CRUD操作](../requirements/sub/2026-01-28-001-02-CRUD操作.md)
- [子需求文档 - 批量操作](../requirements/sub/2026-01-28-001-03-批量操作.md)
- [子需求文档 - 查询功能](../requirements/sub/2026-01-28-001-04-查询功能.md)
- [设计文档 - 认证和会话管理](../design/2026-01-29-001-01-认证和会话管理-设计.md)
- [设计文档 - CRUD操作](../design/2026-01-30-002-CRUD操作-设计.md)
- [设计文档 - 批量操作](../design/2026-01-30-003-批量操作-设计.md)
- [设计文档 - 查询功能](../design/2026-01-30-004-查询功能-设计.md)
- [决策记录 - 认证和会话管理技术选型](../decisions/2026-01-29-001-01-ADR-认证和会话管理技术选型.md)
- [决策记录 - CRUD操作技术选型](../decisions/2026-01-30-002-ADR-CRUD操作技术选型.md)
- [决策记录 - 批量操作技术选型](../decisions/2026-01-30-003-ADR-批量操作技术选型.md)
- [决策记录 - 查询功能技术选型](../decisions/2026-01-30-004-ADR-查询功能技术选型.md)
- [提示词 - 认证和会话管理](../prompts/2026-01-29-001-01-prompt-认证和会话管理.md)
- [提示词 - CRUD操作](../prompts/2026-01-30-002-prompt-CRUD操作.md)
- [提示词 - 批量操作](../prompts/2026-01-30-003-prompt-批量操作.md)
- [提示词 - 查询功能](../prompts/2026-01-30-004-prompt-查询功能.md)
- [变更日志 - 认证和会话管理](../changelog/2026-01-30-001-changelog.md)
- [变更日志 - CRUD操作](../changelog/2026-01-30-002-changelog.md)
- [变更日志 - 批量操作](../changelog/2026-01-30-003-changelog.md)
- [变更日志 - 查询功能](../changelog/2026-01-30-004-changelog.md)
- [复盘文档 - 认证和会话管理](../retros/2026-01-30-001-retro.md)
- [复盘文档 - CRUD操作](../retros/2026-01-30-002-retro.md)
- [复盘文档 - 批量操作](../retros/2026-01-30-003-retro.md)
- [复盘文档 - 查询功能](../retros/2026-01-30-004-retro.md)
- [API 文档 - 认证和会话管理](../api-docs/2026-01-30-001-api.md)
- [API 文档 - CRUD操作](../api-docs/2026-01-30-002-api.md)
- [API 文档 - 批量操作](../api-docs/2026-01-30-003-api.md)
- [API 文档 - 查询功能](../api-docs/2026-01-30-004-api.md)
## 生成的代码文件
### 认证和会话管理
- [PartnerConnectionFactory.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java)
- [IPartnerConnectionService.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java)
- [PartnerConnectionServiceImpl.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java)
- [PartnerConnectionController.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java)
- [ChangePasswordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ChangePasswordDto.java)
- [SessionInfoVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SessionInfoVo.java)
- [UserInfoVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java)
- [PartnerConnectionServiceImplTest.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java)
### 批量操作
- [PartnerBatchController.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerBatchController.java)
- [IPartnerBatchService.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerBatchService.java)
- [PartnerBatchServiceImpl.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerBatchServiceImpl.java)
- [BatchCreateDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchCreateDto.java)
- [BatchUpdateDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpdateDto.java)
- [BatchDeleteDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchDeleteDto.java)
- [BatchUpsertDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpsertDto.java)
- [BatchResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchResultVo.java)
- [BatchItemResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchItemResultVo.java)
- [PartnerBatchServiceImplTest.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerBatchServiceImplTest.java)
### 查询功能
- [PartnerQueryController.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerQueryController.java)
- [IPartnerQueryService.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerQueryService.java)
- [PartnerQueryServiceImpl.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerQueryServiceImpl.java)
- [QueryDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryDto.java)
- [QueryAllDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryAllDto.java)
- [QueryMoreDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/QueryMoreDto.java)
- [SearchDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/SearchDto.java)
- [QueryResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/QueryResultVo.java)
- [SearchResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SearchResultVo.java)
- [SearchRecordVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SearchRecordVo.java)
- [PartnerQueryServiceImplTest.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerQueryServiceImplTest.java)
### CRUD 操作
- [PartnerCrudController.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerCrudController.java)
- [IPartnerCrudService.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerCrudService.java)
- [PartnerCrudServiceImpl.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerCrudServiceImpl.java)
- [CreateRecordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/CreateRecordDto.java)
- [UpdateRecordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpdateRecordDto.java)
- [DeleteRecordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/DeleteRecordDto.java)
- [UpsertRecordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpsertRecordDto.java)
- [MergeRecordDto.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/MergeRecordDto.java)
- [RecordResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RecordResultVo.java)
- [RetrieveResultVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RetrieveResultVo.java)
- [ErrorVo.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ErrorVo.java)
- [SObjectConverter.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/main/java/com/datai/partner/util/SObjectConverter.java)
- [PartnerCrudServiceImplTest.java](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerCrudServiceImplTest.java)
### 阶段 2方案设计描述功能
- 状态:已完成
- 生成文档:
- [描述功能设计文档](../design/2026-02-02-005-描述功能-设计.md) - 描述功能技术方案设计
- 关键设计决策:
- 采用分层架构Controller → Service → PartnerConnectionFactory → Salesforce API
- 支持六种描述功能DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions
- 使用 Map<String, Object> 格式转换描述结果
- 使用 DTO/VO 模式进行数据封装
- 支持批量描述多个对象DescribeSObjects
- 固定使用 source org 类型
- 可选缓存策略:对象元数据缓存时间 1 小时
### 阶段 3方案决策描述功能
- 状态:已完成
- 生成文档:
- [描述功能 ADR](../decisions/2026-02-02-005-ADR-描述功能技术选型.md) - 描述功能技术选型决策记录
- 关键决策:
- **决策 1**:使用 Map<String, Object> 格式转换描述结果
- 理由:解耦、灵活性高、与现有代码一致、可读性好
- **决策 2**:使用 describeSObjects(String[]) 批量描述多个对象
- 理由性能优化、Salesforce 原生支持、减少 API 调用次数
- **决策 3**:使用可选的元数据缓存策略
- 理由:性能优化、响应速度提升、降低 Salesforce API 负载
- **决策 4**:完整转换字段定义信息
- 理由:支持前端动态表单生成、提供完整元数据信息
- 考虑的替代方案:
- 使用 DTO 映射替代 Map
- 使用 Jackson 序列化原始对象
- 使用 Redis 作为分布式缓存
### 阶段 4数据库结构生成描述功能
- 状态:已跳过
- 分析结论:描述功能不涉及数据库变更
- 理由:
- 所有数据均来自 Salesforce API
- 无需创建数据库表
- 无需修改现有数据库结构
- 描述结果直接通过 API 返回给客户端
- 操作:直接进入阶段 5
### 阶段 5提示词生成描述功能
- 状态:已完成
- 生成文档:
- [描述功能提示词](../prompts/2026-02-02-005-prompt-描述功能.md) - 描述功能执行提示词
- 提示词内容摘要:
- **引用真源**:需求文档、设计文档、决策记录
- **需求描述**DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions 六个核心功能
- **设计方案**分层架构、Map 格式转换、批量描述优化、字段信息处理
- **输出格式要求**
- ControllerPartnerDescribeController6 个 RESTful API 接口)
- ServiceIPartnerDescribeService、PartnerDescribeServiceImpl
- DTODescribeSObjectDto、DescribeSObjectsDto、DescribeLayoutDto、DescribeQuickActionsDto
- VODescribeGlobalResultVo、DescribeSObjectResultVo、DescribeLayoutResultVo、DescribeTabResultVo、DescribeQuickActionResultVo
- 工具类DescribeResultConverter
- 单元测试PartnerDescribeServiceImplTest
- **代码规范要求**:命名规范、注释规范、代码格式、异常处理
- **测试要求**:覆盖率不低于 80%,包含正常场景和异常场景
- **注意事项**:描述结果转换、字段类型处理、批量描述、安全性、性能考虑
## 回退记录