# v0.7.0 窗口2：话术流程 + 输出护栏 - 进度文档

## 1. 任务概述
实现 v0.7.0 迭代中话术流程和输出护栏的测试与监控功能，包括前端页面和后端 API。

## 2. 需求文档引用
- spec/ai-service-admin/requirements.md - 第10节（v0.7.0），AC-ASA-59 ~ AC-ASA-64
- spec/ai-service/requirements.md - 第13节（v0.7.0），AC-AISVC-101 ~ AC-AISVC-107

## 3. 总体进度
- [x] 后端任务（4个）
  - [x] T16.22-T16.24: 话术流程模拟测试 API
  - [x] T16.25-T16.27: 话术流程监控 API
  - [x] T16.28-T16.29: 输出护栏测试 API
  - [x] T16.30-T16.32: 输出护栏监控 API
- [x] 前端任务（5个）
  - [x] P13-14: 流程模拟对话框
  - [x] P13-15-P13-16: 话术流程监控页面
  - [x] P13-17: 护栏测试对话框
  - [x] P13-18-P13-19: 输出护栏监控页面
  - [x] P13-01: API 服务层扩展

## 4. Phase 详细进度

### Phase 1: 话术流程模拟测试 API (T16.22-T16.24)
**状态**: 已完成
**文件修改记录**:
- 新建: ai-service/app/services/flow/tester.py - ScriptFlowTester 类
- 修改: ai-service/app/api/admin/script_flows.py - 添加 POST /{flowId}/simulate 端点

### Phase 2: 话术流程监控 API (T16.25-T16.27)
**状态**: 已完成
**文件修改记录**:
- 新建: ai-service/app/services/monitoring/flow_monitor.py - FlowMonitor 类
- 修改: ai-service/app/api/admin/monitoring.py - 添加 GET /script-flows 和 GET /script-flows/{flowId}/executions 端点

### Phase 3: 输出护栏测试 API (T16.28-T16.29)
**状态**: 已完成
**文件修改记录**:
- 新建: ai-service/app/services/guardrail/tester.py - GuardrailTester 类
- 修改: ai-service/app/api/admin/guardrails.py - 添加 POST /test 端点

### Phase 4: 输出护栏监控 API (T16.30-T16.32)
**状态**: 已完成
**文件修改记录**:
- 新建: ai-service/app/services/monitoring/guardrail_monitor.py - GuardrailMonitor 类
- 修改: ai-service/app/api/admin/monitoring.py - 添加 GET /guardrails 和 GET /guardrails/{wordId}/blocks 端点
- 修改: ai-service/app/services/monitoring/__init__.py - 导出新模块

### Phase 5: 前端实现 (P13-14 ~ P13-19, P13-01)
**状态**: 已完成
**文件修改记录**:
- 新建: ai-service-admin/src/views/admin/script-flow/components/SimulateDialog.vue
- 新建: ai-service-admin/src/views/admin/monitoring/ScriptFlows.vue
- 新建: ai-service-admin/src/views/admin/guardrail/components/TestDialog.vue
- 新建: ai-service-admin/src/views/admin/monitoring/Guardrails.vue
- 扩展: ai-service-admin/src/api/monitoring.ts - 添加流程和护栏监控 API
- 扩展: ai-service-admin/src/api/script-flow.ts - 添加流程模拟 API
- 扩展: ai-service-admin/src/api/guardrail.ts - 添加护栏测试 API
- 修改: ai-service-admin/src/views/admin/script-flow/index.vue - 添加模拟按钮
- 修改: ai-service-admin/src/views/admin/guardrail/components/ForbiddenWordsTab.vue - 添加测试按钮
- 修改: ai-service-admin/src/router/index.ts - 添加监控页面路由

## 5. 技术上下文

### 项目结构
- **前端**: `ai-service-admin/` - Vue 3 + Element Plus + TypeScript
- **后端**: `ai-service/` - Python FastAPI + SQLModel + PostgreSQL

### 核心约定
- 所有 API 必须支持多租户隔离（`tenant_id` 参数）
- 流程模拟不应修改数据库状态（只读操作）
- 护栏测试应复用现有的 `OutputFilter` 逻辑
- 监控数据异步更新，不阻塞主流程

### 关键代码示例
- 流程引擎: `app/services/flow/engine.py` - `_match_next_step()` 方法
- 护栏过滤: `app/services/guardrail/output_filter.py` - `filter()` 方法
- 禁词服务: `app/services/guardrail/word_service.py` - `get_enabled_words_for_filtering()` 方法

### 模块依赖
- FlowEngine: 流程状态机引擎
- OutputFilter: 输出护栏过滤器
- ForbiddenWordService: 禁词管理服务
- ScriptFlowService: 话术流程管理服务

## 6. 会话历史
### 会话 1 (2026-02-27)
- 完成：所有后端 API 和前端页面实现
- 问题：无
- 解决方案：无

## 7. 下一步行动
**任务已完成**

## 8. 待解决问题
暂无

## 9. 最终验收标准
- [x] [AC-AISVC-101] 流程模拟测试接口返回完整的模拟执行结果
- [x] [AC-AISVC-102] 流程模拟支持覆盖率分析和问题检测
- [x] [AC-AISVC-103] 流程监控统计接口返回激活次数、完成率等统计
- [x] [AC-AISVC-104] 流程执行记录接口支持分页查询
- [x] [AC-AISVC-105] 护栏测试接口返回详细的检测结果
- [x] [AC-AISVC-106] 护栏监控统计接口返回拦截次数等统计
- [x] [AC-AISVC-107] 禁词拦截记录接口支持分页查询
- [x] [AC-ASA-59] 流程模拟对话框支持步骤可视化
- [x] [AC-ASA-60] 话术流程监控页面展示流程激活统计
- [x] [AC-ASA-61] 流程执行记录详情弹窗支持分页
- [x] [AC-ASA-62] 护栏测试对话框展示禁词检测结果
- [x] [AC-ASA-63] 输出护栏监控页面展示护栏拦截统计
- [x] [AC-ASA-64] 护栏拦截记录详情弹窗支持分页
