datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-03-003-08-prompt-描述和列出元数据.md

3.2 KiB
Raw Permalink Blame History

提示词:描述和列出元数据

引用真源

需求描述

根据需求文档和设计文档,实现 Salesforce Metadata API 的描述Describe和列出List元数据功能包括

  1. DescribeMetadata: 获取 Org 支持的所有元数据类型。
  2. ListMetadata: 获取指定类型(及文件夹)下的具体元数据成员列表。
  3. 审计记录: 记录所有查询操作到数据库表 datai_metadata_describe

设计方案

根据设计文档和决策记录,采用以下技术方案:

  1. 分层架构: Controller -> Service -> Repository (MyBatis Plus) -> Integration (Salesforce Metadata API)。
  2. API 交互: 直接使用 metadata.jar 中的 MetadataConnection 进行 API 调用。
  3. 批量处理: Service 层必须实现 ListMetadata 的自动分批逻辑。Salesforce API 限制每次 listMetadata 调用最多包含 3 个 ListMetadataQuery。如果输入列表超过 3 个Service 层需将其拆分为每组 3 个的子列表,依次调用 API最后合并结果。
  4. 审计策略: 同步写入数据库。对于 ListMetadata 操作,需为每个查询记录一条审计日志(或根据批次记录,确保数据完整性)。

输出格式要求

  1. 必须包含以下文件
    • Controller: MetadataDescribeController.java (路径: datai-salesforce-partner/src/main/java/com/datai/partner/controller/MetadataDescribeController.java)
    • Service: MetadataDescribeService.java (路径: datai-salesforce-partner/src/main/java/com/datai/partner/service/MetadataDescribeService.java)
    • Mapper: MetadataDescribeMapper.java (路径: datai-salesforce-partner/src/main/java/com/datai/partner/mapper/MetadataDescribeMapper.java)
    • Entity: MetadataDescribeEntity.java (路径: datai-salesforce-partner/src/main/java/com/datai/partner/domain/MetadataDescribeEntity.java)
  2. 代码结构要求
    • Controller 使用 @RestController@RequestMapping("/salesforce/metadata")
    • Service 使用 @Service,并注入 MetadataConnectionFactory (from datai-salesforce-auth) 和 MetadataDescribeMapper
    • Mapper 继承 BaseMapper<MetadataDescribeEntity> (MyBatis Plus)。
    • Entity 使用 @TableName("datai_metadata_describe")

代码规范要求

  1. 命名规范: 遵循 Java 标准驼峰命名。
  2. 异常处理: 捕获 ConnectionException 并抛出 SalesforceOperationException
  3. 依赖注入: 使用 @Autowired
  4. 日志记录: 使用 @Slf4j 记录关键步骤和异常。
  5. 注释: 核心方法(尤其是分批逻辑)必须包含 Javadoc 注释。

测试要求

  1. 单元测试:
    • 测试 describeMetadata 正常流程。
    • 测试 listMetadata 正常流程(<=3 个查询)。
    • 测试 listMetadata 分批流程(>3 个查询,如 4 个或 10 个)。
    • 测试审计日志是否正确写入。