[重构] 运动监测恢复轮询主路径(简单稳定) - poll_enabled 默认开启;修复3隐患: 推送失败批次不前进游标(下轮重试不丢事件)、重启优先续用DB游标(停机期间事件补推)、fetch limit 提到1000;Webhook降级为可选补充
This commit is contained in:
@@ -33,26 +33,35 @@ chat_handler:
|
||||
qa_url: "http://129.146.203.203:5000/api/edge/chat/ask"
|
||||
timeout: 120
|
||||
|
||||
# 运动监测通知服务(2026-08-22 重构为 Webhook 驱动,不轮询)
|
||||
# SS 配置 Webhook 把运动事件 POST 到 NAS /api/ss/webhook,本服务映射字段后
|
||||
# 推送甲骨文 FAM-Edge(单向 NAS -> Oracle,甲骨文不再反向访问 NAS)。
|
||||
# SS Webhook 不提供 event_id / camera_id,由本服务合成 event_id、把摄像头名映射成
|
||||
# camera_id(启动一次性从 SS 拉取 + 以下静态映射兜底),并把 EVENT_TIME 解析成 epoch。
|
||||
# 运动监测通知服务(2026-08-22 定稿:轮询主路径)
|
||||
# NAS 本机轮询 SS EventCenter.Event.List(真实 event_id/start_time/duration),
|
||||
# 增量推送到甲骨文 FAM-Edge(单向 NAS -> Oracle,甲骨文不再反向访问 NAS)。
|
||||
# Webhook(/api/ss/webhook)保留为可选低延迟补充,SS 行动规则未配置则不触发。
|
||||
# SS 凭据走环境变量(${DSM_ACCOUNT}/${DSM_PASSWORD}),由启动脚本 source 的 .env 提供。
|
||||
motion_notifier:
|
||||
enabled: true
|
||||
poll_enabled: false # 关闭轮询,改用 SS Webhook 推送
|
||||
dsm_host: "192.168.50.64" # Surveillance Station 所在地址(NAS 本机,用于一次性拉摄像头映射)
|
||||
poll_enabled: true # 轮询主路径(默认开启)
|
||||
dsm_host: "192.168.50.64" # Surveillance Station 所在地址(NAS 本机)
|
||||
dsm_port: 5000
|
||||
dsm_account: "${DSM_ACCOUNT}"
|
||||
dsm_password: "${DSM_PASSWORD}"
|
||||
# 摄像头名 -> camera_id 静态映射(优先);启动时还会从 SS 拉一份补全
|
||||
camera_ids: [2] # 轮询关注的摄像头(Generic_ONVIF-001)
|
||||
# 摄像头名 -> camera_id 静态映射(Webhook 路径用;启动时还会从 SS 拉一份补全)
|
||||
camera_name_to_id:
|
||||
"Generic_ONVIF-001": 2
|
||||
oracle_base_url: "http://129.146.203.203:5000" # 与 oracle_sync.base_url 一致
|
||||
oracle_token: "${ORACLE_SYNC_TOKEN}" # 与 oracle_sync.token 一致
|
||||
timeout_sec: 10 # 单次 SS 请求超时(摄像头映射拉取用)
|
||||
# 以下为可选轮询参数(poll_enabled=true 时才生效,当前默认关闭)
|
||||
poll_interval_sec: 60
|
||||
poll_window_hours: 2
|
||||
batch_size: 100
|
||||
timeout_sec: 10 # 单次 SS 请求超时
|
||||
# 心跳:跟轮询 SS 无关,只是定期空 POST 一下甲骨文的 /api/ss/motion,证明
|
||||
# NAS->Oracle 这条推送链路本身还活着(enabled=true 就跑,不受 poll_enabled 影响)。
|
||||
# 甲骨文侧 dsm_motion_prefilter.max_heartbeat_age_sec(默认 900s)据此判断"无运动"
|
||||
# 结论是否可信——这个心跳间隔要明显小于那个阈值,否则会被误判成链路已死。
|
||||
heartbeat_interval_sec: 300
|
||||
# 轮询参数
|
||||
poll_interval_sec: 60 # 轮询间隔
|
||||
poll_window_hours: 2 # 每轮回看窗口(小时),覆盖轮询间隔内的新事件
|
||||
batch_size: 100 # 单批推送上限
|
||||
# Webhook 可选补全(仅 webhook 路径用):收到 webhook 后,以 camera_id+触发时刻
|
||||
# 为中心开此时间窗(秒)回头查 SS 事件列表,匹配最接近的运动事件回填真实
|
||||
# start_time/duration/event_id(Webhook 本身不提供这些字段)。
|
||||
enrich_window_sec: 120
|
||||
|
||||
Reference in New Issue
Block a user