datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-03-003-07-prompt-检查部署和检索状态.md

4.4 KiB
Raw Permalink Blame History

提示词:检查部署和检索状态

引用真源

需求描述

根据需求文档和设计文档,实现 Salesforce 元数据 API 的状态检查功能,包括:

  1. 部署状态检查 (CheckDeployStatus):查询指定 asyncId 的部署操作状态。
  2. 检索状态检查 (CheckRetrieveStatus):查询指定 asyncId 的检索操作状态。
  3. 状态轮询提供服务端阻塞式轮询接口直到操作完成Succeeded/Failed/Canceled或超时。
  4. 数据持久化
    • 将每次检查结果记录到 datai_metadata_status_check 表(审计日志)。
    • 同步更新主表 (datai_metadata_deploydatai_metadata_retrieve) 的最新状态。
  5. REST API:提供标准的 RESTful 接口供前端调用。

设计方案

根据设计文档和 ADR采用以下技术方案

  1. 架构Controller -> Service -> Repository 分层架构。
  2. Salesforce 集成
    • 使用 datai-salesforce-auth 模块的 MetadataConnectionFactory 获取连接。
    • 调用 metadata.jar 中的 checkDeployStatuscheckRetrieveStatus 方法。
  3. 数据库交互:使用 MyBatis Plus 进行 CRUD 操作。
  4. 轮询策略:复用服务端同步轮询策略(Thread.sleep 循环),支持可配置的间隔和超时时间。
  5. 异常处理:捕获 ConnectionException 并转换为 SalesforceOperationExceptionSalesforceAuthException

输出格式要求

  1. 必须包含以下 Java 文件
    • Entity: MetadataStatusCheckEntity.java (对应 datai_metadata_status_check 表)
    • Mapper: MetadataStatusCheckMapper.java
    • Service: MetadataStatusService.java (核心业务逻辑,包含 check 和 poll 方法)
    • Controller: MetadataStatusController.java (REST API 接口)
    • Repository: 如果项目使用 Repository 模式封装 Mapper请创建 MetadataStatusCheckRepository.java;否则直接使用 Mapper。
  2. 必须包含 Mapper XML 文件
    • MetadataStatusCheckMapper.xml (如果需要自定义 SQL)
  3. 必须包含单元测试
    • MetadataStatusServiceTest.java (覆盖 check、poll、history 查询等逻辑)
    • MetadataStatusControllerTest.java (测试 REST API)

代码规范要求

  1. 命名规范
    • 类名UpperCamelCase (e.g., MetadataStatusService)
    • 方法名lowerCamelCase (e.g., checkDeployStatus)
    • 变量名lowerCamelCase (e.g., asyncId)
    • 常量名UPPER_SNAKE_CASE (e.g., DEFAULT_POLL_INTERVAL)
  2. 注释规范
    • 所有类和接口必须有 Javadoc 类注释(包含作者、日期、描述)。
    • 所有 public 方法必须有 Javadoc 方法注释(包含参数、返回值、异常说明)。
    • 复杂逻辑必须有行内注释。
  3. 日志规范
    • 使用 Slf4j 记录关键操作步骤(如“开始检查状态”、“轮询完成”、“发生异常”)。
    • 异常日志必须包含堆栈信息。
  4. 依赖注入:使用构造器注入或 @Autowired
  5. 框架规范
    • 使用 @RestController, @Service, @Mapper, @TableName 等标准注解。
    • 使用 MyBatis Plus 的 IServiceServiceImpl 简化开发。

测试要求

  1. 单元测试覆盖率核心业务逻辑Service 层)覆盖率不低于 80%。
  2. 测试场景
    • 正常场景:状态检查成功,返回 Succeeded轮询成功结束。
    • 异常场景Salesforce 连接失败InvalidSessionIdInvalidAsyncId轮询超时。
    • 边界条件includeDetails 参数为 true/false。
  3. Mocking:使用 Mockito 模拟 MetadataConnectionMetadataConnectionFactory 和 Repository/Mapper 的行为,避免真实调用 Salesforce API 和数据库。

注意事项

  1. 数据一致性:更新主表和插入审计表应在同一个事务中(使用 @Transactional)。
  2. 性能:轮询循环中必须有 Thread.sleep,防止 CPU 空转。
  3. 表关联:在更新主表时,需先检查记录是否存在。