wip: snapshot V2 cascade onglet 2 (sauvegarde avant chirurgie git-hygiene)

This commit is contained in:
Jules Neny
2026-05-06 15:37:13 +02:00
parent 5878c56888
commit e63d02a351
101 changed files with 188900 additions and 3959 deletions

View File

@@ -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 `<button>` + `v-show` par territoire
- Lazy-init Leaflet : `initSingleMap(domName)` appelé au 1er clic (plus de `initMaps()` en `onMounted`)
- `invalidateSize()` sur ré-ouverture d'une carte déjà initialisée
**E — app.vue : hamburger mobile**
- Bouton `lg:hidden` tout à droite de `<!-- Actions droite -->`
- Dropdown `v-if` : 5 liens (/, /agences, /rag, /a-propos, /signaler)
- `z-index: 9999` en inline style sur le dropdown
- `watch(() => route.path)` → ferme le menu à chaque navigation
- **Fix stacking context :** header → `relative z-[9999]` (sans `position`, le z-index Tailwind n'avait pas d'effet → dropdown passait sous Leaflet)
**F — app.vue : badge "A" → "AEP"**
- `w-7 h-7``h-7 px-2`, `text-sm``text-xs tracking-tight`
**G — pages/index.vue : fiches ouvrables mobile**
- `onSelectOrgMobile` : ajout `storeFiltersForBack()` + `router.push('/fiche/${id}')`
- NB : `router.push` était déjà là (modif pilote antérieure) — seul `storeFiltersForBack` ajouté
**H — ChatbotSheet.vue : fullscreen + scroll lock iOS**
- `92dvh → 100dvh`, `border-radius: 16px 16px 0 0 → 0`
- `defineProps``const props = defineProps` (fix "can't find variable: props" en prod)
- `watch(props.modelValue)` → lock `document.body.style.overflow` + `document.documentElement.style.overflow`
- `onUnmounted` → cleanup overflow
**A — Blog trans-former.fr : Liberapay retiré**
- VPS `/opt/astro-site/src/layouts/PostLayout.astro` : import + `<DonateButton />` supprimés
- Docker rebuild → 31 pages, HTTP 200
**C — Website pro deploy**
- `index.astro` SCP → `/opt/astro-pro/`, Docker rebuild → 13 pages, HTTP 200
### TODOs ouverts AEP
- [ ] Valider visuellement les 8 fixes sur tel (Jules)
- [ ] Pousser nav-carte sur Gitea (`git.trans-former.fr/jules/nav-carte`)
---
## 2026-04-15 — Session 5 : Corrections post Phase 2 (11 retours Jules)
**Exécutant :** Sonnet (agent autonome full auto)