landvex: Fixar och tester klara för alla komponenter

- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
This commit is contained in:
Bernt
2026-07-05 06:41:32 +00:00
parent f4f853d94b
commit aee0f09db8
19583 changed files with 1450867 additions and 1153 deletions
+113
View File
@@ -0,0 +1,113 @@
#!/usr/bin/env python3
"""
Analysera väderkonsekvenser för vägar
"""
import sqlite3
from datetime import datetime
DB_PATH = "/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db"
def analyze_weather_impact(temperature, precipitation):
"""
Analysera väderpåverkan på vägar
Returnerar risknivå och rekommendationer
"""
risks = []
# Temperaturanalys
if temperature < 0:
risks.append({
"type": "ice_risk",
"severity": "high",
"description": "Risk för halka och isbildning"
})
elif temperature < 5:
risks.append({
"type": "frost_risk",
"severity": "medium",
"description": "Risk för frostskador på vägbanan"
})
# Nederbördsanalys
if precipitation > 10:
risks.append({
"type": "flooding_risk",
"severity": "high",
"description": "Risk för översvämning och nedsatt framkomlighet"
})
elif precipitation > 5:
risks.append({
"type": "wet_road",
"severity": "medium",
"description": "Blöt vägbana, ökad bromssträcka"
})
# Kombinerade effekter
if temperature < 0 and precipitation > 0:
risks.append({
"type": "black_ice",
"severity": "critical",
"description": "Mycket hög risk för svartis"
})
return risks
def get_affected_roads(county="Uppsala"):
"""Hämta vägar i ett specifikt län"""
conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute("SELECT id, road_number, name, type FROM roads WHERE county = ?", (county,))
roads = c.fetchall()
conn.close()
return roads
def generate_weather_alerts():
"""Generera vädervarningar för vägar"""
# Hämta senaste väderdata
import sys
sys.path.insert(0, '/home/bernt/.openclaw/workspace/life-prod/ingestion')
from smhi_weather import fetch_temperature, fetch_precipitation
temp_data = fetch_temperature()
precip_data = fetch_precipitation()
if not temp_data or not precip_data:
print("Ingen väderdata tillgänglig")
return []
temperature = temp_data["temperature"]
precipitation = precip_data["precipitation_mm"]
# Analysera risker
risks = analyze_weather_impact(temperature, precipitation)
# Hämta påverkade vägar
roads = get_affected_roads()
alerts = []
for road in roads:
for risk in risks:
alerts.append({
"road_id": road[0],
"road_number": road[1],
"road_name": road[2],
"road_type": road[3],
"risk_type": risk["type"],
"severity": risk["severity"],
"description": risk["description"],
"temperature": temperature,
"precipitation": precipitation,
"timestamp": datetime.now().isoformat()
})
return alerts
if __name__ == "__main__":
alerts = generate_weather_alerts()
print(f"Genererade {len(alerts)} vädervarningar")
# Visa första 3
for alert in alerts[:3]:
print(f" {alert['road_number']}: {alert['risk_type']} ({alert['severity']})")