diff --git a/.dropboxignore b/.dropboxignore new file mode 100644 index 0000000..fed427a --- /dev/null +++ b/.dropboxignore @@ -0,0 +1,4 @@ +node_modules +.nuxt +.output +.nitro diff --git a/components/ChatbotPlaceholder.vue b/components/ChatbotPlaceholder.vue index 00cdf6e..1f0e294 100644 --- a/components/ChatbotPlaceholder.vue +++ b/components/ChatbotPlaceholder.vue @@ -52,18 +52,9 @@
-

Ce chatbot fonctionne sur un serveur européen souverain -(Mistral FR, zéro rétention), conçu sobre en énergie.

-

Pour m'aider à te répondre efficacement, -formule ta requête ainsi :

- -

Exemple : "Je suis salarié d'agence, litige avec mon -employeur, besoin conseil juridique droit du travail, -Île-de-France."

+

Explore les 120 structures de la carte par la conversation. Je peux t'aider à trouver des collectifs, agences ou réseaux selon ta situation, ta pratique ou tes inspirations du moment.

+

Exemple : "Je cherche des acteurs de la rénovation de maisons individuelles en France, plutôt en milieu rural, avec des approches biosourcées ou low-tech."

+

Propulsé par Mistral FR - serveur européen souverain, zéro rétention.

@@ -72,7 +63,7 @@ employeur, besoin conseil juridique droit du travail,

{{ msg.content }}

-

Fiches recommandées :

+

Fiches recommandees :

{{ fiche.explication }}
+
+

Filtrer par :

+
+ {{ tag }} +
+
@@ -132,10 +138,12 @@ interface ChatMessage { role: 'user' | 'assistant' content: string fiches?: FicheReco[] + suggestedHashtags?: string[] } const emit = defineEmits<{ 'highlightOrgs': [ids: (number | string)[]] + 'applyHashtag': [tag: string] }>() const isExpanded = ref(false) @@ -145,6 +153,37 @@ const loading = ref(false) const errorMsg = ref('') const messagesContainer = ref(null) +// Detection hashtags depuis la question posee +const HASHTAG_KEYWORDS: Record = { + '#reemploi-structurel': ['reemploi', 'materiaux recuperes', 'deconstruction', 'reemploi structurel'], + '#reemploi-second-oeuvre': ['revetement', 'second oeuvre', 'reemploi'], + '#biosource-geosource': ['biosource', 'geosource', 'paille', 'terre', 'chanvre', 'lin', 'biosource'], + '#low-tech-experimentation': ['low-tech', 'low tech', 'technique simple', 'autonomie', 'lowtech'], + '#chantier-ecole': ['formation', 'chantier ecole', 'chantier-ecole', 'apprendre', 'auto-construction', 'autoconstruction'], + '#sobriete-energetique': ['sobriete', 'energie', 'renovation energetique', 'isolation', 'chauffage', 'economie energie'], + '#mal-logement-precarite': ['mal-logement', 'precarite', 'sans-abri', 'logement social', 'squat', 'mal logement'], + '#tiers-lieux-friches': ['friche', 'tiers-lieu', 'tiers lieu', 'espace intermediaire', 'temporaire', 'reconversion'], + '#accompagnement-cooperatif': ['cooperative', 'accompagnement', 'cooperation', 'collectif', 'mutualisation'], + '#transition-energetique-territoriale': ['territoire', 'transition', 'energetique', 'local', 'region', 'transition energetique'], + '#communs-fonciers': ['communs', 'foncier', 'anti-speculatif', 'community land trust', 'commun foncier'], + '#hack-juridique': ['juridique', 'montage', 'structure legale', 'sci', 'cooperative', 'statut'], + '#retrofit-strates': ['retrofit', 'renovation lourde', 'sur-isolation', 'rehaussement'], + '#phytoconstruction': ['plantes', 'vegetal', 'arbre', 'construction vivante', 'phyto'], +} + +function detectHashtagsFromQuery(query: string): string[] { + const q = query.toLowerCase() + .normalize('NFD') + .replace(/[̀-ͯ]/g, '') + const detected: string[] = [] + for (const [hashtag, keywords] of Object.entries(HASHTAG_KEYWORDS)) { + if (keywords.some(kw => q.includes(kw))) { + detected.push(hashtag) + } + } + return detected.slice(0, 3) +} + function toggleExpand() { isExpanded.value = !isExpanded.value } @@ -170,10 +209,12 @@ async function sendMessage() { body: { question }, }) + const suggestedHashtags = detectHashtagsFromQuery(question) const assistantMsg: ChatMessage = { role: 'assistant', content: res.reponse_texte, fiches: res.fiches_recommandees || [], + suggestedHashtags: suggestedHashtags.length ? suggestedHashtags : undefined, } messages.value.push(assistantMsg) diff --git a/pages/index.vue b/pages/index.vue index 4d42073..71107c3 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,56 +1,144 @@