30 KiB
意图驱动话术流程 - 任务分解
feature_id: "IDS" title: "意图驱动话术流程任务清单" status: "in-progress" version: "1.2.0" last_updated: "2026-03-01"
任务概览
本文档将需求规范中的 13 个验收标准分解为可执行的开发任务,按 Phase 组织。
总体进度: 22/26 任务完成 (85%)
| Phase | 描述 | 任务数 | 完成数 | 进度 |
|---|---|---|---|---|
| Phase 1 | 数据模型与 API 扩展 | 4 | 4 | 100% |
| Phase 2 | 后端话术生成引擎 | 6 | 6 | 100% |
| Phase 3 | 前端配置界面 | 6 | 6 | 100% |
| Phase 4 | 测试与验证 | 6 | 6 | 100% |
| Phase 5 | 部署与发布 | 4 | 0 | 0% |
Phase 1: 数据模型与 API 扩展
目标: 扩展数据结构和 API 契约,为意图驱动话术提供基础
预计工时: 0.5 天
依赖: 无
Task 1.1: 扩展 Python 类型定义
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-01
- 优先级: P0
- 依赖: 无
- 负责人: backend
描述: 在后端 Python 代码中扩展 FlowStep 的类型定义
文件修改:
ai-service/app/models/entities.py或ai-service/app/schemas/script_flow.py
具体步骤:
- 找到
FlowStep相关的类型定义(可能在 Pydantic model 或 TypedDict 中) - 添加以下可选字段:
script_mode: Optional[Literal["fixed", "flexible", "template"]] = "fixed" intent: Optional[str] = None intent_description: Optional[str] = None script_constraints: Optional[List[str]] = None expected_variables: Optional[List[str]] = None - 确保向后兼容:所有新字段都是可选的,有默认值
验收测试:
# 测试向后兼容
step_old = {"step_no": 1, "content": "Hello"}
# 应该能正常解析,script_mode 默认为 "fixed"
# 测试新字段
step_new = {
"step_no": 1,
"script_mode": "flexible",
"intent": "获取用户姓名",
"script_constraints": ["必须礼貌"],
"content": "请问怎么称呼您?"
}
# 应该能正常解析
完成标准:
- 类型定义已扩展
- 所有新字段都是可选的
- 代码通过类型检查(mypy/pyright)
Task 1.2: 扩展前端 TypeScript 类型定义
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-07
- 优先级: P0
- 依赖: 无
- 负责人: frontend
描述: 在前端 TypeScript 代码中扩展 FlowStep 接口
文件修改:
ai-service-admin/src/types/script-flow.ts
具体步骤:
- 打开
script-flow.ts文件 - 找到
FlowStep接口定义 - 添加新字段:
export type ScriptMode = 'fixed' | 'flexible' | 'template' export interface FlowStep { // ... 现有字段 ... // 新增字段 script_mode?: ScriptMode intent?: string intent_description?: string script_constraints?: string[] expected_variables?: string[] } - 添加常量定义:
export const SCRIPT_MODE_OPTIONS = [ { value: 'fixed', label: '固定话术', description: '话术内容固定不变' }, { value: 'flexible', label: '灵活话术', description: 'AI根据意图和上下文生成' }, { value: 'template', label: '模板话术', description: 'AI填充模板中的变量' } ] as const
完成标准:
- TypeScript 类型定义已扩展
- 所有新字段都是可选的
- 代码通过 TypeScript 编译
Task 1.3: 更新 OpenAPI 契约
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-02
- 优先级: P0
- 依赖: Task 1.1
描述: 更新 openapi.admin.yaml 中 ScriptFlow 相关接口的 schema
文件修改:
spec/intent-driven-script/openapi.admin.yaml或ai-service/openapi/admin.yaml
具体步骤:
- 找到
FlowStepSchema定义 - 添加新字段定义:
script_mode: type: string enum: [fixed, flexible, template] default: fixed description: 话术生成模式 intent: type: string description: 步骤意图(灵活模式必填) intent_description: type: string description: 意图详细说明 script_constraints: type: array items: type: string description: 话术约束条件 expected_variables: type: array items: type: string description: 期望提取的变量 - 更新接口文档说明
- 标记契约成熟度为 L1
完成标准:
- OpenAPI schema 已更新
- 所有新字段标记为 optional
- 契约通过 lint 校验
Task 1.4: 验证 API 向后兼容性
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-02, AC-IDS-13
- 优先级: P0
- 依赖: Task 1.1, Task 1.3
描述: 确保 API 扩展不破坏现有客户端
测试场景:
- 使用旧版请求体创建流程(不包含新字段)
- 验证流程能正常保存和执行
- 验证 API 响应包含新字段(值为 null 或默认值)
测试文件:
ai-service/tests/api/test_script_flow_backward_compat.py
测试用例:
async def test_create_flow_without_new_fields():
"""测试不包含新字段的请求能正常工作"""
payload = {
"name": "测试流程",
"steps": [
{"step_no": 1, "content": "Hello", "wait_input": True}
]
}
response = await client.post("/admin/script-flows", json=payload)
assert response.status_code == 201
# 验证响应包含新字段(默认值)
flow = response.json()
assert flow["steps"][0]["script_mode"] == "fixed"
assert flow["steps"][0]["intent"] is None
async def test_execute_old_flow():
"""测试旧流程能正常执行"""
# 创建不包含新字段的流程
# 启动流程
# 验证返回固定话术
完成标准:
- 所有向后兼容性测试通过
- 旧版客户端不受影响
Phase 2: 后端话术生成引擎
目标: 实现三种模式的话术生成逻辑
预计工时: 2 天
依赖: Phase 1 完成
Task 2.1: 创建 ScriptGenerator 模块
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-04
- 优先级: P0
- 依赖: Task 1.1
描述: 实现灵活模式的话术生成器
文件创建:
ai-service/app/services/flow/script_generator.py
具体实现:
"""
[AC-IDS-04] Script Generator for flexible mode
"""
import asyncio
import logging
from typing import Optional
logger = logging.getLogger(__name__)
class ScriptGenerator:
"""灵活模式话术生成器"""
def __init__(self, orchestrator):
self._orchestrator = orchestrator
async def generate(
self,
intent: str,
intent_description: Optional[str],
constraints: list[str],
context: dict,
history: list[dict],
fallback: str
) -> str:
"""
生成灵活话术
Args:
intent: 步骤意图
intent_description: 意图详细说明
constraints: 话术约束条件
context: 会话上下文
history: 对话历史
fallback: 失败时的 fallback 话术
Returns:
生成的话术文本
"""
try:
prompt = self._build_prompt(
intent, intent_description, constraints, context, history
)
response = await asyncio.wait_for(
self._orchestrator.generate_text(prompt),
timeout=2.0
)
generated = response.strip()
logger.info(
f"[AC-IDS-04] Generated flexible script: "
f"intent={intent}, length={len(generated)}"
)
return generated
except asyncio.TimeoutError:
logger.warning(
f"[AC-IDS-05] Script generation timeout, use fallback: "
f"intent={intent}"
)
return fallback
except Exception as e:
logger.error(
f"[AC-IDS-05] Script generation failed: {e}, use fallback"
)
return fallback
def _build_prompt(
self,
intent: str,
intent_description: Optional[str],
constraints: list[str],
context: dict,
history: list[dict]
) -> str:
"""构建 LLM Prompt"""
prompt_parts = [
"你是一个客服对话系统,当前需要执行以下步骤:",
"",
f"【步骤目标】{intent}"
]
if intent_description:
prompt_parts.append(f"【详细说明】{intent_description}")
if constraints:
prompt_parts.append("")
prompt_parts.append("【约束条件】")
for c in constraints:
prompt_parts.append(f"- {c}")
if history:
prompt_parts.append("")
prompt_parts.append("【对话历史】")
for msg in history[-3:]:
role = "用户" if msg.get("role") == "user" else "客服"
content = msg.get("content", "")
prompt_parts.append(f"{role}: {content}")
if context.get("inputs"):
prompt_parts.append("")
prompt_parts.append("【已收集信息】")
for inp in context["inputs"]:
prompt_parts.append(f"- {inp}")
prompt_parts.extend([
"",
"请生成一句符合目标和约束的话术(不超过50字)。",
"只返回话术内容,不要解释。"
])
return "\n".join(prompt_parts)
完成标准:
- ScriptGenerator 类已实现
- Prompt 构建逻辑完整
- 超时和异常处理正确
- 日志记录完整
Task 2.2: 创建 TemplateEngine 模块
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-06
- 优先级: P1
- 依赖: Task 1.1
描述: 实现模板模式的变量填充逻辑
文件创建:
ai-service/app/services/flow/template_engine.py
具体实现:
"""
[AC-IDS-06] Template Engine for template mode
"""
import asyncio
import logging
import re
from typing import Optional
logger = logging.getLogger(__name__)
class TemplateEngine:
"""模板话术引擎"""
VARIABLE_PATTERN = re.compile(r'\{(\w+)\}')
def __init__(self, orchestrator):
self._orchestrator = orchestrator
async def fill_template(
self,
template: str,
context: dict,
history: list[dict]
) -> str:
"""
填充模板变量
Args:
template: 话术模板(包含 {变量名} 占位符)
context: 会话上下文
history: 对话历史
Returns:
填充后的话术
"""
try:
variables = self.VARIABLE_PATTERN.findall(template)
if not variables:
return template
variable_values = {}
for var in variables:
value = await self._generate_variable_value(var, context, history)
variable_values[var] = value
result = template
for var, value in variable_values.items():
result = result.replace(f"{{{var}}}", value)
logger.info(
f"[AC-IDS-06] Filled template: "
f"variables={list(variable_values.keys())}"
)
return result
except Exception as e:
logger.error(f"[AC-IDS-06] Template fill failed: {e}, return original")
return template
async def _generate_variable_value(
self,
variable_name: str,
context: dict,
history: list[dict]
) -> str:
"""为单个变量生成值"""
if variable_name in context:
return str(context[variable_name])
prompt = f"""
根据对话历史,为变量 "{variable_name}" 生成合适的值。
对话历史:
{self._format_history(history[-3:])}
只返回变量值,不要解释。
"""
try:
response = await asyncio.wait_for(
self._orchestrator.generate_text(prompt),
timeout=1.0
)
return response.strip()
except:
logger.warning(
f"[AC-IDS-06] Failed to generate value for {variable_name}, "
f"use placeholder"
)
return f"[{variable_name}]"
def _format_history(self, history: list[dict]) -> str:
"""格式化对话历史"""
lines = []
for msg in history:
role = "用户" if msg.get("role") == "user" else "客服"
content = msg.get("content", "")
lines.append(f"{role}: {content}")
return "\n".join(lines)
完成标准:
- TemplateEngine 类已实现
- 变量提取和替换逻辑正确
- 异常处理和 fallback 完整
Task 2.3: 扩展 FlowEngine - 添加话术生成方法
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-03
- 优先级: P0
- 依赖: Task 2.1, Task 2.2
描述: 在 FlowEngine 中添加话术生成的核心方法
文件修改:
ai-service/app/services/flow/engine.py
具体步骤:
- 在
FlowEngine.__init__()中初始化生成器 - 添加
_generate_step_content()方法 - 添加
_get_conversation_history()辅助方法
完成标准:
_generate_step_content()方法已实现- 三种模式的分支逻辑正确
_get_conversation_history()方法已实现- 错误处理和 fallback 完整
Task 2.4: 修改 FlowEngine.start() 方法
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-05
- 优先级: P0
- 依赖: Task 2.3
描述: 修改流程启动逻辑,在首步使用话术生成
文件修改:
ai-service/app/services/flow/engine.py
具体步骤:
- 在
start()方法中调用_get_conversation_history() - 调用
_generate_step_content()生成首步话术 - 确保向后兼容(无 orchestrator 时使用固定话术)
完成标准:
- start() 方法已修改
- 首步话术能正确生成
- 向后兼容测试通过
Task 2.5: 修改 FlowEngine.advance() 方法
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-05
- 优先级: P0
- 依赖: Task 2.3
描述: 修改流程推进逻辑,在后续步骤使用话术生成
文件修改:
ai-service/app/services/flow/engine.py
具体步骤:
- 在
advance()方法中调用_get_conversation_history() - 调用
_generate_step_content()生成下一步话术 - 确保向后兼容
完成标准:
- advance() 方法已修改
- 后续步骤话术能正确生成
- 向后兼容测试通过
Task 2.6: 实现 Fallback 机制
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-05
- 优先级: P0
- 依赖: Task 2.1
描述: 确保话术生成失败时有明确的 fallback 策略
技术要求:
- LLM 调用超时(2秒)时,返回
step.content作为 fallback - LLM 返回错误时,记录日志并返回 fallback
- Fallback 话术不为空时使用,否则返回默认提示
验收测试:
- 模拟 LLM 超时,验证返回 fallback 话术
- 模拟 LLM 错误,验证日志记录和 fallback
完成标准:
- 超时 fallback 已实现
- 异常 fallback 已实现
- 日志记录完整
- 单元测试通过
Phase 3: 前端配置界面
目标: 提供意图驱动话术的配置界面
预计工时: 1.5 天
依赖: Phase 1 完成
Task 3.1: 创建话术模式选择组件
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-08
- 优先级: P0
- 依赖: Task 1.2
描述: 在步骤配置表单中增加话术模式选择
文件修改:
ai-service-admin/src/views/admin/script-flow/index.vue
具体步骤:
- 添加 Radio Group 选择话术模式
- 根据选择的模式动态显示对应配置项
- 模式切换时保留已填写的数据
UI 要求:
- 固定模式:显示
content输入框 - 灵活模式:显示
intent、intent_description、constraints配置 - 模板模式:显示
content输入框(带模板语法提示)
完成标准:
- 模式选择器已实现
- 动态表单切换正确
- 数据保留逻辑正确
Task 3.2: 创建意图配置表单
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-08
- 优先级: P0
- 依赖: Task 3.1
描述: 实现灵活模式的意图配置表单
文件修改:
ai-service-admin/src/views/admin/script-flow/index.vue
具体步骤:
- 添加"步骤意图"输入框(必填)
- 添加"意图说明"文本域(可选)
- 添加"期望变量"输入(可选)
- 添加表单校验规则
完成标准:
- 意图配置表单已实现
- 表单校验正确
- 数据绑定正确
Task 3.3: 创建约束条件管理组件
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-09
- 优先级: P0
- 依赖: Task 1.2
描述: 实现约束条件的添加、删除、编辑
文件创建:
ai-service-admin/src/views/admin/script-flow/components/ConstraintManager.vue
具体实现:
<template>
<div class="constraint-manager">
<div class="constraint-tags">
<el-tag
v-for="(constraint, index) in modelValue"
:key="index"
closable
@close="removeConstraint(index)"
>
{{ constraint }}
</el-tag>
</div>
<el-input
v-model="newConstraint"
placeholder="输入约束条件后按回车添加"
@keyup.enter="addConstraint"
class="constraint-input"
>
<template #append>
<el-button @click="addConstraint">添加</el-button>
</template>
</el-input>
<div class="constraint-presets">
<span class="preset-label">常用约束:</span>
<el-button
v-for="preset in PRESET_CONSTRAINTS"
:key="preset"
size="small"
@click="addPreset(preset)"
>
{{ preset }}
</el-button>
</div>
</div>
</template>
<script setup lang="ts">
const PRESET_CONSTRAINTS = [
'必须礼貌',
'语气自然',
'简洁明了',
'不要生硬',
'不要重复'
]
const addConstraint = () => {
if (newConstraint.value.trim()) {
emit('update:modelValue', [...modelValue.value, newConstraint.value.trim()])
newConstraint.value = ''
}
}
</script>
完成标准:
- ConstraintManager 组件已实现
- 支持添加/删除约束
- 支持预设约束快捷添加
- 组件已集成到主表单
Task 3.4: 创建模板话术配置组件
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-04
- 优先级: P1
- 依赖: Task 3.1
描述: 实现模板模式的配置界面
文件修改:
ai-service-admin/src/views/admin/script-flow/index.vue
具体步骤:
- 添加话术模板输入框
- 添加模板语法提示
- 添加变量高亮显示(可选)
UI 示例:
话术模板: [您好{greeting_style},请问您{polite_form}?]
提示:使用 {变量名} 标记需要AI填充的部分
完成标准:
- 模板配置界面已实现
- 语法提示清晰
- 数据绑定正确
Task 3.5: 增强流程预览组件
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-10
- 优先级: P1
- 依赖: Task 3.1
描述: 在流程预览中显示步骤的意图信息
文件修改:
ai-service-admin/src/views/admin/script-flow/components/FlowPreview.vue
具体步骤:
- 显示步骤的
script_mode - 灵活模式显示意图和约束
- 固定模式显示话术内容
- 模板模式显示模板预览
完成标准:
- 预览组件已增强
- 意图信息显示正确
- 不同模式显示不同内容
Task 3.6: 前端表单校验与提交
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-08
- 优先级: P0
- 依赖: Task 3.1, Task 3.2, Task 3.3
描述: 实现表单校验和数据提交逻辑
文件修改:
ai-service-admin/src/views/admin/script-flow/index.vue
校验规则:
- 灵活模式:
intent必填,content(fallback)必填 - 模板模式:
content必填,检查模板语法 - 固定模式:
content必填
完成标准:
- 表单校验规则已实现
- 提交逻辑正确
- 错误提示清晰
Phase 4: 测试与验证
目标: 确保功能正确性和向后兼容性
预计工时: 1 天
依赖: Phase 2, Phase 3 完成
Task 4.1: 后端单元测试 - ScriptGenerator
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-11
- 优先级: P0
- 依赖: Task 2.1
描述: 为 ScriptGenerator 编写单元测试
测试文件:
ai-service/tests/services/flow/test_script_generator.py
测试用例:
- 正常生成话术
- 超时 fallback
- 异常 fallback
- Prompt 构建正确性
完成标准:
- 测试文件已创建
- 所有测试用例通过
- 代码覆盖率 > 80%
Task 4.2: 后端单元测试 - TemplateEngine
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-11
- 优先级: P0
- 依赖: Task 2.2
描述: 为 TemplateEngine 编写单元测试
测试文件:
ai-service/tests/services/flow/test_template_engine.py
测试用例:
- 变量提取正确性
- 变量替换正确性
- 从上下文获取变量值
- LLM 生成变量值
- 异常处理
完成标准:
- 测试文件已创建
- 所有测试用例通过
- 代码覆盖率 > 80%
Task 4.3: 后端单元测试 - FlowEngine
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-11
- 优先级: P0
- 依赖: Task 2.3, Task 2.4, Task 2.5
描述: 为 FlowEngine 话术生成逻辑编写单元测试
测试文件:
ai-service/tests/services/flow/test_engine_script_generation.py
测试用例:
- 固定模式话术生成
- 灵活模式话术生成
- 模板模式话术生成
- 对话历史获取
- 边界情况(空配置、无效配置)
完成标准:
- 测试文件已创建
- 所有测试用例通过
- 代码覆盖率 > 80%
Task 4.4: 集成测试 - 端到端流程
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-12
- 优先级: P0
- 依赖: Task 4.1, Task 4.2, Task 4.3
描述: 端到端测试意图驱动流程的执行
测试文件:
ai-service/tests/api/test_script_flow_intent_driven.py
测试场景:
- 创建灵活模式流程
- 启动流程,验证首步话术生成
- 输入用户消息,验证流程推进和话术生成
- 验证对话历史正确传递
完成标准:
- 测试文件已创建
- 所有测试场景通过
- 测试覆盖主要业务流程
Task 4.5: 向后兼容性测试
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-13
- 优先级: P0
- 依赖: Task 4.4
描述: 验证现有固定话术流程不受影响
测试场景:
- 加载现有流程(无 script_mode 字段)
- 执行流程,验证话术正常返回
- 验证 API 响应包含新字段但值为 null
- 验证前端能正确显示旧流程数据
完成标准:
- 所有向后兼容性测试通过
- 现有流程不受影响
Task 4.6: 前端组件测试
- 状态: ✅已完成 (2026-02-28)
- 验收标准: AC-IDS-08, AC-IDS-09
- 优先级: P1
- 依赖: Task 3.1, Task 3.2, Task 3.3
描述: 为前端组件编写测试
测试文件:
ai-service-admin/src/views/admin/script-flow/__tests__/
测试用例:
- 模式选择器交互
- 约束条件管理
- 表单校验
- 数据提交
完成标准:
- 测试文件已创建
- 主要交互测试通过
Phase 5: 部署与发布
目标: 安全部署新功能
预计工时: 0.5 天
依赖: Phase 4 全部完成
Task 5.1: 更新部署文档
- 状态: 待开始
- 验收标准: N/A
- 优先级: P0
- 依赖: Phase 4 完成
描述: 更新部署文档和变更日志
文件修改:
CHANGELOG.mddocs/deployment.md(如存在)
具体内容:
- 记录新功能
- 记录 API 变更
- 记录配置变更(如有)
完成标准:
- 变更日志已更新
- 部署文档已更新
Task 5.2: 灰度发布准备
- 状态: 待开始
- 验收标准: N/A
- 优先级: P0
- 依赖: Task 5.1
描述: 准备灰度发布环境
具体步骤:
- 选择灰度租户
- 配置监控告警
- 准备回滚方案
完成标准:
- 灰度租户已确定
- 监控已配置
- 回滚方案已准备
Task 5.3: 执行灰度发布
- 状态: 待开始
- 验收标准: N/A
- 优先级: P0
- 依赖: Task 5.2
描述: 执行灰度发布并监控
具体步骤:
- 部署后端服务
- 部署前端服务
- 监控关键指标
- 收集用户反馈
监控指标:
- 话术生成延迟
- 超时率
- 错误率
- Fallback 使用率
完成标准:
- 灰度发布成功
- 无严重问题
- 用户反馈正常
Task 5.4: 全量发布
- 状态: 待开始
- 验收标准: N/A
- 优先级: P0
- 依赖: Task 5.3
描述: 灰度验证通过后全量发布
具体步骤:
- 确认灰度指标正常
- 执行全量发布
- 持续监控
完成标准:
- 全量发布成功
- 功能正常可用
- 无用户投诉
任务依赖关系图
Phase 1 (数据模型与 API 扩展)
├── Task 1.1 (Python 类型定义) ──────────────────────────────┐
├── Task 1.2 (TypeScript 类型定义) ──────────────────────────┤
├── Task 1.3 (OpenAPI 契约) ← Task 1.1 ──────────────────────┤
└── Task 1.4 (向后兼容性测试) ← Task 1.1, Task 1.3 ──────────┘
│
▼
Phase 2 (后端话术生成引擎)
├── Task 2.1 (ScriptGenerator) ← Task 1.1 ───────────────────┐
├── Task 2.2 (TemplateEngine) ← Task 1.1 ────────────────────┤
├── Task 2.3 (FlowEngine 扩展) ← Task 2.1, Task 2.2 ─────────┤
├── Task 2.4 (start 方法修改) ← Task 2.3 ────────────────────┤
├── Task 2.5 (advance 方法修改) ← Task 2.3 ──────────────────┤
└── Task 2.6 (Fallback 机制) ← Task 2.1 ─────────────────────┘
│
▼
Phase 3 (前端配置界面)
├── Task 3.1 (模式选择组件) ← Task 1.2 ──────────────────────┐
├── Task 3.2 (意图配置表单) ← Task 3.1 ──────────────────────┤
├── Task 3.3 (约束管理组件) ← Task 1.2 ──────────────────────┤
├── Task 3.4 (模板配置组件) ← Task 3.1 ──────────────────────┤
├── Task 3.5 (预览增强) ← Task 3.1 ──────────────────────────┤
└── Task 3.6 (表单校验提交) ← Task 3.1, Task 3.2, Task 3.3 ──┘
│
▼
Phase 4 (测试与验证)
├── Task 4.1 (ScriptGenerator 测试) ← Task 2.1 ──────────────┐
├── Task 4.2 (TemplateEngine 测试) ← Task 2.2 ───────────────┤
├── Task 4.3 (FlowEngine 测试) ← Task 2.3, Task 2.4, Task 2.5┤
├── Task 4.4 (集成测试) ← Task 4.1, Task 4.2, Task 4.3 ──────┤
├── Task 4.5 (向后兼容测试) ← Task 4.4 ──────────────────────┤
└── Task 4.6 (前端组件测试) ← Task 3.1, Task 3.2, Task 3.3 ──┘
│
▼
Phase 5 (部署与发布)
├── Task 5.1 (更新部署文档) ← Phase 4 完成 ──────────────────┐
├── Task 5.2 (灰度发布准备) ← Task 5.1 ──────────────────────┤
├── Task 5.3 (执行灰度发布) ← Task 5.2 ──────────────────────┤
└── Task 5.4 (全量发布) ← Task 5.3 ──────────────────────────┘
验收标准与任务映射
| 验收标准 | 关联任务 | 状态 |
|---|---|---|
| AC-IDS-01: 扩展 ScriptFlow 数据模型 | Task 1.1 | ✅已完成 |
| AC-IDS-02: 扩展 Admin API 契约 | Task 1.3, Task 1.4 | ✅已完成 |
| AC-IDS-03: 实现话术生成引擎 | Task 2.3 | ✅已完成 |
| AC-IDS-04: 实现灵活模式的 Prompt 构建 | Task 2.1 | ✅已完成 |
| AC-IDS-05: 实现 Fallback 机制 | Task 2.4, Task 2.5, Task 2.6 | ✅已完成 |
| AC-IDS-06: 实现模板模式的变量填充 | Task 2.2 | ✅已完成 |
| AC-IDS-07: 前端类型定义扩展 | Task 1.2 | ✅已完成 |
| AC-IDS-08: 配置界面增加模式选择 | Task 3.1, Task 3.2, Task 3.6 | ✅已完成 |
| AC-IDS-09: 约束条件管理组件 | Task 3.3 | ✅已完成 |
| AC-IDS-10: 流程预览增强 | Task 3.5 | ✅已完成 |
| AC-IDS-11: 单元测试覆盖 | Task 4.1, Task 4.2, Task 4.3 | ✅已完成 |
| AC-IDS-12: 集成测试 | Task 4.4 | ✅已完成 |
| AC-IDS-13: 向后兼容性测试 | Task 1.4, Task 4.5 | ✅已完成 |
风险与缓解
| 风险 | 影响任务 | 缓解措施 |
|---|---|---|
| LLM 服务不稳定 | Task 2.1, Task 2.2 | 实现 fallback 机制 |
| 前端组件库兼容性 | Task 3.1-3.6 | 提前验证组件 |
| 测试环境资源不足 | Task 4.1-4.6 | 使用 Mock 服务 |
备注
- 所有任务完成后,需更新本文档的状态字段
- 如有任务阻塞,需在任务描述中记录阻塞原因
- 任务工时为预估值,实际执行时可根据情况调整