hm_ai_qc_report_tool/modules/video_master/matching
nickviljoen 3dd0420145 Video Master: version grouping, 3-pass duration cascade, report download
- Folder discovery groups files by version (V1, V2, ...); only the highest
  version per master/adapt is matched. Lower versions are reported as
  "superseded" so users can see what was skipped.
- Matching is now an asymmetric 3-pass cascade per adaptation:
    Pass 1: masters of same duration (±0.5s) — pHash + AKAZE
    Pass 2: masters strictly longer than the adapt — pHash + AKAZE
            (shorter masters can't have produced the adapt; never compared)
    Pass 3: AI Vision on same-duration / different-resolution masters,
            triggered only when Passes 1 and 2 find nothing (covers crops).
- AI Vision default switched from gpt-4o to gemini-2.5-flash (~10x cheaper)
  and re-enabled in CampaignMatcher.
- Master temp files now persist for the whole run so Pass 3 can re-read
  frames; cleanup still happens via shutil.rmtree at end of run.
- Report shows a "Resolved at" badge per match (Pass 1/2/3) and a new
  Superseded Files section.
- New /video-master/report/<id>/download endpoint serves the saved HTML
  with attachment headers; Download buttons added to results.html and
  view_report.html.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:44:43 +02:00
..
__init__.py Add modular architecture, core framework, and web UI 2026-02-25 11:39:04 +02:00
ai_vision.py Video Master: version grouping, 3-pass duration cascade, report download 2026-04-28 12:44:43 +02:00
fingerprinter.py Add modular architecture, core framework, and web UI 2026-02-25 11:39:04 +02:00
matcher.py Video Master: version grouping, 3-pass duration cascade, report download 2026-04-28 12:44:43 +02:00
metadata_parser.py Video Master: version grouping, 3-pass duration cascade, report download 2026-04-28 12:44:43 +02:00
video_akaze.py Add modular architecture, core framework, and web UI 2026-02-25 11:39:04 +02:00