feat: scan result history — keep N versions per (file, model)
Add scan_timestamp column to scan_results. save_scan_results now inserts with a timestamp and prunes versions beyond max_versions (default 5). get_scan_results returns only the latest version by default, with optional scan_timestamp parameter for loading specific versions. New get_scan_versions method returns available versions for a (file, profile, model) tuple. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import os
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from core.db import ProcessedDB
|
||||
|
||||
@@ -23,3 +24,29 @@ def test_export_folders_excludes_scan_exports():
|
||||
assert "mp4_ScanOnly" in folders_all
|
||||
finally:
|
||||
os.unlink(path)
|
||||
|
||||
|
||||
def test_scan_result_history():
|
||||
"""save_scan_results should keep multiple versions."""
|
||||
with tempfile.NamedTemporaryFile(suffix=".db", delete=False) as f:
|
||||
path = f.name
|
||||
try:
|
||||
db = ProcessedDB(path)
|
||||
# Save three versions with small delays so timestamps differ
|
||||
db.save_scan_results("v.mp4", "test", "MODEL_A", [(0, 8, 0.9)])
|
||||
time.sleep(1.1)
|
||||
db.save_scan_results("v.mp4", "test", "MODEL_A",
|
||||
[(0, 8, 0.8), (10, 18, 0.7)])
|
||||
time.sleep(1.1)
|
||||
db.save_scan_results("v.mp4", "test", "MODEL_A", [(5, 13, 0.95)])
|
||||
versions = db.get_scan_versions("v.mp4", "test", "MODEL_A")
|
||||
assert len(versions) == 3
|
||||
# Most recent first
|
||||
assert versions[0]["count"] == 1 # latest: 1 region
|
||||
assert versions[1]["count"] == 2 # middle: 2 regions
|
||||
assert versions[2]["count"] == 1 # oldest: 1 region
|
||||
# get_scan_results returns latest version by default
|
||||
results = db.get_scan_results("v.mp4", "test")
|
||||
assert len(results.get("MODEL_A", [])) == 1
|
||||
finally:
|
||||
os.unlink(path)
|
||||
|
||||
Reference in New Issue
Block a user