fix(chatbot-taff): import JSON statique — fonctionne dev + prod

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>
This commit is contained in:
Jules Neny
2026-05-07 01:17:07 +02:00
parent 4d7e8bede9
commit 6525afd5f5
3 changed files with 21 additions and 23 deletions

View File

@@ -4,6 +4,8 @@
* Lit plateformes-taff.json, appelle Mistral Small, retourne recommandations.
*/
// @ts-ignore — JSON import résolu par Vite/Rollup
import taffData from '../../public/data/plateformes-taff.json'
import { checkRateLimitJson } from '~/server/utils/rateLimitJson'
interface PlateformeMinimal {
@@ -65,23 +67,16 @@ export default defineEventHandler(async (event) => {
throw createError({ statusCode: 400, statusMessage: 'Question trop courte.' })
}
// Lire le JSON via Nitro serverAssets (bunde avec le serveur, dev + prod)
let plateformes: PlateformeMinimal[] = []
try {
const raw = await useStorage('assets:taff').getItem('plateformes-taff.json') as { plateformes: PlateformeMinimal[] } | null
if (!raw) throw new Error('null')
plateformes = (raw.plateformes ?? []).map((p: any) => ({
id: p.id,
nom: p.nom,
type: p.type,
description_courte: p.description_courte,
scoring: p.scoring,
secteurs_servis: p.secteurs_servis,
cout_entree: p.cout_entree,
}))
} catch (e) {
throw createError({ statusCode: 500, statusMessage: 'Données plateformes introuvables.' })
}
// Données bundlées statiquement à la compilation (import JSON)
const plateformes: PlateformeMinimal[] = ((taffData as any).plateformes ?? []).map((p: any) => ({
id: p.id,
nom: p.nom,
type: p.type,
description_courte: p.description_courte,
scoring: p.scoring,
secteurs_servis: p.secteurs_servis,
cout_entree: p.cout_entree,
}))
const context = plateformes.map(p => ({
id: p.id,