osm-labo/docs/osmose_integration.md

126 lines
No EOL
6.2 KiB
Markdown

# Intégration des analyses Osmose
Ce document décrit l'intégration des analyses Osmose dans les pages détaillées de thématique, à la fois pour les routes publiques et administratives.
## Fonctionnalités implémentées
1. Affichage d'une carte avec les analyses Osmose pour la thématique courante
2. Affichage des analyses sous forme de points violets sur la carte
3. Popups interactives avec:
- Titre et description de l'analyse
- Tags proposés (tableau clé-valeur)
- Bouton pour voir l'analyse sur Osmose
- Bouton pour réparer dans JOSM via la télécommande
## Thèmes supportés
Les thèmes suivants sont actuellement supportés avec leurs IDs d'items Osmose correspondants:
| Thème | IDs Osmose |
|-------|------------|
| charging_station (Bornes de recharge) | 8410, 8411 |
| school (Écoles) | 8031 |
| healthcare (Santé) | 8211, 7220, 8331 |
| laboratory (Laboratoires d'analyses) | 7240, 8351 |
| police (Commissariats) | 8190, 8191 |
| defibrillator (Défibrillateurs) | 8370 |
Pour ajouter de nouveaux thèmes, modifiez la constante `osmoseItemsMapping` dans les deux fichiers suivants:
- `templates/public/followup_graph.html.twig` (route publique)
- `templates/admin/followup_theme_graph.html.twig` (route administrative)
Assurez-vous que les mappages sont identiques dans les deux fichiers pour garantir un comportement cohérent.
## Fonctionnement technique
L'intégration est implémentée à la fois sur la route publique (`templates/public/followup_graph.html.twig`) et sur la route administrative (`templates/admin/followup_theme_graph.html.twig`). Le fonctionnement est similaire sur les deux routes:
1. La carte est initialisée avec MapLibre GL JS
2. Les coordonnées de la commune sont récupérées via l'API Geo.gouv.fr
3. Une bounding box est calculée autour du centre de la commune
4. Les analyses Osmose sont récupérées via l'API Osmose avec les paramètres:
- Les IDs d'items correspondant au thème
- La bounding box calculée
- Les niveaux de sévérité 1, 2 et 3
- Une limite de 500 résultats
5. Les analyses sont affichées sous forme de points violets sur la carte
6. Au clic sur un point, une popup s'ouvre et charge les détails de l'analyse via l'API Osmose
7. La popup affiche les tags proposés et des boutons d'action
### Différences entre les routes
- **Route publique**: La carte affiche uniquement les analyses Osmose.
- **Route administrative**: La carte affiche à la fois les objets OSM existants (récupérés via Overpass API) et les analyses Osmose, permettant une comparaison directe entre les objets existants et les suggestions d'ajout.
## Exemple d'URL d'API Osmose
Pour les bornes de recharge (charging_station):
```
https://osmose.openstreetmap.fr/api/0.3/issues?zoom=12&item=8410,8411&level=1,2,3&limit=500&bbox=-0.789642333984375,47.35905994178323,-0.3203201293945313,47.598060753627195
```
Pour récupérer les détails d'une analyse:
```
https://osmose.openstreetmap.fr/api/0.3/issue/5c319a16-3689-b8c7-5427-187e04a6042a?langs=auto
```
## Tests
Pour tester l'intégration:
### Route publique
1. Accédez à une page de thématique détaillée publique, par exemple:
- `/stats/12345/followup-graph/charging_station` pour les bornes de recharge
- `/stats/12345/followup-graph/school` pour les écoles
- `/stats/12345/followup-graph/healthcare` pour les lieux de santé
2. Vérifiez que:
- La carte s'affiche correctement
- Les points violets apparaissent sur la carte (s'il y a des analyses Osmose pour cette thématique dans la zone)
- Au clic sur un point, une popup s'ouvre avec les détails de l'analyse
- Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement
### Route administrative
1. Accédez à une page de thématique détaillée administrative, par exemple:
- `/admin/stats/12345/followup-graph/charging_station` pour les bornes de recharge
- `/admin/stats/12345/followup-graph/school` pour les écoles
- `/admin/stats/12345/followup-graph/healthcare` pour les lieux de santé
2. Vérifiez que:
- La carte s'affiche correctement avec les objets OSM existants
- Les points violets des analyses Osmose apparaissent également sur la carte
- Au clic sur un point violet, une popup s'ouvre avec les détails de l'analyse
- Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement
## Dépannage
### Problèmes généraux
Si la carte ne s'affiche pas correctement:
- Vérifiez que la variable d'environnement `MAPTILER_TOKEN` est correctement définie
- Vérifiez les erreurs dans la console JavaScript du navigateur
Si les analyses Osmose ne s'affichent pas:
- Vérifiez que le thème a des IDs d'items Osmose associés dans `osmoseItemsMapping`
- Vérifiez qu'il y a des analyses Osmose pour ce thème dans la zone
- Vérifiez les erreurs dans la console JavaScript du navigateur
### Erreurs liées à l'API Osmose
Si vous rencontrez l'erreur "TypeError: right-hand side of 'in' should be an object, got undefined":
- Cette erreur peut se produire si l'API Osmose renvoie une réponse où `data.issue` est undefined
- Vérifiez que la fonction `loadOsmoseIssueDetails` contient bien la vérification `if (!data || !data.issue) return;` avant d'utiliser `data.issue`
- Si l'erreur persiste, vérifiez la structure de la réponse de l'API Osmose en ajoutant `console.log(data)` avant d'utiliser `data.issue`
### Problèmes spécifiques à la route administrative
Si les analyses Osmose s'affichent sur la route publique mais pas sur la route administrative:
- Vérifiez que la constante `osmoseItemsMapping` est correctement définie dans `templates/admin/followup_theme_graph.html.twig`
- Vérifiez que le code d'initialisation des analyses Osmose est appelé après l'initialisation de la carte
- Vérifiez que les analyses Osmose ne sont pas masquées par d'autres éléments de la carte (comme les marqueurs des objets OSM existants)
Si les objets OSM existants et les analyses Osmose se chevauchent de manière confuse:
- Les analyses Osmose sont affichées avec des marqueurs violets pour les distinguer des objets OSM existants
- Vous pouvez ajuster la couleur des marqueurs Osmose en modifiant la valeur `color: '#8A2BE2'` dans la fonction `loadOsmoseAnalyses`