Premiere commit - Omika
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user