datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-01-28-004-04-prompt-AI和智能功能.md

15 KiB
Raw Permalink Blame History

AI 和智能功能提示词

元数据

  • 需求编号004
  • 子需求编号004-04
  • 子需求名称AI 和智能功能
  • 阶段:阶段 5提示词生成
  • 创建时间2026-01-28
  • 创建人AI Assistant
  • 状态:已完成

相关文档


提示词内容

角色设定

你是一个经验丰富的 Java 开发工程师,精通 Spring Boot、MyBatis Plus、Lombok、Jakarta Validation 等技术栈,熟悉 Salesforce Tooling API 的使用。

任务目标

根据需求文档、设计文档和决策记录,生成 Tooling API AI 和智能功能的完整代码实现。

真源引用

  1. 需求文档AI 和智能功能需求

    • 核心功能AI 应用管理创建、查询、更新、删除、AI 评估配置查询、AI 创作工具查询
    • 入参/出参定义:详细的 API 接口定义
    • 实现要点Service 层实现、异常处理、数据库设计
  2. 设计文档AI 和智能功能设计

    • 架构设计:系统架构图、数据流图、模块依赖关系
    • 技术方案核心组件、设计模式、连接管理方案、异常处理方案、SOQL 查询方案
    • 数据模型数据库表设计、实体类设计、DTO 设计、VO 设计
    • 接口设计Service 接口、Controller 接口、Mapper 接口
    • 错误码定义ToolingAIErrCode 枚举
    • 代码规范:命名规范、注释规范、导入规范、包结构
    • 测试要求:单元测试、集成测试
  3. 决策记录AI 和智能功能技术选型 ADR

    • 选定方案Service + ToolingConnectionFactory + 异步日志记录
    • 决策理由复用现有基础设施、异步日志记录不影响性能、统一异常处理、SOQL 查询支持、开发效率高、维护成本低、性能优秀、审计追溯完善、可扩展性强、符合团队习惯

需求描述

  1. 创建 AI 应用:创建新的 AI 应用,支持设置开发者名称、主标签、描述、状态、应用类型
  2. 查询 AI 应用:查询 AI 应用列表,支持按状态过滤
  3. 更新 AI 应用:更新 AI 应用的主标签、描述、状态
  4. 删除 AI 应用:删除指定的 AI 应用
  5. 查询 AI 评估主题类型:查询所有 AI 评估主题类型
  6. 查询 AI 评估处理状态:查询所有 AI 评估处理状态
  7. 查询 AI 评估指标类型:查询所有 AI 评估指标类型
  8. 查询 AI 创作包类型:查询所有 AI 创作包类型
  9. 查询 AI 创作包版本状态:查询所有 AI 创作包版本状态
  10. 查询 AI 助手模板状态:查询所有 AI 助手模板状态
  11. 获取 AI 操作日志:查询 AI 操作日志,支持按操作类型、元数据类型、时间范围过滤

设计方案

  1. 连接管理:复用 ToolingConnectionFactory 获取连接,使用 getConnection("source")
  2. 异步日志记录:使用 CompletableFuture 异步记录操作日志到数据库
  3. 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常
  4. SOQL 查询:使用 SoqlBuilder 构建 SOQL 查询语句
  5. RESTful API:提供完整的 REST API 接口

输出格式

1. Service 接口

包路径com.datai.tooling.service.IToolingAIService

方法列表

SaveResult createAIApplication(AIApplicationRequest request);
List<AIApplicationVO> queryAIApplications(String status);
boolean updateAIApplication(AIApplicationUpdateRequest request);
boolean deleteAIApplication(String id);
List<?> queryEvaluationSubjectTypes();
List<?> queryEvaluationProcessingStatuses();
List<?> queryEvaluationMetricTypes();
List<?> queryAuthoringBundleTypes();
List<?> queryAuthoringBundleVersionStatuses();
List<?> queryAssistantTemplateStatuses();
List<AIOperationLogVO> queryOperationLogs(String operationType, String metadataType, 
                                           String startTime, String endTime, 
                                           Integer pageNum, Integer pageSize);

2. Service 实现

包路径com.datai.tooling.service.impl.ToolingAIServiceImpl

实现要点

  • 使用 @Service 注解
  • 注入 ToolingConnectionFactoryToolingAIOperationLogMapper
  • 使用 CompletableFuture 异步记录操作日志
  • 使用 SoqlBuilder 构建 SOQL 查询
  • 统一异常处理,使用 ToolingAIErrCode 枚举定义错误码

3. Controller

包路径com.datai.tooling.controller.ToolingAIController

接口列表

  • POST /salesforce/tooling/ai/application - 创建 AI 应用
  • GET /salesforce/tooling/ai/applications - 查询 AI 应用
  • PUT /salesforce/tooling/ai/application - 更新 AI 应用
  • DELETE /salesforce/tooling/ai/application - 删除 AI 应用
  • GET /salesforce/tooling/ai/evaluation-subject-types - 查询 AI 评估主题类型
  • GET /salesforce/tooling/ai/evaluation-processing-statuses - 查询 AI 评估处理状态
  • GET /salesforce/tooling/ai/evaluation-metric-types - 查询 AI 评估指标类型
  • GET /salesforce/tooling/ai/authoring-bundle-types - 查询 AI 创作包类型
  • GET /salesforce/tooling/ai/authoring-bundle-version-statuses - 查询 AI 创作包版本状态
  • GET /salesforce/tooling/ai/assistant-template-statuses - 查询 AI 助手模板状态
  • GET /salesforce/tooling/ai/operation-logs - 获取 AI 操作日志

