# 意图驱动话术流程 - 任务分解 --- 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 类型定义 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-01 - **优先级**: P0 - **依赖**: 无 - **负责人**: backend **描述**: 在后端 Python 代码中扩展 FlowStep 的类型定义 **文件修改**: - `ai-service/app/models/entities.py` 或 `ai-service/app/schemas/script_flow.py` **具体步骤**: 1. 找到 `FlowStep` 相关的类型定义(可能在 Pydantic model 或 TypedDict 中) 2. 添加以下可选字段: ```python 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 ``` 3. 确保向后兼容:所有新字段都是可选的,有默认值 **验收测试**: ```python # 测试向后兼容 step_old = {"step_no": 1, "content": "Hello"} # 应该能正常解析,script_mode 默认为 "fixed" # 测试新字段 step_new = { "step_no": 1, "script_mode": "flexible", "intent": "获取用户姓名", "script_constraints": ["必须礼貌"], "content": "请问怎么称呼您?" } # 应该能正常解析 ``` **完成标准**: - [x] 类型定义已扩展 - [x] 所有新字段都是可选的 - [x] 代码通过类型检查(mypy/pyright) --- ### Task 1.2: 扩展前端 TypeScript 类型定义 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-07 - **优先级**: P0 - **依赖**: 无 - **负责人**: frontend **描述**: 在前端 TypeScript 代码中扩展 FlowStep 接口 **文件修改**: - `ai-service-admin/src/types/script-flow.ts` **具体步骤**: 1. 打开 `script-flow.ts` 文件 2. 找到 `FlowStep` 接口定义 3. 添加新字段: ```typescript export type ScriptMode = 'fixed' | 'flexible' | 'template' export interface FlowStep { // ... 现有字段 ... // 新增字段 script_mode?: ScriptMode intent?: string intent_description?: string script_constraints?: string[] expected_variables?: string[] } ``` 4. 添加常量定义: ```typescript export const SCRIPT_MODE_OPTIONS = [ { value: 'fixed', label: '固定话术', description: '话术内容固定不变' }, { value: 'flexible', label: '灵活话术', description: 'AI根据意图和上下文生成' }, { value: 'template', label: '模板话术', description: 'AI填充模板中的变量' } ] as const ``` **完成标准**: - [x] TypeScript 类型定义已扩展 - [x] 所有新字段都是可选的 - [x] 代码通过 TypeScript 编译 --- ### Task 1.3: 更新 OpenAPI 契约 - [x] **状态**: ✅已完成 (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` **具体步骤**: 1. 找到 `FlowStepSchema` 定义 2. 添加新字段定义: ```yaml 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: 期望提取的变量 ``` 3. 更新接口文档说明 4. 标记契约成熟度为 L1 **完成标准**: - [x] OpenAPI schema 已更新 - [x] 所有新字段标记为 optional - [x] 契约通过 lint 校验 --- ### Task 1.4: 验证 API 向后兼容性 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-02, AC-IDS-13 - **优先级**: P0 - **依赖**: Task 1.1, Task 1.3 **描述**: 确保 API 扩展不破坏现有客户端 **测试场景**: 1. 使用旧版请求体创建流程(不包含新字段) 2. 验证流程能正常保存和执行 3. 验证 API 响应包含新字段(值为 null 或默认值) **测试文件**: - `ai-service/tests/api/test_script_flow_backward_compat.py` **测试用例**: ```python 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(): """测试旧流程能正常执行""" # 创建不包含新字段的流程 # 启动流程 # 验证返回固定话术 ``` **完成标准**: - [x] 所有向后兼容性测试通过 - [x] 旧版客户端不受影响 --- ## Phase 2: 后端话术生成引擎 **目标**: 实现三种模式的话术生成逻辑 **预计工时**: 2 天 **依赖**: Phase 1 完成 ### Task 2.1: 创建 ScriptGenerator 模块 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-04 - **优先级**: P0 - **依赖**: Task 1.1 **描述**: 实现灵活模式的话术生成器 **文件创建**: - `ai-service/app/services/flow/script_generator.py` **具体实现**: ```python """ [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) ``` **完成标准**: - [x] ScriptGenerator 类已实现 - [x] Prompt 构建逻辑完整 - [x] 超时和异常处理正确 - [x] 日志记录完整 --- ### Task 2.2: 创建 TemplateEngine 模块 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-06 - **优先级**: P1 - **依赖**: Task 1.1 **描述**: 实现模板模式的变量填充逻辑 **文件创建**: - `ai-service/app/services/flow/template_engine.py` **具体实现**: ```python """ [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) ``` **完成标准**: - [x] TemplateEngine 类已实现 - [x] 变量提取和替换逻辑正确 - [x] 异常处理和 fallback 完整 --- ### Task 2.3: 扩展 FlowEngine - 添加话术生成方法 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-03 - **优先级**: P0 - **依赖**: Task 2.1, Task 2.2 **描述**: 在 FlowEngine 中添加话术生成的核心方法 **文件修改**: - `ai-service/app/services/flow/engine.py` **具体步骤**: 1. 在 `FlowEngine.__init__()` 中初始化生成器 2. 添加 `_generate_step_content()` 方法 3. 添加 `_get_conversation_history()` 辅助方法 **完成标准**: - [x] `_generate_step_content()` 方法已实现 - [x] 三种模式的分支逻辑正确 - [x] `_get_conversation_history()` 方法已实现 - [x] 错误处理和 fallback 完整 --- ### Task 2.4: 修改 FlowEngine.start() 方法 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-05 - **优先级**: P0 - **依赖**: Task 2.3 **描述**: 修改流程启动逻辑,在首步使用话术生成 **文件修改**: - `ai-service/app/services/flow/engine.py` **具体步骤**: 1. 在 `start()` 方法中调用 `_get_conversation_history()` 2. 调用 `_generate_step_content()` 生成首步话术 3. 确保向后兼容(无 orchestrator 时使用固定话术) **完成标准**: - [x] start() 方法已修改 - [x] 首步话术能正确生成 - [x] 向后兼容测试通过 --- ### Task 2.5: 修改 FlowEngine.advance() 方法 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-05 - **优先级**: P0 - **依赖**: Task 2.3 **描述**: 修改流程推进逻辑,在后续步骤使用话术生成 **文件修改**: - `ai-service/app/services/flow/engine.py` **具体步骤**: 1. 在 `advance()` 方法中调用 `_get_conversation_history()` 2. 调用 `_generate_step_content()` 生成下一步话术 3. 确保向后兼容 **完成标准**: - [x] advance() 方法已修改 - [x] 后续步骤话术能正确生成 - [x] 向后兼容测试通过 --- ### Task 2.6: 实现 Fallback 机制 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-05 - **优先级**: P0 - **依赖**: Task 2.1 **描述**: 确保话术生成失败时有明确的 fallback 策略 **技术要求**: - LLM 调用超时(2秒)时,返回 `step.content` 作为 fallback - LLM 返回错误时,记录日志并返回 fallback - Fallback 话术不为空时使用,否则返回默认提示 **验收测试**: - 模拟 LLM 超时,验证返回 fallback 话术 - 模拟 LLM 错误,验证日志记录和 fallback **完成标准**: - [x] 超时 fallback 已实现 - [x] 异常 fallback 已实现 - [x] 日志记录完整 - [x] 单元测试通过 --- ## Phase 3: 前端配置界面 **目标**: 提供意图驱动话术的配置界面 **预计工时**: 1.5 天 **依赖**: Phase 1 完成 ### Task 3.1: 创建话术模式选择组件 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-08 - **优先级**: P0 - **依赖**: Task 1.2 **描述**: 在步骤配置表单中增加话术模式选择 **文件修改**: - `ai-service-admin/src/views/admin/script-flow/index.vue` **具体步骤**: 1. 添加 Radio Group 选择话术模式 2. 根据选择的模式动态显示对应配置项 3. 模式切换时保留已填写的数据 **UI 要求**: - 固定模式:显示 `content` 输入框 - 灵活模式:显示 `intent`、`intent_description`、`constraints` 配置 - 模板模式:显示 `content` 输入框(带模板语法提示) **完成标准**: - [x] 模式选择器已实现 - [x] 动态表单切换正确 - [x] 数据保留逻辑正确 --- ### Task 3.2: 创建意图配置表单 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-08 - **优先级**: P0 - **依赖**: Task 3.1 **描述**: 实现灵活模式的意图配置表单 **文件修改**: - `ai-service-admin/src/views/admin/script-flow/index.vue` **具体步骤**: 1. 添加"步骤意图"输入框(必填) 2. 添加"意图说明"文本域(可选) 3. 添加"期望变量"输入(可选) 4. 添加表单校验规则 **完成标准**: - [x] 意图配置表单已实现 - [x] 表单校验正确 - [x] 数据绑定正确 --- ### Task 3.3: 创建约束条件管理组件 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-09 - **优先级**: P0 - **依赖**: Task 1.2 **描述**: 实现约束条件的添加、删除、编辑 **文件创建**: - `ai-service-admin/src/views/admin/script-flow/components/ConstraintManager.vue` **具体实现**: ```vue ``` **完成标准**: - [x] ConstraintManager 组件已实现 - [x] 支持添加/删除约束 - [x] 支持预设约束快捷添加 - [x] 组件已集成到主表单 --- ### Task 3.4: 创建模板话术配置组件 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-04 - **优先级**: P1 - **依赖**: Task 3.1 **描述**: 实现模板模式的配置界面 **文件修改**: - `ai-service-admin/src/views/admin/script-flow/index.vue` **具体步骤**: 1. 添加话术模板输入框 2. 添加模板语法提示 3. 添加变量高亮显示(可选) **UI 示例**: ``` 话术模板: [您好{greeting_style},请问您{polite_form}?] 提示:使用 {变量名} 标记需要AI填充的部分 ``` **完成标准**: - [x] 模板配置界面已实现 - [x] 语法提示清晰 - [x] 数据绑定正确 --- ### Task 3.5: 增强流程预览组件 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-10 - **优先级**: P1 - **依赖**: Task 3.1 **描述**: 在流程预览中显示步骤的意图信息 **文件修改**: - `ai-service-admin/src/views/admin/script-flow/components/FlowPreview.vue` **具体步骤**: 1. 显示步骤的 `script_mode` 2. 灵活模式显示意图和约束 3. 固定模式显示话术内容 4. 模板模式显示模板预览 **完成标准**: - [x] 预览组件已增强 - [x] 意图信息显示正确 - [x] 不同模式显示不同内容 --- ### Task 3.6: 前端表单校验与提交 - [x] **状态**: ✅已完成 (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` 必填 **完成标准**: - [x] 表单校验规则已实现 - [x] 提交逻辑正确 - [x] 错误提示清晰 --- ## Phase 4: 测试与验证 **目标**: 确保功能正确性和向后兼容性 **预计工时**: 1 天 **依赖**: Phase 2, Phase 3 完成 ### Task 4.1: 后端单元测试 - ScriptGenerator - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-11 - **优先级**: P0 - **依赖**: Task 2.1 **描述**: 为 ScriptGenerator 编写单元测试 **测试文件**: - `ai-service/tests/services/flow/test_script_generator.py` **测试用例**: - 正常生成话术 - 超时 fallback - 异常 fallback - Prompt 构建正确性 **完成标准**: - [x] 测试文件已创建 - [x] 所有测试用例通过 - [x] 代码覆盖率 > 80% --- ### Task 4.2: 后端单元测试 - TemplateEngine - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-11 - **优先级**: P0 - **依赖**: Task 2.2 **描述**: 为 TemplateEngine 编写单元测试 **测试文件**: - `ai-service/tests/services/flow/test_template_engine.py` **测试用例**: - 变量提取正确性 - 变量替换正确性 - 从上下文获取变量值 - LLM 生成变量值 - 异常处理 **完成标准**: - [x] 测试文件已创建 - [x] 所有测试用例通过 - [x] 代码覆盖率 > 80% --- ### Task 4.3: 后端单元测试 - FlowEngine - [x] **状态**: ✅已完成 (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` **测试用例**: - 固定模式话术生成 - 灵活模式话术生成 - 模板模式话术生成 - 对话历史获取 - 边界情况(空配置、无效配置) **完成标准**: - [x] 测试文件已创建 - [x] 所有测试用例通过 - [x] 代码覆盖率 > 80% --- ### Task 4.4: 集成测试 - 端到端流程 - [x] **状态**: ✅已完成 (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` **测试场景**: 1. 创建灵活模式流程 2. 启动流程,验证首步话术生成 3. 输入用户消息,验证流程推进和话术生成 4. 验证对话历史正确传递 **完成标准**: - [x] 测试文件已创建 - [x] 所有测试场景通过 - [x] 测试覆盖主要业务流程 --- ### Task 4.5: 向后兼容性测试 - [x] **状态**: ✅已完成 (2026-02-28) - **验收标准**: AC-IDS-13 - **优先级**: P0 - **依赖**: Task 4.4 **描述**: 验证现有固定话术流程不受影响 **测试场景**: 1. 加载现有流程(无 script_mode 字段) 2. 执行流程,验证话术正常返回 3. 验证 API 响应包含新字段但值为 null 4. 验证前端能正确显示旧流程数据 **完成标准**: - [x] 所有向后兼容性测试通过 - [x] 现有流程不受影响 --- ### Task 4.6: 前端组件测试 - [x] **状态**: ✅已完成 (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__/` **测试用例**: - 模式选择器交互 - 约束条件管理 - 表单校验 - 数据提交 **完成标准**: - [x] 测试文件已创建 - [x] 主要交互测试通过 --- ## Phase 5: 部署与发布 **目标**: 安全部署新功能 **预计工时**: 0.5 天 **依赖**: Phase 4 全部完成 ### Task 5.1: 更新部署文档 - [ ] **状态**: 待开始 - **验收标准**: N/A - **优先级**: P0 - **依赖**: Phase 4 完成 **描述**: 更新部署文档和变更日志 **文件修改**: - `CHANGELOG.md` - `docs/deployment.md`(如存在) **具体内容**: - 记录新功能 - 记录 API 变更 - 记录配置变更(如有) **完成标准**: - [ ] 变更日志已更新 - [ ] 部署文档已更新 --- ### Task 5.2: 灰度发布准备 - [ ] **状态**: 待开始 - **验收标准**: N/A - **优先级**: P0 - **依赖**: Task 5.1 **描述**: 准备灰度发布环境 **具体步骤**: 1. 选择灰度租户 2. 配置监控告警 3. 准备回滚方案 **完成标准**: - [ ] 灰度租户已确定 - [ ] 监控已配置 - [ ] 回滚方案已准备 --- ### Task 5.3: 执行灰度发布 - [ ] **状态**: 待开始 - **验收标准**: N/A - **优先级**: P0 - **依赖**: Task 5.2 **描述**: 执行灰度发布并监控 **具体步骤**: 1. 部署后端服务 2. 部署前端服务 3. 监控关键指标 4. 收集用户反馈 **监控指标**: - 话术生成延迟 - 超时率 - 错误率 - Fallback 使用率 **完成标准**: - [ ] 灰度发布成功 - [ ] 无严重问题 - [ ] 用户反馈正常 --- ### Task 5.4: 全量发布 - [ ] **状态**: 待开始 - **验收标准**: N/A - **优先级**: P0 - **依赖**: Task 5.3 **描述**: 灰度验证通过后全量发布 **具体步骤**: 1. 确认灰度指标正常 2. 执行全量发布 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 服务 | --- ## 备注 - 所有任务完成后,需更新本文档的状态字段 - 如有任务阻塞,需在任务描述中记录阻塞原因 - 任务工时为预估值,实际执行时可根据情况调整