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

13 KiB
Raw Blame History

Implémentation technique : Opération

Zone : 18 — Opération (cabinet/office)
Spec fonctionnelle : SPEC_18_operation.md
Référentiel : REFERENTIEL_ECRANS_ACTIONS.md — Zone 18.

1. Vue densemble

  • Périmètre : front (operations liste [où user a un rôle], détail, création [peut créer société], édition, validation/correction post-création [ordre fixe, pas de retour], onglets rôle → sous-rôle → membres), back (handlers societies, operations, operation_societies, contacts, operation_documents), BDD (societies, operations, operation_societies, operation_contacts, society_contacts, operation_documents, operation_document_societies, operation_document_files), paramétrage. Extraction KBIS, répartition IA, génération/complétion fichiers de synthèse via services back.
  • Homogénéisation : dossier = société = entreprise ; société mère ou fille ; archivage au niveau société.
  • Étapes : chaque type dopération a plusieurs étapes ; paramétrage (droits, types de documents, workflow) dépend des étapes.
  • Liste opérations : opérations où la personne connectée a un rôle.
  • Accès onglets : seuls cabinets avocats et offices notariaux ; autres : vue documents les concernant (envoyés, reçus, visualisation).
  • Dépendances : zone 3 (types de documents), zone 6 (rôles), zone 17 (IA, OnlyOffice local pour association variables).

2. Écrans (détail technique)

operations.list — Liste des opérations

  • Route(s) : app/(dashboard)/operations/page.tsx ou app/(dashboard)/societies/[societyUid]/operations/page.tsx.
  • Front : Liste paginée des opérations où la personne connectée a un rôle ; filtres (date, type dopération, société, recherche), tri ; GET /operations (filtré par user) ou GET /societies/:id/operations ; bouton Créer. Paramétrage : operations.list.
  • Back : GET /operations → operation_service::list (user_uid, office_uid) → opérations où user a un rôle.
  • BDD : operations (uid, society_uid, office_uid, …).

operations.detail — Détail dune opération

  • Route(s) : app/(dashboard)/operations/[operationUid]/page.tsx.
  • Front : En-tête ; onglets rôle → sous-rôle → membres (selects multiples ou cases à cocher) ; tableau documents (type, sociétés liées, état, dates) ; actions selon droits (demande, relance, exclusion, modification, suppression, visualisation preview, téléchargement, validation, refus). Seuls cabinets/offices ont onglets complets ; autres : vue documents les concernant. Paramétrage : operations.detail.
  • Back : GET /operations/:id ; résolution droits (rôle, sous-rôle, statut dossier, type opération, type activité, type document, statut document, héritage).
  • BDD : operations, operation_societies, operation_contacts, contacts, operation_documents, operation_document_societies, operation_document_files.

operations.create — Création dopération

  • Route(s) : app/(dashboard)/operations/create/page.tsx ou app/(dashboard)/societies/[societyUid]/operations/create/page.tsx.
  • Front : Formulaire (opération, sociétés liées, contacts, documents) ; POST /operations (body: society_uid ou création société) ; une opération peut générer la création dune nouvelle société. Paramétrage : operations.create.
  • Back : operation_service::create ; peut créer une société ; operation_repository, operation_society_repository, operation_contact_repository.
  • BDD : operations, operation_societies, operation_contacts.

operations.edit — Édition dopération

  • Route(s) : app/(dashboard)/operations/[operationUid]/edit/page.tsx.
  • Front : Formulaire pré-rempli ; PATCH /operations/:id ; sections entreprise, contacts, documents éditables. Paramétrage : operations.edit.
  • Back : operation_service::update ; repositories associés.
  • BDD : operations, operation_societies, operation_contacts, operation_documents.

operations.society — Société liée (dans opération)

  • Route(s) : Section dans détail/création/édition ; modal SocietyFormModal.
  • Front : Formulaire (type, imposition, SCI, SIRET, type dactivité) ; upload KBIS ; POST /operations/:id/societies, PATCH /operations/:id/societies/:societyUid, POST /operations/:id/societies/:societyUid/extract-kbis. Paramétrage : operations.society.
  • Back : operation_society_service ; kbis_extraction_service.
  • BDD : operation_societies, activity_types.

operations.contacts — Contacts (dans opération)

  • Route(s) : Section dans détail/création/édition ; modal ContactFormModal.
  • Front : Liste contacts ; ajout (recherche GET /contacts?q= ; si doublon → pas de création, alerte choix manuel) ; rôles/sous-rôles opération cumulatifs ; POST /operations/:id/contacts, etc. Paramétrage : operations.contacts.
  • Back : operation_contact_service ; contact_repository (doublon : email, nom+prénom).
  • BDD : contacts, operation_contacts, society_contacts.

operations.validate — Validation/correction post-création

  • Route(s) : app/(dashboard)/operations/[operationUid]/validate/page.tsx.
  • Front : Ordre fixe : (1) infos → (2) contacts → (3) affectations ZIP → (4) fichiers de synthèse. Pas de retour sur étape validée. PATCH /operations/:id/validate-step, POST /operations/:id/validate-complete. Paramétrage : operations.validate.
  • Back : operation_validate_service ; synthèse : si aucune → génération auto ; sinon complétion (écran + BDD).
  • BDD : operations, operation_societies, operation_contacts, operation_documents.

operations.documents — Documents (dans opération)

  • Route(s) : Onglets rôle → sous-rôle → membres dans détail opération.
  • Front : Tableau documents ; colonnes : document, type, sociétés liées, état ; actions selon droits (rôle, sous-rôle, statut dossier, type opération, type activité, type document, statut document, héritage) ; preview selon format ; upload ; ZIP ; rattachement opération ou société selon config type. Paramétrage : operations.documents.
  • Back : operation_document_service ; zip_distribution_service ; résolution droits ; workflow configuré.
  • BDD : operation_documents, operation_document_societies, operation_document_files, document_types.

