# Résolution des problèmes

D’abord, la vue d’ensemble depuis le répertoire d’installation :

```
./draften status      # version, état des deux couleurs du web et des workers, HTTPS, dumps de la base
```

Puis plus en détail :

```
docker compose ps                        # les services tournent-ils, la base de données est-elle saine ?
docker compose logs --tail 50 worker     # les dernières entrées du worker
docker compose run --rm worker node diag.mjs mailbox@company.com
```

La dernière commande fait la même chose que **Tester la connexion** dans
l’interface : elle prend l’accès enregistré pour la boîte mail, obtient un
jeton, affiche ses autorisations (jamais le jeton lui-même) et lit la boîte de
réception.

## Erreurs courantes

| Symptôme | Cause | Que faire |
|---|---|---|
| `set DB_PASSWORD in .env` au démarrage | mots de passe de la base de données manquants | compléter `.env` |
| `mailbox … has no access yet` | la boîte mail n’a ni inscription ni compte connecté | page de la boîte mail → Accès aux e-mails |
| `Graph … 401 … invalid_client` | client secret erroné ou expiré | un nouveau secret au niveau de l’inscription, puis le test de connexion |
| `Graph … 403 … AppOnly AccessPolicy` | la stratégie d’accès de l’application n’a pas encore pris effet, ou la boîte mail n’est pas dans le groupe | attendre (parfois des heures), refaire le test ; ajouter la boîte mail au groupe |
| `Graph … 403 … ErrorAccessDenied` | consentement de l’administrateur manquant | dans Entra, Grant admin consent au niveau de l’inscription |
| `Category not added … MailboxSettings` | l’autorisation `MailboxSettings.ReadWrite` manque ; l’étiquetage fonctionne, mais sans couleur | ajouter l’autorisation et donner le consentement |
| `No active assistant in the database` | l’assistant est désactivé, ou les données initiales n’ont pas été créées | activer l’assistant ; consulter le journal de démarrage |
| l’assistant est ignoré (« no prompts yet ») | l’assistant n’a pas de consignes rédigées | terminer la mise en route, ou rédiger les consignes à la main |
| `Draft without signature` / `links outside the allowed domains` | le brouillon a échoué à un contrôle | examiner le message – il peut s’agir d’une tentative d’usurpation |
| `Limit reached` | la limite journalière ou par expéditeur | ne l’augmenter que si l’afflux d’e-mails est légitime |
| `Model refused to answer` | le filtre de sécurité du modèle | traiter le message à la main |
| `Model exhausted max_iterations` | le modèle a tourné en boucle dans ses outils | deux nouvelles tentatives sont faites ; si l’erreur revient, ajuster la consigne Tâche |
| `ECONNREFUSED … 3306` | la base de données est arrêtée ou pas encore démarrée | `docker compose ps`, `docker compose logs db` |
| le bandeau « La licence a expiré » ou « L’installation n’a pas de licence », les assistants ne rédigent rien | la licence manque ou a expiré | importer une licence valable – voir [La licence](/fr/admin/licence) |
| une mise à jour s’est terminée par une erreur | la nouvelle version n’est pas devenue saine ; la précédente continue de servir | l’erreur dans Demandes ou dans la sortie de `./draften update` ; `./draften status` |
| « La dernière sauvegarde quotidienne a échoué » dans la carte Sauvegardes de la base de données | le dump de la base de données a échoué (le message figure dans la carte) ; une nouvelle tentative a lieu une heure plus tard | lancer `./draften backup` et lire l’erreur ; vérifier l’espace disque libre (`df -h`) et `./draften status` |

## Quand le journal ne suffit pas

- L’interface : Paramètres de l’assistant → **Activité** (relèves du courrier,
  demandes, événements) et la page **Exploitation** (workers, file d’attente,
  erreurs des dernières 24 heures).
- Après trois tentatives infructueuses, un message reçoit le statut **en
  échec** ; la dernière erreur figure dans son détail.

## Un passage ponctuel à la main

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

Cette commande passe une fois sur chaque assistant actif en forçant le mode
d’essai – rien n’est écrit dans la boîte mail. Utile pour vérifier que tout
fonctionne.

## Quand vous avez besoin de notre aide

```
./draften diagnose
```

crée un fichier `diagnose-<heure>.tar.gz` contenant l’état de l’installation,
les versions, la configuration sans les secrets et la fin des journaux.
Envoyez-le-nous.

!> Avant d’envoyer le fichier, regardez son contenu : les journaux peuvent
contenir des adresses et des objets des e-mails traités. Rien ne quitte le
serveur de soi-même.
