fix(chatbot): double-sécurité endpoint — prop + useRoute fallback

Route /agences → /api/chatbot-reseaux garanti, même si prop non reçu.
Titre du chatbot affiche la carte active pour confirmation visuelle.
activeEndpoint computed depuis props.endpoint ?? route-based detection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jules Neny
2026-05-07 02:26:54 +02:00
parent f7b01c33e6
commit 419071b4c5

View File

@@ -61,7 +61,9 @@
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/> <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
</svg> </svg>
</div> </div>
<span class="font-bold text-sm" style="color: var(--nav-text);">{{ props.title ?? 'Chatbot' }}</span> <span class="font-bold text-sm" style="color: var(--nav-text);">
{{ props.title ?? (activeEndpoint === '/api/chatbot-reseaux' ? 'Réseaux AEP' : 'Chatbot') }}
</span>
</div> </div>
</div> </div>
@@ -168,6 +170,14 @@
import { useMarkdown } from '~/composables/useMarkdown' import { useMarkdown } from '~/composables/useMarkdown'
const { render: renderMd } = useMarkdown() const { render: renderMd } = useMarkdown()
// Détection double-sécurité : prop endpoint > route-based fallback
const route = useRoute()
const activeEndpoint = computed(() => {
if (props.endpoint) return props.endpoint
if (route.path.startsWith('/agences')) return '/api/chatbot-reseaux'
return '/api/chatbot'
})
interface FicheReco { interface FicheReco {
id: number | string id: number | string
nom: string nom: string
@@ -232,7 +242,7 @@ async function sendMessage() {
const res = await $fetch<{ const res = await $fetch<{
reponse_texte: string reponse_texte: string
fiches_recommandees: { id: number | string; nom: string; explication: string }[] fiches_recommandees: { id: number | string; nom: string; explication: string }[]
}>(props.endpoint ?? '/api/chatbot', { }>(activeEndpoint.value, {
method: 'POST', method: 'POST',
body: { question }, body: { question },
}) })