29 lines
790 B
Python
29 lines
790 B
Python
from fastapi import FastAPI
|
|
from pydantic import BaseModel
|
|
from typing import Dict, Any
|
|
|
|
from ar_grid_tutor_mobile_ar_digital_twin_for.core import TelemetrySample, TwinEngine
|
|
|
|
app = FastAPI(title="AR Grid Tutor DT Twin API")
|
|
|
|
_engine = TwinEngine()
|
|
|
|
|
|
class TelemetryPayload(BaseModel):
|
|
asset_id: str
|
|
timestamp: float
|
|
metrics: Dict[str, float]
|
|
|
|
|
|
@app.post("/telemetry")
|
|
def ingest_telemetry(payload: TelemetryPayload):
|
|
sample = TelemetrySample(asset_id=payload.asset_id, timestamp=payload.timestamp, metrics=payload.metrics)
|
|
result = _engine.reconcile(sample)
|
|
return {"status": "ok", "result": result}
|
|
|
|
|
|
@app.get("/health")
|
|
def health():
|
|
# Minimal health indicator for orchestration
|
|
return {"status": "healthy", "assets_tracked": list(_engine.models.keys())}
|