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:
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
API för Reality DNA
|
||||
Exponerar vägar, observationer, events, missions
|
||||
"""
|
||||
import sys
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
sys.path.insert(0, '/home/bernt/.openclaw/workspace/life-weather')
|
||||
|
||||
from storage.observation_store import ObservationStore
|
||||
|
||||
class RoadAPI:
|
||||
def __init__(self):
|
||||
self.store = ObservationStore()
|
||||
|
||||
def get_roads(self):
|
||||
"""Hämta alla vägar"""
|
||||
import sqlite3
|
||||
conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db')
|
||||
c = conn.cursor()
|
||||
c.execute('SELECT id, road_number, name, county, type FROM roads')
|
||||
roads = [
|
||||
{
|
||||
"id": row[0],
|
||||
"road_number": row[1],
|
||||
"name": row[2],
|
||||
"county": row[3],
|
||||
"type": row[4]
|
||||
}
|
||||
for row in c.fetchall()
|
||||
]
|
||||
conn.close()
|
||||
return roads
|
||||
|
||||
def get_road(self, road_id):
|
||||
"""Hämta specifik väg"""
|
||||
import sqlite3
|
||||
conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db')
|
||||
c = conn.cursor()
|
||||
c.execute('SELECT id, road_number, name, county, type FROM roads WHERE id = ?', (road_id,))
|
||||
row = c.fetchone()
|
||||
conn.close()
|
||||
|
||||
if row:
|
||||
return {
|
||||
"id": row[0],
|
||||
"road_number": row[1],
|
||||
"name": row[2],
|
||||
"county": row[3],
|
||||
"type": row[4]
|
||||
}
|
||||
return None
|
||||
|
||||
def get_road_dna(self, road_id):
|
||||
"""Hämta Reality DNA för väg"""
|
||||
import sqlite3
|
||||
conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db')
|
||||
c = conn.cursor()
|
||||
|
||||
# Hämta senaste observationer
|
||||
c.execute('''
|
||||
SELECT observation_type, value, unit, timestamp, source
|
||||
FROM weather_observations
|
||||
WHERE road_id = ?
|
||||
ORDER BY timestamp DESC
|
||||
LIMIT 5
|
||||
''', (road_id,))
|
||||
|
||||
observations = [
|
||||
{
|
||||
"type": row[0],
|
||||
"value": row[1],
|
||||
"unit": row[2],
|
||||
"timestamp": row[3],
|
||||
"source": row[4]
|
||||
}
|
||||
for row in c.fetchall()
|
||||
]
|
||||
|
||||
conn.close()
|
||||
|
||||
return {
|
||||
"road_id": road_id,
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"observations": observations,
|
||||
"observation_count": len(observations)
|
||||
}
|
||||
|
||||
def get_road_observations(self, road_id):
|
||||
"""Hämta alla observationer för väg"""
|
||||
import sqlite3
|
||||
conn = sqlite3.connect('/home/bernt/.openclaw/workspace/rivp-pilot-1/rivp.db')
|
||||
c = conn.cursor()
|
||||
|
||||
c.execute('''
|
||||
SELECT observation_type, value, unit, timestamp, source
|
||||
FROM weather_observations
|
||||
WHERE road_id = ?
|
||||
ORDER BY timestamp DESC
|
||||
''', (road_id,))
|
||||
|
||||
observations = [
|
||||
{
|
||||
"type": row[0],
|
||||
"value": row[1],
|
||||
"unit": row[2],
|
||||
"timestamp": row[3],
|
||||
"source": row[4]
|
||||
}
|
||||
for row in c.fetchall()
|
||||
]
|
||||
|
||||
conn.close()
|
||||
return observations
|
||||
|
||||
def get_road_events(self, road_id):
|
||||
"""Hämta events för väg (placeholder)"""
|
||||
return [] # Implementeras när events sparas i DB
|
||||
|
||||
def get_road_missions(self, road_id):
|
||||
"""Hämta missions för väg (placeholder)"""
|
||||
return [] # Implementeras när missions sparas i DB
|
||||
|
||||
if __name__ == "__main__":
|
||||
api = RoadAPI()
|
||||
|
||||
# Testa
|
||||
roads = api.get_roads()
|
||||
print(f"Vägar: {len(roads)}")
|
||||
|
||||
if roads:
|
||||
road = roads[0]
|
||||
print(f"\nVäg {road['id']}:")
|
||||
print(json.dumps(road, indent=2))
|
||||
|
||||
dna = api.get_road_dna(road['id'])
|
||||
print(f"\nDNA:")
|
||||
print(json.dumps(dna, indent=2))
|
||||
Reference in New Issue
Block a user