Premiere commit - Omika

This commit is contained in:
2026-10-23 18:46:50 +02:00
commit 8ea76c1b24
2155 changed files with 984301 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
# 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.