import datetime
import uuid
from enum import Enum
from typing import Optional, Dict, Any
from pydantic import BaseModel, Field
class JobStatus(str, Enum):
PENDING = "PENDING"
QUEUED = "QUEUED"
PROCESSING = "PROCESSING"
COMPLETE = "COMPLETE"
FAILED = "FAILED"
class Job(BaseModel):
id: uuid.UUID
feature_id: str
filename: str
status: JobStatus = JobStatus.PENDING
progress: int = 0
message: str = "Job created, awaiting processing."
# Paths on the server filesystem
input_path: str
output_path: Optional[str] = None
# URL for downloading the output
download_url: Optional[str] = None
# URL for viewing the output
view_url: Optional[str] = None
# Processing parameters
params: Dict[str, Any] = {}
timestamp: datetime.datetime = Field(default_factory=lambda: datetime.datetime.now(datetime.timezone.utc))