⚓ Smart Sail Planner v8.10 - Systemablauf
Dieses Diagramm zeigt die nicht-lineare Logik der App. Pfeile zeigen den Datenfluss, Schleifen und Callbacks.
graph TD
classDef ui fill:#6c757d,stroke:#fff,stroke-width:2px,color:#fff,rx:5px,ry:5px;
classDef api fill:#d9534f,stroke:#fff,stroke-width:2px,color:#fff,rx:5px,ry:5px;
classDef logic fill:#28a745,stroke:#fff,stroke-width:2px,color:#fff,rx:5px,ry:5px;
classDef state fill:#0078A8,stroke:#fff,stroke-width:2px,color:#fff,rx:5px,ry:5px;
Start((App Start)) --> Init[Map & UI initialisieren]:::ui
Init --> Idle{Warten auf
User-Aktion}:::ui
Idle -->|Klick: 'KI & ORC laden'| OrcAPI[ORC-Data API:
Polardaten suchen]:::api
OrcAPI --> OrcCheck{Gefunden?}:::logic
OrcCheck -->|Ja| BoatAPI[Gemini Flash:
Bootsdaten abfragen]:::api
OrcCheck -->|Nein| SynthPolar[Gemini Flash:
Synthetische Polardaten generieren]:::api
SynthPolar --> BoatAPI
BoatAPI --> FillUI[UI-Felder ausfüllen]:::ui
FillUI --> Idle
Idle -->|Klick: 'Agenten-Planung'| GeoAPI[Nominatim API:
Geocoding Start/Ziel]:::api
GeoAPI --> KIPrompt[Gemini Flash:
Grobe Route & Hazards planen]:::api
KIPrompt --> Sort[JS: Chronologisch sortieren]:::logic
Sort --> Orca[JS: Orca-Hazards injizieren]:::logic
Orca --> LandCheck[JS: Elevation API
Land-Detektor alle 2 NM]:::api
LandCheck --> Hybrid{Land im Weg?}:::logic
Hybrid -->|Ja| SR_Auto[Backend: Searoute für Landumfahrung]:::api
Hybrid -->|Nein| DirectLine[JS: Direkte Wasserlinie ziehen]:::logic
SR_Auto --> MicroNodes
DirectLine --> MicroNodes[JS: Mikro-Wetter-Nodes
alle 50 NM generieren]:::logic
MicroNodes --> TankCheck{Distanz > Max Reichweite?}:::logic
TankCheck -->|Ja| InjectStop[Gemini Flash:
Not-Tankstopp auf Wasserlinie suchen]:::api
InjectStop --> LandCheck
TankCheck -->|Nein| RefineLoop[Schleife 3x:
Wetter holen & Mathe Engine]:::logic
RefineLoop --> DrawKI[UI: Route & Marker zeichnen]:::ui
DrawKI --> StartLive[JS: Starte 5-Min Live-Tracker]:::logic
StartLive --> SaveStateKI[(State: stateKI speichern)]:::state
SaveStateKI --> Idle
Idle -->|Klick: 'Route optimieren'| LivePos[JS: Ermittle Live-Position
GPS oder Koppelnavigation]:::logic
LivePos --> InjectLive[JS: Injiziere 'Live Position' Wegpunkt]:::logic
InjectLive --> LandCheck
Idle -->|Klick: 'Dataloy'| DL_API[Dataloy API]:::api
DL_API --> LegDistDL[JS:
LineString zerschneiden]:::logic
LegDistDL --> MathEngine2[JS Math Engine:
ETA/ETD mit exakten Distanzen]:::logic
MathEngine2 --> ReportPrompt[Gemini Pro:
Törnbericht & Tankstellen]:::api
ReportPrompt --> Merge[JS: Merge-Logik
Daten per ID anfügen]:::logic
Merge --> DrawExact[UI: Rote/Lila Route zeichnen]:::ui
DrawExact --> RenderDash[UI: Dashboard rendern]:::ui
RenderDash --> SaveStateFinal[(State: Final speichern)]:::state
SaveStateFinal --> Idle