Files
FamilyPlanner/docs/archive/INTEGRATION_MONACO.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

12 KiB

Intégration de la zone Monaco

Résumé

Monaco a été ajouté comme nouvelle zone scolaire avec ses congés scolaires et jours fériés spécifiques différents de la France.


Modifications effectuées

1. Frontend - Ajout de Monaco dans la liste des zones

Fichier : frontend/src/screens/ChildDetailScreen.js

Ligne 547 : Ajout de Monaco dans REGION_LABELS :

const REGION_LABELS = {
    "zone-a": "Zone A (...)",
    "zone-b": "Zone B (...)",
    "zone-c": "Zone C (...)",
    corse: "Corse",
    monaco: "Monaco",  // ← NOUVEAU
    guadeloupe: "Guadeloupe",
    guyane: "Guyane",
    martinique: "Martinique",
    reunion: "Réunion",
    mayotte: "Mayotte"
};

Résultat : Monaco apparaît maintenant dans la liste déroulante des zones scolaires.


2. Backend - Modèle de données

Fichier : backend/src/models/child.ts

Ligne 6 : Ajout du type Monaco :

export type SchoolRegion =
  | "zone-a"
  | "zone-b"
  | "zone-c"
  | "corse"
  | "monaco"  // ← NOUVEAU
  | "guadeloupe"
  | "guyane"
  | "martinique"
  | "reunion"
  | "mayotte";

3. Backend - Congés scolaires Monaco

Fichier : backend/src/services/holiday-service.ts

Année scolaire 2024-2025 (lignes 56-85) :

// Monaco - Vacances scolaires 2024-2025
"Vacances de la Toussaint Monaco": {
  start: "2024-10-24",
  end: "2024-11-01",
  zones: ["monaco"]
},
"Vacances de Noël Monaco": {
  start: "2024-12-23",
  end: "2025-01-03",
  zones: ["monaco"]
},
"Vacances d'hiver Monaco": {
  start: "2025-02-10",
  end: "2025-02-21",
  zones: ["monaco"]
},
"Vacances de printemps Monaco": {
  start: "2025-04-07",
  end: "2025-04-21",
  zones: ["monaco"]
},
"Vacances Grand Prix Monaco": {  // ← Spécifique Monaco !
  start: "2025-05-22",
  end: "2025-05-23",
  zones: ["monaco"]
},
"Vacances d'été Monaco": {
  start: "2025-06-30",
  end: "2025-09-05",
  zones: ["monaco"]
}

Année scolaire 2025-2026 (lignes 136-165) :

// Monaco - Vacances scolaires 2025-2026
"Vacances de la Toussaint Monaco": {
  start: "2025-10-23",
  end: "2025-10-31",
  zones: ["monaco"]
},
"Vacances de Noël Monaco": {
  start: "2025-12-22",
  end: "2026-01-02",
  zones: ["monaco"]
},
"Vacances d'hiver Monaco": {
  start: "2026-02-16",
  end: "2026-02-27",
  zones: ["monaco"]
},
"Vacances de printemps Monaco": {
  start: "2026-04-13",
  end: "2026-04-24",
  zones: ["monaco"]
},
"Vacances Grand Prix Monaco": {
  start: "2026-05-21",
  end: "2026-05-25",
  zones: ["monaco"]
},
"Vacances d'été Monaco": {
  start: "2026-06-29",
  end: "2026-09-04",
  zones: ["monaco"]
}

4. Backend - Jours fériés Monaco

Fichier : backend/src/services/holiday-service.ts

Nouveaux jours fériés monégasques (lignes 169-212) :

