Commit Graph

20 Commits

Author SHA1 Message Date
e9c2de53cd style(control): 看板视频源名字改为无背景白字+黑色描边
按视频 OSD 行业标准:无背景(遮盖最少) + 白色文字 + 多向
text-shadow 黑色描边,浅色视频画面也不被同化。字号 9→10px。
2026-08-02 14:18:19 +08:00
7e6cf1b054 style(control): 看板视频源名字标签改为浅灰半透明
原 preview-label 背景 rgba(0,0,0,0.7) 深色不透明遮住视频。
改为 rgba(255,255,255,0.35) 浅灰半透明 + 深色文字 + 轻微
backdrop-blur:视频透出可见,名字仍清晰可读。
2026-08-02 14:14:07 +08:00
b57fef13d4 refactor(control): 视频监控页数据与运行看板统一(服务端渲染)
问题: monitor 页前端 fetch /api/monitor/channels 拿残缺数据
(仅通道名),再打补丁关联视频源名——数据源不统一。
修复: 提取 consolePageData() 共用,monitor 页服务端渲染
ConsoleDevices.Channels(含 SourceName/Display),显示
'设备名 · 视频源名',与看板完全同源。
撤销 channelMetaMap 补丁(不再需要);monitor JS 直接用
data-channel 构造 HLS URL。
2026-08-02 14:10:08 +08:00
8663f8cee4 fix(control): streaming=true 即隐藏覆盖层(去掉 input_fps 判断)
input_rtsp 节点 input_fps 可能为 0 但实际在出帧(HLS 正常播放),
导致'连接中'覆盖层盖在画面上。streaming=true 已是 media 实时
拉流状态,直接隐藏。
2026-08-02 14:03:11 +08:00
9e473871ce fix(control): 看板/监控 HLS 错误回调丢失状态导致原因不显示
HLS fatal 错误回调把 status 传 null,hlsError 分支拿不到
last_error,落入'请检查视频源'兜底文案。
修复: tile/card 记住最近状态(_sourceStatus),错误回调复用它;
监控页 hlsError 也显示实际原因(有数据时)。
2026-08-02 13:40:17 +08:00
565e4bb3d6 feat(control): 看板页视频源原因简化显示
看板窗口小,原因改为类型级摘要(去掉 URL/细节):
  '视频源异常:RTSP 打开失败' (由 last_error 提取错误类型前缀)
hlsError 兜底也显示具体原因(有数据时),不再模糊提示
'请检查视频源'。监控页保留完整原因。
2026-08-02 13:10:59 +08:00
7fe93b58d0 feat(control): 监控页视频源提示改用输出层面措辞
监控页看的是 HLS 输出,原显示'离线+RTSP打开失败'会误导
为'在看RTSP源'。改为:
  标题: 无视频输出(输出层面事实)
  原因: 视频源异常:RTSP打开失败(...)(标注根因,不丢细节)
看板页保持'离线'(设备运维视角,用户认可)。
2026-08-02 13:04:08 +08:00
b19c0392f7 style(control): 视频源状态覆盖层颜色统一用 scheme 变量
- 字体 20px→14px(不刻意放大,与整体 UI 协调)
- 颜色改用 --green/--red/--amber/--muted(随 scheme 主题切换)
- 详情页视频源错误提示改用 --danger-soft/--danger-soft-text
  (此前用了未定义的 --danger 和硬编码 rgba)
2026-08-02 12:54:58 +08:00
2bb8ed1cdb feat(control): 运行看板/视频监控页视频源状态覆盖层
- 新增 /api/monitor/video-status 接口(复用 FetchVideoSourceStatus)
- console.html: 设备视图+视频视图视频窗口正中显示状态覆盖层
  离线(红字+原因)/连接中/在线(隐藏)/状态未知
- monitor.html: 视频监控页同样处理,HLS 播放失败显示'无视频输出'
- HLS fatal 错误兜底提示(即使状态接口不可用)
2026-08-02 12:49:22 +08:00
c75228c88d fix(control): 视频源轮询不依赖 Online 标志 + 移除调试
根因: offline_after_ms(10s) < discovery 轮询间隔(30s),
设备被 pruning 误标离线导致 graph 轮询空转。
修复: 轮询遍历所有设备尝试拉取(agent 请求失败自然跳过),
同时修正 81 配置 offline_after_ms=90s。
UpdateDevice 复用对象保留动态字段(上轮)。
2026-08-02 12:40:36 +08:00
452d49b8bc debug: gp 日志2 2026-08-02 12:37:53 +08:00
497343aac6 debug: 列表页 VS 调试 2026-08-02 12:36:30 +08:00
5773b6acd2 fix(control): UpdateDevice 复用已有设备对象,保留视频源统计
discovery 每轮用新 Device 替换 map 指针,graph 轮询(30s)更新的
VideoSourceDown 被 discovery(33s) 的指针替换覆盖,列表警告恒不显示。
改为 UpdateDevice 在设备已存在时合并字段到已有对象,
保留 VideoSource*/Graphs/alias,仅更新发现数据。
2026-08-02 12:35:08 +08:00
12414b4c33 debug: 轮询 tick 日志 2026-08-02 12:30:06 +08:00
b267e7e9e8 debug: registry graph 轮询日志(临时) 2026-08-02 12:28:40 +08:00
a906113221 fix(control): 视频源统计更新到 registry 当前设备对象
discovery 每轮会替换设备指针,graph 轮询更新旧指针导致
UI 拿到新指针(统计恒 0)。改为按 device_id 更新 registry
中当前对象。
2026-08-02 12:26:05 +08:00
db7284d2e5 feat(control): 设备列表视频源离线警告
- models.Device 增加视频源统计字段(内存/UI用)
- registry graph 轮询(30s)顺带解析 input_rtsp 在线/离线数
- 设备列表状态列: 视频源 N/M 离线 红色警告 pill(悬停显示明细)
2026-08-02 12:21:38 +08:00
c92ad41bd1 feat(control): 视频源状态检测与展示
- 新增 service.FetchVideoSourceStatus: 调 agent /v1/graphs 解析
  input_rtsp 节点 (custom_metrics: streaming/last_error/fail_count)
- 设备详情页运行与服务区块展示每个视频源:
  在线/离线 + 失败原因(如 RTSP 打开失败: 404) + 帧率 + 历史失败次数
- 视频源离线时红色提示,与媒体服务状态区分
2026-08-02 12:20:13 +08:00
6a995db6e2 fix(ui): 服务状态提示优化 - 区分故障原因,透传媒体错误
- agent: procctl.Status 增加 LastError(未检测到进程/进程已退出原因),
  config/status 透传 media.last_error
- control: ConfigStatusMediaServer 增加 LastError 字段
- control: loadConfigStatus 错误分类(agent 未响应 vs HTTP 错误,含 IP:端口)
- UI 文案: '待确认/未确认' -> '状态未知',媒体服务行显示具体错误
  用户可区分: 服务故障(带原因) vs 配置未取到 vs 视频源问题
2026-08-02 12:06:52 +08:00
98e375dc36 chore: 合并 safesight-control 仓库为 control/ 子目录
项目合并为单仓库:设备端(根) + 管理端(control/)。
两端 git 历史完整保留(git subtree 合并)。

git-subtree-dir: control
git-subtree-mainline: 923ab10d5c
git-subtree-split: 70738edb31
2026-08-02 11:13:26 +08:00