-- ============================================================ -- 02_seed.sql : Données de test réalistes (conformes à 01_init.sql) -- - Idempotent : ON CONFLICT DO NOTHING -- - Utilise des UUID fixes pour faciliter les tests -- ============================================================ BEGIN; -- ============================== -- Utilisateurs (rôles & statuts) -- ============================== -- 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', 'en_attente') ON CONFLICT (id) DO NOTHING; -- assistante maternelle 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; -- ============================== -- Parents & co-parents (extensions) -- ============================== INSERT INTO parents (id_utilisateur, id_co_parent) VALUES ('33333333-3333-3333-3333-333333333333', '44444444-4444-4444-4444-444444444444'), -- parent1 avec co-parent ('55555555-5555-5555-5555-555555555555', NULL) -- parent2 seul ON CONFLICT (id_utilisateur) DO NOTHING; -- ============================== -- Assistantes maternelles (extension) -- ============================== INSERT INTO assistantes_maternelles (id_utilisateur, numero_agrement, nb_max_enfants, disponible, ville_residence, nir_chiffre) VALUES ('66666666-6666-6666-6666-666666666666', 'AGR-2025-0001', 3, true, 'Lille', '000000000000000') ON CONFLICT (id_utilisateur) DO NOTHING; -- ============================== -- Enfants -- ============================== -- Enfant A : déjà né (statut actif) 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; -- Enfant B : à naître (statut a_naitre) 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 INSERT INTO enfants_parents (id_parent, id_enfant) VALUES ('33333333-3333-3333-3333-333333333333', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'), ('44444444-4444-4444-4444-444444444444', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa') ON CONFLICT DO NOTHING; -- parent1 & parent2 ↔ enfant B INSERT INTO enfants_parents (id_parent, id_enfant) VALUES ('33333333-3333-3333-3333-333333333333', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'), ('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, statut) 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":{"midi":true,"soir":true}}'::jsonb, 'envoye' ) 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.'), ('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, delai_grace, 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', '2025-09-15', 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é) -- ============================== 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; -- ============================== -- Signalement de bug -- ============================== INSERT INTO signalements_bugs (id, id_utilisateur, description, cree_le) VALUES ( 'b0000000-0000-0000-0000-000000000001', '33333333-3333-3333-3333-333333333333', 'Impossible d’envoyer un message quand le fichier est trop lourd.', NOW() ) ON CONFLICT (id) DO NOTHING; COMMIT;