docs: 三端联调测试报告 2026-04-14 — 30+ API/16 Admin/8 Tauri 全量测试
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

This commit is contained in:
iven
2026-04-14 17:48:31 +08:00
parent dd854479eb
commit 70229119be

View File

@@ -0,0 +1,224 @@
# ZCLAW 三端联调测试报告 2026-04-14
> 测试类型: 系统性联调测试SaaS + Admin V2 + Tauri 桌面端)
> 测试方法: 真实 API curl + Chrome DevTools UI 操作 + Tauri MCP 桌面端操作 + 数据一致性交叉验证
> 测试时间: 2026-04-14 09:40 ~ 11:00
> 测试环境: Windows 11 Pro / SaaS :8080 / Admin V2 :5173 / Tauri Dev :1420 / PostgreSQL
---
## 总览
| 维度 | 结果 |
|------|------|
| SaaS 后端 API | 30+ 端点测试27 正常3 异常 |
| Admin V2 页面 | 16 页面测试14 正常2 有问题 |
| Tauri 桌面端 | 核心功能 8 项测试6 正常2 异常 |
| 数据一致性 | 5 项交叉验证3 一致2 不一致 |
| **P0 问题** | **1 个** |
| **P1 问题** | **3 个** |
| **P2 问题** | **3 个** |
| **P3 问题** | **3 个** |
### 与上次测试 (2026-04-13) 对比
| 变化 | 详情 |
|------|------|
| P0-1 模型不存在 | **已修复** — deepseek-chat 正常工作 |
| P0-2 中文编码损坏 | **已修复** — Plans/Roles/Config 中文正确 |
| P1-3 UI 模型选择器 | **已修复** — Tauri 端模型选择生效 |
| P1-4 Industries 404 | **根因定位** — SaaS 二进制未重编译 |
| P1-7 用量限额不一致 | **仍存在** — plan=100, usage.max=2000 |
| P1-8 用量未执行 | **仍存在** — input_tokens 6.77x 超限 |
| P2-9 Token 计数为零 | **仍存在** — 17 个任务中 5 个 tokens=0 |
| P2-10 Tauri Token 统计 | **仍存在** — 桌面端显示"总 Token: 0" |
---
## P0 CRITICAL
### P0-NEW-01: SaaS 运行二进制严重过期
- **现象**: 运行中的 zclaw-saas.exe 构建于 2026-04-11 22:38但代码自 2026-04-12 起有多项关键变更未反映到运行服务中
- **影响范围**:
- Industries API 全部 404路由在 04-12 添加到 main.rs
- Knowledge Phase A 功能不可用04-12 变更)
- 任何 04-12 之后提交的修复均未生效
- **证据**:
- 二进制修改时间: `2026-04-11 22:38:20`
- 代码最新影响 main.rs 的提交: `c3593d3 2026-04-12 18:36:05`
- `git log -- crates/zclaw-saas/src/main.rs` 确认有 2 个提交未编译
- **修复**: `cargo build -p zclaw-saas && 重启 SaaS 服务`
---
## P1 HIGH
### P1-04: Industries API 路由未注册(二进制过期导致)
- **现象**: `GET /api/v1/industries` 返回 HTTP 404
- **根因**: P0-NEW-01 — Industry 路由在 `5d1050b (2026-04-12)` 添加到 main.rs但二进制未重编译
- **影响**:
- Admin V2 行业配置页面空
- Tauri 账号编辑弹窗"授权行业"下拉框永久 loading
- 行业知识域/管家技能优先级不可用
- **代码验证**: `industry/mod.rs` 路由定义正确,`main.rs:363` `.merge()` 注册正确
- **修复**: 重编译 SaaS 二进制
### P1-07: 用量限额数据不一致
- **现象**: Plan 定义 `max_relay_requests_monthly=100`,但 usage 对象返回 `max_relay_requests=2000`
- **API 证据**:
```
GET /billing/plans → plan-free.limits.max_relay_requests_monthly = 100
GET /billing/subscription → usage.max_relay_requests = 2000
```
- **UI 影响**: Admin V2 计费管理页面 — 免费版卡片显示 "100 次/月",当前用量显示 "2,000"
- **影响**: 用户和 Admin 看到矛盾数据,计费系统不可信
### P1-08: 用量限制未执行
- **现象**: admin 账户 `input_tokens=3,386,978`,是 free plan 限额 500,000 的 **6.77 倍**,无任何拦截
- **影响**: 用户可无限使用超出计划限制的资源
- **修复方向**: 在 relay 请求前检查 usage 是否超限
---
## P2 MEDIUM
### P2-09: 29% Relay 任务 token 计数为零
- **现象**: 17 个已完成 relay 任务中 **5 个** input_tokens=0, output_tokens=0
- **证据**:
```
5b85b045... completed tokens=0/0
644134f4... completed tokens=0/0
25820499... completed tokens=0/0
a37669b0... completed tokens=0/0
539b26a8... completed tokens=0/0
```
- **修复方向**: 检查 relay 完成后 token 统计逻辑,某些路径可能跳过了 token 累加
### P2-10: Tauri 端 Token 统计为 0
- **现象**: 详情面板"用量统计"显示"总 Token: 0",但 SaaS relay 有真实 token 使用记录 (3,386,978 input + 197,420 output)
- **影响**: 桌面端用户无法看到自己的 token 消耗
- **修复方向**: Tauri 端应从 SaaS API 获取 usage 数据而非本地累计
### P2-14: Subscription 为 null
- **现象**: admin 账号的 `billing.subscription` 为 null使用默认 free plan
- **影响**: 无法区分"主动订阅"和"默认计划"
---
## P3 LOW
### P3-19: Admin API 密钥页面路由指向 ModelServices 组件
- **现象**: 侧边栏 "API 密钥" 按钮 (/api-keys) 加载了 ModelServices 组件,而非独立的 API 密钥管理页面
- **代码**: `admin-v2/src/router/index.tsx:29` 懒加载 `ModelServices` 用于 `api-keys` 路径
- **可能是设计如此**Provider 管理 = Key 池管理),但页面标题与内容不匹配
### P3-15: antd Modal destroyOnClose 废弃
- Admin V2 多个页面使用 `destroyOnClose`antd 新版应使用 `destroyOnHidden`
### P3-16: onSearch React DOM 属性警告
- 知识库页面 `Unknown event handler property onSearch`
---
## 已验证正常的功能
### SaaS 后端 API (27/30 正常)
| 模块 | 端点 | 状态 | 数据验证 |
|------|------|------|----------|
| Auth | login/refresh/me/password/totp-setup | ✅ | JWT+rotation 正常TOTP secret 生成正确 |
| Accounts | CRUD/搜索/状态切换 | ✅ | 30 个账号,分页正常 |
| Providers | CRUD | ✅ | 3 Provider (DeepSeek/Kimi/zhipu)Key 池正常 |
| Models | CRUD/列表 | ✅ | 3 模型 (deepseek-chat/GLM-4.7/kimi-for-coding) |
| **Relay Chat** | **流式+非流式** | **✅** | **核心链路正常,真实 LLM 响应** |
| Relay Tasks | 列表 | ✅ | 17 个真实任务 |
| Billing Plans | 列表 | ✅ | 3 计划,中文正确 |
| Billing Usage | 查询 | ✅ | 详细用量统计 |
| Roles | 列表 | ✅ | 3 角色,权限列表正确 |
| Agent Templates | 列表 | ✅ | 10 模板(含 4 行业) |
| Knowledge | CRUD/搜索 | ✅ | 6 分类/6 条目,搜索返回带分值结果 |
| Knowledge Analytics | overview | ✅ | 统计数据完整 |
| Config | items/analysis | ✅ | 62 配置项8 分类 |
| Dashboard Stats | 聚合 | ✅ | 30 账号/3 Provider/3 模型 |
| Operation Logs | 列表 | ✅ | 2,047 条日志 |
| Provider Keys | Key 池 | ✅ | RPM/TPM/cooldown 追踪正常 |
| Prompts | 列表 | ✅ | 3 内置提示词 |
| Scheduler | 任务列表 | ✅ | 路径正确 (/api/v1/scheduler/tasks) |
### Admin V2 管理后台 (14/16 正常)
| 页面 | 数据来源 | 交互验证 |
|------|----------|----------|
| 仪表盘 | ✅ API 实时数据 | 30 账号/3 Provider/3 模型/14 tokens 全部与 API 一致 |
| 计费管理 | ✅ Plans + Usage | 3 计划卡片正确,用量进度条准确 |
| 账号管理 | ✅ 30 账号 | 编辑弹窗/搜索/分页/状态切换全部正常 |
| 角色权限 | ✅ 3 角色 | 权限列表正确,模板 tab 为空(符合预期) |
| 模型服务 | ✅ 3 Provider | 展开 Provider 显示 Key 池和模型 |
| Agent 模板 | ✅ 10 模板 | 列表/筛选正常 |
| 知识库 | ✅ 6 分类/6 条目 | 5 个 tab 全部有数据 |
| 用量统计 | ✅ 30 用户统计 | 图表渲染正常 |
| 中转任务 | ✅ 9 任务 | 全部显示 completed |
| 操作日志 | ✅ 2,039 条 | 分页/筛选正常 |
| 系统配置 | ✅ 62 配置项 | 6 个 tab 分类清晰 |
| 提示词管理 | ✅ 3 提示词 | 列表正常 |
| 同步日志 | ✅ 空(符合预期) | 页面正常渲染 |
| 定时任务 | ✅ 空(符合预期) | 页面正常渲染 |
### Tauri 桌面端 (6/8 正常)
| 功能 | 状态 | 验证结果 |
|------|------|----------|
| Gateway 连接 | ✅ | saas-relay 模式http://127.0.0.1:8080 |
| 模型选择 | ✅ | deepseek-chat 正确匹配 SaaS 白名单 |
| 聊天发送/接收 | ✅ | 发送"你好"→ 收到"你好!很高兴为你服务" |
| 对话历史 | ✅ | 7 个对话114 条消息,时间戳正确 |
| 设置页面 | ✅ | 19 个设置页全部可访问Gateway 状态正确 |
| 简洁/专业模式 | ✅ | 切换按钮正常,管家快捷操作可见 |
| 用量统计 | ❌ | 总 Token 显示 0P2-10 |
| 行业下拉框 | ❌ | 编辑账号时"授权行业"永久 loadingP1-04 |
---
## 数据一致性交叉验证
| 验证项 | SaaS API | Admin V2 | Tauri | 一致? |
|--------|----------|----------|-------|-------|
| 账号总数 | 30 | 30 | - | ✅ |
| Provider 数 | 3 | 3 | 3 | ✅ |
| 模型数 | 3 | 3 | 3 | ✅ |
| Relay 请求数 | 561 | 553 | - | ✅ (差 8 = 测试期间新增) |
| Operation Logs | 2,047 | 2,039 | - | ✅ (差 8 = 并发写入) |
| 当前模型 | deepseek-chat | - | deepseek-chat | ✅ |
| Plan max_relay | 100 | 100 | - | ✅ |
| Usage max_relay | **2,000** | **2,000** | - | ❌ 与 Plan 不一致 |
---
## 测试环境信息
| 项目 | 值 |
|------|-----|
| SaaS 后端 | http://localhost:8080 (zclaw-saas.exe PID=10976, build 2026-04-11) |
| Admin V2 | http://localhost:5173 (Vite dev server) |
| Tauri Dev | http://localhost:1420 (saas-relay 模式) |
| PostgreSQL | localhost:5432/zclaw |
| Admin 账号 | admin / admin123 / super_admin |
| 截图位置 | `tests/screenshots/admin-*.png` |
---
## 修复优先级建议
1. **立即**: 重编译 SaaS 二进制 → 解决 P0-NEW-01 + P1-04
2. **发布前**: 修复 P1-07 (用量限额不一致) + P1-08 (用量未执行)
3. **发布后**: P2-09 (token 计数) + P2-10 (Tauri 统计) + P2-14 (subscription null)