Gestion-des-Marches-RLA/README.md

5.1 KiB
Raw Blame History

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=<vue> user PDF par vue
GET /api/export/xlsx?view=<vue> superadmin Excel
GET /api/export/pptx?view=<vue> superadmin PowerPoint
GET /api/export/docx?view=<vue> 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

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)