datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-03-003-05-prompt-删除操作.md

4.3 KiB
Raw Permalink Blame History

提示词:删除操作

引用真源

需求描述

根据需求文档和设计文档,实现 Salesforce 元数据删除功能。该功能支持按类型和名称删除元数据,支持批量操作,并将删除结果持久化到数据库。

核心功能包括:

  1. 删除元数据:调用 Salesforce Metadata API 的同步接口 deleteMetadata
  2. 批量删除支持一次性删除多个元数据组件Service 层需处理分批逻辑Salesforce 限制单次调用数量,通常为 10
  3. 历史记录:将每次删除操作的结果(成功/失败、错误信息、时间、操作人)保存到数据库表 datai_metadata_delete
  4. 异常处理:捕获 API 调用异常,转换为项目标准异常 (SalesforceAuthException, SalesforceOperationException),并记录失败状态。
  5. REST API:提供标准 REST 接口供前端调用。

设计方案

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

  1. 架构分层

    • Controller: MetadataDeleteController (REST API)
    • Service: MetadataDeleteService (业务逻辑、分批处理、API 调用、结果保存)
    • Repository: MetadataDeleteMapper (MyBatis Plus 数据库操作)
    • Entity: MetadataDeleteEntity (对应 datai_metadata_delete 表)
  2. 关键依赖

    • MetadataConnectionFactory: 获取 MetadataConnection
    • MetadataConnection: 调用 deleteMetadata(type, fullNames)
    • DeleteResult: 处理 Salesforce 返回的删除结果对象。
  3. 数据模型

    • 表名:datai_metadata_delete
    • 实体类:MetadataDeleteEntity
    • DTODeleteRequest (用于批量删除接口入参)
  4. 分批策略

    • 在 Service 层实现循环分批调用,每批次处理 10 个(或根据配置)。
    • 聚合所有批次的结果返回给 Controller。

输出格式要求

  1. 必须包含以下文件

    • Controller: MetadataDeleteController.java (路径: datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/controller/metadata/MetadataDeleteController.java)
    • Service: MetadataDeleteService.java (路径: datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/service/metadata/MetadataDeleteService.java)
    • Mapper: MetadataDeleteMapper.java (路径: datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/mapper/MetadataDeleteMapper.java)
    • Entity: MetadataDeleteEntity.java (路径: datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/domain/MetadataDeleteEntity.java)
    • DTO: DeleteRequest.java (路径: datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/dto/DeleteRequest.java)
  2. 必须包含单元测试

    • MetadataDeleteServiceTest.java (路径: datai-scene-salesforce/src/test/java/com/datai/scene/salesforce/service/metadata/MetadataDeleteServiceTest.java)
  3. 代码内容要求

    • 使用 @RestController, @RequestMapping, @Autowired 等 Spring 注解。
    • 使用 @TableName, @TableId 等 MyBatis Plus 注解。
    • 使用 Lombok 的 @Data 注解。
    • 遵循项目统一的 ApiResponse 响应格式。
    • 记录详细的日志 (slf4j)。

代码规范要求

  1. 命名规范
    • 类名:MetadataDelete...
    • 方法名:deleteMetadata, batchDeleteMetadata, getDeleteHistory
    • 变量名:驼峰命名
  2. 注释规范
    • 类和接口必须有 Javadoc 注释,说明用途。
    • 复杂逻辑(如分批循环)必须有行内注释。
  3. 异常处理
    • 捕获 ConnectionException 并区分 InvalidSessionId 等特定错误。
    • 数据库操作异常不应中断 API 返回(尽可能记录错误并返回部分成功)。

测试要求

  1. Mock 测试
    • 使用 Mockito 模拟 MetadataConnectionFactoryMetadataConnection
    • 模拟 deleteMetadata 返回成功和失败的 DeleteResult
    • 验证 deleteRepository.save() 是否被调用。
  2. 覆盖场景
    • 单个删除成功。
    • 批量删除(超过 10 个触发分批)。
    • 删除失败API 返回 Error
    • API 连接异常。