Met à jour docs/plan/PLAN.md section 0 avec la restructuration réellement faite
Build and deploy / test-python (push) Successful in 5m38s
Build and deploy / test-js (push) Successful in 43s
Build and deploy / lint-python (push) Successful in 4m34s
Build and deploy / lint-js (push) Successful in 2m52s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Build and deploy / sonarqube (push) Failing after 3m46s

La section 0 décrivait encore un simple renommage screens->game_engine,
dépassé le même jour par la réorganisation effective en sous-dossiers
game/document dans routes/, scripts/, static/, templates/, tests/ (voir
commit b2e933f3). Réécrite pour refléter l'état réel : contenu exact
déplacé dans chaque game/, styles/ volontairement intact, ai/publish/
non déplacés, les 2 fichiers orphelins signalés. Étape 1 de la section 5
marquée faite. Aucun changement sur le contenu fonctionnel des sections
1/3/4 (travail futur, non concerné par cette réorganisation).

SKIP=djlint : aucun template touché par ce commit, backlog H021 deja
documente comme dette assumee (CODE_QUALITY.md section 6).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-19 12:44:09 +02:00
co-authored by Claude Sonnet 5
parent b2e933f322
commit 7e4a761cbb
+25 -6
View File
@@ -25,13 +25,32 @@ Le système est parti d'un éditeur unique reposant sur des "boîtes" (conteneur
--- ---
## 0. Nommage du moteur — pas de restructuration de dossiers ## 0. Restructuration réelle du dépôt — sous-dossiers `game/`/`document`, pas de dossiers racine séparés
**Correction actée le 19/09/2026, après exploration concrète du dépôt** : la version initiale de cette section prévoyait de regrouper physiquement tout le code du jeu 2D (routes HTTP, templates Jinja, JS, moteur Python) dans un dossier racine `/game-editor`, et le futur chantier dans `/document-editor`. **Ce n'est pas ce qui a été fait, et ce n'est plus le plan.** **Historique de cette section** (deux corrections successives, pour ne pas répéter les mêmes hésitations) :
1. Version initiale : regrouper tout le code du jeu 2D dans un dossier racine `/game-editor`, le futur chantier dans `/document-editor`. **Jamais fait.**
2. Première correction (19/09/2026) : un simple renommage `screens/` → `game_engine/`, rien d'autre ne bouge. **Dépassée par la suite des événements le même jour** — voir ci-dessous l'état réellement en place.
Décision retenue : **`routes/*` (API HTTP) et `templates/*` (affichage) ne bougent pas** — ce ne sont pas des concepts propres au jeu 2D, mais la couche site/plateforme qui appelle le moteur. **Seul le paquet Python qui porte la logique du moteur du jeu 2D a été renommé**, de `screens/` (nom historique peu clair) vers **`game_engine/`**, à la racine du dépôt, sans aucun déplacement de fichier ailleurs — `ai/`, `publish/`, `static/js/*` restent où ils étaient. Le contrat import-linter (`pyproject.toml`) garde exactement la même forme de couches (`routes -> ai|publish|core -> game_engine -> auth|filters -> db`), seul le nom du paquet a changé. **État réel du dépôt (actées et committées le 19/09/2026)** :
**Pour le futur chantier Support de formation** : aucun dossier `document-editor`/`document_editor` n'existe ni n'est prévu comme regroupement physique. Le nouveau moteur de document (arbre unique, layout auto, mini-jeux — voir section 1) vivra selon la même logique que `game_engine/` : un paquet Python dédié à sa propre logique métier (nom à choisir le moment venu, ex. `document_engine/`), avec ses propres routes dans `routes/` et ses propres templates dans `templates/`, **jamais un dossier `flow/`** puisque cet éditeur n'a aucun Flow (voir tableau ci-dessus). Les mentions `/document-editor/...` plus bas dans ce document décrivent des **regroupements logiques** (quel code appartient à quel domaine), pas des chemins de dossier réels à créer tels quels — à traduire en paquets/fichiers concrets au moment de l'implémentation, en s'inspirant de l'organisation réelle de `game_engine/` (un fichier = une fonction, un sous-dossier = une responsabilité). 1. **`screens/` → `game_engine/`** : le paquet Python qui porte la logique du moteur du jeu 2D a été renommé (nom historique peu clair → nom explicite, avant l'arrivée d'un second "moteur" côté document). ~85 imports corrigés, contrat import-linter (`pyproject.toml`) inchangé dans sa forme (`routes -> ai|publish|core -> game_engine -> auth|filters -> db`), seul le nom du paquet a changé.
2. **Sous-dossiers `game/` dans `routes/`, `scripts/`, `static/`, `templates/`, `tests/`** : dans CHACUN de ces cinq dossiers, tout ce qui est propre à l'éditeur Jeu 2D a été déplacé dans un sous-dossier `game/` (`routes/game/`, `scripts/game/`, `static/game/`, `templates/game/`, `tests/game/`), tandis que ce qui est partagé par le site (comptes, onboarding, tableau de bord, upload générique, `db/`) reste directement à la racine de chacun de ces dossiers — **jamais de dossier racine séparé du dépôt**, contrairement à la version initiale de ce plan. Le contenu exact déplacé dans chaque `game/` :
- `routes/game/` : `animations`, `custom_events`, `flow`, `flow_blocks`, `global_vars`, `ia`, `play`, `public_play`, `publish`, `scenes`, `screens`, `triggers`
- `scripts/game/` : `build_demo_dialogues.py`, `generate_animal_sprite_manifest.py`, `generate_background_manifest.py`
- `static/game/` : `js/{play,scenes,screen_edit,triggers,ia}`, `characters/`, `backgrounds/`, `icons/`, `quiz-templates/`
- `templates/game/` : `scene_edit.html`, `play.html`, `_global_variable_row.html`
- `tests/game/` : 44 fichiers de test (scène, Flow, dialogues, SCORM, sprites, triggers...)
3. **Un sous-dossier `document/` (vide) créé dans ces cinq mêmes dossiers** (`routes/document/`, `scripts/document/`, `static/document/`, `templates/document/`, `tests/document/`) — chacun avec un court marqueur (`__init__.py` docstring ou `README.md`) rappelant qu'aucune logique Flow n'y sera jamais introduite. Aucun code métier n'y vit encore.
4. **`ai/` et `publish/` (paquets Python racine) n'ont PAS bougé** — ils restent à la racine du dépôt tels quels ; seules leurs références internes vers les fichiers déplacés ci-dessus ont été mises à jour.
5. **`styles/` n'a volontairement PAS été touché** : ses 3 fichiers sources (`bulma-override.css`, `forge-tokens.css`, `forge-custom.css`) sont concaténés par `build_css.py` en un seul `static/style.css`, chargé sur TOUTES les pages du site. `forge-custom.css` mélange très probablement du CSS propre à l'éditeur de scène et du CSS partagé DANS LES MÊMES RÈGLES — scinder ce contenu serait un vrai refactor CSS (classer chaque règle), pas un déplacement mécanique de fichier. Décision explicite : à réévaluer plus tard, pas aujourd'hui.
6. **Deux fichiers orphelins découverts en cours de route** (aucune référence nulle part dans le dépôt), signalés mais non déplacés faute de pouvoir juger de leur destination : `static/object_form.js`, `templates/partials/clause_row.html`.
**Pour le futur chantier Support de formation** : le nouveau moteur de document (arbre unique, layout auto, mini-jeux — voir section 1) vivra dans un paquet Python dédié à sa propre logique métier (nom à choisir le moment venu, ex. `document_engine/`, par symétrie avec `game_engine/`), avec ses routes dans `routes/document/`, son JS/CSS dans `static/document/`, ses templates dans `templates/document/`, ses tests dans `tests/document/` — **jamais un dossier `flow/`** puisque cet éditeur n'a aucun Flow (voir tableau ci-dessus). Les mentions `/document-editor/...` plus bas dans ce document (sections 1 et 3, écrites avant cette restructuration) décrivent des **regroupements logiques** (quel code appartient à quel domaine) et doivent se lire comme `routes/document/`, `static/document/`, `templates/document/` selon le type de fichier — pas comme un dossier racine unique `/document-editor` qui n'existe pas et ne sera pas créé.
--- ---
@@ -86,7 +105,7 @@ Optionnelles (non prioritaires) : Réflexe, Interaction live.
--- ---
## 2. Éditeur Jeu 2D (moteur `game_engine/`) ## 2. Éditeur Jeu 2D (`game_engine/` + `routes/game/`, `static/game/`, `templates/game/`, `tests/game/`, `scripts/game/`)
### 2.1 Principe général ### 2.1 Principe général
Éditeur séparé pour jeux 2D classiques. **C'est le seul des deux éditeurs à posséder un Flow.** Sans layout auto, sans éléments mini-jeux (ceux-ci n'existent que côté Support de formation). Éditeur séparé pour jeux 2D classiques. **C'est le seul des deux éditeurs à posséder un Flow.** Sans layout auto, sans éléments mini-jeux (ceux-ci n'existent que côté Support de formation).
@@ -184,7 +203,7 @@ Pour tout autre élément ajouté depuis la bibliothèque sans formulaire encore
## 5. Prochaines étapes suggérées ## 5. Prochaines étapes suggérées
1. Effectuer la restructuration des dossiers (section 0) avant toute nouvelle ligne de code 1. ~~Effectuer la restructuration des dossiers (section 0) avant toute nouvelle ligne de code~~ — **Fait le 19/09/2026** (renommage `game_engine/` + sous-dossiers `game/`/`document/` dans `routes/`, `scripts/`, `static/`, `templates/`, `tests/`, commit `b2e933f3`).
2. **Éditeur Jeu 2D** : lancer l'audit des dépendances à l'ancienne boîte Quiz avant suppression 2. **Éditeur Jeu 2D** : lancer l'audit des dépendances à l'ancienne boîte Quiz avant suppression
3. **Éditeur Support de formation** : valider le modèle de données du document (arbre unique), sans dossier Flow 3. **Éditeur Support de formation** : valider le modèle de données du document (arbre unique), sans dossier Flow
4. Prototyper le moteur d'inférence de layout sur un cas simple avant de généraliser 4. Prototyper le moteur d'inférence de layout sur un cas simple avant de généraliser