From 55b65195af9d5a02b51c6912cf37fea0fc1279d6 Mon Sep 17 00:00:00 2001 From: rene Date: Sat, 30 May 2026 18:36:50 +0200 Subject: [PATCH] =?UTF-8?q?AppStore-Scripts:=20generate=5Fdemo=5Fdiary.sh?= =?UTF-8?q?=20=E2=80=94=208=20zur=C3=BCckdatierte=20Tagebuch-Eintr=C3=A4ge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 6 Einträge passen örtlich + zeitlich zu den vorigen Demo-Routen (Hamburg, Berlin, Köln, Stuttgart, Dresden, München), plus Meilenstein 'Erster Tag bei uns' (2026-03-15) und Tierarzt-Check (2026-04-28). Mit Tags, GPS und Location-Name. Ende des Skripts ist ein SQL-Block für die DS, der die Routen auf die passenden Daten setzt (Routes haben keine API-Felder für created_at). --- AppStore/scripts/generate_demo_diary.sh | 114 ++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 AppStore/scripts/generate_demo_diary.sh diff --git a/AppStore/scripts/generate_demo_diary.sh b/AppStore/scripts/generate_demo_diary.sh new file mode 100755 index 0000000..2494868 --- /dev/null +++ b/AppStore/scripts/generate_demo_diary.sh @@ -0,0 +1,114 @@ +#!/usr/bin/env bash +# +# Schreibt 8 Tagebuch-Einträge mit zurückdatierten Datums über die +# letzten ~10 Wochen. 6 davon passen örtlich/zeitlich zu den vorher +# generierten Routen, 2 sind „Alltag" (Milestone + Tierarzt). +# +# Routen-Daten (passen zu den vorigen 6 Demo-Routen): +# 2026-04-05 Hamburg Stadtpark +# 2026-04-12 Berlin Tempelhofer Feld +# 2026-04-22 Köln Stadtwald +# 2026-05-02 Stuttgart Schlossgarten +# 2026-05-12 Dresden Großer Garten +# 2026-05-25 München Englischer Garten +# +# Plus: +# 2026-03-15 Milestone „Erster Tag bei uns" +# 2026-04-28 Tierarzt-Check +# +# Aufruf: +# ./AppStore/scripts/generate_demo_diary.sh + +set -euo pipefail +BASE="https://banyaro.app" + +command -v jq >/dev/null || { echo "❌ jq fehlt"; exit 1; } +command -v curl >/dev/null || { echo "❌ curl fehlt"; exit 1; } + +echo "📓 Demo-Tagebuch: 8 Einträge über die letzten ~10 Wochen" +echo "" +read -r -p "E-Mail: " EMAIL +read -r -s -p "Passwort: " PASS; echo "" +echo "" + +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" + +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"; exit 1 +fi +echo "✓ Hund-ID $DOG_ID" +echo "" + +# datum|typ|titel|text|tags_json|lat|lon|location_name|milestone +ENTRIES=( + "2026-03-15|meilenstein|Erster Tag bei uns|Heute ist es so weit — Luna ist eingezogen. Schaut sich alles aufgeregt an, hat schon zweimal das Sofa erobert.|[\"milestone\",\"einzug\"]|||| true" + "2026-04-05|eintrag|Hamburg Stadtpark|Wochenend-Trip in den Norden. Erstes Frühlings-Gassi im Stadtpark, Luna hat eine Stunde geschnüffelt und sich danach in der Sonne ausgestreckt.|[\"spaziergang\",\"park\",\"reise\"]|53.5905|10.0144|Hamburger Stadtpark|false" + "2026-04-12|eintrag|Tempelhofer Feld|Mega weiter Himmel und Wind unter den Pfoten. Luna findet das große Freilauffeld klasse, hat anderen Hunden Hallo gesagt ohne Drama.|[\"spaziergang\",\"freilauf\",\"reise\"]|52.4734|13.4023|Tempelhofer Feld|false" + "2026-04-22|eintrag|Erste Zecke im Jahr|Heute im Kölner Stadtwald die erste Zecke entdeckt — beim Auskämmen am Abend gefunden, sauber rausgezogen. Spot-on jetzt für die Saison.|[\"gesundheit\",\"zecken\"]|50.9290|6.9094|Kölner Stadtwald|false" + "2026-04-28|eintrag|Tierarzt-Check|Jahres-Untersuchung war fällig. Gewicht passt, Zähne ok, Impfung Tollwut+Lepto erneuert. Nächster Termin in 12 Monaten.|[\"tierarzt\",\"impfung\"]||||false" + "2026-05-02|eintrag|Stuttgart Schlossgarten|Brückentag genutzt, kurzer Schwabenausflug. Schlossgarten mittendrin in der Stadt, viele Menschen aber Luna bleibt cool.|[\"spaziergang\",\"reise\"]|48.7796|9.1822|Stuttgart Schlossgarten|false" + "2026-05-12|eintrag|Dresden Großer Garten|Verlängertes Maiwochenende in Dresden. Der Große Garten ist riesig, die kleine Bahn fährt sogar noch — Luna fand sie unbeeindruckend.|[\"spaziergang\",\"park\",\"reise\"]|51.0354|13.7607|Dresden Großer Garten|false" + "2026-05-25|eintrag|Sommer im Englischen Garten|Erster richtiger Sommertag in München. Englischer Garten ab 8 Uhr früh, danach im Eisbach abgekühlt. Luna hat alle Pfoten ins Wasser gehalten.|[\"spaziergang\",\"sommer\",\"reise\"]|48.1641|11.6053|Englischer Garten München|false" +) + +saved=0 +for entry in "${ENTRIES[@]}"; do + IFS='|' read -r datum typ titel text tags lat lon loc milestone <<< "$entry" + printf "→ %-32s %s ... " "$datum" "$titel" + + BODY=$(jq -nc \ + --arg datum "$datum" \ + --arg typ "$typ" \ + --arg titel "$titel" \ + --arg text "$text" \ + --argjson tags "$tags" \ + --argjson dog "$DOG_ID" \ + --argjson ms "$milestone" \ + --arg lat "$lat" \ + --arg lon "$lon" \ + --arg loc "$loc" \ + '{ + datum:$datum, typ:$typ, titel:$titel, text:$text, tags:$tags, + dog_ids:[$dog], is_milestone:$ms, + gps_lat: (if $lat == "" then null else ($lat|tonumber) end), + gps_lon: (if $lon == "" then null else ($lon|tonumber) end), + location_name: (if $loc == "" then null else $loc end) + }') + + RESP=$(curl -s -X POST "$BASE/api/dogs/$DOG_ID/diary" \ + -H "Authorization: Bearer $TOKEN" \ + -H "Content-Type: application/json" \ + -d "$BODY") + + ID=$(echo "$RESP" | jq -r '.id // empty') + if [ -n "$ID" ] && [ "$ID" != "null" ]; then + echo "✓ #$ID" + saved=$((saved + 1)) + else + echo "✗" + echo "$RESP" | jq . | sed 's/^/ /' + fi +done + +echo "" +echo "Fertig: $saved von ${#ENTRIES[@]} Tagebuch-Einträge gespeichert." +echo "" +echo "ROUTEN AUCH ZURÜCKDATIEREN (auf der DS):" +cat <<'SQL' +ssh -t ds 'sudo sqlite3 /volume1/docker/banyaro/data/banyaro.db <