feat: 添加离岗时长记录
- alert_records 添加 duration_minutes 字段 - AlgorithmManager 输出 duration_minutes - AlertRecord 添加 duration_minutes 字段
This commit is contained in:
@@ -155,9 +155,9 @@ class LeavePostAlgorithm:
|
||||
"track_id": roi_id,
|
||||
"camera_id": camera_id,
|
||||
"bbox": bbox,
|
||||
"off_duty_duration": elapsed,
|
||||
"duration_minutes": elapsed_minutes,
|
||||
"alert_type": "leave_post",
|
||||
"message": f"离岗超过 {elapsed_minutes} 分钟",
|
||||
"message": f"离岗 {elapsed_minutes} 分钟",
|
||||
})
|
||||
self.alert_cooldowns[cooldown_key] = now
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ class AlertRecord:
|
||||
status: str = "pending"
|
||||
created_at: datetime = field(default_factory=datetime.now)
|
||||
processed_at: Optional[datetime] = None
|
||||
duration_minutes: Optional[float] = None
|
||||
|
||||
|
||||
class SQLiteManager:
|
||||
@@ -121,7 +122,8 @@ class SQLiteManager:
|
||||
image_path TEXT,
|
||||
status TEXT DEFAULT 'pending',
|
||||
created_at TEXT NOT NULL,
|
||||
processed_at TEXT
|
||||
processed_at TEXT,
|
||||
duration_minutes REAL
|
||||
)
|
||||
""")
|
||||
|
||||
@@ -242,8 +244,9 @@ class SQLiteManager:
|
||||
INSERT OR REPLACE INTO alert_records (
|
||||
alert_id, camera_id, roi_id, alert_type,
|
||||
target_class, confidence, bbox, message,
|
||||
image_path, status, created_at, processed_at
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
image_path, status, created_at, processed_at,
|
||||
duration_minutes
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
""", (
|
||||
record['alert_id'],
|
||||
record['camera_id'],
|
||||
@@ -257,6 +260,7 @@ class SQLiteManager:
|
||||
record.get('status', 'pending'),
|
||||
record['created_at'],
|
||||
record.get('processed_at'),
|
||||
record.get('duration_minutes'),
|
||||
))
|
||||
|
||||
self._conn.commit()
|
||||
@@ -290,6 +294,7 @@ class SQLiteManager:
|
||||
'status': alert.status,
|
||||
'created_at': alert.created_at.isoformat(),
|
||||
'processed_at': alert.processed_at.isoformat() if alert.processed_at else None,
|
||||
'duration_minutes': alert.duration_minutes,
|
||||
}
|
||||
self._write_queue.put(record)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user