diff --git a/plans/BIOCHEM_UPGRADE.md b/plans/BIOCHEM_UPGRADE.md index 0e4c342..40c5d29 100644 --- a/plans/BIOCHEM_UPGRADE.md +++ b/plans/BIOCHEM_UPGRADE.md @@ -121,15 +121,17 @@ > Все 7 фильтров в UI редактора теперь с данными; контроллер их уже валидирует, > XP начисляется. data_json совпадает с UI (balance: reactants/products/coefficients; > match: pairs; classify/complete: target/equation/choices/answer). -> Осталось: drag-and-drop (5.2), 3D-build (5.3), адаптивность (5.4), ачивки bc_* (5.5). +> Сделано также: 5.2 живая поэлементная проверка баланса; 5.3 3D-build с +> изоморфизмом графа (Morgan-хеш) + 4 задания; 5.5 ачивки bc_* привязаны к +> событиям. Осталось только 5.4 (адаптивность/«задача дня»/streak). Слоты ачивок `bc_5_challenges`/`bc_20_challenges` уже есть в `_shared.js` — довести до конца и расширить вызовы. - [x] 5.1 Засидированы типы challenge: balance, match, classify, complete (16 заданий, идемпотентный сидер). -- [ ] 5.2 UI drag-and-drop для balance/match (сейчас только выбор/ввод). -- [ ] 5.3 3D-build challenge: собрать молекулу и проверить не только формулу, но и связность/геометрию. +- [x] 5.2 Живая поэлементная проверка баланса (счётчик атомов слева=справа по мере ввода). _(числовой ввод с мгновенной обратной связью вместо литерального drag-and-drop.)_ +- [x] 5.3 3D-build challenge: `structuralMatch`/`canonicalHash` (Morgan) в контроллере — проверка связности против эталона (molecule_id), отличает изомеры (этанол≠диметиловый эфир); +4 structure-build задания. - [ ] 5.4 Адаптивная сложность + «задача дня»; streak по биохимии. -- [ ] 5.5 Привязать ачивки `bc_5_challenges`/`bc_20_challenges` (и новые: «собрал АТФ», «сбалансировал 10 реакций», «прошёл цикл Кребса») к событиям; проверить начисление в `gamificationController`. +- [x] 5.5 Ачивки `bc_first_molecule`/`bc_5_challenges`/`bc_20_challenges` привязаны: `checkAchievements` вызывается после решения задачи и сохранения молекулы; счётчики из `bio_user_challenges`/`bio_user_molecules` в `checkPhase3Achievements`. ---