|
| 1 | +# Glossaire |
| 2 | + |
| 3 | +Définitions des termes métier et techniques utilisés dans le projet learn-dev. |
| 4 | +Pour les outils concrets et leurs versions, voir [docs/tech-stacks.md](docs/tech-stacks.md) ; |
| 5 | +pour l'articulation des composants, voir [ARCHITECTURE.md](ARCHITECTURE.md) ; |
| 6 | +pour la justification des décisions de conception, voir les [ADR](docs/adr/README.md). |
| 7 | + |
| 8 | +> [!NOTE] |
| 9 | +> 🇬🇧 English version: [GLOSSARY.md](GLOSSARY.md). |
| 10 | +> Les deux fichiers sont la traduction l'un de l'autre : toute entrée ajoutée, |
| 11 | +> modifiée ou supprimée dans l'un doit l'être aussi dans l'autre. |
| 12 | +
|
| 13 | +## Termes métier |
| 14 | + |
| 15 | +- **Archive (archiver)** — Dépublier un cours ou une leçon pour qu'il ne soit |
| 16 | + plus accessible aux étudiants, sans le supprimer. |
| 17 | +- **Course (cours)** — Une unité de contenu pédagogique appartenant à un |
| 18 | + formateur ; contient des leçons. |
| 19 | +- **Deactivate (désactiver)** — Neutraliser un compte (formateur ou étudiant, |
| 20 | + par exemple) pour qu'il ne puisse plus être utilisé, sans le supprimer. |
| 21 | + Voir aussi *compte désactivé*. |
| 22 | +- **Drop a course (abandonner un cours)** — Le retrait d'un étudiant d'un cours |
| 23 | + avant de l'avoir terminé. |
| 24 | +- **Enrollment (inscription)** — La relation qui lie un étudiant à un cours |
| 25 | + qu'il a rejoint. |
| 26 | +- **Lesson (leçon)** — Un élément de contenu individuel au sein d'un cours. |
| 27 | +- **Role (rôle)** — Un ensemble nommé de permissions accordées à un |
| 28 | + utilisateur. Les rôles fournis par défaut sont `STUDENT`, `INSTRUCTOR` et |
| 29 | + `ADMIN` ; `SUPERADMIN` est prévu (voir l'issue #65). |
| 30 | + |
| 31 | +## Authentification et sécurité |
| 32 | + |
| 33 | +- **Authority (autorité)** — Dans Spring Security, une permission unitaire |
| 34 | + détenue par un utilisateur authentifié. Les rôles sont représentés comme des |
| 35 | + autorités préfixées par `ROLE_` (le rôle `ADMIN` devient l'autorité |
| 36 | + `ROLE_ADMIN`). |
| 37 | +- **BCrypt** — Une fonction de hachage de mots de passe adaptative. Les mots de |
| 38 | + passe sont stockés sous forme de hachés BCrypt, jamais en clair. |
| 39 | +- **CSRF (Cross-Site Request Forgery)** — Une attaque qui pousse le navigateur |
| 40 | + d'un utilisateur connecté à soumettre une requête à son insu. Contrée par un |
| 41 | + jeton par formulaire (injecté par Thymeleaf) et l'attribut de cookie |
| 42 | + `SameSite`. |
| 43 | +- **Compte désactivé (disabled account)** — Un compte qui existe mais n'est pas |
| 44 | + autorisé à s'authentifier (issu du drapeau `is_active = false`). À distinguer |
| 45 | + d'un *compte verrouillé*. |
| 46 | +- **HttpOnly** — Un attribut de cookie qui masque le cookie au JavaScript côté |
| 47 | + client, ce qui limite le vol de session via XSS. |
| 48 | +- **IDOR (Insecure Direct Object Reference)** — Une faille de contrôle d'accès |
| 49 | + où un identifiant fourni par le client est utilisé sans vérification |
| 50 | + d'autorisation. Les clés primaires UUID des utilisateurs limitent |
| 51 | + l'énumération (voir [ADR-0003](docs/adr/0003-uuid-pk-for-users-bigint-elsewhere.md)). |
| 52 | +- **Compte verrouillé (locked account)** — Un compte temporairement empêché de |
| 53 | + s'authentifier (par exemple après trop d'échecs de connexion), issu du |
| 54 | + drapeau `is_locked`. À distinguer d'un *compte désactivé*. |
| 55 | +- **Principal** — L'entité actuellement authentifiée (en général l'utilisateur) |
| 56 | + dans un contexte de sécurité. |
| 57 | +- **SameSite** — Un attribut de cookie qui contrôle l'envoi du cookie par le |
| 58 | + navigateur sur les requêtes inter-sites. Positionné sur `Lax` ici comme |
| 59 | + défense en profondeur contre le CSRF. |
| 60 | +- **Secure (cookie)** — Un attribut de cookie qui restreint le cookie au HTTPS. |
| 61 | + Activé seulement lorsque l'application sera servie en TLS. |
| 62 | +- **Session (côté serveur)** — L'état d'authentification conservé sur le |
| 63 | + serveur et référencé par un cookie de session (`JSESSIONID`), plutôt qu'un |
| 64 | + jeton autoporteur (voir [ADR-0001](docs/adr/0001-use-server-side-sessions-over-jwt.md)). |
| 65 | +- **XSS (Cross-Site Scripting)** — L'injection de scripts malveillants dans des |
| 66 | + pages vues par d'autres utilisateurs. Limitée par l'échappement automatique |
| 67 | + de Thymeleaf et par `HttpOnly`. |
| 68 | + |
| 69 | +## Persistance et modélisation des données |
| 70 | + |
| 71 | +- **Changelog / Changeset (Liquibase)** — Un changelog est la liste ordonnée |
| 72 | + des migrations ; un changeset est une migration atomique, identifiée par |
| 73 | + `path::id::author`. |
| 74 | +- **ERD (Entity-Relationship Diagram)** — Un diagramme des entités et de leurs |
| 75 | + relations (produit ici avec Mermaid). |
| 76 | +- **Hibernate** — L'implémentation JPA (ORM) utilisée pour faire correspondre |
| 77 | + les entités Java aux tables. |
| 78 | +- **JPA (Jakarta Persistence API)** — L'API Java standard du mapping |
| 79 | + objet-relationnel ; implémentée par Hibernate. |
| 80 | +- **JSESSIONID** — Le nom par défaut du cookie de session servlet. |
| 81 | +- **Liquibase** — L'outil de migration du schéma de base de données. Les |
| 82 | + migrations sont des fichiers SQL formatés écrits à la main et appliqués au |
| 83 | + démarrage (voir [ADR-0005](docs/adr/0005-handwrite-liquibase-migrations-over-mcd-ddl.md)). |
| 84 | +- **Merise** — Une méthode française de modélisation des données produisant |
| 85 | + trois vues : MCD, MLD, MPD. |
| 86 | +- **MCD (Modèle Conceptuel de Données)** — Le modèle conceptuel ; les entités |
| 87 | + et relations, indépendamment de toute base de données. |
| 88 | +- **MLD (Modèle Logique des Données)** — Le modèle logique ; le schéma |
| 89 | + relationnel (tables, clés) dérivé du MCD. |
| 90 | +- **MPD (Modèle Physique des Données)** — Le modèle physique ; le schéma |
| 91 | + concret tel qu'implémenté dans PostgreSQL. |
| 92 | +- **ORM (Object-Relational Mapping)** — La correspondance entre objets Java et |
| 93 | + tables relationnelles ; assurée par Hibernate/JPA. |
| 94 | +- **UUID** — Un identifiant sur 128 bits utilisé comme clé primaire des |
| 95 | + utilisateurs pour éviter l'énumération d'identifiants séquentiels. |
| 96 | + |
| 97 | +## Build, tests et outillage |
| 98 | + |
| 99 | +- **ADR (Architecture Decision Record)** — Un document court, numéroté et en |
| 100 | + ajout seul qui capture une décision de conception et ses compromis, au |
| 101 | + format MADR. |
| 102 | +- **Bean Validation** — Le standard Jakarta de déclaration de contraintes |
| 103 | + (`@NotBlank`, `@Email`, `@Size`) sur les champs de formulaires/DTO, |
| 104 | + appliquées avec `@Valid`. |
| 105 | +- **Checkstyle** — Un outil d'analyse statique qui vérifie les sources Java |
| 106 | + contre un référentiel de style. Exécuté ici avec le référentiel Google |
| 107 | + fourni (`google_checks.xml`) en mode rapport seul (voir |
| 108 | + [ADR-0011](docs/adr/0011-start-ci-quality-checks-as-advisory-reports.md)). |
| 109 | +- **Code coverage (couverture de code)** — Le pourcentage de code exercé par |
| 110 | + la suite de tests. Mesuré ici par JaCoCo ; rapporté, sans seuil imposé pour |
| 111 | + l'instant. |
| 112 | +- **DTO (Data Transfer Object)** — Un objet qui transporte des données à |
| 113 | + travers une frontière, volontairement distinct des entités. Un DTO `...Form` |
| 114 | + porte un formulaire HTML. |
| 115 | +- **Failsafe** — Le plugin Maven qui exécute les tests d'intégration `*IT` |
| 116 | + dans la phase `verify`. Ce projet ne l'utilise **pas** (voir |
| 117 | + [ADR-0009](docs/adr/0009-run-tests-under-surefire-not-failsafe.md)). |
| 118 | +- **FIFO (tube nommé)** — Un fichier spécial qui transmet les données à la |
| 119 | + lecture. Le `.env` du projet est une FIFO remplie par 1Password ; le |
| 120 | + `source` du shell ne peut pas la lire (taille nulle au `stat`). |
| 121 | +- **HikariCP** — Le pool de connexions JDBC fourni avec Spring Boot. |
| 122 | +- **Test d'intégration (integration test)** — Un test qui démarre un contexte |
| 123 | + Spring et exerce plusieurs couches ensemble (ici `@SpringBootTest` contre un |
| 124 | + vrai conteneur Postgres). |
| 125 | +- **JaCoCo (Java Code Coverage)** — L'outil de couverture de code pour Java. |
| 126 | + Son plugin Maven instrumente les tests (`prepare-agent`) et écrit un rapport |
| 127 | + HTML/XML dans `target/site/jacoco/` pendant la phase `test` ; la CI le |
| 128 | + publie comme artefact de workflow. |
| 129 | +- **Linter** — Un outil qui signale les problèmes de style et de qualité dans |
| 130 | + le code source sans l'exécuter (analyse statique). Le linter du projet est |
| 131 | + Checkstyle. |
| 132 | +- **Lombok** — Une bibliothèque qui génère le code répétitif (accesseurs, |
| 133 | + constructeurs) à partir d'annotations, à la compilation. |
| 134 | +- **MADR (Markdown ADR)** — Le format léger de modèle d'ADR utilisé dans |
| 135 | + `docs/adr/`. |
| 136 | +- **Maven Wrapper (`mvnw`)** — Un script de lancement versionné qui télécharge |
| 137 | + et exécute la version de Maven épinglée par le projet, pour que les builds |
| 138 | + ne dépendent pas d'un Maven installé localement (utilisé par la CI : |
| 139 | + `./mvnw -B -ntp ...`). |
| 140 | +- **Slice test (test de tranche)** — Un test qui ne charge qu'une couche du |
| 141 | + contexte (par exemple `@DataJpaTest` pour la couche de persistance). |
| 142 | +- **Smoke test (test de fumée)** — Un test minimal vérifiant que le contexte |
| 143 | + de l'application démarre (`LearnDevApplicationTests`). |
| 144 | +- **Surefire** — Le plugin Maven qui exécute les tests `*Test`/`*Tests` |
| 145 | + (unitaires et d'intégration) dans la phase `test`. Tous les tests du projet |
| 146 | + passent par Surefire. |
| 147 | +- **Testcontainers** — Une bibliothèque qui démarre des conteneurs |
| 148 | + Docker/Podman jetables pour les tests ; utilisée pour exécuter un vrai |
| 149 | + PostgreSQL (voir [ADR-0006](docs/adr/0006-test-against-real-postgres-testcontainers.md)). |
| 150 | +- **Ryuk** — Le conteneur compagnon de Testcontainers qui nettoie les |
| 151 | + ressources ; désactivé sous Podman dans ce projet. |
| 152 | +- **YAGNI (You Aren't Gonna Need It)** — Le principe de ne pas construire une |
| 153 | + fonctionnalité avant d'en avoir réellement besoin (par exemple le report du |
| 154 | + rôle `SUPERADMIN`). |
| 155 | + |
| 156 | +## Infrastructure et processus |
| 157 | + |
| 158 | +- **Advisory check (contrôle consultatif)** — Un contrôle de CI qui signale |
| 159 | + les problèmes sans bloquer la fusion (goal en rapport seul et/ou |
| 160 | + `continue-on-error`). Le lint et la couverture démarrent en mode consultatif |
| 161 | + ici (voir [ADR-0011](docs/adr/0011-start-ci-quality-checks-as-advisory-reports.md)). |
| 162 | +- **CI (intégration continue)** — Construire et tester automatiquement chaque |
| 163 | + changement (chaque PR et chaque push) pour détecter les régressions au plus |
| 164 | + tôt. Mise en oeuvre avec GitHub Actions (issues #45 à #48). |
| 165 | +- **Docker Compose** — L'orchestration déclarative de plusieurs conteneurs ; |
| 166 | + fait tourner ici Postgres et Mongo. Sur la machine de développement, |
| 167 | + `docker` est Podman. |
| 168 | +- **GitButler** — L'outil de gestion de versions qui enveloppe Git ; utilisé |
| 169 | + via la CLI `but` quand la branche courante est `gitbutler/workspace`. |
| 170 | +- **GitHub Actions** — Le service de CI de GitHub. Chaque workflow est un |
| 171 | + fichier YAML sous `.github/workflows/` ; ce projet utilise un workflow ciblé |
| 172 | + par préoccupation (voir [ADR-0010](docs/adr/0010-structure-ci-as-focused-workflows-per-concern.md)). |
| 173 | +- **Podman** — Un moteur de conteneurs sans démon, utilisé comme remplaçant de |
| 174 | + `docker`. |
| 175 | +- **Runner (exécuteur)** — La machine qui exécute un job GitHub Actions |
| 176 | + (`ubuntu-latest` ici) ; elle embarque un démon Docker, que Testcontainers |
| 177 | + utilise directement. |
| 178 | +- **Profil Spring (Spring profile)** — Un jeu de configuration nommé (par |
| 179 | + exemple `dev`) qui sélectionne des propriétés spécifiques et des contextes |
| 180 | + Liquibase. |
| 181 | +- **Temurin** — La distribution Eclipse Adoptium de l'OpenJDK ; le build |
| 182 | + Java 21 utilisé en local (via SDKMAN) et sur la CI (via |
| 183 | + `actions/setup-java`). |
| 184 | +- **Thymeleaf** — Le moteur de templates HTML côté serveur. Son **dialecte** |
| 185 | + Spring Security (espace de noms `sec:`) expose l'utilisateur authentifié aux |
| 186 | + templates. |
| 187 | +- **Workflow (GitHub Actions)** — Un fichier YAML qui déclare quand |
| 188 | + (déclencheurs) et comment (jobs, étapes) la CI s'exécute. Ce projet contient |
| 189 | + `build.yml`, `test.yml`, `lint.yml` et `schema-drift.yml`. |
| 190 | +- **Workflow artifact (artefact de workflow)** — Un fichier ou dossier publié |
| 191 | + depuis une exécution de workflow et téléchargeable depuis la page de |
| 192 | + l'exécution (ici : le rapport XML de Checkstyle et les rapports JaCoCo). |
| 193 | + |
| 194 | +## Certification |
| 195 | + |
| 196 | +- **CCP (Certificat de Compétences Professionnelles)** — Un bloc de |
| 197 | + compétences d'un Titre Professionnel français ; le DWWM comprend un CCP |
| 198 | + front-end et un CCP back-end. |
| 199 | +- **DWWM (Développeur Web et Web Mobile)** — Le Titre Professionnel français |
| 200 | + visé par ce projet de fin de formation. |
| 201 | +- **REAC (Référentiel Emploi Activités Compétences)** — Le référentiel |
| 202 | + officiel de compétences qui définit ce que la certification évalue. |
0 commit comments