PV de livraison - Edu-Kit - Sprint 5

Version : 5.0.0  |  Date de livraison : 03/06/2026  |  Statut : Livraison concluante
Sprint : Sprint 5 (19/05/2026 - 03/06/2026)


Sommaire

  1. Version de l’application
  2. Équipe
  3. Environnement de livraison
  4. Composants techniques livrés
  5. Backlog du Sprint 5
  6. Recette - État final des tests
  7. Bugs connus
  8. Lexique

1. Version de l’application

Champ Valeur
Version 5.0.0
Sprint Sprint 5
Date de livraison 03/06/2026
Période du sprint 19/05/2026 - 03/06/2026

Cette version correspond à la cinquième livraison incrémentale du projet Edu-Kit. Le numéro de version suit la convention [numéro de sprint].0.0, chaque sprint constituant un incrément produit complet. L’ensemble des user stories engagées au Sprint Planning a été livré et validé avant la date de clôture du sprint.


2. Équipe

Membre Rôle
Gabriel ARNAUD Développeur
Adrien LAMBERT Développeur
Leandre MOREAU Développeur
Anthony ARNOUX Ops
Benoit PRONGUE Ops
Lucie BELAIR Ops
Elias MERTZEISEN Ops

3. Environnement de livraison

Composant URL Notes
Application web (front-end) https://app.edu-kit.fr SPA Angular 21 - accessible depuis l’extérieur
OrgService API https://api.edu-kit.fr/organization-service API REST + gRPC
VmService API https://api.edu-kit.fr/vm-service API REST + gRPC
Keycloak (SSO) https://auth.edu-kit.fr Serveur d’authentification
Documentation https://docs.edu-kit.fr Site Jekyll généré depuis Edukit-Documentation
Grafana (monitoring) https://grafana.edu-kit.fr Tableaux de bord Loki, Prometheus, Tempo

4. Composants techniques livrés

4.1 Services applicatifs

Composant Dépôt Technologie Rôle
OrgService Edukit-OrgService .NET 9 / C# - Clean Architecture + CQRS Gestion des organisations, utilisateurs, groupes, environnements, sessions de travail et licences
VmService Edukit-VM .NET 9 / C# - Clean Architecture + CQRS Provisionnement Proxmox, cycle de vie des VMs, gestion multi-cluster, arrêt automatique sur licence expirée
Edukit-Front Edukit-Front Angular 21 / TypeScript Interface utilisateur (SPA) — gestion des licences, VMs par étudiant, configuration Proxmox, consommation des ressources

4.2 Infrastructure

Composant Technologie Version Rôle
Base de données PostgreSQL 16 Persistance des données OrgService et VmService
Broker de messages RabbitMQ 3.x Communication asynchrone inter-services
Authentification Keycloak 26 SSO OIDC/PKCE - 4 rôles : superadmin, admin, teacher, student
Hyperviseur Proxmox VE 8.x Virtualisation des machines étudiantes (KVM) — architecture multi-cluster (pve4, pve5)
Métriques Prometheus - Collecte des métriques applicatives et système
Logs Loki - Agrégation des journaux applicatifs
Traces Tempo - Tracing distribué (OpenTelemetry)
Observabilité Grafana - Tableaux de bord métriques, logs et traces
Agent de collecte Grafana Alloy - Collecte et transmission des logs sur chaque nœud
Sécurité réseau CrowdSec - Détection et blocage automatique des intrusions
Registry Harbor - Registre privé d’images Docker
CI/CD Azure DevOps - Pipelines de build, test, analyse SonarQube et déploiement
Secrets Bitnami Sealed Secrets - Chiffrement des secrets Kubernetes — SealedSecrets multi-cluster pour les tokens API Proxmox
Ingress Traefik (IngressRoute CRD) - Reverse proxy avec sticky sessions SignalR pour le hub Proxmox

4.3 Nouvelles fonctionnalités livrées dans ce sprint

