Skip to content
Snippets Groups Projects
Select Git revision
  • 507dcbee8d8b77925b0e3fe267630af0d8256ee2
  • master default protected
  • docs-improve_user_path_description
  • fix-pipeline
  • ci-change_exercises_image_registry
  • feat-merge_recorder_in_extension
  • feat-default_folder
  • feat-change_user
  • develop protected
  • refactor-mission
  • feat-exercise_automatic_save
  • docs-improve_documentation
  • feat-create_little_container_for_developer
  • feat-local-dev
  • 0.1.12
  • 0.1.11
  • 0.1.10
  • 0.1.5
18 results

deadlock-desktop

Name Last commit Last update
docker
src
.gitignore
README.md
examples.http
pom.xml

Kata Agregio

La stack technique

- GitLab
- Java version 21
- SpringBoot version 3.4.3
- Maven version 3.9
- PostgresSQL version 15.7
- Flyway version 10.20.1
- AssertJ/Junit5
- Mockito version 5.12.2
- Lombok
- Hibernate

L'objectif

Une API fonctionnelle avec des endpoints qui permettent de:

  • créer une offre
  • créer un parc
  • lister les offres pour chaque marché
  • voir la liste des parcs qui vendent sur un marché

L'API est principalement composée en trois domaines :

  • Les offres associé à un marché(parmi les 3 suivants: la Réserve Primaire, la Réserve Secondaire et la Réserve Rapide.), et sont composé de plusieurs blocs horaires.
  • Les parcs qui ont pour caractéristique d'avoir un type(électrique, éolien, hydraulique), une capacité de production et des bloc horaires à qui ils fournissent l'électricité.
  • Les blocs horaires quant à eux ont une production d'électricité qu'ils présentent, un prix plancher et sont liés à une offre et un parc.

Documentation

Lancer la database

Pour lancer la database, vous devez utilisez la commande au niveau de la racine du projet:

cd docker
docker compose up -d

Lancer l'application

Pour démarrer l'application à partir de l'IDE, il suffit de lancer la classe AgregioKataApplication.
Pour lancer l'application à partir d'un terminal de commande, il faut avoir Maven et un JDK(min. version 21) d'installer , se mettre à la racine du projet et utiliser la commande

mvn spring-boot:run

Visualisation de l'ensemble de l'API

Il est possible de visualiser les endpoints via cette URL: http://localhost:8080/swagger-ui/index.html

Un fichier exemple.http est également fourni pour essayer les endpoints

Le reste à faire et évolutions envisageables

En reste à faire:

  • Augmenter la couverture de test notamment en mettant en place des tests end-to-end pour m'assurer des retours des endpoints en s'aidant d'outils comme MockMVC

Évolutions métiers:

  • Donner la possibilité au bloc d'être associé à plusieurs parcs pour une attribution plus fine et complète de l'énergie.
  • Mettre un prix à l'énergie produit par un parc et rajouter ainsi une contrainte d'attribution d'énergie qui ne peut descendre en dessous du prix plancher du bloc.
  • Mettre en place de la logique concernant le temps sur les blocs d'une même offre (pour éviter que 2 blocs puissent se chevaucher sur une même période)

Évolutions techniques pour une MEP:

  • Mettre en place une sécurité sur les endpoints et ce que ça implique avec (système de rôle et de permission, utilisation d'outils comme Keycloak, etc...)
  • Mise en place de variable d'environnement et de secrets
  • Création d'une CI/CD pour faciliter le déploiement et s'assurer de la qualité du code.