feat(media): refonte carte Bonpote-aligned 11 ecoles pastel + header RAG->MEDIA

- auteurs-pensees.json: 11 ecoles (suppression marxismes-ecologiques, fusion Marx+Saito->ecosocialisme), palette pastel, positions x_hint/y_hint Bonpote-aligned
- CartePensees.vue: texte ecole blanc->#1a1a1a, background #f5f3f0, linkDistance 130, charge -50, forceX/forceY ajoutescode pour ancrer auteurs pres de leur ecole principale
- app.vue: onglet desktop RAG->MEDIA sans badge, menu mobile to=/rag->to=/media avec active state conditionnel
This commit is contained in:
Jules Neny
2026-05-12 11:27:16 +02:00
parent c6295ea228
commit 1b1e373bea
3 changed files with 71 additions and 61 deletions

View File

@@ -51,12 +51,11 @@
Codev
</NuxtLink>
<NuxtLink
to="/rag"
to="/media"
class="nav-tab"
:class="{ 'nav-tab--active': route.path === '/rag' }"
:class="{ 'nav-tab--active': route.path === '/media' }"
>
RAG
<span class="nav-tab-badge">en construction</span>
MEDIA
</NuxtLink>
</nav>
@@ -235,7 +234,7 @@
<NuxtLink to="/" class="block px-4 py-2.5 text-sm font-medium transition-opacity hover:opacity-70" :style="route.path === '/' ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text);'">Écosystème Entraide Architecture</NuxtLink>
<NuxtLink to="/agences" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" :style="route.path === '/agences' ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text);'">Réseaux AEP</NuxtLink>
<NuxtLink to="/trouver-du-taf" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" :style="route.path === '/trouver-du-taf' ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text);'">Jobs</NuxtLink>
<NuxtLink to="/rag" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" style="color: var(--nav-text);">RAG</NuxtLink>
<NuxtLink to="/media" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" :style="route.path === '/media' ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text);'">MEDIA</NuxtLink>
<NuxtLink to="/codev" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" :style="route.path.startsWith('/codev') ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text);'">Codev</NuxtLink>
<div style="height: 1px; background: var(--nav-bg-alt); margin: 4px 0;"></div>
<NuxtLink to="/manifeste" class="block px-4 py-2.5 text-sm transition-opacity hover:opacity-70" :style="route.path === '/manifeste' ? 'color: var(--nav-primary-solid); font-weight: 700;' : 'color: var(--nav-text-muted);'">Manifeste</NuxtLink>

View File

