# Weather Intelligence Pipeline Produktionsklar pipeline för väderintelligens för vägar. ## Arkitektur ``` ┌─────────────────┐ │ WeatherProvider│ ← Hämtar från SMHI │ (SMHI API) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Rådata │ ← Spara oförändrad │ (JSON) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ ObservationStore│ ← Idempotent sparande │ (SQLite) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ RiskEngine │ ← Regelbaserad analys │ (Risk Score) │ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ Resultat │ ← Varningar + Risker │ (JSON) │ └─────────────────┘ ``` ## Komponenter | Komponent | Fil | Beskrivning | |-----------|-----|-------------| | Provider | `providers/weather_provider.py` | Hämtar väderdata från SMHI | | Storage | `storage/observation_store.py` | Sparar observationer idempotent | | Engine | `engine/risk_engine.py` | Regelbaserad riskanalys | | Pipeline | `pipeline.py` | Huvudflöde | ## Regler | Risk | Villkor | Allvarlighet | |------|---------|--------------| | Is | Temp < -5°C | Critical | | Svartis | Temp < 0°C + Nederbörd | Critical | | Översvämning | Nederbörd > 20mm | Critical | | Blöt väg | Nederbörd > 5mm | Medium | | Stark vind | Vind > 15 m/s | Medium | | Fallande föremål | Vind > 20 m/s | High | ## Körning ```bash # Kör pipelinen python3 pipeline.py # Kör tester python3 tests/test_pipeline.py ``` ## Dataflöde 1. Hämta väderdata från SMHI 2. Spara rådata oförändrad 3. Skapa normaliserade observationer 4. Koppla till väg i databas 5. Beräkna risk baserat på regler 6. Returnera resultat ## Spårbarhet - All rådata sparas i `raw/` - Alla observationer har timestamp - Alla observationer har source="smhi" - Idempotent sparande (dubbletter ignoreras) ## Tester - ✅ Väderdata kan hämtas - ✅ Observationer sparas idempotent - ✅ Risker beräknas korrekt - ✅ Hela pipelinen fungerar