safesight/control/scripts/deploy/relax-alarms.py
tian 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

40 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""调整生产环境告警阈值——降低人脸误报和劳保鞋告警频率。
运行后重新下发设备配置即生效。"""
import sqlite3, json
DB = '/opt/safesightd/data/app.db'
TEMPLATE = 'std_workshop_face_recognition_shoe_alarm'
c = sqlite3.connect(DB)
body = json.loads(c.execute("SELECT body_json FROM templates WHERE name=?", (TEMPLATE,)).fetchone()[0])
nodes = body['template']['nodes']
for n in nodes:
if n.get('id') != 'alarm_violation':
continue
# 劳保鞋
for r in n.get('rules', []):
if r['name'] == 'non_compliant_workshoe':
r['min_score'] = 0.5
r['cooldown_ms'] = 60000
r['min_hits'] = 3
r['min_duration_ms'] = 1500
# 陌生人脸
for r in n.get('face_rules', []):
if r['name'] == 'unknown_face':
r['cooldown_ms'] = 30000
r['max_known_sim'] = 0.2
r['min_hits'] = 4
r['hit_window_ms'] = 3000
elif r['name'] == 'known_person':
r['cooldown_ms'] = 30000
r['min_sim'] = 0.75
r['min_hits'] = 3
r['hit_window_ms'] = 2000
c.execute("UPDATE templates SET body_json=? WHERE name=?", (json.dumps(body, ensure_ascii=False), TEMPLATE))
c.commit()
c.close()
print('OK — 重新下发设备配置即生效')