# ai_mouse/server/routes_verify.py
"""Verification route: generate trajectories."""
from __future__ import annotations

import logging

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel

from .deps import get_data_dir

logger = logging.getLogger(__name__)

router = APIRouter()

# ---------------------------------------------------------------------------
# Request models
# ---------------------------------------------------------------------------


class VerifyRequest(BaseModel):
    start: list[int]
    end: list[int]
    n_paths: int = 5
    model_dir: str | None = None


# ---------------------------------------------------------------------------
# Routes
# ---------------------------------------------------------------------------


@router.post("/verify")
def verify(req: VerifyRequest) -> dict:
    from ai_mouse.generator import generate

    n = max(1, min(req.n_paths, 12))
    models_dir = get_data_dir() / "models_v2"
    model_dir_arg = req.model_dir if req.model_dir else str(models_dir)
    start = tuple(req.start)  # type: ignore[arg-type]
    end = tuple(req.end)  # type: ignore[arg-type]

    paths = []
    try:
        for _ in range(n):
            pts = generate(start=start, end=end, model_dir=model_dir_arg)
            paths.append([[x, y, t] for x, y, t in pts])
    except FileNotFoundError as exc:
        raise HTTPException(status_code=404, detail=str(exc)) from exc

    return {"paths": paths}