operation-types.list — Types dopération (paramétrage)

  • Route(s) : app/(dashboard)/settings/operation-types/page.tsx.
  • Front : Liste ; création, édition ; définition des étapes par type ; GET /operation-types, POST /operation-types, PATCH /operation-types/:id, DELETE /operation-types/:id. Paramétrage : operation-types.list.
  • Back : operation_type_service ; operation_type_repository ; operation_type_step_repository.
  • BDD : operation_types, operation_type_steps.

operation-type-steps.list — Étapes par type dopération (paramétrage)

  • Route(s) : app/(dashboard)/settings/operation-types/[typeUid]/steps/page.tsx.
  • Front : Liste des étapes ; création, édition, ordre ; GET /operation-types/:id/steps, POST /operation-types/:id/steps, PATCH /operation-types/:id/steps/:stepUid, réordonnancement. Paramétrage : operation-type-steps.list.
  • Back : operation_type_step_service ; operation_type_step_repository.
  • BDD : operation_type_steps.

activity-types.list — Types dactivité (paramétrage)

  • Route(s) : app/(dashboard)/settings/activity-types/page.tsx.
  • Front : Liste ; création, édition ; GET /activity-types, POST /activity-types, PATCH /activity-types/:id, DELETE /activity-types/:id. Paramétrage : activity-types.list.
  • Back : activity_type_service ; activity_type_repository.
  • BDD : activity_types.

3. Actions (mapping technique)

Action Déclencheur (UI) Appel / action Back (handler, service) Validation / erreur
18.84 Page liste, filtres, tri GET /operations operation_service 403
18.85 Détail opération GET /operations/:id operation_service 403, 404
18.86 Formulaire création POST /operations operation_service Titre, date, type requis
18.87 Formulaire édition PATCH /operations/:id operation_service 403, 404
18.88 Section société liée, upload KBIS POST/PATCH /operations/:id/societies, POST extract-kbis operation_society_service, kbis_extraction_service SIRET requis, erreur extraction
18.89 Section contacts, ajout POST /operations/:id/contacts, GET /contacts?q= operation_contact_service, contact_repository Alerte doublon, rôles requis
18.90 Section documents, upload POST /operations/:id/documents operation_document_service 403
18.91 Upload ZIP POST /operations/:id/documents/upload-zip zip_distribution_service (IA) Proposition modifiable
18.94 Validation post-création POST /operations/:id/validate-step, validate-complete operation_validate_service Infos, contacts, affectations ZIP, fichiers synthèse
18.95 Actions documents (demande, relance, exclusion, etc.) PATCH /operations/:id/documents/:docId/action operation_document_service Selon droits rôle/état
18.92 Paramétrage types opération GET/POST/PATCH/DELETE /operation-types operation_type_service 403
18.96 Paramétrage étapes par type GET/POST/PATCH /operation-types/:id/steps operation_type_step_service 403
18.93 Paramétrage types activité GET/POST/PATCH/DELETE /activity-types activity_type_service 403

4. BDD — Schéma (tables principales)

Table Colonnes clés
societies uid, parent_society_uid, office_uid, type, imposition, is_sci, siret, activity_type_uid, kbis_document_uid, … — dossier = société = entreprise ; archivage ; données complètes
operations uid, society_uid, office_uid, title, date, case_number, accounting_number, has_company, operation_type_uid, current_step_uid, status (ouvert, en cours, clôturé), created_at, updated_at
operation_type_steps uid, operation_type_uid, label, order
operation_comments uid, operation_uid, content, access_level, author_uid, created_at
operation_societies operation_uid, society_uid — jointure ; données société dans societies
contacts uid, office_uid, last_name, first_name, email, phone, created_at — un utilisateur peut avoir plusieurs contacts
user_contacts user_uid, contact_uid — liaison utilisateur ↔ contact
operation_contacts uid, operation_uid, contact_uid, roles_operation (JSON/array), sub_roles_operation, is_shareholder, shares_count
society_contacts uid, society_uid, contact_uid, roles_enterprise, sub_roles_enterprise
operation_documents uid, operation_uid, society_uid?, document_type_uid, attachment_target (operation|society), status, deleted, signed, …
operation_document_societies operation_document_uid, society_uid — N-N
operation_document_files uid, operation_document_uid, file_ref, template, template_variables, info_type, cnil_expiry, created_at
operation_types uid, office_uid, label, order
activity_types uid, office_uid, label, order

5. Points dattention

  • Homogénéisation : dossier = société = entreprise ; société mère ou fille ; archivage au niveau société.
  • Liste opérations : filtrée par rôles de la personne connectée.
  • Onglets : rôle → sous-rôle → membres (selects multiples / cases à cocher) ; seuls cabinets/offices ont onglets complets ; autres : vue documents les concernant.
  • Workflow : configuré par rôle, type opération, étape, type activité, type document, état document, état opération (héritage) ; transitions à demander → exclure → final ; à demander → demandé → à envoyer → envoyé → validé/refusé ou téléchargé ou final.
  • Post-création : ordre fixe (infos → contacts → affectations ZIP → fichiers synthèse) ; pas de retour sur étape validée.
  • Synthèse : si aucune → génération auto ; sinon complétion (écran + BDD).
  • Documents : rattachement opération ou société selon config type ; pas à société parente.
  • Contacts doublons : critères email, nom+prénom ; pas de création si identique ; alerte choix manuel.
  • Association variables : config pour génération documents OnlyOffice local.
  • Preview : selon format, solution technique adaptée.
  • i18n : operations.*, operation-types.*, activity-types.*, operations.society, operations.contacts, operations.documents, operations.validate.