from __future__ import annotations from uuid import UUID from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.db.session import get_db from app.schemas import Envelope, ItemList from app.schemas.temporal import ( TemporalComparisonRequest, TemporalComparisonResponse, TemporalSeriesRead, ) from app.services.temporal_analysis_service import TemporalAnalysisService from app.utils.response import envelope router = APIRouter(prefix="/projects/{project_id}/temporal", tags=["temporal"]) @router.get("/series", response_model=Envelope[ItemList[TemporalSeriesRead]]) def list_temporal_series(project_id: UUID, db: Session = Depends(get_db)): series = TemporalAnalysisService.list_series(db, project_id) return envelope({"items": [item.model_dump() for item in series], "total": len(series)}) @router.post("/compare", response_model=Envelope[TemporalComparisonResponse]) def compare_temporal_snapshots( project_id: UUID, payload: TemporalComparisonRequest, db: Session = Depends(get_db), ): return envelope(TemporalAnalysisService.compare(db, project_id=project_id, payload=payload).model_dump())