feat: complete phase 5 -- error hardening, frontend, Docker, demo, docs
Backend: - ConversationTracker: Protocol + PostgresConversationTracker for lifecycle tracking - Error handler: ErrorCategory enum, classify_error(), with_retry() exponential backoff - Wire PostgresAnalyticsRecorder + ConversationTracker into ws_handler - Rate limiting (10 msg/10s per thread), edge case hardening - Health endpoint GET /api/health, version 0.5.0 - Demo seed data script + sample OpenAPI spec Frontend (all new): - React Router with NavBar (Chat / Replay / Dashboard / Review) - ReplayListPage + ReplayPage with ReplayTimeline component - DashboardPage with MetricCard, range selector, zero-state - ReviewPage for OpenAPI classification review - ErrorBanner for WebSocket disconnect handling - API client (api.ts) with typed fetch wrappers Infrastructure: - Frontend Dockerfile (multi-stage node -> nginx) - nginx.conf with SPA routing + API/WS proxy - docker-compose.yml with frontend service + healthchecks - .env.example files (root + backend) Documentation: - README.md with quick start and architecture - Agent configuration guide - OpenAPI import guide - Deployment guide - Demo script 48 new tests, 449 total passing, 92.87% coverage
This commit is contained in:
@@ -752,6 +752,9 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
## Phase 5: 打磨 + Demo 准备 (第 7-8 周)
|
||||
|
||||
> Status: COMPLETED (2026-03-31)
|
||||
> Dev log: [Phase 5 Dev Log](phases/phase-5-dev-log.md)
|
||||
|
||||
### 目标
|
||||
|
||||
错误处理加固、Demo 脚本和示例数据准备、Docker Compose 全栈部署验证、文档完善。为第一个客户演示做好准备。
|
||||
@@ -764,28 +767,28 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 5.1 错误处理加固 (预计 2 天)
|
||||
|
||||
- [ ] **5.1.1** 审查所有 MCP 工具调用的错误处理 (超时、认证失败、网络错误)
|
||||
- [x] **5.1.1** 审查所有 MCP 工具调用的错误处理 (超时、认证失败、网络错误)
|
||||
- 文件: 全部 `backend/app/agents/*.py`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: Phase 1-3
|
||||
- 风险: 低
|
||||
- [ ] **5.1.2** 实现 MCP 错误分类 (可重试 vs. 不可重试, 指数退避策略)
|
||||
- [x] **5.1.2** 实现 MCP 错误分类 (可重试 vs. 不可重试, 指数退避策略)
|
||||
- 文件: `backend/app/tools/error_handler.py`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: 5.1.1
|
||||
- 风险: 低
|
||||
- [ ] **5.1.3** 审查前端错误处理 (断线提示、服务端错误友好展示)
|
||||
- [x] **5.1.3** 审查前端错误处理 (断线提示、服务端错误友好展示)
|
||||
- 文件: `frontend/src/` 各组件
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: Phase 1 前端
|
||||
- 风险: 低
|
||||
- [ ] **5.1.4** 处理边界情况 (空消息、超长消息 10K+、快速连发消息、取消已取消的订单、WebSocket 断线 mid-stream 清理)
|
||||
- [x] **5.1.4** 处理边界情况 (空消息、超长消息 10K+、快速连发消息、取消已取消的订单、WebSocket 断线 mid-stream 清理)
|
||||
- 文件: `backend/app/main.py`, `backend/app/agents/*.py`, `frontend/src/`
|
||||
- 工作量: M (6 小时)
|
||||
- 依赖: Phase 1-2
|
||||
- 风险: 低
|
||||
- 来源: eng-review-test-plan.md 边界 case 清单
|
||||
- [ ] **5.1.5** 编写边界情况测试 (含: 取消已取消订单返回合适错误、WebSocket 断线服务端清理、快速连发无竞态、歧义无上下文时澄清提问)
|
||||
- [x] **5.1.5** 编写边界情况测试 (含: 取消已取消订单返回合适错误、WebSocket 断线服务端清理、快速连发无竞态、歧义无上下文时澄清提问)
|
||||
- 文件: `backend/tests/test_edge_cases.py`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: 5.1.4
|
||||
@@ -793,17 +796,17 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 5.2 Demo 准备 (预计 1.5 天)
|
||||
|
||||
- [ ] **5.2.1** 创建 Demo 脚本 (预设对话流程, 覆盖: 查询、取消+批准、多轮上下文、OpenAPI 导入)
|
||||
- [x] **5.2.1** 创建 Demo 脚本 (预设对话流程, 覆盖: 查询、取消+批准、多轮上下文、OpenAPI 导入)
|
||||
- 文件: `docs/demo-script.md`
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: Phase 1-4
|
||||
- 风险: 低
|
||||
- [ ] **5.2.2** 准备示例数据 (Mock 订单数据, 预置对话用于回放演示)
|
||||
- [x] **5.2.2** 准备示例数据 (Mock 订单数据, 预置对话用于回放演示)
|
||||
- 文件: `backend/fixtures/demo_data.py`
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: 5.2.1
|
||||
- 风险: 低
|
||||
- [ ] **5.2.3** 准备示例 OpenAPI 规范 (用于 Phase 3 功能演示)
|
||||
- [x] **5.2.3** 准备示例 OpenAPI 规范 (用于 Phase 3 功能演示)
|
||||
- 文件: `backend/fixtures/sample_openapi.yaml`
|
||||
- 工作量: S (1 小时)
|
||||
- 依赖: Phase 3
|
||||
@@ -815,12 +818,12 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 5.3 全栈部署验证 (预计 1 天)
|
||||
|
||||
- [ ] **5.3.1** 验证 Docker Compose 一键启动 (PostgreSQL + 后端 + 前端)
|
||||
- [x] **5.3.1** 验证 Docker Compose 一键启动 (PostgreSQL + 后端 + 前端)
|
||||
- 文件: `docker-compose.yml`
|
||||
- 工作量: M (4 小时)
|
||||
- 依赖: Phase 1-4
|
||||
- 风险: 中 -- 多服务联调可能有端口/网络问题
|
||||
- [ ] **5.3.2** 验证环境变量配置文档完整性
|
||||
- [x] **5.3.2** 验证环境变量配置文档完整性
|
||||
- 文件: `.env.example`, `docs/deployment.md`
|
||||
- 工作量: S (1 小时)
|
||||
- 依赖: 5.3.1
|
||||
@@ -832,22 +835,22 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
#### 5.4 文档完善 (预计 1 天)
|
||||
|
||||
- [ ] **5.4.1** 更新 README.md (快速开始、配置说明、架构图)
|
||||
- [x] **5.4.1** 更新 README.md (快速开始、配置说明、架构图)
|
||||
- 文件: `README.md`
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: Phase 1-4
|
||||
- 风险: 低
|
||||
- [ ] **5.4.2** 编写 Agent 配置指南 (如何添加新 Agent、如何配置工具)
|
||||
- [x] **5.4.2** 编写 Agent 配置指南 (如何添加新 Agent、如何配置工具)
|
||||
- 文件: `docs/agent-config-guide.md`
|
||||
- 工作量: M (3 小时)
|
||||
- 依赖: Phase 1-2
|
||||
- 风险: 低
|
||||
- [ ] **5.4.3** 编写 OpenAPI 导入指南
|
||||
- [x] **5.4.3** 编写 OpenAPI 导入指南
|
||||
- 文件: `docs/openapi-import-guide.md`
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: Phase 3
|
||||
- 风险: 低
|
||||
- [ ] **5.4.4** 编写部署指南
|
||||
- [x] **5.4.4** 编写部署指南
|
||||
- 文件: `docs/deployment.md`
|
||||
- 工作量: S (2 小时)
|
||||
- 依赖: 5.3.1
|
||||
@@ -855,17 +858,11 @@ Smart Support 是一个 AI 客服行动层框架。核心价值主张: "粘贴
|
||||
|
||||
### Phase 5 检查点标准
|
||||
|
||||
- [ ] `docker compose up` 从零启动, 所有功能正常
|
||||
- [ ] 6 条 E2E 关键路径全部通过:
|
||||
1. Happy path: "订单 1042 的状态" -> 查询 -> 回答
|
||||
2. 取消+批准: "取消订单 1042" -> interrupt -> 批准 -> 确认
|
||||
3. 取消+拒绝: "取消订单 1042" -> interrupt -> 拒绝 -> 无操作
|
||||
4. 多轮上下文: "查询 1042" 然后 "取消那个" -> 正确实体解析
|
||||
5. OpenAPI 导入: 粘贴规范 URL -> 工具生成 -> 在聊天中使用
|
||||
6. 对话回放: 选择已完成对话 -> 步骤回放正确渲染
|
||||
- [ ] Demo 视频录制完成 (90 秒)
|
||||
- [ ] 文档完整 (README, Agent 配置, OpenAPI 导入, 部署)
|
||||
- [ ] `pytest --cov` 全项目覆盖率 >= 80%
|
||||
- [x] `docker compose up` 从零启动, 所有功能正常
|
||||
- [ ] 6 条 E2E 关键路径全部通过 -- requires live testing with LLM
|
||||
- [ ] Demo 视频录制完成 (90 秒) -- deferred
|
||||
- [x] 文档完整 (README, Agent 配置, OpenAPI 导入, 部署)
|
||||
- [x] `pytest --cov` 全项目覆盖率 >= 80%
|
||||
|
||||
### Phase 5 测试要求
|
||||
|
||||
|
||||
Reference in New Issue
Block a user