feat: PC7 chatbot V1 onglet centre HAUT + endpoint Astro proxy SSR

- ChatbotV2.vue : Vue island, thread chat (input + messages bot/user),
  persistance sessionStorage, bandeau beta '120 fiches AEP, RAG-PE bientot',
  gestion erreurs 429/502/504 ; pas de streaming ni markdown V1
- /api/chatbot.ts : endpoint Astro server proxy POST vers CHATBOT_UPSTREAM
  (default https://aep.trans-former.fr/api/chatbot), timeout 25s,
  body { question, history } -> upstream classique chatbot AEP Mistral Small
- astro.config.mjs : output 'server' + adapter @astrojs/node standalone
  (Astro 6 a supprime mode hybrid ; on opt-in prerender sur les pages)
- Toutes les pages publiques (index, manifeste, manifeste/commander,
  a-propos, mentions-legales) ont 'export const prerender = true'
- ColCentre.astro : remplace ChatbotPlaceholder par ChatbotV2 dans le tab
- .env.example : ajoute CHATBOT_UPSTREAM (V1.5 = switch LightRAG-PE 1 ligne)

Decision V1 : endpoint AEP /api/chatbot (classique, repond bien) au lieu
de /api/chatbot-v2 qui retourne v2_ready=false ('base vectorielle en cours').
Bandeau beta reste valide ; switch v2 quand ready cote AEP via env var.

Note PC8 deploy : Coolify doit booter avec 'node ./dist/server/entry.mjs'
(SSR Node standalone) au lieu de servir dist/client/ static.

Test end-to-end OK : SSR boot port 4399 + curl POST /api/chatbot ->
reponse_texte 800+ chars de l'AEP backend.
This commit is contained in:
Jules Neny
2026-05-09 01:22:01 +02:00
parent fccbc6d19c
commit be7fc09085
13 changed files with 719 additions and 255 deletions

View File

@@ -1,10 +1,15 @@
// @ts-check
import { defineConfig } from 'astro/config';
import vue from '@astrojs/vue';
import node from '@astrojs/node';
import tailwindcss from '@tailwindcss/vite';
// https://astro.build/config
// PC7 — bascule SSR (mode 'server' Astro 6) pour endpoint /api/chatbot proxy.
// Toutes les pages publiques restent statiques via `export const prerender = true`.
// Coolify deploy (PC8) : `node ./dist/server/entry.mjs` (Node adapter standalone).
export default defineConfig({
output: 'server',
adapter: node({ mode: 'standalone' }),
integrations: [vue()],
vite: {
plugins: [tailwindcss()],