# Implémentation technique : Dossiers **Zone** : 2 — Dossiers **Spec fonctionnelle** : [SPEC_02_dossiers.md](../specs/SPEC_02_dossiers.md) **Référentiel** : [REFERENTIEL_ECRANS_ACTIONS.md](../REFERENTIEL_ECRANS_ACTIONS.md) — Zone 2. ## 1. Vue d’ensemble - **Périmètre** : front (folders liste, sélection, détail, archivés, supprimés, création/édition), back (handlers folders), BDD (folders, folder_parties), paramétrage (folders.*). Ancrage optionnel (back). - **Espace client enso (docv)** : champs réels `folder_purpose`, `operation_type` ; UI liste opérations vs blocs « structures type (démo) » — voir [MODELE_SOCIETES_ET_DOSSIERS_DOPERATION.md](../MODELE_SOCIETES_ET_DOSSIERS_DOPERATION.md) et [DOCV_API_ENSO_FRONT_MAP.md](../DOCV_API_ENSO_FRONT_MAP.md). - **Dépendances** : zone 4 (types de dossiers), zone 7 (parties), zone 3 (documents) ; anchoring_client si activé. ## 2. Écrans (détail technique) ### folders.list — Liste des dossiers - **Route(s)** : `app/(dashboard)/folders/page.tsx`. - **Front** : Liste paginée, filtres (statut, type, recherche), tri ; `GET /folders` (query: page, status, folder_type_uid, q) ; liens archivés, supprimés, bouton Créer. State : liste, filters, pagination. Paramétrage : `folders.list`. - **Back** : `GET /folders` → folder_service::list (office_uid depuis context) → folder_repository (pagination, filtres). - **BDD** : `folders` (uid, office_uid, name, folder_type_uid, status, description, created_at, archived_at, deleted_at). ### folders.select — Sélection de dossier - **Route(s)** : `app/(dashboard)/folders/select/page.tsx` ou modal `FolderSelectModal`. - **Front** : Liste/recherche dossiers ; `GET /folders` (limit, q) ; bouton Valider (retour avec folderUid), Annuler. Paramétrage : `folders.select`. - **Back** : même GET /folders. - **BDD** : `folders`. ### folders.detail — Détail d’un dossier - **Route(s)** : `app/(dashboard)/folders/[folderUid]/page.tsx`. - **Front** : En-tête (nom, type, statut, dates), onglets ou sections (parties, documents, notes, partages) ; `GET /folders/:id` ; actions Modifier, Archiver, Supprimer, Ancrage selon action_config ; téléversement document, ajout note, gestion partage (zones 3, 7, 8). Paramétrage : `folders.detail`. - **Back** : `GET /folders/:id`, `PATCH /folders/:id`, `POST /folders/:id/archive`, `POST /folders/:id/restore`, `DELETE /folders/:id` (soft), `DELETE /folders/:id/permanent` ; folder_service, folder_repository. - **BDD** : `folders`, `folder_parties`, `documents`, `notes`, `folder_shares`. ### folders.archived — Dossiers archivés - **Route(s)** : `app/(dashboard)/folders/archived/page.tsx`. - **Front** : `GET /folders/archived` ; liste ; Restaurer, Consulter détail. Paramétrage : `folders.archived`. - **Back** : `GET /folders/archived` → folder_repository où archived_at IS NOT NULL. - **BDD** : `folders`. ### folders.deleted — Dossiers supprimés - **Route(s)** : `app/(dashboard)/folders/deleted/page.tsx`. - **Front** : `GET /folders/deleted` ; Restaurer, Supprimer définitivement. Paramétrage : `folders.deleted`. - **Back** : `GET /folders/deleted`, `POST /folders/:id/restore`, `DELETE /folders/:id/permanent`. - **BDD** : `folders` (deleted_at). ### folders.create, folders.edit — Création / édition de dossier - **Route(s)** : `app/(dashboard)/folders/new/page.tsx`, `folders/[folderUid]/edit/page.tsx` ou modal. - **Front** : Formulaire (nom, type de dossier, description, parties liées) ; `GET /folder-types`, `GET /customers` pour listes ; `POST /folders`, `PATCH /folders/:id`. Validation nom et type requis. Paramétrage : `folders.create`, `folders.edit`. - **Back** : folder_service::create, update ; folder_repository, folder_party_repository. - **BDD** : `folders`, `folder_parties`. ## 3. Actions (mapping technique) | Action | Déclencheur (UI) | Appel / action | Back (handler, service) | Validation / erreur | |--------|------------------|----------------|-------------------------|----------------------| | 18.4 | Page liste, filtres, tri, liens | GET /folders, GET /folders/archived, /deleted | folder_service | 403 | | 18.5 | Modal sélection, Valider | GET /folders, retour context | folder_service | 404 | | 18.6 | Détail dossier, onglets, boutons | GET/PATCH /folders/:id, POST archive/restore, DELETE | folder_service, anchoring si activé | 403, 404 | | 18.7 | Page archivés | GET /folders/archived, POST restore | folder_service | 403 | | 18.8 | Page supprimés | GET /folders/deleted, POST restore, DELETE permanent | folder_service | 403 | | 18.9 | Formulaire création/édition | POST /folders, PATCH /folders/:id | folder_service | Nom et type requis | ## 4. Points d’attention - Transitions statut : ouvert → archivé (archived_at), → supprimé (deleted_at) ; restauration remet deleted_at/archived_at à NULL. - Ancrage : appel back depuis folder_service ou document_service selon périmètre. - i18n : `folders.*`, `folders.archived`, `folders.deleted`.