datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-01-28-004-01-prompt-连接管理.md

6.5 KiB
Raw Permalink Blame History

提示词:连接管理

引用真源

需求描述

根据需求文档,实现 Salesforce Tooling API 的连接管理功能,包括:

  1. 获取 ToolingConnection 连接(从缓存或创建新连接)
  2. 清除连接缓存(手动清除缓存,强制下次创建新连接)
  3. 测试连接(验证连接是否有效)
  4. 设置调用选项CallOptions如 client 名称)
  5. 设置调试头部DebuggingHeader如 debugLevel
  6. RESTful API 接口(获取连接、清除缓存、测试连接、设置调用选项、设置调试头部)

设计方案

根据设计文档,采用以下技术方案:

  1. 工厂模式:使用 ToolingConnectionFactory 工厂类创建和管理 ToolingConnection 连接,继承 AbstractConnectionFactory 抽象类
  2. 连接缓存:利用 AbstractConnectionFactory 提供的连接缓存和自动 Session 有效性检查功能
  3. 会话管理:集成 SessionManager 获取会话信息,支持 Session 过期时自动重新创建连接
  4. 头部配置:支持 SessionHeader、CallOptions、DebuggingHeader 等头部配置
  5. RESTful API提供 6 个 REST API 接口(获取连接、清除缓存、测试连接、设置调用选项、设置调试头部)
  6. 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
  7. 技术栈Spring Boot 3.x、Spring Security 6.x、Salesforce Tooling API WSC 58.x
  8. 数据模型:不涉及数据库表,所有操作记录到应用日志
  9. 性能优化:连接缓存、多线程安全、压缩传输
  10. 安全设计Session ID 存储在服务端内存中,不暴露给客户端

输出格式要求

  1. 必须包含以下文件:

    • FactoryToolingConnectionFactory.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/factory/ToolingConnectionFactory.java
    • Service 接口:IToolingConnectionService.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/service/IToolingConnectionService.java
    • Service 实现:ToolingConnectionServiceImpl.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/service/impl/ToolingConnectionServiceImpl.java
    • ControllerToolingConnectionController.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/controller/ToolingConnectionController.java
    • DTOToolingConnectionRequest.javaCallOptionsRequest.javaDebuggingHeaderRequest.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/
    • VOToolingConnectionResult.javaToolingConnectionStatus.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/
    • 错误码枚举:ToolingConnectionErrorCode.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/enums/ToolingConnectionErrorCode.java
  2. 必须包含单元测试:

    • ToolingConnectionServiceImplTest.java(路径:datai-salesforce-tooling/src/test/java/com/datai/tooling/service/impl/ToolingConnectionServiceImplTest.java
  3. 必须符合 Spring Boot 最佳实践

  4. 必须遵循若依框架规范

  5. 必须使用 tooling.jar 中的现有类Connector、ToolingConnection、SessionHeader、CallOptions、DebuggingHeader 等)

代码规范要求

  1. 类命名:首字母大写,驼峰命名,如 ToolingConnectionFactory
  2. 方法命名:首字母小写,驼峰命名,如 getConnection
  3. 变量命名:首字母小写,驼峰命名,如 sessionId
  4. 注释规范:
    • 类注释:使用 /** */,包含类功能描述、作者、创建时间
    • 方法注释:使用 /** */,包含方法功能、参数、返回值、异常描述
    • 字段注释:使用 /** */,包含字段功能描述
  5. 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
  6. 导入规范:使用 import 静态导入,避免通配符导入
  7. 包结构:按照 Controller、Service、Factory、DTO、VO、Enums 分层组织

测试要求

  1. 单元测试覆盖率不低于 80%
  2. 测试用例包含以下场景:
    • 获取连接成功(从缓存)
    • 获取连接成功(创建新连接)
    • 清除缓存成功
    • 测试连接成功
    • 测试连接失败Session 无效)
    • 设置调用选项成功
    • 设置调试头部成功
    • Session 过期异常
    • 连接失败异常
  3. 使用 JUnit 5 和 Mockito 进行测试
  4. 测试用例命名规范:test+方法名+场景,如 testGetConnectionSuccess
  5. 测试数据使用 Mockito 模拟 SessionManager 和 ToolingConnection

注意事项

  1. 必须使用 tooling.jar 中的现有类Connector、ToolingConnection、SessionHeader、CallOptions、DebuggingHeader 等),不进行二次封装
  2. 必须继承 AbstractConnectionFactory利用其提供的连接缓存和自动 Session 有效性检查功能
  3. 必须使用 SessionManager 获取会话信息,固定使用 "source" orgType
  4. 必须使用 datai-salesforce-common 模块的异常类SalesforceAuthException、SalesforceLoginException 等)
  5. 必须使用 @PreAuthorize("@ss.hasLogin()") 进行权限控制
  6. 必须使用 @Valid 注解进行参数验证
  7. 必须使用 @Tag 和 @Operation 注解生成 Swagger 文档
  8. 必须使用 @Slf4j 注解进行日志记录
  9. 必须使用 @Autowired 注解进行依赖注入
  10. 必须使用 @RestController 和 @RequestMapping 注解定义 REST API
  11. 必须使用 @GetMapping、@PostMapping、@DeleteMapping 注解定义 HTTP 方法
  12. 必须使用 @RequestBody 注解接收请求体参数
  13. 必须使用 @Schema 注解定义 Swagger 文档
  14. 必须使用 Lombok 的 @Data、@EqualsAndHashCode 等注解简化代码
  15. 必须使用 @Component 注解标记 Factory 类为 Spring 组件
  16. 必须使用 @Service 注解标记 Service 实现类为 Spring 服务
  17. 必须使用 @Override 注解标记重写的方法
  18. 必须使用 try-catch 块捕获异常,并转换为自定义异常
  19. 必须使用 log.error() 记录错误日志
  20. 必须使用 log.info() 记录操作日志
  21. API 版本固定使用 "58.0"
  22. Tooling API Endpoint 格式:{instanceUrl}/services/Soap/T/{apiVersion}
  23. 连接创建成功后,必须设置 SessionHeader
  24. 必须处理 ConnectionException 异常,转换为 SalesforceAuthException
  25. 清除缓存接口必须使用 @DeleteMapping
  26. 获取连接接口返回连接状态信息,不包含实际的 ToolingConnection 对象