# G — Prompt dev final NAV V2 > **⚠ CE PROMPT EST MAINTENANT SPLITTÉ EN 3 SESSIONS DÉDIÉES** > Voir plus bas le statut d'avancement et les prompts de reprise. ## État d'avancement (dernière MAJ : 2026-04-14) ``` [✓] Session 1 — Setup + Fondations (terminée 2026-04-14) ├── VPS setup (token nav-v2-worker, crawl4ai 0.8.6, .env) ├── Schéma NocoDB (organisations +19 champs, stats_usage créée) ├── Parsing A-biblio (93 entités, 72 géocodées) ├── Taxonomie révisée (10 fonctions, 3 échelles) ├── Palette figée (palette-nav-v2.md) └── 96 fiches importées (bypass modération), 3 réservées test pipe IA [⏸] Session 2 — Front (à lancer) → Prompt : H-prompt-session-2-front.md → Durée : 6-8h → Étapes : carte Leaflet + sidebar + fiche + formulaire soumission [⏸] Session 3 — IA + Deploy (à lancer après S2) → Prompt : I-prompt-session-3-ia-deploy.md → Durée : 6-8h → Étapes : worker Mistral Nemo + chatbot + bandeau + /a-propos + deploy ``` ## Décisions validées Session 1 - **Palette** : A sobre institutionnel + bleu nuit #1a2238 à 60% opacité partout (cf. `palette-nav-v2.md`) - **Taxonomie** : - Échelle (3) : National / Régional (inclut Départemental) / Local - Territoire : Métropole + 5 DOM-TOM (enrichissement ultérieur) - Fonctions (10) : Juridique, Technique, Économique, Administratif, Chantier, Comptabilité, **Développement** (ex-Prospection), **Formation** (nouveau), **Gestion d'agence** (ex-RH élargi), Santé mentale - **Liberapay** : `liberapay.com/trans-former.fr`, transparence origine dans `/a-propos` - **From email modération** : `contact@trans-former.fr` - **Seed** : bypass pour 96 fiches, 3 réservées test pipe IA en S3 (CNOA National, Archireport, Collectif Fil) - **Circuit breaker 20€ dépassé** → bandeau "manque de fonds" + pédagogie "1€ = N requêtes" - **CNOA** : 1 fiche National + 13 CROA Régional (antennes pins secondaires reportées V3) ## Points ouverts (cf. JOURNAL-V2.md) - [ ] Rate limit chatbot (Session 2) : fichier JSON vs Redis - [ ] Seuil email modération (Session 3) : reco 5 fiches pending - [ ] Facteur CO2eq : 0.052 (RTE FR) ou 0.055 (ADEME 2024) - [ ] MCP nocodb à reconfigurer (URL de base incorrecte) - [ ] Conflit `rich` après install crawl4ai : vérifier si lightrag impacté --- ## ⬇ PROMPT ORIGINAL CI-DESSOUS ⬇ > Conservé pour référence. Ne PAS relancer en bloc — utiliser H et I pour les sessions suivantes. > **À lancer en session Claude Code dédiée, modèle Opus, avec autorisation de déléguer à des sous-agents Sonnet.** > Autonomie : 7/10 (2 checkpoints Jules : validation palette + review fiche seed test). > Durée estimée : 20-28h (worker + front + deploy + tests). > Prérequis humains : Mistral key créée, Liberapay créé, ssh vps-hetzner OK. --- ## Mission Coder NAV V2 à partir des specs produites. La V2 ajoute à la V1 existante : 1. Carte de France interactive (Leaflet + OSM) 2. Sidebar filtres (échelle + fonction) 3. Page fiche détaillée partageable (`/fiche/[id]`) 4. Worker IA async qui enrichit les soumissions (Mistral Nemo) 5. Chatbot recherche sémantique (Mistral Small) 6. Filtre éthique commentaires 7. Bandeau bas stats (coût IA + dons + activité) 8. Onglets territoire (Métropole / Outre-mer) Stack : Nuxt 3 + Tailwind + Leaflet + NocoDB + Mistral direct + Resend. --- ## Fichiers de référence (à LIRE en premier) Tous dans `C:\Users\jules\Dropbox\ATIS - IPCJRA\0 INBOX\NAV-V2-recherches\` : 1. `A-biblio-ecosysteme-archi.md` — 94 entités seed à importer 2. `B-provider-ia-souverain.md` — Mistral Nemo + Small, circuit breaker 20€/mois 3. `C-systeme-dons.md` — Liberapay widget 4. `E-spec-frontend.md` — Wireframes ASCII, 28 composants, routes, states 5. `F-spec-pipe-collaboration.md` — Schéma DB, prompts IA, endpoints, fallbacks 6. `VPS-check.md` — NocoDB 0.301.5, Resend SMTP, crawl4ai à installer Fichier V1 existant : - `1 PROJETS/TECH - infra VPS, website pro, RAG/nav-carte/` (code Nuxt V1) --- ## Credentials & endpoints ``` VPS : ssh vps-hetzner (port 4422) NocoDB : http://localhost:8070 (interne VPS) Base : pipilvsi7dibo80 Table orgas : m08t7g5v4wch6wb Table avis : m4hub7cdutgec47 Token V1 : e9rUEwfUrE7mo_am0QAytwM0vCbwh4o0sisZIbHl → Créer un NOUVEAU token "nav-v2-worker" au premier démarrage Mistral : api.mistral.ai (key Scale, stockée côté Jules) Resend : smtp.resend.com:465 (password dans /opt/vps-kit/.env) Deploy : /opt/nav-carte/ (systemd nav-carte.service) Domaine : nav.trans-former.fr ``` --- ## Arbitrages tranchés (ne pas remettre en cause) **Taxonomie :** - Échelle (mono, obligatoire) : National / Régional / Départemental / Local - Fonction (multi 1-5, ordre=priorité) : Juridique / Technique / Économique / Administratif / Chantier / Comptabilité / Prospection / RH / Santé mentale - Territoire (séparé) : Métropole + 5 DOM-TOM **UX :** - Fiche = page dédiée `/fiche/[id]` - Chatbot = bottom-sheet (mobile ET desktop) - Onglets territoire = toggle Métropole/Outre-mer → sous-onglets DOM-TOM - Formulaire = HTML custom Nuxt (pas Tally) - Libs UI : Headless UI + Tailwind - Filtres encodés dans URL (`?echelle=...&fonctions=...&territoire=...`) - Filtrage côté client (< 300 fiches) **Stack IA :** - Mistral Nemo pour worker enrichissement + filtre éthique commentaires - Mistral Small pour chatbot recherche - Circuit breaker 20€/mois (table `stats_usage` + check avant chaque call) - Chat completions API classique, pas Mistral Agents **Système don :** - Liberapay (widget embed dans bandeau bas) - URL : liberapay.com/nav-archi (à confirmer avec Jules) --- ## Étapes ### Étape 0 — Setup (30 min) - [ ] SSH VPS, vérifier NocoDB + Resend - [ ] Créer un token NocoDB dédié "nav-v2-worker" - [ ] Installer crawl4ai : `docker run ... crawl4ai` OU `pip install crawl4ai` selon l'environnement VPS - [ ] Demander à Jules : - La Mistral API key (stockée en `.env` sur VPS, jamais commitée) - L'URL Liberapay finale - [ ] **CHECKPOINT Jules** : proposer 3 palettes design (sobre / chaleureux / moderne) avec mockups colorés → validation ### Étape 1 — Schéma NocoDB (30 min) - [ ] Étendre la table orgas avec les nouveaux champs (cf. F §2) - [ ] Créer table `stats_usage` (circuit breaker IA) - [ ] Créer table `scrape_queue` si besoin - [ ] Test : insert/update via API token ### Étape 2 — Front carte + sidebar (3-4h) - [ ] Installer vue-leaflet, Headless UI - [ ] Composants : `NavMap`, `NavSidebar`, `EchelleFilter`, `FonctionFilter`, `TerritoireToggle` - [ ] Wrapper Leaflet dans `` (SSR Nuxt) - [ ] Géocoder les 94 fiches seed (Nominatim, batch script) - [ ] Filtres encodés dans URL - [ ] Responsive : drawer mobile, sidebar 320px desktop ### Étape 3 — Page fiche + commentaires (2-3h) - [ ] Route `/fiche/[id]` avec SSR - [ ] Composants : `FicheDetail`, `CommentSection`, `CommentForm` - [ ] API : `GET /api/fiche/[id]`, `POST /api/comment` - [ ] Filtre éthique commentaire sync (Mistral Nemo, < 2s) - [ ] Meta SEO (title, description, og:image) - [ ] Bouton retour carte avec restauration filtres (query params) ### Étape 4 — Worker IA enrichissement (4-5h) - [ ] Script Node.js `worker/enrich.js` (cron systemd toutes les 5 min) - [ ] Pipeline : fetch pending → scrape (crawl4ai, timeout 3min) → Mistral Nemo → update NocoDB - [ ] Prompts exacts de F §3 - [ ] Troncature contenu scrapé à 4k tokens avant prompt - [ ] Logs usage → table `stats_usage` - [ ] Circuit breaker 20€ (check avant chaque call) - [ ] Email Jules (Resend) quand N fiches en attente modération - [ ] Fallback scrape échoué : flag `scrape_failed`, review manuel ### Étape 5 — Chatbot recherche (3-4h) - [ ] Composant `ChatbotSheet` (bottom-sheet, Headless UI) - [ ] Message onboarding (texte exact de E §6) - [ ] Template requête (besoin / thématique / lieu) - [ ] API `POST /api/chatbot` : Mistral Small + contexte JSON fiches - [ ] Rate limit : 10 req/IP/jour (stockage fichier JSON ou Redis) - [ ] Affichage résultats : fiches + explication 1-2 lignes ### Étape 6 — Formulaire soumission (2h) - [ ] Composant `SubmitModal` ou page `/contribuer` - [ ] Validation Zod côté client + serveur - [ ] Champs : nom, URL, desc, échelle, fonctions (1-5), territoire, ville, email - [ ] Message post-submit (E §9) - [ ] Rate limit : 3/IP/jour ### Étape 7 — Bandeau bas + Liberapay (1-2h) - [ ] Composant `BandeauBas` - [ ] Gauche : data depuis `stats_usage` (coût mois, tokens, carbone estimé) - [ ] Milieu : bouton "Soutenir NAV" → Liberapay - [ ] Droite : compteurs semaine (dons, nouvelles fiches, requêtes) - [ ] Carbone estimé : kWh × 0.052 kg CO2eq/kWh (facteur FR RTE) ### Étape 8 — Page /a-propos (1h) - [ ] Contenu : NAV, souveraineté, gouvernance, transparence - [ ] Badges "IA souveraine", "Hébergé en France", "Zéro cookie US" - [ ] Lien vers formulaire + Liberapay ### Étape 9 — Deploy + tests (2-3h) - [ ] Build production - [ ] Deploy via git pull + pm2/systemd restart - [ ] Vérifier DNS, HTTPS (Caddy déjà config) - [ ] **CHECKPOINT Jules** : soumettre une fiche test → vérifier pipeline IA → valider → voir sur carte - [ ] Tester chatbot avec requête réelle - [ ] Tester mobile (iOS Safari + Android Chrome) ### Étape 10 — Import seed 94 fiches (1h) - [ ] Script import : parser `A-biblio-ecosysteme-archi.md` - [ ] Pour chaque entité : créer en NocoDB avec status `published` (bypass modération pour seed) - [ ] Géocoder ville via Nominatim - [ ] Vérifier que les marqueurs apparaissent sur la carte --- ## Délégation Tu peux (et dois) déléguer les sous-tâches indépendantes à des sous-agents Sonnet. Exemples : - **Sonnet 1** : setup NocoDB (étape 1) + géocoding seed - **Sonnet 2** : composants front carte + sidebar (étape 2) - **Sonnet 3** : worker IA (étape 4) - **Sonnet 4** : chatbot (étape 5) Toi (Opus) = pilote : - Arbitrages design + UX - Checkpoints Jules - Assemblage final + deploy - Debug quand ça coince --- ## Règles - Mobile-first, testé à chaque étape - Français avec accents partout (UI + code comments) - Pas de Google Fonts externe (self-hosted ou system font) - Pas de librairie UI lourde (Vuetify, Quasar) — Tailwind + Headless UI uniquement - Commits atomiques par étape (ex: `feat(front): carte Leaflet + sidebar filters`) - Secrets via `.env` sur VPS, jamais dans le code - Si un point bloque > 30 min → reporter dans le journal de session et demander Jules - Tester le pipeline IA complet sur 1 fiche avant de scaler --- ## Output attendu 1. V2 déployée sur nav.trans-former.fr 2. 94 fiches seed visibles sur la carte 3. Worker IA qui tourne (cron 5 min) 4. Chatbot fonctionnel 5. Bandeau bas avec stats en temps réel 6. Liberapay relié 7. Journal de session `/1 PROJETS/TECH - infra VPS.../nav-carte/JOURNAL-V2.md` avec : - Temps passé par étape - Décisions techniques prises - Points bloquants rencontrés - TODOs V3 --- ## Questions ouvertes (à trancher par Jules AVANT lancement) 1. **Palette design** : sobre / chaleureux / moderne ? (checkpoint étape 0) 2. **URL Liberapay finale** : `nav-archi` ou `trans-former` ? 3. **From email modération** : `newsletter@trans-former.fr` (existant Resend) ou créer `nav@trans-former.fr` ? 4. **Seed fiches** : bypass modération IA pour les 94 (publication directe) ou les passer dans la pipe pour tester ? → Reco : bypass pour rapidité, passer 2-3 fiches dans la pipe en test