datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-03-004-07-prompt-高级功能.md

11 KiB
Raw Permalink Blame History

提示词:高级功能

引用真源

需求描述

根据需求文档,实现 Salesforce Tooling API 的高级功能,包括以下核心功能点:

  1. 聚合和计算

    • 查询累积结果操作符AccumulateResultOperator
    • 查询累积结果条件输入类型AccumulateResultCondInputType
    • 查询聚合表达式结果列元数据AggregateExpressionResultColumnMetadata
    • 查询聚合查询结果列元数据AggregateQueryResultColumnMetadata
  2. 预测和预测

    • 查询高级账户预测显示组类型AdvAcctFrcstDisplayGroupType
    • 查询高级账户预测度量类型AdvAcctFcstMeasureType
    • 查询高级账户预测公式类型AdvAcctFcstFormulaType
    • 查询高级账户预测计算方法AdvAcctFcstComputationMethod
  3. 激活和应用

    • 查询激活流类型ActivationFlowType
    • 查询激活功能类型ActivationFeatureType
    • 查询激活应用类型ActivationAppType
    • 查询 ACP 状态ACPStatus

每个功能都需要:

  • 记录操作日志到数据库
  • 使用异步方式记录日志
  • 处理各种异常情况
  • 返回统一的响应格式

设计方案

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

  1. 连接管理:复用子需求 004-01 实现的 ToolingConnectionFactory通过工厂模式获取 ToolingConnection
  2. 数据库日志记录:所有高级功能操作都记录到数据库,支持操作审计和故障排查
  3. 异步日志记录:使用 CompletableFuture 异步记录操作日志,不影响主流程性能
  4. 统一异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
  5. SOQL 查询支持:使用 SoqlBuilder 构建 SOQL 查询语句,简化查询逻辑
  6. RESTful API 设计:遵循 RESTful API 设计规范,接口清晰易懂

输出格式要求

  1. 必须包含以下文件:

    • ControllerToolingAdvancedFeaturesController.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/controller/ToolingAdvancedFeaturesController.java
    • ServiceToolingAdvancedFeaturesService.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/ToolingAdvancedFeaturesService.java
    • Service ImplToolingAdvancedFeaturesServiceImpl.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/service/impl/ToolingAdvancedFeaturesServiceImpl.java
    • MapperToolingAdvancedFeaturesLogMapper.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/mapper/ToolingAdvancedFeaturesLogMapper.java
    • EntityToolingAdvancedFeaturesLog.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/ToolingAdvancedFeaturesLog.java
    • VOToolingAdvancedFeaturesLogVO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/vo/ToolingAdvancedFeaturesLogVO.java
    • DTOAccumulateResultOperatorDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AccumulateResultOperatorDTO.java
    • DTOAccumulateResultCondInputTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AccumulateResultCondInputTypeDTO.java
    • DTOAggregateExpressionResultColumnMetadataDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AggregateExpressionResultColumnMetadataDTO.java
    • DTOAggregateQueryResultColumnMetadataDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AggregateQueryResultColumnMetadataDTO.java
    • DTOAdvAcctFrcstDisplayGroupTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFrcstDisplayGroupTypeDTO.java
    • DTOAdvAcctFcstMeasureTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstMeasureTypeDTO.java
    • DTOAdvAcctFcstFormulaTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstFormulaTypeDTO.java
    • DTOAdvAcctFcstComputationMethodDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/AdvAcctFcstComputationMethodDTO.java
    • DTOActivationFlowTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationFlowTypeDTO.java
    • DTOActivationFeatureTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationFeatureTypeDTO.java
    • DTOActivationAppTypeDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ActivationAppTypeDTO.java
    • DTOACPStatusDTO.java(路径:datai-salesforce-tooling/src/main/java/com/datai/salesforce/tooling/domain/dto/ACPStatusDTO.java
    • 响应类:AjaxResult.java(若依框架已有)
  2. 必须包含单元测试:

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

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

  5. 必须使用 MyBatis Plus 进行数据库操作

代码规范要求

  1. 类命名:首字母大写,驼峰命名,如 ToolingAdvancedFeaturesController
  2. 方法命名:首字母小写,驼峰命名,如 getAccumulateResultOperators
  3. 变量命名:首字母小写,驼峰命名,如 operators
  4. 注释规范:
    • 类注释:使用 /** */,包含类功能描述、作者、创建时间
    • 方法注释:使用 /** */,包含方法功能、参数、返回值、异常描述
    • 字段注释:使用 /** */,包含字段功能描述
  5. 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
  6. 导入规范:使用 import 静态导入,避免通配符导入

测试要求

  1. 单元测试覆盖率不低于 80%
  2. 测试用例包含以下场景:
    • 查询累积结果操作符成功
    • 查询累积结果条件输入类型成功
    • 查询聚合表达式结果列元数据成功
    • 查询聚合查询结果列元数据成功
    • 查询高级账户预测显示组类型成功
    • 查询高级账户预测度量类型成功
    • 查询高级账户预测公式类型成功
    • 查询高级账户预测计算方法成功
    • 查询激活流类型成功
    • 查询激活功能类型成功
    • 查询激活应用类型成功
    • 查询 ACP 状态成功
    • 连接获取失败
    • 查询失败
    • 异步日志记录失败
  3. 使用 JUnit 5 和 Mockito 进行测试
  4. 测试用例命名规范:test+方法名+场景,如 testGetAccumulateResultOperatorsSuccess
  5. 测试数据使用 Mockito 模拟

注意事项

  1. 必须使用 ToolingConnectionFactory.getConnection("source") 获取连接
  2. 必须使用 SessionManager 获取当前用户会话信息
  3. 必须使用 CompletableFuture 异步记录操作日志
  4. 必须使用 datai-salesforce-common 模块的异常体系SalesforceAuthException、SalesforceLoginException、SalesforceQueryException 等)
  5. 必须使用 SoqlBuilder 构建 SOQL 查询语句
  6. 必须使用若依的 @DataScope 注解进行数据权限控制
  7. 必须使用若依的 @Log 注解记录操作日志
  8. 必须使用若依的 GlobalExceptionHandler 处理异常
  9. 必须处理 Salesforce API 的空值情况
  10. 必须使用 MyBatis Plus 的 @TableName@TableId@TableField 注解
  11. 必须使用 Lombok 的 @Data@Slf4j 注解
  12. 必须使用 Jakarta Validation 的 @NotNull@NotBlank 等注解进行参数校验
  13. 必须使用若依的 AjaxResult 类返回统一的响应格式
  14. 必须使用若依的 PageUtils 类处理分页查询
  15. 必须使用若依的 @PreAuthorize 注解进行权限控制

