datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-02-003-01-prompt-Metadata连接管理.md

6.6 KiB
Raw Permalink Blame History

提示词Metadata 连接管理

引用真源

需求描述

根据需求文档,实现 Salesforce Metadata API 连接管理功能,包括:

  1. 连接工厂:创建和管理 MetadataConnection 实例
  2. 会话头管理:设置 SessionHeader
  3. 调用选项:设置 CallOptions
  4. 连接缓存:使用 AbstractConnectionFactory 提供的缓存机制
  5. 连接状态:提供连接状态查询与测试
  6. 连接刷新与关闭:刷新与清理连接缓存

核心要求:

  • 固定使用 source org 类型
  • 继承 AbstractConnectionFactory
  • 集成 SessionManager 获取会话信息
  • 提供 RESTful API 接口
  • 不生成 SQL 脚本

设计方案

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

  1. 模块datai-salesforce-metadata
  2. 连接工厂MetadataConnectionFactory 继承 AbstractConnectionFactory<MetadataConnection>
  3. 服务层IMetadataConnectionService 接口 + MetadataConnectionServiceImpl 实现
  4. 控制器MetadataConnectionController 提供 REST API
  5. 数据模型DataiMetadataConnectionSetCallOptionsDtoConnectionStatusVo
  6. 持久层DataiMetadataConnectionMapper
  7. 配置MetadataConnectionConfig
  8. 异常处理:使用 SalesforceAuthExceptionSalesforceOperationException

包结构

com.datai.metadata
├── controller
│   └── MetadataConnectionController.java
├── service
│   ├── IMetadataConnectionService.java
│   └── impl
│       └── MetadataConnectionServiceImpl.java
├── factory
│   └── MetadataConnectionFactory.java
├── mapper
│   └── DataiMetadataConnectionMapper.java
├── model
│   ├── domain
│   │   └── DataiMetadataConnection.java
│   ├── dto
│   │   └── SetCallOptionsDto.java
│   └── vo
│       └── ConnectionStatusVo.java
└── config
    └── MetadataConnectionConfig.java

输出格式要求

必须包含的文件

  1. 连接工厂MetadataConnectionFactory.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/factory/MetadataConnectionFactory.java
    • 必须继承 AbstractConnectionFactory<MetadataConnection>
    • 必须实现 createConnectionInternal() 方法
  2. 服务接口IMetadataConnectionService.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/service/IMetadataConnectionService.java
    • 定义所有连接管理方法
  3. 服务实现MetadataConnectionServiceImpl.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/MetadataConnectionServiceImpl.java
    • 实现连接获取、测试、刷新、关闭
    • 固定使用 source org 类型
  4. 控制器MetadataConnectionController.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/MetadataConnectionController.java
    • 提供 4 个 REST API 接口
    • 使用 @Tag 注解定义 Swagger 文档
    • 使用 @PreAuthorize 注解进行权限控制
  5. MapperDataiMetadataConnectionMapper.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetadataConnectionMapper.java
    • 使用 MyBatis Plus 规范
  6. DomainDataiMetadataConnection.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/model/domain/DataiMetadataConnection.java
    • 与设计文档字段保持一致
  7. DTOSetCallOptionsDto.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/model/dto/SetCallOptionsDto.java
    • 使用 @Schema 注解定义 Swagger 文档
  8. VOConnectionStatusVo.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/model/vo/ConnectionStatusVo.java
    • 使用 @Schema 注解定义 Swagger 文档
  9. 配置类MetadataConnectionConfig.java

    • 路径:datai-salesforce-metadata/src/main/java/com/datai/metadata/config/MetadataConnectionConfig.java

REST API 接口列表

  1. 获取连接状态

    • 方法GET
    • 路径:/api/metadata/connection/status
    • 权限:metadata:connection:status
    • 响应:ConnectionStatusVo
  2. 测试连接

    • 方法POST
    • 路径:/api/metadata/connection/test
    • 权限:metadata:connection:test
  3. 刷新连接

    • 方法POST
    • 路径:/api/metadata/connection/refresh
    • 权限:metadata:connection:refresh
  4. 关闭连接

    • 方法POST
    • 路径:/api/metadata/connection/close
    • 权限:metadata:connection:close

代码规范要求

  1. 类命名:首字母大写,驼峰命名
  2. 方法命名:首字母小写,驼峰命名
  3. 变量命名:首字母小写,驼峰命名
  4. 常量命名:全大写,下划线分隔
  5. 日志规范:使用 Lombok 的 @Slf4j 注解
  6. 异常处理
    • 捕获异常后记录日志
    • 抛出 SalesforceAuthExceptionSalesforceOperationException
    • 在 Controller 层转换为 ServiceExceptionAjaxResult
  7. 代码格式:使用 4 个空格缩进,行宽不超过 120 字符

依赖要求

  1. 必须导入的类

    • com.datai.common.exception.SalesforceAuthException
    • com.datai.common.exception.SalesforceOperationException
    • com.datai.common.exception.ServiceException
    • com.datai.common.core.domain.AjaxResult
    • com.datai.auth.manager.SessionManager
    • com.datai.auth.factory.AbstractConnectionFactory
    • com.sforce.soap.metadata.Connector
    • com.sforce.soap.metadata.MetadataConnection
    • com.sforce.soap.metadata.SessionHeader_element
    • com.sforce.soap.metadata.CallOptions_element
  2. Spring 注解

    • @RestController
    • @RequestMapping
    • @Autowired
    • @Tag
    • @Operation
    • @PreAuthorize
    • @Valid
    • @RequestBody
    • @Schema
  3. Lombok 注解

    • @Slf4j
    • @Data
    • @Builder(可选)

测试要求

  1. 单元测试覆盖率:不低于 80%
  2. 测试用例场景
    • 获取连接状态成功
    • 测试连接成功与失败
    • Session 过期时异常处理
    • 刷新连接成功
    • 关闭连接成功
  3. 测试框架:使用 JUnit 5 和 Mockito
  4. 测试用例命名规范test+方法名+场景
  5. 测试数据:使用 Mockito 模拟 SessionManager 和 MetadataConnection