52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
# 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}
|