Files
crumbmissions/missions/evaluate_mission_data.sh
Branko May Trinkwald 08dd5605a8 fun in the sun <3
2025-12-23 22:25:11 +01:00

139 lines
4.5 KiB
Bash
Executable File

#!/bin/bash
# 🚀 Mission Data Evaluator (Master Gateway)
# Liest JSON vom Browser und routet zur richtigen Mission.
# Waldwächter laden
# Waldwächter laden
MISSION_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${MISSION_DIR}/../lib/waldwaechter.sh"
clear
cat << "EOF"
📡 CRUMB-MISSION DATA LINK 📡
Verbindung zum Browser wird hergestellt...
Anleitung:
1. Öffne die Crumbblocks Mission im Browser
2. Baue deinen Code und klicke "▶️ Ausführen"
3. Klicke "🚀 An Crew Senden"
4. Füge den kopierten Code hier ein (Ctrl+V / Cmd+V)
5. Drücke ENTER und dann CTRL+D (um das Einfügen beenden)
EOF
echo ""
echo "👇 Bitte JSON-Daten jetzt einfügen:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Lese Input bis EOF
INPUT_DATA=$(cat)
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🔄 Daten empfangen. Prüfe Mission-Typ..."
sleep 0.5
# Extrahiere Mission-ID aus dem JSON
# Wir nutzen grep/cut als robusten Fallback, falls jq fehlt
MISSION_ID=$(echo "$INPUT_DATA" | grep -o '"mission": *"[^"]*"' | cut -d'"' -f4)
# Routing Logic
if [[ "$MISSION_ID" == "schnippsi_ui" ]]; then
# --> Rerouting zur UI Mission
echo ">> Routing zu: Dein Zeichen im Wald (Schnippsi UI)"
echo "$INPUT_DATA" | "${MISSION_DIR}/evaluate_sign.sh"
exit $?
elif [[ "$MISSION_ID" == "solar_kettle" ]]; then
# --> Rerouting zur Solar Mission
echo ">> Routing zu: Solar Wasserkocher (Tobi Physics)"
echo "$INPUT_DATA" | "${MISSION_DIR}/robots/evaluate_solar_kettle.sh"
exit $?
fi
# ============================================================
# DEFAULT / LEGACY LOGIC (Rainbow Counter)
# ============================================================
# Falls keine Mission-ID gefunden wurde oder unbekannt, gehen wir davon aus,
# dass es der Rainbow Counter ist (Backward Compatibility).
echo ">> Routing zu: Standard (Rainbow Counter)"
echo ""
# Validierung
if [[ "$INPUT_DATA" != *"{"* ]] || [[ "$INPUT_DATA" != *"}"* ]]; then
echo "❌ FEHLER: Das sieht nicht wie gültiges JSON aus."
exit 1
fi
has_jq=$(command -v jq)
# Versuch, die relevante Zeile zu finden (total_events)
VALID_JSON_LINE=$(echo "$INPUT_DATA" | grep '"total_events":' | head -n 1)
if [ -z "$VALID_JSON_LINE" ]; then
CLEAN_JSON="$INPUT_DATA"
else
CLEAN_JSON="$VALID_JSON_LINE"
fi
CLEAN_JSON=$(echo "$CLEAN_JSON" | sed 's/^[^{]*{/{/; s/}[^}]*$/}/')
if [ -n "$has_jq" ] && echo "$CLEAN_JSON" | jq . >/dev/null 2>&1; then
TOTAL=$(echo "$CLEAN_JSON" | jq -r '.total_events // 0')
DOMINANT=$(echo "$CLEAN_JSON" | jq -r '.dominant // "unknown"')
RED=$(echo "$CLEAN_JSON" | jq -r '.classes.red // 0')
BLUE=$(echo "$CLEAN_JSON" | jq -r '.classes.blue // 0')
else
# Fallback Parser
TOTAL=$(echo "$CLEAN_JSON" | grep -o '"total_events": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ,')
DOMINANT=$(echo "$INPUT_DATA" | grep -o '"dominant": *"[^"]*"' | awk -F: '{print $2}' | tr -d ' "')
RED=$(echo "$INPUT_DATA" | grep -o '"red": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ,')
BLUE=$(echo "$INPUT_DATA" | grep -o '"blue": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ,')
fi
# Default Werte falls leer
TOTAL=${TOTAL:-0}
RED=${RED:-0}
BLUE=${BLUE:-0}
DOMINANT=${DOMINANT:-unknown}
# Feedback der Crew
echo "🐘 DumboSQL prüft die Struktur..."
sleep 1
dumbosql "Datensatz empfangen. $TOTAL Ereignisse gefunden. Die Syntax ist valide. Speichere in temporärem Cache..."
echo ""
echo "🦊 FunkFox analysiert den Flow..."
sleep 1
if [ "$TOTAL" -gt 10 ]; then
funkfox "Wow, da ist ordentlich was los! $TOTAL Signale verarbeitet. Der Flow ist fast schon ein Stream!"
elif [ "$TOTAL" -eq 0 ]; then
funkfox "Äh, Stille? Ich höre nichts. Null Events. Sicher, dass der Code lief?"
else
funkfox "Okay, $TOTAL Signale. Ein guter Start für einen kleinen Loop."
fi
echo ""
echo "🦉 Maya-Eule betrachtet die Farben..."
sleep 1
case $DOMINANT in
"red") mayaeule "Rot dominiert. Energie und Warnung." ;;
"blue") mayaeule "Blau ist stark. Ruhe und Technik." ;;
"green") mayaeule "Grün wie der Wald. Alles im Bereich." ;;
"yellow") mayaeule "Gelb leuchtet wie die Sonne." ;;
*) mayaeule "Eine interessante Mischung ($DOMINANT). Vielfalt ist gut." ;;
esac
echo ""
echo "📊 Statistik:"
echo " 🔴 Rot: $RED"
echo " 🔵 Blau: $BLUE"
echo ""
cat << "EOF"
✅ ANALYSE ABGESCHLOSSEN
Die Crew bestätigt: Dein Blockly-Code funktioniert!
EOF