diff --git a/README.md b/README.md index 27db38d..96697b0 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ npm run dev | 整体设计方案 | [docs/plans/2026-02-27-echochat-system-design.md](docs/plans/2026-02-27-echochat-system-design.md) | 系统完整设计方案 | | 第一阶段实施计划 | [docs/plans/2026-02-27-phase1-foundation-and-auth.md](docs/plans/2026-02-27-phase1-foundation-and-auth.md) | 基础设施+用户体系实施步骤 | | 系统架构文档 | [docs/architecture/system-architecture.md](docs/architecture/system-architecture.md) | 架构分层与技术选型 | -| API 接口文档 | [docs/api/](docs/api/) | 按模块拆分的 REST API + WebSocket 事件定义 | +| API 接口文档 | [docs/api/](docs/api/) | 按端+模块拆分的 REST API + WebSocket 事件定义 | --- diff --git a/docs/api/README.md b/docs/api/README.md index 8d76c15..fe070b1 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -1,6 +1,6 @@ # EchoChat API 接口文档 -> 本目录包含 EchoChat 系统所有接口定义,按功能模块拆分为独立文档,便于维护和查阅。 +> 本目录包含 EchoChat 系统所有接口定义,按**端 + 功能模块**两级目录组织,便于维护和查阅。 > 架构设计见 `docs/architecture/system-architecture.md` > 完整设计方案见 `docs/plans/2026-02-27-echochat-system-design.md` @@ -8,15 +8,30 @@ ## 文档导航 +### 前台用户端 (`frontend/`) + | 文档 | 模块 | 说明 | |------|------|------| -| [auth.md](auth.md) | 认证模块 | 用户注册、登录、Token 管理、个人信息 | -| [contact.md](contact.md) | 联系人模块 | 好友管理、好友分组 | -| [im.md](im.md) | 即时通讯模块 | 会话管理、消息历史、群聊管理 | -| [meeting.md](meeting.md) | 会议模块 | 即时会议、预约会议、加入/离开会议 | -| [notify.md](notify.md) | 通知模块 | 通知列表、已读管理 | -| [admin.md](admin.md) | 后台管理模块 | 用户管理、会议监控、系统配置、操作日志 | -| [websocket.md](websocket.md) | WebSocket 协议 | 实时消息、会议信令、在线状态事件 | +| [frontend/auth.md](frontend/auth.md) | 用户认证 | 注册、登录、Token 刷新、个人信息管理 | +| [frontend/contact.md](frontend/contact.md) | 联系人 | 好友申请/管理、好友分组 | +| [frontend/im.md](frontend/im.md) | 即时通讯 | 会话列表、消息历史、群聊创建与管理 | +| [frontend/meeting.md](frontend/meeting.md) | 会议 | 即时会议、预约会议、加入/离开、会议列表 | +| [frontend/notify.md](frontend/notify.md) | 通知 | 通知列表、标记已读 | + +### 后台管理端 (`admin/`) + +| 文档 | 模块 | 说明 | +|------|------|------| +| [admin/auth.md](admin/auth.md) | 管理员认证 | 管理员登录(验证 admin 角色) | +| [admin/user.md](admin/user.md) | 用户管理 | 用户列表/详情、状态管理、角色分配、创建用户 | +| [admin/meeting.md](admin/meeting.md) | 会议管理 | 会议列表/详情、强制结束、会议统计 | +| [admin/system.md](admin/system.md) | 系统管理 | 仪表盘数据、操作日志、系统配置 | + +### 跨端通用 + +| 文档 | 说明 | +|------|------| +| [websocket.md](websocket.md) | WebSocket 实时事件协议(IM 消息、会议信令、在线状态) | --- @@ -147,7 +162,27 @@ yyyy-MM-dd HH:mm:ss ## 文档维护规则 -1. **新增接口时**:在对应模块文档中追加,保持格式一致 +1. **新增接口时**:在对应端+模块的文档中追加,保持格式一致 2. **接口变更时**:同步更新文档,必要时在接口描述中标注版本信息 -3. **新增模块时**:创建新的模块文档,在本 README 导航表中添加链接 -4. **错误码新增时**:在本文档的错误码定义中追加,保持各模块错误码区间不重叠 +3. **新增模块时**:在对应端目录下创建新文档,在本 README 导航表中添加链接 +4. **新增端时**:创建新的端目录(如 `open/` 开放 API),在导航中添加新分区 +5. **错误码新增时**:在本文档的错误码定义中追加,保持各模块错误码区间不重叠 + +### 目录结构 + +``` +docs/api/ +├── README.md # 通用规范(本文件) +├── frontend/ # 前台用户端 API +│ ├── auth.md # 用户认证 +│ ├── contact.md # 联系人管理 +│ ├── im.md # 即时通讯 +│ ├── meeting.md # 会议 +│ └── notify.md # 通知 +├── admin/ # 后台管理端 API +│ ├── auth.md # 管理员认证 +│ ├── user.md # 用户管理 +│ ├── meeting.md # 会议管理 +│ └── system.md # 系统管理 +└── websocket.md # WebSocket 事件协议 +``` diff --git a/docs/api/admin.md b/docs/api/admin.md deleted file mode 100644 index 9919358..0000000 --- a/docs/api/admin.md +++ /dev/null @@ -1,280 +0,0 @@ -# 后台管理模块 API (Admin) - -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) -> 以下所有接口(除管理员登录外)均需要 **JWT 认证 + admin/super_admin 角色** - ---- - -## 接口列表 - -### 认证 - -| 方法 | 路径 | 权限 | 说明 | -|------|------|------|------| -| POST | /api/v1/admin/auth/login | 公开 | 管理员登录 | - -### 用户管理 - -| 方法 | 路径 | 权限 | 说明 | -|------|------|------|------| -| GET | /api/v1/admin/users | admin | 获取用户列表 | -| GET | /api/v1/admin/users/:id | admin | 获取用户详情 | -| PUT | /api/v1/admin/users/:id/status | admin | 更新用户状态 | -| PUT | /api/v1/admin/users/:id/role | super_admin | 分配用户角色 | -| POST | /api/v1/admin/users | admin | 管理员创建用户 | -| GET | /api/v1/admin/users/:id/meetings | admin | 获取用户会议记录 | - -### 会议管理 - -| 方法 | 路径 | 权限 | 说明 | -|------|------|------|------| -| GET | /api/v1/admin/meetings | admin | 获取会议列表 | -| GET | /api/v1/admin/meetings/:id | admin | 获取会议详情 | -| PUT | /api/v1/admin/meetings/:id/close | admin | 强制结束会议 | -| GET | /api/v1/admin/meetings/stats | admin | 获取会议统计 | - -### 系统管理 - -| 方法 | 路径 | 权限 | 说明 | -|------|------|------|------| -| GET | /api/v1/admin/dashboard | admin | 获取仪表盘数据 | -| GET | /api/v1/admin/logs | admin | 获取操作日志 | -| GET | /api/v1/admin/system/config | super_admin | 获取系统配置 | -| PUT | /api/v1/admin/system/config | super_admin | 更新系统配置 | - ---- - -## 认证 - -### 1. 管理员登录 - -`POST /api/v1/admin/auth/login` - -**权限:** 公开 - -**请求参数:** 与用户登录相同 - -**说明:** 登录后会额外验证用户是否拥有 admin 或 super_admin 角色,如果没有对应角色则返回 1003(权限不足)。 - ---- - -## 用户管理 - -### 2. 获取用户列表 - -`GET /api/v1/admin/users` - -**权限:** admin - -**查询参数:** - -| 参数 | 类型 | 默认值 | 说明 | -|------|------|--------|------| -| keyword | string | 无 | 搜索关键词(匹配用户名/邮箱/昵称) | -| status | int | 无 | 按状态筛选:1=正常,2=禁用,3=注销 | -| role | string | 无 | 按角色筛选:user / admin / super_admin | -| page | int | 1 | 页码 | -| page_size | int | 20 | 每页数量 | - ---- - -### 3. 获取用户详情 - -`GET /api/v1/admin/users/:id` - -**权限:** admin - -**成功响应:** -```json -{ - "code": 0, - "message": "ok", - "data": { - "id": 1, - "username": "zhangsan", - "email": "zhangsan@example.com", - "nickname": "张三", - "avatar": "https://...", - "gender": 1, - "phone": "13800138000", - "status": 1, - "roles": ["user"], - "last_login_at": "2026-02-27 10:00:00", - "last_login_ip": "192.168.1.100", - "created_at": "2026-02-20 08:00:00" - } -} -``` - ---- - -### 4. 更新用户状态 - -`PUT /api/v1/admin/users/:id/status` - -**权限:** admin - -**请求参数:** - -| 字段 | 类型 | 必填 | 说明 | -|------|------|------|------| -| status | int | 是 | 目标状态:1=正常(启用),2=禁用 | - -**说明:** 禁用用户后,该用户的所有活跃 Token 将被清除,正在进行的 WebSocket 连接将被断开。 - ---- - -### 5. 分配用户角色 - -`PUT /api/v1/admin/users/:id/role` - -**权限:** super_admin - -**请求参数:** - -| 字段 | 类型 | 必填 | 说明 | -|------|------|------|------| -| role_code | string | 是 | 角色代码:user / admin / super_admin | - ---- - -### 6. 管理员创建用户 - -`POST /api/v1/admin/users` - -**权限:** admin - -**请求参数:** 同用户注册接口,额外支持: - -| 字段 | 类型 | 必填 | 说明 | -|------|------|------|------| -| role_code | string | 否 | 指定角色,默认为 user | - ---- - -### 7. 获取用户会议记录 - -`GET /api/v1/admin/users/:id/meetings` - -**权限:** admin - -**查询参数:** - -| 参数 | 类型 | 默认值 | 说明 | -|------|------|--------|------| -| status | string | 无 | ongoing=进行中,upcoming=即将开始,ended=已结束 | -| page | int | 1 | 页码 | -| page_size | int | 20 | 每页数量 | - ---- - -## 会议管理 - -### 8. 获取会议列表 - -`GET /api/v1/admin/meetings` - -**权限:** admin - -**查询参数:** 支持按 status、type、keyword(会议标题)筛选,支持分页 - ---- - -### 9. 获取会议详情 - -`GET /api/v1/admin/meetings/:id` - -**权限:** admin - ---- - -### 10. 强制结束会议 - -`PUT /api/v1/admin/meetings/:id/close` - -**权限:** admin - -**说明:** 强制结束后,所有参会者将收到会议结束通知,所有媒体资源将被回收。操作将记录到管理日志。 - ---- - -### 11. 获取会议统计 - -`GET /api/v1/admin/meetings/stats` - -**权限:** admin - -**成功响应:** -```json -{ - "code": 0, - "message": "ok", - "data": { - "total_meetings": 1500, - "ongoing_meetings": 5, - "today_meetings": 23, - "total_participants": 8500, - "avg_duration": 1800 - } -} -``` - ---- - -## 系统管理 - -### 12. 获取仪表盘数据 - -`GET /api/v1/admin/dashboard` - -**权限:** admin - -**成功响应:** -```json -{ - "code": 0, - "message": "ok", - "data": { - "total_users": 1200, - "online_users": 85, - "today_new_users": 12, - "ongoing_meetings": 5, - "today_meetings": 23, - "today_messages": 5600 - } -} -``` - ---- - -### 13. 获取操作日志 - -`GET /api/v1/admin/logs` - -**权限:** admin - -**查询参数:** - -| 参数 | 类型 | 默认值 | 说明 | -|------|------|--------|------| -| module | string | 无 | 按模块筛选 | -| action | string | 无 | 按操作类型筛选 | -| admin_id | int | 无 | 按操作管理员筛选 | -| page | int | 1 | 页码 | -| page_size | int | 20 | 每页数量 | - ---- - -### 14. 获取系统配置 - -`GET /api/v1/admin/system/config` - -**权限:** super_admin - ---- - -### 15. 更新系统配置 - -`PUT /api/v1/admin/system/config` - -**权限:** super_admin diff --git a/docs/api/admin/auth.md b/docs/api/admin/auth.md new file mode 100644 index 0000000..a7dfdf1 --- /dev/null +++ b/docs/api/admin/auth.md @@ -0,0 +1,32 @@ +# 管理端 — 认证 API + +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) + +--- + +## 接口列表 + +| 方法 | 路径 | 权限 | 说明 | +|------|------|------|------| +| POST | /api/v1/admin/auth/login | 公开 | 管理员登录 | + +--- + +## 1. 管理员登录 + +`POST /api/v1/admin/auth/login` + +**权限:** 公开 + +**请求参数:** 与前台用户登录接口格式一致 + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| account | string | 是 | 用户名或邮箱 | +| password | string | 是 | 登录密码 | + +**说明:** 登录后会额外验证用户是否拥有 admin 或 super_admin 角色,如果没有对应角色则返回 1003(权限不足)。管理员与普通用户共用 `auth_users` 表,通过角色区分权限。 + +**成功响应:** 与前台登录接口返回格式一致,包含 token、refresh_token、用户信息等。 + +**可能的错误码:** 1001, 1003, 2003, 2004 diff --git a/docs/api/admin/meeting.md b/docs/api/admin/meeting.md new file mode 100644 index 0000000..0c7de1e --- /dev/null +++ b/docs/api/admin/meeting.md @@ -0,0 +1,86 @@ +# 管理端 — 会议管理 API + +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 以下所有接口均需要 **JWT 认证 + admin/super_admin 角色** + +--- + +## 接口列表 + +| 方法 | 路径 | 权限 | 说明 | +|------|------|------|------| +| GET | /api/v1/admin/meetings | admin | 获取会议列表 | +| GET | /api/v1/admin/meetings/:id | admin | 获取会议详情 | +| PUT | /api/v1/admin/meetings/:id/close | admin | 强制结束会议 | +| GET | /api/v1/admin/meetings/stats | admin | 获取会议统计 | + +--- + +## 1. 获取会议列表 + +`GET /api/v1/admin/meetings` + +**权限:** admin + +**查询参数:** + +| 参数 | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| status | int | 无 | 按状态筛选:0=未开始,1=进行中,2=已结束 | +| type | int | 无 | 按类型筛选:1=即时会议,2=预约会议 | +| keyword | string | 无 | 搜索关键词(匹配会议标题) | +| page | int | 1 | 页码 | +| page_size | int | 20 | 每页数量 | + +--- + +## 2. 获取会议详情 + +`GET /api/v1/admin/meetings/:id` + +**权限:** admin + +**说明:** 返回会议完整信息,包括参与者列表、会议设置、时长统计等。 + +--- + +## 3. 强制结束会议 + +`PUT /api/v1/admin/meetings/:id/close` + +**权限:** admin + +**说明:** 强制结束后,所有参会者将收到会议结束通知,所有媒体资源将被回收。操作将记录到管理日志(`admin_operation_logs` 表)。 + +--- + +## 4. 获取会议统计 + +`GET /api/v1/admin/meetings/stats` + +**权限:** admin + +**成功响应:** +```json +{ + "code": 0, + "message": "ok", + "data": { + "total_meetings": 1500, + "ongoing_meetings": 5, + "today_meetings": 23, + "total_participants": 8500, + "avg_duration": 1800 + } +} +``` + +**字段说明:** + +| 字段 | 类型 | 说明 | +|------|------|------| +| total_meetings | int | 历史会议总数 | +| ongoing_meetings | int | 当前进行中的会议数 | +| today_meetings | int | 今日创建的会议数 | +| total_participants | int | 历史累计参会人次 | +| avg_duration | int | 平均会议时长(秒) | diff --git a/docs/api/admin/system.md b/docs/api/admin/system.md new file mode 100644 index 0000000..acd3be7 --- /dev/null +++ b/docs/api/admin/system.md @@ -0,0 +1,92 @@ +# 管理端 — 系统管理 API + +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 以下所有接口均需要 **JWT 认证 + admin/super_admin 角色** + +--- + +## 接口列表 + +| 方法 | 路径 | 权限 | 说明 | +|------|------|------|------| +| GET | /api/v1/admin/dashboard | admin | 获取仪表盘数据 | +| GET | /api/v1/admin/logs | admin | 获取操作日志 | +| GET | /api/v1/admin/system/config | super_admin | 获取系统配置 | +| PUT | /api/v1/admin/system/config | super_admin | 更新系统配置 | + +--- + +## 1. 获取仪表盘数据 + +`GET /api/v1/admin/dashboard` + +**权限:** admin + +**说明:** 返回系统核心指标概览,用于后台管理端首页展示。 + +**成功响应:** +```json +{ + "code": 0, + "message": "ok", + "data": { + "total_users": 1200, + "online_users": 85, + "today_new_users": 12, + "ongoing_meetings": 5, + "today_meetings": 23, + "today_messages": 5600 + } +} +``` + +**字段说明:** + +| 字段 | 类型 | 说明 | +|------|------|------| +| total_users | int | 系统注册用户总数 | +| online_users | int | 当前在线用户数(WebSocket 连接中) | +| today_new_users | int | 今日新注册用户数 | +| ongoing_meetings | int | 当前进行中的会议数 | +| today_meetings | int | 今日创建的会议数 | +| today_messages | int | 今日消息发送总数 | + +--- + +## 2. 获取操作日志 + +`GET /api/v1/admin/logs` + +**权限:** admin + +**查询参数:** + +| 参数 | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| module | string | 无 | 按模块筛选:user / meeting / permission / system | +| action | string | 无 | 按操作类型筛选:create / update / delete / disable / enable / close | +| admin_id | int | 无 | 按操作管理员 ID 筛选 | +| page | int | 1 | 页码 | +| page_size | int | 20 | 每页数量 | + +**说明:** 日志数据来源于 `admin_operation_logs` 表,记录所有管理员的操作行为,用于审计和问题追踪。 + +--- + +## 3. 获取系统配置 + +`GET /api/v1/admin/system/config` + +**权限:** super_admin + +**说明:** 返回系统全局配置项,如默认会议最大人数、消息保留天数等。 + +--- + +## 4. 更新系统配置 + +`PUT /api/v1/admin/system/config` + +**权限:** super_admin + +**说明:** 修改系统全局配置,操作将记录到管理日志。 diff --git a/docs/api/admin/user.md b/docs/api/admin/user.md new file mode 100644 index 0000000..1558356 --- /dev/null +++ b/docs/api/admin/user.md @@ -0,0 +1,125 @@ +# 管理端 — 用户管理 API + +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 以下所有接口均需要 **JWT 认证 + admin/super_admin 角色** + +--- + +## 接口列表 + +| 方法 | 路径 | 权限 | 说明 | +|------|------|------|------| +| GET | /api/v1/admin/users | admin | 获取用户列表 | +| GET | /api/v1/admin/users/:id | admin | 获取用户详情 | +| PUT | /api/v1/admin/users/:id/status | admin | 更新用户状态 | +| PUT | /api/v1/admin/users/:id/role | super_admin | 分配用户角色 | +| POST | /api/v1/admin/users | admin | 管理员创建用户 | +| GET | /api/v1/admin/users/:id/meetings | admin | 获取用户会议记录 | + +--- + +## 1. 获取用户列表 + +`GET /api/v1/admin/users` + +**权限:** admin + +**查询参数:** + +| 参数 | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| keyword | string | 无 | 搜索关键词(匹配用户名/邮箱/昵称) | +| status | int | 无 | 按状态筛选:1=正常,2=禁用,3=注销 | +| role | string | 无 | 按角色筛选:user / admin / super_admin | +| page | int | 1 | 页码 | +| page_size | int | 20 | 每页数量 | + +--- + +## 2. 获取用户详情 + +`GET /api/v1/admin/users/:id` + +**权限:** admin + +**成功响应:** +```json +{ + "code": 0, + "message": "ok", + "data": { + "id": 1, + "username": "zhangsan", + "email": "zhangsan@example.com", + "nickname": "张三", + "avatar": "https://...", + "gender": 1, + "phone": "13800138000", + "status": 1, + "roles": ["user"], + "last_login_at": "2026-02-27 10:00:00", + "last_login_ip": "192.168.1.100", + "created_at": "2026-02-20 08:00:00" + } +} +``` + +--- + +## 3. 更新用户状态 + +`PUT /api/v1/admin/users/:id/status` + +**权限:** admin + +**请求参数:** + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| status | int | 是 | 目标状态:1=正常(启用),2=禁用 | + +**说明:** 禁用用户后,该用户的所有活跃 Token 将被清除,正在进行的 WebSocket 连接将被断开。 + +--- + +## 4. 分配用户角色 + +`PUT /api/v1/admin/users/:id/role` + +**权限:** super_admin + +**请求参数:** + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| role_code | string | 是 | 角色代码:user / admin / super_admin | + +--- + +## 5. 管理员创建用户 + +`POST /api/v1/admin/users` + +**权限:** admin + +**请求参数:** 同前台用户注册接口,额外支持: + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| role_code | string | 否 | 指定角色,默认为 user | + +--- + +## 6. 获取用户会议记录 + +`GET /api/v1/admin/users/:id/meetings` + +**权限:** admin + +**查询参数:** + +| 参数 | 类型 | 默认值 | 说明 | +|------|------|--------|------| +| status | string | 无 | ongoing=进行中,upcoming=即将开始,ended=已结束 | +| page | int | 1 | 页码 | +| page_size | int | 20 | 每页数量 | diff --git a/docs/api/auth.md b/docs/api/frontend/auth.md similarity index 99% rename from docs/api/auth.md rename to docs/api/frontend/auth.md index dc743ca..338d727 100644 --- a/docs/api/auth.md +++ b/docs/api/frontend/auth.md @@ -1,6 +1,6 @@ # 认证模块 API (Auth) -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) --- diff --git a/docs/api/contact.md b/docs/api/frontend/contact.md similarity index 99% rename from docs/api/contact.md rename to docs/api/frontend/contact.md index 5db93e9..ecde3f0 100644 --- a/docs/api/contact.md +++ b/docs/api/frontend/contact.md @@ -1,6 +1,6 @@ # 联系人模块 API (Contact) -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) --- diff --git a/docs/api/im.md b/docs/api/frontend/im.md similarity index 99% rename from docs/api/im.md rename to docs/api/frontend/im.md index b6373ec..2bcadfb 100644 --- a/docs/api/im.md +++ b/docs/api/frontend/im.md @@ -1,7 +1,7 @@ # 即时通讯模块 API (IM) -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) -> 消息的实时收发通过 WebSocket 完成,见 [websocket.md](websocket.md) +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 消息的实时收发通过 WebSocket 完成,见 [websocket.md](../websocket.md) > 本文档中的接口用于会话管理和消息历史查询等非实时操作。 --- diff --git a/docs/api/meeting.md b/docs/api/frontend/meeting.md similarity index 98% rename from docs/api/meeting.md rename to docs/api/frontend/meeting.md index 51d6051..45b9fd1 100644 --- a/docs/api/meeting.md +++ b/docs/api/frontend/meeting.md @@ -1,7 +1,7 @@ # 会议模块 API (Meeting) -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) -> 会议中的实时信令(Transport/Producer/Consumer)通过 WebSocket 完成,见 [websocket.md](websocket.md) +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 会议中的实时信令(Transport/Producer/Consumer)通过 WebSocket 完成,见 [websocket.md](../websocket.md) --- diff --git a/docs/api/notify.md b/docs/api/frontend/notify.md similarity index 97% rename from docs/api/notify.md rename to docs/api/frontend/notify.md index d6b82cc..dfeec13 100644 --- a/docs/api/notify.md +++ b/docs/api/frontend/notify.md @@ -1,7 +1,7 @@ # 通知模块 API (Notify) -> 通用规范(认证方式、响应格式、错误码)见 [README.md](README.md) -> 新通知的实时推送通过 WebSocket 完成,见 [websocket.md](websocket.md) +> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md) +> 新通知的实时推送通过 WebSocket 完成,见 [websocket.md](../websocket.md) ---