Jules Neny
44ffe84d5b
Merge branch 'feat/v11-b' into feat/page-cerveau-v1
2026-05-11 15:08:08 +02:00
Jules Neny
c18328517a
feat(v11-a): ajout Substack julesneny.substack.com dans selecteur Politique
2026-05-11 15:07:58 +02:00
Jules Neny
5642690829
feat(v11-b): carte-o YAML source editoriale + build script niveau/nature/statut
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 15:04:53 +02:00
Jules Neny
62794459ac
feat(v11-a): hashtags 4 categories capsules monospace + selecteur Politique
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 15:03:45 +02:00
Jules Neny
5589678abc
merge: PC7 chatbot v2 AEP + Astro server SSR endpoint (round 3)
2026-05-09 01:23:06 +02:00
Jules Neny
be7fc09085
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.
2026-05-09 01:22:01 +02:00
Jules Neny
fccbc6d19c
merge: PC6 journal n8n + JournalList (round 2)
2026-05-09 01:15:10 +02:00
Jules Neny
98f1257ece
merge: PC4 iframe AEP centre BAS + scroll articles (round 2)
2026-05-09 01:15:05 +02:00
Jules Neny
e22dd6654a
feat: PC6 journal unifie + n8n workflow agregateur (V1 MVP)
...
Composant Vue JournalList :
- fetch PUBLIC_JOURNAL_URL (defaut data.trans-former.fr/journal.json)
- ecoute event 'hashtag-filter-change' emis par ColJournal (PC2)
- filtre par hashtag actif, tri desc respecte (n8n cote serveur)
- fallback gracieux : loading / errored / empty / no-match
Cabling :
- ColJournal.astro importe et rend <JournalList client:visible />
- placeholder remplace par le composant Vue
Workflow n8n (docs/n8n-workflow-journal-aggregate.json) :
- Schedule trigger cron 0 3 * * *
- Fetch Gitea Atom (jules.atom) + Behold AEP + Behold julesneny (skip si feed IDs absents)
- Code Node normalisation 3 sources -> format JSON commun
- Tri desc + cap top 100
- Write Binary File vers /home/node/.n8n/journal/journal.json (volume Docker partage)
Sources V1 actives :
- Gitea Atom (#stack) - active, 200 OK confirme
- Behold @aep (#aep-politique) - conditionnel feed ID
- Behold @julesneny (#peinture) - conditionnel feed ID
Sources skipped (V1.5/V2) :
- GitHub.com : username 'julesneny' n'existe pas (HTTP 404), pivot Gitea
- Substack 'transformations' : pris par 'WoodHorse' (pas Jules), handle a confirmer
- LinkedIn, Castopod, Blog : V2
Mock journal.json en public/data/ pour dev local (fallback si data.trans-former.fr indisponible).
Setup VPS prepare (cf docs/PC6-JOURNAL-N8N-SETUP.md) :
- Caddyfile bloc data.trans-former.fr ajoute en commentaire (active apres DNS)
- Dossier /var/lib/docker/volumes/vps-kit_n8n_data/_data/journal/ cree
- journal.json initial deploye
- Caddy reload OK valide (config valide)
- Workflow JSON copie sur VPS /tmp/n8n-workflow-journal-aggregate.json (import manuel UI)
Checkpoint Jules requis :
- Ajout DNS A 'data' -> 178.104.106.195 (OVH)
- Decommenter bloc Caddy + reload
- Import workflow n8n via UI (creds basic auth deprecies, login email user)
- Run manuel + activation cron
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-09 01:13:51 +02:00
Jules Neny
6aa5a7143a
feat: PC4 iframe carte AEP centre BAS + scroll articles Substack placeholder
...
- IframeCarteAEP.astro : iframe https://aep.trans-former.fr/agences avec
skeleton loader + timeout 8s + fallback lien externe
- ScrollArticles.astro : 7 articles placeholder (V1, PC6 remplacera par
fetch journal.json)
- ColCentre.astro : zone BAS cablee (iframe min-h 60vh mobile / 400px desktop
+ scroll articles dessous)
- Preflight headers : pas de X-Frame-Options ni frame-ancestors restrictifs
sur /agences (200 OK), iframe cross-origin permise sans modif Caddy
2026-05-09 01:06:02 +02:00
Jules Neny
68e511be7a
merge: PC5 embeds Insta col D Behold (round 1)
2026-05-09 01:01:11 +02:00
Jules Neny
0c53f450c3
merge: PC3 mindmap Carte O D3 + scrape AEP (round 1)
2026-05-09 01:01:07 +02:00
Jules Neny
64a3cc7147
merge: PC2 nav latérale + manifeste + popup (round 1)
2026-05-09 01:01:02 +02:00
Jules Neny
32bdc9a2e5
feat: PC3 mindmap Carte O (D3 force-directed) + scrape AEP/Articles + tabs centre HAUT
...
- scripts/build-carte-o.js : scan recursif AEP/Articles/, parse YAML + legacy header, extract wikilinks, infer 5 famille
- src/components/vue/CarteO.vue : D3 v7 force-directed avec drag, zoom + pan, click handler, tooltips, ResizeObserver
- src/components/vue/CarteOModal.vue : modal recap intention avec Teleport, Esc + backdrop close, transitions
- src/components/vue/CarteOWrapper.vue : fetch /data/carte-o.json, etat selectionne, fallback mobile (msg + miniature SVG)
- src/components/astro/ColCentre.astro : tabs Carte O / Chatbot, panneaux ARIA
- package.json : prebuild + predev hooks, build:carte-o script
- public/data/carte-o.json : 84 nodes / 94 edges sur 21 themes, distribution familles equilibree
Drill-down V1 = zoom + pan seul (V2 recursif backlog).
Pattern adapte de nav-carte/components/codev/CodevGraph.vue (sans coupling Nuxt).
Build Astro 6.3.1 OK, bundle CarteOWrapper 69KB.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-09 00:59:23 +02:00
Jules Neny
712ed0eefa
feat(pc2): hamburger nav + manifeste V1 + popup onboarding
...
- HamburgerMenu drawer slide-in left avec liens A propos, Manifeste, Mentions legales (ESC + clic overlay pour fermer)
- ColJournal enrichi : CTA Manifeste, accordeon Hashtags (7 plateformes, ferme mobile / ouvert desktop, persistence localStorage), skeleton Journal pour PC6
- Page /manifeste : V1 redige integre (em-dashes remplaces par tirets/points-virgules), pivot stylise blockquote, diagramme mouvements en 3 sections boites
- Page /manifeste/commander : stub form pre-inscription (V1 localStorage, V1.1 cable Listmonk)
- Page /a-propos : extrait de Contexte Global, 3-4 paragraphes Jules
- Page /mentions-legales : placeholder court (editeur, hebergeur Hetzner, pas de cookies)
- PopupOnboarding : micro-resume 3 lignes proposees, dismiss X / CTA / scroll 200px / ESC, flag tf-onboarded
2026-05-09 00:58:19 +02:00
Jules Neny
71053ec9a6
feat: PC5 col D embeds Insta via Behold (avec fallback profil statique)
...
- InstaFeed.vue (Vue island) : consomme feeds.behold.so/{feedId}, skeleton loading, grid 2x3 thumbnails, fallback profil si placeholder ou erreur
- ColInsta.astro enrichi : 2 sections @aep.politique + @julesneny, hydratation client:visible (lazy)
- .env.example committe (PUBLIC_BEHOLD_AEP/JULESNENY vides) ; .env.local deja gitignore
- docs/BEHOLD-SETUP.md : procedure inscription + recup feed IDs + alternatives + note CSP PC8
Action Jules requise (async) : inscription Behold + connexion 2 comptes Insta + remplir .env.local.
2026-05-09 00:55:01 +02:00
Jules Neny
aeaec6fc06
feat: PC1 scaffolding Astro 6 + Vue islands + Tailwind 4 + Embla swipe
...
Initial structure for page-cerveau:
- Astro 6.3.1 + @astrojs/vue 6.0.1 + Vue 3.5
- Tailwind 4 via @tailwindcss/vite (vs Tailwind 3.4 in prompt; @astrojs/tailwind incompatible with Astro 6 peer deps)
- Embla Carousel Vue for mobile swipe (3 strict positions)
- src/components/astro/ : 5 placeholder components (Col*, HamburgerMenu, PopupOnboarding)
- src/components/vue/ : SwipeContainer + 3 placeholder islands
- src/layouts/BaseLayout.astro
- src/pages/index.astro (3 cols desktop ; SwipeContainer mobile) + manifeste.astro placeholder
- public/data/ ready for PC3 (carte-o.json) + PC6 (journal.json)
Build OK (0 errors, 0 warnings); dev server tested localhost:4321 with all components rendering.
Note: Astro version is 6.3.1 (latest stable) instead of 5.x specified in prompt; 6.x is current LTS.
2026-05-08 19:44:22 +02:00
74cd6bc584
Initial commit
2026-05-08 19:15:39 +02:00