Composant Fonctionnalité livrée
OrgService Système de licences : entité domaine License avec machine d’état à trois statuts (Active, Revoked, Superseded) et gardes du constructeur (établissement, créateur, maxUsers, plages de dates)
OrgService Émission de licence (IssueLicense) avec supersession transactionnelle d’une licence active existante
OrgService Révocation de licence (RevokeLicense) avec raison, horodatage (RevokedAt) et journal d’audit
OrgService Consultation des licences : GetLicenseById, GetLicensesByEstablishment, SearchLicenses (paginée avec filtres)
OrgService Création d’utilisateurs (CreateUser) avec gate de licence, invitation par e-mail (MailKit) et compensation Keycloak si la persistance en base échoue après création du compte OIDC
VmService Provisionnement individuel de VM par étudiant (CreateVmForStudent) avec gate de licence, vérification des préconditions et publication de la saga de provisionnement
VmService Suppression individuelle de VM par étudiant (DeleteVmForStudent) via saga de destruction, avec gate de licence
VmService Liste des étudiants éligibles sans VM dans un environnement (GetEligibleStudents)
VmService Configuration des plafonds de ressources Proxmox par établissement (GetHypervisorLimits / SetHypervisorLimits) — limites RAM % et stockage %
VmService Consultation de l’état des ressources de l’hyperviseur (GetProxmoxStatus)
VmService Service cloud-init (CloudInitBuilder) : génération du YAML cloud-init pour les VMs Debian (user-data, meta-data, network-config DHCP)
VmService Arrêt automatique des VMs sur licence expirée (ExpiredLicenseVmStopper) — service de background périodique avec déduplication des contrôles de licence par établissement
Edukit-Front Onglet « Licence » dans la page de détail d’un établissement (émission, révocation, renouvellement)
Edukit-Front Bannière d’état de licence (expirée, révoquée, quota atteint) affichée aux utilisateurs finaux concernés
Edukit-Front Interface de gestion des VMs par étudiant dans un environnement (provisionnement et suppression individuels)
Edukit-Front Onglet « Proxmox » dans la page de détail d’un établissement (consultation de l’état et configuration)
Edukit-Front Interface de consultation de la consommation des ressources Proxmox d’un établissement
Edukit-Front Modification du mot de passe utilisateur
Infrastructure Migration vers architecture multi-cluster Proxmox (pve4, pve5) avec seed automatique des hypervisor_clusters au démarrage du service
Infrastructure Remplacement de l’Ingress Kubernetes par un IngressRoute Traefik (CRD natif) pour assurer les sticky sessions SignalR avec plusieurs replicas
Infrastructure SealedSecrets multi-cluster : tokens API Proxmox distincts par nœud (pve4 / pve5) avec volumes SSH correctement montés (defaultMode: 0444)

5. Backlog du Sprint 5

Les estimations sont exprimées en heures et correspondent aux valeurs saisies lors du Sprint Planning dans Azure DevOps. Aucun suivi d’écart post-livraison n’a été formalisé dans les work items ; seule l’estimation initiale est donc reportée ici.

5.1 Tableau récapitulatif

ID User Story Estimation initiale (h) Statut
#93 Définir des limites de ressource pour un établissement 16 Terminée
#139 Modifier son mot de passe 5 Terminée
#771 Voir la consommation d’un établissement 7 Terminée
#772 Alerter sur les ressources de l’établissement 4 Terminée
#774 Modifier les limites pour un établissement 3 Terminée
#790 Émettre une licence d’établissement 7 Terminée
#791 Révoquer une licence émise 3 Terminée
#792 Onglet « Licence » dans le détail d’un établissement 4 Terminée
#793 Bloquer la création d’utilisateur hors statut Active ou au-delà du quota d’utilisateur 3 Terminée
#794 Renouveler une licence 4 Terminée
#795 Bloquer l’usage des fonctionnalités lorsque la licence est expirée 5 Terminée
#796 Bannière utilisateur final reflétant l’état de la licence 3 Terminée
#797 Envoyer les identifiants d’un compte utilisateur par e-mail 10 Terminée
#798 Voir les détails du Proxmox d’un établissement 4 Terminée
#799 Définir les détails du Proxmox d’un établissement 7 Terminée
Total   85 h 15 / 15 terminées

Charge du sprint : 85 heures estimées au Sprint Planning — 15 user stories toutes terminées. L’intégralité des user stories a atteint le statut Done conformément à la Definition of Done avant la date de clôture du sprint.


5.2 Détail des User Stories


US #93 - Définir des limites de ressource pour un établissement

Composant : VmService / Edukit-Front     Estimation : 16 h     Statut : Terminée

Description :
En tant qu’administrateur, je veux définir des limites de sécurité pour les ressources d’un établissement afin de maintenir la continuité du serveur.

