smart_ide/services/docv/enso-docs/features/OPERATION_CHECKLISTS.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

5.6 KiB
Raw Blame History

Checklists métier par type dopération (enso-front)

Principe

Les types dopération catalogués (folders.operation_type = slug : cession, age, …) peuvent avoir une checklist embarquée : fichier JSON sous enso/enso-front/src/lib/operationChecklists/data/<slug>.json, enregistré dans registry.ts, textes UI sous case.operationChecklist.<slug>.* dans les catalogues i18n (messages.fr.ts / messages.en.ts), et affichage via CaseOperationChecklistCard sur la fiche dossier.

Il nexiste pas dendpoint docv pour ces listes : elles sont versionnées dans le dépôt avec le front, comme les traductions.

Parcours utilisateur

Étape Composant / module Règle
Page société, onglet Dossiers CompanyCasesTabsContent Dialogue Nouveau dossier : sélection du type (OPERATION_TYPE_SLUGS). Si le titre est encore vide et que suggestedFolderTitleMessagePath(slug) renvoie une clé i18n, le titre est prérempli (ex. cession).
Fiche dossier (CaseDetail) CaseDetailBody Rend CaseOperationChecklistCard avec le Case courant. La carte appelle operationChecklistBundleForCase(caseItem) ; si null, rien nest affiché.

Conditions daffichage de la carte checklist

  1. folder_purpose === client_operation (dossier dopération réel, pas ligne démo dp_structure_demo).
  2. operation_type doit être un slug reconnu par isOperationTypeSlug (valeurs dans lib/domain/operationTypes.ts). Un type saisi comme Autre (texte libre) ne correspond à aucune checklist embarquée.
  3. Le slug doit avoir une entrée dans REGISTRY (registry.ts).

Les libellés de la checklist (titres de sections, items) proviennent du JSON ; la légende DF/NA/DM/CO et les textes den-tête de carte viennent du JSON (légende) et des clés i18n (title, description, etc.).

Fichier JSON (OperationChecklistData)

Champ Rôle
meta.sourceFile Nom du fichier source (Excel), affiché dans la ligne « Fichier source ».
meta.sheet Feuille Excel utilisée pour lexport.
meta.legend Texte de légende (souvent une ligne commençant par DF :).
meta.operationTypeSlug Optionnel ; rappel documentaire du slug (lUI utilise le slug déduit du dossier).
blocks Liste ordonnée de blocs section, subsection ou item (ref + label pour les items).

Module lib/operationChecklists/

Export (index.ts) Usage
Types OperationChecklistBlock, OperationChecklistData Contrat du JSON.
operationChecklistBundleForCase Résolution checklist + slug pour un Case.
operationChecklistSlugs Liste des slugs ayant un fichier dans le registre (inspection / outils).
OPERATION_FOLDER_SUGGESTED_TITLE_I18N, suggestedFolderTitleMessagePath Carte slug → clé MessagePath pour le titre proposé à la création du dossier.

Ajouter une checklist pour un nouveau type

  1. Excel (ou autre source) : préparer une feuille avec la même convention que la checklist cession (colonne A : numéro de section / sous-section / item, B : libellé ; légende en ligne commençant par DF :).
  2. Export JSON :
    python3 -m venv .venv
    .venv/bin/pip install openpyxl
    .venv/bin/python3 tools/export_operation_checklist.py \
      --input docs/<votre-fichier>.xlsx \
      --sheet <NomFeuille> \
      --output enso/enso-front/src/lib/operationChecklists/data/<slug>.json \
      --operation-type-slug <slug>
    
    Le slug doit exister dans OPERATION_TYPE_SLUGS (lib/domain/operationTypes.ts).
  3. Registre : dans enso/enso-front/src/lib/operationChecklists/registry.ts, importer le JSON et ajouter une ligne dans REGISTRY (même clé que le slug).
  4. i18n : ajouter case.operationChecklist.<slug> avec au minimum title, description, sourceLine, legendTitle, et si besoin suggestedTitle pour le dialogue « Nouveau dossier » (paramètre {{companyName}}). Référence catalogue : I18N_ENSO_FRONT.md.
  5. Titre suggéré (optionnel) : ajouter une entrée dans OPERATION_FOLDER_SUGGESTED_TITLE_I18N (suggestedFolderTitles.ts) : slug → clé MessagePath (souvent case.operationChecklist.<slug>.suggestedTitle). Le dialogue « Nouveau dossier » appelle suggestedFolderTitleMessagePath ; pas de branche par slug dans CompanyCasesTabsContent.

Fichiers clés

Fichier Rôle
lib/operationChecklists/types.ts Types OperationChecklistBlock, OperationChecklistData
lib/operationChecklists/registry.ts REGISTRY, operationChecklistBundleForCase, operationChecklistSlugs
lib/operationChecklists/suggestedFolderTitles.ts OPERATION_FOLDER_SUGGESTED_TITLE_I18N, suggestedFolderTitleMessagePath
lib/operationChecklists/index.ts Ré-exports publics
lib/operationChecklists/data/*.json Données par slug
screens/case/CaseOperationChecklistCard.tsx Carte réutilisable
tools/export_operation_checklist.py Export Excel → JSON

Limite fonctionnelle actuelle

La checklist est consultative : pas de persistance des coches DF/NA/DM/CO ni synchronisation avec user_pending_documents ou les pièces du dossier. Lévolution cible (workflow documentaire) est décrite côté spec zone 18 (SPEC_18_operation.md §6).

Référence cession

Détail métier et fichier source Excel : CHECKLIST_CESSION_JURIDIQUE_SOCIAL_FISCAL.md.