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

40 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 账号与团队
登录后可使用**云端空间**:个人空间「我的空间」与团队共享空间,数据保存在本机服务的 SQLite 数据库(`apps/server/data/opsxapi.db`),不上传任何第三方。
## 注册 / 登录
顶栏右上 **登录** 按钮打开弹窗:
- 注册只需 昵称 + 邮箱 + 密码(≥ 6 位);
- 登录态保存在本机,令牌失效会自动清除。
## 空间切换
登录后顶栏出现 **用户胶囊**(头像首字母 + 当前空间名 + 同步状态),点击弹出空间列表:
| 空间 | 说明 |
| --- | --- |
| 本地空间 | 未登录时默认;数据在浏览器 localStorage,不上云 |
| 我的空间 | 个人云端空间,注册即有;换浏览器 / 换设备登录即得同一份数据 |
| 团队 · ×× | 团队共享空间,成员读写同一份数据 |
- 首次切入空的云端空间时,会自动把**当前本地数据播种上去**;
- 在云端空间内的所有改动(接口、环境、测试用例、设置)**自动同步**(改动后约 1.5 秒),胶囊显示「已同步 / 同步中 / 同步失败」;
- 切回本地空间时恢复离开前的本地快照,两端互不覆盖;
- 同步策略为**后写覆盖**:多人同时编辑以最后一次保存为准。
## 团队管理
用户胶囊旁 **⋯** 菜单 → 团队管理:
- **新建团队**:创建后自动获得同名共享空间;
- **添加成员**:输入已注册成员邮箱(创建者可操作),成员登录后即可看到并切换到该团队空间。
## 数据与安全
- 密码加盐哈希后存储;令牌为随机 Bearer Token,可随时退出登录作废;
- 云端空间单份数据上限 20MB;
- 团队空间权限:全体成员可读写,仅创建者可管理成员;
- 不登录不影响任何本地功能。