Glossaire¶
Ce glossaire rassemble les termes techniques et conceptuels utilisés tout au long de la documentation PerfShop. Les entrées sont classées par ordre alphabétique.
A¶
AGPL-3.0-or-later — Licence open source copyleft fort utilisée par PerfShop. Elle autorise l'usage, la modification et la redistribution sous réserve de publier toute version modifiée exposée en réseau. Voir Licence.
A1 à A16 — Nomenclature des 16 anomalies métier du Chaos Métier, cumulatives par niveau. A1 = TVA à 19,6 % au lieu de 20 %, A16 = annulation sans remboursement stock. Voir Chaos Métier.
Agent (parcours pédagogique) — Compte utilisateur du shop identifié par is_pedagogique = TRUE et portant un nom d'espion (Jason Bourne, Alan Enigma, Lisbeth Docker, Ethan Lorem, Ada Cipher). Chaque agent correspond à un niveau BAC1 à BAC5 et est invisible dans l'IHM admin. Les mots de passe des agents sont révélés progressivement par les énigmes.
Agent Code — Code à 4 chiffres affiché à l'étudiant sur la page de confirmation de commande, après validation du parcours pédagogique. Il fait partie de la chaîne de validation finale et est calculé de manière déterministe à partir du niveau et de la session.
Alias — Pseudonyme optionnel que l'étudiant saisit au démarrage d'un parcours pédagogique. S'il n'est pas renseigné, le système génère un nom type Agent-XXXX.
applyI18n() — Fonction JavaScript vanilla qui parcourt le DOM à la recherche des attributs data-i18n, data-i18n-html, data-i18n-placeholder, data-i18n-title et remplace leur contenu par la traduction correspondante. Utilisée par chaos-admin, monitoring, scripts-ui, jmeter-ui.
B¶
BAC1, BAC2, BAC3, BAC4, BAC5 — Niveaux du parcours pédagogique, par ordre croissant de difficulté. BAC1 est accessible en freemium, BAC3 à BAC5 exigent une licence, BAC5 porte le surnom « Master ». Chaque niveau contient 20 énigmes distinctes et un code agent unique à découvrir.
BCrypt — Algorithme de hachage de mots de passe utilisé par PerfShop pour admin_users.password_hash et users.password. PerfShop utilise $2b$10$... (strength 10 = 1024 itérations internes).
Bootstrap superadmin — Création automatique du compte superadmin au démarrage du backend, déclenchée par AdminUserService @EventListener(ApplicationReadyEvent) à partir des variables d'environnement PERFSHOP_ADMIN_EMAIL et PERFSHOP_ADMIN_PASSWORD.
C¶
Cache mémoire pédagogique — Option activable par le formateur qui stocke les MutableSession en mémoire JVM en plus de la base de données. Quand activée, ces sessions deviennent visibles dans les heap dumps si un Chaos Mémoire est actif — démonstration pédagogique concrète d'une fuite de tokens.
Chaos Agent (frontend) — Script chaos-agent.js importé par App.jsx, qui s'exécute dans le navigateur et poll /api/chaos/frontend/state toutes les 5 secondes pour activer ou désactiver les chaos frontend (CPU burn, memory leak, DOM flood, fetch flood).
Chaos Fonctionnel — Famille de chaos qui injecte des exceptions Java réelles dans le parcours applicatif. Niveaux F1 (NullPointerException sur paiement), F2 (StackOverflow), F3 (OutOfMemoryError), F4 (corruption silencieuse — niveau Master).
Chaos Métier — Famille de chaos qui injecte des anomalies dans les règles e-commerce. 16 anomalies A1-A16 cumulatives par niveau. L'objectif est pédagogique (TMAP / ISTQB) : détecter des bugs sans exception ni stack trace, uniquement par comparaison avec le comportement attendu.
Chaos Pédagogique — Parcours escape room à 5 niveaux BAC1-BAC5. Chaque niveau propose 20 étapes alternant recherche produit, calcul mathématique, lecture d'indices, décodage et validation.
Chaos Performance — Famille de chaos qui dégrade les ressources backend : CPU, mémoire JVM, GC, pool de connexions DB, threads Tomcat, requêtes SQL lentes, deadlocks, réseau.
Chaos Scripting — Famille de chaos qui complexifie la gestion HTTP du checkout : tokens rotatifs, CSRF, HMAC, signatures par étape. Cinq niveaux : Désactivé, Junior, Confirmé, Expert, Maestro.
Chaos Sécurité — Famille de chaos qui injecte des failles OWASP Top 10. 12 failles S1-S12 cumulatives. Le niveau Master (N4) active un scénario chaîné S10-S11-S12 sur un portail admin vulnérable.
Code agent — Voir « Agent Code ».
CORS (Cross-Origin Resource Sharing) — Mécanisme de sécurité des navigateurs qui restreint les requêtes entre origines différentes. PerfShop gère CORS via la variable CORS_ALLOWED_ORIGINS.
D¶
data-i18n — Attribut HTML déclaratif lu par applyI18n() qui indique quelle clé du dictionnaire charger dans le textContent de l'élément. Exemple : <h1 data-i18n="admin.title">Chaos Engineering</h1>.
DataTruncation — Exception MySQL déclenchée quand on tente d'insérer une valeur qui dépasse la taille d'une colonne. La colonne users.postal_code est volontairement limitée à VARCHAR(5) — le Chaos Pédagogique Niveau 2+ tente d'insérer une valeur plus longue pour déclencher cette exception de manière pédagogique.
DECIMAL(18,2) — Précision étendue utilisée pour les prix des produits afin d'accueillir les valorisations d'entreprises (milliards d'euros) dans la catégorie « Entreprises » du catalogue.
docker-compose.build.yml — Fichier compose destiné au build local sur Linux / VPS Unix / CI.
docker-compose.desktop.yml — Fichier compose destiné à Docker Desktop sur Windows ou macOS.
docker-compose.yml — Fichier compose principal destiné à la production NAS avec images pré-construites.
E¶
Énigme — Unité élémentaire d'un parcours pédagogique. Chaque énigme contient un énoncé (text), un indice optionnel (hint) et une note culturelle affichée après validation (culturalNote). Les réponses sont codées en dur côté Java dans les classes PedagogiqueEnigmeBacN.
Enterprise — Plan de licence le plus complet, débloquant toutes les fonctionnalités actuelles et futures. Voir Système de licence.
Extraction answer hash — Colonne extraction_answer_hash de pedagogique_sessions qui stocke le SHA-256 de la réponse dynamique calculée au /join selon le niveau. Permet au serveur de valider la réponse finale sans stocker la valeur en clair.
F¶
F1, F2, F3, F4 — Exceptions Java injectées par le Chaos Fonctionnel. F1 = NullPointerException, F2 = StackOverflowError, F3 = OutOfMemoryError, F4 = corruption silencieuse des données (niveau Master).
Flyway — Outil de migration de base de données utilisé par PerfShop. Les migrations sont dans backend/src/main/resources/db/migration-fr/ (V1 à V10). Voir Schéma de la base de données.
Forgejo — Fork communautaire de Gitea, utilisé par PerfShop comme serveur Git auto-hébergé. Remplace entièrement GitHub ou GitLab pour l'écosystème PerfShop. Voir Forgejo.
Freemium — Modèle de licence qui rend une partie de PerfShop accessible sans licence : shop, page étudiant, monitoring HTML, BAC1, BAC2, et les niveaux 1 du Chaos Performance et du Chaos Scripting. Voir Freemium vs Pro.
Functional (plan de licence) — Plan de licence entrée de gamme qui débloque chaos-admin, admin, monitoring, scripts-ui. N'inclut pas jmeter-ui (réservé au plan Performance).
H¶
HMAC (Hash-based Message Authentication Code) — Technique de signature utilisée par le Chaos Scripting niveau Expert et Maestro. Au niveau Expert, la clé HMAC est statique ; au niveau Maestro, elle est dérivée par session via HMAC-SHA256(sessionToken, secretStatique).
Hints toggle — Flag volatile boolean pedagogiqueHintsEnabled côté backend, modifiable à chaud par le formateur via POST /pedagogique/hints. Quand désactivé, le bouton « Indice » disparaît de l'overlay pédagogique côté étudiant.
I¶
I18nService — Bean Spring Boot qui charge les fichiers messages_*.properties au démarrage et expose t(key) et t(key, args...) pour la résolution côté Java.
I18nContext — Provider React qui charge fr.json et en.json au build-time et expose le hook useT() pour la résolution côté React.
IDOR (Insecure Direct Object Reference) — Faille OWASP A01 — un utilisateur peut accéder à une ressource (commande, compte) en devinant son identifiant, sans vérification d'appartenance. PerfShop simule cette faille dans S2 (IDOR sur commandes) et S12 (IDOR pour élévation de privilèges).
Interceptor — Composant Spring MVC (HandlerInterceptor) qui intercepte les requêtes HTTP avant qu'elles n'atteignent les contrôleurs. LicenseInterceptor bloque les interfaces protégées avec HTTP 402 si aucune licence valide n'est active.
is_pedagogique — Drapeau booléen sur les tables users et products qui identifie les agents pédagogiques et les produits pédagogiques. Ces enregistrements sont invisibles dans l'IHM admin et protégés contre les modifications accidentelles.
L¶
LCG (Linear Congruential Generator) — Générateur pseudo-aléatoire déterministe utilisé par ThemeLogique pour tirer des questions logique reproductibles à partir d'un seed dérivé du X-Student-Token.
LicenseInterceptor — Interceptor Spring MVC qui bloque les interfaces protégées sans licence valide. Voir Système de licence.
LicenseService — Service Spring Boot qui charge, valide et cache la licence active. Vérifie l'intégrité de la clé publique RSA au démarrage via SHA-256.
Logique (pool) — Ensemble de 25 questions mathématiques générales utilisées par certains parcours pédagogiques. 5 questions sont tirées aléatoirement via LCG par session.
M¶
Master (niveau 4) — Nom donné au niveau 4 de chaque famille de chaos. Nécessite une licence. Inclut des mécaniques qualitativement différentes : scénarios chaînés, corruption silencieuse, clé HMAC dérivée, etc.
messages_fr.properties / messages_en.properties — Fichiers Java Properties du backend Spring Boot contenant environ 430 clés de traduction chacun.
mkdocs-static-i18n — Plugin MkDocs qui gère l'internationalisation de la documentation. Configuré pour 5 langues (fr, en, es, de, it) dans mkdocs.yml.
MutableSession — Classe interne au backend qui représente une session pédagogique en mémoire. Quand le cache mémoire est activé, ces objets apparaissent dans les heap dumps lors d'un Chaos Mémoire.
O¶
OpenSearch — Puits de logs alternatif (Apache 2.0) intégré dans la stack observabilité PerfShop en parallèle de Loki.
OWASP Top 10 — Classement des 10 risques de sécurité web les plus critiques, mis à jour par l'OWASP. PerfShop simule plusieurs de ces risques dans sa famille Chaos Sécurité (S1-S12).
P¶
Page étudiant — Interface chaos-admin/public/index.html destinée aux étudiants. Permet d'activer des chaos soi-même dans la limite du freemium ou de la licence active. Voir Page chaos étudiant.
Panneau formateur — Interface chaos-admin/public/admin/ réservée aux comptes admin authentifiés. Donne accès à l'ensemble des chaos, à la gestion des comptes et au panneau licence.
Parcours pédagogique — Voir « Chaos Pédagogique ».
PedagogiqueOrchestrator — Composant React monté une fois dans AppShell, en dehors des <Routes>, qui survit à toutes les navigations et affiche l'overlay pédagogique quand un parcours est actif.
Performance (plan de licence) — Plan de licence intermédiaire qui débloque tout le plan Functional + jmeter-ui.
PERFSHOP_LANG — Variable d'environnement unique qui contrôle la langue de toute la stack PerfShop. Remplace l'en-tête HTTP Accept-Language. Voir Vue d'ensemble i18n.
PFSH- — Préfixe d'une clé de licence PerfShop au format PFSH-<base64url_payload>.<base64url_signature>.
Portail admin — Page AdminPortal.jsx accessible via /admin sur le frontend shop. Surface pédagogiquement vulnérable du Chaos Sécurité Master (scénario S10-S11-S12). Distinct du panneau formateur chaos-admin.
Pyroscope — Plateforme de profilage continu (CPU, mémoire) intégrée dans la stack observabilité PerfShop.
R¶
RSA-PSS — Schéma de signature cryptographique utilisé pour les licences PerfShop. Paramètres : RSA 2048 bits, SHA-256, MGF1, salt 32 octets, trailer 1.
S¶
S1 à S12 — Nomenclature des 12 failles OWASP du Chaos Sécurité. S1 = SQLi sur la recherche, S12 = IDOR pour élévation de privilèges. Voir Chaos Sécurité.
Scénario météo — Preset de combinaison de chaos backend, nommé N<niveau>-<numéro> (ex : N2-03). 20 scénarios sont fournis (N1-01 à N4-05). Un seul scénario peut être actif à la fois côté étudiant.
Superadmin — Compte admin unique avec is_superadmin = TRUE, non supprimable, aux droits fixes. Bootstrap au démarrage du backend à partir de PERFSHOP_ADMIN_EMAIL et PERFSHOP_ADMIN_PASSWORD.
SPDX-License-Identifier — En-tête standardisé présent dans tous les fichiers source PerfShop, qui déclare la licence applicable. Pour PerfShop, c'est toujours AGPL-3.0-or-later.
SQLi (SQL Injection) — Faille OWASP A03 où un utilisateur injecte du SQL via un champ de formulaire mal échappé. PerfShop simule SQLi dans S1 (recherche produit) et S11 (login portail admin).
successUrl — URL de la forme /s/<token> générée à la fin d'un parcours pédagogique validé. Le token est opaque et non-devinable ; il authentifie la page de succès standalone.
Stars (système d'étoiles) — Système de notation des performances d'un étudiant pendant un parcours. BAC+N peut obtenir jusqu'à N étoiles (BAC+1 = 1 étoile max, BAC+5 = 5 étoiles). Une étoile est retirée si le timer a expiré.
T¶
t() / _t() — Fonctions de traduction. t() côté React (hook useT()) et côté Java (I18nService). _t() côté JavaScript vanilla (chaos-admin, monitoring, etc.). Toutes retournent une chaîne traduite selon la langue active.
Tempo — Backend de traces distribuées OpenTelemetry intégré dans la stack observabilité PerfShop.
Token pédagogique — Voir « X-Student-Token ».
V¶
V1 à V10 — Migrations Flyway consolidées de PerfShop, dans backend/src/main/resources/db/migration-fr/. V1 crée le schéma complet, V2-V9 seedent les catalogues produits par catégorie, V10 crée l'infrastructure pédagogique (produits + agents BAC1-BAC5).
VITE_LANG — Variable injectée par Vite au build ou par env-inject.sh au runtime dans l'image Docker frontend. Lue par I18nContext.jsx pour déterminer la langue active.
W¶
welcome/entrypoint.sh — Script shell qui s'exécute au démarrage du conteneur welcome. Gère les deux modes ip et dns, remplace les marqueurs dans welcome.js et injecte le dictionnaire i18n.
WELCOME_MODE — Variable d'environnement (ip ou dns) qui contrôle la stratégie de construction des URLs dans la welcome page.
Write-through — Stratégie de cache utilisée par DefaultPedagogiqueSessionService : chaque mutation de session est d'abord persistée en base de données, puis miroitée en cache mémoire (si activé). La base est toujours source de vérité.
X¶
X-Admin-Token — Header HTTP qui porte un token opaque d'authentification admin, généré au login. Utilisé en complément de la session HTTP pour les déploiements cross-origin où le cookie de session ne suit pas. Injecté automatiquement par le wrapper adminFetch() du panneau chaos-admin.
X-Action-Token, X-CSRF-Token, X-Step-Token, X-Signature — Headers supplémentaires introduits par les niveaux avancés du Chaos Scripting (Confirmé, Expert, Maestro) pour complexifier la corrélation HTTP.
X-License-Required — Header de réponse ajouté par LicenseInterceptor quand il retourne HTTP 402. Permet aux clients de détecter rapidement un blocage licence sans parser le JSON.
X-Session-Token — Header HTTP introduit par le Chaos Scripting Junior, obligatoire sur chaque étape du checkout. Généré au login et identique pendant toute la session.
X-Student-Token — Header HTTP qui identifie une session pédagogique individuelle. Généré par le backend au /join, stocké par le frontend dans localStorage.ped_student_token, et envoyé sur les polls de status et la création de commande. Clé de voûte de la multi-session pédagogique.