# Backend — Statut final État de fermeture du backend métier Omika, prêt pour la future application mobile. ## Schéma Batik / Omika - Détection de schéma réelle au démarrage (`DatabaseSchemaDetector`), basée sur la structure (colonnes canaris), jamais sur le nom de la base. - Routage runtime : `ApplicationRuntimeContext.Current.DetectedVersion` → `AdaptiveRepository` → implémentation `Batik*` ou `Omika*`. - Aucune logique basée sur le nom de la base. ## HFSQL - Accès OLE DB : **VERIFIED** (provider `PCSOFT.HFSQL`). - Source des mots de passe : **EXPLICIT_LOCAL_CONFIG** (`config/hfsql-test.local.json`). - Dérivation de mot de passe utilisée : **NO** (mots de passe fournis explicitement). - `ProtectionPlusSecret` utilisé pour la connexion : **NO**. ## Business aggregates (8 VERIFIED) | Agrégat | Statut | |---------|--------| | Client | VERIFIED | | Personne | VERIFIED | | Lieu/Site | VERIFIED | | Document | VERIFIED | | Intervention | VERIFIED | | Dossier | VERIFIED | | PlanningRDV | VERIFIED | | Collaborateur | VERIFIED | 0 PARTIAL, 0 NOT_STARTED. ## Reference data - **PublicRead** : ParametreMetier (`GET /reference-data/{key}`, READ_ONLY_VERIFIED). - **InternalOnly** : Societe, Equipe, ParametreMetierEntete, EtatIntervention. - **SchemaSpecific** : Role, Etats (Omika uniquement). - **NotRequired** : ModeleRapport. ## API Groupes d'endpoints enregistrés dans `Program.cs` : - Health - Client - Contact (Personne) - ReferenceData - Document - Site (Lieu) - Intervention - Dossier - RendezVous (PlanningRDV) - Collaborateur Aucun endpoint préventif supplémentaire. Conforme à la règle « ne crée pas automatiquement un endpoint pour chaque table ». ## Adaptive repositories Tous les agrégats publics disposent d'un repository adaptatif (`Adaptive*Repository`) qui route selon `DetectedVersion` : - Client, Contact, Site, Document, Intervention, Dossier, RendezVous, Collaborateur, ReferenceData. ## Tests - **1144 PASS / 0 FAIL / 0 SKIP**. - Intégrations réelles OLE DB (BATIK_TEST / OMIKA_TEST) pour les parcours principaux : Client (Create), Intervention (lifecycle), Dossier (lifecycle), PlanningRDV (lifecycle), Collaborateur (lifecycle) — avec rollback atomique. - Les tests d'intégration s'ignorent proprement si le serveur HFSQL est injoignable (détection `E_FAIL`/`0x80004005`). ## Limitations connues - **ElementSupprime** : absent physiquement de OMIKA_TEST actuel ; traité comme optionnel (VERSION_OPTIONAL). - **Equipe → Collaborateur** : relation INTERNAL_ONLY, pas d'identité canonique publique (aucune table de correspondance). - **Role** : Omika-specific, non exposé publiquement. - **ModeleRapport** : NOT_REQUIRED. - **Document.Update** : NOT_APPLICABLE (document immuable après création). - **Intervention PartialFailureRollback** : non couvert spécifiquement, mais transaction/lifecycle validés (rollback externe prouvé). ## Éléments volontairement non exposés - Tables de jointure (JOIN_TABLE) : pas de CRUD public. - Configuration système (Utilisateur, ParametreSysteme) : pas d'endpoint public. - Référentiels internes (Societe, Equipe, ParametreMetierEntete, EtatIntervention, Role, Etats, ModeleRapport) : pas d'endpoint public. - IDs publics opaques (string) : aucun PK HFSQL brut exposé, aucun GUID fabriqué pour masquer l'absence d'identité canonique. ## Statut final - **BackendBusinessLayer** : READY. - **BackendForMobileDevelopment** : READY. - **Blockers** : NONE.