feat(exam-prep F5): тренажёр случайных задач + /practice/next API (random|unsolved)

This commit is contained in:
Maxim Dolgolyov
2026-05-29 10:57:22 +03:00
parent 0d1474f0f5
commit 4652f9a73d
4 changed files with 429 additions and 6 deletions
+11 -6
View File
@@ -8,6 +8,9 @@
<link href="https://fonts.googleapis.com/css2?family=Unbounded:wght@400;700;800&family=Manrope:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/css/ls.css" />
<link rel="stylesheet" href="/css/exam-prep.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" />
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" onload="onKatexLoad()"></script>
</head>
<body>
<div class="app-layout">
@@ -24,9 +27,9 @@
<path d="m9 14 2 2 4-4"/>
</svg>
</div>
<div>
<div style="flex:1">
<div class="ep-title" id="ep-title"><span class="ep-skel" style="width:280px;height:1.2em">&nbsp;</span></div>
<div class="ep-sub" id="ep-sub"><span class="ep-skel" style="width:200px;height:.8em">&nbsp;</span></div>
<div class="ep-sub" id="ep-sub"><span class="ep-skel" style="width:200px;height:.8em">&nbsp;</span></div>
</div>
</header>
@@ -34,9 +37,8 @@
<main id="ep-main">
<div class="ep-empty">
<i data-lucide="dumbbell"></i>
<h4>Тренажёр случайных задач</h4>
<p>В F3 здесь появится поле ввода ответа с автопроверкой, а в F5 — выборка случайных задач из банка с фильтром «нерешённые / слабые».</p>
<i data-lucide="loader-circle"></i>
<h4>Загрузка…</h4>
</div>
</main>
@@ -52,6 +54,9 @@
<script src="/js/mobile.js"></script>
<script src="/js/exam-prep/common.js"></script>
<script src="/js/exam-prep/api.js"></script>
<script>(async () => { await EP.boot(); if (window.lucide) lucide.createIcons(); })();</script>
<script src="/js/exam-prep/katex.js"></script>
<script src="/js/exam-prep/answer-check.js"></script>
<script src="/js/exam-prep/task-card.js"></script>
<script src="/js/exam-prep/practice.js"></script>
</body>
</html>