fix parsing ricevute
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""
|
||||
Migrazione 0023: aggiunge colonna riferimento_message_id alla tabella messages.
|
||||
|
||||
La colonna memorizza il valore di X-Riferimento-Message-ID presente nelle
|
||||
ricevute PEC inbound (accettazione, avvenuta_consegna, ecc.). Serve per:
|
||||
|
||||
1. Binding retroattivo: se il binding fallisce durante la sync (race condition
|
||||
con send_pec che non ha ancora committato message_id_header), il job di
|
||||
rebinding puo' usare questa colonna per ricollegare le ricevute orfane
|
||||
al messaggio outbound originale senza dover ri-leggere l'EML da MinIO.
|
||||
|
||||
2. Diagnostica: permette di verificare rapidamente quali ricevute hanno un
|
||||
X-Riferimento valorizzato ma non hanno trovato il corrispondente outbound.
|
||||
|
||||
Revision ID: 0023_add_riferimento_message_id
|
||||
Revises: 0022_partial_unique_mailbox_email
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
# ── Identificatori migrazione ─────────────────────────────────────────────────
|
||||
revision = "0023"
|
||||
down_revision = "0022"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# Colonna nullable: solo le ricevute inbound la hanno valorizzata.
|
||||
# I messaggi posta_certificata (inbound e outbound) la lasciano NULL.
|
||||
op.add_column(
|
||||
"messages",
|
||||
sa.Column("riferimento_message_id", sa.Text(), nullable=True),
|
||||
)
|
||||
|
||||
# Indice parziale per le query di binding retroattivo:
|
||||
# cerca ricevute orfane (parent_message_id IS NULL) con riferimento valorizzato.
|
||||
op.create_index(
|
||||
"idx_messages_riferimento",
|
||||
"messages",
|
||||
["riferimento_message_id"],
|
||||
postgresql_where=sa.text("riferimento_message_id IS NOT NULL"),
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index("idx_messages_riferimento", table_name="messages")
|
||||
op.drop_column("messages", "riferimento_message_id")
|
||||
Reference in New Issue
Block a user