diff --git a/seed/02_seed.sql b/seed/02_seed.sql new file mode 100644 index 0000000..c8ef3b4 --- /dev/null +++ b/seed/02_seed.sql @@ -0,0 +1,221 @@ +-- ============================================================ +-- 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 l’AM 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;