# RLA API v1 — Marchés Tunisie Telecom Zone Sud API REST + tableau de bord pour la gestion des marchés publics Tunisie Telecom Zone Sud. **URL production :** `https://rla.bolbol.tn` --- ## Architecture ``` index.html → Front-end SPA (9 vues, thèmes, exports) server.js → Entry point Express (port 3005 par défaut) routes/ → Contrôleurs HTTP services/ → Logique métier (Baserow, calculs, exports) middleware/ → Auth JWT + RBAC data/users.json → Utilisateurs (bcrypt) logs/ → Logs connexion JSON ``` ## Endpoints API ### Public | Méthode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/health` | Santé du service | | POST | `/api/auth/login` | Authentification → JWT | ### Données (auth requise) | Méthode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/synthese` | KPIs globaux + alertes + pilotage | | GET | `/api/alertes` | Marchés avec alertes délai (≤90j) | | GET | `/api/en-service` | Marchés actifs en service | | GET | `/api/en-cours` | Marchés en cours (taux_phy < 100%) | | GET | `/api/par-region` | Agrégation par région | | GET | `/api/clotures` | Marchés clôturés | | GET | `/api/pilotage-proactif` | Niveaux avancement (normal/sous/dépassé) | | GET | `/api/matrice-risque` | Matrice risque 3×3 (délai × avancement) | | GET | `/api/marches` | Liste complète marchés | | GET | `/api/marches/:id` | Détail marché | | GET | `/api/stats` | Statistiques (compat. ancien front) | ### Exports (auth requise) | Méthode | Endpoint | Rôle min. | Description | |---------|----------|-----------|-------------| | GET | `/api/export/pdf?view=` | user | PDF par vue | | GET | `/api/export/xlsx?view=` | superadmin | Excel | | GET | `/api/export/pptx?view=` | superadmin | PowerPoint | | GET | `/api/export/docx?view=` | superadmin | Word | **Vues disponibles :** `synthese`, `alertes`, `en-service`, `en-cours`, `par-region`, `clotures`, `pilotage`, `matrice-risque` ### Admin (superadmin) | Méthode | Endpoint | Description | |---------|----------|-------------| | GET | `/api/users` | Liste utilisateurs | | POST | `/api/users` | Créer utilisateur | | DELETE | `/api/users/:id` | Supprimer utilisateur | | GET | `/api/logs` | Logs connexion | | GET | `/api/pipeline` | Pipeline AO (admin+) | ## Paramètres de filtres Tous les endpoints données acceptent : | Paramètre | Type | Exemple | |-----------|------|---------| | `region` | string | `?region=Sfax` | | `entrepreneur` | string | `?entrepreneur=Ent%20X` | | `projet` | string | `?projet=4G` | | `nature` | string | `?nature=CAPEX` | | `statut` | string | `?statut=en+cours` | | `niveau` | string | `?niveau=critique` (alertes) | ## Variables d'environnement | Variable | Requis | Description | |----------|--------|-------------| | `JWT_SECRET` | ✓ | Clé secrète JWT | | `BASEROW_API_URL` | ✓ | URL Baserow (`https://baserow.bolbol.tn/api/`) | | `BASEROW_TOKEN` | ✓ | Token d'accès Baserow | | `BASEROW_TABLE_MARCHES` | ✓ | ID table marchés (ex: 856) | | `BASEROW_TABLE_PIPELINE` | ✓ | ID table pipeline (ex: 872) | | `PORT` | — | Port serveur (défaut: 3001) | | `USERS` | — | JSON utilisateurs (init si data/users.json absent) | | `SEUIL_STANDARD` | — | Seuil avancement normal (défaut: 70) | | `SEUIL_CRITIQUE_PCT` | — | Seuil avancement critique (défaut: 90) | | `DELAI_CRITIQUE` | — | Jours alerte critique (défaut: 45) | | `DELAI_ATTENTION` | — | Jours alerte attention (défaut: 90) | ## Rôles | Rôle | PDF | PPTX/XLSX/DOCX | Pipeline | Users | Logs | |------|-----|----------------|----------|-------|------| | user | ✓ | ✗ | ✗ | ✗ | ✗ | | admin | ✓ | ✗ | ✓ | ✗ | ✗ | | superadmin | ✓ | ✓ | ✓ | ✓ | ✓ | ## Démarrage ```bash npm install cp .env.example .env # configurer les variables npm start # production npm run dev # développement (--watch) ``` ## Structure des fichiers ``` routes/ auth.js → POST /api/auth/login marches.js → GET /api/marches[/:id] stats.js → GET /api/stats synthese.js → GET /api/synthese alertes.js → GET /api/alertes en-service.js → GET /api/en-service en-cours.js → GET /api/en-cours par-region.js → GET /api/par-region clotures.js → GET /api/clotures pilotage.js → GET /api/pilotage-proactif matrice-risque.js → GET /api/matrice-risque export.js → GET /api/export/[pdf|xlsx|pptx|docx] pipeline.js → GET /api/pipeline users.js → CRUD /api/users logs.js → GET /api/logs services/ baserow.js → Client Baserow (pagination auto) calc.js → Calculs métier (alertes, risques, formatage) export-pdf.js → Générateurs PDF par vue (PDFKit) export-xlsx.js → Générateur Excel (ExcelJS) users.js → CRUD fichier users.json logs.js → Logs connexion JSON middleware/ auth.js → Vérification JWT Bearer roles.js → RBAC (requireUser/Admin/SuperAdmin + filterByRegion) ```