- 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
5.6 KiB
Checklists métier par type d’opération (enso-front)
Principe
Les types d’opé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 n’existe pas d’endpoint 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 n’est affiché. |
Conditions d’affichage de la carte checklist
folder_purpose === client_operation(dossier d’opération réel, pas ligne démodp_structure_demo).operation_typedoit être un slug reconnu parisOperationTypeSlug(valeurs danslib/domain/operationTypes.ts). Un type saisi comme Autre (texte libre) ne correspond à aucune checklist embarquée.- 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 d’en-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 l’export. |
meta.legend |
Texte de légende (souvent une ligne commençant par DF :). |
meta.operationTypeSlug |
Optionnel ; rappel documentaire du slug (l’UI 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
- 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 :). - Export JSON :
Le slug doit exister danspython3 -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>OPERATION_TYPE_SLUGS(lib/domain/operationTypes.ts). - Registre : dans
enso/enso-front/src/lib/operationChecklists/registry.ts, importer le JSON et ajouter une ligne dansREGISTRY(même clé que le slug). - i18n : ajouter
case.operationChecklist.<slug>avec au minimumtitle,description,sourceLine,legendTitle, et si besoinsuggestedTitlepour le dialogue « Nouveau dossier » (paramètre{{companyName}}). Référence catalogue : I18N_ENSO_FRONT.md. - Titre suggéré (optionnel) : ajouter une entrée dans
OPERATION_FOLDER_SUGGESTED_TITLE_I18N(suggestedFolderTitles.ts) : slug → cléMessagePath(souventcase.operationChecklist.<slug>.suggestedTitle). Le dialogue « Nouveau dossier » appellesuggestedFolderTitleMessagePath; pas de branche par slug dansCompanyCasesTabsContent.
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.