Files
EchoChat/docs/api/frontend/meeting.md
bujinyuan 7dcd89c7fc docs: API 文档按端+模块二级目录重组
- 前台用户端 API 迁移到 frontend/ 目录(auth/contact/im/meeting/notify)
- 后台管理端 admin.md 拆分为 admin/ 目录下 4 个文档(auth/user/meeting/system)
- WebSocket 协议保留在根目录(跨端通用)
- 更新 README 导航为两级结构,补充目录结构说明
- 更新所有文档间的交叉引用路径

Made-with: Cursor
2026-02-28 09:52:52 +08:00

181 lines
4.4 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.

# 会议模块 API (Meeting)
> 通用规范(认证方式、响应格式、错误码)见 [README.md](../README.md)
> 会议中的实时信令Transport/Producer/Consumer通过 WebSocket 完成,见 [websocket.md](../websocket.md)
---
## 接口列表
| 方法 | 路径 | 权限 | 说明 |
|------|------|------|------|
| POST | /api/v1/meetings | 需认证 | 创建即时会议 |
| POST | /api/v1/meetings/schedule | 需认证 | 预约会议 |
| GET | /api/v1/meetings/:code | 需认证 | 获取会议信息 |
| POST | /api/v1/meetings/:code/join | 需认证 | 加入会议 |
| POST | /api/v1/meetings/:code/leave | 需认证 | 离开会议 |
| GET | /api/v1/meetings/upcoming | 需认证 | 获取即将开始的会议 |
| GET | /api/v1/meetings/ongoing | 需认证 | 获取进行中的会议 |
| GET | /api/v1/meetings/history | 需认证 | 获取历史会议 |
---
## 1. 创建即时会议
`POST /api/v1/meetings`
**权限:** 需认证
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| title | string | 是 | 会议标题 |
| password | string | 否 | 会议密码,不设则任何人可加入 |
| max_members | int | 否 | 最大人数,默认 50 |
| settings | object | 否 | 会议设置 |
**settings 可选字段:**
| 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| mute_on_join | bool | false | 入会时自动静音 |
| allow_recording | bool | false | 是否允许录制(预留) |
**成功响应:**
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 1,
"room_code": "123-456-789",
"title": "产品需求讨论",
"type": 1,
"status": 1,
"host_id": 1,
"max_members": 50,
"created_at": "2026-02-27 10:00:00"
}
}
```
---
## 2. 预约会议
`POST /api/v1/meetings/schedule`
**权限:** 需认证
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| title | string | 是 | 会议标题 |
| scheduled_at | string | 是 | 预约时间,格式:`yyyy-MM-dd HH:mm:ss`,如 `"2026-03-01 14:00:00"` |
| password | string | 否 | 会议密码 |
| max_members | int | 否 | 最大人数 |
| invite_user_ids | int[] | 否 | 预先邀请的用户 ID 列表 |
| settings | object | 否 | 会议设置 |
**说明:** 预约会议创建后 status=0未开始被邀请的用户会收到通知。系统在预约时间前 15 分钟和 5 分钟各推送一次提醒。
---
## 3. 获取会议信息
`GET /api/v1/meetings/:code`
**权限:** 需认证
**路径参数:** `code` — 会议号
**成功响应:**
```json
{
"code": 0,
"message": "ok",
"data": {
"id": 1,
"room_code": "123-456-789",
"title": "产品需求讨论",
"type": 1,
"status": 1,
"host": {
"id": 1,
"nickname": "张三",
"avatar": "https://..."
},
"has_password": true,
"max_members": 50,
"current_members": 5,
"started_at": "2026-02-27 10:00:00",
"participants": [
{ "user_id": 1, "nickname": "张三", "role": 1, "joined_at": "2026-02-27 10:00:00" },
{ "user_id": 2, "nickname": "李四", "role": 0, "joined_at": "2026-02-27 10:01:00" }
]
}
}
```
---
## 4. 加入会议
`POST /api/v1/meetings/:code/join`
**权限:** 需认证
**请求参数:**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| password | string | 否 | 会议密码(如果会议设有密码) |
**成功响应包含加入会议所需的信令参数。**
**可能的错误码:** 4001, 4002, 4003, 4004
---
## 5. 离开会议
`POST /api/v1/meetings/:code/leave`
**权限:** 需认证
**说明:** 离开后系统自动计算参会时长。如果主持人离开且没有联合主持人,会议将自动结束。
---
## 6. 获取即将开始的会议
`GET /api/v1/meetings/upcoming`
**权限:** 需认证
**说明:** 返回当前用户被邀请的、尚未开始的预约会议列表,按预约时间升序排列。
---
## 7. 获取进行中的会议
`GET /api/v1/meetings/ongoing`
**权限:** 需认证
**说明:** 返回当前用户正在参与的或被邀请的进行中会议。
---
## 8. 获取历史会议
`GET /api/v1/meetings/history`
**权限:** 需认证
**查询参数:** 支持分页page, page_size
**说明:** 返回当前用户参与过的已结束会议,按结束时间倒序排列。