跳转到内容

移动端概览 ​

移动端是一套 H5 遥控面板(src/views/mobile/),通过扫码/输码与大屏配对后,可远程向大屏发送提问、切换模式、查看回答,扮演「仿微信遥控」角色。


一、模块组成 ​

模块位置职责
入口MobileEntry.vue根据 isPaired && isConnected 在「扫码页」与「遥控面板」之间切换
扫码配对ScanPair.vue扫码自动配对 / 手动输码,错误分型与超时保护
遥控面板RemotePanel.vue仿微信对话布局
模式切换
消息区
输入栏
抽屉
输入栏ChatInputBar.vue文本输入 / 按住说话(语音)
状态stores/mobile.jsisPaired / isConnected / messages / currentMode / isWaiting / knowledgeCategory / clientId

二、与大屏的关系 ​

移动端与大屏共用同一套前端状态机与问答逻辑:

  • 移动端提问 → 经后端 COMMAND → 大屏按当前模式处理 → 大屏播报 → RESPONSE 回推移动端渲染;
  • 移动端选中的知识库分类通过 knowledgeCategory 字段 piggyback 到大屏,优先级高于大屏自身选择;
  • 模式切换同样 piggyback 在 COMMAND 中,保证两端一致。

详细流程、配对错误分型与遥控面板能力见 移动端与大屏交互。


三、语音输入(移动端) ​

ChatInputBar.vue + useAudioRecorder.js:

  • 左侧图标在"键盘 / 语音"间切换,语音模式为按住说话按钮(mousedown/touchstart 开始,mouseup/touchend 发送,移出按钮区域 mouseleave/touchcancel 取消)。
  • 按钮三态:按住 说话 → 录音中 Ns(红点脉冲)→ 识别中…(转圈)。
  • 录音前先做 diagnoseRecordingCapability() 环境诊断;时长限制 最短 1 秒、最长 60 秒。
  • 针对微信内置浏览器 / iOS Safari / 局域网 HTTP 给出差异化引导。
  • 识别成功后直接作为用户消息发送(type: 'voice'),不像大屏端需要二次确认。

数字人「小慧」项目文档