Complete family planning application with: - React frontend with TypeScript - Node.js/Express backend with TypeScript - Python ingestion service for document processing - Planning ingestion service with LLM integration - Shared UI components and type definitions - OAuth integration for calendar synchronization - Comprehensive documentation đ€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8.3 KiB
Pages de Profils Détaillées - Parents et Grands-parents
Résumé des changements
Les pages de profil pour Parents et Grands-parents ont Ă©tĂ© créées avec la mĂȘme structure et ergonomie que la page des Enfants, conformĂ©ment Ă la demande.
â Pages créées
1. ParentDetailScreen.js
Chemin: frontend/src/screens/ParentDetailScreen.js
Route: /profiles/parent/:parentId
Fonctionnalités:
- â Bouton Planning â Navigation vers la page planning du parent
- â Bouton Importer â Dialogue d'import de fichier (PDF/image avec OCR)
- â Bouton Modifier â Panneau d'Ă©dition en overlay (mĂȘme page)
- â Bouton Supprimer â Suppression du profil avec confirmation
- â
Section Congés avec sélecteur de dates (date picker)
- Titre du congé
- Date de début
- Date de fin
- Liste des congés enregistrés
- Suppression individuelle des congés
- â Section Notes personnelles Ă©ditables
Différences avec la page Enfant:
- â Pas de bouton "Connexion Pronote"
- â Pas de section "CongĂ©s scolaires"
- â Pas de donnĂ©es Pronote (notes, devoirs, absences, retards)
- â Ă la place : Section "CongĂ©s" personnalisables
2. GrandparentDetailScreen.js
Chemin: frontend/src/screens/GrandparentDetailScreen.js
Route: /profiles/grandparent/:grandparentId
Fonctionnalités: Identiques à ParentDetailScreen
â Modifications effectuĂ©es
1. ParentsScreen.js (Page liste des profils)
Modifications (lignes 390 et 398):
- Suppression de tous les boutons sauf "Voir profil" pour les parents
- Suppression de tous les boutons sauf "Voir profil" pour les grands-parents
AVANT:
_jsx(ProfileActionBar, {
onViewProfile: () => navigate(`/profiles/parent/${parent.id}`),
onView: () => handleViewAdultPlanning(parent.id, "parent"),
onOpenPlanningCenter: () => openIntegration(parent.id, parent.fullName, "parent"),
onEdit: () => setEditing({ type: "parent", id: parent.id }),
onDelete: () => handleDeleteAdult(parent.id, "parent"),
importing: !!importing[parent.id],
connectionsCount: getConnections(parent.id).length
})
APRĂS:
_jsx(ProfileActionBar, {
onViewProfile: () => navigate(`/profiles/parent/${parent.id}`)
})
2. App.js (Routes)
Ajout (lignes 13-14, 16):
import { ParentDetailScreen } from "./screens/ParentDetailScreen";
import { GrandparentDetailScreen } from "./screens/GrandparentDetailScreen";
// Dans les routes:
_jsx(Route, { path: "/profiles/parent/:parentId", element: _jsx(ParentDetailScreen, {}) }),
_jsx(Route, { path: "/profiles/grandparent/:grandparentId", element: _jsx(GrandparentDetailScreen, {}) }),
đš Design et Ergonomie
Structure identique Ă ChildDetailScreen
- Header avec avatar circulaire, nom, email, et rĂŽle (Parent/Grand-parent)
- Boutons d'action dans le header (Planning, Importer, Modifier, Supprimer)
- Grille de cartes pour les sections (Congés, Notes personnelles)
- Style glassmorphism avec dégradés et effets de transparence
Section Congés (remplace Congés scolaires)
âââââââââââââââââââââââââââââââââââââââ
â đïž CongĂ©s â
âââââââââââââââââââââââââââââââââââââââ€
â Titre du congĂ© â
â [Ex: Vacances d'Ă©tĂ© ] â
â â
â Date de dĂ©but Date de fin â
â [2024-07-01] [2024-07-15] â
â [Ajouter] â
â â
â âââââââââââââââââââââââââââââââââââ â
â â Vacances d'Ă©tĂ© â â
â â Du 1 juillet 2024 au 15 juilletâ â
â â [Supprimer] â â
â âââââââââââââââââââââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââ
đ§ APIs utilisĂ©es
Lecture des profils
listParents()â Charge la liste des parentslistGrandParents()â Charge la liste des grands-parents
Modification des profils
updateParent(parentId, payload)â Met Ă jour un parentupdateGrandParent(grandparentId, payload)â Met Ă jour un grand-parent
Suppression des profils
deleteParent(parentId)â Supprime un parentdeleteGrandParent(grandparentId)â Supprime un grand-parent
Import de planning
uploadPlanning(profileId, file)â Import de fichier PDF/image avec OCR
Gestion des congés
Les congés sont stockés dans le champ vacations du profil:
{
vacations: [
{
id: "unique-id",
title: "Vacances d'été",
startDate: "2024-07-01",
endDate: "2024-07-15"
}
]
}
đ Composants rĂ©utilisĂ©s
ParentProfilePanelâ Panneau d'Ă©dition (dĂ©jĂ existant)PlanningIntegrationDialogâ Dialogue d'import (dĂ©jĂ existant)ProfileActionBarâ Barre d'actions simplifiĂ©e (dĂ©jĂ existant)
đ Navigation
Depuis la page liste (/profiles)
-
Section Parents
- Affiche tous les parents
- Bouton "Voir profil" â
/profiles/parent/:parentId
-
Section Grands-parents
- Affiche tous les grands-parents
- Bouton "Voir profil" â
/profiles/grandparent/:grandparentId
Depuis les pages détail
- Bouton Planning â
/profiles/parent/:parentId/planningou/profiles/grandparent/:grandparentId/planning - Bouton Importer â Ouvre dialogue d'import
- Bouton Modifier â Ouvre panneau d'Ă©dition en overlay
- Bouton Supprimer â Confirmation puis retour Ă
/profiles - Bouton â Retour â Retour Ă
/profiles
⚠Points clés de l'implémentation
1. Ergonomie cohérente
Toutes les pages de profil (enfant, parent, grand-parent) partagent:
- MĂȘme structure de header
- MĂȘmes boutons d'action
- MĂȘme style visuel
- MĂȘme comportement (overlay pour Ă©dition, dialogue pour import)
2. Séparation des responsabilités
- Page liste (
ParentsScreen) â Affiche uniquement "Voir profil" - Pages dĂ©tail â Toutes les actions (Planning, Importer, Modifier, Supprimer)
3. Adaptations spécifiques
- Enfants â Pronote + CongĂ©s scolaires
- Parents/Grands-parents â CongĂ©s personnalisables avec date picker
đ§Ș Test de l'implĂ©mentation
Ătapes de test:
- Lancer l'application
- Naviguer vers
/profiles - Vérifier que seul le bouton "Voir profil" apparaßt sur les cartes parents/grands-parents
- Cliquer sur "Voir profil" d'un parent
- Vérifier la présence des 4 boutons: Planning, Importer, Modifier, Supprimer
- Tester le bouton Importer â Dialogue d'import s'ouvre
- Tester le bouton Modifier â Panneau d'Ă©dition s'ouvre en overlay
- Tester la section CongĂ©s â Ajouter un congĂ© avec dates
- Vérifier que le congé apparaßt dans la liste
- Supprimer un congé
- Tester les Notes personnelles â Ăditer et sauvegarder
đ Fichiers modifiĂ©s/créés
Créés
- â
frontend/src/screens/ParentDetailScreen.js(624 lignes) - â
frontend/src/screens/GrandparentDetailScreen.js(624 lignes)
Modifiés
- â
frontend/src/screens/ParentsScreen.js(lignes 390, 398) - â
frontend/src/App.js(lignes 13-14, 16)
Inchangés (réutilisés)
frontend/src/components/ParentProfilePanel.tsxfrontend/src/components/PlanningIntegrationDialog.tsxfrontend/src/components/ProfileActionBar.tsxfrontend/src/services/api-client.js
đŻ RĂ©sultat final
Les pages de profil pour Parents et Grands-parents ont Ă©tĂ© créées avec exactement la mĂȘme structure et ergonomie que la page Enfant, avec les adaptations suivantes:
| Fonctionnalité | Enfant | Parent/Grand-parent |
|---|---|---|
| Bouton Planning | â | â |
| Bouton Importer | â | â |
| Bouton Modifier | â | â |
| Bouton Supprimer | â | â |
| Connexion Pronote | â | â |
| DonnĂ©es Pronote | â | â |
| CongĂ©s scolaires | â | â |
| CongĂ©s personnalisables | â | â |
| Notes personnelles | â | â |
â Toutes les fonctionnalitĂ©s demandĂ©es ont Ă©tĂ© implĂ©mentĂ©es avec succĂšs !