Spaces:
Build error
Build error
File size: 1,544 Bytes
ed52286 193eb98 ed52286 fc1a5f0 ed52286 fc1a5f0 ed52286 193eb98 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | """
Modèle SQLAlchemy 2.0 — table des jobs de traitement.
Un job suit l'exécution du pipeline sur une page.
corpus.run → crée un JobModel par page du corpus (page_id renseigné)
pages.run → crée un JobModel pour la page cible
Cycle de vie :
pending → running → done
↘ failed
"""
# 1. stdlib
from datetime import datetime, timezone
from functools import partial
# 2. third-party
from sqlalchemy import DateTime, ForeignKey, String, Text
from sqlalchemy.orm import Mapped, mapped_column, relationship
# 3. local
from app.models.database import Base
class JobModel(Base):
"""Suivi d'un job de pipeline (1 job = 1 page)."""
__tablename__ = "jobs"
id: Mapped[str] = mapped_column(String, primary_key=True)
corpus_id: Mapped[str] = mapped_column(
String, ForeignKey("corpora.id", ondelete="CASCADE"), nullable=False, index=True
)
page_id: Mapped[str | None] = mapped_column(
String, ForeignKey("pages.id", ondelete="SET NULL"), nullable=True, index=True
)
# pending / running / done / failed
status: Mapped[str] = mapped_column(String, nullable=False, default="pending")
started_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
finished_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True)
error_message: Mapped[str | None] = mapped_column(Text, nullable=True)
created_at: Mapped[datetime] = mapped_column(
DateTime, nullable=False, default=partial(datetime.now, tz=timezone.utc)
)
|