74 KiB
会话记录
元数据
- 需求编号: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 提问:
- 这个功能的核心目标是什么?
- 这个功能涉及哪些业务场景?
- 这个功能需要支持哪些用户角色?
- 功能边界:根据
partner-module.md文档,Partner API 包含大量功能(CRUD、批量操作、查询、描述、认证、高级功能等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的? - 使用场景:这个模块的主要使用场景是什么?
- 用户角色:谁会使用这个模块?
- 依赖包:我看到
datai-salesforce-partner/src/main/resources/lib/partner.jar已经存在,这个是 Salesforce 官方的 Partner API 客户端吗?我们需要基于这个包进行封装吗? - 现有集成:项目中已经有
datai-salesforce-integration模块,其中包含PartnerV1Connection和IPartnerV1Connection,新的datai-salesforce-partner模块与它们的关系是什么?
用户回答:
对,就实现源 org(Source Org)的,实现所有功能,全部功能,除了引用 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-auth 模块进行登录认证,其它不引用任何模块的代码
第二轮澄清
AI 提问:
- 功能范围确认:根据
partner-module.md,Partner API 包含以下功能模块,您确认全部实现吗?(CRUD 操作、批量操作、查询功能、描述功能、认证和会话、高级功能) - 认证集成:您提到只引用
datai-salesforce-auth模块进行登录认证,具体是指? - 独立模块设计:既然不引用其他模块,那么是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
- 依赖包使用:
partner.jar包含了 Partner API 的核心类(Connector、PartnerConnection、SObject 等),我们需要直接使用这些类?还是对这些类进行封装? - 异常处理:是否需要自定义异常类?还是使用
datai-salesforce-common模块中的现有异常? - 日志记录:是否需要记录 API 调用日志?还是依赖
datai-salesforce-integration的日志功能? - 连接管理:是否需要连接池?还是每次调用都创建新连接?
- 并发控制:是否需要限流?还是依赖
datai-salesforce-integration的限流功能? - 缓存策略:是否需要缓存 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 源 org(Source Org)的数据操作能力,包括 CRUD 操作、批量操作、查询功能、描述功能、认证和会话管理、高级功能等。
执行阶段
阶段 1:需求定义与入库
- 状态:已完成
- 生成文档:需求文档
- 关键决策:
- 实现所有 Partner API 功能模块
- 使用 SessionManager 管理会话
- 提供 Service 层和 Controller 层
- 直接使用 partner.jar 中的现有类
- 优先使用 datai-salesforce-common 模块中的现有异常
- 暂不考虑性能优化(连接池、并发控制、缓存)
阶段 2:方案设计
- 状态:已完成
- 生成文档:认证和会话管理-设计
- 关键设计决策:
- 工厂模式:使用 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:方案设计
- 状态:进行中
- 生成文档:
- 认证和会话管理:认证和会话管理-设计
- CRUD 操作:CRUD操作-设计
- 批量操作:批量操作-设计
- 关键设计决策:
- 认证和会话管理:
- 系统架构:采用工厂模式管理 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 API(partner.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 API(partner.jar)
- 数据模型:不涉及数据库表,所有数据均来自 Salesforce API
- 接口设计:提供 4 个 REST API 接口(批量创建、批量更新、批量删除、批量 Upsert)
- 核心算法:自动分批处理算法、批量操作统计算法
- 集成方案:与 Salesforce API 集成、与 SessionManager 集成
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 性能优化:连接缓存、自动分批处理、AllOrNoneHeader 使用、DisableFeedTrackingHeader 使用、批次间休眠
- 安全设计:HTTPS 加密传输、权限控制、参数验证、防注入
- 认证和会话管理:
阶段 3:方案决策
- 状态:进行中
- 生成文档:
- 认证和会话管理:认证和会话管理技术选型
- CRUD 操作:CRUD操作技术选型
- 批量操作:批量操作技术选型
- 关键决策:
- 认证和会话管理:
- 选择方案 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:提示词生成
- 状态:进行中
- 生成文档:
- 认证和会话管理:认证和会话管理提示词
- CRUD 操作:CRUD操作提示词
- 批量操作:批量操作提示词
- 提示词内容摘要:
- 认证和会话管理:
- 引用真源:需求文档、设计文档
- 需求描述:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码、工厂模式管理连接
- 设计方案:使用 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 操作:不涉及数据库表新增,未使用代码生成器
- 批量操作:不涉及数据库表新增,未使用代码生成器
- 生成的代码文件:
- 认证和会话管理:
- Factory:
PartnerConnectionFactory.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java) - Service 接口:
IPartnerConnectionService.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java) - Service 实现:
PartnerConnectionServiceImpl.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java) - Controller:
PartnerConnectionController.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java) - DTO:
ChangePasswordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ChangePasswordDto.java) - VO:
SessionInfoVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SessionInfoVo.java) - VO:
UserInfoVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java) - 单元测试:
PartnerConnectionServiceImplTest.java(路径:datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java)
- Factory:
- CRUD 操作:
- Controller:
PartnerCrudController.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerCrudController.java) - Service 接口:
IPartnerCrudService.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerCrudService.java) - Service 实现:
PartnerCrudServiceImpl.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerCrudServiceImpl.java) - DTO:
CreateRecordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/CreateRecordDto.java) - DTO:
UpdateRecordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpdateRecordDto.java) - DTO:
DeleteRecordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/DeleteRecordDto.java) - DTO:
UpsertRecordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpsertRecordDto.java) - DTO:
MergeRecordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/MergeRecordDto.java) - VO:
RecordResultVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RecordResultVo.java) - VO:
RetrieveResultVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RetrieveResultVo.java) - VO:
ErrorVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ErrorVo.java) - 工具类:
SObjectConverter.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/util/SObjectConverter.java) - 单元测试:
PartnerCrudServiceImplTest.java(路径:datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerCrudServiceImplTest.java)
- Controller:
- 批量操作:
- Controller:
PartnerBatchController.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerBatchController.java) - Service 接口:
IPartnerBatchService.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerBatchService.java) - Service 实现:
PartnerBatchServiceImpl.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerBatchServiceImpl.java) - DTO:
BatchCreateDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchCreateDto.java) - DTO:
BatchUpdateDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpdateDto.java) - DTO:
BatchDeleteDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchDeleteDto.java) - DTO:
BatchUpsertDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/BatchUpsertDto.java) - VO:
BatchResultVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchResultVo.java) - VO:
BatchItemResultVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/BatchItemResultVo.java) - 单元测试:
PartnerBatchServiceImplTest.java(路径:datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerBatchServiceImplTest.java)
- Controller:
- 认证和会话管理:
- 代码规范遵循:Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 测试覆盖率:
- 认证和会话管理:单元测试覆盖率不低于 80%,包含正常场景和异常场景
- CRUD 操作:单元测试覆盖率不低于 80%,包含正常场景、批量操作场景、异常场景
- 批量操作:单元测试覆盖率不低于 80%,包含正常场景、部分失败场景、全部失败场景、超过限制场景、自动分批处理场景、AllOrNoneHeader 控制场景、DisableFeedTrackingHeader 使用场景、批次间休眠场景
阶段 5:提示词生成
- 状态:已完成
- 生成文档:认证和会话管理提示词
- 提示词内容摘要:
- 引用真源:需求文档、设计文档
- 需求描述:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码、工厂模式管理连接
- 设计方案:使用 PartnerConnectionFactory 工厂类、连接缓存、SessionManager 集成、RESTful API、异常处理
- 输出格式要求:必须包含 Factory、Service、Controller、DTO、VO 文件,必须包含单元测试
- 代码规范要求:类命名、方法命名、变量命名、注释规范、代码格式、导入规范
- 测试要求:单元测试覆盖率不低于 80%,包含正常场景和异常场景
- 注意事项:使用 partner.jar 现有类、继承 AbstractConnectionFactory、使用 SessionManager、使用异常类、权限控制、参数验证、Swagger 文档、日志记录、依赖注入、REST API 定义、Lombok 注解
阶段 6:代码生成
- 状态:已完成
- 代码生成器使用:不涉及数据库表新增,未使用代码生成器
- 生成的代码文件:
- Factory:
PartnerConnectionFactory.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java) - Service 接口:
IPartnerConnectionService.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java) - Service 实现:
PartnerConnectionServiceImpl.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java) - Controller:
PartnerConnectionController.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java) - DTO:
ChangePasswordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ChangePasswordDto.java) - VO:
SessionInfoVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/SessionInfoVo.java) - VO:
UserInfoVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java) - 单元测试:
PartnerConnectionServiceImplTest.java(路径:datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java)
- Factory:
- 代码规范遵循:Spring Boot 3.x、Spring Security 6.x、若依框架规范
- 测试覆盖率:单元测试覆盖率不低于 80%,包含正常场景和异常场景
阶段 7:会话记录
- 状态:已完成
- 生成文档:无
- 关键决策:完整记录了当前会话的所有信息,包括需求澄清、需求定义、方案设计、方案决策、数据库结构生成、提示词生成、代码生成等所有阶段
阶段 8:变更日志
- 状态:已完成
- 生成文档:
- 变更内容:
- 认证和会话管理:
- 新增功能:实现认证和会话管理功能,包括获取会话信息、获取用户信息、修改密码
- 新增代码文件: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:复盘与接口
- 状态:已完成
- 生成文档:
- 复盘主要结论:
- 成功经验:SSOT 流程的严格执行、详细的提示词设计、完整的会话记录、有效的架构决策、代码生成的规范性、完善的异常处理
- 改进点:阶段间的过渡可以更流畅、代码生成前的验证可以更严格、API 文档的自动生成可以考虑、单元测试的覆盖率可以提高、代码注释可以更详细
- 问题分析:代码规范要求不够具体、会话记录的更新不及时、变更日志内容不够详细
- 行动计划:增加对下一阶段的目的和流程的解释、增加对设计文档和决策记录的再次验证、探索使用 Swagger 等工具自动生成 API 文档、增加更多的测试用例、增加更多的代码注释、在后续的提示词设计中增加更具体的若依框架规范要求、在每个阶段完成后立即更新会话记录、在变更日志中增加更多的细节
- 提取模式:3 条有效的 Prompt 技巧、3 个避免的坑
- 模板迭代:计划在下一个迭代中更新提示词模板,增加更具体的若依框架规范要求
阶段 2:方案设计(查询功能)
- 状态:已完成
- 生成文档:
- 查询功能设计文档 - 查询功能技术方案设计
- 关键设计决策:
- 采用分层架构: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 - 查询功能技术选型决策记录
- 关键决策:
- 决策 1:使用 SoqlBuilder 构建 SOQL 查询
- 理由:类型安全、可读性高、与现有代码一致
- 决策 2:完整转换查询结果(SObject → Map)
- 理由:解耦、灵活性高、与现有代码一致
- 决策 3:使用 QueryMore 进行服务端分页
- 理由:性能优化、Salesforce 原生支持
- 决策 4:递归处理嵌套对象
- 理由:支持关系查询、保持数据完整性
- 决策 1:使用 SoqlBuilder 构建 SOQL 查询
- 考虑的替代方案:
- 原生字符串拼接构建 SOQL
- 使用 DTO 映射替代 Map
- 使用 Jackson 序列化 SObject
阶段 4:数据库结构生成(查询功能)
- 状态:已跳过
- 分析结论:查询功能不涉及数据库变更
- 理由:
- 所有数据均来自 Salesforce API
- 无需创建数据库表
- 无需修改现有数据库结构
- 查询结果直接通过 API 返回给客户端
- 操作:直接进入阶段 5
阶段 5:提示词生成(查询功能)
- 状态:已完成
- 生成文档:
- 查询功能提示词 - 查询功能执行提示词
- 提示词内容摘要:
- 引用真源:需求文档、设计文档、决策记录
- 需求描述:Query、QueryAll、QueryMore、Search 四个核心功能
- 设计方案:分层架构、DTO/VO 模式、SoqlBuilder、SObject 转换
- 输出格式要求:
- Controller:PartnerQueryController(4 个 RESTful API 接口)
- Service:IPartnerQueryService、PartnerQueryServiceImpl
- DTO:QueryDto、QueryAllDto、QueryMoreDto、SearchDto
- VO:QueryResultVo、SearchResultVo、SearchRecordVo
- 单元测试:PartnerQueryServiceImplTest
- 代码规范要求:命名规范、注释规范、代码格式、异常处理、日志规范
- 测试要求:覆盖率不低于 80%,包含多种测试场景
- 注意事项:SOQL 语法限制、性能考虑、安全性、兼容性、文档要求
- 示例代码:Query、QueryMore、Search 使用示例
阶段 6:代码生成(查询功能)
- 状态:已完成
- 生成代码文件:
- DTO 类(4 个):
QueryDto.java- SOQL 查询请求 DTOQueryAllDto.java- QueryAll 请求 DTOQueryMoreDto.java- QueryMore 请求 DTOSearchDto.java- SOSL 搜索请求 DTO
- VO 类(3 个):
QueryResultVo.java- 查询结果 VOSearchResultVo.java- 搜索结果 VOSearchRecordVo.java- 搜索记录 VO
- Service 接口:
IPartnerQueryService.java- 查询服务接口
- Service 实现类:
PartnerQueryServiceImpl.java- 查询服务实现
- Controller 类:
PartnerQueryController.java- 查询控制器(4 个 RESTful API 接口)
- 单元测试:
PartnerQueryServiceImplTest.java- 查询服务单元测试(8 个测试用例)
- DTO 类(4 个):
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 SoqlBuilder 构建类型安全的 SOQL 查询
- 使用 SObjectConverter 转换 SObject 到 Map
- 使用 QueryMore 进行服务端分页
- 递归处理嵌套对象(支持关系查询)
- 完整的异常处理和日志记录
- 固定使用 source org 类型
阶段 6:代码生成(描述功能)
- 状态:已完成
- 生成代码文件:
- DTO 类(4 个):
DescribeSObjectDto.java- 描述单个对象请求 DTODescribeSObjectsDto.java- 描述多个对象请求 DTODescribeLayoutDto.java- 描述对象布局请求 DTODescribeQuickActionsDto.java- 描述快速操作请求 DTO
- VO 类(5 个):
DescribeGlobalResultVo.java- DescribeGlobal 结果 VODescribeSObjectResultVo.java- DescribeSObject 结果 VODescribeLayoutResultVo.java- DescribeLayout 结果 VODescribeTabResultVo.java- DescribeTabs 结果 VODescribeQuickActionResultVo.java- DescribeQuickActions 结果 VO
- Service 接口:
IPartnerDescribeService.java- 描述服务接口
- Service 实现类:
PartnerDescribeServiceImpl.java- 描述服务实现
- Controller 类:
PartnerDescribeController.java- 描述控制器(6 个 RESTful API 接口)
- 工具类:
DescribeResultConverter.java- 描述结果转换工具类
- 单元测试:
PartnerDescribeServiceImplTest.java- 描述服务单元测试(18 个测试用例)
- DTO 类(4 个):
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 DescribeResultConverter 将 Salesforce 描述结果转换为 Map<String, Object> 格式
- 支持字段信息处理(类型、长度、精度、必填性等)
- 支持 Picklist 字段处理(选项值、默认值、有效性规则)
- 支持关系字段处理(引用对象、关系名称、级联删除)
- 支持布局信息处理(字段布局、按钮布局、相关列表)
- 支持批量描述优化(DescribeSObjects 批量 API)
- 完整的异常处理和日志记录
- 固定使用 source org 类型
阶段 7:会话记录(描述功能)
- 状态:已完成
- 生成文档:无
- 关键决策:
- 完整记录了描述功能的执行过程
- 记录了所有生成的代码文件(15 个文件)
- 记录了关键实现特性(描述结果转换、字段信息处理、Picklist 字段处理、关系字段处理、布局信息处理、批量描述优化)
- 记录了代码规范遵循情况(Spring Boot 3.x、Spring Security 6.x、若依框架规范)
- 记录了单元测试覆盖率要求(不低于 80%)
阶段 8:变更记录与归档(描述功能)
- 状态:已完成
- 生成文档:
- 描述功能变更日志 - 描述功能变更日志
- 变更内容:
- 新增功能:实现 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:闭环复盘和接口文档(描述功能)
- 状态:已完成
- 生成文档:
- 描述功能复盘文档 - 描述功能开发复盘
- 描述功能 API 文档 - 描述功能接口文档
- 复盘主要结论:
- 成功经验:
- 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:提示词生成(高级功能)
- 状态:已完成
- 生成文档:
- 高级功能提示词 - 高级功能代码生成提示词
- 提示词内容摘要:
- 引用真源:需求文档、设计文档、决策记录
- 需求描述: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:数据库结构生成(高级功能)
- 状态:已完成(不涉及数据库变更)
- 分析结论:
- 是否涉及数据库变更:否
- 原因:
- 高级功能完全基于 Salesforce Partner API 实现
- 所有数据操作都通过 API 调用完成,不需要本地数据库表
- 数据模型只包含 DTO 和 VO 类,用于请求/响应参数传递
- 没有需要持久化的业务数据
- 用户信息获取复用认证模块的实现,无需新建表
- 数据模型说明:
- 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- 线索转换请求 DTOEmptyRecycleBinDto.java- 清空回收站请求 DTOProcessSubmitDto.java- 流程提交请求 DTO
- VO 类(4 个):
LeadConvertResultVo.java- 线索转换结果 VOEmptyRecycleBinResultVo.java- 清空回收站结果 VOProcessResultVo.java- 流程提交结果 VOServerTimestampVo.java- 服务器时间戳结果 VO- (UserInfoVo 复用认证模块的实现)
- Service 接口:
IPartnerAdvancedService.java- 高级功能服务接口
- Service 实现类:
PartnerAdvancedServiceImpl.java- 高级功能服务实现
- Controller 类:
PartnerAdvancedController.java- 高级功能控制器(5 个 RESTful API 接口)
- 单元测试:
PartnerAdvancedServiceImplTest.java- 高级功能服务单元测试(12 个测试用例)
- DTO 类(3 个):
- 代码生成器使用:未使用(不涉及数据库表)
- 关键实现:
- 使用 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:变更记录与归档(高级功能)
- 状态:已完成
- 生成文档:
- 高级功能变更日志 - 高级功能变更日志
- 变更内容:
- 新增功能:实现 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:闭环复盘和接口文档(高级功能)
- 状态:已完成
- 生成文档:
- 高级功能复盘文档 - 高级功能复盘文档
- 高级功能 API 文档 - 高级功能 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 个注意事项,包括线索转换、清空回收站、流程提交、获取用户信息、获取服务器时间戳的使用注意事项
- 接口列表:5 个 REST API 接口的详细说明
- 关键决策:
- 创建了详细的复盘文档,总结了成功经验、改进点、问题分析和行动计划
- 提取了有效的 Prompt 技巧和避免的坑
- 制定了模板迭代计划
- 创建了详细的 API 文档,包含 5 个接口的详细说明
- 更新了 docs/index.md,添加了复盘文档和 API 文档链接
- 更新了需求文档,添加了复盘文档和 API 文档引用
- 更新了会话记录,添加了阶段 9(高级功能)信息
阶段 3:方案决策(高级功能)
- 状态:已完成
- 生成文档:
- 高级功能 ADR - 高级功能技术选型决策记录
- 关键决策:
- 技术选型:选择直接使用 Salesforce Partner API(partner.jar)
- 选择理由:
- 官方支持,与 Salesforce API 完全兼容
- 功能完整,原生支持所有高级功能
- 与现有架构一致,保持代码风格统一
- 开发效率高,减少开发工作量
- 类型安全,减少运行时错误
- 放弃方案:
- 放弃使用 REST API(开发工作量大,与现有架构不一致)
- 放弃使用自定义封装层(增加不必要的抽象层)
- 核心类使用:
LeadConvert/LeadConvertResult- 线索转换EmptyRecycleBinResult- 清空回收站ProcessSubmitRequest/ProcessResult- 流程提交GetUserInfoResult- 用户信息Calendar- 服务器时间戳
- 数据转换策略:DTO → Salesforce 对象 → VO
- 异常处理策略:统一异常映射,将 Salesforce 错误码转换为友好的中文错误消息
- 复用策略:GetUserInfo 复用认证和会话管理子需求的实现
- 更新记录:
- 更新了 docs/index.md,添加了 ADR 链接
- 更新了设计文档,添加了决策记录引用
- 更新了会话记录,添加了阶段 3(高级功能)信息
阶段 2:方案设计(高级功能)
- 状态:已完成
- 生成文档:
- 高级功能设计文档 - 高级功能技术方案设计
- 关键设计决策:
- 架构设计:采用分层架构(Controller → Service → Factory → Connection → Salesforce API)
- 技术方案:使用 Salesforce Partner API(partner.jar)实现高级功能
- DTO 设计:3 个请求 DTO(LeadConvertRequest、EmptyRecycleBinRequest、ProcessSubmitRequest)
- VO 设计:5 个响应 VO(LeadConvertResultVo、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:我理解您的需求。在创建需求文档前,我需要先澄清一些问题:
第一轮澄清:
- 这个功能的核心目标是什么?
- 这个功能涉及哪些业务场景?
- 这个功能需要支持哪些用户角色?
- 功能边界:根据
partner-module.md文档,Partner API 包含大量功能(CRUD、批量操作、查询、描述、认证、高级功能等)。您希望实现所有功能?还是优先实现核心功能?哪些功能是必须实现的? - 使用场景:这个模块的主要使用场景是什么?
- 用户角色:谁会使用这个模块?
- 依赖包:我看到
datai-salesforce-partner/src/main/resources/lib/partner.jar已经存在,这个是 Salesforce 官方的 Partner API 客户端吗?我们需要基于这个包进行封装吗? - 现有集成:项目中已经有
datai-salesforce-integration模块,其中包含PartnerV1Connection和IPartnerV1Connection,新的datai-salesforce-partner模块与它们的关系是什么?
用户:对,就实现源 org(Source Org)的,实现所有功能,全部功能,除了引用 d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-auth 模块进行登录认证,其它不引用任何模块的代码
AI:好的,感谢您的明确回答。让我继续澄清一些细节:
第二轮澄清:
- 功能范围确认:根据
partner-module.md,Partner API 包含以下功能模块,您确认全部实现吗? - 认证集成:您提到只引用
datai-salesforce-auth模块进行登录认证,具体是指? - 独立模块设计:既然不引用其他模块,那么是否需要独立的 Controller 层?还是只提供 Service 层?是否需要数据库表?
- 依赖包使用:
partner.jar包含了 Partner API 的核心类(Connector、PartnerConnection、SObject 等),我们需要直接使用这些类?还是对这些类进行封装? - 异常处理:是否需要自定义异常类?还是使用
datai-salesforce-common模块中的现有异常? - 日志记录:是否需要记录 API 调用日志?还是依赖
datai-salesforce-integration的日志功能? - 连接管理:是否需要连接池?还是每次调用都创建新连接?
- 并发控制:是否需要限流?还是依赖
datai-salesforce-integration的限流功能? - 缓存策略:是否需要缓存 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:好的,我现在开始阶段七:会话记录。
生成的文档
- 需求文档
- 子需求文档 - 认证和会话管理
- 子需求文档 - CRUD操作
- 子需求文档 - 批量操作
- 子需求文档 - 查询功能
- 设计文档 - 认证和会话管理
- 设计文档 - CRUD操作
- 设计文档 - 批量操作
- 设计文档 - 查询功能
- 决策记录 - 认证和会话管理技术选型
- 决策记录 - CRUD操作技术选型
- 决策记录 - 批量操作技术选型
- 决策记录 - 查询功能技术选型
- 提示词 - 认证和会话管理
- 提示词 - CRUD操作
- 提示词 - 批量操作
- 提示词 - 查询功能
- 变更日志 - 认证和会话管理
- 变更日志 - CRUD操作
- 变更日志 - 批量操作
- 变更日志 - 查询功能
- 复盘文档 - 认证和会话管理
- 复盘文档 - CRUD操作
- 复盘文档 - 批量操作
- 复盘文档 - 查询功能
- API 文档 - 认证和会话管理
- API 文档 - CRUD操作
- API 文档 - 批量操作
- API 文档 - 查询功能
生成的代码文件
认证和会话管理
- PartnerConnectionFactory.java
- IPartnerConnectionService.java
- PartnerConnectionServiceImpl.java
- PartnerConnectionController.java
- ChangePasswordDto.java
- SessionInfoVo.java
- UserInfoVo.java
- PartnerConnectionServiceImplTest.java
批量操作
- PartnerBatchController.java
- IPartnerBatchService.java
- PartnerBatchServiceImpl.java
- BatchCreateDto.java
- BatchUpdateDto.java
- BatchDeleteDto.java
- BatchUpsertDto.java
- BatchResultVo.java
- BatchItemResultVo.java
- PartnerBatchServiceImplTest.java
查询功能
- PartnerQueryController.java
- IPartnerQueryService.java
- PartnerQueryServiceImpl.java
- QueryDto.java
- QueryAllDto.java
- QueryMoreDto.java
- SearchDto.java
- QueryResultVo.java
- SearchResultVo.java
- SearchRecordVo.java
- PartnerQueryServiceImplTest.java
CRUD 操作
- PartnerCrudController.java
- IPartnerCrudService.java
- PartnerCrudServiceImpl.java
- CreateRecordDto.java
- UpdateRecordDto.java
- DeleteRecordDto.java
- UpsertRecordDto.java
- MergeRecordDto.java
- RecordResultVo.java
- RetrieveResultVo.java
- ErrorVo.java
- SObjectConverter.java
- PartnerCrudServiceImplTest.java
阶段 2:方案设计(描述功能)
- 状态:已完成
- 生成文档:
- 描述功能设计文档 - 描述功能技术方案设计
- 关键设计决策:
- 采用分层架构:Controller → Service → PartnerConnectionFactory → Salesforce API
- 支持六种描述功能:DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions
- 使用 Map<String, Object> 格式转换描述结果
- 使用 DTO/VO 模式进行数据封装
- 支持批量描述多个对象(DescribeSObjects)
- 固定使用 source org 类型
- 可选缓存策略:对象元数据缓存时间 1 小时
阶段 3:方案决策(描述功能)
- 状态:已完成
- 生成文档:
- 描述功能 ADR - 描述功能技术选型决策记录
- 关键决策:
- 决策 1:使用 Map<String, Object> 格式转换描述结果
- 理由:解耦、灵活性高、与现有代码一致、可读性好
- 决策 2:使用 describeSObjects(String[]) 批量描述多个对象
- 理由:性能优化、Salesforce 原生支持、减少 API 调用次数
- 决策 3:使用可选的元数据缓存策略
- 理由:性能优化、响应速度提升、降低 Salesforce API 负载
- 决策 4:完整转换字段定义信息
- 理由:支持前端动态表单生成、提供完整元数据信息
- 决策 1:使用 Map<String, Object> 格式转换描述结果
- 考虑的替代方案:
- 使用 DTO 映射替代 Map
- 使用 Jackson 序列化原始对象
- 使用 Redis 作为分布式缓存
阶段 4:数据库结构生成(描述功能)
- 状态:已跳过
- 分析结论:描述功能不涉及数据库变更
- 理由:
- 所有数据均来自 Salesforce API
- 无需创建数据库表
- 无需修改现有数据库结构
- 描述结果直接通过 API 返回给客户端
- 操作:直接进入阶段 5
阶段 5:提示词生成(描述功能)
- 状态:已完成
- 生成文档:
- 描述功能提示词 - 描述功能执行提示词
- 提示词内容摘要:
- 引用真源:需求文档、设计文档、决策记录
- 需求描述:DescribeGlobal、DescribeSObject、DescribeSObjects、DescribeLayout、DescribeTabs、DescribeQuickActions 六个核心功能
- 设计方案:分层架构、Map 格式转换、批量描述优化、字段信息处理
- 输出格式要求:
- Controller:PartnerDescribeController(6 个 RESTful API 接口)
- Service:IPartnerDescribeService、PartnerDescribeServiceImpl
- DTO:DescribeSObjectDto、DescribeSObjectsDto、DescribeLayoutDto、DescribeQuickActionsDto
- VO:DescribeGlobalResultVo、DescribeSObjectResultVo、DescribeLayoutResultVo、DescribeTabResultVo、DescribeQuickActionResultVo
- 工具类:DescribeResultConverter
- 单元测试:PartnerDescribeServiceImplTest
- 代码规范要求:命名规范、注释规范、代码格式、异常处理
- 测试要求:覆盖率不低于 80%,包含正常场景和异常场景
- 注意事项:描述结果转换、字段类型处理、批量描述、安全性、性能考虑
回退记录
无