4. DTO

包路径com.datai.tooling.domain.dto

类列表

  • AIApplicationRequest - AI 应用创建请求
  • AIApplicationUpdateRequest - AI 应用更新请求
  • AIOperationLogQueryRequest - AI 操作日志查询请求

5. VO

包路径com.datai.tooling.domain.vo

类列表

  • AIApplicationVO - AI 应用视图对象
  • AIOperationLogVO - AI 操作日志视图对象

6. Entity

包路径com.datai.tooling.domain.entity

类列表

  • ToolingAIOperationLog - AI 操作日志实体

7. Mapper

包路径com.datai.tooling.mapper

接口列表

  • ToolingAIOperationLogMapper - AI 操作日志 Mapper

8. Enums

包路径com.datai.tooling.enums

类列表

  • ToolingAIErrCode - AI 功能错误码枚举

9. 单元测试

包路径com.datai.tooling.service.impl.ToolingAIServiceImplTest

测试场景

  1. 创建 AI 应用成功
  2. 创建 AI 应用失败(参数校验失败)
  3. 创建 AI 应用失败Session 无效)
  4. 查询 AI 应用成功
  5. 查询 AI 应用成功(按状态过滤)
  6. 更新 AI 应用成功
  7. 更新 AI 应用失败(记录不存在)
  8. 删除 AI 应用成功
  9. 删除 AI 应用失败(记录不存在)
  10. 查询 AI 评估主题类型成功
  11. 查询 AI 评估处理状态成功
  12. 查询 AI 评估指标类型成功
  13. 查询 AI 创作包类型成功
  14. 查询 AI 创作包版本状态成功
  15. 查询 AI 助手模板状态成功
  16. 查询 AI 操作日志成功
  17. 查询 AI 操作日志成功(按操作类型过滤)
  18. 查询 AI 操作日志成功(按元数据类型过滤)
  19. 查询 AI 操作日志成功(按时间范围过滤)

代码规范

1. 命名规范

类型 命名规范 示例
类名 大驼峰 ToolingAIServiceImpl
方法名 小驼峰 createAIApplication
变量名 小驼峰 aiApplication
常量名 全大写下划线分隔 OPERATION_TYPE_CREATE
包名 全小写 com.datai.tooling.service

2. 注释规范

  • 类注释:包含类功能描述、作者、创建时间
  • 方法注释:包含功能描述、参数说明、返回值说明、异常说明
  • 字段注释:包含字段用途说明

3. 导入规范

按照以下顺序导入:

  1. Java 标准库
  2. Jakarta 注解
  3. 第三方库
  4. 项目内部类

4. 包结构

com.datai.tooling
├── controller          # Controller 层
├── service            # Service 层
│   └── impl           # Service 实现层
├── domain             # 领域对象
│   ├── dto            # 数据传输对象
│   ├── vo             # 视图对象
│   └── entity         # 实体类
├── mapper             # Mapper 层
├── enums              # 枚举类
├── factory            # 工厂类
└── exception          # 异常类

测试要求

  1. 覆盖率要求:≥ 80%
  2. 测试框架JUnit 5 + Mockito
  3. 测试场景
    • 正常场景测试
    • 异常场景测试
    • 边界条件测试
    • 并发场景测试

注意事项

  1. 连接复用:必须使用 ToolingConnectionFactory 获取连接,避免重复创建
  2. 异步日志:操作日志必须异步记录,不影响主流程性能
  3. 异常处理:必须统一使用 datai-salesforce-common 模块的异常体系
  4. 参数校验:所有入参必须使用 Jakarta Validation 进行校验
  5. 事务管理:数据库操作必须使用 Spring 事务管理
  6. 日志记录:关键操作必须记录应用日志
  7. 错误码:所有错误必须使用 ToolingAIErrCode 枚举定义
  8. RESTful 规范API 接口必须符合 RESTful 规范
  9. 文档同步:代码变更后必须同步更新相关文档
  10. 测试覆盖:代码变更后必须运行测试并确保通过
  11. 代码审查:代码提交前必须经过代码审查
  12. 版本控制:使用 Git 进行版本控制,遵循分支管理策略
  13. 性能监控:关键接口必须进行性能监控
  14. 安全审计:定期进行安全审计,及时修复安全漏洞
  15. 数据备份:定期备份操作日志数据
  16. SOQL 查询优化:只查询需要的字段,避免 SELECT *
  17. 过滤条件:在 WHERE 子句中添加过滤条件,减少返回数据量
  18. 分页查询:支持分页查询,避免一次性返回大量数据
  19. 异步线程池配置:合理配置异步线程池参数
  20. 监控异步任务:监控异步日志记录的任务状态
  21. 定期清理历史数据:定期清理历史日志数据
  22. 数据库索引优化:设计合理的索引,优化查询性能
  23. 预留扩展点:预留扩展点,支持未来新增 AI 功能
  24. 插件化设计:支持通过插件方式扩展 AI 功能
  25. 统一返回格式:使用 AjaxResult 统一返回格式
  26. 分页支持:使用 TableDataInfo 支持分页
  27. Swagger 注解:使用 @Api 和 @ApiOperation 注解
  28. Lombok 注解:使用 @Data、@Slf4j 等 Lombok 注解
  29. MyBatis Plus 注解:使用 @TableName、@TableId 等 MyBatis Plus 注解
  30. Jakarta Validation 注解:使用 @NotBlank、@NotNull 等 Jakarta Validation 注解

