205 lines
5.2 KiB
SQL
205 lines
5.2 KiB
SQL
-- ============================================================================
|
|
-- 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;
|
|
*/
|