#!/usr/bin/env bash
# AI-PHONE LIVE — start the pipeline server (5555/8767) + DevOps API (8000)
# from THIS directory, in the blood-bot-v1 conda env. Path-independent.
set -uo pipefail
PROJECT_DIR="$(dirname "$(readlink -f "$0")")"
CONDA_ENV="blood-bot-v1"

PID_FILE="$PROJECT_DIR/flask_pid.txt"
LOG_FILE="$PROJECT_DIR/start_flask.log"
DEVOPS_DIR="$PROJECT_DIR/DEVOPSAPI"
DEVOPS_PID_FILE="$PROJECT_DIR/devops_pid.txt"
DEVOPS_LOG_FILE="$PROJECT_DIR/devops_api.log"

# --- activate conda env ---
source ~/miniconda3/etc/profile.d/conda.sh
conda activate "$CONDA_ENV" || { echo "FATAL: cannot activate conda env '$CONDA_ENV'"; exit 1; }

now() { date "+%Y-%m-%d %H:%M:%S"; }

# --- guard: refuse to double-start ---
if [ -f "$PID_FILE" ] && ps -p "$(cat "$PID_FILE" 2>/dev/null)" >/dev/null 2>&1; then
    echo "pipeline server already running (PID $(cat "$PID_FILE")) — run ./stop.sh first"
    exit 1
fi

# --- pipeline / Flask server ---
cd "$PROJECT_DIR"
nohup python qwen_pipeline_server.py >> "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
sleep 2
if ps -p "$(cat "$PID_FILE")" >/dev/null 2>&1; then
    echo "[$(now)] pipeline server started PID $(cat "$PID_FILE")" | tee -a "$LOG_FILE"
else
    echo "[$(now)] pipeline server FAILED to start — last lines:" | tee -a "$LOG_FILE"
    tail -n 8 "$LOG_FILE"
    rm -f "$PID_FILE"
fi

# --- DevOps API (port 8000) ---
cd "$DEVOPS_DIR"
nohup python main.py >> "$DEVOPS_LOG_FILE" 2>&1 &
echo $! > "$DEVOPS_PID_FILE"
sleep 2
if ps -p "$(cat "$DEVOPS_PID_FILE")" >/dev/null 2>&1; then
    echo "[$(now)] devops api started PID $(cat "$DEVOPS_PID_FILE")" | tee -a "$DEVOPS_LOG_FILE"
else
    echo "[$(now)] devops api FAILED to start — last lines:" | tee -a "$DEVOPS_LOG_FILE"
    tail -n 8 "$DEVOPS_LOG_FILE"
    rm -f "$DEVOPS_PID_FILE"
fi
