from pydantic import BaseModel from typing import Optional, List, Dict from datetime import datetime from enum import Enum class BatchStatus(str, Enum): PENDING = "pending" PROCESSING = "processing" COMPLETED = "completed" FAILED = "failed" class BatchBase(BaseModel): root_path: str total_radicados: int csv_output_path: Optional[str] = None hostname: Optional[str] = None username: Optional[str] = None config: Optional[Dict] = None class BatchCreate(BatchBase): pass class BatchUpdate(BaseModel): status: Optional[BatchStatus] = None current_radicado_index: Optional[int] = None success_count: Optional[int] = None error_count: Optional[int] = None total_tokens: Optional[int] = None total_cost_usd: Optional[float] = None last_error: Optional[str] = None current_phase: Optional[str] = None current_radicado: Optional[str] = None class BatchRead(BatchBase): id: str status: BatchStatus current_radicado_index: int = 0 success_count: int = 0 error_count: int = 0 total_tokens: int = 0 total_cost_usd: float = 0.0 last_error: Optional[str] = None current_phase: Optional[str] = None current_radicado: Optional[str] = None created_at: datetime updated_at: datetime class Config: from_attributes = True