570 lines
14 KiB
Markdown
570 lines
14 KiB
Markdown
# API 文档:AI 和智能功能
|
||
|
||
## 元数据
|
||
- **需求编号**: 004-04
|
||
- **文档版本**: v1.0.0
|
||
- **创建时间**: 2026-02-05
|
||
- **创建人**: AI Assistant
|
||
- **关联需求**: [AI 和智能功能](../requirements/sub/2026-01-28-004-04-AI和智能功能.md)
|
||
|
||
## API 概述
|
||
|
||
### 功能描述
|
||
AI 和智能功能 API 提供对 Salesforce Tooling API 中 AI 相关功能的访问,包括:
|
||
- AI 应用管理(创建、查询、更新、删除)
|
||
- AI 评估配置查询(评估主题类型、处理状态、指标类型)
|
||
- AI 创作工具查询(创作包类型、版本状态、助手模板状态)
|
||
|
||
### 基础信息
|
||
- **基础路径**: `/salesforce/tooling/ai`
|
||
- **权限前缀**: `tooling:ai`
|
||
- **Content-Type**: `application/json`
|
||
- **认证方式**: JWT Token + Session
|
||
|
||
### 通用响应格式
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {}
|
||
}
|
||
```
|
||
|
||
### 通用错误码
|
||
| 错误码 | 说明 |
|
||
|--------|------|
|
||
| 200 | 操作成功 |
|
||
| 500 | 服务器内部错误 |
|
||
| 401 | 未授权 |
|
||
| 403 | 权限不足 |
|
||
|
||
## 接口列表
|
||
|
||
### 一、AI 应用管理接口
|
||
|
||
#### 1. 创建 AI 应用
|
||
|
||
**功能描述**: 通过 Tooling API 创建 AI 应用(AIApplication)
|
||
|
||
**请求方式**: POST
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/application`
|
||
|
||
**权限要求**: `tooling:ai:create`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| developerName | String | 是 | 开发者名称,唯一标识 | "MyAIApp" |
|
||
| masterLabel | String | 是 | 主标签,显示名称 | "My AI Application" |
|
||
| description | String | 否 | 描述 | "This is my AI application" |
|
||
| status | String | 是 | 状态(Active/Inactive) | "Active" |
|
||
| applicationType | String | 是 | 应用类型 | "EinsteinGPT" |
|
||
|
||
**请求示例**:
|
||
```json
|
||
{
|
||
"developerName": "MyAIApp",
|
||
"masterLabel": "My AI Application",
|
||
"description": "This is my AI application",
|
||
"status": "Active",
|
||
"applicationType": "EinsteinGPT"
|
||
}
|
||
```
|
||
|
||
**响应参数**:
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码 |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 创建结果 |
|
||
| data.id | String | 创建的记录 ID |
|
||
| data.success | Boolean | 是否成功 |
|
||
| data.errors | Array | 错误信息列表 |
|
||
|
||
**成功响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "创建 AI 应用成功",
|
||
"data": {
|
||
"id": "0Afxx0000000001CAA",
|
||
"success": true,
|
||
"errors": []
|
||
}
|
||
}
|
||
```
|
||
|
||
**失败响应示例**:
|
||
```json
|
||
{
|
||
"code": 500,
|
||
"msg": "创建 AI 应用失败",
|
||
"data": {
|
||
"id": null,
|
||
"success": false,
|
||
"errors": ["DeveloperName already exists"]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_002: 创建 AI 应用失败
|
||
- TOOLING_AI_007: 权限不足
|
||
|
||
---
|
||
|
||
#### 2. 查询 AI 应用列表
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的所有 AI 应用
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/applications`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| status | String | 否 | 状态筛选 | "Active" |
|
||
| pageNum | Integer | 否 | 页码,默认 1 | 1 |
|
||
| pageSize | Integer | 否 | 每页大小,默认 10 | 10 |
|
||
|
||
**请求示例**:
|
||
```
|
||
GET /salesforce/tooling/ai/applications?status=Active&pageNum=1&pageSize=10
|
||
```
|
||
|
||
**响应参数**:
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码 |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 查询结果 |
|
||
| data.total | Integer | 总记录数 |
|
||
| data.rows | Array | AI 应用列表 |
|
||
| data.rows[].id | String | 记录 ID |
|
||
| data.rows[].developerName | String | 开发者名称 |
|
||
| data.rows[].masterLabel | String | 主标签 |
|
||
| data.rows[].description | String | 描述 |
|
||
| data.rows[].status | String | 状态 |
|
||
| data.rows[].applicationType | String | 应用类型 |
|
||
| data.rows[].createdDate | String | 创建日期 |
|
||
| data.rows[].lastModifiedDate | String | 最后修改日期 |
|
||
|
||
**成功响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "查询成功",
|
||
"data": {
|
||
"total": 2,
|
||
"rows": [
|
||
{
|
||
"id": "0Afxx0000000001CAA",
|
||
"developerName": "MyAIApp",
|
||
"masterLabel": "My AI Application",
|
||
"description": "This is my AI application",
|
||
"status": "Active",
|
||
"applicationType": "EinsteinGPT",
|
||
"createdDate": "2026-02-05T10:00:00.000Z",
|
||
"lastModifiedDate": "2026-02-05T10:00:00.000Z"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_005: 查询 AI 应用失败
|
||
|
||
---
|
||
|
||
#### 3. 更新 AI 应用
|
||
|
||
**功能描述**: 通过 Tooling API 更新 AI 应用
|
||
|
||
**请求方式**: PUT
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/application`
|
||
|
||
**权限要求**: `tooling:ai:update`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| id | String | 是 | 记录 ID | "0Afxx0000000001CAA" |
|
||
| developerName | String | 否 | 开发者名称 | "MyAIApp" |
|
||
| masterLabel | String | 否 | 主标签 | "My AI Application" |
|
||
| description | String | 否 | 描述 | "Updated description" |
|
||
| status | String | 否 | 状态 | "Inactive" |
|
||
| applicationType | String | 否 | 应用类型 | "EinsteinGPT" |
|
||
|
||
**请求示例**:
|
||
```json
|
||
{
|
||
"id": "0Afxx0000000001CAA",
|
||
"masterLabel": "My AI Application Updated",
|
||
"description": "Updated description"
|
||
}
|
||
```
|
||
|
||
**响应参数**:
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码 |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 更新结果 |
|
||
| data.id | String | 记录 ID |
|
||
| data.success | Boolean | 是否成功 |
|
||
| data.errors | Array | 错误信息列表 |
|
||
|
||
**成功响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "更新 AI 应用成功",
|
||
"data": {
|
||
"id": "0Afxx0000000001CAA",
|
||
"success": true,
|
||
"errors": []
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_003: 更新 AI 应用失败
|
||
- TOOLING_AI_008: 记录不存在
|
||
|
||
---
|
||
|
||
#### 4. 删除 AI 应用
|
||
|
||
**功能描述**: 通过 Tooling API 删除 AI 应用
|
||
|
||
**请求方式**: DELETE
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/application/{id}`
|
||
|
||
**权限要求**: `tooling:ai:delete`
|
||
|
||
**路径参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| id | String | 是 | 记录 ID | "0Afxx0000000001CAA" |
|
||
|
||
**请求示例**:
|
||
```
|
||
DELETE /salesforce/tooling/ai/application/0Afxx0000000001CAA
|
||
```
|
||
|
||
**响应参数**:
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码 |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 删除结果 |
|
||
| data.id | String | 记录 ID |
|
||
| data.success | Boolean | 是否成功 |
|
||
| data.errors | Array | 错误信息列表 |
|
||
|
||
**成功响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "删除 AI 应用成功",
|
||
"data": {
|
||
"id": "0Afxx0000000001CAA",
|
||
"success": true,
|
||
"errors": []
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_004: 删除 AI 应用失败
|
||
- TOOLING_AI_008: 记录不存在
|
||
|
||
---
|
||
|
||
### 二、AI 评估配置查询接口
|
||
|
||
#### 5. 查询评估主题类型
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 评估主题类型(AiEvaluationSubjectType)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/evaluation-subject-types`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| pageNum | Integer | 否 | 页码,默认 1 | 1 |
|
||
| pageSize | Integer | 否 | 每页大小,默认 10 | 10 |
|
||
|
||
**请求示例**:
|
||
```
|
||
GET /salesforce/tooling/ai/evaluation-subject-types?pageNum=1&pageSize=10
|
||
```
|
||
|
||
**响应参数**:
|
||
|
||
| 参数名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| code | Integer | 状态码 |
|
||
| msg | String | 提示信息 |
|
||
| data | Object | 查询结果 |
|
||
| data.total | Integer | 总记录数 |
|
||
| data.rows | Array | 评估主题类型列表 |
|
||
| data.rows[].id | String | 记录 ID |
|
||
| data.rows[].developerName | String | 开发者名称 |
|
||
| data.rows[].masterLabel | String | 主标签 |
|
||
| data.rows[].description | String | 描述 |
|
||
|
||
**成功响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "查询成功",
|
||
"data": {
|
||
"total": 3,
|
||
"rows": [
|
||
{
|
||
"id": "0Agxx0000000001CAA",
|
||
"developerName": "Flow",
|
||
"masterLabel": "Flow",
|
||
"description": "Flow evaluation subject"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
#### 6. 查询评估处理状态
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 评估处理状态(AiEvaluationProcessingStatus)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/evaluation-processing-statuses`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| pageNum | Integer | 否 | 页码,默认 1 | 1 |
|
||
| pageSize | Integer | 否 | 每页大小,默认 10 | 10 |
|
||
|
||
**响应参数**: 同"查询评估主题类型"
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
#### 7. 查询评估指标类型
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 评估指标类型(AiEvaluationMetricType)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/evaluation-metric-types`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**: 同"查询评估主题类型"
|
||
|
||
**响应参数**: 同"查询评估主题类型"
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
### 三、AI 创作工具查询接口
|
||
|
||
#### 8. 查询创作包类型
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 创作包类型(AiAuthoringBundleType)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/authoring-bundle-types`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**:
|
||
|
||
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|
||
|--------|------|------|------|------|
|
||
| pageNum | Integer | 否 | 页码,默认 1 | 1 |
|
||
| pageSize | Integer | 否 | 每页大小,默认 10 | 10 |
|
||
|
||
**响应参数**: 同"查询评估主题类型"
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
#### 9. 查询创作包版本状态
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 创作包版本状态(AiAuthoringBundleVersionStatus)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/authoring-bundle-version-statuses`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**: 同"查询创作包类型"
|
||
|
||
**响应参数**: 同"查询评估主题类型"
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
#### 10. 查询助手模板状态
|
||
|
||
**功能描述**: 查询 Salesforce 组织中的 AI 助手模板状态(AiAssistantTemplateStatus)
|
||
|
||
**请求方式**: GET
|
||
|
||
**请求路径**: `/salesforce/tooling/ai/assistant-template-statuses`
|
||
|
||
**权限要求**: `tooling:ai:query`
|
||
|
||
**请求参数**: 同"查询创作包类型"
|
||
|
||
**响应参数**: 同"查询评估主题类型"
|
||
|
||
**错误码**:
|
||
- TOOLING_AI_001: Session 无效或已过期
|
||
- TOOLING_AI_010: 查询 AI 类型失败
|
||
|
||
---
|
||
|
||
## 错误码列表
|
||
|
||
### 系统错误码
|
||
|
||
| 错误码 | 说明 | 处理建议 |
|
||
|--------|------|----------|
|
||
| TOOLING_AI_001 | Session 无效或已过期 | 重新登录获取有效 Session |
|
||
| TOOLING_AI_002 | 创建 AI 应用失败 | 检查请求参数是否正确,DeveloperName 是否已存在 |
|
||
| TOOLING_AI_003 | 更新 AI 应用失败 | 检查记录 ID 是否存在,请求参数是否正确 |
|
||
| TOOLING_AI_004 | 删除 AI 应用失败 | 检查记录 ID 是否存在,是否有权限删除 |
|
||
| TOOLING_AI_005 | 查询 AI 应用失败 | 检查查询条件是否正确,Session 是否有效 |
|
||
| TOOLING_AI_006 | 网络超时 | 检查网络连接,稍后重试 |
|
||
| TOOLING_AI_007 | 权限不足 | 检查用户是否有相应权限 |
|
||
| TOOLING_AI_008 | 记录不存在 | 检查记录 ID 是否正确 |
|
||
| TOOLING_AI_009 | 用户未登录 | 请先登录系统 |
|
||
| TOOLING_AI_010 | 查询 AI 类型失败 | 检查 Session 是否有效,网络连接是否正常 |
|
||
| TOOLING_AI_011 | 操作类型不支持 | 检查操作类型是否正确 |
|
||
|
||
### HTTP 状态码
|
||
|
||
| 状态码 | 说明 |
|
||
|--------|------|
|
||
| 200 | 请求成功 |
|
||
| 400 | 请求参数错误 |
|
||
| 401 | 未授权,需要登录 |
|
||
| 403 | 权限不足 |
|
||
| 404 | 资源不存在 |
|
||
| 500 | 服务器内部错误 |
|
||
|
||
## 相关文档
|
||
- [需求文档](../requirements/sub/2026-01-28-004-04-AI和智能功能.md)
|
||
- [设计文档](../design/2026-02-03-004-04-AI和智能功能-设计.md)
|
||
- [决策记录](../decisions/2026-02-03-004-04-ADR-AI和智能功能技术选型.md)
|
||
- [变更日志](../changelog/2026-02-05-004-04-changelog.md)
|
||
- [复盘文档](../retros/2026-02-05-004-04-retro.md)
|
||
- [会话记录](../sessions/2026-02-03-004-04-session.md)
|
||
|
||
## 附录
|
||
|
||
### 附录 A:AI 应用状态枚举
|
||
|
||
| 状态值 | 说明 |
|
||
|--------|------|
|
||
| Active | 活跃状态 |
|
||
| Inactive | 非活跃状态 |
|
||
|
||
### 附录 B:AI 应用类型枚举
|
||
|
||
| 类型值 | 说明 |
|
||
|--------|------|
|
||
| EinsteinGPT | Einstein GPT 应用 |
|
||
| EinsteinBots | Einstein 机器人 |
|
||
| Other | 其他类型 |
|
||
|
||
### 附录 C:Postman 测试示例
|
||
|
||
#### 创建 AI 应用
|
||
```bash
|
||
curl -X POST "http://localhost:8080/salesforce/tooling/ai/application" \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer ${TOKEN}" \
|
||
-d '{
|
||
"developerName": "TestAIApp",
|
||
"masterLabel": "Test AI Application",
|
||
"description": "This is a test AI application",
|
||
"status": "Active",
|
||
"applicationType": "EinsteinGPT"
|
||
}'
|
||
```
|
||
|
||
#### 查询 AI 应用列表
|
||
```bash
|
||
curl -X GET "http://localhost:8080/salesforce/tooling/ai/applications?pageNum=1&pageSize=10" \
|
||
-H "Authorization: Bearer ${TOKEN}"
|
||
```
|
||
|
||
#### 更新 AI 应用
|
||
```bash
|
||
curl -X PUT "http://localhost:8080/salesforce/tooling/ai/application" \
|
||
-H "Content-Type: application/json" \
|
||
-H "Authorization: Bearer ${TOKEN}" \
|
||
-d '{
|
||
"id": "0Afxx0000000001CAA",
|
||
"masterLabel": "Updated AI Application"
|
||
}'
|
||
```
|
||
|
||
#### 删除 AI 应用
|
||
```bash
|
||
curl -X DELETE "http://localhost:8080/salesforce/tooling/ai/application/0Afxx0000000001CAA" \
|
||
-H "Authorization: Bearer ${TOKEN}"
|
||
```
|