# CartoGroov

# Yocoop Vers Cartogroov

# Features

# RoleBase — Features à développer sur Yocoop (parité CartoGroov + backlog)

**Date** : 10/07/2026
**Base** : `rolebase-yocoop-features-analyse.md` (30/05, v1→v13) + ajouts v14→v17 de CartoGroov.
**But** : rattraper sur Yocoop toutes les features de CartoGroov (prod), proprement, puis avancer.

## Légende

| Symbole | Sens |
|---------|------|
| 🔵 | Proposable à Godefroy (générique) |
| 🟣 | Spécifique UdN/CartoGroov (interne) |
| 🟢 / 🟡 / 🔴 | Facile (<2h) / Moyenne (2-6h) / Longue (>6h) |
| Parité | État sur **Yocoop** : ⬜ à rattraper · 🟩 fait |

> Pour le détail d'implémentation de chaque ligne (patch exact, migration, permissions), se reporter
> à `rolebase-udn-v17.md` / MD `vXX` et à l'analyse d'origine (ID entre parenthèses).

---

## A. Features v1→v13 — déjà cataloguées (88 features)

Elles restent valables et sont détaillées dans `rolebase-yocoop-features-analyse.md` avec leur ID
(INFRA, UDN, ORG, TENS, GOUV, ASYNC, REU, PP, EMAIL, ADM, IMP, INT). Résumé des blocs et de la
proposabilité Godefroy :

| Bloc | Nb | Dont 🔵 Godefroy | Parité Yocoop |
|------|----|------------------|---------------|
| Infrastructure (INFRA-01→08) | 8 | 0 | ⬜ prérequis à refaire |
| Personnalisation UdN (UDN-01→05) | 5 | 2 | ⬜ |
| Organigramme & Rôles (ORG-01→06) | 6 | 5 | ⬜ |
| Tensions (TENS-01→09) | 9 | 5 | ⬜ |
| Gouvernance (GOUV-01→14) | 14 | 10 | ⬜ |
| Gouvernance async (ASYNC-01→13) | 13 | 12 | ⬜ |
| Réunions (REU-01→11) | 11 | 7 | ⬜ |
| Prochains pas (PP-01→08) | 8 | 6 | ⬜ |
| Emails & Crons (EMAIL-01→07) | 7 | 3 | ⬜ |
| Admin (ADM-01→04) | 4 | 0 | ⬜ |
| Import (IMP-01) | 1 | 1 | ⬜ |
| Intégrations (INT-01→02) | 2 | 1 | ⬜ |

