-- ============================================================================ -- DONNÉES DE TEST: Perturbations -- Description: Jeux de données pour tester le système de perturbations -- ============================================================================ -- Note: Ces données sont à insérer APRÈS avoir des horaires existants dans la base -- Exemple 1: Retard sur un train -- Remplacer 'HORAIRE_ID_1' par un véritable ID d'horaire existant INSERT INTO perturbations ( horaire_id, type_perturbation, duree_retard_minutes, cause, cause_details, date_debut, date_fin, actif, notes ) VALUES ( (SELECT id FROM horaires LIMIT 1), -- Premier horaire de la base 'retard', 25, 'incident_technique', 'Panne de signalisation à Paris-Montparnasse', NOW(), NOW() + INTERVAL '2 hours', true, 'Retard estimé de 25 minutes sur l''ensemble du parcours' ); -- Exemple 2: Suppression de train avec substitution INSERT INTO perturbations ( horaire_id, type_perturbation, duree_retard_minutes, cause, cause_details, sillon_substitution_id, date_debut, date_fin, actif, notes ) VALUES ( (SELECT id FROM horaires LIMIT 1 OFFSET 1), -- Deuxième horaire 'suppression', NULL, 'mouvement_social', 'Grève nationale du personnel roulant', (SELECT id FROM horaires LIMIT 1 OFFSET 2), -- Train de substitution NOW(), NOW() + INTERVAL '1 day', true, 'Train supprimé - Report sur le train suivant disponible' ); -- Exemple 3: Modification de parcours DO $$ DECLARE v_perturbation_id UUID; v_horaire_id UUID; BEGIN -- Récupérer un horaire avec des gares desservies SELECT h.id INTO v_horaire_id FROM horaires h WHERE EXISTS ( SELECT 1 FROM horaires_gares_desservies hgd WHERE hgd.horaire_id = h.id ) LIMIT 1; IF v_horaire_id IS NULL THEN RAISE NOTICE 'Aucun horaire avec gares desservies trouvé, test ignoré'; RETURN; END IF; -- Créer la perturbation INSERT INTO perturbations ( horaire_id, type_perturbation, duree_retard_minutes, cause, cause_details, date_debut, actif, notes ) VALUES ( v_horaire_id, 'modification_parcours', NULL, 'travaux', 'Travaux de maintenance sur la voie entre Lyon et Valence', NOW(), true, 'Modification du parcours : certaines gares ne seront pas desservies' ) RETURNING id INTO v_perturbation_id; -- Ajouter des modifications de parcours -- Supprimer une gare du parcours INSERT INTO perturbations_modifications_parcours ( perturbation_id, type_modification, gare_id, gare_nom, ordre ) SELECT v_perturbation_id, 'gare_supprimee', gare_id, gare_nom, ordre FROM horaires_gares_desservies WHERE horaire_id = v_horaire_id LIMIT 1; RAISE NOTICE 'Perturbation de modification de parcours créée avec succès'; END $$; -- Exemple 4: Retard causé par les conditions météorologiques INSERT INTO perturbations ( horaire_id, type_perturbation, duree_retard_minutes, cause, cause_details, date_debut, date_fin, actif, notes ) VALUES ( (SELECT id FROM horaires LIMIT 1 OFFSET 3), 'retard', 45, 'conditions_meteorologiques', 'Fortes chutes de neige en Auvergne-Rhône-Alpes', NOW(), NOW() + INTERVAL '4 hours', true, 'Circulation ralentie sur l''ensemble des lignes' ); -- Exemple 5: Perturbation inactive (historique) INSERT INTO perturbations ( horaire_id, type_perturbation, duree_retard_minutes, cause, cause_details, date_debut, date_fin, actif, notes ) VALUES ( (SELECT id FROM horaires LIMIT 1 OFFSET 4), 'retard', 10, 'affluence', 'Affluence exceptionnelle lors du départ', NOW() - INTERVAL '1 day', NOW() - INTERVAL '1 day' + INTERVAL '30 minutes', false, 'Perturbation terminée - Retard résorbé' ); -- Afficher un résumé des perturbations de test créées SELECT 'Données de test créées' as statut, COUNT(*) as nombre_perturbations_test, COUNT(*) FILTER (WHERE actif = true) as perturbations_actives, COUNT(*) FILTER (WHERE actif = false) as perturbations_inactives FROM perturbations WHERE notes LIKE '%test%' OR notes LIKE '%Test%'; -- Afficher les perturbations créées SELECT p.id, p.type_perturbation, p.duree_retard_minutes, p.cause, p.actif, h.numero_train, h.gare_depart_nom, h.gare_arrivee_nom FROM perturbations p JOIN horaires h ON p.horaire_id = h.id ORDER BY p.created_at DESC LIMIT 10; -- ============================================================================ -- NETTOYAGE DES DONNÉES DE TEST -- ============================================================================ -- Décommenter pour supprimer toutes les données de test /* DELETE FROM perturbations_modifications_parcours WHERE perturbation_id IN ( SELECT id FROM perturbations WHERE notes LIKE '%test%' OR notes LIKE '%Test%' ); DELETE FROM perturbations WHERE notes LIKE '%test%' OR notes LIKE '%Test%'; SELECT 'Données de test supprimées' as statut; */