216 lines
8.0 KiB
PL/PgSQL
216 lines
8.0 KiB
PL/PgSQL
-- ============================================================
|
||
-- 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;
|