From d4b0bc31014560f730db5fb0cfab84268b0314dd Mon Sep 17 00:00:00 2001 From: MerCry Date: Fri, 27 Feb 2026 17:59:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=20Phase=2013=20?= =?UTF-8?q?=E8=AF=9D=E6=9C=AF=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E=E8=BF=9B?= =?UTF-8?q?=E5=BA=A6=E6=96=87=E6=A1=A3=20[AC-AISVC-71~AC-AISVC-77]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/progress/ai-service-progress.md | 64 ++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/docs/progress/ai-service-progress.md b/docs/progress/ai-service-progress.md index 2b425bf..ab1b3e5 100644 --- a/docs/progress/ai-service-progress.md +++ b/docs/progress/ai-service-progress.md @@ -43,21 +43,20 @@ ## 🔄 Current Phase ### Goal -Phase 14 输出护栏核心功能已完成 (T14.1-T14.7),T14.8(单元测试)留到集成阶段。 +Phase 13 话术流程引擎核心功能已完成 (T13.1-T13.6),T13.7(单元测试)留到集成阶段。下一阶段:Phase 15 智能 RAG 增强与编排升级。 -### Completed Tasks (Phase 14) +### Completed Tasks (Phase 13) -- [x] T14.1 定义 `ForbiddenWord` 和 `BehaviorRule` SQLModel 实体,创建数据库表 `[AC-AISVC-78, AC-AISVC-84]` ✅ -- [x] T14.2 实现 `ForbiddenWordService`:禁词 CRUD + 命中统计 `[AC-AISVC-78, AC-AISVC-79, AC-AISVC-80, AC-AISVC-81]` ✅ -- [x] T14.3 实现 `BehaviorRuleService`:行为规则 CRUD `[AC-AISVC-84, AC-AISVC-85]` ✅ -- [x] T14.4 实现 `InputScanner`:用户输入前置禁词检测(仅记录,不阻断) `[AC-AISVC-83]` ✅ -- [x] T14.5 实现 `OutputFilter`:LLM 输出后置过滤(mask/replace/block 三种策略) `[AC-AISVC-82]` ✅ -- [x] T14.6 实现 Streaming 模式下的滑动窗口禁词检测 `[AC-AISVC-82]` ✅ -- [x] T14.7 实现护栏管理 API:`/admin/guardrails` 相关端点 `[AC-AISVC-78~AC-AISVC-85]` ✅ +- [x] T13.1 定义 `ScriptFlow` 和 `FlowInstance` SQLModel 实体,创建数据库表 `[AC-AISVC-71, AC-AISVC-74]` ✅ +- [x] T13.2 实现 `ScriptFlowService`:流程定义 CRUD `[AC-AISVC-71, AC-AISVC-72, AC-AISVC-73]` ✅ +- [x] T13.3 实现 `FlowEngine.check_active_flow()`:检查会话是否有活跃流程实例 `[AC-AISVC-75]` ✅ +- [x] T13.4 实现 `FlowEngine.start()`:创建流程实例,返回第一步话术 `[AC-AISVC-74]` ✅ +- [x] T13.5 实现 `FlowEngine.advance()`:根据用户输入匹配条件,推进步骤或重复当前步骤 `[AC-AISVC-75, AC-AISVC-76]` ✅ +- [x] T13.6 实现话术流程管理 API:`POST/GET/PUT /admin/script-flows` `[AC-AISVC-71, AC-AISVC-72, AC-AISVC-73]` ✅ -### Pending Tasks (Phase 14 - 集成阶段) +### Pending Tasks (Phase 13 - 集成阶段) -- [ ] T14.8 编写输出护栏服务单元测试 `[AC-AISVC-78~AC-AISVC-85]` +- [ ] T13.7 编写话术流程引擎单元测试 `[AC-AISVC-71~AC-AISVC-77]` --- @@ -69,8 +68,9 @@ Phase 14 输出护栏核心功能已完成 (T14.1-T14.7),T14.8(单元测试 - `app/` - `api/` - FastAPI 路由层 - `admin/guardrails.py` - 护栏管理 API ✅ + - `admin/script_flows.py` - 话术流程管理 API ✅ - `models/` - Pydantic 模型和 SQLModel 实体 - - `entities.py` - ForbiddenWord, BehaviorRule, GuardrailResult, InputScanResult 实体 ✅ + - `entities.py` - ForbiddenWord, BehaviorRule, GuardrailResult, InputScanResult, ScriptFlow, FlowInstance, FlowInstanceStatus, TimeoutAction, FlowStep, FlowAdvanceResult 实体 ✅ - `services/` - `guardrail/` - 输出护栏服务 ✅ - `__init__.py` - 模块导出 @@ -79,6 +79,10 @@ Phase 14 输出护栏核心功能已完成 (T14.1-T14.7),T14.8(单元测试 - `input_scanner.py` - 用户输入前置检测(仅记录,不阻断) - `output_filter.py` - LLM 输出后置过滤(mask/replace/block) - `streaming_filter.py` - Streaming 滑动窗口检测 + - `flow/` - 话术流程引擎 ✅ + - `__init__.py` - 模块导出 + - `flow_service.py` - 流程定义 CRUD + - `engine.py` - FlowEngine 状态机(check_active_flow、start、advance、handle_timeout、cancel_flow) ### Key Decisions (Why / Impact) @@ -102,10 +106,46 @@ Phase 14 输出护栏核心功能已完成 (T14.1-T14.7),T14.8(单元测试 reason: 减少数据库查询,提升过滤性能 impact: 缓存 TTL=60s,CRUD 操作时主动失效 +- decision: FlowEngine 状态机设计 + reason: 实现多轮引导对话的固定话术流程 + impact: 状态流转 IDLE → ACTIVE → COMPLETED/TIMEOUT/CANCELLED + +- decision: 步骤推进条件匹配 + reason: 根据用户输入决定下一步骤 + impact: 支持关键词匹配和正则匹配,nextConditions 定义跳转条件 + +- decision: 超时处理三种策略 + reason: 用户长时间无响应时的不同处理方式 + impact: repeat(重复当前步骤)、skip(跳过到指定步骤)、transfer(转人工) + --- ## 🧾 Session History +### Session #11 (2026-02-27) +- completed: + - T13.1-T13.6 话术流程引擎核心功能 + - 实现 ScriptFlow 和 FlowInstance 实体 + - 实现 ScriptFlowService(流程定义 CRUD) + - 实现 FlowEngine 状态机(check_active_flow、start、advance、handle_timeout、cancel_flow) + - 实现步骤推进逻辑(关键词匹配、正则匹配、nextConditions 条件判断) + - 实现超时处理(repeat/skip/transfer 三种策略) + - 实现话术流程管理 API +- changes: + - 新增 `app/models/entities.py` ScriptFlow, FlowInstance, FlowInstanceStatus, TimeoutAction, FlowStep, FlowAdvanceResult 实体 + - 新增 `app/services/flow/__init__.py` 模块导出 + - 新增 `app/services/flow/flow_service.py` 流程定义服务 + - 新增 `app/services/flow/engine.py` FlowEngine 状态机引擎 + - 新增 `app/api/admin/script_flows.py` 话术流程管理 API + - 更新 `app/api/admin/__init__.py` 导出新路由 + - 更新 `app/main.py` 注册新路由 + - 更新 `spec/ai-service/tasks.md` 标记任务完成 +- notes: + - T13.7(单元测试)留到集成阶段 + - FlowEngine 状态机:IDLE → ACTIVE → COMPLETED/TIMEOUT/CANCELLED + - 步骤推进支持关键词匹配和正则匹配 + - 超时处理支持三种策略:repeat(重复当前步骤)、skip(跳过到指定步骤)、transfer(转人工) + ### Session #10 (2026-02-27) - completed: - T14.1-T14.7 输出护栏核心功能