diff --git a/backend/src/routes/subjects.js b/backend/src/routes/subjects.js index 1de9c20..d752c80 100644 --- a/backend/src/routes/subjects.js +++ b/backend/src/routes/subjects.js @@ -11,7 +11,9 @@ router.get('/', (_req, res) => { router.patch('/:slug', authMiddleware, requireRole('admin'), (req, res) => { const { default_mode, default_count, default_test_id } = req.body; - const valid_modes = ['exam', 'practice', 'topic', 'random']; + // Старт сессии (POST /api/sessions) поддерживает только exam/practice — раньше тут + // допускались topic/random, но клик по такому предмету на дашборде падал с 400. + const valid_modes = ['exam', 'practice']; if (default_mode && !valid_modes.includes(default_mode)) return res.status(400).json({ error: 'Invalid mode' }); diff --git a/frontend/dashboard.html b/frontend/dashboard.html index 60ba7e3..3da0e8e 100644 --- a/frontend/dashboard.html +++ b/frontend/dashboard.html @@ -2222,10 +2222,14 @@ async function loadSubjects() { const list = document.getElementById('subjects-list'); try { - const SUBJ_MODE_LABELS = { exam:'Экзамен', practice:'Пробный тест', topic:'По теме', random:'Случайный' }; - const subjects = await LS.getSubjects(); + const SUBJ_MODE_LABELS = { exam:'Экзамен', practice:'Пробный тест' }; + // Прячем предметы, по которым нечего запустить (нет вопросов в банке и нет фикс-теста). + const subjects = (await LS.getSubjects()) + .filter(s => (s.question_count || 0) > 0 || s.default_test_id); + if (!subjects.length) { list.innerHTML = '