接口列表

  1. GET /salesforce/tooling/advanced-features/accumulate-result-operators - 查询累积结果操作符
  2. GET /salesforce/tooling/advanced-features/accumulate-result-cond-input-types - 查询累积结果条件输入类型
  3. GET /salesforce/tooling/advanced-features/aggregate-expression-result-column-metadatas - 查询聚合表达式结果列元数据
  4. GET /salesforce/tooling/advanced-features/aggregate-query-result-column-metadatas - 查询聚合查询结果列元数据
  5. GET /salesforce/tooling/advanced-features/adv-acct-frcst-display-group-types - 查询高级账户预测显示组类型
  6. GET /salesforce/tooling/advanced-features/adv-acct-fcst-measure-types - 查询高级账户预测度量类型
  7. GET /salesforce/tooling/advanced-features/adv-acct-fcst-formula-types - 查询高级账户预测公式类型
  8. GET /salesforce/tooling/advanced-features/adv-acct-fcst-computation-methods - 查询高级账户预测计算方法
  9. GET /salesforce/tooling/advanced-features/activation-flow-types - 查询激活流类型
  10. GET /salesforce/tooling/advanced-features/activation-feature-types - 查询激活功能类型
  11. GET /salesforce/tooling/advanced-features/activation-app-types - 查询激活应用类型
  12. GET /salesforce/tooling/advanced-features/acp-statuses - 查询 ACP 状态
  13. GET /salesforce/tooling/advanced-features/logs - 查询操作日志(支持分页)
  14. GET /salesforce/tooling/advanced-features/logs/{id} - 查询操作日志详情

响应格式

所有接口必须返回统一的响应格式:

{
  "code": 200,
  "msg": "操作成功",
  "data": {
    // 具体数据
  }
}

错误响应格式:

{
  "code": 500,
  "msg": "错误信息",
  "data": null
}

依赖模块

  • datai-salesforce-auth 模块的 SessionManager
  • datai-salesforce-auth 模块的 ISalesforceConnectionFactory 接口
  • datai-salesforce-auth 模块的 AbstractConnectionFactory 抽象类
  • datai-salesforce-common 模块的异常类SalesforceAuthException、SalesforceLoginException、SalesforceQueryException 等)
  • datai-salesforce-common 模块的常量类SalesforceConstants
  • datai-salesforce-common 模块的 SoqlBuilder 类
  • tooling.jar 中的 ToolingConnection 类
  • tooling.jar 中的 AccumulateResultOperator 类
  • tooling.jar 中的 AccumulateResultCondInputType 类
  • tooling.jar 中的 AggregateExpressionResultColumnMetadata 类
  • tooling.jar 中的 AggregateQueryResultColumnMetadata 类
  • tooling.jar 中的 AdvAcctFrcstDisplayGroupType 类
  • tooling.jar 中的 AdvAcctFcstMeasureType 类
  • tooling.jar 中的 AdvAcctFcstFormulaType 类
  • tooling.jar 中的 AdvAcctFcstComputationMethod 类
  • tooling.jar 中的 ActivationFlowType 类
  • tooling.jar 中的 ActivationFeatureType 类
  • tooling.jar 中的 ActivationAppType 类
  • tooling.jar 中的 ACPStatus 类