输出要求

  1. 生成完整的代码文件,包括 Service 接口、Service 实现、Controller、DTO、VO、Entity、Mapper、Enums、单元测试
  2. 代码必须符合项目代码规范
  3. 代码必须包含完整的注释
  4. 代码必须通过编译
  5. 单元测试覆盖率必须 ≥ 80%

示例代码

Service 实现示例

@Service
@Slf4j
public class ToolingAIServiceImpl implements IToolingAIService {
    
    @Autowired
    private ToolingConnectionFactory connectionFactory;
    
    @Autowired
    private ToolingAIOperationLogMapper logMapper;
    
    @Autowired
    private ThreadPoolTaskExecutor asyncExecutor;
    
    @Override
    public SaveResult createAIApplication(AIApplicationRequest request) {
        try {
            ToolingConnection connection = connectionFactory.getConnection("source");
            
            AIApplication aiApplication = new AIApplication();
            aiApplication.setDeveloperName(request.getDeveloperName());
            aiApplication.setMasterLabel(request.getMasterLabel());
            aiApplication.setDescription(request.getDescription());
            aiApplication.setStatus(request.getStatus());
            aiApplication.setApplicationType(request.getApplicationType());
            
            SaveResult[] results = connection.create(new SObject[]{aiApplication});
            
            SaveResult result = results[0];
            
            logOperation("create_ai_application", "AIApplication", 
                       result.getId(), request.getDeveloperName(),
                       JsonUtils.toJson(request), 
                       JsonUtils.toJson(result),
                       result.isSuccess() ? 1 : 0, 
                       result.isSuccess(), 
                       result.isSuccess() ? null : "TOOLING_AI_002",
                       result.isSuccess() ? null : "创建失败");
            
            return result;
        } catch (ConnectionException e) {
            log.error("创建 AI 应用失败", e);
            throw new SalesforceAuthException("TOOLING_AI_002", "创建 AI 应用失败: " + e.getMessage());
        }
    }
    
    private void logOperation(String operationType, String metadataType, 
                          String metadataId, String metadataName,
                          String requestData, String responseData,
                          int resultCount, boolean success, 
                          String errorCode, String errorMessage) {
        CompletableFuture.runAsync(() -> {
            try {
                ToolingAIOperationLog log = new ToolingAIOperationLog();
                log.setOperationType(operationType);
                log.setMetadataType(metadataType);
                log.setMetadataId(metadataId);
                log.setMetadataName(metadataName);
                log.setRequestData(requestData);
                log.setResponseData(responseData);
                log.setResultCount(resultCount);
                log.setStatus(success ? "success" : "failed");
                log.setErrorCode(errorCode);
                log.setErrorMessage(errorMessage);
                log.setOperationTime(LocalDateTime.now());
                log.setUserId(SecurityUtils.getUserId());
                
                logMapper.insert(log);
            } catch (Exception e) {
                log.error("记录操作日志失败", e);
            }
        }, asyncExecutor);
    }
}

Controller 示例

@Api(tags = "Tooling API - AI 和智能功能")
@RestController
@RequestMapping("/salesforce/tooling/ai")
public class ToolingAIController {
    
    @Autowired
    private IToolingAIService toolingAIService;
    
    @ApiOperation("创建 AI 应用")
    @PostMapping("/application")
    public AjaxResult createAIApplication(@RequestBody @Valid AIApplicationRequest request) {
        return AjaxResult.success(toolingAIService.createAIApplication(request));
    }
    
    @ApiOperation("查询 AI 应用")
    @GetMapping("/applications")
    public TableDataInfo queryAIApplications(@RequestParam(required = false) String status) {
        List<AIApplicationVO> list = toolingAIService.queryAIApplications(status);
        return getDataTable(list);
    }
}

验证标准

  1. 代码是否完整生成
  2. 代码是否符合项目代码规范
  3. 代码是否包含完整注释
  4. 代码是否能通过编译
  5. 单元测试覆盖率是否 ≥ 80%
  6. 是否实现了所有需求功能
  7. 是否正确使用 ToolingConnectionFactory
  8. 是否正确实现异步日志记录
  9. 是否正确处理异常
  10. 是否正确使用 SoqlBuilder 构建 SOQL 查询