# Contexte Poplee Formation et Poplee Entretien sont 2 logiciels maintenu et developpés par 2 équipes separés. Poplee Entretien va pouvoir se connecter à Poplee Formation pour remonter (et dans un futur proche manipuler) des demandes de formations dans le contexte d'une etrentien. Pour plus d'infos : - https://www.notion.so/Int-gration-PEnt-PF-Design-Doc-b2aa75b59fe04b118dc2118426e58273 - https://hackmd.io/RG8AZ6H_ThqZbN4gld0xNw?view # Problème Garantir à Poplee Entretien des APIs stables dans le temps (aucun breaking change dans le payload). Poplee Formation peut evoluer avec souplesse sans se soucier des intégrations (pas trop). # Design ```plantuml @startuml hide circle skinparam class { BackgroundColor White BorderColor Black ArrowColor Black } cloud "<b>Poplee Formation WS</b>" as LTS { component "training-demands-v1-web" as LtsWeb #pink component "training-demands-web" as CanaryWeb #lightgreen component "training-demands-application" as CanaryApplication #lightgreen component "training-demands-repository" as CanaryRepository #lightgreen component "training-demands-domain" as CanaryDomain #lightgreen component "training-demands-acl" as CanaryAcl #pink } actor "Poplee Entretien / Le monde\n(usage externe)" as PENT actor "Poplee Formation\n(usage interne)" as FORM card "À implementer" #pink card "Implementé" #lightgreen PENT --> LtsWeb : "GET /api/v1/training-demands" FORM --> CanaryWeb : "GET /api/training-demands" CanaryWeb --> CanaryApplication CanaryApplication --> CanaryDomain CanaryApplication --> CanaryRepository CanaryRepository --> CanaryDomain CanaryAcl -> CanaryApplication LtsWeb --> CanaryAcl @enduml ``` # CI/CD Ce qui se passe pendant le build du job jenkins ## S'il n'y a pas des breaking changes des api. ```plantuml @startuml hide circle skinparam class { BackgroundColor White BorderColor Black ArrowColor Black } skinparam actorStyle awesome actor Jenkins as Jenkins participant "Poplee Formation" as FORM participant "OpenApi LTS v1" as OPENAPIV1 Jenkins -> FORM : Build Activate FORM FORM -> FORM : Generate OPEN_API_temp.yaml FORM -> OPENAPIV1 : Get OPEN_API_V1 FORM -> FORM : OpenApiDiff(temp,V1) == 0 build ok @enduml ``` ## S'il y a des breaking changes des api. ```plantuml @startuml hide circle skinparam class { BackgroundColor White BorderColor Black ArrowColor Black } skinparam actorStyle awesome actor Jenkins as Jenkins participant "Poplee Formation" as FORM participant "OpenApi LTS v1" as OPENAPIV1 Jenkins -> FORM : Build Activate FORM FORM -> FORM : Generate OPEN_API_temp.yaml FORM -> OPENAPIV1 : Get OPEN_API_V1 FORM -> FORM : IF OpenApiDiff(temp,V1) > 0 build ko @enduml ``` # Lotissements - [x] lot 1 : Implementation du token applicatif - [ ] lot 2 : Implementation de l'endpoint /api/v1/training-demands - [ ] lot 3 : Ajout des tests automatisés pour empecher les breaking changes de la version LTS # Roadmap ## Lot 1 - [x] Terminé ## Lot 2 Disponible fin septembre Le lot 2 est nécessaire pour qu'entretien soit autonome dans le développement ## Lot 3 Livraison prévue : 15 octobre Le lot 3 doit etre disponible avant décembre