# Utrzymanie i przepustowość

Pracę z pocztą wykonuje **worker** – proces, który po kolei przechodzi przez
skrzynki, wywołuje modele i pisze szkice. Strona **Utrzymanie** (operator,
Instalacja → Utrzymanie) pokazuje, czy działa ich wystarczająco dużo.
Odświeża się co 30 sekund.

## Co pokazuje strona

**Przepustowość** – werdykt w jednym zdaniu:

| Werdykt | Co oznacza | Co zrobić |
|---|---|---|
| przepustowość wystarcza | żaden asystent nie spóźnia się względem swojego rytmu o więcej niż pięć minut | nic |
| dodaj workera | któryś asystent spóźnia się o więcej niż pięć minut | zwiększ współbieżność albo uruchom kolejny proces |
| żaden worker nie działa | w ostatniej minucie nie zgłosił się żaden worker | `docker compose ps` i logi usługi `worker` |

**Workery** – działające procesy, ich współbieżność, które systemy pocztowe
obsługują, którą skrzynkę obsługują właśnie teraz i kiedy ostatnio się
zgłosiły.

**Opóźnione sprawdzania poczty** – asystenci spóźnieni względem swojego terminu
o więcej niż minutę (według organizacji i asystenta, nigdy według adresu
skrzynki).

**Kolejka zadań** – ile zadań czeka i trwa oraz ile zakończyło się albo nie
powiodło w ostatnich 24 godzinach. **Błędy z ostatnich 24 godzin** – co i gdzie
poszło nie tak.

## Jak zwiększyć przepustowość

1. **Najpierw zwiększ współbieżność** – na karcie **Ustawienia workerów**,
   w polu „Sprawdzania poczty naraz na proces” (1–50). Sprawdzanie poczty to
   głównie czekanie na pocztę i model, więc nawet mały kontener poradzi sobie
   z więcej niż domyślne 3. Workery pobiorą zmianę w ciągu kilku sekund, bez
   restartu.
2. **Kolejny proces na tej samej maszynie**: gdy działa updater, wpisz nową
   liczbę w **Instalacja → Instalacja**, na karcie **Procesy workera** – bez
   terminala. W przeciwnym razie uruchom `./draften scale 2` w katalogu
   instalacji (łączna liczba, 1–16). Oba sposoby zapisują liczbę w `.env` jako
   `WORKER_REPLICAS`, więc przetrwa też aktualizację;
   `docker compose up --scale worker=N` działałoby tylko do następnej
   aktualizacji.

Wszystkie procesy workera działają na tej samej maszynie co instalacja; baza
danych nie jest osiągalna z zewnątrz.

Nowy worker pojawi się na stronie w ciągu kilku sekund. Workery same dzielą się
pracą przez bazę danych: każdą skrzynkę obsługuje tylko jeden, więc dwa
sprawdzania nigdy się nie spotkają. Proces, który padnie, opóźni tylko tę jedną
skrzynkę, dopóki nie wygaśnie jej blokada.

Na tej samej karcie ustawia się **domyślny odstęp sprawdzania poczty**
(60–86 400 s) dla asystentów bez własnego odstępu.

## Zaawansowane

- `WORKER_PROVIDERS=google` (lista z wartości `graph`, `google`) ogranicza
  proces tylko do niektórych systemów pocztowych – na przykład żeby wolniejszy
  dostawca nie wstrzymywał pozostałych.
- `WORKER_ID` nazywa proces w dzienniku (domyślnie hostname:pid).
- Sprawdzanie poczty, które zostawiło pracę na później (limit na sprawdzanie,
  więcej niż 200 nowych wiadomości), od razu ponownie ustawia asystenta
  w kolejce, więc zalana skrzynka nadrabia zaległości w kolejnych rundach.

Skalowanie to decyzja człowieka; draften nigdy sam nie uruchamia workerów.