Critères d’acceptation :

  • Les limites sont configurables (RAM, CPU, stockage).
  • Les limites sont visibles par les responsables de l’établissement.
  • Il est possible d’activer ou de désactiver chaque limite individuellement.

US #139 - Modifier son mot de passe

Composant : Edukit-Front / Keycloak     Estimation : 5 h     Statut : Terminée

Description :
En tant qu’utilisateur, je veux changer mon mot de passe afin de sécuriser mon compte, notamment si je pense qu’il a été compromis.

Critères d’acceptation :

  • Un utilisateur authentifié peut accéder aux paramètres de son compte et saisir un nouveau mot de passe valide ; le système met à jour son mot de passe avec succès.
  • Si le nouveau mot de passe ne respecte pas les règles de sécurité (complexité, longueur minimale) ou que la confirmation est différente, le système refuse la modification et affiche un message explicite.
  • Après un changement réussi, le système confirme le changement et invalide les sessions existantes si cette règle de sécurité est activée.

US #771 - Voir la consommation d’un établissement

Composant : Edukit-Front / VmService     Estimation : 7 h     Statut : Terminée

Description :
En tant qu’administrateur, je peux consulter la consommation des ressources de mon établissement.

Critères d’acceptation :

  • L’administrateur peut ouvrir la section « Consommation des ressources » et visualiser les données disponibles (CPU, RAM, stockage ou autres ressources suivies).
  • Les données sont présentées de manière lisible (graphiques, indicateurs ou tableaux avec périodes de référence).
  • L’administrateur peut sélectionner une période (jour, semaine, mois) et les données affichées sont mises à jour pour refléter la période choisie.

US #772 - Alerter sur les ressources de l’établissement

Composant : Edukit-Front / VmService     Estimation : 4 h     Statut : Terminée

Description :
En tant qu’administrateur, je peux être alerté si les ressources de mon établissement risquent d’être atteintes.

Critères d’acceptation :

  • Lorsqu’une ressource atteint ou dépasse un seuil d’alerte configuré (par exemple 80 % de sa capacité), une notification est envoyée à l’administrateur.
  • Les ressources à risque sont identifiées dans le tableau de bord avec leur taux d’utilisation et un indicateur de risque.
  • L’alerte contient au minimum le nom de la ressource concernée, son niveau d’utilisation actuel et le seuil ayant déclenché l’alerte.

US #774 - Modifier les limites pour un établissement

Composant : VmService / Edukit-Front     Estimation : 3 h     Statut : Terminée

Description :
En tant qu’administrateur, je veux définir des limites de ressources par cours afin d’éviter la saturation.

Critères d’acceptation :

  • L’administrateur peut définir une limite de ressources pour un cours ; la limite est enregistrée et appliquée au cours concerné.
  • Si l’utilisation des ressources atteint ou dépasse la limite, le système empêche toute allocation supplémentaire ou génère un avertissement selon les règles définies.
  • La modification d’une limite existante est prise en compte immédiatement pour les contrôles futurs.

US #790 - Émettre une licence d’établissement

Composant : OrgService / Edukit-Front     Estimation : 7 h     Statut : Terminée

Description :
En tant que super admin, je veux émettre une licence pour un établissement, pour provisionner manuellement un accès à l’application.

Critères d’acceptation :

  • Le super administrateur peut générer une nouvelle licence pour un établissement ; une licence unique est créée et associée à l’établissement.
  • Le système valide les paramètres (durée, type de licence, nombre d’utilisateurs, etc.) et empêche l’émission si des données sont manquantes ou invalides.
  • Une fois la licence valide émise et activée, l’établissement obtient l’accès provisionné à l’application selon les droits définis par la licence.

US #791 - Révoquer une licence émise

Composant : OrgService / Edukit-Front     Estimation : 3 h     Statut : Terminée

Description :
En tant que super admin, je veux marquer une licence comme révoquée, pour couper l’accès de l’établissement sans attendre l’expiration naturelle.

Critères d’acceptation :

  • Le statut de la licence passe à « révoquée » et n’est plus considérée comme valide.
  • L’accès est refusé immédiatement après révocation, indépendamment de la date d’expiration initiale.
  • Le système enregistre la date, l’auteur de la révocation et la licence concernée dans un journal d’audit.

