Files
FamilyPlanner/docs/archive/PAGES_PROFILS_DETAILLES.md
philippe fdd72c1135 Initial commit: Family Planner application
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>
2025-10-14 10:43:33 +02:00

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 parents
  • listGrandParents() → Charge la liste des grands-parents

Modification des profils

  • updateParent(parentId, payload) → Met Ă  jour un parent
  • updateGrandParent(grandparentId, payload) → Met Ă  jour un grand-parent

Suppression des profils

  • deleteParent(parentId) → Supprime un parent
  • deleteGrandParent(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)

  1. Section Parents

    • Affiche tous les parents
    • Bouton "Voir profil" → /profiles/parent/:parentId
  2. Section Grands-parents

    • Affiche tous les grands-parents
    • Bouton "Voir profil" → /profiles/grandparent/:grandparentId

Depuis les pages détail

  1. Bouton Planning → /profiles/parent/:parentId/planning ou /profiles/grandparent/:grandparentId/planning
  2. Bouton Importer → Ouvre dialogue d'import
  3. Bouton Modifier → Ouvre panneau d'Ă©dition en overlay
  4. Bouton Supprimer → Confirmation puis retour à /profiles
  5. 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:

  1. Lancer l'application
  2. Naviguer vers /profiles
  3. Vérifier que seul le bouton "Voir profil" apparaßt sur les cartes parents/grands-parents
  4. Cliquer sur "Voir profil" d'un parent
  5. Vérifier la présence des 4 boutons: Planning, Importer, Modifier, Supprimer
  6. Tester le bouton Importer → Dialogue d'import s'ouvre
  7. Tester le bouton Modifier → Panneau d'Ă©dition s'ouvre en overlay
  8. Tester la section CongĂ©s → Ajouter un congĂ© avec dates
  9. Vérifier que le congé apparaßt dans la liste
  10. Supprimer un congé
  11. 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.tsx
  • frontend/src/components/PlanningIntegrationDialog.tsx
  • frontend/src/components/ProfileActionBar.tsx
  • frontend/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 !