feat(flashcards): глобальный quick-add FAB + виджет «повтори карточку»

Backend:
- POST /api/flashcards/quick — добавить карточку из любой точки; колода по
  выбору или автоколода «Быстрые карточки» (создаётся при первом обращении)
- GET /api/flashcards/random — случайная карточка из всего пула пользователя

Frontend:
- /js/flashcard-fab.js — плавающая кнопка «запомнить» на всех страницах
  (учебник, лаборатория, симуляция…). Поповер: вопрос/ответ/колода, Ctrl+Enter.
  Гейт по фиче-флагу flashcards; исключены classroom/login/error/сама /flashcards.
  Загружается лениво из sidebar.js (на 45 страницах с шапкой).
- dashboard: виджет #w-flashcard в колонке прогресса — флип-карта (вопрос↔ответ),
  кнопка «Другая», счётчик пула, CTA при пустом пуле; слушает событие
  flashcard:added для авто-обновления.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-31 09:38:23 +03:00
parent d4ab7993c5
commit 1dcc4cbf6e
5 changed files with 388 additions and 0 deletions
+9
View File
@@ -192,4 +192,13 @@
LS.hideDisabledFeatures?.();
LS.notif?.init?.();
}
// Глобальная плавающая кнопка «создать карточку» (на всех страницах с шапкой)
if (typeof LS !== 'undefined' && LS.isLoggedIn?.() && !document.getElementById('fc-fab-loader')) {
const s = document.createElement('script');
s.id = 'fc-fab-loader';
s.src = '/js/flashcard-fab.js';
s.defer = true;
document.body.appendChild(s);
}
})();