# Řešení potíží

Nejdřív celkový přehled z adresáře instalace:

```
./draften status      # verze, zdraví obou barev webu a workerů, HTTPS, výpisy databáze
```

Pak podrobněji:

```
docker compose ps                        # běží služby, je databáze zdravá?
docker compose logs --tail 50 worker     # poslední záznamy workera
docker compose run --rm worker node diag.mjs schranka@firma.cz
```

Poslední příkaz udělá totéž co **Otestovat spojení** v rozhraní: vezme přístup
uložený pro schránku, získá token, vypíše jeho oprávnění (nikdy token sám)
a přečte doručenou poštu.

## Časté chyby

| Příznak | Příčina | Co udělat |
|---|---|---|
| `set DB_PASSWORD in .env` při startu | chybí hesla databáze | doplnit `.env` |
| `mailbox … has no access yet` | schránka nemá registraci ani připojený účet | stránka schránky → Přístup k poště |
| `Graph … 401 … invalid_client` | špatný nebo vypršelý client secret | nový secret u registrace, pak test spojení |
| `Graph … 403 … AppOnly AccessPolicy` | zásada přístupu aplikace se ještě neprojevila, nebo schránka není ve skupině | počkat (i hodiny), zopakovat test; přidat schránku do skupiny |
| `Graph … 403 … ErrorAccessDenied` | chybí souhlas správce | v Entra u registrace Grant admin consent |
| `Category not added … MailboxSettings` | chybí oprávnění `MailboxSettings.ReadWrite`; štítek funguje, jen bez barvy | přidat oprávnění a souhlas |
| `No active assistant in the database` | asistent je vypnutý, nebo neproběhlo úvodní naplnění | zapnout asistenta; zkontrolovat log startu |
| asistent se přeskakuje („no prompts yet“) | asistent nemá napsané pokyny | dokončit průvodce, nebo pokyny napsat ručně |
| `Draft without signature` / `links outside the allowed domains` | koncept neprošel kontrolou | podívat se na zprávu — může jít o pokus o podvrh |
| `Limit reached` | denní limit nebo limit na odesílatele | zvýšit jen, když je příval pošty oprávněný |
| `Model refused to answer` | bezpečnostní filtr modelu | zprávu vyřídit ručně |
| `Model exhausted max_iterations` | model se zacyklil v nástrojích | opakuje se dvakrát; když se to vrací, doladit pokyn Úkol |
| `ECONNREFUSED … 3306` | databáze neběží nebo ještě nenaběhla | `docker compose ps`, `docker compose logs db` |
| pruh „Licence vypršela“ nebo „Instalace nemá licenci“, asistenti nic nepíšou | licence chybí nebo vypršela | nahrát platnou licenci — viz [Licence](/cs/admin/licence) |
| aktualizace skončila chybou | nová verze se nestala zdravou; slouží dál ta předchozí | chyba v Historii žádostí nebo ve výpisu `./draften update`; `./draften status` |
| „Poslední denní záloha se nepovedla“ v kartě Zálohy databáze | výpis databáze selhal (hláška je v kartě); za hodinu se zkusí znovu | spustit `./draften backup` a přečíst chybu; ověřit místo na disku (`df -h`) a `./draften status` |

## Když to nevidíte v logu

- Rozhraní: Nastavení asistenta → **Aktivita** (kontroly pošty, požadavky,
  události) a stránka **Provoz** (workery, fronta, chyby za 24 hodin).
- Zpráva po třech neúspěšných pokusech dostane stav **selhalo**; poslední chyba
  je v jejím detailu.

## Jednorázový průchod ručně

```
docker compose run --rm worker node worker.mjs --dry-run
```

Projde všechny aktivní asistenty jednou a vynutí přitom zkušební režim — nic
se nezapíše do pošty. Hodí se k ověření, že vše funguje.

## Když potřebujete naši pomoc

```
./draften diagnose
```

zapíše soubor `diagnose-<čas>.tar.gz` se stavem instalace, verzemi,
konfigurací bez tajemství a koncem logů. Ten nám pošlete.

!> Než soubor pošlete, podívejte se dovnitř: logy můžou obsahovat adresy
a předměty zpracované pošty. Ze serveru sám nic neodchází.
