ai-robot-core/spec/intent-driven-script/openapi.admin.yaml

416 lines
13 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: "Intent-Driven Script Flow API Extension"
description: |
[AC-IDS-02] 意图驱动话术流程的 API 扩展规范
本文档描述对现有 ScriptFlow API 的扩展,增加意图驱动话术生成能力。
这是对 `spec/ai-service/openapi.admin.yaml` 的向后兼容扩展。
**变更摘要**:
- 扩展 `FlowStep` schema增加意图驱动字段
- 所有新字段均为可选optional确保向后兼容
- 复用现有的 CRUD 接口,无需新增接口
**影响接口**:
- POST /admin/script-flows
- PUT /admin/script-flows/{id}
- GET /admin/script-flows/{id}
version: "1.0.0"
x-contract-level: L1
x-extends: "../ai-service/openapi.admin.yaml"
components:
schemas:
# [AC-IDS-01] 扩展的 FlowStep Schema
FlowStepExtended:
type: object
required: [stepNo, content]
properties:
# === 原有字段(保持不变)===
stepNo:
type: integer
description: "步骤序号从1开始"
example: 1
content:
type: string
description: |
话术内容。根据 script_mode 的不同有不同含义:
- fixed 模式:固定话术文本
- flexible 模式fallback 话术LLM 生成失败时使用)
- template 模式:话术模板(包含 {变量名} 占位符)
example: "您好,请问怎么称呼您?"
waitInput:
type: boolean
default: true
description: "是否等待用户输入"
timeoutSeconds:
type: integer
default: 120
description: "等待超时时间(秒)"
minimum: 10
maximum: 600
timeoutAction:
type: string
enum: [repeat, skip, transfer]
default: repeat
description: |
超时后的动作:
- repeat: 重复当前步骤
- skip: 跳过进入下一步
- transfer: 转人工
nextConditions:
type: array
description: "条件跳转配置"
items:
type: object
properties:
keywords:
type: array
items:
type: string
description: "关键词列表"
pattern:
type: string
description: "正则表达式模式"
gotoStep:
type: integer
description: "跳转到的步骤号"
defaultNext:
type: integer
nullable: true
description: "默认下一步null 表示顺序执行)"
# === 新增字段(意图驱动)===
script_mode:
type: string
enum: [fixed, flexible, template]
default: fixed
description: |
[AC-IDS-01] 话术模式:
- fixed: 固定话术(向后兼容,默认模式)
- flexible: 灵活话术AI 根据意图和上下文生成)
- template: 模板话术AI 填充变量)
example: "flexible"
intent:
type: string
nullable: true
description: |
[AC-IDS-01] 步骤意图flexible 模式必填)
描述这一步要达到的目的,而不是具体说什么话。
example: "获取用户真实姓名"
intent_description:
type: string
nullable: true
description: |
[AC-IDS-01] 意图详细说明(可选)
提供更详细的上下文信息,帮助 AI 更好地理解意图。
example: "需要获取用户的真实姓名用于后续身份确认,如果用户已经说了姓名则直接确认,如果没说则礼貌询问"
script_constraints:
type: array
items:
type: string
nullable: true
description: |
[AC-IDS-01] 话术约束条件flexible 模式推荐配置)
对生成话术的限制条件,例如语气、风格、长度等。
example:
- "必须礼貌"
- "语气自然,不要生硬"
- "如果用户已经说了姓名,直接确认即可"
- "如果用户拒绝,不要强迫"
expected_variables:
type: array
items:
type: string
nullable: true
description: |
[AC-IDS-01] 期望提取的变量(可选)
这一步期望从用户输入中提取的变量名称。
example: ["user_name"]
# 扩展的 ScriptFlowCreate用于创建流程
ScriptFlowCreateExtended:
type: object
required: [name, steps]
properties:
name:
type: string
description: "流程名称"
example: "客户信息收集流程"
description:
type: string
nullable: true
description: "流程描述"
example: "收集客户姓名、电话、需求等基本信息"
steps:
type: array
description: "流程步骤列表"
items:
$ref: "#/components/schemas/FlowStepExtended"
isEnabled:
type: boolean
default: true
description: "是否启用"
# 扩展的 ScriptFlowDetail用于返回流程详情
ScriptFlowDetailExtended:
type: object
properties:
id:
type: string
format: uuid
description: "流程ID"
name:
type: string
description: "流程名称"
description:
type: string
nullable: true
description: "流程描述"
steps:
type: array
description: "流程步骤列表"
items:
$ref: "#/components/schemas/FlowStepExtended"
isEnabled:
type: boolean
description: "是否启用"
stepCount:
type: integer
description: "步骤数量"
linkedRuleCount:
type: integer
description: "关联的意图规则数量"
createdAt:
type: string
format: date-time
description: "创建时间"
updatedAt:
type: string
format: date-time
description: "更新时间"
examples:
# 示例1固定话术模式向后兼容
FixedModeStep:
summary: "固定话术步骤(传统模式)"
value:
stepNo: 1
content: "您好,请问您贵姓?"
waitInput: true
timeoutSeconds: 60
script_mode: "fixed"
# 示例2灵活话术模式
FlexibleModeStep:
summary: "灵活话术步骤(意图驱动)"
value:
stepNo: 1
script_mode: "flexible"
intent: "获取用户真实姓名"
intent_description: "需要获取用户的真实姓名用于后续身份确认,如果用户已经说了姓名则直接确认,如果没说则礼貌询问"
script_constraints:
- "必须礼貌"
- "语气自然,不要生硬"
- "如果用户已经说了姓名,直接确认即可"
- "如果用户拒绝,不要强迫"
expected_variables:
- "user_name"
content: "您好,请问怎么称呼您?" # fallback 话术
waitInput: true
timeoutSeconds: 60
# 示例3模板话术模式
TemplateModeStep:
summary: "模板话术步骤"
value:
stepNo: 2
script_mode: "template"
content: "好的{user_name},请问您{inquiry_style}"
intent: "询问用户需求"
script_constraints:
- "根据用户姓名调整称呼方式"
- "询问方式要自然"
expected_variables:
- "user_requirement"
waitInput: true
# 示例4完整流程混合模式
MixedModeFlow:
summary: "混合模式流程(包含固定、灵活、模板三种步骤)"
value:
name: "客户信息收集流程"
description: "收集客户基本信息并了解需求"
steps:
- stepNo: 1
script_mode: "fixed"
content: "您好,欢迎咨询!"
waitInput: false
- stepNo: 2
script_mode: "flexible"
intent: "获取用户姓名"
intent_description: "礼貌询问用户姓名"
script_constraints:
- "必须礼貌"
- "语气自然"
content: "请问怎么称呼您?"
waitInput: true
expected_variables: ["user_name"]
- stepNo: 3
script_mode: "template"
content: "好的{user_name},请问您有什么需要帮助的吗?"
intent: "询问用户需求"
waitInput: true
expected_variables: ["user_requirement"]
# 接口路径说明(复用现有接口,无需新增)
paths:
/admin/script-flows:
post:
summary: "创建话术流程"
description: |
[AC-IDS-02] 创建新的话术流程。
支持意图驱动的步骤配置(通过 FlowStepExtended schema
operationId: createScriptFlow
parameters:
- $ref: "../ai-service/openapi.admin.yaml#/components/parameters/XTenantId"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ScriptFlowCreateExtended"
examples:
mixedMode:
$ref: "#/components/examples/MixedModeFlow"
responses:
"201":
description: "创建成功"
content:
application/json:
schema:
$ref: "#/components/schemas/ScriptFlowDetailExtended"
"400":
description: "请求参数错误"
"401":
$ref: "../ai-service/openapi.admin.yaml#/components/responses/Unauthorized"
/admin/script-flows/{id}:
get:
summary: "获取话术流程详情"
description: |
[AC-IDS-02] 获取指定流程的详细信息。
返回包含意图驱动字段的完整步骤配置。
operationId: getScriptFlow
parameters:
- $ref: "../ai-service/openapi.admin.yaml#/components/parameters/XTenantId"
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
"200":
description: "获取成功"
content:
application/json:
schema:
$ref: "#/components/schemas/ScriptFlowDetailExtended"
"404":
description: "流程不存在"
put:
summary: "更新话术流程"
description: |
[AC-IDS-02] 更新现有流程的配置。
支持修改步骤的话术模式和意图配置。
operationId: updateScriptFlow
parameters:
- $ref: "../ai-service/openapi.admin.yaml#/components/parameters/XTenantId"
- name: id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ScriptFlowCreateExtended"
responses:
"200":
description: "更新成功"
content:
application/json:
schema:
$ref: "#/components/schemas/ScriptFlowDetailExtended"
"404":
description: "流程不存在"
# 向后兼容性说明
x-compatibility:
backward-compatible: true
migration-required: false
notes: |
本扩展完全向后兼容:
1. **数据兼容性**
- 所有新字段均为可选nullable
- 未指定 script_mode 时默认为 'fixed'
- 现有流程数据无需迁移即可正常工作
2. **API 兼容性**
- 复用现有接口,无需修改接口路径
- 请求体向后兼容(新字段可选)
- 响应体向后兼容(新字段可能为 null
3. **客户端兼容性**
- 旧版客户端可以忽略新字段
- 新版客户端可以处理缺失的新字段
4. **执行兼容性**
- 未指定 script_mode 的步骤按 fixed 模式执行
- 保持与现有流程完全相同的行为
# 验收标准映射
x-acceptance-criteria:
- id: AC-IDS-01
description: "扩展 ScriptFlow 数据模型"
schema: FlowStepExtended
status: defined
- id: AC-IDS-02
description: "扩展 Admin API 契约"
paths:
- POST /admin/script-flows
- PUT /admin/script-flows/{id}
- GET /admin/script-flows/{id}
status: defined