"""
Microservicio FastAPI.   uvicorn app:app --host 127.0.0.1 --port 8008
Variable opcional: ML_SERVICE_TOKEN (si se define, exige cabecera X-Token).
"""
import os
from typing import List
from fastapi import FastAPI, Header, HTTPException
from pydantic import BaseModel
import ml_core

app = FastAPI(title="Loteria ML service")
TOKEN = os.getenv("ML_SERVICE_TOKEN", "")


class Payload(BaseModel):
    N: int
    k: int
    seed: int = 1
    draws: List[List[int]]


@app.get("/health")
def health():
    return {"status": "ok"}


@app.post("/predict")
def predict(p: Payload, x_token: str = Header(default="")):
    if TOKEN and x_token != TOKEN:
        raise HTTPException(status_code=401, detail="token invalido")
    try:
        return ml_core.run(p.draws, p.N, p.k, seed=p.seed)
    except ValueError as e:
        raise HTTPException(status_code=422, detail=str(e))
