[重构] 运动预过滤改为本地事件(NAS推送) - 甲骨文不再反向访问NAS:新增 ss_motion_events 表/record_motion_events/has_motion_in_range_local,/api/ss/motion 接收端点,video_processor 改用本地运动事件预过滤,停用 dsm_motion_client 反向查询

This commit is contained in:
ericwyuan
2026-08-22 10:25:56 +08:00
parent 0d8e62607c
commit 38dea6ba2e
5 changed files with 136 additions and 22 deletions

View File

@@ -47,22 +47,17 @@ video_processing:
# 降级顺序:先 gemini 整视频,失败再 nvidia 整视频;两者都失败 -> 标记 failed
vision_order: ["gemini", "nvidia"]
# DSM 运动侦测预过滤2026-08-22 新增):分析前先查一下群晖 Surveillance Station
# 自己记录的运动侦测事件SYNO.SurveillanceStation.EventCenter.Event未公开文档的
# 内部接口,参数名是下划线风格 camera_ids/start_time/end_time这段时间窗口一条
# 运动事件都没有就跳过云端分析(标记 donecompute_provider=skipped_no_motion
# 省掉长期无人时段白白消耗的 Gemini/NVIDIA 配额。
# 账号密码走 .envDSM_ACCOUNT/DSM_PASSWORD不明文入库查询失败/未配置一律
# fail-open照常送云端分析),不会因为这层可选优化漏检真实事件
# 运动侦测预过滤2026-08-22 重构):
# - 甲骨文【不再反向访问 NAS】。原 dsm_motion_client甲骨文主动查 SS API已停用
# 改由 NAS 端 fam-core 的 MotionNotifier 轮询/接收 SS 事件后,主动 POST 推送到
# 甲骨文 /api/ss/motion落库 ss_motion_events。
# - video_processor 分析前调用 db.has_motion_in_range_local()(本地运动事件表)做
# 预过滤窗口内无运动事件则跳过云端分析compute_provider=skipped_no_motion
# - 本地运动事件表为空(冷启动/尚未收到推送)一律 fail-open照常分析漏检
# 此 block 仅保留 min_motion_seconds 语义参考host/account 等反向访问字段已弃用。
dsm_motion_prefilter:
enabled: true
host: "192.168.50.64"
port: 5000
account: "${DSM_ACCOUNT}"
password: "${DSM_PASSWORD}"
camera_id: 2 # Surveillance Station 里 Generic_ONVIF-001 的 camera_id
enabled: false # 已停用:甲骨文不再主动访问 NAS SS
min_motion_seconds: 0 # 窗口内运动事件总时长需 ≥ 此值才算"有运动"0=有事件就算)
timeout_sec: 10
# 智能问答降级链与视频分析独立Gemini -> NVIDIA -> 本地 Ollama
models: