Files
opsxapi/apps/server/internal/docs/content/20-account.md
T
logan aabd20bd75 账号与团队:SQLite 云端空间(个人 / 团队共享 + 自动同步)
- 服务端(Gin + modernc.org/sqlite,data/opsxapi.db WAL):
  - users/tokens/teams/team_members/workspaces 表;注册登录(加盐哈希 + Bearer 令牌)
  - /api:auth register/login/logout、me(用户+团队+空间)、teams CRUD/邀请成员、workspaces 读写(20MB 上限,成员鉴权)
- 前端:
  - account.ts 客户端 + store 账号态:登录/注册/登出/团队/空间切换
  - 顶栏账号区:未登录「登录」按钮;登录后用户胶囊(头像+空间名+已同步/同步中/失败)+ 空间切换菜单 + ⋯(立即同步/团队管理/退出)
  - 空间模型:本地(localStorage)与云端(SQLite)隔离,切云端空空间自动播种本地数据;云端改动 1.5s 去抖自动同步;切回本地恢复快照
  - 登录/注册弹窗 + 团队管理弹窗(建团队、邮箱邀请);vite 代理 /api;docs 新增「账号与团队」页
- 验证:curl E2E(注册/冲突 409/错误密码 401/团队共享写/越权 401)+ 浏览器全链路(注册→播种上云 17KB→云端编辑自动同步→本地快照隔离)
2026-09-18 11:42:34 +08:00

1.8 KiB
Raw Blame History

账号与团队

登录后可使用云端空间:个人空间「我的空间」与团队共享空间,数据保存在本机服务的 SQLite 数据库(apps/server/data/opsxapi.db),不上传任何第三方。

注册 / 登录

顶栏右上 登录 按钮打开弹窗:

  • 注册只需 昵称 + 邮箱 + 密码(≥ 6 位);
  • 登录态保存在本机,令牌失效会自动清除。

空间切换

登录后顶栏出现 用户胶囊(头像首字母 + 当前空间名 + 同步状态),点击弹出空间列表:

空间 说明
本地空间 未登录时默认;数据在浏览器 localStorage,不上云
我的空间 个人云端空间,注册即有;换浏览器 / 换设备登录即得同一份数据
团队 · ×× 团队共享空间,成员读写同一份数据
  • 首次切入空的云端空间时,会自动把当前本地数据播种上去;
  • 在云端空间内的所有改动(接口、环境、测试用例、设置)自动同步(改动后约 1.5 秒),胶囊显示「已同步 / 同步中 / 同步失败」;
  • 切回本地空间时恢复离开前的本地快照,两端互不覆盖;
  • 同步策略为后写覆盖:多人同时编辑以最后一次保存为准。

团队管理

用户胶囊旁 ⋯ 菜单 → 团队管理:

  • 新建团队:创建后自动获得同名共享空间;
  • 添加成员:输入已注册成员邮箱(创建者可操作),成员登录后即可看到并切换到该团队空间。

数据与安全

  • 密码加盐哈希后存储;令牌为随机 Bearer Token,可随时退出登录作废;
  • 云端空间单份数据上限 20MB;
  • 团队空间权限:全体成员可读写,仅创建者可管理成员;
  • 不登录不影响任何本地功能。