#!/usr/bin/env bash
set -euo pipefail

BASE_URL="${BASE_URL:-http://43.230.201.101:3151}"
ADMIN_TOKEN="${ADMIN_TOKEN:-}"
CHATBOT_ROLE="${CHATBOT_ROLE:-professional}"
CHATBOT_ROUTE="${CHATBOT_ROUTE:-/pro-dashboard/payments}"
K6_VUS="${K6_VUS:-5}"
K6_DURATION="${K6_DURATION:-30s}"

if [ -z "$ADMIN_TOKEN" ]; then
  echo "ADMIN_TOKEN is required"
  echo "Example:"
  echo "  ADMIN_TOKEN=<jwt> npm run test:chatbot:k6:smoke"
  exit 1
fi

echo "Starting chatbot session at ${BASE_URL}..."
START_PAYLOAD="$(printf '{"role":"%s","current_route":"%s"}' "$CHATBOT_ROLE" "$CHATBOT_ROUTE")"
START_RESPONSE="$(
  curl -sS -X POST "${BASE_URL}/api/v1/chatbot/session/start" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer ${ADMIN_TOKEN}" \
    -d "${START_PAYLOAD}"
)"

SESSION_ID="$(
  node -e "const r = JSON.parse(process.argv[1]); process.stdout.write(r?.data?.session_id || '');" "${START_RESPONSE}"
)"

if [ -z "$SESSION_ID" ]; then
  echo "Failed to create chatbot session. Response:"
  echo "${START_RESPONSE}"
  exit 1
fi

echo "Running k6 with session ${SESSION_ID}..."
BASE_URL="${BASE_URL}" \
ADMIN_TOKEN="${ADMIN_TOKEN}" \
CHATBOT_SESSION_ID="${SESSION_ID}" \
k6 run \
  -e BASE_URL="${BASE_URL}" \
  -e ADMIN_TOKEN="${ADMIN_TOKEN}" \
  tests/perf/chatbot-latency.k6.js