const MONACO_PUBLIC_HOLIDAYS: Record<number, Record<string, string>> = {
  2024: {
    "Jour de l'an": "2024-01-01",
    "Sainte Dévote": "2024-01-27",        // ← Spécifique Monaco
    "Lundi de Pâques": "2024-04-01",
    "Fête du Travail": "2024-05-01",
    "Ascension": "2024-05-09",
    "Lundi de Pentecôte": "2024-05-20",
    "Fête-Dieu": "2024-05-30",            // ← Spécifique Monaco
    "Assomption": "2024-08-15",
    "Toussaint": "2024-11-01",
    "Fête du Prince": "2024-11-19",       // ← Spécifique Monaco
    "Immaculée Conception": "2024-12-08", // ← Spécifique Monaco
    "Noël": "2024-12-25"
  },
  2025: {
    "Jour de l'an": "2025-01-01",
    "Sainte Dévote": "2025-01-27",
    "Lundi de Pâques": "2025-04-21",
    "Fête du Travail": "2025-05-01",
    "Ascension": "2025-05-29",
    "Lundi de Pentecôte": "2025-06-09",
    "Fête-Dieu": "2025-06-19",
    "Assomption": "2025-08-15",
    "Toussaint": "2025-11-01",
    "Fête du Prince": "2025-11-19",
    "Immaculée Conception": "2025-12-08",
    "Noël": "2025-12-25"
  },
  2026: {
    "Jour de l'an": "2026-01-01",
    "Sainte Dévote": "2026-01-27",
    "Lundi de Pâques": "2026-04-06",
    "Fête du Travail": "2026-05-01",
    "Ascension": "2026-05-14",
    "Lundi de Pentecôte": "2026-05-25",
    "Fête-Dieu": "2026-06-04",
    "Assomption": "2026-08-15",
    "Toussaint": "2026-11-01",
    "Fête du Prince": "2026-11-19",
    "Immaculée Conception": "2026-12-08",
    "Noël": "2026-12-25"
  }
};

Nouvelle fonction (lignes 266-279) :

export function getMonacoPublicHolidays(year?: number): Holiday[] {
  const targetYear = year ?? new Date().getFullYear();
  const holidays = MONACO_PUBLIC_HOLIDAYS[targetYear] ?? MONACO_PUBLIC_HOLIDAYS[2025];

  return Object.entries(holidays).map(([title, date]) => ({
    id: generateId(),
    title,
    startDate: date,
    endDate: date,
    type: "public" as HolidayType,
    description: "Jour férié à Monaco",
    zones: ["monaco"]
  }));
}

Fonction modifiée (lignes 284-303) :

export function getPublicHolidays(year?: number, region?: SchoolRegion): Holiday[] {
  const targetYear = year ?? new Date().getFullYear();

  // Si Monaco est demandé, retourner les jours fériés monégasques
  if (region === "monaco") {
    return getMonacoPublicHolidays(year);
  }

  // Sinon, retourner les jours fériés français
  const holidays = PUBLIC_HOLIDAYS[targetYear] ?? PUBLIC_HOLIDAYS[2025];

  return Object.entries(holidays).map(([title, date]) => ({
    id: generateId(),
    title,
    startDate: date,
    endDate: date,
    type: "public" as HolidayType,
    description: "Jour férié en France"
  }));
}

Fonction getAllHolidays modifiée (ligne 357) :

export function getAllHolidays(region?: SchoolRegion, year?: number): Holiday[] {
  const publicHolidays = getPublicHolidays(year, region);  // ← Passe maintenant la région
  const schoolHolidays = getSchoolHolidays(region, year);

  return [...publicHolidays, ...schoolHolidays].sort((a, b) =>
    new Date(a.startDate).getTime() - new Date(b.startDate).getTime()
  );
}

🎯 Jours fériés spécifiques à Monaco

Monaco a 4 jours fériés uniques absents en France :

Jour férié Date 2025 Description
Sainte Dévote 27 janvier Sainte patronne de Monaco
Fête-Dieu 19 juin Fête religieuse catholique
Fête du Prince 19 novembre Fête nationale de Monaco
Immaculée Conception 8 décembre Fête religieuse

Monaco n'a pas ces jours fériés français :

  • Victoire 1945 (8 mai)
  • Fête Nationale française (14 juillet)
  • Armistice 1918 (11 novembre)

🏫 Vacances scolaires Monaco

Monaco suit un calendrier similaire aux zones françaises mais avec des dates légèrement différentes et une particularité unique :

Particularité : Vacances Grand Prix 🏎️

Monaco a des vacances spéciales pendant le Grand Prix de Monaco :

  • 2025 : 22-23 mai (2 jours)
  • 2026 : 21-25 mai (5 jours)

Ces vacances n'existent dans aucune zone française.

Comparaison avec la France

