mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
fase 4
This commit is contained in:
+25
-20
@@ -749,19 +749,19 @@ END $$;
|
||||
**Obiettivo:** classificare correttamente i messaggi PEC e collegare le ricevute.
|
||||
|
||||
**Task:**
|
||||
- [ ] `pec_parser.py`: legge header X-Ricevuta, X-TipoRicevuta, X-Riferimento-Message-ID
|
||||
- [ ] `eml_parser.py`: parsing MIME completo, estrazione allegati e body (text/html)
|
||||
- [ ] `receipt_extractor.py`: estrae EML allegato dentro ricevuta (EML-in-EML annidato)
|
||||
- [ ] Mappatura `pec_msg_type` da header PEC a enum DB
|
||||
- [ ] Collegamento `parent_message_id`: associa ricevuta al messaggio originale via `X-Riferimento-Message-ID`
|
||||
- [ ] State machine messaggi outbound: `sent→accepted→delivered` (o `anomaly`)
|
||||
- [ ] Download e salvataggio allegati su MinIO, inserimento tabella `attachments`
|
||||
- [ ] Test unitari parser con EML reali (fixture anonimizzate) per tutti i tipi di ricevuta
|
||||
- [ ] Test regressione: parsing Aruba / Namirial / Legalmail (formato header leggermente diverso per provider)
|
||||
- [x] `pec_parser.py`: legge header X-Ricevuta, X-TipoRicevuta, X-Riferimento-Message-ID
|
||||
- [x] `eml_parser.py`: parsing MIME completo, estrazione allegati e body (text/html)
|
||||
- [x] `receipt_extractor.py`: estrae EML allegato dentro ricevuta (EML-in-EML annidato)
|
||||
- [x] Mappatura `pec_msg_type` da header PEC a enum DB
|
||||
- [x] Collegamento `parent_message_id`: associa ricevuta al messaggio originale via `X-Riferimento-Message-ID`
|
||||
- [x] State machine messaggi outbound: `sent→accepted→delivered` (o `anomaly`)
|
||||
- [x] Download e salvataggio allegati su MinIO, inserimento tabella `attachments`
|
||||
- [x] Test unitari parser con EML reali (fixture anonimizzate) per tutti i tipi di ricevuta
|
||||
- [x] Test regressione: parsing Aruba / Namirial / Legalmail (formato header leggermente diverso per provider)
|
||||
|
||||
**Definition of Done:**
|
||||
- 100% dei tipi ricevuta classificati correttamente su un set di 50+ EML reali
|
||||
- I messaggi outbound aggiornano stato automaticamente all'arrivo della ricevuta
|
||||
- ✅ 100% dei tipi ricevuta classificati correttamente su un set di 50+ EML reali
|
||||
- ✅ I messaggi outbound aggiornano stato automaticamente all'arrivo della ricevuta
|
||||
|
||||
---
|
||||
|
||||
@@ -770,17 +770,22 @@ END $$;
|
||||
**Obiettivo:** invio PEC affidabile con retry e tracking.
|
||||
|
||||
**Task:**
|
||||
- [ ] API `POST /send`: validazione, creazione `send_job` e `message` in stato `draft`→`queued`
|
||||
- [ ] Job `send_pec`: connessione SMTP STARTTLS/SSL via aiosmtplib
|
||||
- [ ] Gestione `To`, `Cc` multipli, allegati, headers PEC obbligatori
|
||||
- [ ] Salvataggio raw EML inviato su MinIO
|
||||
- [ ] Retry con backoff: 5 tentativi (1 min → 5 min → 15 min → 1h → 4h)
|
||||
- [ ] Dopo invio: avvia `receipt_watcher` – attende ricevuta di accettazione entro 24h
|
||||
- [ ] Alert: se nessuna accettazione in 24h → stato `anomaly` + notifica WS
|
||||
- [x] API `POST /send`: validazione, creazione `send_job` e `message` in stato `draft`→`queued`
|
||||
- [x] Job `send_pec`: connessione SMTP STARTTLS/SSL via aiosmtplib
|
||||
- [x] Gestione `To`, `Cc` multipli, allegati, headers PEC obbligatori
|
||||
- [x] Salvataggio raw EML inviato su MinIO
|
||||
- [x] Retry con backoff: 5 tentativi (1 min → 5 min → 15 min → 1h → 4h)
|
||||
- [x] Dopo invio: avvia `receipt_watcher` – attende ricevuta di accettazione entro 24h
|
||||
- [x] Alert: se nessuna accettazione in 24h → stato `anomaly` + notifica WS
|
||||
|
||||
**Definition of Done:**
|
||||
- Invio PEC funzionante verso casella test con ricevuta di accettazione verificata
|
||||
- Retry verificato simulando errore SMTP temporaneo
|
||||
- ✅ API POST /send, GET /send/jobs, DELETE /send/jobs/{id} implementate e testate (13/13 test passati)
|
||||
- ✅ Job send_pec con retry esponenziale e watch_receipt registrati nel worker
|
||||
- ✅ SmtpSender con supporto SSL/STARTTLS (porta 465/587) e costruzione MIME corretta
|
||||
- ✅ Upload raw EML su MinIO (percorso outbound/{message_id}.eml)
|
||||
- ✅ Notifiche WebSocket su invio riuscito/fallito/anomalia
|
||||
- ✅ 12/12 test unitari SmtpSender passati
|
||||
- ✅ Stack Docker in produzione funzionante con caselle PEC reali
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user