im-trtc-room Specification
Purpose
定义 PRI-MP-CONSULT-003 图文咨询 IM 与音视频 TRTC 房间能力,包括房间参数承接、消息查询与收发、已读回写、视频进出房和设备控制。按照项目负责人批准的旧源码真实链路,客户端使用医院 IM 配置与既有 GenerateTestUserSig 实现生成 UserSig;缺少必要配置或用户上下文时明确报错,不伪造成功状态。
Requirements
Requirement: REQ-CONSULT-003-01 CONSULT-003 IM 与 TRTC 房间
系统 MUST 按旧源码已验证的业务流程实现 IM 与 TRTC 房间能力;真实写入仅由用户在页面明确触发,且不得使用 mock 或静态成功结果。客户端 UserSig 生成属于项目负责人批准的旧版功能还原链路。
- 历史追溯:本模块最初从
develop@9a529fc 的 feature/PRI-MP-CONSULT-003-im-trtc-room 分支开发;该记录不构成当前业务或验收要求。
- MUST:覆盖当前模块功能点专项矩阵,并对每个功能点给出已实现、暂缓、划归其他模块、待确认或不属于本模块的结论。
- MUST:记录契约与依赖闭环,未完成依赖必须使用待开放、禁用态或安全兜底。
- MUST:自检报告包含新版设计基线、旧源码功能基线、视觉布局基线、真实接口与禁止模拟业务数据检查。
- MUST:提交待集成时列出共享文件清单、固定检查结果和人工联调项。
- MUST NOT:子 Agent 自行合并或推送
develop。
- MUST NOT:使用 mock、本地假接口、硬编码业务返回或静态业务数据替代真实接口。
- MUST NOT:在页面加载、上下文回填或后台生命周期中自动发送消息、进入/离开 TRTC 房间或生成 UserSig。
Scenario: 模块提交待集成
- Given PRI-MP-CONSULT-003 模块开发完成
- When 子 Agent 提交待集成材料
- Then OpenSpec strict、功能点矩阵闭环、契约与依赖闭环、共享文件清单、禁止 mock/硬编码扫描、人工联调项和固定检查结果 MUST 齐全。
Requirement: REQ-CONSULT-003-02 CONSULT-001 房间参数回接
系统 MUST 承接 CONSULT-001 输出的房间参数,并从候诊室、咨询详情进入 CONSULT-003 受控 IM 房间页。
Scenario: 候诊室进入诊室
- Given 候诊室已生成
roomParams
- When 用户点击进入诊室
- Then 系统 MUST 缓存房间上下文并跳转
pages/message/pages/im/room/room
- And 系统 MUST NOT 自动登录 TIM、发送消息、标记已读或进入 TRTC。
Scenario: 咨询详情进入房间
- Given 咨询详情已生成
roomParams
- When 用户点击咨询房间
- Then 系统 MUST 跳转到 IM 房间页
- And 房间页 MUST 展示患者、医生、咨询和房间参数状态。
Requirement: REQ-CONSULT-003-03 IM 房间与消息契约
系统 MUST 提供 IM 房间页面、聊天记录查询、文字/图片消息发送和已读回写,并保持旧源码字段契约。
Scenario: 加载 IM 房间
- Given 用户进入 IM 房间页
- When 房间参数有效
- Then 系统 MUST 调用
02090005 查询聊天记录,字段为 admID/frUser/toUser/lastMsgID
- And 系统 MUST 调用
03100108 查询是否可咨询,字段为 admID
- And 系统 MUST 对空列表、接口异常、UserSig 缺失提供兜底态。
Scenario: 发送消息
- Given 用户在 IM 房间页输入文本
- When 用户确认发送文字或选择图片
- Then 系统 MUST 调用
02090004;文字字段为 admID/frUser/toUser/consultText/picture:'',图片字段为 consultText:'' 和上传返回的 picture
- And 用户离开会话页时系统 MUST 调用
02090006 回写 admID/frUser/toUser 已读状态。
Requirement: REQ-CONSULT-003-04 TRTC 房间与进出房门禁
系统 MUST 使用小程序原生 live-pusher/live-player 完成 TRTC 房间进出、远端流接收及摄像头/麦克风控制;进入操作必须由用户明确确认。
Scenario: 打开视频房间
- Given 用户从 IM 房间进入视频房间
- When 页面加载
- Then 系统 MUST 在用户确认后调用
02090003,字段为 roomID/userType:'P'/userID/frUser
- And 成功进房后 MUST 调用
02090002 写入 loginType:'I',挂断或离开后写入 loginType:'O'
- And 系统 MUST 展示并实际控制摄像头、麦克风、翻转摄像头和挂断控件。
Scenario: 权限缺失
- Given 摄像头或麦克风权限未开启
- When 用户进入 TRTC 页面
- Then 系统 MUST 提示权限状态并提供权限设置入口。
Requirement: REQ-CONSULT-003-05 UserSig 安全边界
系统 MUST 按项目负责人批准的旧源码链路读取医院 imAppID / imSecret,在客户端生成当前 IM 用户的 UserSig,并用于 TIM 登录及 IM/TRTC 房间初始化。
Scenario: 生成并使用旧版 UserSig
- GIVEN 当前医院已返回
imAppID / imSecret,且当前用户具有 IM userID
- WHEN 应用初始化 TIM 或用户进入 IM/TRTC 页面
- THEN 系统 MUST 使用
debug/GenerateTestUserSig.js 生成 UserSig
- AND MUST 使用当前 SDKAppID、IM userID 和 UserSig 登录 TIM
- AND MUST 将相同签名上下文传递给 TRTC 房间
- AND 缺少医院 IM 配置、登录用户或房间业务参数时 MUST 显示明确错误,不得伪造成功状态。
Requirement: REQ-CONSULT-003-06 IM/TRTC 房间响应式操作区
IM 和 TRTC 房间 MUST 保持旧版真实消息与进出房契约,同时在小屏和底部安全区设备上完整显示所有用户可见操作。
Scenario: IM 房间底部三操作
- GIVEN 用户进入 IM 房间
- WHEN 页面显示发送、图片和视频房间三个操作
- THEN 三个操作 MUST 以可收缩的三列等宽布局完整显示
- AND 页面 MUST NOT 重复渲染原生导航已承接的返回按钮和房间标题。
Scenario: TRTC 房间设备操作
- GIVEN TRTC 页面显示权限、麦克风、摄像头、翻转和进房或挂断操作
- WHEN 页面在小屏设备上渲染
- THEN 五个操作 MUST 在可见宽度内等分收缩
- AND 任一操作 MUST NOT 发生横向溢出、重叠或屏外隐藏。