40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Insert processing audit log entries within an existing DB transaction."""
|
|
|
|
import json
|
|
import logging
|
|
from datetime import datetime, timezone
|
|
from typing import List, Optional
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def insert_log(
|
|
cursor,
|
|
video_id: int,
|
|
model_version: str,
|
|
frame_count: int,
|
|
confidence_score: Optional[float],
|
|
routing_decision: str,
|
|
frame_confidences: Optional[List[float]] = None,
|
|
) -> None:
|
|
"""Insert one row into processing_logs; must be called inside an open transaction."""
|
|
now = datetime.now(timezone.utc).replace(tzinfo=None)
|
|
confidence_scores_json = json.dumps(frame_confidences) if frame_confidences is not None else None
|
|
|
|
cursor.execute(
|
|
"""INSERT INTO processing_logs
|
|
(video_id, model_version, frame_count, confidence_score,
|
|
confidence_scores, routing_decision, processed_at)
|
|
VALUES (%s, %s, %s, %s, %s, %s, %s)""",
|
|
(
|
|
video_id,
|
|
model_version,
|
|
frame_count or 0,
|
|
confidence_score,
|
|
confidence_scores_json,
|
|
routing_decision,
|
|
now,
|
|
),
|
|
)
|
|
logger.debug("Inserted processing log for video %s (routing=%s)", video_id, routing_decision)
|