aee0f09db8
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
90 lines
2.4 KiB
Markdown
90 lines
2.4 KiB
Markdown
# 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
|