feat(Q1): highlight reel event scoring and FFmpeg clip assembly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
36
tests/unit/test_reel.py
Normal file
36
tests/unit/test_reel.py
Normal file
@@ -0,0 +1,36 @@
|
||||
import datetime
|
||||
import time
|
||||
import pytest
|
||||
from vigilar.highlights.reel import score_event, select_top_events
|
||||
from vigilar.constants import EventType
|
||||
from vigilar.storage.queries import insert_event
|
||||
from vigilar.config import HighlightsConfig
|
||||
|
||||
def test_score_pet_escape():
|
||||
assert score_event(EventType.PET_ESCAPE, {}) == 10
|
||||
|
||||
def test_score_wildlife_predator():
|
||||
assert score_event(EventType.WILDLIFE_PREDATOR, {}) == 9
|
||||
|
||||
def test_score_person_detected():
|
||||
assert score_event(EventType.PERSON_DETECTED, {}) == 4
|
||||
|
||||
def test_score_unknown_returns_zero():
|
||||
assert score_event(EventType.MOTION_START, {}) == 0
|
||||
|
||||
def test_score_pet_high_motion():
|
||||
assert score_event(EventType.PET_DETECTED, {"motion_confidence": 0.9}) == 6
|
||||
|
||||
def test_score_pet_normal():
|
||||
assert score_event(EventType.PET_DETECTED, {"motion_confidence": 0.3}) == 1
|
||||
|
||||
def test_select_top_events(test_db):
|
||||
today = datetime.date.today()
|
||||
insert_event(test_db, EventType.PET_ESCAPE, "ALERT", source_id="cam1", payload={"pet_name": "Angel"})
|
||||
insert_event(test_db, EventType.PERSON_DETECTED, "WARNING", source_id="cam1")
|
||||
insert_event(test_db, EventType.WILDLIFE_PREDATOR, "CRITICAL", source_id="cam2", payload={"species": "bear"})
|
||||
insert_event(test_db, EventType.MOTION_START, "WARNING", source_id="cam1")
|
||||
config = HighlightsConfig(max_clips=3)
|
||||
events_list = select_top_events(test_db, today, config)
|
||||
assert len(events_list) <= 3
|
||||
assert events_list[0]["type"] in (EventType.PET_ESCAPE, EventType.WILDLIFE_PREDATOR)
|
||||
Reference in New Issue
Block a user