diff --git a/spec/ai-robot/openapi.deps.yaml b/spec/ai-robot/openapi.deps.yaml new file mode 100644 index 0000000..d9ec669 --- /dev/null +++ b/spec/ai-robot/openapi.deps.yaml @@ -0,0 +1,188 @@ +openapi: 3.0.3 +info: + title: AI Service API + description: | + Python AI 服务接口契约。 + + 本文件定义主框架对 AI 服务的接口需求(Consumer-First)。 + 由主框架作为调用方,Python AI 服务作为提供方实现。 + version: 1.0.0 + x-contract-level: L0 + x-consumer: "java-main-framework" + x-provider: "python-ai-service" + +servers: + - url: http://ai-service:8080 + description: AI 服务地址 + +paths: + /ai/chat: + post: + operationId: generateReply + summary: 生成 AI 回复 + description: | + 根据用户消息和会话历史生成 AI 回复。 + + 覆盖验收标准: + - AC-MCA-04: 主框架通过 HTTP POST 调用 AI 服务 + - AC-MCA-05: 响应包含 reply、confidence、shouldTransfer 字段 + - AC-MCA-06: AI 服务不可用时的降级处理(主框架侧实现) + - AC-MCA-07: 超时处理(主框架侧实现) + tags: + - AI Chat + x-requirements: + - AC-MCA-04 + - AC-MCA-04-REQ + - AC-MCA-04-OPT + - AC-MCA-05 + - AC-MCA-06 + - AC-MCA-07 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRequest' + example: + sessionId: "kf_001_wx123456_1708765432000" + currentMessage: "我想了解产品价格" + channelType: "wechat" + responses: + '200': + description: 成功生成回复 + content: + application/json: + schema: + $ref: '#/components/schemas/ChatResponse' + example: + reply: "您好,我们的产品价格根据套餐不同有所差异。" + confidence: 0.92 + shouldTransfer: false + '400': + description: 请求参数错误 + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: 服务内部错误 + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '503': + description: 服务不可用 + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /ai/health: + get: + operationId: healthCheck + summary: 健康检查 + description: 检查 AI 服务是否正常运行 + tags: + - Health + responses: + '200': + description: 服务正常 + content: + application/json: + schema: + type: object + properties: + status: + type: string + '503': + description: 服务不健康 + +components: + schemas: + ChatRequest: + type: object + required: + - sessionId + - currentMessage + - channelType + properties: + sessionId: + type: string + description: 会话ID(AC-MCA-04-REQ 必填) + currentMessage: + type: string + description: 当前用户消息(AC-MCA-04-REQ 必填) + channelType: + type: string + description: 渠道类型(AC-MCA-04-REQ 必填) + enum: + - wechat + - douyin + - jd + history: + type: array + description: 历史消息列表(AC-MCA-04-OPT 可选) + items: + $ref: '#/components/schemas/ChatMessage' + metadata: + type: object + description: 扩展元数据(AC-MCA-04-OPT 可选) + additionalProperties: true + + ChatMessage: + type: object + required: + - role + - content + properties: + role: + type: string + enum: + - user + - assistant + content: + type: string + + ChatResponse: + type: object + required: + - reply + - confidence + - shouldTransfer + properties: + reply: + type: string + description: AI 回复内容(AC-MCA-05 必填) + confidence: + type: number + format: double + description: 置信度评分 0.0-1.0(AC-MCA-05 必填) + shouldTransfer: + type: boolean + description: 是否建议转人工(AC-MCA-05 必填) + transferReason: + type: string + description: 转人工原因(可选) + metadata: + type: object + description: 响应元数据(可选) + additionalProperties: true + + ErrorResponse: + type: object + required: + - code + - message + properties: + code: + type: string + description: 错误代码 + message: + type: string + description: 错误消息 + details: + type: array + description: 详细错误信息(可选) + items: + type: object + additionalProperties: true