4.7 KiB
Feature: Конструктор симуляций (SimForge)
Branch: feature/sim-builder
Base branch: master
Created: 2026-06-13
Status: 🟡 In Progress
Strategy: Incremental
Mode: Automated
Execution: Orchestrator
Summary
Полноценный движок авторинга интерактивных 2D-симуляций для учителя-непрограммиста.
Учитель собирает симуляцию из данных (JSON-спека): параметры-слайдеры, объекты
(фигуры/векторы/точки/подписи с LaTeX), привязанные формулами к параметрам и времени
t; настоящая физика (гравитация/пружины/столкновения/трение); графики; перетаскивание.
Сохраняет в БД, публикует в каталог лаборатории, раздаёт классу, открывает на доске
онлайн-урока, клонирует чужие и стартует из шаблонов.
Спека — это данные, не код. Движок выражений — безопасный (whitelisted-математика),
⛔ без eval/Function/доступа к DOM/глобалам: спека шарится между людьми.
Build & Test Commands
- Build: нет (vanilla JS, без бандлера)
- Test:
npm test(вbackend/,node --test tests/*.test.js) - Lint:
npm run lint:routes(вbackend/) - ⚠️ После роутов/миграций:
npm run migrate(живая БД) + рестарт сервера (авто-перезагрузки нет). - ⚠️
npm testимеет baseline 3 pre-existing fail (auth.test.js) — хук толерантен (BASELINE_FAILS=3).
Project Constraints (соблюдают ВСЕ агенты)
- ⛔ Никаких эмодзи в коде — только inline SVG
.ic. - Поиск по коду:
ast-index(символы/usages/callers) +vex(semantic). НЕ Grep tool. - БД — встроенный
node:sqlite(DatabaseSync), НЕ better-sqlite3. Живая БДbackend/data/learnspace.db. - Frontend — vanilla JS,
window.LS.*(js/api.js), без бандлера. Статика через Express. - Стейджить файлы поимённо (НЕ
git add -A— в репо много мусорных untracked). - Движок выражений — безопасный парсер, не
eval/new Function. - Переиспользовать: LabRegistry,
_fx_motion,_graph_panel,_phys_visuals,_util, парсерy=f(x)из graph.js; паттерн раздачи из «Мои материалы»;lab_sim_links; конвейер встраивания sim на доску (simOpen/simState/simMode/simAnnotate).
Phases
- Phase 0: Спека v1 + рантайм (формульные сцены) [domain: frontend] → subplan
- Phase 1: Графики + интеракции [domain: frontend] → subplan
- Phase 2: Физический интегратор [domain: frontend] → subplan
- Phase 3: БД + API (custom_sims) [domain: backend] → subplan
- Phase 4: Билдер (редактор) [domain: frontend] → subplan
- Phase 5: Каталог (custom-sims в /lab) [domain: fullstack] → subplan
- Phase 6: Раздача / шаблоны / клон / программа [domain: fullstack] → subplan
- Phase 7: Доска онлайн-урока [domain: fullstack] → subplan
Phase Progress Log
| Phase | Domain | Status | Review | Build | Committed |
|---|---|---|---|---|---|
| Phase 0: Runtime core | frontend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 1: Plots & interactions | frontend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 2: Physics | frontend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 3: Persistence + API | backend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 4: Builder UI | frontend | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 5: Catalog | fullstack | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 6: Sharing | fullstack | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
| Phase 7: Classroom | fullstack | ⬜ Not Started | ⬜ | ⬜ | ⬜ |
Final Review
- Comprehensive code review (final-reviewer)
- Security review (safe expression eval, ownership, sanitization)
- Full test suite passes (within baseline)
- Merged to
master