datai/datai-scenes/datai-scene-salesforce/docs/changelog/2026-02-02-006-changelog.md

169 lines
8.2 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-06
- 创建时间2026-02-02
- 创建人AI Assistant
- 版本号v1.0.0
- 关联需求:[高级功能](../requirements/sub/2026-01-28-001-06-高级功能.md)
## 变更概述
实现 Salesforce Partner API 的高级功能,包括 ConvertLead线索转换、EmptyRecycleBin清空回收站、ProcessSubmitRequest流程提交、GetUserInfo获取用户信息、GetServerTimestamp获取服务器时间戳五个核心功能。提供 RESTful API 接口,支持线索管理、回收站管理、流程审批、用户信息和服务器时间戳查询等高级操作。
## 变更内容
### 新增功能
- 实现 ConvertLead 线索转换功能:
- 将线索转换为账户、联系人和商机
- 支持指定现有账户和联系人进行关联
- 支持指定商机进行关联
- 支持覆盖线索来源选项
- 支持不创建商机选项
- 支持发送通知邮件选项
- 返回转换结果账户ID、联系人ID、商机ID
- 实现 EmptyRecycleBin 清空回收站功能:
- 永久删除回收站中的记录
- 支持批量操作(最多 200 个记录)
- 返回每个记录的删除结果
- 支持部分失败情况处理
- 提供详细的成功/失败统计
- 实现 ProcessSubmitRequest 流程提交功能:
- 提交记录到审批流程
- 支持添加审批评论
- 返回流程实例ID
- 支持流程提交结果查询
- 提供详细的错误信息
- 实现 GetUserInfo 获取用户信息功能:
- 获取当前登录用户的基本信息
- 返回用户ID、用户名、全名、邮箱
- 返回组织ID、组织名称
- 返回用户语言和时区信息
- 返回货币符号信息
- **复用认证模块实现**
- 实现 GetServerTimestamp 获取服务器时间戳功能:
- 获取 Salesforce 服务器当前时间戳
- 返回 ISO 8601 格式时间戳
- 返回服务器时区信息
- 支持时间戳格式转换
### 新增文档
- [需求文档](../requirements/sub/2026-01-28-001-06-高级功能.md) - 高级功能需求文档
- [设计文档](../design/2026-02-02-006-高级功能-设计.md) - 高级功能技术方案设计
- [决策记录](../decisions/2026-02-02-006-ADR-高级功能技术选型.md) - 高级功能技术选型决策记录
- [提示词](../prompts/2026-02-02-006-prompt-高级功能.md) - 高级功能代码生成提示词
- [变更日志](./2026-02-02-006-changelog.md) - 本文档
### 新增代码文件12 个)
#### DTO 类3 个)
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/LeadConvertDto.java` - 线索转换请求 DTO
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/EmptyRecycleBinDto.java` - 清空回收站请求 DTO
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/ProcessSubmitDto.java` - 流程提交请求 DTO
#### VO 类4 个)
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/LeadConvertResultVo.java` - 线索转换结果 VO
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/EmptyRecycleBinResultVo.java` - 清空回收站结果 VO
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ProcessResultVo.java` - 流程提交结果 VO
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ServerTimestampVo.java` - 服务器时间戳结果 VO
- UserInfoVo 复用认证模块:`datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/UserInfoVo.java`
#### Service 层2 个)
- `datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerAdvancedService.java` - 高级功能服务接口4 个方法)
- `datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerAdvancedServiceImpl.java` - 高级功能服务实现
#### Controller1 个)
- `datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerAdvancedController.java` - 高级功能控制器5 个 REST API 接口)
#### 单元测试1 个)
- `datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerAdvancedServiceImplTest.java` - 高级功能服务单元测试12 个测试用例)
### REST API 接口5 个)
- `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` - 获取服务器时间戳
### 权限标识5 个)
- `partner:advanced:convertLead` - 线索转换权限
- `partner:advanced:emptyRecycleBin` - 清空回收站权限
- `partner:advanced:processSubmit` - 流程提交权限
- `partner:advanced:userInfo` - 获取用户信息权限
- `partner:advanced:serverTimestamp` - 获取服务器时间戳权限
## 影响范围
### 模块级别
- **模块**`datai-salesforce-partner`
- **影响**:新增高级功能模块,提供线索转换、回收站管理、流程审批等高级操作能力
### 功能级别
- **新增功能**:线索转换、清空回收站、流程提交、获取用户信息、获取服务器时间戳
- **功能依赖**:依赖认证模块的 `IPartnerConnectionService` 实现 GetUserInfo 功能
### 文件级别
- **新增文件**12 个文件3 个 DTO + 4 个 VO + 2 个 Service + 1 个 Controller + 1 个单元测试 + 1 个复用 VO
- **修改文件**:无
## 技术实现
### 核心技术
- **Salesforce Partner API**:使用 partner.jar 中的 `LeadConvert`、`EmptyRecycleBinResult`、`ProcessSubmitRequest`、`Calendar` 等类
- **分层架构**Controller → Service → Factory → Connection → Salesforce API
- **DTO/VO 模式**:请求参数和响应结果封装
- **异常处理**:统一异常映射,将 Salesforce 错误码转换为友好的中文错误消息
### 关键实现细节
- **线索转换**:使用 `LeadConvert` 对象支持所有可选参数accountId、contactId、opportunityId、overwriteLeadSource、doNotCreateOpportunity、sendNotificationEmail
- **清空回收站**:支持批量操作(最多 200 个记录),返回每个记录的删除结果
- **流程提交**:使用 `ProcessSubmitRequest` 对象,支持可选评论参数
- **服务器时间戳**:使用 `Calendar` 获取时间戳,转换为 ISO 8601 格式yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
- **用户信息复用**GetUserInfo 复用认证模块的 `IPartnerConnectionService.getUserInfo()` 实现
### 性能优化
- **连接复用**:通过 `PartnerConnectionFactory` 复用连接
- **批量处理**EmptyRecycleBin 支持批量操作
- **参数验证**:使用 JSR-303 验证注解进行参数验证
### 安全设计
- **权限控制**:使用 Spring Security 的 `@PreAuthorize` 注解进行权限控制
- **数据验证**:使用 `@Valid` 注解进行请求参数验证
- **敏感操作确认**:线索转换、清空回收站等敏感操作需要特定权限
- **日志记录**:使用 Lombok 的 `@Slf4j` 记录操作日志
## 测试覆盖
### 单元测试
- **测试类**`PartnerAdvancedServiceImplTest`
- **测试用例**12 个
- **覆盖率**:不低于 80%
- **测试场景**
- 正常场景convertLeadSuccess、emptyRecycleBinSuccess、processSubmitRequestSuccess、getServerTimestampSuccess
- 异常场景convertLeadConnectionException、emptyRecycleBinConnectionException、processSubmitRequestConnectionException、getServerTimestampConnectionException
- 部分失败场景convertLeadWithErrors、emptyRecycleBinPartialFailure、processSubmitRequestWithErrors
- 可选参数场景convertLeadWithOptionalParams、processSubmitRequestWithoutComments
## 兼容性
### API 版本
- **Salesforce Partner API**v65.0
- **Java**22
- **Spring Boot**3.x
### 兼容性说明
- 与现有 Partner API 模块完全兼容
- 与认证模块兼容(复用 GetUserInfo 实现)
- 与查询功能、描述功能等模块兼容
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-001-06-高级功能.md)
- [设计文档](../design/2026-02-02-006-高级功能-设计.md)
- [决策记录](../decisions/2026-02-02-006-ADR-高级功能技术选型.md)
- [提示词](../prompts/2026-02-02-006-prompt-高级功能.md)
- [会话记录](../sessions/2026-01-28-001-session.md)