feat(phase2e-2): 落地 HTTPMediaOrchestrator 打通 Go↔Node 媒体链路(Task 7)

- 新增 MediaServerConfig + config.{dev,docker}.yaml 的 media_server 段
  (base_url / internal_token / timeout_ms / close_timeout_ms / close_retry)
- 新建 HTTPMediaOrchestrator(8 方法 + sync.Map 缓存 roomCode→routerID
  + 关闭类指数退避重试 200/500ms + ErrMediaResourceNotFound/ErrMediaServerError
  两类错误)实现 MediaOrchestrator 接口
- wire 绑定由 NoopMediaOrchestrator 切换到 HTTPMediaOrchestrator;
  MeetingService / MeetingSignalService 调用侧零改动
- E2E 脚本 docs/verify/meeting_t7_verify.mjs 证明 16/16 PASS:
  健康检查/错token 401/REST 创房加入/WS room.join/真实 mediasoup
  transport.create(ICE/DTLS 指纹均由 Node 返回非占位)/404 幂等关 producer
  /host 结束会议触发 CloseRouter
- 同步更新 13 份文档:CURRENT_STATUS / implementation.plan / design
  变更记录 / project-context / api 导览 / api websocket / api frontend meeting
  / system-architecture / media-server README / 顶层 README 等
- go build ./... 全绿

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-04-21 17:47:11 +08:00
parent dfd9b6011c
commit 55d6352c6a
19 changed files with 795 additions and 46 deletions

View File

@@ -17,7 +17,7 @@
| [frontend/websocket.md](frontend/websocket.md) | WebSocket | ✅ Phase 2a | 前端 WebSocket 连接管理、事件协议、心跳、重连 |
| [frontend/im.md](frontend/im.md) | 即时通讯 | ✅ Phase 2b | 7 个 API会话列表/置顶/删除/清空、历史消息、全局搜索、未读数 |
| [frontend/group.md](frontend/group.md) | 群聊管理 | ✅ Phase 2c | 16 个 API建群/管理/成员/角色/禁言/公告/搜索/入群审批 |
| [frontend/meeting.md](frontend/meeting.md) | 会议 | ✅ Phase 2e-2 Task 5/6 | 12 个 REST 接口(创建/加入/离开/结束/详情/列表/邀请/踢人/转让主持人/发起聊天/拉聊天历史/邀请链接兑换)+ 13 个 WebSocket 信令事件8 C→S + 5 核心 S→C 广播 + 会议内聊天/被踢定向推送Redis 媒体资源追踪 + host 权限校验 |
| [frontend/meeting.md](frontend/meeting.md) | 会议 | ✅ Phase 2e-2 Task 5/6/7 | 12 个 REST 接口(创建/加入/离开/结束/详情/列表/邀请/踢人/转让主持人/发起聊天/拉聊天历史/邀请链接兑换)+ 13 个 WebSocket 信令事件8 C→S + 5 核心 S→C 广播 + 会议内聊天/被踢定向推送Redis 媒体资源追踪 + host 权限校验Task 7 (2026-04-21) 已接入真实 mediasoup返回值为 Node media-server 真实 Transport/Router/DTLS 参数 |
| [frontend/notify.md](frontend/notify.md) | 通知中心 | ✅ Phase 2e-1 | 5 个 API通知列表游标分页/未读数/标记已读/全部已读/管理员广播 + 2 个 WS 事件notify.new/notify.unread.total |
### 后台管理端 (`admin/`)
@@ -199,7 +199,7 @@ docs/api/
│ ├── websocket.md # WebSocket 事件协议 ✅ Phase 2a
│ ├── im.md # 即时通讯8 个 API ✅ Phase 2b/2c
│ ├── group.md # 群聊管理16 个 API ✅ Phase 2c
│ ├── meeting.md # 会议12 REST + 13 WS 事件) ✅ Phase 2e-2 (Task 5/6)
│ ├── meeting.md # 会议12 REST + 13 WS 事件) ✅ Phase 2e-2 (Task 5/6/7真实 mediasoup)
│ └── notify.md # 通知5 API + 2 WS 事件) ✅ Phase 2e-1
├── admin/ # 后台管理端 API
│ ├── auth.md # 管理员认证 ✅ Phase 1