From 7e4a761cbb751ed337bfb85071e0c16fe6105b11 Mon Sep 17 00:00:00 2001 From: william Date: Sat, 19 Sep 2026 12:44:09 +0200 Subject: [PATCH] =?UTF-8?q?Met=20=C3=A0=20jour=20docs/plan/PLAN.md=20secti?= =?UTF-8?q?on=200=20avec=20la=20restructuration=20r=C3=A9ellement=20faite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docs/plan/PLAN.md | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/docs/plan/PLAN.md b/docs/plan/PLAN.md index f77001bb..a10f4b06 100644 --- a/docs/plan/PLAN.md +++ b/docs/plan/PLAN.md @@ -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 É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 -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 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