#!/usr/bin/env bash
# chay_app.sh <hlqt|calib|lab> — chạy server + worker của 1 app (dùng cho systemd hoặc chạy tay).
set -e

UP="${1:?dùng: bash cai_dat/chay_app.sh <hlqt|calib|lab>}"
GOC="$(cd "$(dirname "$0")/.." && pwd)"
cd "$GOC"
PY="$GOC/venv/bin/python"
[ -x "$PY" ] || PY="$(command -v python3)"

case "$UP" in
  hlqt)  S="apps/hlqt/server_hlqt.py";   W="apps/hlqt/worker_hlqt.py"   ;;
  calib) S="apps/calib/server_calib.py"; W="apps/calib/worker_calib.py" ;;
  lab)   S="apps/lab/server_lab.py";     W="apps/lab/worker_lab.py"     ;;
  *) echo "app không hợp lệ: $UP (chọn hlqt | calib | lab)"; exit 2 ;;
esac

mkdir -p logs
echo "[$(date '+%F %T')] khởi động $UP — server=$S worker=$W (python: $PY)"

"$PY" "$S" >> "logs/$UP-server.log" 2>&1 &
SRV=$!
sleep 1
"$PY" "$W" >> "logs/$UP-worker.log" 2>&1 &
WRK=$!

# tắt cả 2 khi nhận SIGTERM (systemd stop)
trap 'kill "$SRV" "$WRK" 2>/dev/null; wait' TERM INT
wait