**Candidats PR Godefroy prioritaires (rappel de l'analyse) :** ORG-01 (cercle vs rôle), TENS-01
(types de tension), GOUV-07 (Décision → Règle commune), PP-01+02 (table + page Prochains pas),
EMAIL-02+03 (rappel J-1 + CR réunion), puis ASYNC complet, REU-01, TENS-07.

L'ordre de reconstruction reste le **plan en 8 phases** de l'analyse (Socle → Tensions/Gouvernance →
Réunions → Prochains pas → Tension enrichie → Async → Emails/Admin → Parité/Migration).

---

## B. Nouvelles features CartoGroov (v14→v17) — À AJOUTER au catalogue

Ces features ont été développées sur CartoGroov **après** l'analyse et ne figurent pas encore dans
le catalogue. Elles sont à rattraper sur Yocoop.

| ID | Feature | Version | Diff. | Godefroy | Parité | Notes |
|----|---------|---------|-------|----------|--------|-------|
| NEW-01 | Recherche Algolia globale (index, clés, backfill) | v14 | 🟡 | 🟣 (clés) | ⬜ | Filtre par `orgId` — attention visibilité (voir NEW-09) |
| NEW-02 | Google Agenda OAuth — connexion + export (phase 1) | v14 | 🟡 | 🔵 | ⬜ | App OAuth ; secret hors versionné |
| NEW-03 | Docs légaux CGU + Politique de confidentialité (RGPD) | v14 | 🟢 | 🟣 | ⬜ | Conformité Google incluse |
| NEW-04 | Fix liens vérification email + expéditeur | v14 | 🟢 | 🔵 | ⬜ | Devenu la base du système emails chartés |
| NEW-05 | Rebranding CartoGroov (logo, favicon, PWA, OG/Twitter) | v15 | 🟢 | 🟣 | ⬜ | Sur Yocoop : garder configurable (UDN-03) |
| NEW-06 | Suppression traceurs tiers (Google Analytics + Sentry) RGPD | v15 | 🟢 | 🔵 | ⬜ | Option self-host propre |
| NEW-07 | **Focus par titulaire de rôle** (`circle_member.focus`) | v16 | 🟡 | 🔵 **PR forte** | 🟩 | ✅ fait Yocoop 10/07 (déclencheur « + focus » au survol ; italique sous le prénom dans l'organigramme). ⚠️ bascule UdN : le champ existe déjà en v16 → voir `migration-blockers.md` |
| NEW-08 | Système d'emails chartés (`packages/emails/Layout` + templates) | v17 | 🟡 | 🔵 | ⬜ | `MeetingSummary` + `Notification` génériques ; auth via hasura-auth |
| NEW-09 | Tensions privées cloisonnées par cercle (private-by-default + trigger) | v17 | 🟡 | 🔵 | ⬜ | Modèle de sécurité ; pas de bypass Owner/Admin |
| NEW-10 | Réunions privées réellement effectives (fix permission `meeting`) | v17 | 🟢 | 🔵 | ⬜ | Hasura respecte le flag `private` |
| NEW-11 | CR de réunion instantané en fin de réunion + enrichi | v17 | 🟡 | 🔵 | ⬜ | Trigger `ended` false→true ; présents/absents, checklist, prochains pas |
| NEW-12 | `next_step.memberId` — assignation à un membre | 21/05 | 🟡 | 🔵 | ⬜ | Recouvre en partie PP-05 |
| NEW-13 | Fix persistance indicateurs (toujours `role.indicators`) | 21/05 | 🟢 | 🔵 | ⬜ | Ne plus écrire dans `step.notes` |

### Candidats PR Godefroy issus du neuf
- **NEW-07 (Focus par titulaire)** — générique, propre, à fort intérêt communautaire.
- **NEW-08 (emails chartés)** — architecture réutilisable (Layout + templates).
- **NEW-09/10 (modèle privé/cloisonné)** — correctifs de sécurité utiles à tous.
- **NEW-11 (CR instantané)** — meilleure UX que le cron seul.

---

## C. Enrichissements Yocoop (au-delà de la parité)

Décisions déjà actées pour faire **mieux** que CartoGroov une fois la parité atteinte :

| ID | Enrichissement | Diff. | Godefroy |
|----|----------------|-------|----------|
| ENR-01 | `next_step` enrichie : `description`, `dueDate`, `status`, `priority`, `projectId` | 🟡 | 🔵 |
| ENR-02 | "Transformer un prochain pas en projet" (tunnel next_step → task) | 🟡 | 🔵 |
| ENR-03 | i18n systématique (dette FR hardcodée de CartoGroov non reproduite) | 🟢 | 🔵 |
| ENR-04 | Google Agenda phase 2 (import/synchro bidirectionnelle) | 🔴 | 🔵 |
| ENR-05 | **Écriture inclusive harmonisée (point médian)** — étendre à tout `fr.json` (`un·e`, `sûr·e`, `ce·tte`, `invité·e`, `membre·s`…) | 🟢 | 🟣 |

### Notes terminologie / inclusif (fait le 10/07/2026)

- **UDN-01 (terminologie FR) — partiel** : `thread` → **« Tension »**, `task` → **« Projet »** appliqués dans `fr.json` (102 valeurs, accords de genre inclus ; `en.json` inchangé ; règle : c'est de l'affichage, aucune entité de code ne change). Reste de UDN-01 : le terme **« Entreprise »** (org) et le plan gratuit (UDN-02).
- **Écriture inclusive — commencée** : seul **« participant » → « participant·e / participant·es »** est passé en **point médian**. Le reste de l'app utilise encore l'inclusif entre parenthèses (`un(e)`, `sûr(e)`, `ce(tte)`, `invité(e)`) → d'où des phrases mixtes (« un(e) participant·e »). **Harmonisation = ENR-05** (choix éditorial Yocoop, 🟣, à faire en une passe séparée).
- ⚠️ `fr.json` est désormais dans `YOCOOP_FILES` (`update-from-upstream.sh`) → un futur rattrapage upstream signalera le conflit au lieu d'écraser silencieusement la terminologie.

---

## D. Dépendance transverse — à ne pas oublier au rattrapage

- **Rattrapage upstream déjà intégré (14/06)** : packages `editor`, `editor-legacy`, `graph`,
  puppeteer/Chromium backend, refonte panneau de rôle. Toute feature touchant l'éditeur ou
  l'organigramme doit composer avec ces packages (voir `rolebase-upstream-sync-log.md`).
- **`circle_participant_cache`** : toute feature de visibilité (tensions/projets/réunions) en dépend.
- **Metadata Hasura live ≠ disque** : vérifier systématiquement lors des features à permissions.

---

## Résumé quantitatif mis à jour

| Ensemble | Nb features |
|----------|-------------|
| Catalogue v1→v13 (A) | 88 |
| Nouvelles v14→v17 (B) | 13 |
| Enrichissements Yocoop (C) | 5 |
| **Total à piloter** | **~105** |
| dont proposables Godefroy 🔵 | ~60 |

*À maintenir à jour : cocher la colonne Parité (🟩) au fur et à mesure des rattrapages sur Yocoop.*



# RoleBase Yocoop — Analyse complète des features v1→v13
**Document** : Analyse et recommandations pour le développement propre  
**Date** : 30/05/2026  
**Objectif** : Reconstruire proprement toutes les features UdN sur le VPS Yocoop

---

## Légende

| Symbole | Signification |
|---------|---------------|
| 🏗️ | Feature structurelle — touche à l'architecture de base |
| ⭐ | Feature importante — valeur métier forte |
| 🟢 | Facile — < 2h, peu de fichiers |
| 🟡 | Moyenne — 2-6h, plusieurs fichiers |
| 🔴 | Longue — > 6h, BDD + GraphQL + UI + backend |
| 🔵 | Proposable à Godefroy — suffisamment générique |
| 🟣 | Spécifique UdN — peu de chance d'intéresser Godefroy |

---

## Classement par catégorie

---

## 1. INFRASTRUCTURE & CONFIGURATION

| ID | Feature | Difficulté | Importance | Godefroy |
|----|---------|-----------|-----------|---------|
| INFRA-01 | SMTP smtp2go (config email) | 🟢 | ⭐ | 🟣 |
| INFRA-02 | Services systemd (backend + yjs) | 🟢 | ⭐ | 🟣 |
| INFRA-03 | Build production + settings.ts self-hosted | 🟢 | ⭐ | 🟣 |
| INFRA-04 | Nginx config + SSL Let's Encrypt | 🟢 | ⭐ | 🟣 |
| INFRA-05 | Backup PostgreSQL automatique (cron 2h, 7j) | 🟢 | ⭐ | 🟣 |
| INFRA-06 | Script update.sh (sauvegarde fichiers modifiés) | 🟢 | ⭐ | 🟣 |
| INFRA-07 | Dépôt Framagit + git remote | 🟢 | ⭐ | 🟣 |
| INFRA-08 | Crons Linux en backup (meeting-summaries, reminders) | 🟢 | ⭐ | 🟣 |

**Notes :**
- INFRA-01 à 06 : à faire en premier, ce sont les prérequis pour tout le reste
- INFRA-07 : configure le remote Framagit dès le début pour versionner correctement
- INFRA-08 : contournement du bug Hasura cron scheduling (URLs /trpc/ → /cron.)

---

## 2. PERSONNALISATION UdN / YOCOOP

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| UDN-01 | Terminologie (Tensions/Projets/Entreprise) | 🟢 | ⭐ | 🟣 | Modifier fr.json + en.json |
| UDN-02 | Plan gratuit illimité (free: Infinity) | 🟢 | ⭐ | 🟣 | 1 ligne dans subscription.ts |
| UDN-03 | Personnalisation orga (logo, couleur, message) | 🟡 | ⭐ | 🔵 | BDD + UI + CSS variables |
| UDN-04 | Homepage → redirect AuthPage si selfHosted | 🟢 | ⭐ | 🟣 | 1 condition |
| UDN-05 | Ajouter membre sans email | 🟢 | ⭐ | 🔵 | Champ optionnel dans le formulaire |

---

## 3. ORGANIGRAMME & RÔLES

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| ORG-01 | Distinction visuelle cercle 🫧 vs rôle (small-caps) | 🟡 | ⭐ | 🔵 | CircleButton + SearchResultIcon |
| ORG-02 | Filtres Mes rôles / Cercles / Toute l'org | 🟡 | ⭐ | 🔵 | CircleSearchInput + useSearch |
| ORG-03 | Surbrillance "Mes rôles" dans l'organigramme | 🟡 | ⭐ | 🔵 | CSS dynamique + état |
| ORG-04 | Boutons UserPlus / UserMinus dans liste rôles | 🟢 | ⭐ | 🔵 | Ajout/retrait membre rapide |
| ORG-05 | Tri rôles dans l'organigramme (base en premier) | 🟢 | ⭐ | 🔵 | useSearch.ts + sort |
| ORG-06 | Filtrage cercles uniquement pour les réunions | 🟢 | ⭐ | 🔵 | MeetingEditModal → circlesOnly |



---

## 4. TENSIONS

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| TENS-01 | 🏗️ Types de tension (opé/gouv/gouv_réunion) | 🟡 | ⭐ | 🔵 | BDD thread.type + badges |
| TENS-02 | Description tension (thread.description) | 🟢 | ⭐ | 🔵 | BDD + GraphQL + UI |
| TENS-03 | Layout 2 colonnes ThreadContent | 🟡 | ⭐ | 🟣 | Refonte majeure de l'UI |
| TENS-04 | Badges OPÉ/GOUV colorés sur les tensions | 🟢 | ⭐ | 🟣 | Visual uniquement |
| TENS-05 | Boutons Opé/Gouv (remplace Select type) | 🟢 | ⭐ | 🔵 | ThreadEditModal |
| TENS-06 | Popup création tension — layout Rôle/Type colonne | 🟢 | ⭐ | 🟣 | Fix UX mobile |
| TENS-07 | 🏗️ Tension opé enrichie — autorité + responsable | 🔴 | ⭐ | 🔵 | BDD authorityCircleId+memberId + GraphQL (4 fichiers) + UI |
| TENS-08 | Auto-remplissage membre selon rôle sélectionné | 🟡 | ⭐ | 🔵 | Dépend de TENS-07 |
| TENS-09 | Notes réunion → description à la validation | 🟡 | ⭐ | 🟣 | Fix UX + extraction Lexical JSON |

---

## 5. GOUVERNANCE

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| GOUV-01 | 🏗️ Modes gouvernance (Libre/Agile/Holacratique) | 🟡 | ⭐ | 🔵 | BDD org.governanceMode + permissions |
| GOUV-02 | Permissions fines par mode dans CircleContext | 🔴 | ⭐ | 🔵 | Logique complexe selon le mode |
| GOUV-03 | Modal confirmation passage Holacratique | 🟡 | ⭐ | 🟣 | + création rôles structurels colorés |
| GOUV-04 | 🏗️ Section Évolutions proposées (ThreadGovernanceEvolutions) | 🔴 | ⭐ | 🔵 | Composant complexe, menu 2 niveaux |
| GOUV-05 | useApplyGovernanceEvolutions (application des évolutions) | 🔴 | ⭐ | 🔵 | Hook critique, 10 types d'évolutions |
| GOUV-06 | Bouton "Valider directement" (sans async) | 🟢 | ⭐ | 🔵 | Dépend de GOUV-05 |
| GOUV-07 | Renommage "Décision" → "Règle commune" | 🟢 | ⭐ | 🟣 | fr.json + en.json |
| GOUV-08 | Suppression champ "Règles communes" de la fiche rôle | 🟢 | ⭐ | 🟣 | Doublon avec Règles communes |
| GOUV-09 | Sauvegarde evolutionsData en DB avant validation | 🟢 | ⭐ | 🔵 | Fix : évolutions persistées après clôture |
| GOUV-10 | Tensions gouvernance validées — lecture seule | 🟢 | ⭐ | 🔵 | Ne pas ré-ouvrir après application |
| GOUV-11 | Section "Traités" gouvernance avec rôle + évolutions | 🟡 | ⭐ | 🔵 | Affichage lisible des évolutions appliquées |
| GOUV-12 | ThreadGovernanceEvolutions — rôles feuilles vs sous-cercles | 🟡 | ⭐ | 🔵 | Détection enfants pour discriminer |
| GOUV-13 | Cercle de réunion exclu du sélecteur de tension | 🟢 | ⭐ | 🔵 | MeetingStepContentThreads + Governance |
| GOUV-14 | Décisions dans les évolutions (decision_add/update/archive) | 🟡 | ⭐ | 🔵 | Dépend de GOUV-04 |

---

## 6. GOUVERNANCE ASYNCHRONE

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| ASYNC-01 | 🏗️ BDD governance_vote + governance_vote_token | 🟡 | ⭐ | 🔵 | Tables + permissions Hasura |
| ASYNC-02 | Backend — Route /governance-votes (GET) | 🟡 | ⭐ | 🔵 | Calcul votes + membres du cercle |
| ASYNC-03 | Backend — Route /governance-vote-ui (POST) | 🟡 | ⭐ | 🔵 | Vote one-click depuis email |
| ASYNC-04 | Backend — handleGovernanceAsync (trigger) | 🟡 | ⭐ | 🔵 | Envoi mails aux membres du cercle |
| ASYNC-05 | Backend — Cron closeGovernanceAsync | 🟡 | ⭐ | 🔵 | Clôture auto à deadline |
| ASYNC-06 | Backend — Cron remindGovernanceAsync | 🟡 | ⭐ | 🔵 | Rappel membres sans vote J-2 |
| ASYNC-07 | Frontend — Interface de vote (ThreadAsyncGovernance.tsx) | 🟡 | ⭐ | 🔵 | Affiche votes + permet voter |
| ASYNC-08 | asyncStatus — nouveau statut governance_async_validated | 🟡 | ⭐ | 🔵 | Fix UX : tension reste Active après cron |
| ASYNC-09 | Bouton "Appliquer les évolutions" conditionnel | 🟢 | ⭐ | 🔵 | Visible si governance_async_validated |
| ASYNC-10 | Masquage boutons Apporter/Async sur tension validée | 🟢 | ⭐ | 🔵 | UX : boutons inutiles après validation |
| ASYNC-11 | Brouillon évolutions en localStorage | 🟢 | ⭐ | 🔵 | Persistence entre sessions |
| ASYNC-12 | Filtre cercle dans sélecteur d'évolution (holacracy) | 🟡 | ⭐ | 🔵 | Cercle parent qui gouverne le rôle |
| ASYNC-13 | Gouvernance async masquée en mode agile/libre | 🟢 | ⭐ | 🔵 | Fix : visible seulement en holacratique |

---

## 7. RÉUNIONS

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| REU-01 | 🏗️ Nouveaux types d'étapes (Inclusion, Déclusion, Checklist, Indicateurs, NextSteps, Governance) | 🔴 | ⭐ | 🔵 | BDD + GraphQL (4 patches) + composants |
| REU-02 | Triage opérationnel refonte (inline + import + Traités) | 🔴 | ⭐ | 🟣 | MeetingStepContentThreads complexe |
| REU-03 | Étape Gouvernance (MeetingStepContentGovernance) | 🔴 | ⭐ | 🟣 | Tensions gouvernance en réunion |
| REU-04 | Indicateurs et Checklist par rôle | 🟡 | ⭐ | 🔵 | ListEditableField + parsing JSON/texte |
| REU-05 | Prochains pas en réunion (saisie + affichage) | 🟡 | ⭐ | 🔵 | Dépend de PP-01 |
| REU-06 | Tensions "Traités" — layout prochain pas en dessous | 🟢 | ⭐ | 🔵 | Fix UX v12 |
| REU-07 | Création tension inline en réunion | 🟡 | ⭐ | 🔵 | Sélecteur cercle + membre |
| REU-08 | Import tension existante dans l'étape | 🟢 | ⭐ | 🔵 | ThreadSearchButton |
| REU-09 | Membre responsable affiché dans "Traités" | 🟢 | ⭐ | 🔵 | Dépend de TENS-07 |
| REU-10 | Notes réunion pré-remplies depuis description tension | 🟢 | ⭐ | 🟣 | UX : évite de retaper la description |
| REU-11 | Filtrage cercles pour les réunions (circlesOnly) | 🟢 | ⭐ | 🔵 | Évite de choisir un simple rôle |

---

## 8. PROCHAINS PAS

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| PP-01 | 🏗️ Table next_step BDD + permissions Hasura | 🟡 | ⭐ | 🔵 | Table + contraintes UNIQUE + permissions org.members |
| PP-02 | Page Prochains pas (NextStepsPage) | 🟡 | ⭐ | 🔵 | Kanban À faire / Réalisé |
| PP-03 | Contrainte UNIQUE par tension (next_step_thread_unique) | 🟢 | ⭐ | 🔵 | Fix v12 : 1 PP par tension |
| PP-04 | saveNextStep appelé avant validation/rejet | 🟢 | ⭐ | 🔵 | Fix v12 : PP sauvegardé à la validation |
| PP-05 | Filtre PP par mes rôles + assignés à moi | 🟡 | ⭐ | 🟣 | Dépend de TENS-07 (memberId) |
| PP-06 | Labels dynamiques ("Tous mes rôles", "Assigné à [nom]") | 🟢 | ⭐ | 🟣 | i18n à gérer |
| PP-07 | PP visible toutes réunions confondues | 🟢 | ⭐ | 🔵 | Fix v12 : plus filtré par meetingId |
| PP-08 | PP pré-rempli à la réouverture d'une tension | 🟡 | ⭐ | 🔵 | Fix v12 : subscription BDD dans ThreadContent |

---

## 9. EMAILS & CRONS

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| EMAIL-01 | Notification email admin (nouvelle orga) | 🟢 | ⭐ | 🟣 | notifyNewUser.ts |
| EMAIL-02 | Rappel J-1 réunion (cron 9h UTC) | 🟡 | ⭐ | 🔵 | sendMeetingReminders.ts |
| EMAIL-03 | CR réunion post-meeting (cron horaire) | 🟡 | ⭐ | 🔵 | sendMeetingSummaries.ts |
| EMAIL-04 | Flag summarySent — CR envoyé une seule fois | 🟢 | ⭐ | 🔵 | Fix v12 : plus de doublons |
| EMAIL-05 | CR réunion enrichi — tensions + PP + évolutions | 🔴 | ⭐ | 🔵 | sendMeetingSummaries v13 |
| EMAIL-06 | Invitation membre (email natif Nhost) | 🟢 | ⭐ | 🟣 | Config SMTP |
| EMAIL-07 | Cron URLs corrigées (sans /trpc/) | 🟢 | ⭐ | 🟣 | Fix Hasura metadata |

---

## 10. ADMIN

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| ADM-01 | Tableau de bord admin (/admin) | 🟡 | ⭐ | 🟣 | Page statique + API orgas |
| ADM-02 | Impersonation admin | 🔴 | ⭐ | 🟣 | BDD + backend + frontend + bandeau orange |
| ADM-03 | Plans d'abonnement (vivante/carto + addons) | 🟡 | ⭐ | 🟣 | BDD org.plan + UI admin |
| ~~ADM-04~~ | ~~Export ISO 9001 Excel~~ | — | — | — | ❌ RETIRÉ 14/06/2026 : l'export XLSX/JSON standard de Rolebase (`ExportPage.tsx`) couvre déjà le besoin |

---

## 11. IMPORT

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| IMP-01 | Import Glassfrog (JSON bypass base64) | 🟡 | ⭐ | 🔵 | Importeur complet |

---

## 12. INTÉGRATIONS

| ID | Feature | Difficulté | Importance | Godefroy | Notes |
|----|---------|-----------|-----------|---------|-------|
| INT-01 | Excalidraw (tableau blanc collaboratif) | 🟡 | ⭐ | 🔵 | BDD + URL format + composants |
| INT-02 | Meet UdN (visio intégrée) | 🟡 | ⭐ | 🟣 | URL DDM-NOM-MAA + addon_meet |

---

## Résumé quantitatif

| Catégorie | Nb features | Faciles 🟢 | Moyennes 🟡 | Longues 🔴 | Proposables Godefroy 🔵 |
|-----------|------------|-----------|------------|-----------|----------------------|
| Infrastructure | 8 | 8 | 0 | 0 | 0 |
| Personnalisation UdN | 5 | 4 | 1 | 0 | 2 |
| Organigramme & Rôles | 6 | 3 | 3 | 0 | 5 |
| Tensions | 9 | 5 | 2 | 2 | 5 |
| Gouvernance | 14 | 6 | 5 | 3 | 10 |
| Gouvernance async | 13 | 4 | 9 | 0 | 12 |
| Réunions | 11 | 4 | 5 | 2 | 7 |
| Prochains pas | 8 | 4 | 4 | 0 | 6 |
| Emails & Crons | 7 | 3 | 3 | 1 | 3 |
| Admin | 4 | 0 | 3 | 1 | 0 |
| Import | 1 | 0 | 1 | 0 | 1 |
| Intégrations | 2 | 0 | 2 | 0 | 1 |
| **TOTAL** | **88** | **41** | **38** | **9** | **52** |

---

## Recommandations de branches Git

### Stratégie générale

```
main (stable, déployé sur VPS Yocoop)
  └── develop (intégration continue)
        ├── feature/XXX-nom-court
        ├── fix/XXX-description
        └── chore/XXX-infra-config
```

**Règle :** on ne merge jamais une feature directement dans `main`. Toujours passer par `develop` + tests.

---

### Phase 1 — Socle (Juin, semaines 1-2)

Ces branches sont à créer et merger dans l'ordre strict — chacune est prérequis de la suivante.

```bash
chore/infra-systemd-nginx-ssl
  # INFRA-01 à 04 : SMTP, systemd, build prod, Nginx, SSL

chore/infra-backup-scripts
  # INFRA-05,06,07 : backup PostgreSQL, update.sh, Framagit remote

feat/udn-branding
  # UDN-01 à 05 : terminologie, plan gratuit, personnalisation, redirect homepage

feat/orga-visual-distinction
  # ORG-01 : cercle 🫧 vs rôle (small-caps)

feat/orga-filters
  # ORG-02,03,04,05,06 : filtres, surbrillance, UserPlus/Minus, tri, cerclesOnly
```

---

### Phase 2 — Tensions & Gouvernance de base (Juin, semaines 3-4)

```bash
feat/tension-types-description
  # TENS-01,02,04,05,06 : types, description, badges, boutons Opé/Gouv, popup

feat/gouvernance-modes
  # GOUV-01,02,03 : modes Libre/Agile/Holacratique + permissions + modal holacratique

feat/gouvernance-evolutions
  # GOUV-04,05,06,14 : ThreadGovernanceEvolutions + useApplyGovernanceEvolutions + Valider directement + décisions
  # ⚠️ La plus longue de cette phase — prévoir 2 jours

feat/gouvernance-regles-communes
  # GOUV-07,08 : renommage Décision + suppression champ rules UI
```

---

### Phase 3 — Réunions (Juillet, semaines 1-2)

```bash
feat/meeting-step-types
  # REU-01 : nouveaux types d'étapes (Inclusion, Déclusion, Checklist, Indicateurs, NextSteps, Governance)
  # ⚠️ BDD + 4 patches GraphQL obligatoires

feat/meeting-triage-operationnel
  # REU-02,07,08,10,11 : triage opé refonte, création inline, import, pré-remplissage, cerclesOnly

feat/meeting-gouvernance-step
  # REU-03,GOUV-09,10,11,12,13 : étape gouvernance + fixes lecture seule + évolutions dans Traités
```

---

### Phase 4 — Prochains pas (Juillet, semaine 3)

```bash
feat/next-steps-base
  # PP-01,02 : table BDD + page Prochains pas

feat/next-steps-meeting
  # REU-05,06 : PP en réunion + layout Traités

feat/next-steps-enriched
  # PP-03 à 08 : contrainte UNIQUE, saveNextStep, filtres, labels, fixes v12
```

---

### Phase 5 — Tension opérationnelle enrichie (Juillet, semaine 4)

```bash
feat/tension-authority-member
  # TENS-07,08,09 : authorityCircleId + memberId + BDD + GraphQL + UI + auto-remplissage
  # ⚠️ 4 fichiers GraphQL à patcher manuellement
  # REU-09 : membre dans "Traités"
  # PP-05,06 : filtres PP par mes rôles + assignés
```

---

### Phase 6 — Gouvernance asynchrone (Août, semaines 1-2)

```bash
feat/governance-async-bdd
  # ASYNC-01 : tables governance_vote + governance_vote_token + permissions

feat/governance-async-backend
  # ASYNC-02,03,04,05,06 : routes + trigger + crons

feat/governance-async-frontend
  # ASYNC-07 à 13 : UI vote + asyncStatus + boutons + localStorage + filtres
```

---

### Phase 7 — Emails enrichis & Admin (Août, semaine 3)

```bash
feat/emails-crons
  # EMAIL-01 à 07 : toutes les notifications + CR enrichi + flag summarySent + fix URLs crons

feat/admin-dashboard
  # ADM-01,02,03,04 : tableau admin + impersonation + plans + export ISO

feat/import-glassfrog
  # IMP-01 : importeur Glassfrog

feat/integrations
  # INT-01,02 : Excalidraw + Meet UdN
```

---

### Phase 8 — Parité & Migration (Août, semaine 4 + Septembre)

```bash
chore/parity-check
  # Vérification feature par feature vs UdN
  # Tests de non-régression complets (plan de test v12)

chore/migration-script
  # Script SQL de migration BDD UdN → Yocoop
  # Tests sur environnement de staging

chore/migration-production
  # Bascule finale (dimanche soir)
  # Monitoring post-migration
```

---

## Features proposables à Godefroy (pull requests)

Ces features sont suffisamment génériques pour être proposées en PR upstream :

### Priorité haute — PR à ouvrir rapidement
1. **ORG-01** : Distinction visuelle cercle vs rôle — amélioration UX universelle
2. **TENS-01** : Types de tension (opé/gouv) — logique métier utile à tous
3. **GOUV-07** : Renommage Décision → Règle commune — plus explicite
4. **PP-01+02** : Table next_step + page Prochains pas — feature manquante dans le core
5. **EMAIL-02+03** : Rappel J-1 + CR réunion — fonctionnalité très demandée

### Priorité moyenne — PR après stabilisation
6. **GOUV-09** : Sauvegarde evolutionsData — fix bug important
7. **GOUV-10** : Tensions gouvernance validées lecture seule — UX cohérente
8. **ASYNC-01 à 13** : Gouvernance asynchrone complète — feature majeure
9. **REU-01** : Nouveaux types d'étapes — enrichissement réunions
10. **TENS-07** : Tension opé enrichie (autorité + responsable) — valeur métier forte

### Comment préparer une PR pour Godefroy
- Code propre, en anglais
- Textes UI via i18n (en.json + fr.json)
- Handlers avec préfixe `handle`
- Pas de hardcoding
- Test manual documenté
- Description claire du problème résolu

---

## Points d'attention techniques pour Yocoop

### Ce qu'on fait différemment de l'UdN (bonnes pratiques)

1. **i18n systématique** — tout texte UI passe par `fr.json` + `en.json`
2. **Codegen local** — WSL2 + nhost dev pour régénérer `graphql.generated.ts` proprement
3. **Branches feature/** — jamais committer directement sur main
4. **Tests avant merge** — plan de test à jour pour chaque feature
5. **Handlers `handle` prefix** — respecter les conventions RoleBase
6. **Chakra UI only** — pas de CSS brut dans le webapp

### Ce qu'on garde du travail UdN
- Toute la logique métier est documentée dans les MD v1→v13
- Les patches GraphQL sont documentés (on sait exactement quoi modifier)
- Les permissions Hasura sont documentées (filtres exacts)
- Les bugs connus et leurs solutions sont documentés

### Risques à anticiper

| Risque | Mitigation |
|--------|-----------|
| Godefroy change des fichiers qu'on a aussi modifiés | Merge conflicts → résoudre manuellement |
| Codegen local génère un fichier différent de celui patché manuellement | Vérifier diff + adapter |
| BDD UdN vs BDD Yocoop désynchronisées | Script migration exhaustif avec rollback |
| Features UdN non testées sur Yocoop avant migration | Plan de test complet Phase 8 |

---

*Document généré le 30/05/2026 — RoleBase Yocoop — À utiliser avec Claude Code sur le VPS perso*