diff --git a/components/CartePensees.vue b/components/CartePensees.vue
new file mode 100644
index 0000000..50a87de
--- /dev/null
+++ b/components/CartePensees.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
diff --git a/components/ChatbotPensees.vue b/components/ChatbotPensees.vue
new file mode 100644
index 0000000..7cf1004
--- /dev/null
+++ b/components/ChatbotPensees.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
RAG Pensees Ecologiques
+
{{ corpusCount }} auteurs ingeres
+
+
+
+
+
+ Pose une question sur les pensees ecologiques : ecosocialisme, decroissance, ecofeminismes, technocritique, deep ecology...
+
+
+ {{ msg.content }}
+
+
+
+
+
+
+ [{{ si + 1 }}] {{ s }}
+
+
+
+
+
+
+
+
+
{{ err }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/FicheAuteur.vue b/components/FicheAuteur.vue
new file mode 100644
index 0000000..e1b3f9a
--- /dev/null
+++ b/components/FicheAuteur.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ ecoleLabel }}
+ {{ getEcoleLabel(eid) }}
+
+
{{ auteur.nom }}
+
{{ auteur.dates }}
+
+
+
+
+
+
{{ auteur.bio_courte }}
+
+
+
Livres dans le RAG
+
+
+
+
{{ l.titre }}
+
{{ l.annee }}
+
+
+ {{ c }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/nuxt.config.ts b/nuxt.config.ts
index f84f305..b1b75e9 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -23,6 +23,7 @@ export default defineNuxtConfig({
codevPassword: 'merci', // NUXT_CODEV_PASSWORD - défaut "merci", overridable
codevBaseId: '', // NUXT_CODEV_BASE_ID - base NocoDB (ex: pipilvsi7dibo80)
codevAdminPassword: 'admin2026', // NUXT_CODEV_ADMIN_PASSWORD
+ ragPeUrl: process.env.NUXT_RAG_PE_URL || 'http://localhost:9621',
},
// Leaflet ne fonctionne pas en SSR — forcer le rendu côté client
diff --git a/pages/agences.vue b/pages/agences.vue
index c2f1dfb..1d7f556 100644
--- a/pages/agences.vue
+++ b/pages/agences.vue
@@ -128,6 +128,12 @@
: 'color: var(--nav-text-muted); border-bottom: 2px solid transparent;'"
@click="desktopMapView = 'graphe'"
>Vue graphique
+ Pensees
@@ -219,6 +225,11 @@
: 'color: var(--nav-text-muted); border-bottom: 2px solid transparent;'"
@click="mobileMapView = 'graphe'"
>Graphe
+ Pensees
diff --git a/pages/pensees-ecologiques.vue b/pages/pensees-ecologiques.vue
new file mode 100644
index 0000000..82ec1f3
--- /dev/null
+++ b/pages/pensees-ecologiques.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
Pensees Ecologiques
+
+ {{ corpusCount }} auteurs ingeres dans le RAG - carte FRACAS Bonpote V2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Chargement de la carte...
+
+
+
+
+
+
+
+
+
+
+
+ Chargement du graphe...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/data/auteurs-pensees.json b/public/data/auteurs-pensees.json
new file mode 100644
index 0000000..87b4af5
--- /dev/null
+++ b/public/data/auteurs-pensees.json
@@ -0,0 +1,300 @@
+{
+ "meta": {
+ "version": "1.0",
+ "source": "FRACAS Bonpote V2 oct 2024 + LightRAG corpus J+2",
+ "corpus_ingere": 27,
+ "updated": "2026-05-11"
+ },
+ "ecoles": [
+ {
+ "id": "ecosocialisme",
+ "label": "Écosocialisme",
+ "description": "Synthèse du marxisme et de l'écologie. Articule la critique du capitalisme et la crise écologique comme deux faces d'un même système.",
+ "color": "#c0392b",
+ "x_hint": 0.55,
+ "y_hint": 0.28
+ },
+ {
+ "id": "eco-anarchisme",
+ "label": "Éco-anarchisme",
+ "description": "Écologies libertaires et anti-industrielles. Contre l'État, le capitalisme et la domination de la nature — pour l'autogestion et le municipalisme libertaire.",
+ "color": "#2d6a4f",
+ "x_hint": 0.25,
+ "y_hint": 0.3
+ },
+ {
+ "id": "decroissance",
+ "label": "Décroissance",
+ "description": "Critique radicale de la croissance économique comme horizon. Pour une réduction volontaire de la production et de la consommation.",
+ "color": "#e67e22",
+ "x_hint": 0.38,
+ "y_hint": 0.42
+ },
+ {
+ "id": "ecofeminismes",
+ "label": "Écoféminismes",
+ "description": "Connexions entre la domination des femmes et la domination de la nature. Féminisme de la subsistance, critique du développement, commons.",
+ "color": "#e07a5f",
+ "x_hint": 0.48,
+ "y_hint": 0.68
+ },
+ {
+ "id": "technocritique",
+ "label": "Technocritique",
+ "description": "Critique radicale de la technique comme système autonome. Contre l'illusion de la technologie comme solution aux crises qu'elle engendre.",
+ "color": "#7f8c8d",
+ "x_hint": 0.2,
+ "y_hint": 0.48
+ },
+ {
+ "id": "ecologies-decoloniales",
+ "label": "Écologies décoloniales",
+ "description": "Articulation des luttes écologiques et des luttes anticoloniales. Critique de l'extractivisme comme continuation du colonialisme.",
+ "color": "#b5451b",
+ "x_hint": 0.3,
+ "y_hint": 0.72
+ },
+ {
+ "id": "ethiques-environnementales",
+ "label": "Éthiques environnementales",
+ "description": "Philosophies de la nature : deep ecology, écocentrisme, droits des non-humains. Valeur intrinsèque du vivant.",
+ "color": "#2c7873",
+ "x_hint": 0.72,
+ "y_hint": 0.72
+ },
+ {
+ "id": "pensees-vivant",
+ "label": "Pensées du vivant",
+ "description": "Anthropologie et ontologies de la nature. Dépasser le dualisme nature/culture. Sympoïèse, multi-espèces.",
+ "color": "#6b8e6e",
+ "x_hint": 0.62,
+ "y_hint": 0.58
+ }
+ ],
+ "auteurs": [
+ {
+ "id": "murray-bookchin",
+ "nom": "Murray Bookchin",
+ "dates": "1921-2006",
+ "ecoles": ["eco-anarchisme"],
+ "ecole_principale": "eco-anarchisme",
+ "livres_rag": [
+ { "slug": "bookchin-ecology-of-freedom", "titre": "L'Écologie de la liberté", "annee": 1982, "couches": ["fond", "structure"] },
+ { "slug": "bookchin-post-scarcity", "titre": "Post-Scarcity Anarchism", "annee": 1971, "couches": ["fond", "structure"] },
+ { "slug": "bookchin-urbanization", "titre": "The Rise of Urbanization and the Decline of Citizenship", "annee": 1987, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Municipalisme libertaire", "Écologie sociale", "Hiérarchie comme origine de la domination nature"],
+ "bio_courte": "Théoricien américain de l'écologie sociale et du municipalisme libertaire. A développé le concept d'\"écologie sociale\" articulant domination sociale et destruction de la nature."
+ },
+ {
+ "id": "pierre-kropotkine",
+ "nom": "Pierre Kropotkine",
+ "dates": "1842-1921",
+ "ecoles": ["eco-anarchisme"],
+ "ecole_principale": "eco-anarchisme",
+ "livres_rag": [
+ { "slug": "kropotkine-entraide", "titre": "L'Entraide, un facteur de l'évolution", "annee": 1902, "couches": ["fond", "structure"] },
+ { "slug": "kropotkine-pain", "titre": "La Conquête du pain", "annee": 1892, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Entraide vs sélection naturelle darwiniste", "Fédéralisme anarchiste", "Géographie critique"],
+ "bio_courte": "Géographe et révolutionnaire russe. Son oeuvre centrale démontre que l'entraide, et non la compétition, est le moteur principal de l'évolution."
+ },
+ {
+ "id": "michael-lowy",
+ "nom": "Michael Löwy",
+ "dates": "1938-",
+ "ecoles": ["ecosocialisme"],
+ "ecole_principale": "ecosocialisme",
+ "livres_rag": [
+ { "slug": "lowy-ecosocialisme", "titre": "Écosocialisme", "annee": 2011, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Romantisme révolutionnaire", "Anticapitalisme écologique", "Walter Benjamin et l'écologie"],
+ "bio_courte": "Sociologue franco-brésilien, figure centrale de l'écosocialisme. Articule marxisme hétérodoxe et critique de la modernité industrielle."
+ },
+ {
+ "id": "andreas-malm",
+ "nom": "Andreas Malm",
+ "dates": "1977-",
+ "ecoles": ["ecosocialisme"],
+ "ecole_principale": "ecosocialisme",
+ "livres_rag": [
+ { "slug": "malm-fossil-capital", "titre": "Fossil Capital", "annee": 2016, "couches": ["fond", "structure"] },
+ { "slug": "malm-comment-saboter", "titre": "Comment saboter un pipeline ?", "annee": 2020, "couches": ["fond", "structure"] },
+ { "slug": "malm-corona-climat", "titre": "Corona, Climate, Chronic Emergency", "annee": 2020, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Capitalisme fossile", "Sabotage stratégique", "Urgence climatique et action directe"],
+ "bio_courte": "Professeur d'écologie humaine à Lund. Théoricien du 'capital fossile' et défenseur d'une écologie de guerre pour répondre à l'urgence climatique."
+ },
+ {
+ "id": "kohei-saito",
+ "nom": "Kohei Saito",
+ "dates": "1987-",
+ "ecoles": ["ecosocialisme"],
+ "ecole_principale": "ecosocialisme",
+ "livres_rag": [
+ { "slug": "saito-marx-ecosocialisme", "titre": "Marx dans l'Anthropocène", "annee": 2020, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Marx et l'écologie", "Métabolisme social", "Décroissance communiste"],
+ "bio_courte": "Philosophe japonais, auteur d'une relecture écologiste des cahiers tardifs de Marx. Défend une 'décroissance communiste' comme horizon."
+ },
+ {
+ "id": "karl-marx",
+ "nom": "Karl Marx",
+ "dates": "1818-1883",
+ "ecoles": ["ecosocialisme", "eco-anarchisme"],
+ "ecole_principale": "ecosocialisme",
+ "livres_rag": [
+ { "slug": "marx-manuscrits-1844", "titre": "Manuscrits de 1844", "annee": 1844, "couches": ["fond", "structure"] },
+ { "slug": "marx-capital", "titre": "Le Capital", "annee": 1867, "couches": ["fond", "structure"] },
+ { "slug": "marx-grundrisse", "titre": "Grundrisse", "annee": 1857, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Métabolisme entre travail humain et nature", "Aliénation naturelle", "Accumulation primitive"],
+ "bio_courte": "Pensée-racine de l'écosocialisme. Les Grundrisse et le Capital contiennent une critique écologique du capitalisme souvent occultée."
+ },
+ {
+ "id": "serge-latouche",
+ "nom": "Serge Latouche",
+ "dates": "1940-",
+ "ecoles": ["decroissance"],
+ "ecole_principale": "decroissance",
+ "livres_rag": [
+ { "slug": "latouche-decroissance", "titre": "Le Pari de la décroissance", "annee": 2006, "couches": ["fond", "structure"] },
+ { "slug": "latouche-petit-traite", "titre": "Petit traité de la décroissance sereine", "annee": 2007, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Sereine décroissance", "Critique du développement", "Société frugale abondante"],
+ "bio_courte": "Économiste hétérodoxe franco-algérien, principal théoricien de la décroissance en France. Critique radical de l'économie du développement."
+ },
+ {
+ "id": "pablo-servigne",
+ "nom": "Pablo Servigne",
+ "dates": "1978-",
+ "ecoles": ["decroissance", "pensees-vivant"],
+ "ecole_principale": "decroissance",
+ "livres_rag": [
+ { "slug": "servigne-comment-tout", "titre": "Comment tout peut s'effondrer", "annee": 2015, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Collapsologie", "Entraide comme résilience", "Transition post-collapse"],
+ "bio_courte": "Ingénieur agronome belge, cofondateur de la collapsologie. Explore les conditions d'un effondrement de la civilisation industrielle et les voies de résilience."
+ },
+ {
+ "id": "donella-meadows",
+ "nom": "Dennis et Donella Meadows",
+ "dates": "1941-2001 / 1942-",
+ "ecoles": ["decroissance"],
+ "ecole_principale": "decroissance",
+ "livres_rag": [
+ { "slug": "meadows-limites-croissance", "titre": "Les Limites à la croissance", "annee": 1972, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Limites planétaires", "Modèles systémiques", "Overshoot"],
+ "bio_courte": "Le rapport Meadows (1972) est le premier modèle systémique démontrant l'impossibilité d'une croissance infinie dans un monde fini."
+ },
+ {
+ "id": "francoise-deaubonne",
+ "nom": "Françoise d'Eaubonne",
+ "dates": "1920-2005",
+ "ecoles": ["ecofeminismes"],
+ "ecole_principale": "ecofeminismes",
+ "livres_rag": [
+ { "slug": "eaubonne-feminisme-mort", "titre": "Le Féminisme ou la mort", "annee": 1974, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Écoféminisme (terme inventé)", "Patriarcat et destruction de la nature", "Révolution féministe écologique"],
+ "bio_courte": "Féministe française, inventrice du terme 'écoféminisme' en 1974. Lie patriarcat et destruction de l'environnement dans une même critique."
+ },
+ {
+ "id": "silvia-federici",
+ "nom": "Silvia Federici",
+ "dates": "1942-",
+ "ecoles": ["ecofeminismes"],
+ "ecole_principale": "ecofeminismes",
+ "livres_rag": [
+ { "slug": "federici-caliban", "titre": "Caliban et la sorcière", "annee": 2004, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Accumulation primitive et corps des femmes", "Chasse aux sorcières", "Travail reproductif"],
+ "bio_courte": "Philosophe italo-américaine, théoricienne du féminisme marxiste. Caliban et la sorcière relit l'accumulation primitive à travers la domination des femmes."
+ },
+ {
+ "id": "vandana-shiva",
+ "nom": "Vandana Shiva",
+ "dates": "1952-",
+ "ecoles": ["ecofeminismes", "ecologies-decoloniales"],
+ "ecole_principale": "ecofeminismes",
+ "livres_rag": [
+ { "slug": "shiva-monocultures-esprit", "titre": "Monocultures of the Mind", "annee": 1993, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Biopiraterie", "Souveraineté alimentaire", "Écoféminisme tiers-mondiste"],
+ "bio_courte": "Physicienne et militante indienne, figure mondiale de l'écoféminisme et de la souveraineté alimentaire. Cofondatrice de Navdanya."
+ },
+ {
+ "id": "malcolm-ferdinand",
+ "nom": "Malcom Ferdinand",
+ "dates": "1985-",
+ "ecoles": ["ecologies-decoloniales"],
+ "ecole_principale": "ecologies-decoloniales",
+ "livres_rag": [
+ { "slug": "ferdinand-ecologie-decoloniale", "titre": "Une écologie décoloniale", "annee": 2019, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Double fracture coloniale et écologique", "Habiter le monde", "Antillanité et écologie"],
+ "bio_courte": "Ingénieur et philosophe martiniquais. Son oeuvre articule colonialisme et destruction de l'environnement autour de la 'double fracture' historique."
+ },
+ {
+ "id": "jacques-ellul",
+ "nom": "Jacques Ellul",
+ "dates": "1912-1994",
+ "ecoles": ["technocritique"],
+ "ecole_principale": "technocritique",
+ "livres_rag": [
+ { "slug": "ellul-technique-enjeu", "titre": "La Technique ou l'Enjeu du siècle", "annee": 1954, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Technique comme système autonome", "Efficacité comme valeur unique", "Propagande et technosystème"],
+ "bio_courte": "Juriste, sociologue et théologien bordelais. Son oeuvre fondatrice analyse la Technique comme système autonome qui échappe à tout contrôle humain."
+ },
+ {
+ "id": "david-graeber",
+ "nom": "David Graeber",
+ "dates": "1961-2020",
+ "ecoles": ["eco-anarchisme"],
+ "ecole_principale": "eco-anarchisme",
+ "livres_rag": [
+ { "slug": "graeber-dette", "titre": "Dette : 5000 ans d'histoire", "annee": 2011, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Dette comme instrument de domination", "Anthropologie anarchiste", "Bullshit jobs"],
+ "bio_courte": "Anthropologue américain, figure du mouvement Occupy. Ses travaux anthropologiques déconstruisent les mythes fondateurs du capitalisme (troc, dette, marché)."
+ },
+ {
+ "id": "philippe-descola",
+ "nom": "Philippe Descola",
+ "dates": "1949-",
+ "ecoles": ["pensees-vivant"],
+ "ecole_principale": "pensees-vivant",
+ "livres_rag": [
+ { "slug": "descola-par-dela-nature", "titre": "Par-delà nature et culture", "annee": 2005, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Dualisme nature/culture comme exception occidentale", "4 ontologies (animisme, totémisme, analogisme, naturalisme)", "Cosmopolitiques"],
+ "bio_courte": "Anthropologue et ethnologue français, successeur de Lévi-Strauss au Collège de France. Démontre que le dualisme nature/culture est une anomalie culturelle."
+ },
+ {
+ "id": "rachel-carson",
+ "nom": "Rachel Carson",
+ "dates": "1907-1964",
+ "ecoles": ["ethiques-environnementales"],
+ "ecole_principale": "ethiques-environnementales",
+ "livres_rag": [
+ { "slug": "carson-printemps-silencieux", "titre": "Printemps silencieux", "annee": 1962, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Impact des pesticides sur les écosystèmes", "Naissance du mouvement environnementaliste moderne", "Responsabilité scientifique"],
+ "bio_courte": "Marine biologist and author américaine. Son livre Printemps silencieux (1962) a lancé le mouvement environnementaliste moderne en dénonçant les pesticides."
+ },
+ {
+ "id": "arne-naess",
+ "nom": "Arne Næss",
+ "dates": "1912-2009",
+ "ecoles": ["ethiques-environnementales"],
+ "ecole_principale": "ethiques-environnementales",
+ "livres_rag": [
+ { "slug": "naess-ecologie-profonde", "titre": "Écologie, communauté et style de vie", "annee": 1989, "couches": ["fond", "structure"] }
+ ],
+ "theses_cles": ["Deep ecology vs écologie superficielle", "Égalité biosphérique", "Réalisation de Soi élargie"],
+ "bio_courte": "Philosophe norvégien, fondateur de la 'deep ecology'. Défend une valeur intrinsèque de tous les êtres vivants, indépendamment de leur utilité pour les humains."
+ }
+ ]
+}
diff --git a/server/api/chatbot-pensees.post.ts b/server/api/chatbot-pensees.post.ts
new file mode 100644
index 0000000..31f6b37
--- /dev/null
+++ b/server/api/chatbot-pensees.post.ts
@@ -0,0 +1,85 @@
+import type { H3Event } from 'h3'
+import { checkRateLimitJson } from '~/server/utils/rateLimitJson'
+
+interface ChatbotPenseesRequest {
+ query: string
+ mode?: 'hybrid' | 'local' | 'global' | 'naive' | 'mix'
+ filter_couche?: 'fond' | 'forme' | 'structure' | null
+ filter_ecole?: string | null
+ history?: Array<{ role: 'user' | 'assistant'; content: string }>
+}
+
+interface LightRAGQueryResponse {
+ response: string
+}
+
+const SYSTEM_PREFACE = `Tu es un agent du RAG Pensées Écologiques, infrastructure militante du collectif trans-former.fr.
+Tu réponds en t'appuyant STRICTEMENT sur le corpus ingéré (auteurs FRACAS Bonpote : écosocialisme, éco-anarchisme, écoféminismes, écologies décoloniales, technocritique, pensées du vivant, décroissance...).
+
+Règles :
+- Cite les sources (auteur, livre) à chaque assertion importante.
+- Si la question dépasse le corpus, dis-le clairement. Pas d'hallucination.
+- Ton politique direct, pas de neutralité fade.
+- Réponse en français, dense, sans délayage.
+- Distingue les positions selon les écoles quand elles divergent.`
+
+export default defineEventHandler(async (event: H3Event) => {
+ const config = useRuntimeConfig(event)
+
+ // 1. Rate limit (20 req/jour/IP, IP hashée RGPD)
+ const ip =
+ getHeader(event, 'x-forwarded-for')?.split(',')[0].trim() ||
+ event.node.req.socket?.remoteAddress ||
+ '0.0.0.0'
+
+ const allowed = checkRateLimitJson(ip, 'chatbot-pensees', 20)
+ if (!allowed) {
+ throw createError({ statusCode: 429, message: 'Limite de 20 questions par jour atteinte.' })
+ }
+
+ // 2. Body parse + validation
+ const body = await readBody
(event)
+ if (!body?.query || body.query.trim().length < 3 || body.query.trim().length > 500) {
+ throw createError({ statusCode: 400, message: 'Query invalide (3-500 caractères).' })
+ }
+
+ const query = body.query.trim()
+ const mode = body.mode || 'hybrid'
+ const ragUrl = (config.ragPeUrl as string) || 'http://localhost:9621'
+
+ // 3. Health guard — LightRAG down = erreur claire, pas de fallback hallucinatoire
+ try {
+ await $fetch(`${ragUrl}/health`, { timeout: 5000 })
+ } catch {
+ throw createError({
+ statusCode: 503,
+ message: 'RAG indisponible pour l\'instant — réessaie dans quelques minutes.',
+ })
+ }
+
+ // 4. Call LightRAG VPS — préface système injectée dans la query
+ const ragQuery = `${SYSTEM_PREFACE}\n\nQuestion : ${query}`
+
+ let ragResponse: LightRAGQueryResponse
+ try {
+ ragResponse = await $fetch(`${ragUrl}/query`, {
+ method: 'POST',
+ body: { query: ragQuery, mode },
+ timeout: 90000,
+ })
+ } catch (e: any) {
+ const status = e?.response?.status
+ if (status === 429) {
+ throw createError({ statusCode: 429, message: 'RAG saturé — réessaie dans quelques instants.' })
+ }
+ throw createError({ statusCode: 504, message: 'RAG en cours de processing — réessaie dans quelques secondes.' })
+ }
+
+ // 5. Retour formaté
+ return {
+ response: ragResponse.response ?? '',
+ mode,
+ filter: { couche: body.filter_couche ?? null, ecole: body.filter_ecole ?? null },
+ timestamp: new Date().toISOString(),
+ }
+})