#!/bin/bash
set -euo pipefail
REPO=/home/brad/proj/sonice-ai-sentinel-edge
VIDEO=/mnt/nas/archives/glass-factory/drive-0617/強化上片-20260617-0800-1200.mp4
FRAMES=$REPO/cursor-glass-factory/media/proxies/a1_frames
PROXY=$REPO/cursor-glass-factory/media/proxies/load_0800_a1_0930_1030_1fps.mp4
PY=$REPO/.cache/roven-real-model-eval/venv/bin/python
OUT=$REPO/cursor-glass-factory/runs/phase_a1_pilot
LOG=$REPO/cursor-glass-factory/logs/phase_a1_run.log
WAIT=$REPO/cursor-glass-factory/logs/phase_a1_pipeline.log

exec >>"$WAIT" 2>&1
echo "PIPELINE_START $(date -Iseconds)"

mkdir -p "$FRAMES" "$OUT" "$REPO/cursor-glass-factory/logs"

# 1) Ensure ~3600 frames
n=$(ls "$FRAMES"/f_*.jpg 2>/dev/null | wc -l || echo 0)
if [[ "$n" -lt 3500 ]]; then
  echo "Extracting frames (have $n)..."
  rm -rf "$FRAMES"
  mkdir -p "$FRAMES"
  ffmpeg -y -ss 5400 -i "$VIDEO" -t 3600 -vf fps=1 -q:v 3 "$FRAMES/f_%05d.jpg"
  n=$(ls "$FRAMES"/f_*.jpg | wc -l)
  echo "Extracted n=$n"
fi

# 2) Pack proxy mp4 for scrub source (non-fatal)
ffmpeg -y -framerate 1 -i "$FRAMES/f_%05d.jpg" -c:v libx264 -pix_fmt yuv420p -crf 23 "$PROXY" || true

# 3) Health check services
curl -sf http://127.0.0.1:18085/healthz >/dev/null
curl -sf http://127.0.0.1:18086/healthz >/dev/null

# 4) Run analysis
echo "START_A1 $(date -Iseconds)" | tee "$LOG"
"$PY" "$REPO/cursor-glass-factory/scripts/run_phase_a1.py" \
  --frames-dir "$FRAMES" \
  --zones "$REPO/cursor-glass-factory/configs/shengmuglass-tempering-load.zones.json" \
  --out-dir "$OUT" \
  --video-t0 5400 \
  --overlay-every 1 | tee -a "$LOG"
echo "END_A1 $(date -Iseconds)" | tee -a "$LOG"

"$PY" "$REPO/cursor-glass-factory/scripts/compute_metrics.py" \
  --run-dir "$OUT" \
  --gt-json "$REPO/cursor-glass-factory/data/gt_a1_0930_1030.json" \
  --out "$REPO/cursor-glass-factory/metrics/phase_a1.json" | tee -a "$LOG"

"$PY" "$REPO/cursor-glass-factory/scripts/build_audit_ui.py" \
  --run-dir "$OUT" \
  --gt-json "$REPO/cursor-glass-factory/data/gt_a1_0930_1030.json" \
  --video-rel "overlay_1fps.mp4" \
  --out-html "$OUT/audit.html" | tee -a "$LOG"

# fallback: if overlay mp4 missing, symlink proxy
if [[ ! -f "$OUT/overlay_1fps.mp4" && -f "$PROXY" ]]; then
  ln -sfn "$PROXY" "$OUT/overlay_1fps.mp4"
fi

echo "PIPELINE_DONE $(date -Iseconds)" | tee -a "$LOG"
echo "AUDIT=$OUT/audit.html"
