feat(cefr): CEFR level testing and automated gap ingestion engine (Task 15)
This commit is contained in:
1 parent
1c3f03a64c
commit
3fae321322
11 files changed
+2926
-10
No files matched your search
+85
-1
@@ -70,6 +70,9 @@
|
||||
<button id="nav-reader-btn" class="btn btn-outline btn-sm" title="Интерактивная читалка и библиотека книг">
|
||||
<span>📚 Читалка</span>
|
||||
</button>
|
||||
<button id="nav-cefr-btn" class="btn btn-outline btn-sm" title="Уровневые тесты CEFR (A1, A2, B1, B2)">
|
||||
<span>🎯 Тесты CEFR</span>
|
||||
</button>
|
||||
<button id="srs-trainer-btn" class="btn btn-trainer" title="Интервальный тренажер (Flashcards, 4 варианта, диктант, ввод)">
|
||||
<span class="trainer-icon">🎓</span>
|
||||
<span class="trainer-text">Тренажёр SRS</span>
|
||||
@@ -250,6 +253,9 @@
|
||||
</div>
|
||||
|
||||
<div class="srs-topbar-right">
|
||||
<button id="srs-jump-cefr-btn" class="btn btn-sm btn-outline" title="Пройти уровневый тест CEFR (A1–B2)">
|
||||
<span>🎯 Тесты CEFR</span>
|
||||
</button>
|
||||
<button id="srs-mix-btn" class="btn btn-sm btn-ghost" title="Умный микс дня: 10 новых + 10 повторов + 5 трудных слов">
|
||||
<span id="srs-mix-label">🎲 Микс дня: ВКЛ</span>
|
||||
</button>
|
||||
@@ -589,6 +595,83 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- VIEW 4: CEFR Level Tests View -->
|
||||
<section id="cefr-view" class="cefr-view hidden">
|
||||
<!-- Screen 1: Level Overview & Selection -->
|
||||
<div id="cefr-overview-screen" class="cefr-overview-container">
|
||||
<div class="cefr-header">
|
||||
<div class="cefr-title-wrap">
|
||||
<h2>🎯 Уровневые тесты CEFR (A1 – B2)</h2>
|
||||
<p class="subtitle">Эталонные тесты по международной шкале Oxford 3000/5000. Ошибки автоматически добавляются в ваш личный тренажёр SRS со статусом «В процессе»!</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="cefr-levels-grid" class="cefr-levels-grid">
|
||||
<!-- Dynamic level cards rendered by cefr.js -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Screen 2: Active Cloze Tap Quiz -->
|
||||
<div id="cefr-quiz-screen" class="cefr-quiz-container hidden">
|
||||
<header class="cefr-quiz-topbar">
|
||||
<div class="cefr-quiz-topbar-left">
|
||||
<button id="cefr-back-btn" class="btn btn-sm btn-outline">← К уровням</button>
|
||||
<span id="cefr-quiz-level-badge" class="level-pill">Уровень A1</span>
|
||||
</div>
|
||||
<div class="cefr-quiz-topbar-center">
|
||||
<div class="srs-progress-container">
|
||||
<div id="cefr-quiz-progress-bar" class="srs-progress-fill" style="width: 0%;"></div>
|
||||
</div>
|
||||
<span id="cefr-quiz-counter" class="srs-counter">1 / 10</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="cefr-quiz-card-wrapper">
|
||||
<div id="cefr-cloze-card" class="cefr-cloze-card">
|
||||
<!-- Dynamic question content rendered by cefr.js -->
|
||||
</div>
|
||||
|
||||
<div id="cefr-next-bar" class="cefr-next-bar hidden">
|
||||
<button id="cefr-next-btn" class="btn btn-primary btn-lg btn-block">Следующий вопрос → (Space)</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Screen 3: Quiz Session Summary -->
|
||||
<div id="cefr-summary-screen" class="cefr-summary-container hidden">
|
||||
<div class="cefr-summary-card">
|
||||
<div class="summary-trophy">🏆</div>
|
||||
<h2>Тест завершён!</h2>
|
||||
<p id="cefr-sum-lead" class="summary-lead">Отличная работа по проверке словарного запаса.</p>
|
||||
|
||||
<div class="summary-metrics">
|
||||
<div class="metric-card">
|
||||
<span class="metric-val text-primary" id="cefr-sum-score">0%</span>
|
||||
<span class="metric-desc">Точность</span>
|
||||
</div>
|
||||
<div class="metric-card">
|
||||
<span class="metric-val text-success" id="cefr-sum-correct">0 / 0</span>
|
||||
<span class="metric-desc">Правильно</span>
|
||||
</div>
|
||||
<div class="metric-card">
|
||||
<span class="metric-val text-warning" id="cefr-sum-mistakes">0</span>
|
||||
<span class="metric-desc">Ошибок</span>
|
||||
</div>
|
||||
<div class="metric-card">
|
||||
<span class="metric-val text-danger" id="cefr-sum-ingested">0</span>
|
||||
<span class="metric-desc">Добавлено в SRS</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="summary-buttons">
|
||||
<button id="cefr-sum-repeat-btn" class="btn btn-primary btn-lg">🔄 Ещё 10 вопросов</button>
|
||||
<button id="cefr-sum-srs-btn" class="btn btn-outline btn-lg hidden">🎓 Закрепить ошибки в SRS</button>
|
||||
<button id="cefr-sum-levels-btn" class="btn btn-ghost btn-lg">← К списку уровней</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Sticky Bulk Action Bar for Batch Selection Mode -->
|
||||
<div id="batch-action-bar" class="batch-action-bar hidden">
|
||||
@@ -648,6 +731,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mobile-menu-actions">
|
||||
<button id="mobile-cefr-btn" class="btn btn-outline btn-block">🎯 Уровневые тесты CEFR (A1–B2)</button>
|
||||
<button id="mobile-stats-btn" class="btn btn-outline btn-block">📊 Статистика & Календарь</button>
|
||||
<button id="mobile-export-btn" class="btn btn-outline btn-block">📤 Экспорт словаря</button>
|
||||
<button id="mobile-pwd-btn" class="btn btn-outline btn-block">🔑 Сменить пароль</button>
|
||||
@@ -1114,7 +1198,7 @@
|
||||
<!-- Audio Element for native streaming -->
|
||||
<audio id="global-audio-player" preload="none"></audio>
|
||||
|
||||
<script type="module" src="/static/js/app.js?v=5.0"></script>
|
||||
<script type="module" src="/static/js/app.js?v=5.1"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in new issue
Block a user