#!/usr/bin/env bash
#
# Партнёрское API Тэрил: весь круг на curl и jq.
#
#   TERIL_BASE=https://teril.example.ru TERIL_KEY=pk_… ./curl.sh
#
# Ждём исход ОПРОСОМ, чтобы пример работал без публичного адреса. В работе
# исход ловится вебхуком (../webhooks.md), а опрос остаётся защитой для ходов,
# по которым уведомление не дошло.
set -euo pipefail

BASE="${TERIL_BASE:?задайте TERIL_BASE}"
KEY="${TERIL_KEY:?задайте TERIL_KEY}"
AUTH=(-H "Authorization: Bearer $KEY")
JSON=(-H 'Content-Type: application/json')

say() { printf '\n== %s\n' "$*"; }

say 'связь'
curl -fsS "$BASE/v1/health" | jq -c

say 'остаток монет'
curl -fsS "${AUTH[@]}" "$BASE/v1/usage" | jq -c '.usage | {coins_left, period_end}'

say 'разговор'
CONV=$(curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" "$BASE/v1/conversations" \
  -d '{"external_id":"demo-lead-1"}' | jq -r '.conversation.id')
echo "$CONV"

say 'просьба клиента'
# Idempotency-Key — ваш id сообщения. Без него повтор после обрыва сети
# купит второй ход за те же деньги.
TURN=$(curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" \
  -H 'Idempotency-Key: demo-msg-1' \
  "$BASE/v1/conversations/$CONV/turns" \
  -d '{"text":"Кухня вдоль одной стены 3 метра. Мойка, посудомойка 60, варочная, духовка. Сверху навесные шкафы."}' \
  | jq -r '.turn.id')
echo "$TURN"

say 'ждём исход'
for _ in $(seq 1 120); do
  T=$(curl -fsS "${AUTH[@]}" "$BASE/v1/turns/$TURN")
  STATE=$(jq -r '.turn.state' <<<"$T")
  [[ "$STATE" == queued || "$STATE" == running ]] || break
  sleep 5
done
jq -c '.turn | {state, status, note: .result.note, applied: .result.applied, coins: .result.usage.coins}' <<<"$T"

say 'расход материалов'
curl -fsS "${AUTH[@]}" "$BASE/v1/conversations/$CONV/bom" \
  | jq '{плита_м2: ([.bom.sheets[].area_mm2] | add / 1e6 | .*10|round/10),
         кромка_м:  ([.bom.edges[].length_mm]  | add / 1000 | .*10|round/10),
         изделия:   [.bom.pieces[] | "\(.name): \(.qty)"]}'

say 'картинка клиенту (ссылка живёт сутки, ключа не требует)'
curl -fsS "${AUTH[@]}" "$BASE/v1/conversations/$CONV/render?format=html&link=1" | jq -r '.url'

say 'чертёж себе в вёрстку'
curl -fsS "${AUTH[@]}" "$BASE/v1/conversations/$CONV/render?format=svg" -o kitchen.svg
echo 'kitchen.svg'

# say 'в производство'
# curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" \
#   "$BASE/v1/conversations/$CONV/handoff" -d '{"seat":"Цех на Ленина"}' | jq -c
