#!/usr/bin/env bash
# End-to-end smoke: mint a Sanctum token for Pamela, pick a real
# question + a wrong option, POST to /api/questions/{id}/diagnose,
# print Claude's response.
set -e

cd /var/www/html/vocabapi
DBPASS=$(grep ^DB_PASSWORD /var/www/html/mathapi/.env | cut -d= -f2-)

echo "=== Picking a real (question, wrong option) pair ==="
SQL='SELECT q.id AS qid, o.id AS oid FROM questions q JOIN question_options o ON o.question_id=q.id WHERE o.is_correct=0 AND q.is_active=1 ORDER BY q.id LIMIT 1;'
ROW=$(mysql -uroot -p"$DBPASS" vocab -Nse "$SQL" 2>/dev/null)
QID=$(echo "$ROW" | cut -f1)
OID=$(echo "$ROW" | cut -f2)
echo "  question_id=$QID  wrong_option_id=$OID"

echo ""
echo "=== Minting a Sanctum token for Pamela ==="
TOKEN=$(php artisan tinker --execute='
  $u = \App\Models\User::where("email","pamelaliusm@gmail.com")->firstOrFail();
  echo $u->createToken("tutor-smoke")->plainTextToken;
' 2>&1 | tail -1)
echo "  token len: ${#TOKEN}"

echo ""
echo "=== POST /api/questions/${QID}/diagnose ==="
RESP=$(curl -s -X POST "https://vocabapi.allgifted.com/api/questions/${QID}/diagnose" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d "{\"submitted_answer\":{\"type\":\"mcq_single\",\"option_id\":${OID}}}")

echo "$RESP" | php -r '
  $d = json_decode(stream_get_contents(STDIN), true);
  if (!is_array($d)) { echo "raw response: ".$d."\n"; exit; }
  foreach (["ok","source","model","prompt_version"] as $k) {
    if (isset($d[$k])) echo "  $k = ".var_export($d[$k], true).PHP_EOL;
  }
  foreach (["diagnosis","hint","encouragement"] as $k) {
    if (isset($d[$k])) echo "  $k:\n    ".wordwrap((string)$d[$k], 80, "\n    ", true).PHP_EOL;
  }
  if (isset($d["cost"])) {
    echo "  cost: in=".$d["cost"]["input_tokens"]." out=".$d["cost"]["output_tokens"].PHP_EOL;
  }
  if (isset($d["reason"])) echo "  reason: ".$d["reason"].PHP_EOL;
'

echo ""
echo "=== ai_diagnoses table state ==="
mysql -uroot -p"$DBPASS" vocab -e "SELECT question_id, hit_count, cost_input_tokens, cost_output_tokens, model, source := IF(diagnosis IS NOT NULL,'has_data','empty') FROM ai_diagnoses LIMIT 5;" 2>/dev/null

echo ""
echo "=== Cleanup: revoke the smoke token ==="
mysql -uroot -p"$DBPASS" vocab -e "DELETE FROM personal_access_tokens WHERE name='tutor-smoke';" 2>/dev/null
echo "  done"
