From c599257657894f71d2f2a83d3cb94535a0e00c7f Mon Sep 17 00:00:00 2001 From: rene Date: Sat, 30 May 2026 18:30:33 +0200 Subject: [PATCH] =?UTF-8?q?AppStore-Scripts:=20generate=5Fdemo=5Froutes.sh?= =?UTF-8?q?=20=E2=80=94=206=20Routen=20quer=20durch=20DE=20f=C3=BCr=20Revi?= =?UTF-8?q?ewer-Account?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Schreibt 6 öffentliche Pro-Routenvorschläge per /api/routes/suggest + /api/routes ans Reviewer-Konto: Hamburg Alster, Berlin Tiergarten, München Englischer Garten, Köln Stadtwald, Stuttgart Schlossgarten, Dresden Großer Garten. Login via interaktivem Prompt (read -s), Token nur im Skript-Memory. Benötigt curl + jq, Account muss 'pro' sein. --- AppStore/scripts/generate_demo_routes.sh | 105 +++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 AppStore/scripts/generate_demo_routes.sh diff --git a/AppStore/scripts/generate_demo_routes.sh b/AppStore/scripts/generate_demo_routes.sh new file mode 100755 index 0000000..51345c5 --- /dev/null +++ b/AppStore/scripts/generate_demo_routes.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash +# +# Erzeugt 6 öffentliche Routen quer durch Deutschland für den Demo-Account +# (z.B. reviewer@banyaro.app). Login wird interaktiv abgefragt; das Passwort +# läuft nicht durchs Shell-History. +# +# Abhängigkeiten: curl, jq. +# Voraussetzung: Account ist als 'pro' freigeschaltet (Routenvorschläge +# sind Pro-Feature; sonst kommt 403 zurück). +# +# Aufruf: +# ./AppStore/scripts/generate_demo_routes.sh + +set -euo pipefail +BASE="https://banyaro.app" + +command -v jq >/dev/null || { echo "❌ jq fehlt (brew install jq)"; exit 1; } +command -v curl >/dev/null || { echo "❌ curl fehlt"; exit 1; } + +echo "📍 Reviewer-Demo-Routen: 6 öffentliche Routen quer durch Deutschland" +echo "" +read -r -p "E-Mail: " EMAIL +read -r -s -p "Passwort: " PASS; echo "" +echo "" + +# ── 1. Login ────────────────────────────────────────────────────── +LOGIN_RESP=$(curl -s -X POST "$BASE/api/auth/login" \ + -H "Content-Type: application/json" \ + -d "$(jq -nc --arg e "$EMAIL" --arg p "$PASS" '{email:$e,password:$p}')") + +TOKEN=$(echo "$LOGIN_RESP" | jq -r '.token // empty') +if [ -z "$TOKEN" ]; then + echo "❌ Login fehlgeschlagen:" + echo "$LOGIN_RESP" | jq . + exit 1 +fi +echo "✓ Eingeloggt" + +# ── 2. Hund-ID holen (erstes Tier am Account) ───────────────────── +DOG_ID=$(curl -s "$BASE/api/dogs" -H "Authorization: Bearer $TOKEN" | jq -r '.[0].id // empty') +if [ -z "$DOG_ID" ]; then + echo "❌ Kein Hund am Account — leg erst einen an."; exit 1 +fi +echo "✓ Hund-ID $DOG_ID gefunden" +echo "" + +# ── 3. Routen-Definitionen ──────────────────────────────────────── +# name | lat | lon | km | seed | is_public +ROUTES=( + "Hamburg — Alster-Rundweg|53.5594|9.9971|4|1|true" + "Berlin — Tiergarten-Schleife|52.5145|13.3501|3|2|true" + "München — Englischer Garten|48.1641|11.6053|5|3|true" + "Köln — Stadtwald-Runde|50.9290|6.9094|4|4|true" + "Stuttgart — Schlossgarten|48.7796|9.1822|3|5|true" + "Dresden — Großer Garten|51.0354|13.7607|5|6|true" +) + +# ── 4. Pro Route: Vorschlag holen, dann speichern ───────────────── +saved=0 +for entry in "${ROUTES[@]}"; do + IFS='|' read -r name lat lon km seed pub <<< "$entry" + printf "→ %-40s " "$name" + + SUG=$(curl -s -X POST "$BASE/api/routes/suggest" \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d "$(jq -nc --argjson la "$lat" --argjson lo "$lon" --argjson km "$km" --argjson sd "$seed" \ + '{lat:$la, lon:$lo, distance_km:$km, seed:$sd}')") + + TRACK=$(echo "$SUG" | jq -c '.gps_track // empty') + DIST=$( echo "$SUG" | jq -r '.distanz_km // empty') + DUR=$( echo "$SUG" | jq -r '.dauer_min // empty') + + if [ -z "$TRACK" ] || [ "$TRACK" = "null" ]; then + echo "✗ ORS-Fehler:" + echo "$SUG" | jq . | sed 's/^/ /' + continue + fi + + BODY=$(jq -nc \ + --arg name "$name" \ + --argjson track "$TRACK" \ + --argjson dist "$DIST" \ + --argjson dur "$DUR" \ + --argjson dog "$DOG_ID" \ + --argjson pub "$pub" \ + '{name:$name, gps_track:$track, distanz_km:$dist, dauer_min:$dur, dog_ids:[$dog], is_public:$pub}') + + SAVE=$(curl -s -X POST "$BASE/api/routes" \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d "$BODY") + + RID=$(echo "$SAVE" | jq -r '.id // empty') + if [ -n "$RID" ] && [ "$RID" != "null" ]; then + echo "✓ #$RID ($DIST km, $DUR min)" + saved=$((saved + 1)) + else + echo "✗ Speichern fehlgeschlagen:" + echo "$SAVE" | jq . | sed 's/^/ /' + fi +done + +echo "" +echo "Fertig: $saved von ${#ROUTES[@]} Routen gespeichert."