109 lines
4.1 KiB
Markdown
109 lines
4.1 KiB
Markdown
# Plan: Ajouter des cartes de localisation aux pages acheteur et titulaire
|
||
|
||
## Date: 2026-04-28
|
||
|
||
## Statut: Approuvé
|
||
|
||
## Objectif: Ajouter des cartes interactives montrant la localisation des organisations sur les pages acheteur et titulaire
|
||
|
||
## Contexte
|
||
|
||
- Les pages acheteur et titulaire ont déjà des placeholders pour les cartes (`acheteur_map` et `titulaire_map`)
|
||
- La fonction `point_on_map()` existe déjà dans `src/figures.py` mais utilise un centrage fixe sur la France
|
||
- Les données de localisation proviennent de l'API Annuaire des Entreprises
|
||
- Les codes départementaux sont disponibles et plus fiables que les coordonnées pour la détection de région
|
||
|
||
## Exigences
|
||
|
||
### 1. Carte interactive
|
||
|
||
- **Localisation**: Colonne de droite dans la section d'informations sur l'organisation
|
||
- **Taille**: 400px de largeur × 300px de hauteur (fixe)
|
||
- **Contenu**: Carte centrée sur la France ou le département d'outre-mer approprié avec un point rouge à l'emplacement de l'organisation
|
||
- **Niveau de zoom**: Approprié pour montrer l'Hexagone ou le département d'outre-mer spécifique
|
||
- **Style**: Fond de carte clair avec point rouge visible
|
||
- **Interactivité**: Carte zoomable et déplaçable (pas de configuration statique)
|
||
|
||
### 2. Sources de données
|
||
|
||
- Utiliser les colonnes `acheteur_latitude` et `acheteur_longitude` pour les pages acheteur
|
||
- Utiliser les colonnes `titulaire_latitude` et `titulaire_longitude` pour les pages titulaire
|
||
- Utiliser les codes départementaux (`acheteur_departement_code`, `titulaire_departement_code`) pour la détection de région
|
||
- Solution de repli: Si les coordonnées ou codes départementaux sont manquants ou invalides, afficher une div vide
|
||
|
||
### 3. Détection de région
|
||
|
||
- **Départements métropolitains**: Codes à 2 caractères (ex: "75" pour Paris) → Carte Hexagone
|
||
- **Départements d'outre-mer**:
|
||
- "971" → Guadeloupe
|
||
- "972" → Martinique
|
||
- "973" → Guyane
|
||
- "974" → La Réunion
|
||
- "976" → Mayotte
|
||
- **Code département manquant**: Retourner une div vide (pas de détection basée sur les coordonnées)
|
||
|
||
### 4. Gestion des erreurs
|
||
|
||
- Coordonnées invalides → div vide
|
||
- Code département manquant → div vide
|
||
- Échec de l'API Annuaire → div vide (comportement existant)
|
||
- Format de code département invalide → div vide
|
||
|
||
## Implémentation
|
||
|
||
### Fichiers à modifier
|
||
|
||
#### 1. `src/figures.py` - Améliorer la fonction `point_on_map()`
|
||
|
||
**Ligne 178-209**: Remplacer la fonction existante par une version améliorée avec:
|
||
|
||
- Détection de région basée sur les codes départementaux
|
||
- Configuration de carte interactive (zoomable)
|
||
- Point plus grand (size=15)
|
||
- Commentaires en français
|
||
|
||
#### 2. `src/pages/acheteur.py` - Mettre à jour le callback
|
||
|
||
**Ligne 249-297**: Modifier `update_acheteur_infos()` pour:
|
||
|
||
- Extraire le code département du code postal
|
||
- Passer le code département à `point_on_map()`
|
||
- Ajouter des commentaires en français
|
||
|
||
#### 3. `src/pages/titulaire.py` - Mettre à jour le callback
|
||
|
||
**Ligne 259-297**: Modifier `update_titulaire_infos()` pour:
|
||
|
||
- Extraire le code département du code postal
|
||
- Passer le code département à `point_on_map()`
|
||
- Ajouter des commentaires en français
|
||
|
||
## Plan de Test
|
||
|
||
### Cas de test prioritaires
|
||
|
||
1. **Organisation métropolitaine**: Code département "75" (Paris) → Carte Hexagone
|
||
2. **Organisation à La Réunion**: Code département "974" → Carte centrée sur La Réunion
|
||
3. **Code département manquant**: Retourne une div vide
|
||
4. **Coordonnées invalides**: Retourne une div vide
|
||
5. **Interactivité**: Vérifier zoom et déplacement
|
||
|
||
### Critères d'acceptation
|
||
|
||
- [ ] Cartes fonctionnelles avec codes départementaux valides
|
||
- [ ] Div vide pour codes manquants/invalides
|
||
- [ ] Cartes correctement centrées et zoomées
|
||
- [ ] Interactivité (zoom et déplacement)
|
||
- [ ] Point de localisation visible (size=15)
|
||
|
||
## Approbation
|
||
|
||
Plan approuvé avec spécifications:
|
||
|
||
- Réutiliser et améliorer `point_on_map`
|
||
- Retourner div vide sans code département
|
||
- Point légèrement plus grand
|
||
- Cartes zoomables
|
||
- Utiliser codes départementaux pour détection de région
|
||
- Commentaires en français
|