Files
zclaw_openfang/docs/features/08-saas-platform/00-saas-overview.md
iven 44256a511c feat: 增强SaaS后端功能与安全性
refactor: 重构数据库连接使用PostgreSQL替代SQLite
feat(auth): 增加JWT验证的audience和issuer检查
feat(crypto): 添加AES-256-GCM字段加密支持
feat(api): 集成utoipa实现OpenAPI文档
fix(admin): 修复配置项表单验证逻辑
style: 统一代码格式与类型定义
docs: 更新技术栈文档说明PostgreSQL
2026-03-31 00:12:53 +08:00

5.5 KiB

ZCLAW SaaS 平台 — 总览

最后更新: 2026-03-27 | 实施状态: Phase 1-4 + P2 全部完成

架构概述

ZCLAW SaaS 平台为桌面端用户提供云端能力,包括模型中转、账号管理、配置同步和团队协作。

桌面端 (Tauri/React)
    │
    ├── Mode A: Tauri Kernel (本地直连)
    ├── Mode B: Gateway WebSocket
    └── Mode C: SaaS Cloud ──→ Rust/Axum 后端 ──→ 上游 LLM Provider
                                │
                                ├── Admin Web (Next.js 管理后台)
                                └── PostgreSQL (数据持久化)

技术栈

层级 技术 说明
后端 Rust + Axum + sqlx + PostgreSQL JWT + API Token 双认证
Admin Next.js 14 + shadcn/ui + Tailwind 暗色 OLED 主题
桌面端 React 18 + Zustand + TypeScript saas-client.ts HTTP 通信
安全 argon2 + TOTP 2FA + RBAC 速率限制 + 操作审计

功能模块

模块 完成度 核心能力
认证 (Auth) 100% JWT + API Token + 密码修改 + /me + TOTP 2FA
账号 (Account) 100% CRUD + 角色管理 + 自角色限制 + 设备管理
模型配置 (Model Config) 95% Provider/Model/Key CRUD + 用量记录
中转 (Relay) 95% SSE 流式 + 任务记录 + 指数退避重试 + Admin 重试
配置迁移 (Migration) 90% CRUD + 同步日志 + push/merge + diff
Admin UI 95% 10 个 CRUD 页面 + Dashboard
桌面端集成 95% 登录/注册/状态/密码/设备/离线/迁移向导

API 端点一览

公开端点 (无需认证)

  • POST /api/v1/auth/register — 注册
  • POST /api/v1/auth/login — 登录
  • GET /api/health — 健康检查

认证端点

  • GET /api/v1/auth/me — 当前用户信息
  • POST /api/v1/auth/refresh — 刷新 Token
  • PUT /api/v1/auth/password — 修改密码

TOTP 双因素认证 (P2)

  • POST /api/v1/auth/totp/setup — 生成 TOTP 密钥,返回 otpauth:// URI
  • POST /api/v1/auth/totp/verify — 验证 TOTP 码并启用 2FA
  • POST /api/v1/auth/totp/disable — 禁用 2FA (需密码确认)

账号管理

  • GET /api/v1/accounts — 列出账号 (admin)
  • GET /api/v1/accounts/:id — 获取账号
  • PUT /api/v1/accounts/:id — 更新账号
  • PATCH /api/v1/accounts/:id/status — 更新状态 (admin)
  • GET /api/v1/stats/dashboard — 仪表盘统计 (admin)

API Token

  • GET /api/v1/tokens — 列出 Token
  • POST /api/v1/tokens — 创建 Token
  • DELETE /api/v1/tokens/:id — 撤销 Token

设备管理

  • POST /api/v1/devices/register — 注册/更新设备 (UPSERT)
  • POST /api/v1/devices/heartbeat — 设备心跳
  • GET /api/v1/devices — 列出设备

模型配置

  • GET/POST /api/v1/providers — Provider CRUD
  • GET/POST/PUT/DELETE /api/v1/providers/:id — 单个 Provider
  • GET/POST /api/v1/models — Model CRUD
  • GET/POST/PUT/DELETE /api/v1/models/:id — 单个 Model
  • GET/POST/DELETE /api/v1/keys — API Key CRUD

中转 (Relay)

  • GET /api/v1/relay/models — 可用中转模型
  • POST /api/v1/relay/chat/completions — 聊天中转 (SSE/JSON)
  • GET /api/v1/relay/tasks — 中转任务列表
  • GET /api/v1/relay/tasks/:id — 获取单个任务
  • POST /api/v1/relay/tasks/:id/retry — 重试失败任务 (admin)

配置

  • GET /api/v1/config/items — 列出配置项
  • POST /api/v1/config/items — 创建配置项
  • GET /api/v1/config/items/:id — 获取配置项
  • PUT /api/v1/config/items/:id — 更新配置项 (admin)
  • DELETE /api/v1/config/items/:id — 删除配置项 (admin)
  • GET /api/v1/config/analysis — 配置分析
  • POST /api/v1/config/seed — 种子配置 (admin)
  • POST /api/v1/config/sync — 配置同步 (push/merge)
  • POST /api/v1/config/diff — 配置差异对比 (只读)
  • GET /api/v1/config/sync-logs — 同步日志

审计

  • GET /api/v1/logs/operations — 操作日志 (admin)
  • GET /api/v1/usage — 用量统计

关键文件索引

后端 (crates/zclaw-saas/)

文件 职责
src/main.rs 服务启动 + ConnectInfo 注入
src/db.rs 数据库初始化 + Schema + Admin 引导
src/state.rs AppState (DB + Config)
src/config.rs 配置结构体
src/error.rs SaasError 枚举 + IntoResponse
src/middleware.rs 速率限制中间件
src/auth/mod.rs JWT + API Token 中间件 + 路由
src/auth/handlers.rs 登录/注册/刷新/me/密码 (含 TOTP 登录验证)
src/auth/totp.rs TOTP 2FA (setup/verify/disable)
src/auth/types.rs AuthContext + Request/Response 类型
src/account/handlers.rs 账号 CRUD + Dashboard + 设备
src/model_config/handlers.rs Provider/Model/Key CRUD
src/relay/handlers.rs + service.rs SSE 中转 + 任务管理 + 指数退避重试
src/migration/handlers.rs + service.rs 配置 CRUD + 同步

Admin (admin/)

文件 职责
src/lib/api-client.ts 类型化 HTTP 客户端
src/lib/auth.ts JWT 管理
src/app/(dashboard)/ 10 个 CRUD 页面

桌面端 (desktop/src/)

文件 职责
lib/saas-client.ts SaaS HTTP 客户端 (重试 + 离线检测)
store/saasStore.ts SaaS 状态 (登录/设备/心跳)
components/SaaS/SaaSLogin.tsx 登录/注册 UI
components/SaaS/SaaSStatus.tsx 连接状态 + 可用模型
components/SaaS/SaaSSettings.tsx 设置页 (密码/迁移)
components/SaaS/ConfigMigrationWizard.tsx 3 步配置迁移向导