""" 项目向量化任务模型 """ from sqlalchemy import BigInteger, Column, DateTime, Index, Integer, String, Text from sqlalchemy.sql import func from app.core.database import Base class ProjectVectorizationTask(Base): """项目向量化后台任务表""" __tablename__ = "project_vectorization_task" id = Column(BigInteger, primary_key=True, autoincrement=True, comment="任务ID") task_id = Column(String(64), nullable=False, unique=True, index=True, comment="任务唯一标识") project_id = Column(BigInteger, nullable=False, index=True, comment="项目ID") user_id = Column(BigInteger, nullable=False, index=True, comment="触发用户ID") task_type = Column(String(32), nullable=False, comment="任务类型:incremental/full") status = Column(String(32), nullable=False, default="pending", index=True, comment="任务状态:pending/running/success/failed") total = Column(Integer, nullable=False, default=0, comment="文件总数") processed = Column(Integer, nullable=False, default=0, comment="处理成功数") skipped = Column(Integer, nullable=False, default=0, comment="跳过数") failed = Column(Integer, nullable=False, default=0, comment="失败数") error_message = Column(Text, comment="错误信息") started_at = Column(DateTime, comment="开始时间") finished_at = Column(DateTime, comment="完成时间") created_at = Column(DateTime, server_default=func.now(), comment="创建时间") updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间") __table_args__ = ( Index("idx_vector_task_project_status", "project_id", "status"), Index("idx_vector_task_created_at", "created_at"), ) def __repr__(self): return f""