From e63d02a3511bbddcaf76244357913d161a4d529b Mon Sep 17 00:00:00 2001 From: Jules Neny Date: Wed, 6 May 2026 15:37:13 +0200 Subject: [PATCH] wip: snapshot V2 cascade onglet 2 (sauvegarde avant chirurgie git-hygiene) --- JOURNAL-V2.md | 87 - V2-cascade/Pipe-recherche-famille-agent.md | 91 + V2-cascade/fiches-passe1/.gitkeep | 0 V2-cascade/fiches-passe1/PV2-1-RECAP.md | 33 + V2-cascade/fiches-passe1/test/f1-opalis.json | 29 + .../test/f2-frugalite-heureuse.json | 32 + .../fiches-passe1/test/f3-quatorze.json | 30 + V2-cascade/fiches-passe1/test/f4-tepop.json | 31 + .../test/f5-villes-en-transition.json | 31 + V2-cascade/fiches-passe2/.gitkeep | 0 .../fiches-passe2/PV2-3-RECAP-checkpoint.md | 118 + V2-cascade/fiches-passe2/PV2-3-RECAP.md | 67 + .../seed-v2-passe2-batch1-checkpoint.json | 172 + .../fiches-passe2/seed-v2-passe2-batch10.json | 625 + .../fiches-passe2/seed-v2-passe2-batch11.json | 976 + .../fiches-passe2/seed-v2-passe2-batch2.json | 728 + .../fiches-passe2/seed-v2-passe2-batch3.json | 752 + .../fiches-passe2/seed-v2-passe2-batch4.json | 442 + .../fiches-passe2/seed-v2-passe2-batch5.json | 406 + .../fiches-passe2/seed-v2-passe2-batch6.json | 550 + .../fiches-passe2/seed-v2-passe2-batch7.json | 454 + .../fiches-passe2/seed-v2-passe2-batch8.json | 486 + .../fiches-passe2/seed-v2-passe2-batch9.json | 539 + V2-cascade/fiches-passe2/seed-v2-passe2.json | 9403 ++ V2-cascade/fiches-passe2/seed-v2-rejet.json | 9 + V2-cascade/fiches-passe3/.gitkeep | 0 V2-cascade/fiches-passe3/PV2-4-RECAP.md | 67 + V2-cascade/fiches-passe3/graphe-liens.json | 8135 + .../fiches-passe3/projets-emblematiques.json | 6716 + V2-cascade/seed-cibles/.gitkeep | 0 V2-cascade/seed-cibles/PV2-2bis-RECAP.md | 161 + V2-cascade/seed-cibles/PV2-2ter-RECAP.md | 87 + V2-cascade/seed-cibles/_consolider.ps1 | 111 + .../seed-cibles/liste-famille-1-RECAP.md | 74 + V2-cascade/seed-cibles/liste-famille-1.json | 905 + .../seed-cibles/liste-famille-2-RECAP.md | 107 + V2-cascade/seed-cibles/liste-famille-2.json | 1017 + .../seed-cibles/liste-famille-3-RECAP.md | 77 + V2-cascade/seed-cibles/liste-famille-3.json | 559 + .../seed-cibles/liste-famille-4-RECAP.md | 76 + V2-cascade/seed-cibles/liste-famille-4.json | 522 + .../seed-cibles/liste-famille-5-RECAP.md | 143 + V2-cascade/seed-cibles/liste-famille-5.json | 446 + V2-cascade/seed-cibles/seed-v2-consolide.json | 4537 + V2-cascade/seed-cibles/sources-par-famille.md | 127 + V2-cascade/seed-final/.gitkeep | 0 aep-communaute-build/E2E-RESULTS.md | 137 + app.vue | 28 +- assets/css/v2-bifurcation.css | 23 + components/BandeauBas.vue | 6 +- components/ChatbotSheet.vue | 35 +- components/CritereFilter.vue | 41 - components/FicheFamilleModal.vue | 284 + components/FicheModalV2.vue | 341 + components/FonctionFilter.vue | 14 +- components/GraphView.vue | 647 +- components/HashtagFilter.vue | 97 + components/IntentionBanner.vue | 76 + components/NavMap.vue | 21 - components/{EuropeMap.vue => NavMapV2.vue} | 144 +- components/NavSidebar.vue | 32 - components/OrgCard.vue | 45 - components/OutremerMapPratiques.vue | 276 - components/PaysFilter.vue | 60 - components/PratiqueSidebar.vue | 274 - components/TagBadge.vue | 11 - components/TypeBadge.vue | 21 - components/TypeEntiteFilter.vue | 41 - deploy.sh | 2 +- nuxt.config.ts | 7 +- package-lock.json | 459 + package.json | 1 + pages/a-propos.vue | 142 +- pages/admin/rag-status.vue | 150 + pages/contribuer.vue | 18 +- pages/fiche/[id].vue | 15 - pages/index-v1-backup.vue | 481 + pages/pratique/[id].vue | 170 - pages/pratiques-regeneratives.vue | 564 - pages/proposer-pratique.vue | 833 - pages/signaler.vue | 389 - public/data/reseaux-bifurcation.json | 21073 +++ scripts/geocode-structures.js | 356 + server/api/admin/rag-info.get.ts | 39 + server/api/chatbot-pratiques.post.ts | 304 - server/api/chatbot-v2.post.ts | 194 + server/api/chatbot.post.ts | 9 +- server/api/pratiques.get.ts | 20 - server/api/report-general.post.ts | 94 - server/api/submit-pratique.post.ts | 117 - server/api/submit/index.post.ts | 46 +- server/data/.gitkeep | 0 server/data/embeddings-v2.json | 124442 +++++++++++++++ server/routes/api/avis.post.ts | 16 - server/routes/api/avis/[orgId].get.ts | 13 - server/routes/api/organisations.post.ts | 16 - server/routes/api/organisations/[id].get.ts | 17 - server/utils/circuitBreaker.ts | 4 +- server/utils/vectorSearch.ts | 96 + types/pratique.ts | 69 - types/structure-v2.ts | 91 + 101 files changed, 188900 insertions(+), 3959 deletions(-) create mode 100644 V2-cascade/Pipe-recherche-famille-agent.md create mode 100644 V2-cascade/fiches-passe1/.gitkeep create mode 100644 V2-cascade/fiches-passe1/PV2-1-RECAP.md create mode 100644 V2-cascade/fiches-passe1/test/f1-opalis.json create mode 100644 V2-cascade/fiches-passe1/test/f2-frugalite-heureuse.json create mode 100644 V2-cascade/fiches-passe1/test/f3-quatorze.json create mode 100644 V2-cascade/fiches-passe1/test/f4-tepop.json create mode 100644 V2-cascade/fiches-passe1/test/f5-villes-en-transition.json create mode 100644 V2-cascade/fiches-passe2/.gitkeep create mode 100644 V2-cascade/fiches-passe2/PV2-3-RECAP-checkpoint.md create mode 100644 V2-cascade/fiches-passe2/PV2-3-RECAP.md create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch1-checkpoint.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch10.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch11.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch2.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch3.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch4.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch5.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch6.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch7.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch8.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2-batch9.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-passe2.json create mode 100644 V2-cascade/fiches-passe2/seed-v2-rejet.json create mode 100644 V2-cascade/fiches-passe3/.gitkeep create mode 100644 V2-cascade/fiches-passe3/PV2-4-RECAP.md create mode 100644 V2-cascade/fiches-passe3/graphe-liens.json create mode 100644 V2-cascade/fiches-passe3/projets-emblematiques.json create mode 100644 V2-cascade/seed-cibles/.gitkeep create mode 100644 V2-cascade/seed-cibles/PV2-2bis-RECAP.md create mode 100644 V2-cascade/seed-cibles/PV2-2ter-RECAP.md create mode 100644 V2-cascade/seed-cibles/_consolider.ps1 create mode 100644 V2-cascade/seed-cibles/liste-famille-1-RECAP.md create mode 100644 V2-cascade/seed-cibles/liste-famille-1.json create mode 100644 V2-cascade/seed-cibles/liste-famille-2-RECAP.md create mode 100644 V2-cascade/seed-cibles/liste-famille-2.json create mode 100644 V2-cascade/seed-cibles/liste-famille-3-RECAP.md create mode 100644 V2-cascade/seed-cibles/liste-famille-3.json create mode 100644 V2-cascade/seed-cibles/liste-famille-4-RECAP.md create mode 100644 V2-cascade/seed-cibles/liste-famille-4.json create mode 100644 V2-cascade/seed-cibles/liste-famille-5-RECAP.md create mode 100644 V2-cascade/seed-cibles/liste-famille-5.json create mode 100644 V2-cascade/seed-cibles/seed-v2-consolide.json create mode 100644 V2-cascade/seed-cibles/sources-par-famille.md create mode 100644 V2-cascade/seed-final/.gitkeep create mode 100644 aep-communaute-build/E2E-RESULTS.md create mode 100644 assets/css/v2-bifurcation.css delete mode 100644 components/CritereFilter.vue create mode 100644 components/FicheFamilleModal.vue create mode 100644 components/FicheModalV2.vue create mode 100644 components/HashtagFilter.vue create mode 100644 components/IntentionBanner.vue rename components/{EuropeMap.vue => NavMapV2.vue} (58%) delete mode 100644 components/OrgCard.vue delete mode 100644 components/OutremerMapPratiques.vue delete mode 100644 components/PaysFilter.vue delete mode 100644 components/PratiqueSidebar.vue delete mode 100644 components/TagBadge.vue delete mode 100644 components/TypeBadge.vue delete mode 100644 components/TypeEntiteFilter.vue create mode 100644 pages/admin/rag-status.vue create mode 100644 pages/index-v1-backup.vue delete mode 100644 pages/pratique/[id].vue delete mode 100644 pages/pratiques-regeneratives.vue delete mode 100644 pages/proposer-pratique.vue delete mode 100644 pages/signaler.vue create mode 100644 public/data/reseaux-bifurcation.json create mode 100644 scripts/geocode-structures.js create mode 100644 server/api/admin/rag-info.get.ts delete mode 100644 server/api/chatbot-pratiques.post.ts create mode 100644 server/api/chatbot-v2.post.ts delete mode 100644 server/api/pratiques.get.ts delete mode 100644 server/api/report-general.post.ts delete mode 100644 server/api/submit-pratique.post.ts create mode 100644 server/data/.gitkeep create mode 100644 server/data/embeddings-v2.json delete mode 100644 server/routes/api/avis.post.ts delete mode 100644 server/routes/api/avis/[orgId].get.ts delete mode 100644 server/routes/api/organisations.post.ts delete mode 100644 server/routes/api/organisations/[id].get.ts create mode 100644 server/utils/vectorSearch.ts delete mode 100644 types/pratique.ts create mode 100644 types/structure-v2.ts diff --git a/JOURNAL-V2.md b/JOURNAL-V2.md index f1025d1..c4e5870 100644 --- a/JOURNAL-V2.md +++ b/JOURNAL-V2.md @@ -11,93 +11,6 @@ Journal technique de la V2. Décisions, anomalies, points bloquants, TODOs. --- -## 2026-04-29 — Cascade Onglet 1 : Pratiques régénératives (P1 → P5b) - -**Commit deploy :** `e80b226` (feat/aep-pratiques-regeneratives, 10 commits depuis main) -**Exécutant :** Sonnet (agent autonome P1-P5b) - -### Chantier P1 → P5b (résumé) - -Création complète de l'onglet "Pratiques régénératives" sur `aep.trans-former.fr` : - -- **P1** : scaffold types + API statique `GET /api/pratiques` (52 fiches JSON `public/data/pratiques-regeneratives.json`) -- **P2** : page `/pratiques-regeneratives` — carte Leaflet Europe + accordéon DOM-TOM, sidebar filtres (type, pays, matériaux), composants `PratiqueCard.vue` + `PratiqueModal.vue` -- **P3** : ajout onglet "Pratiques régé" dans le header nav desktop + hamburger mobile -- **P4** : page `/proposer-pratique` — formulaire contribution avec Zod, endpoint `POST /api/submit-pratique` avec rate limit, `public/data/pratiques-pending.json` -- **P5a** : build local validé (3.04 MB, APIs 200, 500 SSR = bug Windows/Node 24 préexistant non-bloquant) -- **P5b** : deploy prod + smoke test (3/3 endpoints 200, SSR title OK, JSON 52 fiches) - -### Deploy - -- Méthode : `tar .output/ | ssh vps-hetzner "cd /opt/aep && tar -xzf -"` + `systemctl restart aep` -- Env diff local vs VPS : VPS a des vars supplémentaires (MISTRAL, NOCODB worker, RESEND) — additionnel non-conflictuel, pas d'impact -- Note `deploy.sh` : le script a un BOM UTF-8 (ligne 1 `\xEF\xBB\xBF#!/bin/bash`) qui cause un exit 1 sur le `read -p` quand stdin est un pipe. Contournement : exécution manuelle des étapes. A corriger en V3. - -### Smoke test prod (2026-04-29 01:38 UTC) - -| Endpoint | HTTP | Note | -|---|---|---| -| GET /pratiques-regeneratives | 200 | SSR OK, titre trouvé (2 occurrences) | -| GET /proposer-pratique | 200 | SSR OK | -| GET /api/pratiques | 200 | JSON valid, 52 fiches | - -### Ce qui reste à valider (Jules, E2E BrowserMCP) - -- Markers Leaflet visibles + cliquables (Europe + DOM-TOM) -- Sidebar filtres fonctionnels (type, pays, matériaux) -- Modal fiche + bouton retour preservant filtres -- Formulaire `/proposer-pratique` : submit + message succès -- Comportement mobile 375×667 (sheet bas, swipe filtres, fiche pleine page) - -Prompt E2E disponible : `aep-communaute-build/PROMPT-BROWSERMCP-E2E.md` - ---- - -## 2026-04-27 — Session V3 : Finition mobile + Blog Liberapay + 3 deploys - -**Commit :** `a02a555` — feat(mobile): accordéon outremer, hamburger nav, logo AEP, fiches cliquables, chatbot fullscreen -**Pattern :** agents parallèles (3 × Sonnet) pour les 3 SSH indépendants — ~90s total vs ~20min séquentiel - -### Changements implémentés - -**B — OutremerMap.vue : accordéon vertical DOM-TOM** -- Template : row horizontale → accordéon `