fix: harden v1.2 trajectory disposal matching

This commit is contained in:
Yoilun
2026-05-29 16:26:15 +08:00
parent 90aa5dd704
commit 100b949f1f
11 changed files with 248 additions and 36 deletions

View File

@@ -250,6 +250,33 @@ class BatchEngineTests(unittest.TestCase):
self.assertEqual([(event["event"], event["zone_id"]) for event in events], [("batch_discarded", "4")])
self.assertEqual([batch.zone_id for batch in engine.pending_disposal], ["1"])
def test_extra_trash_deposits_still_fallback_after_matching_disposal_evidence(self) -> None:
settings = EngineSettings(
camera_id="test_cam",
max_dwell_seconds=1200,
trash_confirmation_seconds=120,
zone_ids=("1", "2"),
)
engine = BatchEngine(settings)
engine.process(obs(self.t0, {"1": 1, "2": 1}))
engine.process(obs(self.t0 + timedelta(seconds=1200), {"1": 1, "2": 1}))
engine.process(obs(self.t0 + timedelta(seconds=1300), {"1": 0, "2": 0}))
events = engine.process(
obs(
self.t0 + timedelta(seconds=1310),
{"1": 0, "2": 0},
trash=2,
disposal_evidence=[disposal_evidence("1")],
)
)
self.assertEqual(
[(event["event"], event["zone_id"]) for event in events],
[("batch_discarded", "1"), ("batch_discarded", "2")],
)
self.assertEqual(engine.pending_disposal, [])
def test_same_observation_removal_and_disposal_evidence_discards_newly_pending_batch(self) -> None:
settings = EngineSettings(
camera_id="test_cam",