ptitspas-ynov-bdd/seed/02_seed.sql
2025-08-25 10:52:20 +00:00

222 lines
8.9 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================
-- 02_seed.sql : Données de test réalistes (Sprint 1)
-- A exécuter après :
-- 01_init.sql (création des tables)
-- 02_indexes.sql
-- 03_checks.sql
-- 04_fk_policies.sql
-- 05_triggers.sql
-- ============================================================
BEGIN;
-- ------------------------------------------------------------
-- Utilisateurs (super_admin, gestionnaire, 2 parents + co-parent, 1 AM)
-- ------------------------------------------------------------
-- UUIDs fixes pour faciliter les tests / jointures
-- super_admin
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('11111111-1111-1111-1111-111111111111', 'admin@ptits-pas.fr', '$2y$10$hashAdminIci', 'Super', 'Admin', 'super_admin', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- gestionnaire
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('22222222-2222-2222-2222-222222222222', 'gestion@ptits-pas.fr', '$2y$10$hashGestionIci', 'Gina', 'Gestion', 'gestionnaire', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- parent #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('33333333-3333-3333-3333-333333333333', 'parent1@example.com', '$2y$10$hashParent1', 'Paul', 'Parent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- co-parent du parent #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('44444444-4444-4444-4444-444444444444', 'coparent1@example.com', '$2y$10$hashCoParent1', 'Clara', 'CoParent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- parent #2
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('55555555-5555-5555-5555-555555555555', 'parent2@example.com', '$2y$10$hashParent2', 'Nora', 'Parent', 'parent', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- assistante maternelle #1
INSERT INTO utilisateurs (id, courriel, mot_de_passe_hash, prenom, nom, role, statut)
VALUES ('66666666-6666-6666-6666-666666666666', 'am1@example.com', '$2y$10$hashAM1', 'Alice', 'AM', 'am', 'accepte')
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Extensions de rôles (parents / AM)
-- ------------------------------------------------------------
-- parents (id_co_parent nullable)
INSERT INTO parents (id_utilisateur, id_co_parent)
VALUES ('33333333-3333-3333-3333-333333333333', '44444444-4444-4444-4444-444444444444') -- parent1 avec co-parent
ON CONFLICT (id_utilisateur) DO NOTHING;
INSERT INTO parents (id_utilisateur, id_co_parent)
VALUES ('55555555-5555-5555-5555-555555555555', NULL) -- parent2 sans co-parent
ON CONFLICT (id_utilisateur) DO NOTHING;
-- assistantes_maternelles
INSERT INTO assistantes_maternelles (id_utilisateur, numero_agrement, nb_max_enfants, disponible, ville_residence)
VALUES ('66666666-6666-6666-6666-666666666666', 'AGR-2025-0001', 3, true, 'Lille')
ON CONFLICT (id_utilisateur) DO NOTHING;
-- ------------------------------------------------------------
-- Enfants
-- - child A : déjà né (statut = 'actif' et date_naissance requise)
-- - child B : à naître (statut = 'a_naitre' et date_prevue_naissance requise)
-- ------------------------------------------------------------
INSERT INTO enfants (id, prenom, nom, statut, date_naissance, jumeau_multiple)
VALUES ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Léo', 'Parent', 'actif', '2022-04-12', false)
ON CONFLICT (id) DO NOTHING;
INSERT INTO enfants (id, prenom, nom, statut, date_prevue_naissance, jumeau_multiple)
VALUES ('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Mila', 'Parent', 'a_naitre', '2026-02-15', false)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Liaison N:N parents_enfants
-- - parent1 + co-parent ↔ enfant A & B
-- - parent2 ↔ enfant B
-- ------------------------------------------------------------
-- parent1 ↔ enfant A
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('33333333-3333-3333-3333-333333333333', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
ON CONFLICT DO NOTHING;
-- co-parent1 ↔ enfant A
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('44444444-4444-4444-4444-444444444444', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa')
ON CONFLICT DO NOTHING;
-- parent1 ↔ enfant B
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('33333333-3333-3333-3333-333333333333', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb')
ON CONFLICT DO NOTHING;
-- parent2 ↔ enfant B
INSERT INTO enfants_parents (id_parent, id_enfant)
VALUES ('55555555-5555-5555-5555-555555555555', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb')
ON CONFLICT DO NOTHING;
-- ------------------------------------------------------------
-- Dossier (parent1 ↔ enfant A)
-- ------------------------------------------------------------
INSERT INTO dossiers (id, id_parent, id_enfant, presentation, type_contrat, repas, budget, planning_souhaite)
VALUES (
'dddddddd-dddd-dddd-dddd-dddddddddddd',
'33333333-3333-3333-3333-333333333333',
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'Besoin garde périscolaire lundi/mardi/jeudi/vendredi.',
'mensuel',
true,
600.00,
'{"lun_ven":{"matin":false,"midi":true,"soir":true}}'::jsonb
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Messages (sur le dossier)
-- ------------------------------------------------------------
INSERT INTO messages (id, id_dossier, id_expediteur, contenu)
VALUES ('m0000000-0000-0000-0000-000000000001', 'dddddddd-dddd-dddd-dddd-dddddddddddd', '33333333-3333-3333-3333-333333333333', 'Bonjour, nous cherchons une garde périscolaire.')
ON CONFLICT (id) DO NOTHING;
INSERT INTO messages (id, id_dossier, id_expediteur, contenu)
VALUES ('m0000000-0000-0000-0000-000000000002', 'dddddddd-dddd-dddd-dddd-dddddddddddd', '66666666-6666-6666-6666-666666666666', 'Bonjour, je suis disponible les soirs. Discutons du contrat.')
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Contrat (1:1 avec le dossier)
-- ------------------------------------------------------------
INSERT INTO contrats (id, id_dossier, planning, tarif_horaire, indemnites_repas, date_debut, statut, signe_parent, signe_am)
VALUES (
'cccccccc-cccc-cccc-cccc-cccccccccccc',
'dddddddd-dddd-dddd-dddd-dddddddddddd',
'{"lun_ven":{"17h-19h":true}}'::jsonb,
12.50,
3.50,
'2025-09-01',
'brouillon',
false,
false
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Avenant de contrat
-- ------------------------------------------------------------
INSERT INTO avenants_contrats (id, id_contrat, modifications, initie_par, statut)
VALUES (
'eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee',
'cccccccc-cccc-cccc-cccc-cccccccccccc',
'{"changement_horaire":{"vendredi":{"17h-20h":true}}}'::jsonb,
'33333333-3333-3333-3333-333333333333',
'propose'
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Événement (absence enfant)
-- ------------------------------------------------------------
INSERT INTO evenements (id, type, id_enfant, id_am, id_parent, cree_par, date_debut, date_fin, commentaires, statut, urgence)
VALUES (
'e0000000-0000-0000-0000-000000000001',
'absence_enfant',
'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa',
'66666666-6666-6666-6666-666666666666',
'33333333-3333-3333-3333-333333333333',
'33333333-3333-3333-3333-333333333333',
'2025-09-12',
'2025-09-12',
'Enfant malade (rhume).',
'propose',
false
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Upload (justificatif lié au dossier)
-- ------------------------------------------------------------
INSERT INTO uploads (id, id_utilisateur, id_dossier_lie, fichier_url, type_fichier)
VALUES (
'u0000000-0000-0000-0000-000000000001',
'33333333-3333-3333-3333-333333333333',
'dddddddd-dddd-dddd-dddd-dddddddddddd',
'/uploads/justificatifs/dossier_dddddddd_attestation.pdf',
'application/pdf'
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Notification (pour le parent1)
-- ------------------------------------------------------------
INSERT INTO notifications (id, id_utilisateur, type, contenu, lu)
VALUES (
'n0000000-0000-0000-0000-000000000001',
'33333333-3333-3333-3333-333333333333',
'nouveau_message',
'Vous avez un nouveau message sur le dossier #dddd…',
false
)
ON CONFLICT (id) DO NOTHING;
-- ------------------------------------------------------------
-- Validation (compte de lAM validé par le gestionnaire)
-- ------------------------------------------------------------
INSERT INTO validations (id, id_utilisateur, statut, commentaire, cree_le)
VALUES (
'v0000000-0000-0000-0000-000000000001',
'66666666-6666-6666-6666-666666666666',
'accepte',
'Dossier AM vérifié par gestionnaire.',
NOW()
)
ON CONFLICT (id) DO NOTHING;
COMMIT;