#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TMP_DIR="$ROOT/.tmp/operator-handoff"
ENV_FILE="$TMP_DIR/handoff.env"
if [[ ! -f "$ENV_FILE" ]]; then
  echo "handoff_status=not_running"
  echo "hint=run make handoff"
  exit 1
fi
# shellcheck disable=SC1090
source "$ENV_FILE"
check_url() {
  local label="$1" url="$2"
  local code
  code="$(curl -sS --max-time 5 -o /dev/null -w '%{http_code}' "$url" || true)"
  if [[ "$code" == "200" || "$code" == "302" ]]; then
    echo "OK $label $code $url"
  else
    echo "FAIL $label $code $url"
    return 1
  fi
}
check_cors() {
  local label="$1" api_url="$2" origin="$3"
  local header
  header="$(curl -sS --max-time 5 -D - -o /dev/null -H "Origin: $origin" "$api_url" | tr -d '\r' | awk 'tolower($0) ~ /^access-control-allow-origin:/ {print $2}' || true)"
  if [[ "$header" == "$origin" ]]; then
    echo "OK $label cors $origin"
  else
    echo "FAIL $label cors expected=$origin got=${header:-missing}"
    return 1
  fi
}
status=0
check_url "jarvis_dashboard" "$JARVIS_FRONTEND_URL/" || status=1
check_url "jarvis_api" "$JARVIS_API_URL/api/healthz" || status=1
check_url "finance_dashboard" "$FINANCE_FRONTEND_URL/" || status=1
check_url "finance_api" "$FINANCE_API_URL/api/health" || status=1
check_url "autoshorts_dashboard" "$AUTOSHORTS_FRONTEND_URL/" || status=1
check_url "autoshorts_api" "$AUTOSHORTS_API_URL/api/health" || status=1
if [[ -n "${FAMILY_DASHBOARD_URL:-}" ]]; then
  if check_url "family_dashboard" "$FAMILY_DASHBOARD_URL/"; then :; else echo "INFO family_dashboard optional; start FamilyDashboard if needed"; fi
fi
if [[ -n "${HEALTH_DASHBOARD_URL:-}" ]]; then
  check_url "health_dashboard" "$HEALTH_DASHBOARD_URL" || status=1
fi
check_cors "finance_api_from_finance_dashboard" "$FINANCE_API_URL/api/overview" "$FINANCE_FRONTEND_URL" || status=1
check_cors "jarvis_api_from_jarvis_dashboard" "$JARVIS_API_URL/api/overview" "$JARVIS_FRONTEND_URL" || status=1
python3 - "$FINANCE_API_URL" <<'PY' || status=1
import json, sys, urllib.request
api=sys.argv[1]
with urllib.request.urlopen(api + '/api/runtime/status', timeout=5) as r:
    runtime=json.load(r)
with urllib.request.urlopen(api + '/api/overview/finance-command-center?month=2026-06', timeout=5) as r:
    command=json.load(r)
print('OK finance_runtime db_available=%s outside_repo=%s' % (runtime.get('db_available'), runtime.get('runtime_outside_repo')))
print('OK finance_command_center keys=%s kpis=%s imports=%s' % (len(command), len(command.get('kpis', {})), len(command.get('import_status', []))))
PY
exit "$status"
