# XDock Plus → MyTruck Bridge v2.0

Extension Microsoft Edge / Chrome qui synchronise en **arrière-plan** la page
XDock+ « **En cours** » avec ton API MyTruck — **sans nécessiter qu'un onglet
soit actif ni qu'une personne du bureau soit présente**.

## ✨ Ce qui change vs v1

| v1 (ancienne) | v2.1 (nouvelle) |
|---|---|
| Le cariste demande → l'extension scrape EN DIRECT → le cariste attend | Le bureau scrape en boucle, le serveur cache, le cariste lit le cache |
| Nécessite que le bureau ait l'onglet **« En cours »** actif | Suffit qu'il y ait **n'importe quel onglet xdock.de** ouvert dans Edge |
| 1 cariste = 1 requête postMessage | Tous les caristes lisent une DB déjà à jour (latence ≤ 30 s) |
| Camion A reste tant que le cariste ne refresh pas | Camion A est automatiquement remplacé par B dès que XDock+ le montre |

## 🛠️ Installation

1. **Décompresse** ce dossier dans un emplacement permanent (ex. `C:\xdock-plus-extension\`).
2. Ouvre Edge → `edge://extensions` → active **Mode développeur**.
3. Clique **Charger l'extension décompressée** → sélectionne le dossier.
4. Épingle l'extension (icône en forme de puzzle dans la barre).
5. **Garde au moins un onglet XDock+ ouvert** (n'importe quelle page sur `xdock.de` — login, accueil, peu importe). L'extension n'a PAS besoin que tu sois sur la page « En cours » : elle fait elle-même un `fetch()` discret toutes les 30s en utilisant ta session.
6. Le PC du bureau doit rester **allumé et Edge lancé** (mais l'utilisateur n'a pas
   à interagir).

## 🔄 Fonctionnement

```
┌──────────────────────────┐                ┌─────────────────────────┐
│  PC du bureau (Edge)     │                │  Serveur MyTruck (NAS)  │
│                          │                │                         │
│  ┌────────────────────┐  │  POST /api/gp/ │  ┌───────────────────┐  │
│  │ background.js (SW) │──┼─►xdock/current-┼─►│ xdock_current_    │  │
│  │  alarm 30s         │  │  task/upsert-  │  │  tasks (UPSERT)   │  │
│  └──────────┬─────────┘  │  bulk          │  └─────────┬─────────┘  │
│             │            │                │            │            │
│             ▼            │                │            │            │
│  ┌────────────────────┐  │                │            │            │
│  │ XDock+ "En cours"  │  │                │            │            │
│  │   (arrière-plan)   │  │                │            │            │
│  └────────────────────┘  │                │            │            │
└──────────────────────────┘                └────────────┼────────────┘
                                                         │
                          ┌──────────────────────────┐   │
                          │ Cariste sur MyTruck      │   │
                          │  /new-folder             │   │
                          │  ┌────────────────────┐  │   │
                          │  │ mytruck_bridge.js  │──┼───┘
                          │  │  GET /api/gp/      │  │
                          │  │  xdock/current-    │  │
                          │  │  task/me           │  │
                          │  └────────────────────┘  │
                          └──────────────────────────┘
```

- **Toutes les 30 s** : `background.js` se réveille (via `chrome.alarms`),
  trouve l'onglet XDock+ « En cours », y injecte un scraper et POST la liste
  complète des camions au serveur MyTruck.
- **Côté serveur** : chaque ligne est upserted par `xdock_name` (la "Porte",
  ex. `T21`). Si le quai T21 passe du camion A à B, B écrase A. Les quais qui
  n'apparaissent plus depuis 2 min sont automatiquement vidés.
- **Côté cariste** : à l'ouverture de `/new-folder`, MyTruck lit `xdock_current_tasks`
  pour le `xdock_name` du cariste et pré-remplit les champs.

## 🔧 Configuration

Édite `background.js` si besoin :
- `MYTRUCK_API`   → URL de ton API (par défaut `https://www.gp-eff.fr/...`)
- `API_KEY`       → ta clé `XDOCKPLUS_API_KEY` (.env du backend)
- `PERIOD_MIN`    → période de sync (par défaut 0.5 min = 30 s)
- `XDOCK_URL_RE`  → regex de l'URL de la page « En cours »

## 🩺 Diagnostic

- Clic sur l'icône de l'extension → popup avec « Dernière sync : X s » + bouton « Forcer la synchro ».
- `edge://extensions` → clic sur "Service Worker" sous l'extension → onglet **Console**
  pour voir les logs `[XDock+]`.
- Si « Dernière sync » dépasse 90 s, vérifie :
  1. Que l'onglet XDock+ est bien ouvert
  2. Que l'URL matche bien `XDOCK_URL_RE`
  3. Que le PC n'est pas en veille (option à désactiver dans Windows)

## 📋 Permissions demandées (manifest.json)

| Permission | Pourquoi |
|---|---|
| `alarms` | Wake-up périodique du service worker |
| `tabs` | Lister les onglets pour trouver XDock+ |
| `scripting` | Injecter le scraper dans l'onglet XDock+ |
| `storage` | Persister la date de dernière sync |
| `notifications` | (réservé pour futures notifs d'erreur) |
| `host_permissions: *.xdock.de` | Lire la page XDock+ |
| `host_permissions: gp-eff.fr` | POST vers ton API |
