# Funcionamiento y capacidad

El trabajo con el correo lo hace el **worker**: un proceso que recorre los
buzones por turnos, llama a los modelos y escribe los borradores. La página
**Funcionamiento** (operador, Instalación › Funcionamiento) muestra si hay
suficientes en marcha. Se actualiza cada 30 segundos.

## Qué muestra la página

**Capacidad**: un veredicto en pocas palabras.

| Veredicto | Qué significa | Qué hacer |
|---|---|---|
| la capacidad es suficiente | ningún asistente se retrasa más de cinco minutos respecto a su ritmo | nada |
| añada un worker | algún asistente se retrasa más de cinco minutos | aumente la simultaneidad o inicie otro proceso |
| no hay ningún worker en ejecución | ningún worker ha dado señales en el último minuto | `docker compose ps` y los registros del servicio `worker` |

**Workers**: los procesos en ejecución, su simultaneidad, a qué sistemas de
correo atienden, qué buzón tienen en este momento y cuándo dieron señales por
última vez.

**Revisiones del correo con retraso**: asistentes que han superado su hora
prevista en más de un minuto (identificados por organización y asistente, nunca
por la dirección del buzón).

**Cola de trabajos**: cuántos esperan y cuántos están en curso, y cuántos
terminaron o fallaron en las últimas 24 horas. **Errores de las últimas
24 horas**: qué falló y dónde.

## Cómo añadir capacidad

1. **Primero aumente la simultaneidad**: en la tarjeta **Configuración de los
   workers**, el campo «Revisiones del correo simultáneas por proceso» (1–50).
   Una revisión del correo consiste sobre todo en esperar al correo y al
   modelo, así que incluso un contenedor pequeño puede con más de las 3
   predeterminadas. Los workers aplican el cambio en segundos, sin reiniciar.
2. **Otro proceso en la misma máquina**: si el updater está en marcha,
   introduzca el número nuevo en **Instalación › Instalación**, tarjeta
   **Procesos worker**, sin necesidad de terminal. Si no, ejecute
   `./draften scale 2` en el directorio de la instalación (el número total,
   1–16). Ambos escriben el número en `.env` como `WORKER_REPLICAS`, así que se
   mantiene también tras una actualización;
   `docker compose up --scale worker=N` solo duraría hasta la siguiente
   actualización.

Todos los procesos worker se ejecutan en la misma máquina que la instalación;
la base de datos no es accesible desde fuera.

Un worker nuevo aparece en la página en unos segundos. Los workers se reparten
el trabajo por sí solos a través de la base de datos: cada buzón lo tiene solo
uno, así que dos revisiones nunca coinciden. Un proceso que falla solo retrasa
ese buzón hasta que caduca su bloqueo.

La misma tarjeta fija el **intervalo predeterminado de revisión del correo**
(60–86 400 s) para los asistentes que no tienen un intervalo propio.

## Avanzado

- `WORKER_PROVIDERS=google` (una lista de `graph`, `google`) limita un proceso
  a algunos sistemas de correo, por ejemplo para que un proveedor más lento no
  frene a los demás.
- `WORKER_ID` da nombre a un proceso en los registros (hostname:pid de forma
  predeterminada).
- Una revisión del correo que dejó trabajo para más tarde (el límite por
  revisión, más de 200 mensajes nuevos) vuelve a poner al asistente en cola de
  inmediato, así que un buzón desbordado se pone al día por rondas.

Escalar es una decisión humana; draften nunca inicia workers por su cuenta.
