- package.json : dépendance @transformer/ui (git+https design-system.git)
- nuxt.config.ts : css tokens.css + theme/aep.css chargés avant main.css
- assets/css/main.css : --nav-bg/-bg-alt/-surface/-primary/-accent/-text/
-text-muted/-font deviennent des alias var(--role) DS ; focus ring sur
var(--focus-ring). --nav-primary-raw, --nav-primary-solid, --nav-accent-soft
et --nav-text-on-primary restent des valeurs propres à nav-carte (pas
d'équivalent DS fiable en sombre — --nav-text-on-primary sert de contraste
à la fois sur --nav-primary translucide et --nav-primary-solid opaque, deux
fonds dont la légèreté s'inverse en sombre ; aliaser sur --on-primary DS
cassait le contraste du logo AEP et de ~10 boutons en sombre, testé au
pixel et reverti)
- tailwind.config.js : couleurs nav.* pointent vers les variables --nav-*
(pas de darkMode:'class' ajouté — aucune classe dark: Tailwind en usage)
Vérifié : npm run build OK, diff pixel avant/après < 0.5% sur home + agences
en clair/sombre (bruit = badge Nuxt Devtools, pas les tokens).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CARTO Basemaps exige une clé depuis le 23/09/2026 : sans elle, chaque tuile
porte le filigrane « API KEY REQUIRED ». Clé lue au runtime
(NUXT_PUBLIC_CARTO_KEY) ; sans clé, repli sur le Plan IGN (Géoplateforme).
FicheDetail quitte aussi les tuiles OSM (418, politique d'usage).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Les 3 routes chatbot (chatbot.post.ts, chatbot-reseaux.post.ts, chatbot-taff.post.ts)
appellent désormais ${bifrostUrl}/v1/chat/completions (header x-bf-vk) au lieu de
api.mistral.ai direct. Tier RAPIDE par défaut (groq/llama-3.1-8b-instant + fallbacks
cerebras/gemini-flash-lite/cohere), tier APPROFONDI si body.mode === 'approfondi'
(prêt pour un futur toggle UI, hors-scope ici).
- server/utils/bifrost.ts (nouveau) : mutualise les 2 tiers pour les 3 routes.
- nuxt.config.ts : ajoute bifrostUrl/bifrostVk au runtimeConfig (mistralApiKey
conservé, juste plus utilisé par ces 3 routes).
- chatbot.post.ts : garde son circuit breaker + logging stats_usage tels quels,
mais logUsage reflète maintenant le provider/modèle réel ayant répondu
(extra_fields de Bifrost) et ne calcule un coût que si ce provider est Mistral
(les autres tiers Bifrost sont free-tier — cout_eur=0 sinon, pour ne pas fausser
le circuit breaker budget).
- chatbot-reseaux.post.ts / chatbot-taff.post.ts : aucun circuit breaker/logging
avant, aucun ajouté (asymétrie pré-existante préservée telle quelle).
- chatbot-v2.post.ts (orphelin) et chatbot-pensees.post.ts (proxy LightRAG,
config runtime séparée) non touchés.
Testé en dev local contre Bifrost (IP Tailscale) : 1 appel réel par route,
réponses conformes, provider réel confirmé dans les logs de test.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Import direct du JSON au moment du build (bundlé par Rollup).
Supprime serverAssets et useStorage qui ne marchaient pas en dev Nitro.
Ajoute GET /api/plateformes-taff comme endpoint réutilisable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- nuxt.config.ts: nitro.serverAssets pointe sur public/data/
- chatbot-taff: useStorage remplace readFileSync et $fetch
(fonctionne dev + prod sans dépendance filesystem ni réseau)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>