trustgraph/docs/tech-specs/openapi-spec.zh-cn.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

239 lines
7 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.

---
layout: default
title: "OpenAPI 规范 - 技术规范"
parent: "Chinese (Beta)"
---
# OpenAPI 规范 - 技术规范
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## 目标
创建一个全面的、模块化的 OpenAPI 3.1 规范,用于 TrustGraph REST API 网关,该规范应:
记录所有 REST 接口
使用外部 `$ref` 以实现模块化和可维护性
直接映射到消息转换器代码
提供准确的请求/响应模式
## 权威来源
API 由以下内容定义:
**消息转换器**: `trustgraph-base/trustgraph/messaging/translators/*.py`
**分派器管理器**: `trustgraph-flow/trustgraph/gateway/dispatch/manager.py`
**端点管理器**: `trustgraph-flow/trustgraph/gateway/endpoint/manager.py`
## 目录结构
```
openapi/
├── openapi.yaml # Main entry point
├── paths/
│ ├── config.yaml # Global services
│ ├── flow.yaml
│ ├── librarian.yaml
│ ├── knowledge.yaml
│ ├── collection-management.yaml
│ ├── flow-services/ # Flow-hosted services
│ │ ├── agent.yaml
│ │ ├── document-rag.yaml
│ │ ├── graph-rag.yaml
│ │ ├── text-completion.yaml
│ │ ├── prompt.yaml
│ │ ├── embeddings.yaml
│ │ ├── mcp-tool.yaml
│ │ ├── triples.yaml
│ │ ├── objects.yaml
│ │ ├── nlp-query.yaml
│ │ ├── structured-query.yaml
│ │ ├── structured-diag.yaml
│ │ ├── graph-embeddings.yaml
│ │ ├── document-embeddings.yaml
│ │ ├── text-load.yaml
│ │ └── document-load.yaml
│ ├── import-export/
│ │ ├── core-import.yaml
│ │ ├── core-export.yaml
│ │ └── flow-import-export.yaml # WebSocket import/export
│ ├── websocket.yaml
│ └── metrics.yaml
├── components/
│ ├── schemas/
│ │ ├── config/
│ │ ├── flow/
│ │ ├── librarian/
│ │ ├── knowledge/
│ │ ├── collection/
│ │ ├── ai-services/
│ │ ├── common/
│ │ └── errors/
│ ├── parameters/
│ ├── responses/
│ └── examples/
└── security/
└── bearerAuth.yaml
```
## 服务映射
### 全局服务 (`/api/v1/{kind}`)
`config` - 配置管理
`flow` - 流生存周期
`librarian` - 文档库
`knowledge` - 知识核心
`collection-management` - 集合元数据
### 托管于流的服务 (`/api/v1/flow/{flow}/service/{kind}`)
**请求/响应:**
`agent`, `text-completion`, `prompt`, `mcp-tool`
`graph-rag`, `document-rag`
`embeddings`, `graph-embeddings`, `document-embeddings`
`triples`, `objects`, `nlp-query`, `structured-query`, `structured-diag`
**发布/订阅:**
`text-load`, `document-load`
### 导入/导出
`/api/v1/import-core` (POST)
`/api/v1/export-core` (GET)
`/api/v1/flow/{flow}/import/{kind}` (WebSocket)
`/api/v1/flow/{flow}/export/{kind}` (WebSocket)
### 其他
`/api/v1/socket` (WebSocket 多路复用)
`/api/metrics` (Prometheus)
## 方案
### 第一阶段:设置
1. 创建目录结构
2. 创建主 `openapi.yaml` 文件,包含元数据、服务器、安全配置
3. 创建可重用组件(错误、通用参数、安全方案)
### 第二阶段:通用模式
创建在服务间共享的模式:
`RdfValue`, `Triple` - RDF/三元组结构
`ErrorObject` - 错误响应
`DocumentMetadata`, `ProcessingMetadata` - 元数据结构
通用参数:`FlowId`, `User`, `Collection`
### 第三阶段:全球服务
对于每个全球服务(配置、流程、库管理员、知识、集合管理):
1.`paths/` 中创建路径文件。
2.`components/schemas/{service}/` 中创建请求模式。
3. 创建响应模式。
4. 添加示例。
5. 从主文件 `openapi.yaml` 中引用。
### 第四阶段:流程托管服务
对于每个流程托管服务:
1.`paths/flow-services/` 中创建路径文件。
2.`components/schemas/ai-services/` 中创建请求/响应模式。
3. 在适用情况下,添加流媒体标志文档。
4. 从主文件 `openapi.yaml` 中引用。
### 第五阶段:导入/导出 & WebSocket
1. 文档核心导入/导出端点。
2. 文档 WebSocket 协议模式。
3. 文档流程级别的导入/导出 WebSocket 端点。
### 第六阶段:验证
1. 使用 OpenAPI 验证工具进行验证。
2. 使用 Swagger UI 进行测试。
3. 验证所有翻译器是否已覆盖。
## 字段命名约定
所有 JSON 字段使用 **kebab-case**
`flow-id`, `blueprint-name`, `doc-limit`, `entity-limit`, 等。
## 创建模式文件
对于 `trustgraph-base/trustgraph/messaging/translators/` 中的每个翻译器:
1. **读取翻译器 `to_pulsar()` 方法** - 定义请求模式。
2. **读取翻译器 `from_pulsar()` 方法** - 定义响应模式。
3. **提取字段名称和类型**
4. **创建 OpenAPI 模式**,包含:
字段名称kebab-case
类型(字符串、整数、布尔值、对象、数组)。
必需字段。
默认值。
描述。
### 示例映射过程
```python
# From retrieval.py DocumentRagRequestTranslator
def to_pulsar(self, data: Dict[str, Any]) -> DocumentRagQuery:
return DocumentRagQuery(
query=data["query"], # required string
user=data.get("user", "trustgraph"), # optional string, default "trustgraph"
collection=data.get("collection", "default"), # optional string, default "default"
doc_limit=int(data.get("doc-limit", 20)), # optional integer, default 20
streaming=data.get("streaming", False) # optional boolean, default false
)
```
对应于:
```yaml
# components/schemas/ai-services/DocumentRagRequest.yaml
type: object
required:
- query
properties:
query:
type: string
description: Search query
user:
type: string
default: trustgraph
collection:
type: string
default: default
doc-limit:
type: integer
default: 20
description: Maximum number of documents to retrieve
streaming:
type: boolean
default: false
description: Enable streaming responses
```
## 流式响应
支持流式传输的服务会返回带有 `end_of_stream` 标志的多个响应:
`agent`, `text-completion`, `prompt`
`document-rag`, `graph-rag`
在每个服务的响应模式中记录此模式。
## 错误响应
所有服务都可以返回:
```yaml
error:
oneOf:
- type: string
- $ref: '#/components/schemas/ErrorObject'
```
其中,`ErrorObject` 指的是:
```yaml
type: object
properties:
type:
type: string
message:
type: string
```
## 参考文献
翻译人员:`trustgraph-base/trustgraph/messaging/translators/`
调度映射:`trustgraph-flow/trustgraph/gateway/dispatch/manager.py`
终端路由:`trustgraph-flow/trustgraph/gateway/endpoint/manager.py`
服务摘要:`API_SERVICES_SUMMARY.md`