"""Review Task Queue model""" from sqlalchemy import Column, Integer, String, DateTime, Enum, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.sql import func from datetime import datetime import enum from app.database import Base class TaskStatusEnum(str, enum.Enum): """Task status types""" PENDING = "pending" # В очереди IN_PROGRESS = "in_progress" # Выполняется COMPLETED = "completed" # Завершено FAILED = "failed" # Ошибка class TaskPriorityEnum(str, enum.Enum): """Task priority types""" LOW = "low" NORMAL = "normal" HIGH = "high" class ReviewTask(Base): """Review task queue for sequential processing""" __tablename__ = "review_tasks" id = Column(Integer, primary_key=True, index=True) pull_request_id = Column(Integer, ForeignKey("pull_requests.id"), nullable=False) status = Column(Enum(TaskStatusEnum), default=TaskStatusEnum.PENDING, nullable=False, index=True) priority = Column(Enum(TaskPriorityEnum), default=TaskPriorityEnum.NORMAL, nullable=False) # Tracking created_at = Column(DateTime, default=datetime.utcnow, server_default=func.now()) started_at = Column(DateTime, nullable=True) # Когда началась обработка completed_at = Column(DateTime, nullable=True) # Когда завершилась error_message = Column(String, nullable=True) # Retry logic retry_count = Column(Integer, default=0) max_retries = Column(Integer, default=3) # Relationships pull_request = relationship("PullRequest", backref="review_tasks") def __repr__(self): return f""