4.2 KiB
4.2 KiB
Audit du niveau 3 — Modèle métier canonique et contrats API
Types déjà trouvés dans Omika.Core
L'audit a couvert les dossiers existants et les dossiers créés :
Omika.Core/Abstractions: abstractions techniques existantes.Omika.Core/Constants: constantes existantes.Omika.Core/Interfaces: interfaces existantes.Omika.Core/Models: modèles préexistants (à auditer pour doublons éventuels).Omika.Core/Runtime: contexte d'exécution (ex.ApplicationRuntimeContext), sélection de base demandée par la configuration (DatabaseSchemaSelection) et analyse de configuration (DatabaseSchemaSelectionParser).Omika.Core/Compatibility(créé) :DatabaseSchemaVersion(provenance / version réellement détectée),DatabaseSource,LegacyEntityReference,SchemaCapabilities,CanonicalMappingResult<T>.Omika.Core/Domain(créé) : entités métier, objets de valeur, enums, exceptions.Omika.Core/Contracts(créé) : DTO API.Omika.Core/Mapping(créé) : mappers entité métier → DTO.
Types réutilisés
Aucun fichier existant n'a été déplacé. Les dossiers Interfaces,
Abstractions, Constants et Runtime ont été réutilisés tels quels :
la nouvelle structure Domain/, Contracts/, Compatibility/ est ajoutée
sans déplacer les classes existantes.
La règle « ne crée pas un deuxième dossier concurrent » a été respectée :
les nouvelles interfaces de service ont été placées dans Omika.Core/Interfaces
et non dans un nouveau dossier.
Doublons évités
- Un seul
RendezVouscanonique (pas dePlanning_RDV/RDV_Planning/RDV_Collaborateur/RDV_Contactmétier). - Un seul
Document(pas de duplication des classes physiquesDocumentRow). - Un seul
Client(pas de duplication des tablesClient,ClientAdresse,ClientContact,ClientSite). - Un seul
Intervention(pas de duplication des tablesIntervention,ActionIntervention,CompteRendu). - Les collections métier (adresses, contacts, sites) sont des propriétés de l'entité racine, et non des entités séparées dupliquées.
- Pas de table de liaison métier : les références sont portées par des listes d'identifiants ou des collections contrôlées.
Fichiers non déplacés
- Les classes physiques Batik / Omika restent dans
Omika.Data. - Les classes de
Omika.Core/Modelsexistantes n'ont pas été déplacées par sécurité : un audit manuel complémentaire est nécessaire pour décider de leur sort (doublons éventuels avecDomain/). - Les abstractions techniques de
Abstractions/, les constantes deConstants/et le runtime deRuntime/restent en place.
Ambiguïtés
Omika.Core/Models: contient peut-être des DTO ou modèles intermédiaires préexistants. Rien n'a été supprimé ; à arbitrer lors du niveau 4.- Interfaces de repository : la solution ne montre pas de convention claire
de repository. Les services (
IClientService,IInterventionService,IRendezVousService,IDocumentService,IReferenceDataService,ICurrentUserService) ont été créés dansInterfaces/. Les repositories seront définis avec l'architecture de données (Omika.Data). - Identifiants publics : chaînes. Le mobile ne doit pas voir la clé physique ; un helper dédié sera ajouté si nécessaire.
ReferenceValuevs enums : les paramètres métier restent configurables. Certains statuts pourraient devenir des enums stables ultérieurement.- Dates :
DateTimepartout ;DateTimeOffsetseulement si un besoin multi-fuseaux est documenté.
Éléments restant à traiter
- Mapping physique → métier dans
Omika.Data(Batik et Omika) : conversion des rubriques préfixées et des champs zombie vers les entités canoniques deOmika.Core.Domain. - Implémentation des services métier (
IClientService, etc.) côté API. - Décision sur le devenir de
Omika.Core/Models(fusion ou suppression). - Contrats de mise à jour des collections (remplacement complet vs diff).
- Sécurité : hachage des mots de passe, sessions, jetons (hors périmètre niveau 3).
- Gestion physique des documents (téléversement / téléchargement).