datai/datai-scenes/datai-scene-salesforce/docs/requirements/2026-01-28-004-ToolingAPI源org实现.md

184 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 需求文档
## 元数据
- 需求编号004
- 创建时间2026-01-28
- 创建人AI Assistant
- 状态:进行中
- 优先级:高
## 需求概述
`datai-salesforce-tooling` 模块中实现 Salesforce Tooling API 的完整功能,提供对 Salesforce 源 orgSource Org的开发工具和元数据操作能力包括元数据操作、开发工具功能、AI 和智能功能、动作和自动化、访问和安全、高级功能等。
## 目标
1. 实现 Tooling API 的所有核心功能,提供完整的开发工具和元数据操作能力
2. 集成 `datai-salesforce-auth` 模块的会话管理功能
3. 提供 REST API 接口,支持外部系统调用
4. 创建数据库表,存储代码覆盖率、测试结果等数据
5. 默认实现源 orgSource Org类型的数据操作
6. 实现 SOQL 查询功能Tooling API 的核心特性)
## 功能需求
### 核心功能
#### 1. 元数据操作
- **自定义对象和字段**CustomObject、CustomField、CustomIndex
- **Apex 组件**ApexClass、ApexTrigger、ApexPage、ApexComponent
- **Flow 和自动化**Flow、FlowDefinition、FlowVersion、FlowTestCoverage
#### 2. 开发工具功能
##### 诊断和调试
- **ApexCodeCoverage**: Apex 代码覆盖率
- **ApexCodeCoverageAggregate**: Apex 代码覆盖率聚合
- **ApexTestQueueItem**: Apex 测试队列项
- **ApexLog**: Apex 日志
##### 查询和搜索
- **ApexClassMember**: Apex 类成员
- **ApexTriggerMember**: Apex 触发器成员
- **ApexPageMember**: Apex 页面成员
- **ApexComponentMember**: Apex 组件成员
#### 3. AI 和智能功能
##### AI 应用
- **AIApplication**: AI 应用
- **AIApplicationStatus**: AI 应用状态
- **AIApplicationType**: AI 应用类型
##### AI 评估
- **AiEvaluationSubjectType**: AI 评估主题类型
- **AiEvaluationProcessingStatus**: AI 评估处理状态
- **AiEvaluationMetricType**: AI 评估指标类型
##### AI 创作
- **AiAuthoringBundleType**: AI 创作包类型
- **AiAuthoringBundleVersionStatus**: AI 创作包版本状态
- **AiAssistantTemplateStatus**: AI 助手模板状态
#### 4. 动作和自动化
##### 动作定义
- **ActionOverride**: 动作覆盖
- **ActionOverrideType**: 动作覆盖类型
- **ActionSubtype**: 动作子类型
##### 可操作列表
- **ActionableListType**: 可操作列表类型
- **ActionableListSourceType**: 可操作列表源类型
- **ActionableListKPIStType**: 可操作列表 KPI 状态类型
##### 动作任务
- **ActionTaskAssignedToTypes**: 动作任务分配类型
- **ActionHttpMethod**: 动作 HTTP 方法
- **ActionEmailSenderType**: 动作邮件发送者类型
#### 5. 访问和安全
##### 访问控制
- **AccessMethod**: 访问方法
- **AccessResourceType**: 访问资源类型
- **APIAccessLevel**: API 访问级别
- **APIType**: API 类型
##### 连接器
- **ActivationPlatformConnectorType**: 激活平台连接器类型
- **ActivationPlatformCreationType**: 激活平台创建类型
#### 6. 高级功能
##### 聚合和计算
- **AccumulateResultOperator**: 累积结果操作符
- **AccumulateResultCondInputType**: 累积结果条件输入类型
- **AggregateExpressionResultColumnMetadata**: 聚合表达式结果列元数据
- **AggregateQueryResultColumnMetadata**: 聚合查询结果列元数据
##### 预测和预测
- **AdvAcctFrcstDisplayGroupType**: 高级账户预测显示组类型
- **AdvAcctFcstMeasureType**: 高级账户预测度量类型
- **AdvAcctFcstFormulaType**: 高级账户预测公式类型
- **AdvAcctFcstComputationMethod**: 高级账户预测计算方法
##### 激活和应用
- **ActivationFlowType**: 激活 Flow 类型
- **ActivationFeatureType**: 激活功能类型
- **ActivationAppType**: 激活应用类型
- **ACPStatus**: ACP 状态
#### 7. SOQL 查询功能(核心特性)
- **query**: 执行 SOQL 查询
- **queryMore**: 获取更多查询结果
- 支持所有 Tooling API 对象的查询
- 支持复杂的查询条件、排序、分页
### 次要功能
- 错误处理和异常管理
- 结果封装和返回
- 异步操作轮询机制
- 测试执行和结果查询
- 代码覆盖率分析
## 非功能需求
### 性能要求
- 暂不考虑连接池、并发控制、缓存等性能优化
- 每次调用都创建新连接
- 异步操作需要轮询检查状态
- SOQL 查询需要支持分页queryMore
### 安全要求
- 集成 `datai-salesforce-auth` 模块的会话管理
- 使用 SessionManager 获取 Session ID 和 Server URL
- 优先使用 `datai-salesforce-common` 模块中的现有异常
### 兼容性要求
- 支持 Salesforce Tooling API v65.0
- 兼容 Java 22
- 兼容 Spring Boot 框架
### 数据存储要求
- 创建数据库表存储代码覆盖率、测试结果等数据
- 支持历史记录查询
- 支持结果统计和分析
## 技术约束
### 必须使用的框架或库
- **tooling.jar**: Salesforce Tooling API 客户端ToolingConnection、ApexClass、ApexTrigger、ApexCodeCoverage 等)
- **datai-salesforce-auth**: 使用 SessionManager 管理会话
- **datai-salesforce-common**: 使用现有异常类
### 必须遵循的设计模式
- Service 层模式:提供业务逻辑封装
- Controller 层模式:提供 REST API 接口
- 直接使用 tooling.jar 中的现有类,不进行不必要的二次封装
### 必须实现的功能
- SOQL 查询功能Tooling API 的核心特性)
- 支持所有 Tooling API 对象的 CRUD 操作
- 支持测试执行和结果查询
- 支持代码覆盖率分析
### 自定义类原则
- 优先使用 tooling.jar 中的现有类
- 如果确实有需求需要使用自定义类,则新增
- 新增前需要严格判断必要性
### 数据库设计原则
- 需要创建表存储代码覆盖率、测试结果等数据
- 表结构在设计阶段确定
- 支持历史记录查询和统计分析
## 成功标准
1. **功能完整性**: 所有 Tooling API 核心功能都已实现并通过测试
2. **认证集成**: 成功集成 SessionManager能够获取 Session ID 和 Server URL
3. **API 接口**: 提供 REST API 接口,支持外部系统调用
4. **数据存储**: 成功创建数据库表,能够存储和查询代码覆盖率、测试结果等数据
5. **SOQL 查询**: 成功实现 SOQL 查询功能,支持所有 Tooling API 对象的查询
6. **异常处理**: 正确处理各种异常情况,使用合适的异常类
7. **代码质量**: 代码符合项目规范,无编译错误和警告
## 相关文档
- [子需求索引](./sub/index.md) - 子需求文档索引
- [设计文档](../design/2026-01-28-004-ToolingAPI源org实现设计.md) - 待创建
- [决策记录](../decisions/adr/2026-01-28-004-ADR-ToolingAPI源org实现技术选型.md) - 待创建
- [参考文档](../reference-code/sforce/docs/tooling-module.md) - Tooling API 功能说明