fix(05_inference): error_msg en DB + guard stage04-degraded #11

Open
floppyrj45 wants to merge 2 commits from fix/05-error-msg-and-stage04-guard into feature/auto-pipeline
Showing only changes of commit 52cd09db1b - Show all commits

View File

@@ -265,6 +265,26 @@ def process_frames_dir(frames_dir: Path, worker_key: str, mission_name: str) ->
if not frames:
continue
print(f"\n[05] === {auv_id}/{seg_dir.name}: {len(frames)} frames ===")
# Guard: skip if stage04 is degraded (no useful frames)
init_db()
with get_conn() as conn_check:
mission_row_check = conn_check.execute(
"SELECT id FROM missions WHERE name=?", (mission_name,)
).fetchone()
if mission_row_check:
s04 = conn_check.execute(
"SELECT status FROM jobs WHERE mission_id=? AND auv_id=? "
"AND segment_label=? AND stage='04_frame_extract'",
(mission_row_check["id"], auv_id, seg_dir.name),
).fetchone()
if s04 and s04["status"] == "degraded":
print(f" [05] SKIP {auv_id}/{seg_dir.name}: stage04=degraded")
upsert_job(conn_check, mission_row_check["id"], auv_id, seg_dir.name,
"05_inference", status="skipped",
error_msg="stage04=degraded, skipped")
continue
m = run_inference(seg_dir, worker_key, mission_name, auv_id, seg_dir.name)
all_metrics.append(m)
@@ -278,6 +298,7 @@ def process_frames_dir(frames_dir: Path, worker_key: str, mission_name: str) ->
conn, mission_row["id"], auv_id, seg_dir.name, "05_inference",
status="done" if m.get("status") == "ok" else m.get("status", "error"),
output_path=m.get("ply", ""),
error_msg=m.get("error", "") if m.get("status") != "ok" else None,
)
record_metric(conn, job_id, "ply_points", value=m.get("n_points", 0),
pass_fail="pass" if m.get("n_points", 0) > 100 else "fail")