US #792 - Onglet « Licence » dans le détail d’un établissement

Composant : Edukit-Front / OrgService     Estimation : 4 h     Statut : Terminée

Description :
En tant que super admin, je veux un onglet « Licence » dans la page de détail d’un établissement, pour gérer la licence de cet établissement (état, émission, renouvellement, révocation).

Critères d’acceptation :

  • L’onglet « Licence » est visible et accessible depuis la page de détail d’un établissement.
  • Si une licence existe, le système affiche son état (active, expirée, révoquée), ses dates clés et ses caractéristiques principales.
  • Les actions de gestion (émission, renouvellement, révocation) sont accessibles depuis l’onglet et mettent à jour l’état de la licence avec confirmation de l’opération.

US #793 - Bloquer la création d’utilisateur hors statut Active ou au-delà du quota d’utilisateur

Composant : OrgService / Edukit-Front     Estimation : 3 h     Statut : Terminée

Description :
En tant que super admin, je veux que la création d’utilisateur échoue lorsque la licence est dépassée, pour respecter les règles d’utilisation.

Critères d’acceptation :

  • Si la licence de l’établissement est dans un état non actif (révoquée, expirée), toute création d’utilisateur est refusée avec un message indiquant que la licence n’est pas active.
  • Si le quota d’utilisateurs autorisé par la licence active est atteint ou dépassé, toute nouvelle création est refusée.
  • Un message d’erreur clair précise la cause du blocage (licence inactive ou quota atteint) et empêche la validation de l’opération.

US #794 - Renouveler une licence

Composant : OrgService / Edukit-Front     Estimation : 4 h     Statut : Terminée

Description :
En tant que super admin, je veux renouveler une licence à une nouvelle date d’expiration, pour permettre au client de continuer à utiliser le service.

Critères d’acceptation :

  • Le super administrateur peut modifier la date d’expiration d’une licence existante ; la licence est mise à jour avec la nouvelle date d’expiration.
  • Si la nouvelle date est invalide (antérieure à la date actuelle ou non renseignée), le système refuse le renouvellement et affiche un message d’erreur.
  • Une licence expirée ou proche de l’expiration renouvelée avec succès repasse à un état actif et l’accès au service est maintenu sans interruption.

US #795 - Bloquer l’usage des fonctionnalités lorsque la licence est expirée

Composant : OrgService / VmService     Estimation : 5 h     Statut : Terminée

Description :
En tant que super admin, je veux que les fonctionnalités (ex. machines virtuelles) cessent de fonctionner une fois la licence expirée, pour respecter les conditions d’utilisation du service.

Critères d’acceptation :

  • À l’expiration d’une licence d’établissement, l’accès aux fonctionnalités concernées est automatiquement désactivé.
  • Toute tentative d’action sur une ressource (créer, démarrer ou modifier une VM) est refusée si la licence est expirée, sans aucune modification appliquée.
  • Un message clair indique que la licence est expirée et que l’accès est suspendu jusqu’au renouvellement.

US #796 - Bannière utilisateur final reflétant l’état de la licence

Composant : Edukit-Front / OrgService     Estimation : 3 h     Statut : Terminée

Description :
En tant qu’utilisateur final, je veux voir une bannière claire expliquant l’état de la licence lorsque des restrictions s’appliquent, pour comprendre pourquoi la création ou les fonctionnalités sont indisponibles.

Critères d’acceptation :

  • Une bannière d’information est affichée en haut de l’interface lorsque la licence est dans un état restrictif (expirée, révoquée, quota dépassé).
  • La bannière indique clairement la cause de la restriction (ex. licence expirée, quota atteint) et l’impact sur les fonctionnalités.
  • La bannière est mise à jour ou supprimée dynamiquement si l’état de la licence change (renouvellement, révocation ou retour à l’état actif).

US #797 - Envoyer les identifiants d’un compte utilisateur par e-mail

Composant : OrgService / Edukit-Front     Estimation : 10 h     Statut : Terminée

Description :
En tant qu’administrateur, je veux pouvoir envoyer les identifiants d’un compte utilisateur par mail afin que l’utilisateur puisse utiliser son compte.

