# Matrice de couverture CRUD État de la couverture CRUD pour les agrégats métier Batik et Omika. ## Résumé | Catégorie | Nombre | Statut | |-----------|--------|--------| | BUSINESS_AGGREGATE | 8 | 8 VERIFIED, 0 PARTIAL, 0 NOT_STARTED | | BUSINESS_CHILD | 1 | NOT_STARTED | | REFERENCE_DATA | 8 | 1 READ_ONLY_VERIFIED, 4 INTERNAL_ONLY, 2 SCHEMA_SPECIFIC, 1 NOT_REQUIRED | | JOIN_TABLE | 6 | NOT_STARTED | | SYSTEM_CONFIGURATION | 2 | NOT_STARTED | | VERSION_OPTIONAL | 1 | NOT_STARTED | ## Agrégats métier (BUSINESS_AGGREGATE) | Entité | Batik | Omika | Create | ReadOne | ReadList | Update | Delete | Statut | |--------|-------|-------|--------|---------|----------|--------|--------|--------| | Client | Client | Client | ✅ | ✅ | ✅ | ✅ | ✅ | VERIFIED | | Personne | Personne | Personne | ✅ | ✅ | ✅ | ✅ | ✅ | VERIFIED | | Lieu | Lieu | Lieu | ✅ | ✅ | ✅ | ✅ | 🗄️ | VERIFIED | | Document | Document | Document | ✅ | ✅ | ✅ | N/A | 🗄️ | VERIFIED | | Intervention | Intervention | Intervention | ✅ | ✅ | ✅ | ✅ | 🗄️ | VERIFIED | | Dossier | Dossier | Dossier | ✅ | ✅ | ✅ | ✅ | 🗄️ | VERIFIED | | PlanningRDV | Planning_RDV | RDVPlanning | ✅ | ✅ | ✅ | ✅ | 🗄️ | VERIFIED | | Collaborateur | Collaborateur | Collaborateur | ✅ | ✅ | ✅ | ✅ | 🗄️ | VERIFIED | ## Référentiels (REFERENCE_DATA) Lecture seule uniquement. Pas de CRUD administratif générique (C/U/D volontairement absents). | Entité | Batik | Omika | Lecture | Classification | Statut | |--------|-------|-------|---------|----------------|--------| | Societe | Societe | Societe | ❌ | INTERNAL_REFERENCE_ONLY | INTERNAL_ONLY | | Equipe | Equipe | Equipe | ❌ | INTERNAL_REFERENCE_ONLY | INTERNAL_ONLY | | ParametreMetier | ParametreMetier | ParametreMetier | ✅ | PUBLIC_READ_REFERENCE | READ_ONLY_VERIFIED | | ParametreMetierEntete | ParametreMetierEntete | ParametreMetierEntete | ❌ | INTERNAL_REFERENCE_ONLY | INTERNAL_ONLY | | EtatIntervention | EtatIntervention | EtatIntervention | ❌ | INTERNAL_REFERENCE_ONLY | INTERNAL_ONLY | | Role | — | Role | ❌ | SCHEMA_SPECIFIC | SCHEMA_SPECIFIC | | Etats | — | Etats | ❌ | SCHEMA_SPECIFIC | SCHEMA_SPECIFIC | | ModeleRapport | — | ModeleRapport | ❌ | NOT_REQUIRED | NOT_REQUIRED | ### Détail des classifications - **ParametreMetier** (PUBLIC_READ_REFERENCE) : lecture publique via `GET /reference-data/{key}`. Câblé : `IReferenceDataRepository → AdaptiveReferenceDataRepository`, `IReferenceDataService → ReferenceDataService`, `BatikReferenceDataRepository` (filtre `PA_Code`) / `OmikaReferenceDataRepository` (filtre `PA_Categorie`). Retourne `ReferenceValueDto` (Key/LegacyId/Code/Label). - **Societe** (INTERNAL_REFERENCE_ONLY) : aucun besoin public démontré (pas de sélecteur de société requis par l'application). - **Equipe** (INTERNAL_REFERENCE_ONLY) : pas d'identité publique canonique exploitable indépendamment ; aucun GUID fabriqué. - **ParametreMetierEntete** (INTERNAL_REFERENCE_ONLY) : référentiel historique/protégé, pas de CRUD public. - **EtatIntervention** (INTERNAL_REFERENCE_ONLY) : table d'historique des états d'une intervention (chargée en interne par Intervention) ; les valeurs d'état proviennent de ParametreMetier. Pas de liste publique autonome. - **Role** (SCHEMA_SPECIFIC) : Omika uniquement ; absent sous Batik (indiqué par `SchemaCapabilities.SupportsRoles`). Lecture interne. - **Etats** (SCHEMA_SPECIFIC) : Omika uniquement ; absent sous Batik. Lecture interne. - **ModeleRapport** (NOT_REQUIRED) : Omika uniquement ; aucun besoin public démontré. ## Tables de jointure (JOIN_TABLE) Aucun CRUD public exposé. Gérées via les agrégats. | Table | Batik | Omika | |-------|-------|-------| | ClientAdresse | ✅ | ✅ | | ClientLieu | ✅ | ✅ | | ClientBddExterne | ✅ | ✅ | | InterventionCollaborateur | ✅ | ✅ | | InterventionPersonne | ✅ | ✅ | | LieuPersonne | ✅ | ✅ | ## Configuration système (SYSTEM_CONFIGURATION) | Table | Batik | Omika | |-------|-------|-------| | Utilisateur | ✅ | ✅ | | ParametreSysteme | ✅ | ✅ | ## Version optionnelle (VERSION_OPTIONAL) | Table | Batik | Omika | Statut | |-------|-------|-------|--------| | ElementSupprime | — | ✅ | NOT_STARTED | ## Notes - Client et Personne sont entièrement implémentés (VERIFIED). - Lieu/Site est VERIFIED : CRUD complet implémenté et testé unitairement (Create/ReadOne/ReadList/Update + Archive) via SiteService/AdaptiveSiteRepository/BatikSiteRepository/OmikaSiteRepository. BATIK : table Lieu, création Adresse transactionnelle, type résolu via ParametreMetier. OMIKA : table Lieu, LI_CleType, GUID, Adresse Omika. API /sites. DI : ISiteRepository → AdaptiveSiteRepository, ISiteService → SiteService. - Document est VERIFIED : Create/Read/List + Archive (suppression sémantique). Update = NOT_APPLICABLE (document immuable après création). - Intervention est VERIFIED : CRUD complet implémenté et testé unitairement (Create/ReadOne/ReadList/Update + Archive), intégration réelle CREATE→UPDATE→ARCHIVE→ROLLBACK PASS contre BATIK_TEST/OMIKA_TEST, relations Collaborateur/Personne câblées (UPDATE), IDs relation invalides → DomainValidationException sans écriture partielle. - Dossier est VERIFIED : CRUD complet implémenté et testé unitairement (Create/ReadOne/ReadList/Update + Archive), intégration réelle CREATE→UPDATE→ARCHIVE→ROLLBACK PASS contre BATIK_TEST/OMIKA_TEST. NB : dans la base Omika, DO_NumDossier est une rubrique CALCULÉE (erreur HFSQL 28000002) — elle est exclue des INSERT/UPDATE, générée par la base. - RendezVous (PlanningRDV) est VERIFIED : CRUD complet implémenté et testé unitairement (Create/ReadOne/ReadList/Update + Cancel + Archive), intégration réelle CREATE→UPDATE→CANCEL→ARCHIVE→ROLLBACK PASS contre BATIK_TEST/OMIKA_TEST. NB : le provider OLE DB ne sait pas marshaler `DateOnly` vers un Variant — la couche de connexion normalise désormais `DateOnly` en `DateTime` avant transmission. - Collaborateur est VERIFIED : CRUD complet implémenté et testé unitairement (Create/ReadOne/ReadList/Update + Archive), intégration réelle CREATE→UPDATE→ARCHIVE→ROLLBACK PASS contre BATIK_TEST/OMIKA_TEST. NB : l'archivage logique est réalisé par désactivation (CO_Actif = false), aucun DELETE physique. Les associations d'équipe (Equipe_Collaborateur) sont lues mais non converties en GUID canoniques (aucune table de correspondance) ; Role est NOT_APPLICABLE (géré via les agrégats). - Les contrats de service existent pour Document, Intervention, RendezVous, Collaborateur et ReferenceData. - REFERENCE_DATA : seul ParametreMetier est exposé en lecture publique (READ_ONLY_VERIFIED). Les autres référentiels sont internes (INTERNAL_ONLY), spécifiques à un schéma (SCHEMA_SPECIFIC) ou non requis (NOT_REQUIRED). Aucun endpoint supplémentaire n'a été créé : conforme à la règle « ne crée pas automatiquement un endpoint pour chaque table ». - Les tables de jointure ne doivent pas être exposées en CRUD public. - ElementSupprime est absent de OMIKA_TEST actuel : à traiter comme optionnel.