#!/usr/bin/env bash
set -euo pipefail

APP="/opt/spectraqm/SpectraQM_V1.0.1.py"
DATA_HOME="${SPECTRAQM_HOME:-$HOME/.local/share/spectraqm}"
VENV="${SPECTRAQM_VENV:-$DATA_HOME/venv}"
PORT="${SPECTRAQM_PORT:-8804}"
# Dependensi inti tidak berubah dari 1.0.0; marker stabil mencegah reinstall saat upgrade.
MARKER="$VENV/.spectraqm-deps-core-v1.ok"
LEGACY_MARKER="$VENV/.spectraqm-deps-1.0.0.ok"

if [[ ! -f "$APP" ]]; then
  echo "ERROR: File aplikasi tidak ditemukan: $APP" >&2
  exit 1
fi

mkdir -p "$DATA_HOME"

if [[ ! -x "$VENV/bin/python" ]]; then
  echo "[SpectraQM] Membuat virtual environment: $VENV"
  python3 -m venv "$VENV"
fi

# Upgrade dari 1.0.0: jika marker lama tersedia, anggap dependensi inti sudah siap.
if [[ -f "$LEGACY_MARKER" && ! -f "$MARKER" ]]; then
  touch "$MARKER"
fi

if [[ "${SPECTRAQM_SKIP_DEP_INSTALL:-0}" != "1" && ! -f "$MARKER" ]]; then
  echo "[SpectraQM] Menyiapkan dependensi Python. Tahap pertama dapat memerlukan beberapa menit..."
  "$VENV/bin/python" -m pip install --disable-pip-version-check --upgrade pip setuptools wheel
  "$VENV/bin/python" -m pip install --disable-pip-version-check --prefer-binary \
    streamlit numpy pandas scipy rdkit pyscf plotly psutil openpyxl XlsxWriter reportlab matplotlib
  "$VENV/bin/python" -m pip install --disable-pip-version-check --prefer-binary geometric py3Dmol || true
  touch "$MARKER"
fi

export SPECTRAQM_PORT="$PORT"
export SPECTRAQM_HOME="$DATA_HOME"

echo "============================================================"
echo " SpectraQM V1.0.1"
echo " Patch: Kontras ruang kanan + Job specification"
echo " URL: http://localhost:${PORT}"
echo " Data: ${DATA_HOME}"
echo " Hentikan server dengan Ctrl+C"
echo "============================================================"

exec "$VENV/bin/python" "$APP"
