openrag/src/models/tasks.py
2025-09-03 09:17:30 -04:00

35 lines
908 B
Python

import time
from dataclasses import dataclass, field
from enum import Enum
from typing import Dict, Optional
class TaskStatus(Enum):
PENDING = "pending"
RUNNING = "running"
COMPLETED = "completed"
FAILED = "failed"
@dataclass
class FileTask:
file_path: str
status: TaskStatus = TaskStatus.PENDING
result: Optional[dict] = None
error: Optional[str] = None
retry_count: int = 0
created_at: float = field(default_factory=time.time)
updated_at: float = field(default_factory=time.time)
@dataclass
class UploadTask:
task_id: str
total_files: int
processed_files: int = 0
successful_files: int = 0
failed_files: int = 0
file_tasks: Dict[str, FileTask] = field(default_factory=dict)
status: TaskStatus = TaskStatus.PENDING
created_at: float = field(default_factory=time.time)
updated_at: float = field(default_factory=time.time)