ai-robot-core/spec/ai-service/openapi.admin.yaml

386 lines
11 KiB
YAML
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.

openapi: 3.1.0
info:
title: "AI Service Admin API"
description: "AI 中台管理类接口契约Provider: ai-service支持 ai-service-admin 模块进行知识库、Prompt 及 RAG 调试管理。"
version: "0.1.0"
x-contract-level: L0 # 初始占位/可 Mock 级别
components:
parameters:
XTenantId:
name: X-Tenant-Id
in: header
required: true
schema:
type: string
description: "租户ID用于物理隔离知识库与数据"
responses:
Unauthorized:
description: "未认证(缺少或无效的认证信息)"
Forbidden:
description: "无权限(当前身份无权访问该资源)"
schemas:
DocumentInfo:
type: object
properties:
docId:
type: string
description: "文档ID"
kbId:
type: string
description: "知识库ID"
fileName:
type: string
description: "文件名"
status:
type: string
description: "文档状态"
enum: [pending, processing, completed, failed]
createdAt:
type: string
format: date-time
description: "创建时间"
updatedAt:
type: string
format: date-time
description: "更新时间"
SessionInfo:
type: object
properties:
sessionId:
type: string
description: "会话ID"
status:
type: string
description: "会话状态"
enum: [active, closed, expired]
startTime:
type: string
format: date-time
description: "开始时间"
endTime:
type: string
format: date-time
description: "结束时间"
messageCount:
type: integer
description: "消息数量"
PageInfo:
type: object
properties:
page:
type: integer
description: "当前页码"
pageSize:
type: integer
description: "每页大小"
total:
type: integer
description: "总记录数"
totalPages:
type: integer
description: "总页数"
paths:
/admin/kb/documents:
get:
summary: "查询文档列表"
operationId: "listDocuments"
tags:
- KB Management
x-requirements: ["AC-ASA-08"]
parameters:
- $ref: "#/components/parameters/XTenantId"
- name: kbId
in: query
required: false
schema:
type: string
description: "知识库ID"
- name: status
in: query
required: false
schema:
type: string
enum: [pending, processing, completed, failed]
description: "文档状态"
- name: page
in: query
required: false
schema:
type: integer
default: 1
description: "页码"
- name: pageSize
in: query
required: false
schema:
type: integer
default: 20
description: "每页大小"
responses:
'200':
description: "文档列表"
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/DocumentInfo"
pagination:
$ref: "#/components/schemas/PageInfo"
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"
post:
summary: "上传/导入文档"
operationId: "uploadDocument"
tags:
- KB Management
x-requirements: ["AC-ASA-01"]
parameters:
- $ref: "#/components/parameters/XTenantId"
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
kbId:
type: string
responses:
'202':
description: "已接受上传请求,异步启动索引任务"
content:
application/json:
schema:
type: object
properties:
jobId:
type: string
status:
type: string
enum: [pending, processing]
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"
/admin/kb/index/jobs/{jobId}:
get:
summary: "查询索引任务详情"
operationId: "getIndexJob"
tags:
- KB Management
x-requirements: ["AC-ASA-02"]
parameters:
- $ref: "#/components/parameters/XTenantId"
- name: jobId
in: path
required: true
schema:
type: string
responses:
'200':
description: "任务状态详情"
content:
application/json:
schema:
type: object
properties:
jobId:
type: string
status:
type: string
enum: [pending, processing, completed, failed]
progress:
type: integer
minimum: 0
maximum: 100
errorMsg:
type: string
nullable: true
/admin/config/prompt-templates/{tplId}/publish:
post:
summary: "发布指定版本的 Prompt 模板"
operationId: "publishPromptTemplate"
tags:
- Prompt Management
x-requirements: ["AC-ASA-03"]
parameters:
- $ref: "#/components/parameters/XTenantId"
- name: tplId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
version:
type: string
responses:
'200':
description: "发布成功"
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"
/admin/rag/experiments/run:
post:
summary: "触发 RAG 调试实验"
operationId: "runRagExperiment"
tags:
- RAG Lab
x-requirements: ["AC-ASA-05"]
parameters:
- $ref: "#/components/parameters/XTenantId"
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
kbIds:
type: array
items:
type: string
params:
type: object
description: "检索参数集"
responses:
'200':
description: "实验结果"
content:
application/json:
schema:
type: object
properties:
retrievalResults:
type: array
items:
type: object
properties:
content:
type: string
score:
type: number
format: float
source:
type: string
finalPrompt:
type: string
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"
/admin/sessions:
get:
summary: "查询会话列表"
operationId: "listSessions"
tags:
- Session Monitoring
x-requirements: ["AC-ASA-09"]
parameters:
- $ref: "#/components/parameters/XTenantId"
- name: status
in: query
required: false
schema:
type: string
enum: [active, closed, expired]
description: "会话状态"
- name: startTime
in: query
required: false
schema:
type: string
format: date-time
description: "开始时间"
- name: endTime
in: query
required: false
schema:
type: string
format: date-time
description: "结束时间"
- name: page
in: query
required: false
schema:
type: integer
default: 1
description: "页码"
- name: pageSize
in: query
required: false
schema:
type: integer
default: 20
description: "每页大小"
responses:
'200':
description: "会话列表"
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/SessionInfo"
pagination:
$ref: "#/components/schemas/PageInfo"
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"
/admin/sessions/{sessionId}:
get:
summary: "获取会话详情"
operationId: "getSessionDetail"
tags:
- Session Monitoring
x-requirements: ["AC-ASA-07"]
parameters:
- $ref: "#/components/parameters/XTenantId"
- name: sessionId
in: path
required: true
schema:
type: string
responses:
'200':
description: "全链路会话详情"
content:
application/json:
schema:
type: object
properties:
sessionId:
type: string
messages:
type: array
items:
type: object
trace:
type: object
description: "含检索、工具调用等追踪信息"
'401':
$ref: "#/components/responses/Unauthorized"
'403':
$ref: "#/components/responses/Forbidden"