diff --git a/docs/ws-catalog.md b/docs/ws-catalog.md new file mode 100644 index 0000000..a5acb25 --- /dev/null +++ b/docs/ws-catalog.md @@ -0,0 +1,188 @@ +# Catalogue des WebServices EDNOTIF + +Inventaire des opérations exposées par les WSDL embarqués dans +`resources/ednotif-ws/`, avec le statut d'implémentation et une +recommandation de priorisation. + +## Légende statut + +- **Implémenté** — opération couverte par le bundle +- **À faire** — opération pertinente non encore implémentée +- **Optionnel** — opération hors périmètre probable, à confirmer selon le consommateur + +--- + +## 1. wsIpBNotif — Notifications IPG Bovin + +WS métier principal : déclarations réglementaires d'un cheptel bovin auprès de l'IPG. + +### Lecture + +| Opération | Statut | Description probable | +|---|---|---| +| `IpBGetDossierAnimal` | Implémenté | Dossier complet d'un bovin (identifications, mouvements, parents…) | +| `IpBGetInventaire` | À faire | Inventaire des animaux présents sur l'exploitation | +| `IpBGetRetourDossiers` | À faire | Retours de traitement des notifications envoyées | +| `IpBGetSortiesPresumees` | À faire | Animaux sortis selon l'IPG mais non déclarés par l'éleveur | + +### Écriture + +| Opération | Statut | Description probable | +|---|---|---| +| `IpBCreateEntree` | À faire | Déclaration d'entrée d'un bovin sur l'exploitation | +| `IpBCreateSortie` | À faire | Déclaration de sortie (vente, mort, abattage…) | +| `IpBCreateNaissance` | À faire | Déclaration de naissance | +| `IpBCreateMortNe` | À faire | Déclaration de mort-né | +| `IpBCreateAnimalEchange` | À faire | Échange intra-UE | +| `IpBCreateAnimalImporte` | À faire | Import pays tiers | +| `IpBCreateAvisAnimalImporte` | À faire | Avis d'import | +| `IpBCreateRebouclage` | À faire | Rebouclage / remplacement de boucle | +| `IpBCreateCommandeBoucles` | À faire | Commande de boucles | +| `IpBCreateInsemination` | À faire | Déclaration d'insémination | + +--- + +## 2. wsDmB\* — Déclarations de Mouvement Bovin + +Famille orientée gestion des mouvements / transporteurs. + +### wsDmBConsultation +- `DmBConsultationGetListeDonneesIT` — consultation de données (IT = identifiants traces ?) +- `DmBConsultationGetListeStatutDeplacement` — statuts de déplacement + +### wsDmBGestion +- `DmBGestionCreateDroitAccesListeAnimalActeur` — gestion droits d'accès +- `DmBGestionCreateListeICA` — création listes ICA (information chaîne alimentaire) + +### wsDmBListe +- `DmBListeCreateListeBovins` / `DmBListeGetListeBovins` — listes de bovins (lots) + +### wsDmBTransport +- `DmBTransportCreateChargement` — chargement camion +- `DmBTransportCreateDechargement` — déchargement camion + +--- + +## 3. wsMdBEdel — Maîtrise des Données Bovin (Edel) + +Consultation en lecture seule : génétique, lactation, IA, races. + +| Opération | Rôle | +|---|---| +| `MdBGetDonneesGenetiquesAnimales` | Données génétiques d'animaux | +| `MdBGetDonneesMalesPublics` | Catalogue mâles reproducteurs publics | +| `MdBGetDonneesOrganismeHabilite` | Référentiel organismes habilités | +| `MdBGetDonneesOrganismeTiers` | Référentiel organismes tiers | +| `ClBGetDonneesCL` | Contrôle laitier | +| `CpBGetDonneesCPB` | Contrôle de performances bouchères | +| `IaBGetDonneesIA` | Données d'insémination | +| `OsBGetDonneesRAC` | Données race (RAC = race certifiée ?) | +| `TkBGetDonneesTE` | Transfert embryonnaire | +| `VaBGetDonneesCPV` | Contrôle performances veaux (?) | + +--- + +## 4. wsMdCEdel — Maîtrise des Données Caprin + +Équivalent caprin : CRUD + reproduction + lactation. 15 opérations (`MdCCreate*` pour l'écriture, `MdCGet*` avec variantes `MAJ` pour les deltas). + +| Groupe | Opérations | +|---|---| +| Caprin | `MdCCreateCaprin`, `MdCGetDonneesCaprin`, `MdCGetDonneesCaprinMAJ` | +| Reproduction | `MdCCreateSaillie`, `MdCCreateFinGestation`, `MdCGetFinGestation[/MAJ]`, `MdCGetEvenementReproduction[/MAJ]` | +| Mouvement | `MdCCreateMouvement` | +| Contrôle laitier | `MdCGetCLDonneesBrutes[/MAJ]`, `MdCGetCLDonneesElaborees[/MAJ]` | +| Contrats | `MdCGetContratsExploitation` | + +--- + +## 5. wsIpEdel — Identification Pérenne Edel + +- `IpGetDonneesExploitation` — données descriptives de l'exploitation + +--- + +## 6. wsMrAde — Échanges ICAR + +Conforme aux standards ICAR (flux laitiers internationaux). + +- `GetHerdList` +- `UpdateAnimal` +- `UpdateDevice` +- `UpdateLivestockLocation` +- `UpdateMilkingResults` + +--- + +## 7. WsAnnuaire — Annuaire Guichet + +Métadonnées techniques du guichet (pas du métier). + +- `tkGetServices` — liste des WS disponibles +- `tkGetVersionsService` — versions d'un WS +- `tkGetOperationsServiceVersion` — opérations d'une version +- `tkGetUrl` — URL d'un service + +--- + +## Recommandation de priorisation + +Proposition d'ordre, à valider selon le périmètre réel du consommateur. + +### Phase 1 — Compléter le bovin (priorité haute) +Continuer sur **wsIpBNotif**, en commençant par la **lecture** : + +1. `IpBGetInventaire` — donne immédiatement la liste du cheptel, utile pour toute UI +2. `IpBGetRetourDossiers` — indispensable pour savoir si les notifs passent côté IPG +3. `IpBGetSortiesPresumees` — flux de rapprochement éleveur ↔ IPG + +**Raison** : le dossier animal seul est peu utile sans l'inventaire qui permet de savoir *pour quels animaux* appeler `getAnimalFile`. Et sans `RetourDossiers`, toute écriture future est aveugle. + +### Phase 2 — Écriture bovin (notifications obligatoires) +Implémenter les déclarations **dans l'ordre des cycles de vie d'un animal** : + +4. `IpBCreateNaissance` +5. `IpBCreateEntree` / `IpBCreateSortie` +6. `IpBCreateMortNe` +7. `IpBCreateRebouclage` / `IpBCreateCommandeBoucles` +8. `IpBCreateAnimalEchange` / `IpBCreateAnimalImporte` / `IpBCreateAvisAnimalImporte` (si imports/échanges dans le périmètre) +9. `IpBCreateInsemination` (si non couvert par un autre outil) + +### Phase 3 — Mouvements / transport +Si le consommateur gère du transport ou des lots : + +10. `wsDmBListe` (lots bovins) +11. `wsDmBTransport` (chargement/déchargement) +12. `wsDmBConsultation` et `wsDmBGestion` selon besoin + +### Phase 4 — Référentiels génétiques (optionnel) +Si le consommateur fait de la sélection / génétique : + +13. `wsMdBEdel` — lectures ponctuelles, ne justifient une implémentation que s'il y a un usage métier concret + +### Phase 5 — Caprin / ICAR (optionnel) +À activer uniquement si multi-espèces ou conformité ICAR requise. + +### Hors priorité +- **wsIpEdel** : 1 op, à implémenter *en passant* si besoin ponctuel +- **WsAnnuaire** : utile pour du diagnostic / supervision, pas pour le métier + +--- + +## Découpage structurel proposé + +Pour garder un code cohérent, reproduire le pattern existant (`src/Bovin/`) par domaine : + +``` +src/ +├── Auth/ (existant) +├── Bovin/ (IpBNotif + IpEdel exploitation) +├── Mouvement/ (DmB*) +├── Genetique/ (MdBEdel, optionnel) +├── Caprin/ (MdCEdel, optionnel) +├── Icar/ (MrAde, optionnel) +├── Annuaire/ (WsAnnuaire, optionnel) +└── Shared/ (existant) +``` + +Chaque domaine expose une `*ApiInterface` publique + une implémentation `readonly`, avec ses DTOs et mappers dédiés. Le `TokenProvider` et `SoapClientFactory` restent partagés via `Shared/`.