from fastapi import FastAPI
from pydantic import BaseModel, Field
from typing import Any, Dict, List, Optional
import time

app = FastAPI(title="SIREP Nodo0 Orchestrator", version="0.1.0")

class EventIn(BaseModel):
    source: str = Field(..., description="chat|voz|doc|iot|email|cal|webhook")
    type: str = Field(..., description="evento lógico: 'nuevo_doc', 'alarma_iot', 'tarea', etc")
    payload: Dict[str, Any] = Field(default_factory=dict)
    ts_ms: Optional[int] = None

class DecisionOut(BaseModel):
    decision: str
    justificacion: str
    siguiente_paso: List[str] = Field(default_factory=list)
    riesgo: Dict[str, Any] = Field(default_factory=dict)
    evidencia: List[Dict[str, Any]] = Field(default_factory=list)

@app.get("/health")
def health():
    return {"ok": True, "ts": int(time.time())}

@app.post("/event", response_model=DecisionOut)
def ingest_event(evt: EventIn):
    # TODO: enrutar a análisis / memoria / cola
    # Por ahora: placeholder JSON-ready
    return DecisionOut(
        decision=f"Recibido {evt.source}:{evt.type}",
        justificacion="Placeholder: falta conectar Decision Engine + Memory Layer.",
        siguiente_paso=[
            "Clasificar evento",
            "Guardar interaccion/documento",
            "Evaluar reglas y generar decision"
        ],
        riesgo={"nivel":"bajo","drivers":["sin_reglas_activas"]},
        evidencia=[{"fuente":evt.source,"ref":evt.type}]
    )
