chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: reference_student_materials
|
||||
description: "«Мои материалы» — ученик сохраняет к себе материалы онлайн-урока (доска/заметка), копия переживает удаление сессии"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: reference
|
||||
originSessionId: 60467058-b40e-4bd9-9f7f-d1e362e8039a
|
||||
---
|
||||
|
||||
Личная коллекция ученика «Мои материалы» (сделано 2026-06-04, commit 44ab5e0). Контекст:
|
||||
живой урок (классрум) уже персистит доску/чат/заметки, и ученик их видит на `my-lessons.html`
|
||||
(только ученик; учителя редиректит на `/lesson-history`). Но всё привязано к сессии — учитель
|
||||
может `DELETE /api/classroom/:id/history` и стереть. Решение — независимая копия у ученика.
|
||||
|
||||
- Миграция **060**: `student_materials(user_id, kind CHECK board|note|link|image, title, body,
|
||||
url, source_session_id FK→classroom_sessions ON DELETE SET NULL, source_title denormalized, created_at)`.
|
||||
- API **/api/materials** (`routes/materials.js` + `studentMaterialsController.js`): GET list (свои),
|
||||
POST create (валидация kind/обязательных полей), DELETE /:id (проверка владельца). Любой
|
||||
авторизованный (в осн. ученики). Хелперы `LS.listMaterials/saveMaterial/deleteMaterial` в js/api.js.
|
||||
- Доска: добавлен `Whiteboard.exportBlob(cb)` (как exportPNG, но отдаёт Blob). Кнопка «К себе» на
|
||||
доске → exportBlob → `LS.uploadFile` (/api/files) → saveMaterial(kind:'board', url). Кнопка «К себе»
|
||||
на заметке → saveMaterial(kind:'note', body). Обе в `my-lessons.html` (страница ученика).
|
||||
- Новая страница **/my-materials** (`frontend/my-materials.html`): сетка карточек (доска=картинка
|
||||
открыть/скачать, заметка=текст, ссылка), удаление. Пункт сайдбара «Мои материалы» (только ученик,
|
||||
js/sidebar.js, группа «Учебный процесс»).
|
||||
- **Сохранение ЧАСТИ доски** (commit 116876d→fcb8ef7): логика вынесена в общий **`/js/board-clip.js`**
|
||||
(`BoardClip.savePage(wb,meta,btn)` / `saveRegion(...)` + кроп-оверлей; meta={sourceSessionId,sourceTitle,pageNum}).
|
||||
Кроп: exportBlob снимка → выделение прямоугольника → обрезка (offscreen canvas, коорд × naturalW/displayedW)
|
||||
→ /api/files → saveMaterial(kind:'image'). Подключён И в **my-lessons.html** (просмотр), И в **classroom.html**
|
||||
(ЖИВОЙ урок): кнопки «Область»/«К себе» в ученической панели `#cr-student-nav`, обёртки
|
||||
crSaveBoardPage/crSaveBoardRegion над `_wb`+`_session`. Инстанс живой доски в классруме — `_wb`.
|
||||
**План развития:** `plans/my-materials/PLAN.md` (6 фаз). Сделано:
|
||||
- **Ф1** (fd3e5c4): `PATCH /api/materials/:id` (title/body), кнопка «+Заметка» (личный блокнот), «Изменить» на карточках.
|
||||
- **Ф2** (2c7e974): миграция **061** `material_collections`(папки) + `student_materials.collection_id`(ON DELETE SET NULL)+`tags`;
|
||||
CRUD коллекций `/api/materials/collections`; GET /materials отдаёт {materials, collections}; на странице — бар папок,
|
||||
поиск, фильтр по типу, перенос в папку (select на карточке).
|
||||
- **Ф6a** (9c95dc8): кнопки «К себе»/«Область» учителю в `lesson-history.html`; пункт сайдбара «Мои материалы» виден всем.
|
||||
- **Ф3** (61e30be+43fe90d): `js/material-save.js` (MaterialSave.note/link/image); кнопка «В мои материалы»
|
||||
на задачах экзамена (task-card.js, заметка=условие+ответ+решение); на учебнике — `js/textbook-clip.js`
|
||||
(плавающая кнопка, сохраняет § ссылкой), инжектится сервером в /textbook/:slug рядом с deep-link.
|
||||
- **Ф4** (d3a64ac): svg-draw `opts.bgImage` + `exportFlatBlob()` (растер подложка+вектор→PNG); на странице —
|
||||
«Рисунок» (с нуля) и «Аннотировать» (поверх board/image) через модалку SvgDraw.
|
||||
- **Ф5** (e793b4e): «В флешкарты» на заметке → выбор/создание колоды → карточка (front=заголовок, back=текст);
|
||||
хелперы fcListDecks/fcCreateDeck/fcAddCard.
|
||||
- **Ф6b** (f7357ad): `POST /api/materials/:id/share {classId|userId}` (teacher/admin) — независимая КОПИЯ
|
||||
каждому ученику (source_title «Раздатка: <учитель>») + SSE-уведомление; кнопка «Раздать» (учителю).
|
||||
- ПЛАН ЗАВЕРШЁН (все 6 фаз). Не делалось из обсуждения: теги-UI (поле tags есть, UI нет), экспорт PDF/ZIP,
|
||||
«учить из материалов», SRS-интеграция.
|
||||
Reference in New Issue
Block a user