fix parsing ricevute
This commit is contained in:
@@ -244,6 +244,24 @@ async def list_messages(
|
||||
Message.parent_message_id.is_(None),
|
||||
)
|
||||
|
||||
# ── Auto-filtro ricevute ───────────────────────────────────────────────────
|
||||
# Esclude automaticamente i messaggi inbound di tipo ricevuta (accettazione,
|
||||
# avvenuta_consegna, ecc.) quando pec_type non e' specificato esplicitamente.
|
||||
# Le ricevute correttamente bindate hanno parent_message_id != NULL e sono
|
||||
# gia' escluse dal filtro sopra. Quelle non bindato (race condition o invii
|
||||
# da client esterni) verrebbero mostrate in inbox come messaggi normali senza
|
||||
# questo filtro aggiuntivo.
|
||||
# I messaggi outbound hanno sempre pec_type='posta_certificata' in questo
|
||||
# sistema (non creiamo mai record outbound di tipo ricevuta) quindi il filtro
|
||||
# e' trasparente per la vista posta inviata.
|
||||
if pec_type is None:
|
||||
q = q.where(
|
||||
or_(
|
||||
Message.direction == "outbound",
|
||||
Message.pec_type == "posta_certificata",
|
||||
)
|
||||
)
|
||||
|
||||
if visible_mailbox_ids is not None:
|
||||
if not visible_mailbox_ids:
|
||||
return MessageListResponse(items=[], total=0, page=page, page_size=page_size)
|
||||
|
||||
@@ -92,6 +92,12 @@ class Message(Base):
|
||||
parent_message_id: Mapped[uuid.UUID | None] = mapped_column(
|
||||
UUID(as_uuid=True), ForeignKey("messages.id"), nullable=True
|
||||
)
|
||||
# X-Riferimento-Message-ID estratto dalle ricevute inbound PEC.
|
||||
# Permette il binding retroattivo se la race condition ha impedito il binding
|
||||
# live (send_pec non aveva ancora committato message_id_header quando la
|
||||
# ricevuta e' stata processata dalla sync IMAP).
|
||||
# Solo le ricevute (pec_type != posta_certificata) la hanno valorizzata.
|
||||
riferimento_message_id: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
# Flag operativi
|
||||
is_read: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
||||
|
||||
Reference in New Issue
Block a user