smart_ide/services/docv/enso-docs/PLAN_REALISATION_DOCV_ENSO.md
Nicolas Cantu bc3c75e15f Add enso docs mirror under services/docv/enso-docs; docv integration docs
- Copy enso/docs tree to services/docv/enso-docs (refresh via cp -a from enso repo)
- Document mirror and refresh command in services/docv/README.md
- Ignore services/docv/target for local Rust workspace
- Track docv-service-integration, API docv.md, and related doc index updates
2026-04-03 17:26:35 +02:00

17 KiB
Raw Permalink Blame History

Plan de réalisation — docv / enso

Ce document décrit le plan de réalisation du monorepo enso pour docv (socle commun, backend Rust, front moderne, PostgreSQL dédiée) et enso (avocats). docv est hérité par enso pour les structures et données par défaut. Le projet reprend les règles de lint et les règles Cursor du projet (voir section 10).


1. Modèle dhéritage (récap)

Dimension docv enso
Base de données Sa BDD ; porte la structure et les données par défaut pour tous Sa BDD (hérite structure/défauts docv)
Textes (i18n) Ses textes ; porte la structure des textes et textes par défaut pour tous Ses textes (hérite structure/défauts docv)
Design / front Son design ; porte la structure des fronts et le design par défaut pour tous Son design (hérite structure/défauts docv)
Rôles Son paramétrage ; porte la structure des rôles et rôles par défaut pour tous Son paramétrage rôles (hérite docv)
Documents Son paramétrage ; porte la structure des documents et paramétrage par défaut pour tous Son paramétrage documents (hérite docv)
Dossiers Son paramétrage ; porte la structure des dossiers et paramétrage par défaut pour tous Son paramétrage dossiers (hérite docv)
Membres des rôles Son paramétrage ; porte la structure des membres et membres par défaut pour tous Son paramétrage membres (hérite docv)
API tiers Consomme API IA et API dancrage (serveur services, projet Bitcoin api-anchorage) Consomme API IA + ancrage côté back uniquement
  • docv : socle commun avec backend Rust, front moderne/propre, et PostgreSQL dédiée. Pour le code partagé back/front (validation, formatage, constantes, règles métier pures), utiliser WebAssembly (WASM) si cest plus pratique : une crate Rust partagée (ex. docv-shared) compilée en natif pour les backs et en WASM pour les fronts.
  • enso : hérite docv (structure + défauts) ; données, textes, design et paramétrages propres au périmètre avocat. Les API externes (ancrage, IA) sont consommées par les backends exclusivement ; les fronts nappellent que enso-back. LAPI dancrage est celle du serveur services (infra 4NK), projet Bitcoin api-anchorage. LAPI IA est développée dans le sous-module Git ai (https://git.4nkweb.com/4nk/ai.git), en TypeScript ; voir section 2ter du document darchitecture.

2. Phases et ordre de réalisation

Phase 0 — Cadrage et règles (préalable à tout code)

  • Environnement de développement : la machine dispose dOllama, Obsidian, AnythingLLM, Node.js, PostgreSQL, et de modèles préinstallés pour Ollama et AnythingLLM. LAPI IA consommée par les backends sappuie sur ce socle et est développée dans le sous-module ai.
  • Sous-module Git ai : importer le dépôt https://git.4nkweb.com/4nk/ai.git en sous-module (ex. git submodule add https://git.4nkweb.com/4nk/ai.git ai depuis la racine enso, après validation). Ce sous-module sert à développer lAPI IA en TypeScript et à interagir avec le socle IA (Ollama, AnythingLLM). Les backends docv et enso consomment cette API ; ils nappellent pas directement Ollama ou AnythingLLM.
  • Définir et versionner les règles Cursor du projet (.cursor/rules/) : reprise des règles qualité, lint, clôture évolution, correction derreurs (cf. section 10).
  • Créer la structure du monorepo (workspaces, docs/, deploy/, .secrets/) et le fichier de règles de lint (ESLint / équivalent Rust) aligné sur les règles Cursor (max-lines, max-lines-per-function, max-params, complexity, etc.).
  • Documenter dans docs/ : architecture (déjà en place), plan de réalisation (ce document), conventions de code et lint (référence aux règles Cursor).
  • Livrable : repo enso structuré, règles Cursor et lint appliquables, pas encore de code métier.

Phase 1 — docv (socle commun)

Objectif : application docv autonome, parité fonctionnelle avec la cartographie des écrans (docs/SCREENS_AND_FUNCTIONS_MAP.md) mais réécrite, avec backend Rust, front moderne, PostgreSQL dédiée, et portage des structures + données par défaut pour tous.

1.1 Backend docv (Rust)

  • Choix du stack Rust : framework HTTP (Axum / Actix), connexion PostgreSQL (SQLx ou Diesel), migrations, logging structuré, gestion derreurs typées.
  • Code partagé back/front : si plus pratique, introduire une crate Rust partagée (ex. docv-shared) compilable en natif (pour docv-back et enso-back) et en WASM (pour les frontends via wasm-bindgen / wasm-pack). Y mettre validation, formatage, constantes, règles métier pures ; utiliser WASM dès que cela évite la duplication et garantit la même logique partout.
  • Schéma BDD docv : reprendre les entités métier attendues (users, contacts, addresses, offices, office_folders, document_types, roles, office_roles, role_permissions_matrix, site_texts, system_configuration, etc.) en une structure agnostique (sans champs réservés à un métier notaire dans le noyau).
  • Migrations SQL versionnées ; données de référence par défaut : rôles, permissions, types de documents, structure des dossiers, textes site, configuration système (clés communes).
  • API REST (ou équivalent) : auth (agnostique, sans IdNot), CRUD dossiers, documents, membres, rôles, paramétrage documents/dossiers, textes (i18n), configuration.
  • API IA et API dancrage : les backends consomment lAPI dancrage (serveur services, projet Bitcoin api-anchorage) et lAPI IA (développée dans le sous-module ai, TypeScript, qui sappuie sur Ollama, AnythingLLM et les modèles préinstallés). Aucune de ces API nest appelée par les frontends (consommation back exclusivement).
  • Logging, validation des entrées, pas de secrets en dur, respect des règles Cursor (pas de fallback, erreurs remontées, pas de contournement).
  • Livrable : service Rust docv qui démarre, expose les endpoints, lit/écrit la BDD docv, et consomme les API ancrage (services, api-anchorage) et IA depuis le back uniquement.

1.2 Frontend docv (moderne / propre)

  • Stack front : choix (ex. Next.js ou autre) aligné avec « moderne et propre » ; pas de reprise à lidentique dune base front historique externe.
  • Code partagé avec le back : si une crate Rust partagée est compilée en WASM (ex. docv-shared), limporter dans le front (wasm-pack pkg/) pour validation, formatage, constantes ; utiliser WASM lorsque cest plus pratique que de dupliquer la logique en TypeScript.
  • Structure des écrans et fonctionnalités : couvrir toutes les fonctionnalités décrites dans la cartographie (dossiers, documents, rôles, membres, paramétrage, textes, etc.) mais réécrites (composants, hooks, appels API).
  • Design system docv : structure des thèmes, composants de base, tokens (couleurs, typo, espacements) ; design par défaut utilisable comme base par enso.
  • Consommation de lAPI docv ; gestion détat, erreurs, chargements ; textes via structure i18n (clés + défauts docv).
  • Respect des règles Cursor : helpers centralisés, pas de code mort, max-lines / max-lines-per-function, typecheck, lint.
  • Livrable : front docv utilisable en autonome sur la BDD et le back docv.

1.3 Données et paramétrage par défaut (docv)

  • BDD : seeds / migrations pour rôles par défaut, matrice de permissions par défaut, types de documents par défaut, structure dossiers par défaut, membres/rôles par défaut.
  • Textes : structure des clés (scope, locale, version) + jeu de textes par défaut (fr, en).
  • Configuration : clés system_configuration (ou équivalent) par défaut pour toute lapp.
  • Livrable : une instance docv déployée contient toutes les structures et données par défaut réutilisables pour enso.

Phase 2 — enso (avocats)

  • Création des répertoires enso-front et enso-back (mêmes langages et frameworks que docv : Rust pour le back, même stack front que docv-front).
  • Code : héritage de docv ; pas de duplication. Configuration : BDD enso, seeds, paramétrage (écrans, actions, options, rôles, types de documents/dossiers, textes, thème). Spécifiques : tout spécifique enso (écrans, actions, services, intégrations) doit être listé et confirmé avant implémentation ; voir docs/features/SPECIFIQUES_PROJETS.md.
  • BDD enso : schéma dérivé de la structure docv (migrations SQL, même modèle logique) ; données spécifiques avocat (pas de données notaire).
  • Backend enso (Rust) : même stack que docv-back ; consomme les API externes (ancrage : serveur services, api-anchorage ; IA) côté back uniquement ; logique métier avocat (dossiers, mandats, etc.) dans services/lawyer/ ; pas dIdNot, pas de Mailchimp/OVH/Stripe/API notaire.
  • Front enso : même stack que docv-front ; héritage du design system docv (structure + défauts) ; surcharges thème/couleurs/texte pour « enso » ; textes et paramétrages spécifiques avocat.
  • Textes, rôles, documents, dossiers, membres : structure identique à docv ; données et paramétrages spécifiques enso (avec possibilité dimporter les défauts docv en amont).
  • Livrable : application enso déployable avec sa BDD, ses textes, son design, ses paramétrages ; les API (ancrage, IA) sont consommées par enso-back uniquement.

Phase 3 — hors périmètre actuel du dépôt

Produit métier notaire : non suivi dans ce clone pour linstant. Orientation : docs/HORS_PERIMETRE_NOTAIRE.md.


Phase 4 — Convergence et qualité

  • Documentation : mettre à jour docs/ARCHITECTURE_DOCV_ENSO.md et docs/PLAN_REALISATION_DOCV_ENSO.md avec létat réel (Rust, stack front, schémas BDD).
  • Règles Cursor et lint : vérifier que tout le code docv et enso respecte les règles ; corriger les écarts ; pas de contournement de lint.
  • Déploiement : scripts dans deploy/ pour build et déploiement de docv et enso (avec leurs BDD respectives).
  • Clôture : pour chaque livrable, appliquer le workflow de clôture (helpers, i18n, fallback, modifications similaires, optimisation, sécurité, code mort, lint, types, compilation, documentation).

3. Dépendances entre phases

Phase 0 (Cadrage) ──────────────────────────────────────────────────────────┐
       │                                                                     │
       ▼                                                                     │
Phase 1 (docv) ───► Backend Rust + BDD + consommation API ancrage (services, api-anchorage) + API IA                       │
       │           Front moderne + design system + structure textes/rôles/…   │
       │                                                                     │
       ├────────────────────────────────────────────────────────────────────┤
       ▼                                                                     │
Phase 2 (enso) ───► BDD enso, back enso, front enso (héritent docv)         │
       │                                                                     │
       ▼                                                                     │
Phase 4 (Convergence) ──► Doc, lint, déploiement, clôture                   │
  • Phase 1 doit être suffisamment avancée (structure BDD + API + design system) pour quenso puisse « hériter » (structure + défauts).
  • Les backends docv et enso consomment lAPI dancrage (serveur services, projet api-anchorage) et lAPI IA (sous-module ai, TypeScript, socle Ollama/AnythingLLM) ; ces API doivent être accessibles et contrats stables avant intégration.

4. Récapitulatif des livrables par phase

Phase Livrables principaux
0 Monorepo structuré ; règles Cursor et lint définies et appliquées ; docs darchitecture et plan à jour.
1 Backend docv (Rust), crate docv-shared (natif + WASM si pertinent), BDD docv (structure + données par défaut), consommation API ancrage (services, api-anchorage) + API IA (sous-module ai, TypeScript, socle Ollama/AnythingLLM ; back uniquement) ; front docv (écrans complets, design system, textes/rôles/documents/dossiers/membres par défaut ; pas dappel direct aux API externes).
2 BDD enso ; backend enso (Rust, consomme API ancrage + IA côté back uniquement) ; front enso (même stack que docv-front, hérite design/textes/paramétrages docv, surcharges avocat).
3 — hors périmètre actuel du dépôt — voir HORS_PERIMETRE_NOTAIRE.md.
4 Documentation à jour ; conformité Cursor/lint ; scripts de déploiement ; clôture des évolutions.

5. Règles Cursor et lint à respecter

Le projet doit reprendre les règles de lint et les règles Cursor du projet. À intégrer dans .cursor/rules/ et dans la config lint (ESLint pour le front/TypeScript, Clippy / format pour Rust) :

  • Général : répondre en français ; code, documentation et commits en anglais ; ne pas écrire en base (scripts dédiés) ; ne pas masquer les sorties ; pas de certificats auto-signés ; pas de modification des variables denvironnement ; pas dalternative HTTP à HTTPS ; validation avant déploiement/certificats ; pas dexécution en arrière-plan.
  • Processus : priorité aux questions posées ; validation avant implémentation ; identifier et corriger la root cause avant de corriger les bugs ; pas de contournement.
  • Qualité : clôture systématique (helpers, i18n, fallback, modifications similaires, optimisation, sécurité, code mort, lint, types, compilation, documentation) ; vérification des fichiers (logs, code mort, commentaires) ; pas de bypass lint par commentaires.
  • Code : factorisation et réutilisation ; pas de code mort ; max 250 lignes/fichier, 40 lignes/fonction ; max-params 4, max-depth 4, complexity 10, max-nested-callbacks 3 ; pas de lazy imports ; imports par défaut nommés ; types de retour explicites ; pas de any ; gestion derreurs explicite, pas de fallback implicite.
  • Sécurité : validation des entrées ; pas de secrets en dur ; pas de log de données sensibles ; soft-delete pris en compte.
  • Documentation : mise à jour de docs/ (features, fixKnowledge, architecture) ; rationalisation ; pas de doublons.
  • Commits : format avec Motivations, Root causes, Correctifs, Evolutions, Pages affectées ; auteur 4NK ou Nicolas Cantu uniquement (pas de Co-authored-by Cursor).

Pour le backend Rust : définir des règles équivalentes (format, Clippy, pas de unwrap en production, erreurs typées, logging structuré) et les documenter dans docs/.

Règles de coding spécifiques au projet (placement du code, API, auth, paramétrage, conventions, interdictions) : docs/REGLES_CODING_PROJET.md.


6. Références

  • Plan de développement (jalons et ordre des travaux) : docs/PLAN_DEVELOPPEMENT.md
  • Architecture, structure détaillée de chaque sous-projet et API externes / socle IA : docs/ARCHITECTURE_DOCV_ENSO.md (sections 2bis, 2ter, 3 et 3.1 à 3.4)
  • Point dentrée documentation docv : docs/docv/README.md (périmètre docv, zones 115, ordre de réalisation Phase 1)
  • Point dentrée documentation enso : docs/enso/README.md (périmètre enso, zones 115 + 17, correspondance spécifiques E1E31, liens specs/IMPL/référentiel)
  • Périmètre notaire (hors dépôt actuel) : docs/HORS_PERIMETRE_NOTAIRE.md
  • Cartographie écrans et fonctions : docs/SCREENS_AND_FUNCTIONS_MAP.md (wording générique, référence pour docv et enso)
  • Spécifications par fonctionnalité : docs/features/specs/README.md (référentiel des specs par zone : objectif, écrans, actions, règles métier, API, déploiement, analyse)
  • Référentiel écrans et actions : docs/features/REFERENTIEL_ECRANS_ACTIONS.md (identifiants stables, routes, actions 18.x)
  • Description technique dimplémentation : docs/features/implementation/README.md (IMPL_xx par zone : routes, front, back, BDD)
  • Règles Cursor : à créer dans .cursor/rules/ en reprenant les modèles qualité / lint / clôture / correction derreurs déjà utilisés sur les dépôts 4NK.
  • Référence fonctionnelle : cartographie et specs dans docs/ (sans dépendre dun dépôt applicatif externe dans ce clone).
  • Sous-module API IA : https://git.4nkweb.com/4nk/ai.git (TypeScript, interaction avec Ollama, AnythingLLM)
  • Grands principes IA (dossier ↔ workspace AnythingLLM, librairies, workflow cloud optionnel, Cursor instrumenté) : docs/features/IA_GRANDS_PRINCIPES.md