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>
This commit is contained in:
414
docs/archive/INTEGRATION_MONACO.md
Normal file
414
docs/archive/INTEGRATION_MONACO.md
Normal file
@@ -0,0 +1,414 @@
|
||||
# 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 :
|
||||
```javascript
|
||||
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 :
|
||||
```typescript
|
||||
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) :
|
||||
```typescript
|
||||
// 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) :
|
||||
```typescript
|
||||
// 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) :
|
||||
|
||||
```typescript
|
||||
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) :
|
||||
```typescript
|
||||
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) :
|
||||
```typescript
|
||||
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) :
|
||||
```typescript
|
||||
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
|
||||
- **Source** : [PublicHolidays.eu - Monaco School Holidays](https://publicholidays.eu/monaco/fr/school-holidays/)
|
||||
- **Autorité** : Direction de l'Éducation Nationale de la Jeunesse et des Sports (Monaco)
|
||||
- **Arrêté** : Arrêté ministériel n° 2023-221 du 18 avril 2023
|
||||
|
||||
### Jours fériés Monaco
|
||||
- **Source** : [Monaco Tribune](https://www.monaco-tribune.com/2024/11/quels-sont-les-jours-feries-a-monaco-en-2025/)
|
||||
- **Source officielle** : [MonServicePublic.gouv.mc](https://monservicepublic.gouv.mc/en/themes/employment/employees/leave-and-sickness/public-holidays)
|
||||
- **Autorité** : Gouvernement Princier de 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 ! 🇲🇨**
|
||||
Reference in New Issue
Block a user