第一次提交
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
"""OCR / AI 后台任务状态,前端轮询。"""
|
||||
import enum
|
||||
|
||||
from sqlalchemy import ForeignKey, String, Text
|
||||
from sqlalchemy import Enum as SAEnum
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
from sqlalchemy.types import JSON
|
||||
|
||||
from app.models.base import new_uuid
|
||||
from app.db import Base, TimestampMixin
|
||||
|
||||
|
||||
class JobStatus(str, enum.Enum):
|
||||
pending = "pending"
|
||||
ocr_running = "ocr_running"
|
||||
ai_running = "ai_running"
|
||||
done = "done"
|
||||
failed = "failed"
|
||||
|
||||
|
||||
class ProcessingJob(Base, TimestampMixin):
|
||||
__tablename__ = "processing_jobs"
|
||||
|
||||
id: Mapped[str] = mapped_column(String(36), primary_key=True, default=new_uuid)
|
||||
user_id: Mapped[str] = mapped_column(
|
||||
ForeignKey("users.id", ondelete="CASCADE"), index=True
|
||||
)
|
||||
image_id: Mapped[str | None] = mapped_column(
|
||||
ForeignKey("images.id", ondelete="SET NULL"), nullable=True
|
||||
)
|
||||
kind: Mapped[str] = mapped_column(String(32), default="ocr_extract")
|
||||
status: Mapped[JobStatus] = mapped_column(
|
||||
SAEnum(JobStatus), default=JobStatus.pending
|
||||
)
|
||||
# 一张图可能拆成多条笔记
|
||||
result_question_ids: Mapped[list | None] = mapped_column(JSON, nullable=True)
|
||||
error_message: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
engine_used: Mapped[str | None] = mapped_column(String(32), nullable=True)
|
||||
Reference in New Issue
Block a user