⚓ Smart Sail Planner v8.10 - Systemablauf

Dieses Diagramm zeigt die nicht-lineare Logik der App. Pfeile zeigen den Datenfluss, Schleifen und Callbacks.

User Interface (UI)
Externe API
Interne JS-Logik / Mathe
System State
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