Scheduling ed evidenza di delivery
Scheduling e delivery appartengono al provider, ma sono operazioni differenti. Architecture Coffee non deve dedurre delivery da un draft, da un upload o da uno stato pianificato.
Obiettivo e transizione autorevole
flowchart TD
draft["Campaign Draft con contenuto"] --> auth["Autorizzazione scheduling"]
auth --> schedule["scheduleCampaign"]
schedule --> scheduled["Stato scheduled"]
scheduled --> provider["Esecuzione Mailjet"]
provider --> evidence{"Evidenza live autorevole?"}
evidence -->|"sì"| proven["Delivery provata nei limiti dell'evidenza"]
evidence -->|"no o ambigua"| unknown["Delivery non provata"]
Il contratto applicativo corrente espone la capability provider di scheduling, ma il workspace Campaign Draft non offre scheduling o delivery. Una futura procedura operativa deve mantenere il confine e l'autorizzazione separata.
Input e fonti accettate
Lo scheduling richiede un Campaign Draft provider esistente, contenuto caricato, timestamp futuro, target server-owned e autorizzazione specifica. La delivery usa contatti, liste, consenso, suppression e bounce posseduti da Mailjet; Architecture Coffee non ricostruisce tali dati.
Attore e autorizzazione
campaign:draft protegge le route Campaign esistenti, ma la disponibilità
tecnica non equivale ad autorizzazione operativa. Scheduling o verifica live
richiedono un Issue in scope e un go/no-go separato. Il browser non sceglie
credenziali, destinatari individuali o riferimenti provider arbitrari.
Validazione e quality gate
Prima dello scheduling:
- Issue ancora published, approved e quality-passing;
- Campaign Draft e target coerenti;
- contenuto caricato;
- timestamp RFC 3339 futuro;
- provider mode
livequando si vuole prova reale; - nessuna operazione concorrente o ambigua.
Responsabilità dell'AI
Nessuna. L'AI non sceglie destinatari, orari, liste, consenso o interpretazione dell'esito provider.
Persistenza e audit in D1
D1 può conservare intento Campaign, timestamp, stato aggregate e ricevute
sanitizzate. Non conserva indirizzi, lista completa, unsubscribe, bounce,
suppression o payload provider. Lo stato scheduled prova soltanto
l'accettazione dello scheduling.
Evidenza di successo
Distinguere:
| Evidenza | Dimostra | Non dimostra |
|---|---|---|
attempt mock o dry_run |
mapping e flusso applicativo | chiamata live |
draft_created |
Campaign Draft provider | contenuto caricato |
content_uploaded |
contenuto accettato dal provider | scheduling |
scheduled |
richiesta di scheduling accettata | consegna |
| delivery ID di test live | accettazione di un singolo test send | campagna a lista completata |
| stato/evento live Mailjet | ciò che il provider attesta | dati non presenti nell'evidenza |
Una prova di delivery reale richiede modalità live, operazione autorizzata e riscontro provider univoco. In assenza, la conclusione corretta è “delivery non provata”.
Fallimento e recupero
Timeout, ricevuta incompleta, stato sconosciuto o mismatch devono fermare ogni nuovo invio. Prima di un retry, riconciliare quando esiste una lettura autorevole; altrimenti aprire un nuovo Issue operativo. Non duplicare una campagna per ottenere una prova più comoda.
Effetti collaterali esclusi
- scheduling non modifica l'Issue o il suo stato editoriale;
- scheduling non prova delivery;
- verifica dell'evidenza non rischedula e non invia;
- pubblicazione non chiama Mailjet;
- Architecture Coffee non prende ownership dei destinatari.
Usare il runbook di verifica.