docs: 同步全部项目文档至 Phase 2a 完成状态

- 架构设计文档:更新模块职责表(ws/contact 标记已完成)、路由架构、分层图
- 总体系统设计:联系人 API 扩展至 17 个、管理端 API 补充在线监控和好友管理
- Phase 2a 设计文档:状态标记为已完成
- API README:导航表 + 目录结构 + 联系人模块错误码
- 开发规范:新增 WebSocket 事件联动规范(第 8 节)
- 项目规则:新增「文档自动同步规则」,每个 Task 完成后自动检查更新文档

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-03-02 17:53:46 +08:00
parent a508a4cfbc
commit 8ec0261427
6 changed files with 218 additions and 81 deletions

View File

@@ -2,7 +2,7 @@
> **适用范围**EchoChat 项目全端Go 后端 + admin 管理端 + frontend 用户端)
> **创建日期**2026-03-02
> **最后更新**2026-03-02新增前后台 Token 隔离规范
> **最后更新**2026-03-02Phase 2a新增 WebSocket 事件联动规范 + 联系人模块错误处理
---
@@ -312,3 +312,40 @@ JWT Token 的 Claims 中包含 `client_type` 字段,用于:
- [ ] 权限不足时返回 403`ErrInsufficientPermission`
- [ ] 前端通过比较 `adminMaxLevel` `targetMaxLevel` 控制 UI 可见性
- [ ] 角色分配使用全量覆盖模式`SetUserRoles`非追加模式
---
## 8. WebSocket 事件联动规范
### 8.1 适用范围
仅前台用户端frontend使用 WebSocket 实时通讯管理端admin使用 REST 轮询
### 8.2 连接管理
- WebSocket 地址`ws(s)://host/ws?token=xxx`
- 认证方式URL Query 参数传递 JWT Token前台 frontend Token
- 心跳间隔30 ping/pong
- 断线重连指数退避1s 2s 4s 8s 30s max
### 8.3 事件命名规范
格式`{模块}.{对象}.{动作}`
| 事件 | 方向 | 说明 |
|------|------|------|
| `heartbeat` | 双向 | 心跳保活 |
| `notify.friend.request` | 服务端 客户端 | 收到好友申请 |
| `contact.request.accepted` | 服务端 客户端 | 好友申请被接受 |
| `user.status.online` | 服务端 客户端 | 好友上线 |
| `user.status.offline` | 服务端 客户端 | 好友下线 |
### 8.4 前端事件处理原则
1. **WebSocket Store 统一管理**连接状态事件监听消息发送由 `store/websocket.js` 管理
2. **业务 Store 订阅事件**各模块 Store `contact.js`通过 WebSocket Store 注册事件回调
3. **避免页面直接操作 WebSocket**页面组件通过 Store 间接与 WebSocket 交互
### 8.5 WebSocket 详细协议
> 完整事件协议见 `docs/api/frontend/websocket.md`