外观
移动端概览
移动端是一套 H5 遥控面板(src/views/mobile/),通过扫码/输码与大屏配对后,可远程向大屏发送提问、切换模式、查看回答,扮演「仿微信遥控」角色。
一、模块组成
| 模块 | 位置 | 职责 |
|---|---|---|
| 入口 | MobileEntry.vue | 根据 isPaired && isConnected 在「扫码页」与「遥控面板」之间切换 |
| 扫码配对 | ScanPair.vue | 扫码自动配对 / 手动输码,错误分型与超时保护 |
| 遥控面板 | RemotePanel.vue | 仿微信对话布局 模式切换 消息区 输入栏 抽屉 |
| 输入栏 | ChatInputBar.vue | 文本输入 / 按住说话(语音) |
| 状态 | stores/mobile.js | isPaired / 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'),不像大屏端需要二次确认。