# RLA API — Gestion des Marchés Tunisie Telecom Zone Sud
**Stack cible** : Node.js Express + Baserow + Docker (NAS 192.168.100.33)
**URL prod** : https://rla.bolbol.tn
**Fichiers existants** : index.html, config.js uniquement

## Règles strictes (abonnement Pro limité en tokens)
- Lire UNIQUEMENT les fichiers demandés explicitement
- 1 tâche par session, pas de mélange de modules
- Ne jamais réécrire ce qui fonctionne déjà
- Réponses courtes et précises, sans blabla
- Travailler fichier par fichier

## MCP disponibles
- baserow : http://192.168.100.33 (données marchés RLA)
- portainer : http://192.168.100.33:9000 (déploiement Docker)

## Architecture frontend (index.html)
- Fichier unique SPA — HTML + CSS + JS inline
- API REST : `/api/auth/login`, `/api/marches`, `/api/stats`, `/api/pilotage-proactif`, `/api/pipeline`, `/api/users`, `/api/logs`, `/api/export/:format`
- JWT stocké en localStorage (`rla_jwt`)
- Thème persisté en localStorage (`rla_theme`)
- Rôles : `user` (lecture, régions restreintes) · `admin` (pipeline) · `superadmin` (users, logs, exports)

## Champs API normalisés via `normalizeMarche(r)`
Appeler `normalizeMarche(r)` à la réception — ensuite utiliser uniquement :
- `r.id_marche`, `r.region`, `r.taux_phy` (number), `r.tot_marche` (number), `r.date_debut`, `r.date_fin`, `r.observation` (string)

## Régions Zone Sud — source unique
Défini dans `CONFIG.ALL_REGIONS` (config.js). Ne pas dupliquer dans le HTML.
Accès via la variable globale `ALL_REGIONS` (initialisée depuis CONFIG).

## Changelog v4 — 2026-04-18
### Bugs corrigés
- `logo-TT.png` / `Nabil.Derouiche.jpg` absents → remplacés par `logo-RLA.svg` + avatar initiales
- Thème par défaut : `loadTheme()` utilise désormais `CONFIG.DEFAULT_THEME` (plus d'incohérence avec config.js)
- `showSlide()` : active uniquement les `btn-slide-N`, pas les boutons export (ancien bug d'index)
- Filtre entrepreneur "En Service" : se réinitialise quand la région change (`onServiceRegionChange`)
- Variable `const now` inutilisée supprimée

### Améliorations
- **normalizeMarche()** : préprocesseur centralisé des champs API multi-noms
- **ALL_REGIONS centralisé** dans config.js, injecté partout via `buildRegionOptions()`
- **2 graphiques région** dans Vue Générale : avancement moyen + marchés actifs par région (bar charts)
- **Taille de page configurable** : sélecteur 10/25/50/100 dans la pagination
- **Icônes de tri actives** : fa-sort-up / fa-sort-down + classe CSS sur colonne active
- **Filtres période** sur liste Marchés (date début / date fin) + bouton reset
- **Filtre région + état** dans slide Pilotage Proactif
- **Modal édition utilisateur** : modifier rôle, région, mot de passe (PATCH /api/users/:id)
- **Toast de confirmation** pour suppression utilisateur (remplace `confirm()` natif)
- **Gestion session expirée** : 401 → toast warning + déconnexion automatique après 1,5s
- **Titre onglet dynamique** : `⚠️ N alertes — Marchés RLA` si alertes actives
- **Toast unifié** (error / success / warning) remplace errorToast mono-usage
- **Footer** : avatar initiales SVG remplace image absente
- **Touche Escape** ferme le modal édition
