spec.md 6.0 KB

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@9a529fcfeature/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 发生横向溢出、重叠或屏外隐藏。