Critères d’acceptation :

  • Lors de la création d’un utilisateur, un e-mail d’invitation est envoyé automatiquement avec les identifiants de connexion.
  • Si le service SMTP est indisponible, la création de l’utilisateur réussit tout de même (envoi d’e-mail non bloquant).
  • Si la persistance en base de données échoue après la création du compte Keycloak, le compte est désactivé dans Keycloak (compensation) pour éviter un état incohérent entre Keycloak et la base de données.

US #798 - Voir les détails du Proxmox d’un établissement

Composant : Edukit-Front / VmService     Estimation : 4 h     Statut : Terminée

Description :
En tant que super admin, je veux un onglet « Proxmox » dans la page de détail d’un établissement, pour voir sa configuration Proxmox.

Critères d’acceptation :

  • L’onglet « Proxmox » est visible et accessible depuis la page de détail d’un établissement pour le rôle superadmin.
  • L’onglet affiche les informations configurées (URL du serveur, cluster, nœud, statut de connexion, etc.).
  • Si aucune configuration Proxmox n’est associée à l’établissement ou que les données sont indisponibles, un message explicite l’indique.

US #799 - Définir les détails du Proxmox d’un établissement

Composant : Edukit-Front / VmService     Estimation : 7 h     Statut : Terminée

Description :
En tant que super admin, je veux pouvoir définir les différentes propriétés du Proxmox de l’établissement, pour y accéder lors du provisionnement de VM.

Critères d’acceptation :

  • Le super administrateur peut renseigner ou modifier les propriétés Proxmox (URL/API, cluster, nœud, stockage, pool, identifiants techniques) ; les informations sont enregistrées et associées à l’établissement.
  • Si une propriété obligatoire est absente ou invalide, le système bloque l’enregistrement et affiche les erreurs de validation correspondantes.
  • Lors du provisionnement d’une VM, le système récupère automatiquement les propriétés Proxmox configurées pour l’établissement et les utilise pour exécuter le provisionnement.

6. Recette - État final des tests

6.1 Tests unitaires

Les tests unitaires s’exécutent entièrement en mémoire, sans aucune dépendance externe (pas de Docker, pas de base de données réelle). Toutes les dépendances sont substituées par des mocks (bibliothèque Moq).

Composant Fichiers de test Tests exécutés Réussis Échoués Ignorés
OrgService 107 578 578 0 0
VmService 92 563 563 0 0
Edukit-Front 2 4 4 0 0
Total 201 1 145 1 145 0 0

Le Sprint 5 a contribué environ 131 nouveaux tests à la suite cumulée (69 OrgService + 46 VmService unitaires + 16 VmService infrastructure). L’intégralité des 1 145 tests unitaires est en succès à la date de livraison.

6.2 Tests d’infrastructure (VmService)

Les tests d’infrastructure vérifient les adaptateurs vers les systèmes externes (Proxmox HTTP, gRPC, background services) en simulant leurs réponses via des intercepteurs HTTP et des mocks. Aucune connexion réseau réelle n’est établie lors de l’exécution.

Fichiers de test Tests exécutés Réussis Échoués
12 105 105 0

Ce sprint a ajouté 5 nouveaux tests d’infrastructure : ExpiredLicenseVmStopperTests (arrêt automatique des VMs sur licence expirée). Les tests VmProvisioningServiceTests ont également été étendus dans ce sprint.

6.3 Tests manuels

La validation manuelle est réalisée sur l’environnement de développement local avant l’ouverture de chaque pull request.

Fonctionnalité testée Outil Résultat Observations
Émission de licence Insomnia (collection partagée) Réussi Licence créée à l’état Active
Émission de licence — supersession Insomnia (collection partagée) Réussi Ancienne licence passée à Superseded, nouvelle créée
Révocation de licence Insomnia (collection partagée) Réussi RevokedAt et RevokedBy enregistrés
Création utilisateur Insomnia (collection partagée) + Mailpit Réussi E-mail d’invitation reçu avec credentials
Création utilisateur — gate licence Insomnia (collection partagée) Réussi 403 retourné avant appel Keycloak
CreateVmForStudent Interface Angular + Insomnia Réussi VM passée à Pending puis provisionnée via saga
DeleteVmForStudent Insomnia (collection partagée) Réussi VM passée à Destroyed
SetHypervisorLimits Insomnia (collection partagée) Réussi Limites sauvegardées, GET retourne les bonnes valeurs
SetHypervisorLimits — effacement Insomnia (collection partagée) Réussi Limites supprimées
ExpiredLicenseVmStopper Environnement local + logs Réussi VMs arrêtées automatiquement au cycle suivant après révocation de licence
CloudInitBuilder — provisionnement VM Debian Proxmox VE (dev) + Angular Réussi VM démarrée, connexion SSH avec le mot de passe généré