Période Monaco 2024-2025 France Zone B Différence
Toussaint 24 oct - 1 nov 19 oct - 4 nov Commence 5 jours plus tard
Noël 23 déc - 3 jan 21 déc - 6 jan Commence 2 jours plus tard
Hiver 10 - 21 fév 15 fév - 3 mar Dates différentes
Printemps 7 - 21 avr 5 - 22 avr Presque similaire
Grand Prix 22 - 23 mai N/A Unique Monaco
Été 30 juin - 5 sept 5 juil - 1 sept Commence plus tôt

📚 Sources officielles

Congés scolaires Monaco

Jours fériés Monaco


🔄 Mise à jour automatique

Fonctionnement actuel

Les données de Monaco sont codées en dur dans le service holiday-service.ts pour les années 2024-2025 et 2025-2026.

Données disponibles

  • Congés scolaires 2024-2025
  • Congés scolaires 2025-2026
  • Jours fériés 2024
  • Jours fériés 2025
  • Jours fériés 2026

Pour ajouter de nouvelles années

  1. Consulter les sources officielles mentionnées ci-dessus
  2. Mettre à jour MONACO_PUBLIC_HOLIDAYS dans holiday-service.ts
  3. Ajouter les vacances scolaires dans SCHOOL_HOLIDAYS_XXXX_XXXX
  4. Recompiler le backend : npm run build

🚀 Utilisation

1. Sélectionner Monaco pour un enfant

  1. Aller sur le profil d'un enfant
  2. Section "Congés scolaires"
  3. Zone scolaire → Sélectionner "Monaco"
  4. Cliquer sur "Enregistrer la région"

2. Vérifier les congés dans le calendrier

  1. Aller sur "Calendrier mensuel"
  2. Sélectionner l'enfant avec zone Monaco
  3. Les vacances Monaco s'affichent avec les pastilles de couleur regroupées

3. Vérifier les jours fériés

Les jours fériés Monaco apparaissent automatiquement :

  • 🎉 Sainte Dévote (27 janvier)
  • 🎉 Fête-Dieu (juin)
  • 🎉 Fête du Prince (19 novembre)
  • 🎉 Immaculée Conception (8 décembre)

📊 Comparaison France vs Monaco

Jours fériés

Jour férié France Monaco
Jour de l'an
Sainte Dévote
Lundi de Pâques
Fête du Travail
Victoire 1945
Ascension
Lundi de Pentecôte
Fête-Dieu
Fête Nationale (14 juillet)
Assomption
Toussaint
Armistice 1918
Fête du Prince
Immaculée Conception
Noël

Total : France = 11 jours | Monaco = 12 jours

Vacances scolaires

Période France Monaco
Toussaint
Noël
Hiver (par zones)
Printemps (par zones)
Grand Prix
Été

Particularité Monaco : Vacances Grand Prix unique ! 🏎️


Tests effectués

  • Monaco apparaît dans la liste déroulante
  • Backend recompilé sans erreur
  • Les vacances Monaco sont isolées dans la zone "monaco"
  • Les jours fériés Monaco sont différents de la France
  • Fonction getMonacoPublicHolidays() créée
  • Fonction getPublicHolidays() modifiée pour supporter Monaco
  • Fonction getAllHolidays() passe la région aux jours fériés

📝 Fichiers modifiés

  1. frontend/src/screens/ChildDetailScreen.js (ligne 547)
  2. backend/src/models/child.ts (ligne 6)
  3. backend/src/services/holiday-service.ts (lignes 56-85, 136-165, 169-212, 266-279, 284-303, 357)
  4. backend/dist/* (recompilé automatiquement)

🎉 Résultat final

Monaco est maintenant pleinement intégré avec :

  • 12 jours fériés officiels (dont 4 uniques)
  • 6 périodes de vacances scolaires (dont Vacances Grand Prix)
  • Données pour 2024-2026 (3 années complètes)
  • Sélection dans l'interface (liste déroulante)
  • Affichage dans le calendrier (pastilles regroupées)
  • Sources officielles vérifiées (Gouvernement Monaco)

Monaco est traité comme une zone à part entière, avec ses spécificités culturelles et son calendrier unique ! 🇲🇨