from pydantic import BaseModel from datetime import datetime from typing import Optional, List class ExportFilter(BaseModel): min_images_per_species: int = 100 licenses: Optional[List[str]] = None # None means all min_quality: Optional[float] = None species_ids: Optional[List[int]] = None # None means all class ExportCreate(BaseModel): name: str filter_criteria: ExportFilter train_split: float = 0.8 class ExportResponse(BaseModel): id: int name: str filter_criteria: Optional[str] = None train_split: float status: str file_path: Optional[str] = None file_size: Optional[int] = None species_count: Optional[int] = None image_count: Optional[int] = None created_at: datetime completed_at: Optional[datetime] = None error_message: Optional[str] = None class Config: from_attributes = True class ExportListResponse(BaseModel): items: List[ExportResponse] total: int class ExportPreview(BaseModel): species_count: int image_count: int estimated_size_mb: float