datai/datai-scenes/datai-scene-salesforce/docs/changelog/2026-01-30-002-changelog.md

196 lines
7.7 KiB
Markdown
Raw 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
- 子需求编号001-02
- 创建时间2026-01-30
- 创建人AI Assistant
- 版本号v1.0.0
## 变更概述
实现 Salesforce Partner API 的 CRUD 操作功能,包括 Create、Retrieve、Update、Delete、Upsert、Merge 六个核心操作,支持单条记录和批量记录操作,提供完整的 RESTful API 接口实现参数验证、异常处理、权限控制、Swagger 文档等功能。
## 变更内容
### 新增功能
#### CRUD 操作功能
- 实现创建记录Create功能包括
- 单条记录创建
- 批量记录创建(最多 200 条)
- 字段值映射和验证
- 创建结果返回(记录 ID、成功状态、错误信息
- 实现查询记录Retrieve功能包括
- 单条记录查询
- 批量记录查询(最多 200 条)
- 指定字段查询
- 查询结果返回(记录数据、查询状态、错误信息)
- 实现更新记录Update功能包括
- 单条记录更新
- 批量记录更新(最多 200 条)
- 字段值映射和验证
- 更新结果返回(记录 ID、成功状态、错误信息
- 实现删除记录Delete功能包括
- 单条记录删除
- 批量记录删除(最多 200 条)
- 删除结果返回(记录 ID、成功状态、错误信息
- 实现更新或插入记录Upsert功能包括
- 单条记录 Upsert
- 批量记录 Upsert最多 200 条)
- 支持外部 ID 字段标识
- Upsert 结果返回(记录 ID、成功状态、是否创建、错误信息
- 实现合并记录Merge功能包括
- 合并三条记录
- 指定主记录和待合并记录
- 合并结果返回(记录 ID、成功状态、错误信息
#### RESTful API 接口
- 提供 6 个 REST API 接口:
- `POST /partner/crud/create` - 创建记录
- `GET /partner/crud/retrieve` - 查询记录
- `PUT /partner/crud/update` - 更新记录
- `DELETE /partner/crud/delete` - 删除记录
- `POST /partner/crud/upsert` - 更新或插入记录
- `POST /partner/crud/merge` - 合并记录
#### 异常处理
- 使用 datai-salesforce-common 模块的异常体系
- 统一处理各种异常情况:
- ConnectionException - Salesforce 连接异常
- SalesforceSessionException - Salesforce 会话异常
- SalesforceOperationException - Salesforce 操作异常
- SalesforceValidationException - Salesforce 验证异常
- 完善的错误信息返回机制
#### 权限控制
- 使用 Spring Security 的 @PreAuthorize 注解
- 所有接口要求用户登录(@PreAuthorize("@ss.hasLogin()")
- 确保只有登录用户才能访问 CRUD 操作接口
#### 参数验证
- 使用 Spring Boot 的 @Validated 注解
- 对所有请求参数进行验证
- 支持自定义验证规则
- 完善的验证错误提示
#### Swagger 文档
- 使用 Swagger/OpenAPI 注解
- 提供完整的 API 文档
- 包含接口描述、参数说明、返回值说明
- 支持在线测试
#### 日志记录
- 使用 Slf4j 日志框架
- 记录所有 CRUD 操作的执行过程
- 记录成功和失败的操作
- 记录异常信息
#### SObject 转换
- 实现 SObjectConverter 工具类
- 支持 Map<String, Object> 到 SObject 的转换
- 支持批量转换(最多 200 条)
- 支持字段值类型转换String、Integer、Boolean、Date、DateTime
- 支持字段清空(设置为 null
### 新增文档
- [需求文档](../requirements/sub/2026-01-28-001-02-CRUD操作.md)
- [设计文档](../design/2026-01-30-002-CRUD操作-设计.md)
- [决策记录](../decisions/2026-01-30-002-ADR-CRUD操作技术选型.md)
- [提示词](../prompts/2026-01-30-002-prompt-CRUD操作.md)
### 新增代码文件
#### Controller 层
- `datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerCrudController.java` - REST API 控制器,提供 6 个 CRUD 操作接口
#### Service 层
- `datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerCrudService.java` - CRUD 操作服务接口
- `datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerCrudServiceImpl.java` - CRUD 操作服务实现
#### DTO 层
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/CreateRecordDto.java` - 创建记录请求参数
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpdateRecordDto.java` - 更新记录请求参数
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/DeleteRecordDto.java` - 删除记录请求参数
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/UpsertRecordDto.java` - 更新或插入记录请求参数
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/MergeRecordDto.java` - 合并记录请求参数
#### VO 层
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RecordResultVo.java` - 记录操作结果
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/RetrieveResultVo.java` - 查询结果
- `datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/ErrorVo.java` - 错误信息
#### 工具类
- `datai-salesforce-partner/src/main/java/com/datai/partner/util/SObjectConverter.java` - SObject 转换工具类
#### 测试文件
- `datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerCrudServiceImplTest.java` - CRUD 操作服务单元测试
## 影响范围
### 模块级别
- 模块:`datai-salesforce-partner`
- 功能Salesforce Partner API CRUD 操作
- 文件13 个新文件1 个 Controller + 2 个 Service + 5 个 DTO + 3 个 VO + 1 个工具类 + 1 个测试)
### 功能级别
- 新增功能CRUD 操作Create、Retrieve、Update、Delete、Upsert、Merge
- 新增接口6 个 REST API 接口
- 新增文档4 个文档(需求、设计、决策、提示词)
### 依赖关系
- 依赖模块:`datai-salesforce-auth`(通过 SessionManager 获取会话信息)
- 依赖模块:`datai-salesforce-common`(使用异常类)
- 依赖包:`partner.jar`Salesforce Partner API 客户端)
## 相关文档
- [需求文档](../requirements/sub/2026-01-28-001-02-CRUD操作.md)
- [设计文档](../design/2026-01-30-002-CRUD操作-设计.md)
- [决策记录](../decisions/2026-01-30-002-ADR-CRUD操作技术选型.md)
- [提示词](../prompts/2026-01-30-002-prompt-CRUD操作.md)
- [会话记录](../sessions/2026-01-28-001-session.md)
## 技术栈
- Spring Boot 3.x
- Spring Security 6.x
- 若依框架
- Salesforce Partner APIpartner.jar
- Lombok
- Swagger/OpenAPI
- JUnit 5
- Mockito
- Slf4j
## 代码规范
- 类命名:使用 PascalCase如 PartnerCrudController
- 方法命名:使用 camelCase如 createRecord
- 变量命名:使用 camelCase如 objectType
- 注释规范:使用 JavaDoc 格式
- 代码格式:遵循 Google Java Style Guide
- 导入规范:按字母顺序排序,移除未使用的导入
- Lombok 注解:使用 @Data、@Slf4j、@Service、@RestController 等
## 测试要求
- 单元测试覆盖率不低于 80%
- 包含正常场景测试
- 包含批量操作场景测试
- 包含异常场景测试
- 使用 JUnit 5 和 Mockito 框架
## 注意事项
- 使用 partner.jar 现有类Connector、PartnerConnection、SObject、QueryResult、SaveResult 等)
- 使用 PartnerConnectionFactory 获取连接getConnection("source")
- 使用 datai-salesforce-common 模块的异常类
- 所有接口要求用户登录(@PreAuthorize("@ss.hasLogin()")
- 批量操作限制最多 200 条记录
- 字段清空需要设置为 null
- 子对象关系需要特殊处理
- 使用 Lombok 注解减少样板代码
- 使用 Swagger 注解生成 API 文档
- 记录所有操作的日志
## 后续计划
- 实现批量操作功能
- 实现查询功能SOQL
- 实现描述功能Describe
- 实现高级功能(搜索、获取更新、获取删除、回收站等)