dispatcher — status=skipped exclus du stitch per_auv

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.
This commit is contained in:
Flag
2026-04-22 20:19:46 +00:00
parent fa996f62d6
commit e8955aa406

View File

@@ -297,8 +297,9 @@ def _maybe_create_per_auv_stitch(job_id: int):
if not job: if not job:
return return
acq_id, auv = job["acquisition_id"], job["auv"] acq_id, auv = job["acquisition_id"], job["auv"]
# Skip jobs flagged 'skipped' (bad segments: GoPro on deck, no underwater content).
total = conn.execute( 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] ).fetchone()[0]
done = conn.execute( done = conn.execute(
"SELECT COUNT(*) FROM jobs WHERE acquisition_id=? AND auv=? AND status='done'", (acq_id, auv) "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: if existing:
return return
job_ids = [r["id"] for r in conn.execute( 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()] ).fetchall()]
conn.execute( conn.execute(
"INSERT INTO stitches (acquisition_id, level, auv, input_job_ids) VALUES (?,?,?,?)", "INSERT INTO stitches (acquisition_id, level, auv, input_job_ids) VALUES (?,?,?,?)",