6.4 Analyse statique - SonarQube

Critère Résultat Seuil Statut
Quality Gate global Grade A Grade A Réussi
Couverture de code - OrgService ≥ 60 % ≥ 60 % Réussi
Couverture de code - VmService ≥ 60 % ≥ 60 % Réussi
Couverture de code - Edukit-Front < 40 % ≥ 40 % (objectif) Non atteint - non bloquant
Nouvelles violations sécurité 0 0 Réussi
Nouvelles violations fiabilité 0 0 Réussi
Nouvelles violations maintenabilité Informatif - Informatif
Commentaires SonarQube sur PR traités Oui Oui Réussi

6.5 Pipeline CI/CD - Azure DevOps

Étape Statut
Build - OrgService + VmService + Edukit-Front Réussi
Tests unitaires (dotnet test) Réussi
Tests d’infrastructure (dotnet test) Réussi
Tests frontend (npx ng test - Vitest + jsdom) Réussi
Collecte couverture (coverlet → SonarQube Cloud) Réussi
Analyse SonarQube - Quality Gate Réussi

L’ensemble du pipeline est au vert. Chaque pull request fusionnée dans main a reçu au minimum une approbation de reviewer et a satisfait l’intégralité des critères de livraison définis dans la stratégie de test.


7. Bugs connus

7.1 Bugs corrigés et livrés dans ce sprint

ID Description Composant Criticité Statut
#738 Problème de déploiement continu (CD) sur OrgService — pipeline non fonctionnel après modifications de configuration CI/CD / Azure DevOps Mineur Corrigé et livré
#744 Problème de sauvegarde (backup) sur l’hyperviseur Proxmox Infrastructure Mineur Corrigé et livré
#827 Anomalie comportementale sur les environnements de travail détectée en validation OrgService / Infrastructure Mineur Corrigé et livré
#830 Déploiement entièrement non fonctionnel après migration vers l’architecture multi-cluster Proxmox : Proxmox inaccessible (permissions SSH incorrectes 04000444, variables d’environnement manquantes, tokens API inversés entre pve4 et pve5) et hub SignalR injoignable (sticky sessions Traefik non fonctionnelles avec l’Ingress standard, corrigé par migration vers IngressRoute CRD) Infrastructure / VmService / Kubernetes Majeur Corrigé et livré

7.2 Bugs ouverts (non résolus à la livraison)

Aucun bug fonctionnel ouvert à la date de livraison.

7.3 Anomalies qualité persistantes

Ces anomalies sont issues du rapport de test qualité et font l’objet d’un suivi dans la feuille de route qualité.

ID Description Composant Criticité Statut
AN-001 Couverture de test frontend insuffisante : 4 tests pour l’ensemble du projet Angular. Le Sprint 5 a livré des composants supplémentaires (gestion des licences, VMs par étudiant, configuration hyperviseur) sans nouveau test associé. La dette s’accumule à chaque sprint — à prioriser en Sprint 6. Edukit-Front Mineur Ouvert - extension Vitest planifiée à court terme
AN-002 Absence de tests end-to-end : aucun parcours utilisateur complet automatisé (connexion Keycloak → provisionnement VM → session de travail) Tous Mineur Ouvert - Playwright planifié à moyen terme
AN-003 Keycloak non couvert par des tests automatisés - pannes d’authentification détectées uniquement en validation manuelle Tous Mineur Ouvert - infrastructure externe, validation manuelle systématique
AN-004 Asymétrie InfrastructureTests : OrgService ne dispose pas de projet de tests d’infrastructure (vs. VmService : 12 fichiers). Le Sprint 5 a ajouté des dépendances d’infrastructure côté OrgService (SmtpEmailSender, gate de licence, compensation Keycloak) qui ne sont pas couvertes par des tests d’infrastructure. OrgService Mineur Ouvert - ajout planifié à court terme

7.4 Récapitulatif

Criticité Total Corrigés et livrés En cours Non analysés Ouverts (qualité)
Bloquant 0 0 0 0 0
Critique 0 0 0 0 0
Majeur 1 1 0 0 0
Mineur 7 3 0 0 4

