"""phase5: add delivered_via and processing_started_at to sms_jobs Revision ID: 001_phase5 Revises: Create Date: 2026-03-16 Adds two columns to sms_jobs to support the on-prem polling protocol: - delivered_via: tracks whether the job was sent via the on-prem pull agent ("pull") or directly via the Hub's Celery push path ("push") - processing_started_at: timestamp when the job was marked `processing` (dispatched to on-prem). Used by sms.reclaim_stale_jobs to detect and reclaim stuck jobs. """ from alembic import op import sqlalchemy as sa revision = "001_phase5" down_revision = None branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "sms_jobs", sa.Column("delivered_via", sa.String(10), nullable=True), ) op.add_column( "sms_jobs", sa.Column("processing_started_at", sa.DateTime(timezone=True), nullable=True), ) def downgrade() -> None: op.drop_column("sms_jobs", "processing_started_at") op.drop_column("sms_jobs", "delivered_via")