# Řešení potíží

Nejdřív tři příkazy z adresáře s instalací:

```
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` |

## 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.