Aucune anomalie bloquante ou critique n’est ouverte à la date de livraison. La livraison est concluante.


8. Lexique

Terme Définition
AES-256-GCM Algorithme de chiffrement symétrique authentifié utilisé pour transporter de façon sécurisée les credentials VM entre VmService et OrgService via RabbitMQ
CI/CD Continuous Integration / Continuous Delivery - automatisation du build, des tests et du déploiement à chaque modification de code
Clean Architecture Architecture logicielle organisant le code en couches concentriques (Domain → Application → Infrastructure → API) avec des dépendances orientées vers le centre
Cloud-init Standard de configuration des VMs au premier démarrage (hostname, utilisateurs, packages, réseau) via des fichiers YAML (user-data, meta-data, network-config)
CQRS Command Query Responsibility Segregation - pattern séparant les opérations d’écriture (Commands) des opérations de lecture (Queries)
E2E End-to-End - test automatisé du parcours complet d’un utilisateur à travers toutes les couches du système
Gate de licence Contrôle applicatif vérifiant que la licence de l’établissement autorise une fonctionnalité avant d’exécuter une commande
gRPC Protocole d’appel de procédure à distance haute performance basé sur HTTP/2 et Protocol Buffers, utilisé pour la communication synchrone entre OrgService et VmService
Idempotence Propriété d’une opération produisant le même résultat qu’elle soit exécutée une ou plusieurs fois, garantissant la sécurité des rejeux en cas de retry
IngressRoute Ressource CRD (Custom Resource Definition) native de Traefik permettant une configuration avancée du routage, notamment les sticky sessions pour SignalR
Machine d’état Modèle de conception représentant les transitions d’un objet entre un ensemble fini d’états (ici : ActiveRevoked ou Superseded pour l’entité License)
MailKit Bibliothèque .NET de gestion d’e-mails via SMTP, utilisée pour l’envoi des e-mails d’invitation utilisateur lors de la création de compte
Mock Objet simulé remplaçant une dépendance réelle lors d’un test, permettant de contrôler son comportement et de vérifier les interactions
OIDC / PKCE OpenID Connect / Proof Key for Code Exchange - flux d’authentification sécurisé utilisé par Keycloak pour émettre des tokens JWT
OpenTelemetry Standard open-source pour la collecte de métriques, logs et traces distribués, utilisé pour l’observabilité de l’ensemble de la plateforme
Proxmox VE Hyperviseur open-source de virtualisation (VMs KVM) sur lequel sont déployées les machines étudiantes
qemu-guest-agent Agent s’exécutant à l’intérieur de la VM permettant à l’hyperviseur Proxmox d’y envoyer des commandes
Quality Gate Ensemble de critères de qualité configurés dans SonarQube dont le non-respect bloque automatiquement le merge d’une pull request
RabbitMQ Broker de messages open-source utilisé pour la communication asynchrone entre OrgService et VmService
Saga Pattern de gestion de processus longs et distribués via une séquence d’étapes avec mécanisme de compensation en cas d’échec
SealedSecret Ressource Kubernetes chiffrée (Bitnami Sealed Secrets) permettant de stocker des secrets de façon sécurisée dans le dépôt GitOps
SignalR Bibliothèque ASP.NET Core permettant des communications temps réel entre le serveur et les clients via WebSocket
SPA Single Page Application - application web dont le rendu est géré côté client ; Edukit-Front est une SPA Angular
Estimation en heures Unité d’estimation utilisée par l’équipe pour chiffrer la charge de travail d’une user story lors du Sprint Planning, exprimée en heures et saisie dans le champ Story Points d’Azure DevOps
SSO Single Sign-On - mécanisme d’authentification centralisée permettant à un utilisateur de se connecter une seule fois pour accéder à plusieurs services
Supersession Mécanisme par lequel l’émission d’une nouvelle licence pour un établissement invalide automatiquement (état Superseded) la licence active précédente, dans la même transaction
User Story Fonctionnalité décrite du point de vue de l’utilisateur final (format : En tant que… je veux… afin de…), servant d’unité de planification et de livraison dans la méthode Scrum
Wolverine Bibliothèque .NET de messaging (RabbitMQ) et d’implémentation de sagas, utilisée dans OrgService et VmService

Retour en haut