Commit Graph

16 Commits

Author SHA1 Message Date
Jules Neny
755d1ef9ae feat(v2-graphe): sidebar hashtags droite repliable + chatbot integre
- GraphView : barre hashtags du haut supprimee, sidebar droite 200px
  groupee par famille (heuristique majoritaire, egalite -> famille la
  plus petite), toggle >>/<< vers 40px replie
- pages/index.vue : ChatbotPlaceholder ajoute sous GraphView en flex-column
- watch sidebarOpen : reinit D3 apres transition CSS pour SVG resize
2026-05-05 17:58:38 +02:00
Jules Neny
682d5d337e fix(aep-v1.1): bugs E2E M1 M2 M3 L1 L2 L3
M1 - Chips a11y : converti les <span> chips mobile (criteres, types,
echelle, fonctions) en <button type=button> avec aria-pressed pour
support clavier et lecteurs d'ecran (sidebar desktop deja en boutons).

M2 - Effacer les filtres ne vide pas la search : resetFilters() reset
maintenant aussi mobileSearch dans pratiques-regeneratives.vue et
index.vue.

M3 - FAB Soutenir overlap chip Agence : repositionne le FAB Soutenir
en stack vertical avec le FAB Chatbot (right: 16px, bottom: 84px) au
lieu de left: 16px, bottom: 68px. Evite l'overlap avec les chips de
la bottom-sheet sur viewport intermediaire.

L1 - /fiche/[id] introuvable pour pratiques : ajoute un fallback dans
pages/fiche/[id].vue qui detecte si l'id correspond a une pratique
regenerative et redirige vers /pratique/[id] (navigateTo replace).

L2 - Label retour incorrect sur /proposer-pratique : harmonise en
'Retour aux pratiques regeneratives'.

L3 - Map ne fitBounds pas apres filtre : EuropeMap et NavMap appellent
maintenant fitBounds(bounds, padding 40px, maxZoom 10) quand la liste
filtree contient 1 a 15 markers. Saute le tout premier rendu pour
preserver la vue initiale.
2026-04-30 02:31:31 +02:00
Jules Neny
914759a815 feat(aep-v1.1): PA5 chatbot pratiques regeneratives
- Nouveau endpoint server/api/chatbot-pratiques.post.ts qui interroge
  le JSON statique pratiques-regeneratives.json (52 fiches V1) avec
  Mistral Small. Prompt systeme adapte aux 8 criteres rege et types
  d'entites. Rate limit 10/jour, circuit breaker partage.
- ChatbotPlaceholder + ChatbotSheet rendus generiques via props
  (endpoint, title, placeholder, ficheBasePath) + slot onboarding.
  La carte ecosysteme AEP continue d'utiliser /api/chatbot, la carte
  pratiques rege utilise /api/chatbot-pratiques.
- pratiques-regeneratives.vue : ChatbotPlaceholder integre sous la
  carte Europe desktop (replie par defaut), FAB mobile + ChatbotSheet
  bottom sheet, handler highlightOrgs pour surligner la fiche reco.
2026-04-30 02:29:16 +02:00
Jules Neny
a6fff9a950 feat(aep-v1.1): PA3 bouton Proposer contextuel + CTA sidebar ecosysteme
- app.vue : bouton + Proposer du header pointe vers /proposer-pratique
  si on est sur la carte pratiques regenerative (et sous-pages /pratique/),
  sinon vers /contribuer (ecosysteme AEP par defaut). Idem icone mobile.
- NavSidebar.vue : ajoute le CTA + Proposer une fiche en pied de sidebar
  (style aligne sur PratiqueSidebar.vue)
2026-04-30 02:26:24 +02:00
Jules Neny
358cb55d50 feat(aep-v1.1): PA1 fix DOM-TOM pattern desktop 2 onglets
- Remplace le bandeau DOM-TOM 140px (UX cassée, pin inaccessible) par
  un pattern 2 onglets en haut de carte (Metropole/Europe vs Outre-mer)
- Applique le pattern symetriquement sur pratiques-regeneratives.vue
  et index.vue
- Carte selectionnee occupe toute la hauteur dispo, accordeon DOM-TOM
  scrollable
2026-04-30 02:25:42 +02:00
Jules Neny
bbf6b0475d docs(p5b): recap deploy prod — smoke test 3/3, 52 fiches, notes deploy.sh BOM
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 01:46:49 +02:00
Jules Neny
bf40b40f96 docs(p5b): journal deploy + INDEX + prompt BrowserMCP E2E
- JOURNAL-V2.md : entree 2026-04-29, chantier P1->P5b, smoke test prod
- aep-communaute-build/INDEX.md : 10/11 cases cochees (manque E2E Jules)
- aep-communaute-build/PROMPT-BROWSERMCP-E2E.md : prompt E2E 5 scenarios desktop+mobile

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 01:46:00 +02:00
Jules Neny
e80b226ba2 docs(p5a): recap build local + add pratiques-regeneratives.json data
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 01:35:04 +02:00
Jules Neny
90808551f0 docs(p4): recap P4 form proposer-pratique
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 00:34:57 +02:00
Jules Neny
f25a7d3884 feat(pratiques): pending.json init + CTA sidebar proposer une pratique
pratiques-pending.json initialisé vide (file modération V1).
PratiqueSidebar : lien + Proposer une pratique en bas de sidebar,
style sidebar-cta-link réutilisant variables CSS existantes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 00:33:45 +02:00
Jules Neny
d10586c432 feat(pratiques): page /proposer-pratique — formulaire contribution Pratique
Formulaire complet : nom, URL, description (50-500c), critères régé
(checkboxes min 3/8), type entité (radio), pays (dropdown Europe + DOM-TOM
+ autre), ville, tags (virgule-séparé, chips preview), email optionnel.
Validation Zod client-side champ par champ + submit, gestion 422/429.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 00:33:15 +02:00
Jules Neny
83d4bd12fa feat(pratiques): endpoint POST /api/submit-pratique avec Zod + rate limit
Validation Zod miroir schéma client, 3 soumissions/IP/jour via
rateLimitJson, append à pratiques-pending.json, retourne trackingId.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 00:32:45 +02:00
Jules Neny
5fabcdee8a feat(nav): ajout onglet Pratiques régé + hamburger + overflow 2026-04-28 21:48:04 +02:00
Jules Neny
a70c9e0b4f feat(pratiques): types, API statique, composants filtres + cartes Europe/outremer 2026-04-28 21:47:41 +02:00
Jules Neny
5eda4bd53d chore: supprimer fichiers tmp editeur parasites 2026-04-28 14:00:15 +02:00
Jules Neny
21c44d8193 feat(aep): carte AEP — push Gitea 2026-04-28 2026-04-28 14:00:05 +02:00