feat(voice-client): 双层配置持久化、精简手术号 UI 与 WS/服务端排查日志
- machine_config:系统级 + 用户级 voice_client.json 合并,界面失焦保存至用户目录 - 移除「当前手术号」表单项与占位文案;指派后仅在窗口标题显示手术号 - WebSocket 连接日志附带绑定/开录路径排查说明 - 开录未推送时服务端 WARNING(无站点绑定或 camera_ids 不匹配) - 测试、README、.env.example 同步 Made-with: Cursor
This commit is contained in:
@@ -40,9 +40,20 @@ uv run --group voice-client voice-confirmation-client
|
||||
|
||||
**术间 / 摄像头 / 语音终端对应关系**只在服务端 `**OR_SITE_CONFIG_JSON_FILE`** 里维护一份(`voice_or_room_bindings`);桌面程序不读该文件。
|
||||
|
||||
本机要做的只有两件事:**服务端 Base URL**,以及 **本机语音终端 ID**(须等于 JSON 里某条 `voice_terminal_id`)。**手术号不在客户端输入**:勾选 **启用服务端自动指派** 后,开录/停录仅通过 **WebSocket** `voice_assignment` 下发(断线后自动重连,不用 HTTP 轮询);界面只读展示当前手术号;停录后自动停止。可用 **停止监控(本机)** 做本地紧急中断。
|
||||
本机要做的只有两件事:**服务端 Base URL**,以及 **本机语音终端 ID**(须等于 JSON 里某条 `voice_terminal_id`)。**手术号不在客户端输入**:勾选 **启用服务端自动指派** 后,开录/停录仅通过 **WebSocket** `voice_assignment` 下发(断线后自动重连,不用 HTTP 轮询);当前手术号在**窗口标题**中显示;停录后自动停止。可用 **停止监控(本机)** 做本地紧急中断。
|
||||
|
||||
可选:用环境变量 `**VOICE_TERMINAL_ID`** 预填界面里的「本机语音终端 ID」(仅客户端进程使用,**不要**写进监控服务的 `.env`)。
|
||||
### 配置文件(系统级 + 用户级)
|
||||
|
||||
字段均为 **UTF-8 JSON**(`voice_terminal_id`、`http_base_url`,均可选)。启动时 **合并** 两层配置:**用户级覆盖系统级** 同名字段。
|
||||
|
||||
| 层级 | 用途 | 默认路径 |
|
||||
|------|------|----------|
|
||||
| **系统级** | 运维装机下发(只读亦可) | **Windows** `%ProgramData%\OperationRoomMonitor\voice_client.json`;**macOS** `/Library/Application Support/OperationRoomMonitor/voice_client.json`;**Linux** `/etc/operation-room-monitor/voice_client.json` |
|
||||
| **用户级** | 在界面修改「服务端 Base URL」或「本机语音终端 ID」并 **离开输入框** 后自动保存 | **Windows** `%LOCALAPPDATA%\OperationRoomMonitor\voice_client.json`;**macOS** `~/Library/Application Support/OperationRoomMonitor/voice_client.json`;**Linux** `~/.config/operation-room-monitor/voice_client.json` |
|
||||
|
||||
测试或定制安装可用环境变量 **`VOICE_CLIENT_MACHINE_CONFIG_FILE`**、**`VOICE_CLIENT_USER_CONFIG_FILE`** 分别覆盖上述两个路径。
|
||||
|
||||
示例见 `voice_confirmation_client/resources/voice_client.sample.json`(通常用作系统级模板)。
|
||||
|
||||
## 日志(loguru)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user