> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plato.ae/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Configurez le comportement du serveur, HTTPS, Redis et de la file d'attente.

# Configuration

Le pilote lit `config.json` depuis la racine de l'application :

* Exécutable fourni : à côté de `plato-printer.exe`.
* Développement : répertoire de travail actuel.

Si `config.json` est manquant, le pilote en crée un avec des valeurs par défaut nettoyées.

## Exemple de configuration

```json theme={null}
{
  "server": {
    "port": 8080
  },
  "features": {
    "meshEnabled": true,
    "httpsEnabled": true
  },
  "caddy": {
    "enabled": true,
    "domain": "plato-printer.local",
    "httpsPort": 443,
    "version": "2.6.4"
  },
  "redis": {
    "mode": "embedded",
    "version": "6.2.14",
    "host": "127.0.0.1",
    "port": 6379,
    "db": 0,
    "username": "",
    "password": "",
    "diskSync": true,
    "snapshotIntervalSec": 30
  },
  "queue": {
    "retryDelayMs": 5000,
    "maxAttempts": 2147483647
  }
}
```

## Serveuse

| Champ         | Défaut | Remarques                                          |
| ------------- | ------ | -------------------------------------------------- |
| `server.port` | `8080` | Port HTTP pour tous les points de terminaison API. |

L'application Express active CORS et `Access-Control-Allow-Private-Network: true` permissifs afin que les clients du navigateur POS puissent appeler le pilote à partir de réseaux locaux/privés.

## Caractéristiques

| Champ                   | Défaut | Remarques                                                            |
| ----------------------- | ------ | -------------------------------------------------------------------- |
| `features.meshEnabled`  | `true` | Active la signalisation PeerJS sur `/mesh`.                          |
| `features.httpsEnabled` | `true` | Permet la configuration de HTTPS lorsque Caddy est également activé. |

HTTPS ne démarre que lorsque `features.httpsEnabled` et `caddy.enabled` sont tous deux vrais.

## Caddie

| Champ             | Défaut                | Remarques                                     |
| ----------------- | --------------------- | --------------------------------------------- |
| `caddy.enabled`   | `true`                | Active le chemin du proxy inverse Caddy.      |
| `caddy.domain`    | `plato-printer.local` | Nom d'hôte utilisé pour HTTPS.                |
| `caddy.httpsPort` | `443`                 | Port d'écoute HTTPS.                          |
| `caddy.version`   | `2.6.4`               | Épinglé pour la compatibilité avec Windows 7. |

Sous Windows 7 ou version antérieure, le pilote rejette les configurations HTTPS qui utilisent une version de Caddy autre que `2.6.4`.

## Redis

| Champ                       | Défaut                    | Remarques                                                                                                                       |
| --------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `redis.mode`                | `embedded`                | `embedded` démarre Redis à partir du pilote ; `external` utilise un serveur Redis existant.                                     |
| `redis.version`             | `6.2.14`                  | Version Redis intégrée requise.                                                                                                 |
| `redis.host`                | `127.0.0.1`               | Redis lier/connecter l'hôte.                                                                                                    |
| `redis.port`                | `6379`                    | Port Redis.                                                                                                                     |
| `redis.db`                  | `0`                       | Numéro de base de données Redis.                                                                                                |
| `redis.username`            | vide                      | Utilisé pour l'authentification Redis externe lorsqu'il est défini.                                                             |
| `redis.password`            | vide                      | Utilisé pour l'authentification Redis externe lorsqu'il est défini.                                                             |
| `redis.diskSync`            | `false` généré par défaut | Écrit les instantanés Redis dans `dump.rdb` lorsqu'il est vrai. La configuration de production validée définit ceci sur `true`. |
| `redis.snapshotIntervalSec` | `30`                      | Intervalle d'instantané utilisé lorsque la synchronisation du disque est activée.                                               |

Le démarrage intégré de Redis abandonne l'intégralité du pilote si Redis ne peut pas démarrer ou si la version réelle de Redis ne correspond pas à `redis.version`.

## File d'attente

| Champ                | Défaut       | Remarques                                                                                               |
| -------------------- | ------------ | ------------------------------------------------------------------------------------------------------- |
| `queue.retryDelayMs` | `5000`       | Correction du délai de nouvelle tentative pour les travaux d'impression ayant échoué.                   |
| `queue.maxAttempts`  | `2147483647` | Nombre maximal de tentatives par tâche. La configuration actuelle réessaye effectivement pour toujours. |

## Désinfection

Le lecteur de configuration nettoie les valeurs :

* Les ports et les paramètres numériques doivent être des entiers positifs.
* Les booléens peuvent être des booléens ou des chaînes `"true"` / `"false"`.
* `redis.mode` doit être `embedded` ou `external`.
* Les chaînes vides reviennent aux valeurs par défaut pour les champs de type domaine/version/hôte.
