fix(05_inference): error_msg en DB + guard stage04-degraded #11
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user