---
# System prepended metadata

title: Contexte

---



# 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



