From e8955aa4066f5617e0ae3f833577fe8481de4b68 Mon Sep 17 00:00:00 2001 From: Flag Date: Wed, 22 Apr 2026 20:19:46 +0000 Subject: [PATCH] =?UTF-8?q?dispatcher=20=C2=97=20status=3Dskipped=20exclus?= =?UTF-8?q?=20du=20stitch=20per=5Fauv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les segments auto-ingested peuvent contenir des vidéos non-exploitables (GoPro sur le pont, hors-eau, bruyantes). Marquer le job skipped empeche linclusion dans le stitch per_auv: total/done comptent hors-skipped, et input_job_ids filtre status=done seulement. Exemple: job 10 AUV209/10:58-11:05 = pull marron + gilet sauvetage sur le pont pendant preparation, reconstruction 3D inutile pour le puzzle. --- scripts/dispatcher.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/dispatcher.py b/scripts/dispatcher.py index 1bc99dc..c4e1f36 100644 --- a/scripts/dispatcher.py +++ b/scripts/dispatcher.py @@ -297,8 +297,9 @@ def _maybe_create_per_auv_stitch(job_id: int): if not job: return acq_id, auv = job["acquisition_id"], job["auv"] + # Skip jobs flagged 'skipped' (bad segments: GoPro on deck, no underwater content). total = conn.execute( - "SELECT COUNT(*) FROM jobs WHERE acquisition_id=? AND auv=?", (acq_id, auv) + "SELECT COUNT(*) FROM jobs WHERE acquisition_id=? AND auv=? AND status != 'skipped'", (acq_id, auv) ).fetchone()[0] done = conn.execute( "SELECT COUNT(*) FROM jobs WHERE acquisition_id=? AND auv=? AND status='done'", (acq_id, auv) @@ -311,7 +312,7 @@ def _maybe_create_per_auv_stitch(job_id: int): if existing: return job_ids = [r["id"] for r in conn.execute( - "SELECT id FROM jobs WHERE acquisition_id=? AND auv=?", (acq_id, auv) + "SELECT id FROM jobs WHERE acquisition_id=? AND auv=? AND status='done'", (acq_id, auv) ).fetchall()] conn.execute( "INSERT INTO stitches (acquisition_id, level, auv, input_job_ids) VALUES (?,?,?,?)",