- 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
25 KiB
Spec : Opération (cabinet/office)
Zone : 18 — Opération (cloisonnée au cabinet/office)
Référence cartographie : nouvelle zone, actions 18.84 à 18.96.
1. Objectif
- Gérer les opérations au sein du cabinet/office : création (peut créer une société), consultation, modification, avec société(s) liée(s), contacts, documents et commentaires.
- Périmètre cloisonné : aucune donnée n’est partagée hors du cabinet/office ; accès selon rôles internes (accès interne, restreint au dossier, secret avocat/notaire associé).
- Extraction de données depuis KBIS, répartition IA de fichiers ZIP par type de document, workflow documentaire étendu.
2. Périmètre et relations
2.1 Homogénéisation : Dossier = Société = Entreprise
Un dossier est une société qui est une entreprise. Homogénéisation sous le terme société.
- Une société peut être société mère ou société fille d’une société mère.
- L’archivage est au niveau des sociétés (dossiers).
- Tous les objets ont un
uidtechnique (non affiché) ; les numéros (dossier, comptable, etc.) sont des références métier.
2.2 Hiérarchie des entités
| Entité | Relation | Description |
|---|---|---|
| Société | 1 société = 1 entité + parent optionnel (société mère) | Dossier/entreprise ; niveau archivage ; peut avoir des sociétés filles ; données dans table societies |
| Opération | 1 opération appartient à une société (société dossier) | society_uid = société dossier qui contient l’opération ; une opération peut créer une nouvelle société (qui devient société liée et société fille de la société dossier) |
| Société liée | 1 opération → N sociétés (jointure) | Une société liée = une société ; « lié » = jointure à un objet commun ; peut être référence vers société existante OU société créée pour l’opération |
| Document | 1 document = plusieurs fichiers + statut workflow | Selon config type : rattaché à l’opération OU à la société ; N-N avec sociétés liées |
| Fichier | 1 fichier = 1 fichier + document parent | Commentaires, certificats d’ancrage, template, CNIL |
| Contact | 1 contact = 1 personne + rôles opération + rôles entreprise | Un utilisateur peut avoir plusieurs contacts ; un contact peut avoir des rôles différents selon la société |
2.3 Niveaux d’accès aux commentaires
| Niveau | Libellé | Qui peut accéder |
|---|---|---|
internal |
Accès interne | Tous les membres du cabinet |
restricted |
Restreint au dossier | Gestionnaires de l’opération (cabinet avocat ou notaire) |
secret |
Secret | Avocat et avocat associé, ou Notaire et notaire associé uniquement |
3. Opération — Description
3.1 Champs
| Champ | Obligatoire | Éditable | Description |
|---|---|---|---|
| Titre | Oui | Oui | Libellé de l’opération |
| Date | Oui | Oui | Date de l’opération (par défaut : date du jour) |
| Numéro de dossier | Non | Oui | Référence métier (dossier) |
| Numéro comptable | Non | Oui | Référence métier (comptable) |
| Entreprise | Oui (coche) | Oui | Indique si l’opération concerne au moins une société liée ; certaines opérations ne concernent que des particuliers sans société |
| Type d’opération | Oui | Oui | Liste paramétrable : cession, approbation des comptes, autres + bouton ajout |
| Commentaires | Non | Oui | Ajout/modification/suppression ; niveau d’accès (interne, restreint au dossier, secret) |
3.2 Types d’opération
Liste paramétrable par office. Valeurs par défaut : cession, approbation des comptes, autres. Bouton d’ajout pour nouveaux types.
3.3 Étapes par type d’opération (distinctes des étapes de création)
Deux concepts distincts :
- Étapes de création d’opération (section 7) : infos → contacts → affectations ZIP → fichiers de synthèse — ordre fixe, pas de retour.
- Étapes par type d’opération : ex. promesse, acte, AGE/AGO (Assemblées Générales Extra/Ordinaire) — séquence métier propre au type ; une opération est à tout moment dans une étape donnée.
Les AGE/AGO ont un workflow d’édition du PV (procès-verbal).
Passage d’étape : automatique en fonction des actions réalisées (boutons).
État de l’opération : état global propre à l’opération (ouverte, en cours, clôturée, etc.), distinct de l’étape et des états des documents.
Le paramétrage (droits, types de documents, états/workflow) dépend aussi des étapes du type d’opération.
4. Société liée — Description
Une société liée = une société ; « lié » désigne la jointure à un objet commun (opération). Les données sont dans la table societies ; la liaison se fait via une table de jointure (operation_uid, society_uid). Une société liée peut être une référence vers une société existante ou une société créée pour l’opération.
4.1 Champs
| Champ | Obligatoire | Source | Description |
|---|---|---|---|
| KBIS | Non | Document uploadé | Extraction des données pour compléter les champs |
| Type | Oui | Saisie / extraction | Groupe ou Entreprise |
| Imposition | Oui | Saisie | IS ou IR |
| SCI | Oui | Saisie | Oui ou Non |
| Numéro SIRET | Oui | Extraction KBIS / saisie | Obligatoire |
| Type d’activité | Oui | Liste paramétrable | Particulier (par défaut), boulangerie, etc. + bouton ajout |
| Commentaires | Non | Saisie | Niveau d’accès : interne, restreint au dossier, secret |
4.2 Extraction KBIS
Document attendu (optionnel). Extraction des champs pour pré-remplissage : SIRET, dénomination, forme juridique, adresse, etc.
5. Contacts — Description
5.1 Modèle de contact
1 contact = 1 contact avec :
- Rôles opération : plusieurs rôles et sous-rôles opération par opération, dans plusieurs opérations.
- Rôles entreprise : plusieurs rôles et sous-rôles entreprise par société, dans plusieurs sociétés.
Un contact peut avoir plusieurs sous-rôles pour la même opération. Les rôles et sous-rôles sont cumulatifs.
5.2 Champs
| Champ | Obligatoire | Description |
|---|---|---|
| Nom | Oui | Nom de famille |
| Prénom | Oui | Prénom |
| Oui | Adresse email | |
| Téléphone | Oui | Numéro de téléphone |
| Rôles opération | Oui | Rôle(s) et sous-rôle(s) dans l’opération (cumulatifs) |
| Rôles entreprise | Non | Rôle(s) et sous-rôle(s) dans la société (cumulatifs) |
| Actionnaire | Non | Coche + nombre de parts |
| Commentaires | Non | Niveau d’accès : interne, restreint au dossier, secret |
5.3 Rôles principaux et sous-rôles
| Rôle principal | Sous-rôles possibles |
|---|---|
| Client | client 1, 2, 3… ; cabinet d’avocat ; office notarié ; commissaire aux comptes ; comptable ; DAF ; dirigeant ; agence ; diagnostiqueur ; banque ; vendeur ; acheteur |
| Cabinet d’avocat | avocat ; avocat associé ; collaborateur ; secrétariat ; stagiaire ; commissaire aux comptes ; comptable ; DAF ; dirigeant |
| Office notarié | notaire ; notaire associé ; collaborateur ; secrétariat ; stagiaire ; commissaire aux comptes ; comptable ; DAF ; dirigeant |
| Confrère avocat | avocat ; avocat associé ; collaborateur ; secrétariat ; commissaire aux comptes ; comptable ; DAF ; dirigeant |
| Confrère notaire | notaire ; notaire associé ; collaborateur ; secrétariat ; commissaire aux comptes ; comptable ; DAF ; dirigeant |
| Infogreffe | — |
| Mairie | — |
| INSEE | — |
| Dataroom | invité — rôle externe ; on peut lui demander occasionnellement des documents ou lui en fournir (ex. cession). Quand on ajoute un membre dans un rôle/sous-rôle à un utilisateur dans un dossier et qu’on lui envoie/demande/valide/refuse un document → il reçoit un mail pour se connecter avec confirmation SMS (pas de mot de passe) |
5.4 Rôles entreprise (par société)
avocat, avocat associé, notaire, notaire associé, collaborateur, secrétariat, commissaire aux comptes, comptable, DAF, dirigeant.
5.5 Gestion des doublons
- Critères : email, nom+prénom, ou autre selon configuration.
- Comportement : si nouveau contact identique à un existant → pas de création ; alerte pour choix manuel (sélectionner l’existant ou fusion avec l’existant).
6. Documents — Description
6.1 Document (entité)
| Attribut | Description |
|---|---|
| Type de document | Liste paramétrable + bouton ajout |
| Rattachement | Selon config du type de document : à l’opération OU à la société (pas à la société parente) |
| Sociétés liées | Un document peut avoir plusieurs sociétés liées (N-N) |
| Fichiers | Plusieurs fichiers par document |
| Commentaires | Niveau d’accès : interne, restreint au dossier, secret |
| Statut | Voir workflow (section 6.2) |
| Supprimé | Oui / Non (logique) |
| Signé | Oui / Non ; signé par défaut = éviter validation/refus |
| Dates des statuts | Horodatage par transition |
| Dépositaire attendu | Rôle attendu pour le dépôt |
| Validé par défaut | Oui / Non |
| Droits | Par rôle, sous-rôle, statut dossier, type opération, étape, type activité, type document, statut document (héritage) |
Note : L’archivage est au niveau des sociétés (dossiers), pas des documents.
6.2 Workflow documentaire — Transitions
| Chemin | Description |
|---|---|
| à demander → exclure → final | Vide sans doc, sans demande ; exclusion des docs attendus par le notaire ou l’avocat |
| à demander → demandé → à envoyer → envoyé → validé/refusé → final | Documents envoyés par les autres que membres ; hors cabinet/office gestionnaire |
| à demander → demandé → à envoyer → envoyé → téléchargé → final | Documents envoyés par les membres ; hors cabinet/office gestionnaire |
| à demander → demandé → à envoyer → envoyé → final | Documents envoyés sans validation particulière requise |
Configuration des workflows : par rôle, type d’opération, étape, type d’activité, type de document, état du document, état de l’opération (héritage pour le rôle).
Par défaut : tout est d’abord « à demander » ; rôle client et sous-rôle client : leurs membres doivent envoyer les documents reçus ; membres des cabinets/offices : valident, refusent, excluent, suppriment, relancent ou demandent.
6.3 Preview / vignette
En fonction des formats de fichier, utiliser la solution technique la plus adaptée pour la génération des vignettes.
6.4 Fichier (entité)
| Attribut | Description |
|---|---|
| Document parent | Référence au document |
| Commentaires | Niveau d’accès |
| Certificats d’ancrage | Blocage / preuve |
| Template | Oui / Non |
| Variables template | Optionnel |
| Type d’informations | Classification |
| CNIL | Délai d’expiration |
| Utilisateurs (rôles) des données | Liste + usage + justification |
6.5 Types de documents attendus (liste paramétrable)
- Fiche INSEE (option)
- Annonce BODACC (option)
- Droit de préemption (mairie)
- État des comptes (par années, option)
- Certificat d’urbanisme (option)
- Liste de salariés (option)
- Autres : liste paramétrable + bouton ajout
6.6 Upload ZIP et répartition IA
- Option : upload d’un ZIP de dossiers et fichiers.
- L’IA analyse et affecte automatiquement chaque fichier au type de document approprié.
6.7 Association variables et sources
- Configuration : liste d’association variables ↔ source des informations (type d’informations) ↔ type de document contenant le fichier source.
- Usage : génération de documents à éditer depuis des fenêtres sur serveur OpenOffice/OnlyOffice local.
6.8 Édition de documents à envoyer par le notaire
Tout document à envoyer par le notaire peut faire l’objet d’une édition :
- Choix du modèle
- Génération du document .docx par IA (templates + variables + tout le contenu de l’opération + IA)
- Document .docx en visualisation sur un serveur OpenOffice
7. Étapes après création
Ordre fixe : 1. infos → 2. contacts → 3. affectations ZIP → 4. fichiers de synthèse. Pas de retour possible sur une étape validée pour corriger.
7.1 Validation et correction des données complétées automatiquement
- Informations : validation et correction des champs pré-remplis par extraction (KBIS, documents, etc.).
- Contacts : validation et correction des contacts complétés automatiquement (extraction depuis documents, doublons cabinet).
- Affectations documents ZIP : validation et correction des affectations automatiques des documents issus du ZIP (répartition IA par type de document).
7.2 Validation des fichiers de synthèse
| Fichier de synthèse | Description |
|---|---|
| Fiche entreprise | Synthèse des données entreprise |
| Liste des mouvements du capital | Historique des mouvements de capital |
| Liste des associés | Liste des associés/actionnaires |
| Liste des salariés | Liste des salariés |
| Liste des baux | Liste des baux |
| Liste des contrats | Liste des contrats |
Génération/complétion : si la société (dossier ou liée, n’importe) n’a pas encore de synthèse → elle est générée automatiquement ; sinon elle est complétée (écran + données en BDD).
Périmètre : les 6 fichiers de synthèse sont définis par société (chaque société a sa propre synthèse).
8. Accès à l’opération après corrections/validations
8.1 Structure des onglets
- Niveau 1 : onglets par rôle.
- Niveau 2 : dans chaque rôle, onglets par sous-rôle.
- Niveau 3 : dans chaque sous-rôle, onglets des membres de ce sous-rôle (selects multiples ou cases à cocher, selon ergonomie).
Membres : contacts de l’opération ayant ce rôle/sous-rôle + utilisateurs du cabinet (collaborateurs) affectés au dossier. Rôles et sous-rôles sont affectés aux contacts saisis et extraits. À la création du dossier : le créateur du dossier + choix des collaborateurs sur le dossier.
8.2 Accès aux onglets
- Seuls les rôles des cabinets d’avocats et des offices notariaux ont accès aux onglets complets.
- Les autres (clients, dataroom invité, infogreffe, mairie, INSEE, etc.) n’ont que la vue des documents qui les concernent : envoyés, reçus, ou accès en visualisation.
8.3 Liste des opérations
Opérations dans lesquelles la personne connectée a un rôle.
8.4 Tableau des documents par onglet
Dans chaque onglet (rôle / sous-rôle / membre) :
- Colonnes : document, type, sociétés liées, état, dates des statuts.
- Actions possibles (selon droits par rôle, sous-rôle, statut dossier, type opération, étape, type activité, type document, statut document) :
- Demande, Relance, Exclusion du document, Modification, Suppression, Visualisation (vignette preview), Téléchargement, Validation, Refus.
9. Écrans et routes
| Écran | Route | Identifiant stable | Fonctions attendues |
|---|---|---|---|
| Liste des opérations | /operations |
operations.list |
Liste paginée, filtres, tri, création |
| Détail opération | /operations/[operationUid] |
operations.detail |
Fiche complète : en-tête, société(s) liée(s), contacts, documents ; onglets rôle → sous-rôle → membres |
| Création opération | /operations/create |
operations.create |
Formulaire opération + entreprise + contacts + documents |
| Édition opération | /operations/[operationUid]/edit |
operations.edit |
Modification des sections |
| Validation/correction (post-création) | /operations/[operationUid]/validate |
operations.validate |
Validation infos, contacts, affectations ZIP, fichiers de synthèse |
| Société liée (dans opération) | section ou modal | operations.society |
Formulaire société liée, extraction KBIS |
| Contacts (dans opération) | section ou modal | operations.contacts |
Liste, ajout, modification, suppression ; alerte doublon |
| Documents (dans opération) | onglets rôle → sous-rôle → membres | operations.documents |
Tableau documents ; états ; actions selon droits ; seuls cabinets/offices ont onglets complets ; autres : vue documents les concernant |
| Types d’opération (paramétrage) | /settings/operation-types |
operation-types.list |
Liste, création, édition ; définition des étapes par type |
| Étapes par type d’opération (paramétrage) | /settings/operation-types/[typeUid]/steps |
operation-type-steps.list |
Liste des étapes, création, édition, ordre |
| Types d’activité (paramétrage) | /settings/activity-types |
activity-types.list |
Liste, création, édition |
10. Règles métier et contraintes
- Cloisonnement : toutes les données restent dans le cabinet/office ; pas de partage externe.
- Archivage : au niveau des sociétés (dossiers), pas des opérations ni des documents.
- Hiérarchie : société = dossier = entreprise ; société → opérations ; opération peut créer une nouvelle société ; document rattaché à l’opération OU à la société selon config.
- Création opération : pas obligatoirement dans une société existante ; pas d’opération orpheline — à minima le SIRET (société avec au moins SIRET).
- Validation : titres, dates, SIRET, rôles obligatoires selon les champs définis ; pas de fallback silencieux.
- Contacts : doublon → pas de création, alerte pour choix manuel.
- Documents : workflow configuré par rôle, type opération, étape, type activité, type document, état document, état opération (héritage).
- Extraction KBIS : appel service back (IA ou parsing) ; erreur explicite si échec.
- Répartition ZIP : appel service IA back ; proposition d’affectation modifiable par l’utilisateur.
- Post-création : séquence fixe (infos → contacts → affectations ZIP → fichiers synthèse) ; pas de retour sur étape validée.
11. Paramétrage
- Types d’opération : liste par office, ordre d’affichage.
- Étapes par type d’opération : chaque type d’opération définit une séquence d’étapes (paramétrable).
- Types d’activité : liste par office, ordre d’affichage.
- Types de documents : extension de la zone 3 avec rattachement (opération ou société) ; par étape : les types de documents attendus peuvent varier selon l’étape.
- Rôles et sous-rôles : liste paramétrable (client, cabinet avocat, office notarié, confrère avocat, confrère notaire, infogreffe, mairie, INSEE, dataroom).
- Droits : par rôle principal, par sous-rôle, par statut du dossier (statut de la société : archivée, etc.), par type d’opération, par étape, par type d’activité, par type de document, par statut du document.
- Héritage : les règles sont définies à tous les niveaux ; par défaut le niveau du dessus s’applique.
- Workflow / états : configuration par rôle, type d’opération, étape, type d’activité, type de document, état du document, état de l’opération (ouvert, en cours, clôturé, etc. — global à l’opération, distinct des documents/étapes).
- Référence : PARAMETRAGE_ECRANS_ACTIONS.md.
12. Données et API
12.1 Entités
Society(uid, parent_society_uid, office_uid, …) — dossier = société = entreprise ; société mère ou fille ; niveau archivageOperation(uid, society_uid, office_uid, title, date, case_number, accounting_number, has_company, operation_type_uid, current_step_uid, status (état global : ouvert, en cours, clôturé), created_at, updated_at) — société dossier ; peut créer une société (devient société liée + société fille) ; étape couranteOperationTypeStep(uid, operation_type_uid, label, order) — étapes par type d’opérationOperationComment(uid, operation_uid, content, access_level, author_uid, created_at)OperationSociety(operation_uid, society_uid) — table de jointure ; une société liée = une société (données danssocieties)SocietyComment(uid, society_uid, content, access_level, author_uid, created_at) — commentaires sur la sociétéContact(uid, office_uid, last_name, first_name, email, phone, created_at) — réutilisable ; un utilisateur peut avoir plusieurs contactsOperationContact(uid, operation_uid, contact_uid, roles_operation, sub_roles_operation, is_shareholder, shares_count, created_at) — rôles/sous-rôles cumulatifsSocietyContact(uid, society_uid, contact_uid, roles_enterprise, sub_roles_enterprise, created_at) — rôles entreprise par sociétéContactComment(uid, operation_contact_uid ou society_contact_uid, content, access_level, author_uid, created_at)UserContact(user_uid, contact_uid) — un utilisateur peut avoir plusieurs contactsOperationDocument(uid, operation_uid, society_uid?, document_type_uid, attachment_target, status, deleted, signed, expected_depositor_role, validated_by_default, created_at, updated_at) — attachment_target : operation | societyOperationDocumentSociety(operation_document_uid, society_uid) — N-N : document → N sociétés liéesOperationDocumentFile(uid, operation_document_uid, file_ref, template, template_variables, info_type, cnil_expiry, created_at)OperationType(uid, office_uid, label, order)ActivityType(uid, office_uid, label, order)
Identifiants : tous les objets ont un uid technique (non affiché) ; numéros = références métier.
12.2 Endpoints (principaux)
GET /operations— opérations où la personne connectée a un rôleGET/POST /societies/[societyUid]/operations,GET/PATCH/DELETE /operations/[operationUid]— une opération peut créer une sociétéGET/POST /operations/[operationUid]/societies,GET/PATCH/DELETE /operations/[operationUid]/societies/[societyUid]— sociétés liéesPOST /operations/[operationUid]/validate— étapes post-création (ordre fixe, pas de retour)GET/POST /operations/[operationUid]/contacts,GET/PATCH/DELETE /operations/[operationUid]/contacts/[contactUid]GET /contacts?q=(recherche cabinet, alerte doublon, pas de création si identique)GET/POST /operations/[operationUid]/documents,GET/PATCH/DELETE /operations/[operationUid]/documents/[documentUid]GET/PATCH /operations/[operationUid]/documents/[documentUid]/societies(liaison N-N sociétés liées)POST /operations/[operationUid]/documents/upload-zip(répartition IA)POST /operations/[operationUid]/societies/[societyUid]/extract-kbisGET/POST /operation-types,GET/PATCH/DELETE /operation-types/[uid]GET/POST /operation-types/[uid]/steps,GET/PATCH/DELETE /operation-types/[uid]/steps/[stepUid](étapes par type d’opération)GET/POST /activity-types,GET/PATCH/DELETE /activity-types/[uid]
13. Sécurité et accessibilité
- Autorisation : accès aux opérations où la personne a un rôle ; contrôle du niveau d’accès (interne, restreint au gestionnaire de l’opération, secret) selon rôle.
- Invités dataroom : connexion par mail + confirmation SMS (pas de mot de passe) lorsqu’un document leur est envoyé/demandé/validé/refusé.
- Données sensibles : commentaires secret visibles uniquement avocat/avocat associé ou notaire/notaire associé.
- Accessibilité : formulaires avec labels, erreurs associées ; listes avec en-têtes ; boutons identifiables.
14. Impacts
- Front : pages operations (liste, détail, création [créateur + collaborateurs], édition), page validation/correction post-création, onglets rôle → sous-rôle → membres (contacts + collaborateurs) ; édition documents .docx (modèle, IA, OpenOffice) ; modals ; paramétrage.
- Back : modules societies, operations, operation_society (jointure), contacts, operation_documents ; services extraction KBIS, répartition IA, génération fichiers de synthèse, édition documents ; repositories.
- Shared : types Operation, Society, Contact, OperationDocument, statuts, niveaux d’accès.
- Dépendances : zones 3 (types de documents), 6 (rôles), 17 (IA pour extraction et répartition).
15. Modalités de déploiement
- Prérequis : migrations pour tables societies, operations, operation_society (jointure), operation_contacts, society_contacts, user_contacts, operation_documents, operation_document_societies, operation_document_files, operation_types, operation_type_steps, activity_types ; seeds pour types par défaut.
- Déploiement standard ; pas d’étape spécifique hors flux standard.
16. Modalités d’analyse
- Recette : création opération complète (entreprise, contacts, documents) ; extraction KBIS ; upload ZIP et répartition IA ; validation/correction post-création (infos, contacts, affectations ZIP, fichiers de synthèse) ; accès par onglets rôle/sous-rôle ; tableau documents avec actions (demande, relance, exclusion, modification, suppression, visualisation preview, téléchargement, validation, refus) ; archivage au niveau dossier.
- Logs : création, modification, extraction, répartition IA, erreurs.
- Données : cohérence opération–entreprise–contacts–documents ; intégrité SIRET, rôles.