datai/docs/archive/api-docs/2026-01-27-014-2-api.md

242 lines
7.8 KiB
Markdown
Raw Normal View History

# API 文档
## 元数据
- 需求编号014-2
- 创建时间2026-01-27
- 创建人SSOT 架构师
- 版本号v1.0.0
## API 概述
本 API 提供符号表分析与 DTO 生成功能,利用 Tooling API 的 SymbolTable 功能,解析 Apex 类的内部结构(内部类、方法、变量),为 Java 端自动生成强类型的 DTOData Transfer Object解决 Partner API 只能传输扁平 SObject 的限制。
核心功能包括:
1. 符号表查询:查询指定 Apex 类的符号表信息
2. DTO 生成:基于符号表生成 Java DTO 源代码
3. 批量 DTO 生成:批量生成多个 Apex 类的 Java DTO 源代码
## 接口列表
### 接口 1获取符号表
- **功能描述**:查询指定 Apex 类的符号表信息,包括内部类、方法、变量等详细信息
- **请求方式**GET
- **请求路径**`/tooling/symbol-table/{className}`
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| className | String | 是 | Apex 类名,路径参数 |
| orgType | String | 是 | 组织类型,查询参数(如 "source"、"target"、"sandbox"、"production" |
- **响应参数**
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | SymbolTableVo | 符号表信息 VO 对象 |
- **SymbolTableVo 对象结构**
| 字段名 | 类型 | 说明 |
|---------|------|------|
| className | String | 类名 |
| innerClassCount | Integer | 内部类数量 |
| variableCount | Integer | 变量数量 |
| methodCount | Integer | 方法数量 |
| status | String | 状态 |
- **成功示例**
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"className": "UserSummary",
"innerClassCount": 2,
"variableCount": 5,
"methodCount": 3,
"status": "success"
}
}
```
- **失败示例**
```json
{
"code": 500,
"msg": "获取符号表失败:类名不存在"
}
```
- **权限要求**`tooling:symbol-table:query`
- **日志记录**:记录获取符号表的操作日志
### 接口 2生成 DTO
- **功能描述**:基于指定 Apex 类的符号表生成 Java DTO 源代码
- **请求方式**POST
- **请求路径**`/tooling/symbol-table/generate-dto`
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| className | String | 是 | Apex 类名 |
| packageName | String | 否 | 包名,默认为 "com.datai.generated" |
| includeInnerClasses | boolean | 否 | 是否包含内部类,默认为 true |
| includeMethods | boolean | 否 | 是否包含方法,默认为 true |
| orgType | String | 是 | 组织类型,查询参数(如 "source"、"target"、"sandbox"、"production" |
- **请求示例**
```json
{
"className": "UserSummary",
"packageName": "com.datai.generated",
"includeInnerClasses": true,
"includeMethods": true
}
```
- **响应参数**
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | GenerateDtoResponse | DTO 生成响应对象 |
- **GenerateDtoResponse 对象结构**
| 字段名 | 类型 | 说明 |
|---------|------|------|
| className | String | 类名 |
| javaCode | String | Java 源代码 |
| filePath | String | 文件路径(如果保存到文件系统) |
| success | boolean | 是否成功 |
| message | String | 提示信息 |
- **成功示例**
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"className": "UserSummary",
"javaCode": "package com.datai.generated;\n\nimport lombok.Data;\n\n@Data\npublic class UserSummary {\n private String userName;\n private BigDecimal totalSales;\n // ...其他字段\n}",
"filePath": "datai-salesforce-tooling/src/main/java/com/datai/generated/UserSummary.java",
"success": true,
"message": "DTO 生成成功"
}
}
```
- **失败示例**
```json
{
"code": 500,
"msg": "生成 DTO 失败:符号表获取失败"
}
```
- **权限要求**`tooling:symbol-table:generate`
- **日志记录**:记录生成 DTO 的操作日志
### 接口 3批量生成 DTO
- **功能描述**:批量生成多个 Apex 类的 Java DTO 源代码
- **请求方式**POST
- **请求路径**`/tooling/symbol-table/generate-dto-batch`
- **请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| classNames | List<String> | 是 | Apex 类名列表 |
| packageName | String | 否 | 包名,默认为 "com.datai.generated" |
| includeInnerClasses | boolean | 否 | 是否包含内部类,默认为 true |
| includeMethods | boolean | 否 | 是否包含方法,默认为 true |
| orgType | String | 是 | 组织类型,查询参数(如 "source"、"target"、"sandbox"、"production" |
- **请求示例**
```json
{
"classNames": ["UserSummary", "OrderSummary", "ProductSummary"],
"packageName": "com.datai.generated",
"includeInnerClasses": true,
"includeMethods": true
}
```
- **响应参数**
| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Integer | 状态码200 成功,其他失败) |
| msg | String | 提示信息 |
| data | List<GenerateDtoResponse> | DTO 生成响应对象列表 |
- **成功示例**
```json
{
"code": 200,
"msg": "操作成功",
"data": [
{
"className": "UserSummary",
"javaCode": "package com.datai.generated;\n\nimport lombok.Data;\n\n@Data\npublic class UserSummary {\n private String userName;\n private BigDecimal totalSales;\n // ...其他字段\n}",
"filePath": "datai-salesforce-tooling/src/main/java/com/datai/generated/UserSummary.java",
"success": true,
"message": "DTO 生成成功"
},
{
"className": "OrderSummary",
"javaCode": "package com.datai.generated;\n\nimport lombok.Data;\n\n@Data\npublic class OrderSummary {\n private String orderId;\n private BigDecimal totalAmount;\n // ...其他字段\n}",
"filePath": "datai-salesforce-tooling/src/main/java/com/datai/generated/OrderSummary.java",
"success": true,
"message": "DTO 生成成功"
},
{
"className": "ProductSummary",
"javaCode": "package com.datai.generated;\n\nimport lombok.Data;\n\n@Data\npublic class ProductSummary {\n private String productId;\n private String productName;\n // ...其他字段\n}",
"filePath": "datai-salesforce-tooling/src/main/java/com/datai/generated/ProductSummary.java",
"success": true,
"message": "DTO 生成成功"
}
]
}
```
- **失败示例**
```json
{
"code": 500,
"msg": "批量生成 DTO 失败:部分类名不存在"
}
```
- **权限要求**`tooling:symbol-table:generate`
- **日志记录**:记录批量生成 DTO 的操作日志
## 错误码
| 错误码 | 说明 | 解决方案 |
|--------|------|---------|
| 200 | 操作成功 | - |
| 500 | 服务器内部错误 | 检查服务器日志,联系管理员 |
| 401 | 未授权 | 检查用户权限,确保具有相应的权限 |
| 403 | 禁止访问 | 检查用户权限,确保具有相应的权限 |
| 404 | 资源不存在 | 检查类名是否正确,确保类名存在 |
## 相关文档
- [需求文档](../requirements/REQ-014-2.md)
- [设计文档](../design/2026-01-27-014-2-符号表分析与DTO生成-设计.md)
- [决策记录](../decisions/adr/2026-01-27-014-2-ADR-符号表分析与DTO生成技术选型.md)
- [提示词文档](../prompts/2026-01-27-014-2-prompt-符号表分析与DTO生成.md)
- [复盘文档](../retros/2026-01-27-014-2-retro.md)
- [变更日志](../changelog/2026-01-27-014-2-changelog.md)