Files
zclaw_openfang/docs/PRE_RELEASE_E2E_TEST_REPORT.md
iven 5f47e62a46
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
fix(desktop): hide model selector in Tauri runtime — SaaS token pool routes models
Model selector was cosmetic-only in desktop mode: chatStream never passes
model param to backend. Hiding prevents user confusion and 404 errors when
selecting models not in SaaS token pool.

Also adds E2E test report covering 168 messages, 4 bugs found (P0 fixed).
2026-04-09 18:35:34 +08:00

119 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZCLAW 发布前 E2E 测试报告
> 日期: 2026-04-09
> 测试方式: Chrome DevTools MCP + Tauri MCP 端到端自动化
> 测试目标: 模拟真实用户操作,验证核心功能稳定性
## 测试概览
| 指标 | 值 |
|------|-----|
| 总消息数 | 168 条 |
| 用户消息 | 84 条 |
| AI 回复 | 84 条19 条真实内容 + 65 条空响应/错误) |
| 测试时长 | ~2 小时 |
| 测试模型 | GLM-4.7前18轮, deepseek-chat / glm-4-flash后续错误 |
## 测试场景
### 场景 1: 随机话题对话16 轮)
- 状态: 部分成功
- 问题: GLM-4.7 响应慢(~67s/轮),部分超时
- 发现: 历史消息中的 "Sending..." 标签导致完成检测误判
### 场景 2: 教育行业连续对话89 轮脚本,模拟小学班主任王老师)
- 6 个阶段: 身份建立 → 教学深化 → 班级管理 → 期末收尾 → 新学期展望 → 深度验证
- 前 18 轮GLM-4.7: 全部成功,对话质量极高
- 后 65 轮: 全部失败(模型错误导致空回复)
## 发现的 BUG
### P0: 模型选择器桌面端误导用户
**状态**: 已修复
**问题**: Tauri 桌面端的模型选择器让用户以为可以切换模型,但实际模型由 SaaS Token 池决定,前端选择不传后端。
**影响**: 用户选择 "GLM-4.7" 但实际可能调用 "glm-4-flash"(不存在),导致 404 错误和空回复。
**根因**: `StreamChatRequest`Rust`chatStream`TS均无 `model` 参数。模型由后端 agent 配置决定。
**修复**: 在 `ChatArea.tsx` 中对 Tauri 运行时隐藏模型选择器。
**文件**: `desktop/src/components/ChatArea.tsx`
### P1: API 错误时 assistant 消息内容为空
**问题**: 当 LLM 返回错误404/429assistant 消息的 `content` 为空字符串,错误信息仅显示在 UI 的错误气泡中,不存入 Store。
**影响**:
- 对话历史中的空消息无法追溯错误原因
- 记忆系统可能索引空内容
- 侧边栏消息预览显示为空白
**建议**: 将错误信息存入 `message.content``message.error` 字段。
### P2: 429 Rate Limit 未优雅处理
**问题**: DeepSeek API 60 RPM 限流触发后,前端直接显示错误,没有重试/退避机制。
**影响**: 自动化测试中高频发送消息时容易触发限流。
**建议**: 前端实现指数退避重试2s → 4s → 8s最多 3 次。
### P3: 错误消息的"重试"按钮堆叠
**问题**: 连续多轮失败后UI 中堆叠了 7+ 个"重试"按钮(见截图),影响可读性。
**建议**: 错误消息应可折叠,或只保留最后一个错误的"重试"按钮。
## 对话质量评估(前 18 轮 GLM-4.7
### 上下文记忆测试
| 测试项 | 结果 |
|--------|------|
| 记住用户身份(王老师) | PASS |
| 记住班级信息38人、三年级2班 | PASS |
| 记住学生名字(张小明、刘小花) | PASS |
| 引用之前讨论的内容 | PASS |
| 教学建议的专业性 | PASS |
| 情感支持和沟通技巧 | PASS |
### 典型回复示例
**第 8 轮(注意力评估建议)**: AI 正确识别了"家校表现一致"这一关键信号,建议"温和、专业、不贴标签"地沟通,并提供了具体话术模板。
**第 17 轮(公开课选课文)**: AI 综合考虑了班级中张小明(需要动觉学习)和刘小花(需要信心建立)的情况,推荐了三个选项并分析利弊。
## 内存和性能
| 指标 | 值 | 评价 |
|------|-----|------|
| 初始内存 | 30 MB | 正常 |
| 40 条消息时 | 32 MB | 稳定 |
| 160 条消息时 | 31-35 MB | 无泄漏 |
| GC 后 | 回落到 31 MB | 正常 |
| 平均 AI 响应时间 (GLM-4.7) | 67s | 偏慢,但非 BUG |
| 平均 AI 响应时间 (deepseek) | 1.3s | API 报错,非真实响应 |
## 修复记录
| 修改 | 文件 | 说明 |
|------|------|------|
| 隐藏桌面端模型选择器 | `desktop/src/components/ChatArea.tsx` | `isTauriRuntime()` 条件渲染 |
## 未修复项(后续跟进)
1. **P1**: API 错误时 assistant 消息内容为空 — 需要修改 streamStore 的错误处理
2. **P2**: 429 Rate Limit 重试机制 — 需要在 chatStream 中实现退避
3. **P3**: 错误消息堆叠 — UI 优化
## 测试环境
- OS: Windows 11 Pro (10.0.26200)
- 显示器: 5120x2880 @ 2.5x scale
- 应用版本: ZCLAW 0.1.0
- 后端: Tauri 2.x + Rust kernel
- 运行时模型: SaaS Token 池路由