feat(trainer): P4 — авторинг задач учителем + раздача классу
- POST /api/practice/author: учитель пишет story/lhs/rhs/answer → та же проверка подстановкой (validateAndVerify) → пул; не сходится → 422 - POST /api/practice/assign: выдать тему классу → durable pushNotif каждому ученику (ссылка /trainer); владелец/админ, чужой → 403 - клиент: LS.practiceAuthor/Assign; в теме «Текстовые задачи» учителю кнопки «Своя задача» (модалка-форма) и «Выдать классу» (пикер классов) - тесты: author (валид→пул, неверный→422, ученик→403), assign (владелец уведомляет, чужой→403) — practice 19/19 + practice-gen 16/16 - смоук страницы 27/27; план P4 → DONE (lean: ручной авторинг + раздача, без полного DSL-конструктора) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -97,9 +97,21 @@ practice.test.js 11/11 (+SR box/due).
|
||||
- **Acceptance:** доля задач, прошедших верификацию с 1–2 ретраев, ≥95%; пул кэшируется;
|
||||
ни одна неверная задача не доходит до ученика (гарантирует инвариант).
|
||||
|
||||
## Phase 4 — Авторинг учителем
|
||||
## Phase 4 — Авторинг учителем — DONE (lean)
|
||||
|
||||
**Цель:** учитель создаёт свои наборы и раздаёт классу (как sim-builder/Quantik Ф5).
|
||||
**Сделано (переиспользуя P3-проверку):** ручной авторинг — `POST /api/practice/author`
|
||||
(учитель пишет story/lhs/rhs/answer → та же `validateAndVerify` подстановкой → пул;
|
||||
не сходится → 422). Раздача классу — `POST /api/practice/assign` (владелец/админ →
|
||||
durable `pushNotif` каждому ученику класса, ссылка `/trainer`). Клиент:
|
||||
`LS.practiceAuthor/Assign`; в теме «Текстовые задачи» учителю — кнопки «Своя задача»
|
||||
(модалка-форма с серверной проверкой) и «Выдать классу» (пикер классов → уведомление).
|
||||
Тесты: author (валид→пул, неверный→422, ученик→403), assign (владелец уведомляет,
|
||||
чужой→403). **Не делалось (осознанно):** полноценный визуальный конструктор
|
||||
ПАРАМЕТРИЧЕСКИХ генераторов (pick/derive/lhs/rhs DSL) — крупный отдельный билдер;
|
||||
текущий авторинг закрывает «учитель создаёт задачи + раздаёт классу» переиспользованием
|
||||
пула и инварианта проверки.
|
||||
|
||||
**Цель (исходная):** учитель создаёт свои наборы и раздаёт классу (как sim-builder/Quantik Ф5).
|
||||
|
||||
- Конструктор генераторов: шаблон `lhs/rhs`, диапазоны параметров, формула ответа, шаги
|
||||
решения; превью + клиентская валидация через `SimExpr.compile`.
|
||||
|
||||
Reference in New Issue
Block a user