docs(task13): 补齐 meeting/notify API 文档 + Playwright UI 回归结果

## API 文档(Task 13 前漏补)
- docs/api/frontend/meeting.md §9 邀请用户接口:展开 extra 8 字段清单
  (room_code / room_title / has_password / invite_token / inviter_id
   / inviter_name / inviter_avatar / expired_at),并说明前端如何据
   expired_at 判过期
- docs/api/frontend/meeting.md 后续任务关联:Task 13 标  + deep-link 路径
- docs/api/frontend/notify.md 概览:
  * "支持内联按钮的通知类型" 表(friend_request / meeting_invite)
  * "meeting_invite 专用 extra 字段" 详细清单

## Playwright UI 回归结果(2026-04-23 补做)
采用 "A 侧 curl 邀请 + B 侧 Playwright 登录" 策略:
- testuser1 邀请 testuser2 → 通知中心渲染 meeting_invite 卡片
- 新邀请卡片 → 双按钮「立即加入 / 稍后」
- 过期邀请卡片 → 合并为单 disabled「邀请已过期」按钮 
- 点「立即加入」→ 跳 /pages/meeting/preview?mode=join&code=516-162-828 
- preview 页正确渲染 "即将加入会议 516-162-828" + 设备面板 
- 截图:task13-notify-meeting-invite-cards.png
        task13-preview-page-after-invite-accept.png
- CURRENT_STATUS.md + implementation.plan.md 已同步补录

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-04-22 17:34:29 +08:00
parent d6fb7ce291
commit ba8c72aae0
4 changed files with 43 additions and 5 deletions

View File

@@ -281,7 +281,13 @@
**行为**对每个 invitee
1. 若该用户已在本会议活跃 跳过
2. 生成 32 位十六进制 Token Redis key `echo:meeting:invite:{token}`TTL 600 `MeetingInviteTokenTTL`value = `{"room_code","inviter_id","invitee_id","has_password"}`
3. 通过 Phase 2e-1 `notify.Pusher.PushBatch` 推送 `type=meeting_invite` 通知`Extra` `room_code / room_title / has_password / invite_token`
3. 通过 Phase 2e-1 `notify.Pusher.PushBatch` 推送 `type=meeting_invite` 通知`Extra`Phase 2e-2 Task 13 完整版包含以下字段
- `room_code`9 位会议号 `XXX-XXX-XXX`前端跳 preview 页使用
- `room_title`房间标题卡片展示
- `has_password`是否有密码前端据此决定是否在 preview 页弹密码输入
- `invite_token`32 hex token可用于兑换接口快速拉取 room_code
- `inviter_id` / `inviter_name` / `inviter_avatar`邀请人展示字段卡片左上角头像 + "XX 邀请你加入..." 文案来源
- `expired_at`Unix Redis TTL 同步前端用 `expired_at * 1000 < Date.now()` 判断过期并灰显按钮
4. 离线被邀请者走通知入库上线后由 WS 或未读轮询获得
**响应 `200 OK`**
@@ -683,4 +689,4 @@
## 后续任务关联
- **Task 9**Vue 前端 mediasoup-client 接入按本文 WS 契约实现 `mediasoup.Transport` `connect / produce` 回调补齐 `ResumeConsumer`Node REST 已就绪或在 Go 侧改为创建 Consumer 后自动 resume需处理 `meeting.host.changed` `auto_reason` 字段以在 UI 上标注"自动转让"。
- **Task 13**通知卡片 UI 补齐 `meeting_invite` 内联按钮
- **Task 13 ✅(2026-04-23**通知卡片 UI 已完成内联按钮"立即加入 / 稍后"点击"立即加入" `/pages/meeting/preview?mode=join&code=xxx` preview 页走 `/rooms/:code/join`过期态由 `extra.expired_at * 1000 < Date.now()` 判定并合并为单个 disabled "邀请已过期"按钮不再发起任何请求