SaaS + Tauri 联合调试测试报告
ARCHIVED — 此报告已过时
本报告记录 2026-03-28 的联合调试结果。相关修复已全部合并。
请参考最新文档 → README.md | 00-saas-overview.md
测试日期: 2026-03-28 (原文标注有误)
测试环境: Windows 11 + PostgreSQL 17 + Rust SaaS @ 127.0.0.1:8080
测试范围: SaaS 后端 API + Tauri 桌面端集成层 + Admin 前端
一、测试执行摘要
| 阶段 |
用例数 |
通过 |
失败 |
发现 |
状态 |
| P0 安全 |
2 |
2 |
0 |
0 |
✅ 已修复验证 |
| A 类功能 |
15 |
13 |
1 |
1 |
✅ models 已修复 |
| B 类数据 |
5 |
3 |
1 |
1 |
⚠ 部分验证 |
| C 类流程 |
5 |
N/A |
N/A |
N/A |
⏸ 服务中断 |
| D 类异常 |
7 |
N/A |
N/A |
N/A |
⚸ 服务中断 |
| Admin 专项 |
2 |
2 |
0 |
0 |
✅ 已修复 |
总计: 36 个测试用例, 20 通过, 2 失败, 2 新发现, 12 未执行
二、已确认通过的测试 (20/36)
P0 安全修复 — 全部通过 ✅
| ID |
测试项 |
结果 |
详情 |
| T-CRIT-01 |
sync_config 权限检查 |
PASS |
user 角色 → 403 "权限不足: 需要 config:write 权限" |
| T-CRIT-02 |
/api/health 端点 |
PASS |
返回 "ok", HTTP 200 |
A 类功能模块 — 13/15 通过
| ID |
测试项 |
结果 |
详情 |
| A-01 |
用户注册 |
PASS |
201 Created, 返回完整 AccountPublic |
| A-01b |
重复注册 |
PASS |
409 CONFLICT |
| A-02 |
正确密码登录 |
PASS |
200 + JWT token + account |
| A-02b |
错误密码登录 |
PASS |
401 AUTH_ERROR |
| A-02c |
GET /auth/me |
PASS |
返回完整用户信息 |
| A-02d |
Token 刷新 |
PASS |
200 + 新 JWT token |
| A-04a |
user 创建 Provider |
PASS |
403 "权限不足: 需要 provider:manage 权限" |
| A-04b |
GET /models |
FAIL→FIXED |
原 500 (SQL参数错误), → 修复后 200 |
| A-05a |
设备注册 |
PASS |
200 + UPSERT 语义正确 |
| A-05b |
重复设备注册 |
PASS |
200, 不重复创建 |
| A-05c |
设备心跳 |
PASS |
200 |
| A-05d |
设备列表 |
PASS |
返回注册的设备 |
| A-06a |
密码修改 |
PASS |
200 + 旧密码失效验证 |
| A-06b |
错误旧密码 |
PASS |
401 AUTH_ERROR |
| A-07 |
API Token 创建/认证 |
PASS |
zclaw_ 前缀 token, /me 正常 |
B 类数据测试 — 3/5 通过
| ID |
测试项 |
结果 |
详情 |
| B-01 |
Config seed |
PASS |
创建 13 个默认配置项 |
| B-02a |
Config diff |
PASS |
返回 conflict 比对正确 |
| B-02b |
Config sync push |
PASS |
返回 {updated, created, skipped} |
B-02c |
created 计数修复 |
FIXED |
原 created=0 → 修复后 push 新 key 时 created=1 |
| B-03 |
GET /models |
FAIL→FIXED |
SQL 参数绑定错误 500 → 已修复 |
Admin 专项 — 2/2 通过
| ID |
测试项 |
结果 |
详情 |
| E-01 |
权限过滤逻辑 |
PASS |
已修复: 基于 permissions 数组过滤 |
| E-02 |
分页连接 API |
PASS |
已确认 5 个页面均传递分页参数 |
三、发现并修复的 Bug 汇总
已修复 (5 项)
新发现 (2 项)
| # |
严重性 |
问题 |
详情 |
| 6 |
LOW |
中文 display_name JSON 解析失败 |
注册时 display_name 含中文字符报 "invalid unicode code point", |
四、未执行的测试 (12 项)
服务在测试过程中断(环境限制),以下测试用例留待下次执行:
| 阶段 |
未执行项 |
| B 类 |
Relay 中转流式/非流式、错误码映射、Token 自动刷新 |
| C 类 |
新用户完整旅程、Admin 管理流程、TOTP 2FA、配置迁移向导、多设备管理 |
| D 类 |
断网恢复、Token 过期、上游异常、并发竞争、SSRF 防护、限流、输入验证 |
五、修复的代码变更清单
1. crates/zclaw-saas/src/migration/handlers.rs
2. crates/zclaw-saas/src/model_config/service.rs
3. crates/zclaw-saas/src/migration/service.rs
4. admin/src/app/(dashboard)/layout.tsx
六、遗留问题与建议
P0 — 需立即修复
无(CRITICAL 已修复)
P1 — 功能缺陷
| # |
问题 |
建议 |
| P1-1 |
account_api_keys 未被 Relay 消费 |
Relay handler 查找用户级 Key,回退到 provider 级 |
| P1-2 |
Config 5 端点缺审计日志 |
添加 log_operation() 调用 |
| P1-3 |
Admin 前端缺路由守卫 |
添加 AuthGuard 组件 |
P2 — 代码质量
| # |
问题 |
建议 |
| P2-1 |
6 个端点缺 OpenAPI 文档 |
补充 #[utoipa::path] |
| P2-2 |
设备清理 SQL 类型不匹配 |
last_seen_at 字段类型修正 |
| P2-3 |
中文 display_name JSON 解析 |
UTF-8 编码处理 |
| P2-4 |
dashboard_stats 7 次串行查询 |
合并为单次 SQL |
| P2-5 |
computeConfigDiff/syncConfig 未调用 |
统一迁移向导调用路径 |