Historique des versions
| Version | Date | Rédacteur | Description |
|---|---|---|---|
1.0.0 |
18/06/2026 |
Équipe Technique |
Version initiale |
1.1.0 |
11/10/2026 |
Équipe Technique |
Mise à jour d’ensemble. Les cas d’utilisation, les règles de gestion et les scénarios de recette sont alignés sur le comportement attendu de la solution. Les schémas de données, les vues d’exécution et les diagrammes de séquence sont repris sur le modèle et les échanges livrés. Le dictionnaire des données est ramené aux tables structurantes, le modèle complet étant porté en annexe. Les documents sont mis en cohérence entre eux sur les statuts, les rôles, les interfaces et les nomenclatures. |
Diffusion
| Destinataires | Pour validation | Pour information |
|---|---|---|
COPIL |
X |
Validation
| Représentants | Valideur | Date |
|---|---|---|
DCE |
||
MND |
||
ASIN |
||
MESRS - DSI |
||
UNIVERSITÉS - DSI |
||
DSI Présidence |
1. Introduction et Objectifs
1.1. Périmètre du document
Ce document décrit les spécifications techniques détaillées du module bdes-evaluation, plateforme pour l’évaluation des enseignants du supérieur au Bénin.
|
Le contexte général, les parties prenantes et l’architecture transverse sont documentés dans le Document d’Architecture Technique (DAT) : |
1.2. Périmètre fonctionnel bdes-evaluation
Le module bdes-evaluation couvre :
-
Campagnes d’évaluation : Création, activation, clôture des campagnes
-
Dossiers enseignants : Constitution, soumission, suivi des dossiers
-
Évaluations pédagogiques : Formulaires anonymes remplis par les étudiants
-
CTE : Commissions Techniques d’Évaluation (assignation, évaluation, signatures)
-
Validation DCE : Validation finale par le Délégué DCE
-
Rapports : Génération de rapports PDF et statistiques
1.3. Objectifs de qualité spécifiques
| Priorité | Objectif | Cible module évaluation |
|---|---|---|
1 |
Anonymat évaluations |
Aucune donnée identifiante collectée lors des évaluations pédagogiques |
2 |
Génération rapports |
PDF généré en < 10 secondes pour 1000+ soumissions |
3 |
Mode hors-ligne |
Remplissage formulaires offline avec synchronisation différée |
4 |
Codes d’accès |
Génération sécurisée, usage unique, invalidation immédiate après soumission |
1.4. Interfaces principales
Le module bdes-evaluation :
-
Consomme les données du module bdes-referentiel par appel de service à service (universités, UFR, enseignants)
-
S’authentifie via Keycloak (SSO gouvernemental)
-
Stocke les fichiers enseignants sur MinIO (S3-compatible)
-
Notifie via Kafka → notifications-api-ms → SMTP
2. Contraintes d’Architecture
|
Les contraintes techniques transverses (PostgreSQL, Spring Boot, Kubernetes, TLS, etc.) sont documentées dans le DAT - Contexte et Enjeux. |
2.1. Contraintes métier spécifiques bdes-evaluation
| Contrainte | Description |
|---|---|
Mode hors-ligne |
Remplissage des formulaires d’évaluation en mode hors-ligne avec synchronisation ultérieure. |
Anonymat des évaluations |
Évaluations pédagogiques étudiants : aucune information identifiante collectée ou stockée. |
Codes d’accès uniques |
Chaque événement d’évaluation génère des codes d’accès uniques, sécurisés et à usage unique. |
Versionnement formulaires |
Un formulaire publié ne peut pas être modifié. Toute modification crée une nouvelle version. |
Périodes d’activation |
Évaluations actives uniquement pendant leur période définie. Aucune soumission hors période. |
Notifications automatiques |
Notifications obligatoires pour les événements critiques (campagne, rappels, résultats). |
2.2. Contraintes techniques spécifiques
| Contrainte | Description |
|---|---|
Génération PDF |
Rapports PDF générés côté serveur. Bibliothèque : iText ou Apache PDFBox. |
Stockage fichiers |
Pièces jointes enseignants stockées sur MinIO (S3-compatible), bucket |
Cache référentiels |
Données bdes-referentiel mises en cache Redis (TTL 24h) pour réduire les appels X-ROAD. |
3. Contexte et périmètre
3.2. Acteurs
| Acteur | Interactions |
|---|---|
Étudiant |
Accède aux évaluations via lien + code, soumet formulaires anonymes |
Enseignant |
Constitue et soumet son dossier, consulte ses résultats |
Évaluateur |
Évalue les dossiers assignés au sein d’un CTE |
Superviseur |
Coordonne les CTE, assigne les dossiers aux évaluateurs |
Responsable Académique |
Consulte les résultats de son périmètre (UFR) |
Délégué DCE |
Crée les formulaires, valide les dossiers finaux |
Administrateur |
Administre les utilisateurs et la plateforme |
3.3. Systèmes externes
| Système | Rôle |
|---|---|
Keycloak |
Authentification SSO, gestion des rôles |
bdes-referentiel |
Fournit les données référentielles par appel de service à service (universités, enseignants) |
ANIP |
Validation du NIP (optionnel) |
MinIO |
Stockage des pièces jointes enseignants (S3-compatible) |
SMTP |
Envoi des notifications email |
3.4. Spécification API
| Propriété | Valeur |
|---|---|
URL de base |
|
Authentification |
Bearer JWT (OAuth2/OIDC via Keycloak) |
Format |
JSON |
Documentation |
|
Domaines fonctionnels :
-
Evaluations — Gestion des campagnes (CRUD, statuts, formulaires associés)
-
Forms — Gestion des formulaires (CRUD, versioning, publication)
-
Answers — Soumission et consultation des réponses anonymisées
-
Dossiers — Constitution et suivi des dossiers enseignants
-
CTE — Commissions techniques d’évaluation
3.5. Flux de données critiques
| Flux | Description |
|---|---|
Soumission évaluation |
Étudiant → code + formulaire → validation période → anonymisation → PostgreSQL |
Constitution dossier |
Enseignant → upload pièces → MinIO + métadonnées PostgreSQL → soumission |
Évaluation CTE |
Rapporteur → grille + rapport → signatures membres → notification Délégué |
Validation DCE |
Délégué → appréciation → signature → notification enseignant |
Synchronisation référentiel |
evaluation-api-ms → bdes-referentiel, par appel de service à service → cache Redis (TTL 24 h) |
4. Stratégie de solution
|
L’architecture microservices, les patterns de communication et les stratégies de qualité transverses sont documentés dans le DAT - Architecture Applicative. |
4.1. Stratégies spécifiques bdes-evaluation
4.1.1. Anonymisation des évaluations pédagogiques
-
Aucune information identifiante collectée lors de la soumission
-
Code d’accès unique par événement d’évaluation (non lié à l’étudiant)
-
Agrégation statistique : résultats présentés uniquement de manière agrégée
-
Stockage anonyme : aucune jointure possible vers l’identité du répondant
4.1.2. Mode hors-ligne
Le module supporte le remplissage offline pour les zones à faible connectivité :
-
Chargement : Le formulaire est chargé dans le navigateur avec le code d’accès
-
Remplissage offline : L’utilisateur complète le formulaire sans connexion
-
Synchronisation : Dès retour de la connexion, les données sont envoyées au serveur
-
Validation : Le serveur valide le code, la période et enregistre la soumission
4.2. Architecture en couches
Chaque microservice du module respecte l’architecture en couches :
| Couche | Responsabilité |
|---|---|
Controllers |
Endpoints REST, validation entrées, mapping DTOs |
Services |
Logique métier, orchestration opérations |
Repositories |
Accès données via Spring Data JPA |
Adapters |
Intégration des services d’infrastructure (MinIO, Kafka) et du référentiel |
5. Vue en Briques
5.1. Niveau 1 : Conteneurs
Décomposition du système bdes-evaluation en conteneurs déployables indépendamment.
5.1.1. Application Web
Interface utilisateur Nuxt.js/Vue.js responsive. Consomme l’API Gateway (HTTPS/JSON) et s’authentifie via Keycloak (OAuth2/OIDC).
5.1.2. API Gateway
Point d’entrée unique (KGateway). Routage vers les services du module, limitation de débit, coupe-circuit. La validation du jeton est faite par chaque service, sur les clés publiques du fournisseur d’identité.
5.1.3. evaluation-api-ms
Domaine évaluation : campagnes, formulaires, réponses, dossiers. Appelle bdes-referentiel de service à service, MinIO pour les fichiers, Kafka pour les évènements.
5.1.4. users-api-ms
Service des comptes et des rôles. Keycloak est la source unique de l’identité ; ce service en tient le reflet local et le maintient à jour :
-
Évènements Keycloak : un Event Listener SPI transmet les créations, modifications et suppressions de comptes, les changements de groupe et les inscriptions. La réception est authentifiée par signature.
-
Synchronisation de rattrapage : un parcours de l’annuaire réaligne le reflet lorsque des évènements ont été perdus, et recense les comptes connus localement mais disparus de l’annuaire.
-
Demandes de rôles : dépôt, approbation ou rejet, puis inscription du rôle dans le groupe Keycloak correspondant et projection vers evaluation-api.
-
Rattachement au Référentiel : lors d’une demande de rôle, l’utilisateur revendique la fiche du Référentiel qui le désigne ; la confirmation propage son matricule et son identifiant national.
La synchronisation va de Keycloak vers ce service, et jamais l’inverse. Le Référentiel n’est pas une source de comptes : c’est une fiche qu’un compte revendique.
5.1.5. notifications-api-ms
Remise des notifications sur deux canaux : le courriel, et le dépôt dans l’application avec poussée en temps réel par WebSocket/STOMP. Consomme les évènements Kafka, répartis sur trois files selon leur priorité, et les déduplique par clé d’idempotence. Le contenu est composé depuis un modèle traduit, avec repli sur le français. Les canaux servis dépendent des préférences du destinataire. L’état de remise est conservé par canal.
L’abonnement en temps réel exige un jeton valide et n’est accordé qu’à la file personnelle du destinataire, à la diffusion générale, ou au canal d’un rôle qu’il porte.
5.1.6. Bases de données
Chaque microservice dispose de sa propre base de données (pattern Database per Service), garantissant l’isolation et l’autonomie des équipes.
6. Vue Exécution
Scénarios d’exécution critiques illustrant les interactions entre composants.
6.1. Scénario 1 : Inscription Utilisateur
Étapes principales :
-
L’utilisateur accède à la page d’inscription via Keycloak
-
Saisie des informations personnelles (nom, email institutionnel, NIP, matricule)
-
Keycloak valide le domaine email (@gouv.bj, @mesrs.bj, @edu.bj)
-
Création du compte et envoi de l’email de confirmation
-
Activation du compte après confirmation
-
Event Listener SPI Keycloak transmet l’évènement d’inscription à users-api-ms
-
Création du reflet local : users-api-ms crée l’enregistrement du compte à partir des données portées par l’évènement, sans interroger l’annuaire ni le référentiel. Le matricule et l’identifiant national, s’ils ont été saisis, sont conservés comme attributs du compte
-
Rattachement au référentiel : il n’intervient pas à l’inscription. Il se produit lors de la première demande de rôle, lorsque l’utilisateur revendique la fiche du référentiel qui le désigne ; la confirmation de cette revendication lie le compte à la fiche
-
Projection vers Évaluation : elle suit le rôle, non le compte. Un utilisateur sans rôle n’est pas projeté dans evaluation-api-ms, ce qui est un cas normal et non une erreur
Aspects notables :
-
Synchronisation asynchrone via Event Listener SPI, avec signature de l’évènement
-
Le reflet local est alimenté par l’évènement, sans appel sortant
-
Liaison à la fiche du référentiel par revendication, lors de la demande de rôle
-
Le format de l’identifiant national est contrôlé — dix chiffres — sans vérification externe
6.2. Scénario 2 : Authentification Utilisateur
Étapes principales :
-
L’utilisateur accède à l’application web
-
L’application web constate l’absence de session et redirige vers Keycloak
-
L’utilisateur saisit ses credentials (ou utilise SSO si déjà authentifié)
-
Keycloak valide les credentials et retourne un code d’autorisation
-
L’application web échange le code contre des tokens JWT (access + refresh)
-
Toutes les requêtes suivantes incluent l’access token dans l’en-tête Authorization
-
La passerelle route la requête vers le service visé ; le service valide lui-même le jeton sur les clés publiques du fournisseur d’identité
Aspects notables :
-
Support SSO entre services gouvernementaux
-
Jetons JWT : durée de vie du jeton d’accès de 30 minutes, session SSO expirant après 30 minutes d’inactivité et 10 heures au maximum
-
Refresh automatique transparent
6.3. Scénario 3 : Création d’une Campagne d’Évaluation
Étapes principales :
-
Le Délégué DCE accède à l’interface de création de campagne
-
Saisie des informations de la campagne (intitulé, année académique, période, type d’évaluation)
-
Sélection des critères de ciblage des enseignants (université, grade, ancienneté, etc.)
-
Récupération des enseignants depuis BDES Référentiel, par appel de service à service :
-
Requête avec les critères de filtrage
-
Retour de la liste des enseignants éligibles avec leurs informations
-
-
Pour chaque enseignant retourné :
-
Vérification si l’enseignant existe dans evaluation-api-ms
-
Si absent : création automatique avec liaison vers l’identifiant du référentiel (
referentiel_user_id) -
Si présent : mise à jour des informations si nécessaire
-
-
Création de la campagne avec association des enseignants ciblés
-
Création automatique des dossiers vides pour chaque enseignant
-
Publication d’un événement Kafka pour notifications
Aspects notables :
-
Récupération en temps réel des enseignants depuis le référentiel
-
Synchronisation automatique enseignants référentiel → évaluation
-
Liaison vers la fiche du référentiel par
referentiel_user_id -
Création automatique des dossiers enseignants
-
Traçabilité complète (audit trail)
6.4. Scénario 4 : Constitution d’un Dossier Enseignant
Étapes principales :
-
L’enseignant accède à son dossier en cours (créé automatiquement lors de la campagne)
-
Complétion du CV numérique et ajout des publications (3 dernières années)
-
Dépôt des pièces justificatives dans MinIO, depuis les rubriques du dossier ou depuis une question de type fichier d’un formulaire ; le plafond par fichier est le paramètre applicatif
file.max-size-mb -
Renseignement des contrats d’enseignement
-
Validation de la complétude du dossier par le système
-
Soumission du dossier (statut passe à SOUMIS)
-
Publication d’un événement Kafka pour notifier le Superviseur
Aspects notables :
-
Stockage sécurisé des fichiers sur MinIO (S3-compatible)
-
Validation de complétude côté serveur (CV, publications, contrats requis)
-
Soumission irréversible (sauf demande de révision par le CTE)
-
Notification asynchrone du Superviseur
6.5. Scénario 5 : Assignation d’un Dossier à un CTE
Étapes principales :
-
Le Superviseur consulte les dossiers soumis en attente d’assignation
-
Sélection d’un dossier et création du CTE (1 à 5 évaluateurs)
-
Désignation du rapporteur principal parmi les évaluateurs
-
Le système vérifie les conflits d’intérêt pour chaque évaluateur proposé
-
Si conflits détectés, le système retourne les raisons et demande d’autres évaluateurs
-
Si aucun conflit, le CTE est créé et les évaluateurs sont notifiés
Règles de conflit d’intérêt :
-
Même UFR/département que l’enseignant évalué
-
Co-auteur de publications récentes
-
Lien hiérarchique direct
Aspects notables :
-
Détection automatique des conflits d’intérêt
-
Consultation des données Référentiel par appel de service à service
-
Notification asynchrone des évaluateurs via Kafka
6.6. Scénario 6 : Création d’un Événement d’Évaluation Pédagogique
Étapes principales :
-
Le Délégué DCE renseigne la session d’évaluation : formulaire, enseignement visé, période
-
La passerelle route la requête vers le Service Évaluations, qui valide le jeton et les habilitations qu’il porte
-
Le Service Évaluations vérifie l’existence et la validité du formulaire sélectionné
-
Le Service Évaluations vérifie l’existence de la ressource à évaluer (enseignant, cours, etc.)
-
Génération d’un code d’accès unique, tiré aléatoirement sur un alphabet sans caractères ambigus, de longueur paramétrable ; son unicité est garantie par une contrainte en base
-
Enregistrement de l’événement en base de données
-
Publication d’un événement Kafka pour notifications asynchrones
-
Le système de notifications envoie automatiquement les notifications aux parties prenantes, par courriel et par dépôt dans l’application
Aspects notables :
-
Validation en cascade (formulaire, ressource, période)
-
Code d’accès sécurisé à usage unique
-
Notifications asynchrones via Kafka
-
Transaction atomique avec rollback
-
Audit trail complet
6.7. Scénario 7 : Évaluation par le CTE
Étapes principales :
-
Les membres du CTE consultent le dossier complet de l’enseignant
-
Le CTE vérifie la complétude du dossier
-
Si incomplet : demande de révision (statut → EVALUATION_REVISION_ENSEIGNANT_REQUISE_CTE), notification enseignant
-
Si complet : poursuite de l’évaluation
-
-
Le rapporteur remplit la grille d’évaluation et rédige le rapport de synthèse
-
Le rapporteur signe électroniquement son évaluation
-
Chaque membre du CTE consulte le rapport et signe (accord ou réserve avec observation)
-
Une fois toutes les signatures collectées, le dossier passe au statut EVALUATION_VALIDATION_CTE
-
Le Délégué DCE est notifié pour validation finale
Aspects notables :
-
Workflow de signatures multiples (rapporteur + membres)
-
Possibilité d’observations divergentes
-
Traçabilité complète des signatures et horodatage
-
Notification automatique à chaque étape
6.8. Scénario 8 : Soumission d’Évaluation Pédagogique par un Étudiant
Étapes principales :
-
L’étudiant accède au lien d’évaluation et saisit le code d’accès fourni
-
Le système valide le code et vérifie que l’évaluation est dans sa période d’activation
-
Si valide, le formulaire d’évaluation est affiché
-
L’étudiant remplit toutes les questions obligatoires
-
À la soumission, les données sont anonymisées (suppression de toute information identifiante)
-
La soumission est enregistrée en base de données de manière anonyme
-
Le code d’accès est immédiatement invalidé (usage unique)
-
L’écran confirme la prise en compte de la réponse, sans rien enregistrer qui identifie l’étudiant
Aspects notables :
-
Anonymat garanti (aucune donnée identifiante stockée)
-
Validation stricte de la période d’activation
-
Code d’accès à usage unique
-
Validation réponses obligatoires (client et serveur)
-
Reçu anonyme horodaté
6.9. Scénario 9 : Validation Finale par le Délégué DCE
Étapes principales :
-
Le Délégué DCE consulte les dossiers au statut EVALUATION_VALIDATION_CTE
-
Consultation du dossier complet : rapport CTE, évaluations pédagogiques agrégées, signatures
-
Rédaction de l’appréciation finale
-
Sélection de la décision : FAVORABLE, DEFAVORABLE ou RESERVES
-
Signature électronique du Délégué DCE
-
Le dossier passe au statut EVALUATION_VALIDATION_DCE
-
La publication à l’enseignant est un geste distinct : le dossier passe alors au statut DISPONIBLE_POUR_ENSEIGNANT et l’enseignant est notifié
Aspects notables :
-
Vue consolidée (dossier + rapport CTE + évaluations pédagogiques)
-
Évaluations pédagogiques présentées de manière agrégée et anonyme
-
Signature électronique obligatoire
-
Décision et commentaire enregistrés dans l’audit trail
-
Notification automatique de l’enseignant
6.10. Scénario 10 : Consultation de ses résultats par l’enseignant
Étapes principales :
-
L’enseignant choisit la campagne dont il veut consulter le résultat
-
Le service ne lui rend que les évaluations de son propre dossier, et seulement celles qui ont été publiées
-
Il consulte l’évaluation, les signatures de la commission et les rapports qui l’accompagnent
-
Les pièces jointes sont servies depuis le stockage objet
-
L’impression du formulaire renseigné se fait depuis le navigateur
Aspects notables :
-
Autorisation par la requête elle-même : propriétaire du dossier, et évaluation publiée
-
Agrégation de données anonymisées pour les évaluations pédagogiques
-
Les analyses chiffrées — moyennes, distributions, comparaisons — et leurs exports relèvent des tableaux de bord décisionnels, alimentés par l’entrepôt de données
7. Vue Déploiement
|
L’infrastructure Kubernetes, le dimensionnement des machines et les composants transverses sont documentés dans le DAT - Architecture Physique. |
7.1. Vue déploiement bdes-evaluation
|
Le dimensionnement des pods, la configuration Kubernetes et les points d’accès sont documentés dans le DAT - Architecture Physique. |
7.2. Composants déployés (namespace bdes-evaluation)
| Composant | Rôle |
|---|---|
evaluation-api-ms |
API REST principale du module évaluation |
users-api-ms |
Gestion des utilisateurs, synchronisation Keycloak |
notifications-api-ms |
Envoi des notifications par courriel et par dépôt dans l’application |
Frontend Vue.js |
Interface utilisateur SPA |
7.3. Dépendances externes
-
PostgreSQL : Base de données
bdes_evaluation -
Kafka : trois files par priorité,
<env>.notifications-high,-mediumet-low -
MinIO : bucket
bdes-data(pièces des dossiers enseignants) -
Redis : Cache sessions et données référentielles
-
Keycloak : Authentification OIDC
-
bdes-referentiel : appel de service à service, avec un compte de service
8. Concepts transversaux
Cette section présente les concepts transversaux et les solutions techniques applicables au module bdes-evaluation. Les aspects transversaux à la plateforme BDES sont documentés dans le DAT.
|
Pour les concepts transversaux à toute la plateforme BDES, consulter le Document d’Architecture Technique (DAT) :
|
8.1. Sécurité (Spécificités Module Évaluation)
8.1.1. Rôles Applicatifs bdes-evaluation
Le système BDES utilise une gestion centralisée des rôles via Keycloak (voir DAT Sécurité). Les rôles spécifiques au module évaluation sont :
| Rôle | Permissions module évaluation |
|---|---|
ROLE_ETUDIANT |
Réponse aux évaluations pédagogiques, de façon anonyme |
ROLE_ENSEIGNANT |
Consultation/constitution dossier d’évaluation personnel |
ROLE_EVALUATEUR |
Évaluation des dossiers assignés au sein d’un CTE |
ROLE_SUPERVISEUR |
Coordination CTE, validation collégiale des rapports |
ROLE_DELEGUE |
Création formulaires, validation finale DCE |
8.1.2. Anonymisation des Évaluations Étudiants
Le module évaluation implémente une anonymisation stricte pour les évaluations pédagogiques :
-
Aucune information identifiante n’est collectée lors de la soumission
-
Code d’accès unique généré par événement d’évaluation (non lié à l’étudiant)
-
Agrégation statistique : résultats présentés uniquement sous forme agrégée
8.2. Gestion des erreurs
|
Le format de réponse standardisé et les codes d’erreur transverses (ERR-AUTH-, ERR-AUTHZ-) sont documentés dans le DAT - Architecture Applicative. |
8.2.1. Codes d’erreur spécifiques bdes-evaluation
| Code | Description |
|---|---|
ERR-EVAL-001 |
Code d’accès invalide |
ERR-EVAL-002 |
Période d’évaluation expirée |
ERR-EVAL-003 |
Évaluation déjà soumise (code usage unique) |
ERR-FORM-001 |
Formulaire introuvable |
ERR-FORM-002 |
Formulaire inactif ou archivé |
ERR-DOSSIER-001 |
Dossier non trouvé |
ERR-DOSSIER-002 |
Dossier déjà soumis (modification impossible) |
ERR-CTE-001 |
Conflit d’intérêt détecté |
ERR-USER-001 |
NIP invalide |
8.3. Logging et Monitoring
|
La stack de monitoring (Prometheus, Grafana, Loki) est documentée dans le DAT - Exploitation. |
8.3.1. Métriques Métier bdes-evaluation
Le module expose des métriques spécifiques via Prometheus :
-
Compteurs métier :
bdes_evaluations_created_total,bdes_submissions_total,bdes_reports_generated_total -
Jauges :
bdes_active_campaigns,bdes_pending_evaluations -
Histogrammes :
bdes_pdf_generation_duration_seconds,bdes_campaign_activation_duration_seconds
8.4. Communication inter-services
|
La matrice des flux détaillée avec les ports et protocoles est documentée dans le DAT - Architecture Fonctionnelle. |
8.5. Internationalisation (i18n)
-
Support multilingue : Français (FR), Anglais (EN)
-
Messages d’erreur traduits selon locale utilisateur
-
Formats localisés : dates, nombres, devises
-
Gestion via fichiers properties :
messages_fr.properties,messages_en.properties
8.6. Validation des données
8.7. Gestion de la configuration
|
La stratégie de gestion de configuration (Kubernetes Secrets, ConfigMaps, Sealed Secrets) est documentée dans le DAT - Exploitation. |
8.7.1. Configuration spécifique bdes-evaluation
-
Profils Spring :
dev,staging,prodpour environnements multiples -
Variables d’environnement :
KAFKA_BOOTSTRAP_SERVERS,MINIO_ENDPOINT,KEYCLOAK_ISSUER_URI -
Paramètres métier : durée validité codes d’accès, seuils anonymisation, délais notifications
8.7.2. Paramètres d’exploitation
Ces réglages sont portés par la table des paramètres applicatifs du service, au même titre que les paramètres métier décrits au SFD, mais ils ne gouvernent aucune règle de gestion : ils conditionnent le comportement du service en exploitation.
Les quatre clés cb.* sont modifiables en base mais exigent un redémarrage du
service pour être prises en compte, là où les autres paramètres sont appliqués à chaud.
|
| Clé | Ce qu’elle gouverne | Valeur |
|---|---|---|
|
Nombre d’essais avant qu’une notification parte en file de rattrapage |
5 |
|
Délai de base entre deux essais |
60 s |
|
Taille d’un lot de reprise |
50 |
|
Durée de conservation de la file |
7 jours |
|
Temps d’isolement du référentiel après incident |
30 s |
|
Taux d’échec déclenchant cet isolement |
50 % |
|
Temps d’isolement du service de notification |
30 s |
|
Taux d’échec déclenchant cet isolement |
50 % |
|
Origines autorisées à appeler l’API depuis un navigateur |
liste des domaines de la plateforme |
|
Relais de confiance autorisés à déclarer l’adresse d’origine d’un étudiant |
aucun |
student_eval_trusted_proxies est vide par défaut, ce qui protège d’un en-tête d’origine
forgé. La contrepartie est à connaître à l’exploitation : derrière un relais, l’adresse vue par le
service est celle du relais, de sorte que le plafond de tentatives par origine est partagé par
l’ensemble des étudiants qui passent par ce relais. Les seuils de la limitation de débit sont
figés dans le service.
|
8.8. Résilience et Haute Disponibilité
|
Les patterns de résilience (Circuit Breaker, Retry, Bulkhead) et la stratégie de haute disponibilité sont documentés dans le DAT - Haute Disponibilité. |
8.9. Gestion des transactions
-
Transactions locales :
@TransactionalSpring pour opérations single-DB -
Isolation : READ_COMMITTED par défaut
-
Propagation : REQUIRED (défaut), REQUIRES_NEW pour isolation
-
Rollback : automatique sur RuntimeException, manuel via
setRollbackOnly()
8.10. Performance et Optimisation
| Aspect | Technique | Objectif |
|---|---|---|
Caching distribué |
Redis pour données référentiels et sessions |
Réduire latence et charge DB |
Caching local |
Caffeine (in-memory) |
Accès ultra-rapide données volatiles |
Pagination |
20 items/page (max 100), curseur ou offset |
Limiter charge réseau et mémoire |
Lazy loading JPA |
|
Éviter requêtes N+1 |
Indexation DB |
Index colonnes WHERE/JOIN, composites multi-critères |
Optimiser temps réponse requêtes |
9. Décisions d’architecture
|
Les décisions d’architecture transverses (microservices, PostgreSQL, Keycloak, Kafka, etc.) sont documentées dans le DAT. |
9.1. Décisions spécifiques bdes-evaluation
| ADR | Décision | Justification et conséquences |
|---|---|---|
ADR-EVAL-001 |
Anonymisation irréversible |
Les évaluations pédagogiques étudiants sont stockées sans aucune information identifiante. |
ADR-EVAL-002 |
Versionnement formulaires |
Un formulaire publié est immuable. Toute modification crée une nouvelle version. |
ADR-EVAL-003 |
Codes d’accès à usage unique |
Chaque code d’accès est invalidé après soumission. |
ADR-EVAL-004 |
Stockage fichiers sur MinIO |
Les pièces jointes enseignants sont stockées sur MinIO (S3-compatible) plutôt qu’en base. |
ADR-EVAL-005 |
Cache référentiel Redis |
Les données bdes-referentiel sont mises en cache Redis avec TTL 24h. |
ADR-EVAL-006 |
Génération PDF côté serveur |
Les rapports PDF sont générés côté serveur (Java) et non côté client. |
10. Glossaire
|
Le glossaire commun de la plateforme BDES est documenté dans le DAT - Glossaire. |