Des données hydrologiques ouvertes, mais illisibles
Les mesures hydrologiques du bassin de la Borgne (Val d'Hérens) existent en données ouvertes fédérales, mais restent illisibles pour qui ne manie pas SPARQL et les référentiels LINDAS. Consulter un niveau, repérer une anomalie ou comprendre une tendance suppose une chaîne technique complète — ingestion, stockage, visualisation. Le projet est né comme démonstration technique de bout en bout : construire cette chaîne, proprement, et la tenir en production.
Un monostack TypeScript, et l'IA seulement là où elle est fiable
Monorepo pnpm 100 % TypeScript (ADR-001) : front Vue 3 + Tailwind avec cartographie Leaflet et graphiques D3 vanilla, API monolithe Fastify + Prisma sur PostgreSQL. L'ingestion interroge l'endpoint SPARQL LINDAS de la Confédération (graphe hydrologique OFEV) sur un cron interne.
La couche IA (ADR-012) applique un principe de fiabilité : chaque brique utilise le bon outil, pas le LLM par défaut. La détection d'anomalies est purement statistique (z-score désaisonnalisé par heure de la journée, sans LLM, entièrement testable) ; la narration LLM ne parle que sur des features pré-calculées (grounding strict) ; le chat passe par du function-calling sur 4 outils whitelistés derrière un port hexagonal, avec Mistral isolé derrière une interface swappable et une observabilité maison (coûts et appels persistés). Le tout documenté en docs-as-code : arc42 complet sur MkDocs, 12 ADR, diagrammes C4 générés depuis un modèle Structurizr, CI GitHub Actions, et des post-mortems d'incidents de déploiement réels.
En production continue depuis avril 2026
Application, API, Storybook et documentation en ligne (alpimonitor.fr et sous-domaines), déployés en continu via Coolify sur VPS Hetzner — production stable depuis le 20 avril 2026, 130 commits et 8 versions taguées de v1.0.0 à v1.6.0. Un projet qui démontre autant la discipline (arc42, 12 ADR, C4, post-mortems) que la retenue technique : l'IA n'y fait que ce qu'elle sait faire de façon fiable.
Les choix qui tiennent la maison
Chaque décision structurante est consignée dans un ADR. Quelques-unes qui comptent :