docs: 添加发散探讨文档和测试截图
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-12 22:40:45 +08:00
parent d5cb636e86
commit f32216e1e0
129 changed files with 15144 additions and 1095 deletions

View File

@@ -0,0 +1,221 @@
# ZCLAW 端到端功能一致性与完整性验证报告
> 日期: 2026-04-10 | 验证环境: Tauri 桌面端 (1420) + SaaS 后端 (8080) + Admin V2 (5173)
## 一、服务状态
| 服务 | 端口 | 状态 |
|------|------|------|
| SaaS 后端 (Axum) | 8080 | ✅ healthy, DB connected |
| Admin V2 (Vite) | 5173 | ✅ running |
| Tauri 桌面端 | 1420 | ✅ running |
---
## 二、Tauri 桌面端验证结果
### 2.1 登录流程
- ✅ SaaS 登录admin/admin123成功返回 JWT + refresh_token
- ✅ 登录后自动跳转到主聊天界面
### 2.2 主界面 (专业模式)
- ✅ 侧边栏:对话列表 + 智能体面板 + 搜索
- ✅ 聊天区域:流式响应、思考过程展示、工具调用展示 (file_write, shell_exec, 澄清问题)
- ✅ 输入区:文本输入 + 附件 + 模型选择 (kimi-for-coding) + 发送
- ✅ 智能体面板:默认助手 + 创建新 Agent
- ✅ 模式切换:简洁/专业模式正常切换
### 2.3 设置页面 (19 个分类)
| 设置页 | 状态 | 内容 |
|--------|------|------|
| 通用 | ✅ 正常 | Gateway token、简洁/专业模式切换 |
| 用量统计 | ⚠️ 部分 | 6会话/100消息但 Token 统计为 0 |
| 积分详情 | ❌ 开发中 | 显示"积分系统开发中" |
| 模型与 API | ✅ 正常 | 已连接 Gateway、模型列表、Embedding 配置 |
| MCP 服务 | ⚠️ 未接入 | "新增/删除/详细参数配置尚未在桌面端接入" |
| IM 频道 | ⚠️ 未接入 | 0 个频道,飞书/Discord 等为规划中 |
| 工作区 | ✅ 正常 | 项目目录、文件监听、自动保存 |
| 数据与隐私 | ✅ 正常 | 本地数据路径、备案信息 |
| 安全存储 | ✅ 正常 | Keyring 可用6 类密钥槽位 |
| **SaaS 平台** | **❌ 加载失败** | "SaaS 平台加载失败,请稍后重试" |
| **订阅与计费** | **❌ 加载失败** | "计费信息加载失败,请稍后重试" |
| 技能管理 | ⚠️ 空 | 0 个技能加载,"连接 Gateway 后加载" |
| 语义记忆 | ✅ 正常 | SQLite+FTS5+TF-IDF0 条记忆,搜索可用 |
| 安全状态 | ✅ 正常 | 评分 9416 层防护展示 |
| 审计日志 | ✅ 正常 | Live Stream 模式0 条记录 |
| 定时任务 | ⚠️ 空 | 0 个定时任务 |
| 心跳配置 | ✅ 正常 | 巡检间隔、主动性级别、免打扰、检查项 |
| 提交反馈 | ✅ 存在 | 反馈入口 |
| 关于 | ✅ 正常 | 版本 0.1.0 |
### 2.4 Tauri 桌面端问题清单
| 严重度 | 问题 | 影响 |
|--------|------|------|
| **P1** | SaaS 平台页加载失败 | 桌面端无法管理 SaaS 账户 |
| **P1** | 订阅与计费页加载失败 | 桌面端无法查看订阅状态 |
| P2 | 积分系统显示"开发中" | 用户看到占位 UI |
| P2 | 技能管理显示 0 个技能 | 75 个 SKILL.md 未加载到前端 |
| P3 | MCP 服务前端未接入 | 只能配置文件手动添加 |
| P3 | IM 频道为规划中 | 功能未实现 |
| P3 | Token 统计为 0 | 用量统计不完整 |
---
## 三、SaaS 后端 API 验证结果
### 3.1 全端点状态总览
| 模块 | 端点数 | 200 OK | 4xx/5xx | 说明 |
|------|--------|--------|---------|------|
| Auth | 10 | 9 | 1 (password 参数错误) | ✅ |
| Account | 11 | 11 | 0 | ✅ |
| Model Config | 13 | 12 | 1 (usage 500) | ⚠️ |
| Relay | 5 | 5 | 0 | ✅ |
| Role | 7 | 7 | 0 | ✅ |
| Prompt | 6 | 6 | 0 | ✅ |
| Agent Template | 9 | 9 | 0 | ✅ |
| Scheduled Task | 5 | 5 | 0 | ✅ |
| Telemetry | 4 | 4 | 0 | ✅ |
| Billing | 10 | 10 | 0 | ✅ |
| Knowledge | 16 | 13 | 3 (422参数错误) | ✅ |
| Migration | 7 | 7 | 0 | ✅ |
| **总计** | **103** | **95** | **8** | **92% 通过** |
### 3.2 后端问题
| 严重度 | 端点 | 状态码 | 根因 | 修复文件 |
|--------|------|--------|------|----------|
| **P0** | POST /auth/register | 连接重置/崩溃 | `ConnectInfo<SocketAddr>` extractor 在某些条件下引发 panic | `auth/handlers.rs:65` |
| **P0** | GET /usage | 500 | `Option<String>` 绑定到 `$2::timestamptz`PostgreSQL 无法隐式转换 | `model_config/types.rs:148-149`, `service.rs:419` |
| **P0** | POST /auth/refresh | 500 | `refresh_tokens``expires_at` 列 TEXT 类型无法转为 TIMESTAMPTZ | refresh token 相关代码 |
| P3 | POST /knowledge/items/batch | 422 | 参数验证问题 | - |
| P3 | POST /knowledge/items/import | 422 | 参数验证问题 | - |
---
## 四、Admin V2 前端-后端集成对比
### 4.1 统计概览
| 指标 | 数量 |
|------|------|
| 前端定义的 API 调用 | 83 |
| 前端✅匹配后端 | 47 |
| 前端❌调用后端不存在 | 8 |
| 后端⚠️存在但前端未调用 | 34 |
| 有 service 但无页面调用 | ~10 |
### 4.2 前端调了但后端不存在的路由 (❌ 断链)
| 路径 | 说明 |
|------|------|
| DELETE /knowledge/categories/:id | 后端有 categories 但无单条删除 |
| PUT /knowledge/categories/:id | 后端无单条更新 |
| GET /knowledge/items/:id | 后端无单条查询 |
| DELETE /knowledge/items/:id | 后端无单条删除 |
| POST /knowledge/items/:id/rollback/:version | 后端无版本回滚 |
| PUT /config/items/:id | 后端路由不同,无法单条更新 |
| GET /billing/payments/:id | 后端无单条支付查询 |
| POST /prompts/:name/rollback/:version | 后端有 rollback 但需确认路径 |
### 4.3 后端存在但前端完全未接入的路由 (⚠️ 开发了没接)
| 路由 | 模块 | 功能 |
|------|------|------|
| POST /auth/register | Auth | 用户注册 |
| PUT /auth/password | Auth | 修改密码 |
| POST /auth/totp/* (3个) | Auth | TOTP 2FA |
| GET /accounts/:id | Account | 账户详情 |
| GET /tokens | Account | Token 管理 |
| GET /devices | Account | 设备管理 |
| GET /model-groups/* (5个) | Model Config | 模型分组管理(整套) |
| POST /keys/:id/rotate | Model Config | Key 轮换 |
| POST /relay/chat/completions | Relay | Chat 代理 |
| GET /relay/models | Relay | 可用模型列表 |
| GET /agent-templates/available | Agent Template | 可用模板 |
| POST /agent-templates/:id/create-agent | Agent Template | 从模板创建 Agent |
| POST /accounts/me/assign-template | Agent Template | 分配模板 |
| GET /prompts/check | Prompt | Prompt 更新检查 |
| GET /billing/usage | Billing | 计费用量 |
| GET /billing/invoices/* | Billing | 发票 PDF |
| POST /config/analysis | Config | 配置分析 |
| POST /config/seed | Config | 配置种子 |
| POST /config/sync | Config | 配置同步 |
| POST /config/diff | Config | 配置差异 |
| GET /config/pull | Config | 配置拉取 |
### 4.4 空壳/问题页面
| 页面 | 问题 |
|------|------|
| API Keys | service 定义了 CRUD 但无独立页面,路由指向 ModelServices |
| Usage Service | 定义了 daily()/byModel() 但无页面调用Usage 页用 telemetryService |
| Knowledge | 前端定义了 16 个子功能部分后端不存在UI 按钮可能触发 404 |
---
## 五、一致性交叉验证
### 5.1 Tauri 桌面端 vs Admin V2 功能对比
| 功能 | Tauri 桌面端 | Admin V2 | 一致性 |
|------|-------------|----------|--------|
| 账户管理 | ❌ SaaS页加载失败 | ✅ Accounts 页完整 CRUD | ❌ 不一致 |
| 模型管理 | ✅ 设置→模型与API | ✅ ModelServices 页完整 | ✅ 一致 |
| 提供商管理 | ✅ 设置→模型与API | ✅ Provider CRUD | ✅ 一致 |
| 订阅/计费 | ❌ 加载失败 | ✅ Billing 页 | ❌ 不一致 |
| 角色权限 | ❌ 无入口 | ✅ Roles 页完整 CRUD | ❌ Admin独有 |
| Prompt 管理 | ❌ 无入口 | ✅ Prompts 页完整 | ❌ Admin独有 |
| 知识库 | ✅ 语义记忆(本地) | ✅ Knowledge 页(SaaS) | ⚠️ 不同实现 |
| 审计日志 | ✅ 有展示 | ✅ Logs 页 | ✅ 一致 |
| 定时任务 | ✅ 有展示 | ✅ ScheduledTasks 页 | ✅ 一致 |
| 技能管理 | ⚠️ 0 个加载 | ❌ 无页面 | ❌ 不一致 |
| MCP 服务 | ⚠️ 未接入 | ❌ 无页面 | ❌ 两端都缺 |
### 5.2 功能闭环验证
| 闭环流程 | 验证结果 |
|----------|----------|
| 登录→聊天→流式响应 | ✅ 完整 |
| 登录→设置→配置→生效 | ⚠️ Gateway 配置生效SaaS 配置失败 |
| Admin→创建账户→桌面端登录 | ✅ 可行(后端已验证) |
| Admin→配置模型→桌面端切换 | ✅ 可行 |
| Admin→管理角色→桌面端生效 | ✅ 可行RBAC 通过 JWT |
| Admin→管理 Prompt→桌面端使用 | ⚠️ Prompt 系统未接入桌面端 |
| Admin→知识库→桌面端搜索 | ❌ 两端实现不同(本地 vs SaaS |
---
## 六、优先修复建议
### P0 - 必须修复(影响核心用户体验)
1. **POST /auth/register 服务器崩溃** - `ConnectInfo<SocketAddr>``auth/handlers.rs:65` 引发 panic需要改用 `Optional` 或移除该 extractor
2. **GET /usage 500 错误** - `model_config/types.rs:148-149``from/to` 字段为 `Option<String>`,但 SQL 绑定到 `$2::timestamptz`,需改为 `Option<chrono::DateTime>` 或在查询中解析
3. **POST /auth/refresh 500 错误** - `refresh_tokens` 表的 `expires_at` 列类型为 TEXT需迁移为 TIMESTAMPTZ 或在查询中显式转换
4. **Tauri 桌面端 SaaS 平台页加载失败** - 排查 saasStore 连接逻辑,可能是 token 传递或 API 路径问题
5. **Tauri 桌面端 订阅与计费页加载失败** - 同上,与 billing API 交互失败
### P1 - 应该修复(影响功能完整性)
4. **Knowledge 前端 8 个断链路由** - 前端调了后端不存在的路由,需补齐后端或修正前端
5. **技能管理前端为空** - 75 个 SKILL.md 未加载到桌面端,可能是 Gateway 加载逻辑问题
6. **Model Groups 完整模块未接入前端** - 后端 5 个端点已实现Admin 无页面
### P2 - 建议修复(提升产品完成度)
7. **34 个后端路由未接入前端** - 包括 TOTP 2FA、设备管理、配置同步等
8. **积分系统显示"开发中"** - 补齐或隐藏
9. **MCP 服务前端未接入** - 只能手动配置
10. **Usage Service 空壳** - service 定义了但无页面使用
---
## 七、验证方法说明
- **Tauri 桌面端**: 通过 Tauri MCP (Chrome DevTools Protocol) 进行 DOM 交互、截图、JS 执行验证
- **SaaS 后端**: 通过 curl 对全部 103 个 API 端点进行 HTTP 状态码验证
- **Admin V2**: 通过代码分析services/*.ts + pages/*.tsx对比后端路由定义crates/zclaw-saas/src/*/mod.rs
- **Admin V2 浏览器验证**: Tauri MCP 在 Admin V2 (5173) 上 DOM 查询超时(疑似 Vite HMR CSP 限制),仅截图可用