import datetime
import uuid
from enum import Enum
from typing import Optional
from pydantic import BaseModel
class JobStatus(str, Enum):
PENDING = "PENDING"
QUEUED = "QUEUED"
PROCESSING = "PROCESSING"
COMPLETE = "COMPLETE"
FAILED = "FAILED"
class Job(BaseModel):
id: uuid.UUID
filename: str
status: JobStatus = JobStatus.PENDING
progress: int = 0 # Percentage from 0 to 100
message: str = "Job created, awaiting processing."
# Paths on the server filesystem
input_path: str
output_path: str
# URL for downloading the output
download_url: Optional[str] = None
# Processing parameters
num_layers: int = 20
num_points_per_layer: int = 30
timestamp: datetime.datetime = datetime.datetime.now(datetime.timezone.utc)