@@ -1,5 +1,5 @@
<template>
<div style="width: 100%; height: 100%; position: relative; background: var(--nav-bg);">
<div style="width: 100%; height: 100%; position: relative; background: #f5f3f0;">
<svg ref="svgRef" style="width: 100%; height: 100%;"></svg>
<div ref="tooltipRef" style="
position: absolute; pointer-events: none;
@@ -59,12 +59,30 @@ async function initGraph() {
a.ecoles.filter(e => e !== a.ecole_principale).forEach(e => links.push({ source: a.id, target: `ecole-${e}`, strength: 0.25 }))
})
// Precalculer les positions cibles des ecoles pour ancrer les auteurs proches
const ecolePositions = new Map<string, { tx: number; ty: number }>()
ecoleNodes.forEach(e => { ecolePositions.set(e.ecoleId, { tx: e.x, ty: e.y }) })
if (simulation) simulation.stop()
simulation = d3.forceSimulation(allNodes)
.force('link', d3.forceLink(links).id((d: any) => d.id).distance(90).strength((d: any) => d.strength ?? 0.5))
.force('charge', d3.forceManyBody().strength(-80))
.force('link', d3.forceLink(links).id((d: any) => d.id).distance(130).strength((d: any) => d.strength ?? 0.5))
.force('charge', d3.forceManyBody().strength(-50))
.force('center', d3.forceCenter(W / 2, H / 2))
.force('collision', d3.forceCollide().radius((d: any) => d.r + 5))
.force('forceX', d3.forceX<any>((d: any) => {
if (d.type === 'auteur') {
const pos = ecolePositions.get(d.ecole_principale)
return pos ? pos.tx : W / 2
}
return W / 2
}).strength(0.08))
.force('forceY', d3.forceY<any>((d: any) => {
if (d.type === 'auteur') {
const pos = ecolePositions.get(d.ecole_principale)
return pos ? pos.ty : H / 2
}
return H / 2
}).strength(0.08))
d3LinkSel = g.append('g').selectAll('line').data(links).join('line')
.attr('stroke', 'rgba(150,150,150,0.3)').attr('stroke-width', 1.2)
@@ -84,7 +102,7 @@ async function initGraph() {
.attr('stroke-width', (d: any) => d.type === 'ecole' ? 3 : 1.5)
d3NodeSel.filter((d: any) => d.type === 'ecole').append('text')
.attr('text-anchor', 'middle').attr('dy', '0.35em').attr('font-size', '10px').attr('font-weight', '700').attr('fill', 'white')
.attr('text-anchor', 'middle').attr('dy', '0.35em').attr('font-size', '10px').attr('font-weight', '700').attr('fill', '#1a1a1a')
.style('pointer-events', 'none')
.each(function(d: any) {
const el = d3.select(this as any)

View File

@@ -1,102 +1,95 @@
{
"meta": {
"version": "2.0",
"version": "2.1",
"source": "FRACAS Bonpote V2 oct 2024 + LightRAG corpus 11/05/2026",
"corpus_ingere": 141,
"auteurs_count": 28,
"livres_count": 64,
"ecoles_count": 12,
"ecoles_count": 11,
"note_doublons_en_fr": "3 livres avec version EN aussi indexee dans le RAG pour cross-language queries : carson-mer-autour-de-nous-fr/EN, graeber-wengrow-aurore-fr/EN, saito-capital-anthropocene/EN. JSON conserve la version FR.",
"updated": "2026-05-11"
"note_v2_1": "Phase 6 refonte Bonpote-aligned : 11 ecoles (fusion Marxismes-ecologiques -> Ecosocialisme, Marx+Saito migres), palette pastel, positions x_hint/y_hint Bonpote-aligned, labels affiches renommes (eco-anarchisme -> Eco-anarchisme, technocritique, ethique-env singulier)",
"updated": "2026-05-12"
},
"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": "marxismes-ecologiques",
"label": "Marxismes écologiques",
"description": "Relecture écologique des écrits de Marx et de ses continuateurs contemporains. Le Capital comme critique du métabolisme homme-nature. Décroissance communiste.",
"color": "#8e44ad",
"x_hint": 0.65,
"y_hint": 0.2
"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. Inclut Marx, Saito, Gorz, Klein, Malm, Löwy.",
"color": "#d99c9c",
"x_hint": 0.45,
"y_hint": 0.20
},
{
"id": "eco-anarchisme",
"label": "Écologies libertaires",
"label": "Éco-anarchisme",
"description": "Filiation des traditions du socialisme ouvrier anglais et de l'anarchisme. Les dominations de l'homme sur l'homme, sur la femme et sur la nature ne peuvent être prises séparément. Éco-communautés, institutions autogérées, démocratie radicale, municipalisme libertaire.",
"color": "#2d6a4f",
"x_hint": 0.25,
"y_hint": 0.3
"color": "#a3c4a8",
"x_hint": 0.20,
"y_hint": 0.25
},
{
"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
"color": "#ecc09c",
"x_hint": 0.42,
"y_hint": 0.45
},
{
"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
"color": "#e8b9a8",
"x_hint": 0.32,
"y_hint": 0.65
},
{
"id": "technocritique",
"label": "Écologies anti-industrielles",
"label": "Technocritique",
"description": "Rejet du productivisme et de l'hyper-mécanisation issus de l'ère industrielle. Approche technocritique : critique du gigantisme productif et de l'État, refus de l'idéologie du Progrès. Considérer la technique comme un système avec ses logiques propres.",
"color": "#7f8c8d",
"x_hint": 0.2,
"y_hint": 0.48
"color": "#b8bfbf",
"x_hint": 0.18,
"y_hint": 0.50
},
{
"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
"color": "#d8a691",
"x_hint": 0.20,
"y_hint": 0.78
},
{
"id": "ethiques-environnementales",
"label": "Éthiques environnementales",
"label": "Éthique environnementale",
"description": "Philosophies de la nature : deep ecology, écocentrisme, droits des non-humains. Valeur intrinsèque du vivant.",
"color": "#2c7873",
"color": "#9cc4bf",
"x_hint": 0.72,
"y_hint": 0.72
"y_hint": 0.62
},
{
"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, éthologie politique.",
"color": "#6b8e6e",
"x_hint": 0.62,
"y_hint": 0.58
"color": "#b5c9b6",
"x_hint": 0.45,
"y_hint": 0.70
},
{
"id": "collapsologie",
"label": "Collapsologie",
"description": "Étude interdisciplinaire de l'effondrement de la civilisation industrielle et des voies de résilience. Articule sciences du vivant, géopolitique et psychologie de la transition.",
"color": "#34495e",
"x_hint": 0.42,
"y_hint": 0.22
"color": "#a0afc0",
"x_hint": 0.68,
"y_hint": 0.42
},
{
"id": "capitalisme-vert",
"label": "Capitalisme vert",
"description": "Théoriciens du capitalisme qui intègrent la dimension environnementale aux échanges marchands (taxes, compensation, technologies vertes). Certains accélèrent la dynamique capitaliste, voulant contrôler le Système-Terre sans nuire aux intérêts de la classe possédante. Famille critiquée par toutes les autres.",
"color": "#6c8a6d",
"x_hint": 0.85,
"y_hint": 0.5,
"color": "#c4d1c4",
"x_hint": 0.80,
"y_hint": 0.25,
"corpus_status": "non_ingere",
"note_editoriale": "Famille intégrée pour fidélité à la carte FRACAS Bonpote. Pas d'auteurs ingérés dans le RAG ATIS (critique éditoriale assumée)."
},
@@ -104,9 +97,9 @@
"id": "ecofascismes",
"label": "Écofascismes",
"description": "Émergés à bas bruit depuis les années 1980, fragmentés. En Europe : éco-différentialisme, séparation des « races »/civilisations adaptées à leur environnement. Aux USA : néo-malthusianisme, xénophobie, apologie de la wilderness, logiques survivalistes. Famille critiquée par toutes les autres.",
"color": "#5d4037",
"x_hint": 0.92,
"y_hint": 0.85,
"color": "#a89890",
"x_hint": 0.85,
"y_hint": 0.82,
"corpus_status": "non_ingere",
"note_editoriale": "Famille intégrée pour fidélité à la carte FRACAS Bonpote. Pas d'auteurs ingérés dans le RAG ATIS (critique éditoriale assumée)."
}
@@ -172,22 +165,22 @@
"id": "karl-marx",
"nom": "Karl Marx",
"dates": "1818-1883",
"ecoles": ["marxismes-ecologiques", "ecosocialisme"],
"ecole_principale": "marxismes-ecologiques",
"ecoles": ["ecosocialisme"],
"ecole_principale": "ecosocialisme",
"livres_rag": [
{ "slug": "marx-manuscrits-1844", "titre": "Manuscrits économico-philosophiques de 1844", "annee": 1844, "couches": ["fond", "structure"] },
{ "slug": "marx-capital-livre1", "titre": "Le Capital, Livre I", "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 et rupture métabolique"],
"bio_courte": "Pensée-racine des marxismes écologiques. Les Grundrisse et le Capital contiennent une critique écologique du capitalisme que le 20e siècle a largement occultée."
"bio_courte": "Pensée-racine de l'écosocialisme. Les Grundrisse et le Capital contiennent une critique écologique du capitalisme que le 20e siècle a largement occultée."
},
{
"id": "kohei-saito",
"nom": "Kohei Saito",
"dates": "1987-",
"ecoles": ["marxismes-ecologiques"],
"ecole_principale": "marxismes-ecologiques",
"ecoles": ["ecosocialisme"],
"ecole_principale": "ecosocialisme",
"livres_rag": [
{ "slug": "saito-marx-anthropocene", "titre": "Marx dans l'Anthropocène", "annee": 2016, "couches": ["fond", "structure"] },
{ "slug": "saito-decroissance-communisme", "titre": "La Décroissance communiste", "annee": 2020, "couches": ["fond", "structure"] },