Files
Learn_System/plans/sim-builder/PLAN.md
T

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 testbackend/, node --test tests/*.test.js)
  • Lint: npm run lint:routesbackend/)
  • ⚠️ После роутов/миграций: 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 Done
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