# Gestione e capacità

Il lavoro con la posta lo fa il **worker** – un processo che passa a turno per
le caselle, chiama i modelli e scrive le bozze. La pagina **Gestione**
(operatore, Installazione → Gestione) mostra se ne sono in esecuzione abbastanza.
Si aggiorna ogni 30 secondi.

## Cosa mostra la pagina

**Capacità** – un giudizio in poche parole:

| Giudizio | Cosa significa | Cosa fare |
|---|---|---|
| la capacità basta | nessun assistente è in ritardo sul suo ritmo di più di cinque minuti | niente |
| aggiungi un worker | qualche assistente è in ritardo di più di cinque minuti | aumenta la concorrenza, oppure avvia un altro processo |
| nessun worker in esecuzione | nessun worker si è fatto vivo nell’ultimo minuto | `docker compose ps` e i log del servizio `worker` |

**Worker** – i processi in esecuzione, la loro concorrenza, quali sistemi di
posta servono, quale casella hanno in mano in questo momento e quando si sono
fatti vivi l’ultima volta.

**Controlli della posta in ritardo** – gli assistenti in ritardo sulla loro
scadenza di più di un minuto (indicati per organizzazione e assistente, mai
per indirizzo della casella).

**Coda dei job** – quanti sono in attesa e in esecuzione, e quanti sono stati
completati o non sono riusciti nelle ultime 24 ore. **Errori delle ultime 24 ore**
– cosa è andato storto e dove.

## Come aggiungere capacità

1. **Prima aumenta la concorrenza** – nel riquadro **Impostazioni dei worker**,
   il campo “Controlli della posta simultanei per processo” (1–50). Un controllo
   della posta consiste soprattutto nell’attesa della posta e del modello, quindi
   anche un container piccolo regge più dei 3 predefiniti. I worker applicano la
   modifica entro pochi secondi, senza riavvio.
2. **Un altro processo sulla stessa macchina**: quando l’updater è in esecuzione,
   inserisci il nuovo numero in **Installazione → Installazione**, nel riquadro
   **Processi worker** – senza bisogno del terminale. Altrimenti esegui
   `./draften scale 2` nella cartella dell’installazione (il numero totale, 1–16).
   Entrambi scrivono il numero in `.env` come `WORKER_REPLICAS`, così resta
   anche dopo un aggiornamento; `docker compose up --scale worker=N` durerebbe
   solo fino al prossimo aggiornamento.

Tutti i processi worker girano sulla stessa macchina dell’installazione; il
database non è raggiungibile dall’esterno.

Un nuovo worker compare nella pagina entro pochi secondi. I worker si dividono
il lavoro da soli attraverso il database: ogni casella è in mano a uno solo,
quindi due controlli non si incontrano mai. Un processo che si blocca ritarda
solo quella casella, finché il suo lock non scade.

Lo stesso riquadro imposta l’**intervallo predefinito dei controlli della posta**
(60–86.400 s) per gli assistenti che non hanno un intervallo proprio.

## Avanzate

- `WORKER_PROVIDERS=google` (un elenco tra `graph`, `google`) limita un processo
  solo ad alcuni sistemi di posta – per esempio perché un fornitore più lento
  non blocchi gli altri.
- `WORKER_ID` dà un nome a un processo nel log (per impostazione predefinita
  hostname:pid).
- Un controllo della posta che ha lasciato lavoro per dopo (il limite per
  controllo, più di 200 messaggi nuovi) rimette subito l’assistente in coda,
  così una casella sommersa di posta recupera a turni.

Scalare è una decisione umana; draften non avvia mai worker da solo.
