160 lines
5.6 KiB
Markdown
160 lines
5.6 KiB
Markdown
# Fonctionnalité de Gestion des Perturbations
|
|
|
|
## Vue d'ensemble
|
|
|
|
Cette fonctionnalité permet de créer, modifier et supprimer des perturbations affectant les horaires de trains. Elle comprend :
|
|
|
|
- Une page principale listant les perturbations groupées par horaire dans un accordion
|
|
- Une page de création de perturbation en 2 étapes
|
|
- Une page de modification de perturbation existante
|
|
- Un aperçu visuel du parcours avec la perturbation appliquée
|
|
|
|
## Structure des fichiers
|
|
|
|
### Base de données
|
|
- `supabase_perturbations_tables.sql` : Schéma des tables pour les perturbations
|
|
- Table `perturbations` : Stocke les perturbations principales
|
|
- Table `perturbations_modifications_parcours` : Détails des modifications de parcours
|
|
|
|
### API
|
|
- `src/api/perturbations.js` : Fonctions pour interagir avec Supabase
|
|
- `getAllPerturbations()` : Récupère toutes les perturbations
|
|
- `getPerturbationsGroupedByHoraire()` : Groupe les perturbations par horaire
|
|
- `getPerturbationById(id)` : Récupère une perturbation spécifique
|
|
- `createPerturbation(payload, modificationsParcours)` : Crée une nouvelle perturbation
|
|
- `updatePerturbation(id, payload, modificationsParcours)` : Met à jour une perturbation
|
|
- `deletePerturbation(id)` : Supprime une perturbation (soft delete)
|
|
- `getPerturbationsByHoraire(horaireId)` : Récupère les perturbations d'un horaire
|
|
|
|
### Pages
|
|
- `src/pages/perturbations/Perturbations.js` : Page principale avec la liste des perturbations
|
|
- `src/pages/perturbations/CreerPerturbation.js` : Page de création en 2 étapes
|
|
- `src/pages/perturbations/ModifierPerturbation.js` : Page de modification
|
|
- `src/pages/perturbations/Perturbations.css` : Styles pour toutes les pages
|
|
|
|
### Navigation
|
|
- Ajout de l'item "Perturbations" dans `src/components/nav-panel/NavPanel.js`
|
|
- Routes ajoutées dans `src/pages/router/PanelRouter.js` :
|
|
- `/perturbations` : Liste des perturbations
|
|
- `/perturbations/creer` : Création d'une perturbation
|
|
- `/perturbations/modifier/:id` : Modification d'une perturbation
|
|
|
|
## Types de perturbations
|
|
|
|
1. **Retard** : Le train circule avec un retard (en minutes)
|
|
2. **Suppression** : Le train ne circule pas
|
|
3. **Modification de parcours** : Le parcours du train est modifié
|
|
|
|
## Causes disponibles
|
|
|
|
- Incident technique
|
|
- Accident de personne
|
|
- Conditions météorologiques
|
|
- Travaux
|
|
- Mouvement social
|
|
- Intervention police
|
|
- Affluence
|
|
- Malveillance
|
|
- Autre
|
|
|
|
## Processus de création d'une perturbation
|
|
|
|
### Étape 1 : Sélection de l'horaire
|
|
1. Rechercher un horaire par numéro de train, gare ou ligne
|
|
2. Sélectionner l'horaire à perturber
|
|
3. Visualiser les détails de l'horaire
|
|
4. Cliquer sur "Suivant"
|
|
|
|
### Étape 2 : Définition de la perturbation
|
|
1. Choisir le type de perturbation (retard, suppression, modification)
|
|
2. Renseigner les détails selon le type :
|
|
- **Retard** : Durée en minutes
|
|
- **Suppression/Modification** : Train de substitution (optionnel)
|
|
3. Indiquer la cause de la perturbation
|
|
4. Définir la période de validité
|
|
5. Ajouter des notes internes (optionnel)
|
|
6. Visualiser l'aperçu du parcours dans le panneau de droite
|
|
7. Cliquer sur "Créer la perturbation"
|
|
|
|
## Fonctionnalités de la page principale
|
|
|
|
- **Recherche** : Filtrer les perturbations par numéro de train, gare ou ligne
|
|
- **Accordion** : Perturbations groupées par horaire
|
|
- **Actions** :
|
|
- Modifier une perturbation
|
|
- Supprimer une perturbation
|
|
- **Badges de couleur** :
|
|
- 🟡 Orange : Retard
|
|
- 🔴 Rouge : Suppression
|
|
- 🔵 Bleu : Modification de parcours
|
|
|
|
## Aperçu du parcours
|
|
|
|
L'aperçu du parcours affiche :
|
|
- Toutes les gares du trajet
|
|
- Les horaires d'arrivée et de départ
|
|
- L'application de la perturbation :
|
|
- Retard : Ajout du retard aux horaires (+XX')
|
|
- Suppression : Message "Ce train sera supprimé"
|
|
- Modification : Gares supprimées/ajoutées/modifiées avec badges de couleur
|
|
|
|
## Installation de la base de données
|
|
|
|
Exécutez le script SQL dans Supabase :
|
|
|
|
```bash
|
|
# Dans le SQL Editor de Supabase
|
|
supabase_perturbations_tables.sql
|
|
```
|
|
|
|
Ce script créera :
|
|
- La table `perturbations`
|
|
- La table `perturbations_modifications_parcours`
|
|
- Les index pour améliorer les performances
|
|
- Les triggers pour la mise à jour automatique de `updated_at`
|
|
|
|
## Composants WCS SNCF utilisés
|
|
|
|
- `wcs-button` : Boutons d'action
|
|
- `wcs-input` : Champs de saisie
|
|
- `wcs-select` : Sélecteurs déroulants
|
|
- `wcs-textarea` : Zones de texte
|
|
- `wcs-checkbox` : Cases à cocher
|
|
- `wcs-radio` : Boutons radio
|
|
- `wcs-badge` : Badges de statut et type
|
|
- `wcs-accordion` : Accordéon pour grouper les perturbations
|
|
- `wcs-card` : Cartes pour afficher les détails
|
|
- `wcs-message` : Messages d'information/erreur
|
|
- `wcs-spinner` : Indicateurs de chargement
|
|
- `wcs-mat-icon` : Icônes Material Design
|
|
|
|
## Améliorations futures possibles
|
|
|
|
1. **Modifications de parcours détaillées** :
|
|
- Interface pour ajouter/supprimer des gares du parcours
|
|
- Modification des horaires gare par gare
|
|
|
|
2. **Notifications** :
|
|
- Envoi de notifications aux utilisateurs concernés
|
|
- Intégration avec un système de messagerie
|
|
|
|
3. **Historique** :
|
|
- Suivi des modifications des perturbations
|
|
- Archivage des perturbations passées
|
|
|
|
4. **Statistiques** :
|
|
- Tableau de bord des perturbations
|
|
- Analyses par cause, type, ligne, etc.
|
|
|
|
5. **Import/Export** :
|
|
- Import de perturbations depuis un fichier CSV
|
|
- Export des perturbations pour reporting
|
|
|
|
6. **Récurrence** :
|
|
- Perturbations récurrentes (ex: travaux tous les week-ends)
|
|
- Modèles de perturbations réutilisables
|
|
|
|
## Support
|
|
|
|
Pour toute question ou problème, consultez la documentation du projet ou contactez l'équipe de développement.
|