- 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
13 KiB
13 KiB
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 d’ensemble
- 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 d’opé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.tsxouapp/(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 d’opération, société, recherche), tri ;
GET /operations(filtré par user) ouGET /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 d’une 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 d’opération
- Route(s) :
app/(dashboard)/operations/create/page.tsxouapp/(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 d’une 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 d’opé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 d’activité) ; 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 d’opé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 d’opé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 d’activité (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 d’attention
- 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.