From 0676e6e12d25672b84ea54cd105e5f1f4bd77eb2 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Sun, 31 May 2026 08:37:50 +0300 Subject: [PATCH] =?UTF-8?q?feat(teacher-guide):=20admin-only=20=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=20=D1=80=D1=83=D0=BA=D0=BE=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B0=20(=D0=B3=D0=BB=D0=B0=D0=B2=D1=8B=20A1?= =?UTF-8?q?-A6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Видимость по роли: - Teacher: главы 1-17 без admin-секций (убраны 14.4/16.3/17 → перенесены в A3/A4) - Admin: дополнительный блок A1-A6 (isAdmin → display:none → show) Руководство администратора (6 глав): - A1: Командный центр — KPI, очередь триажа, лента завершений - A2: Пользователи — список, карточка (роль/блок/история/удаление), Ctrl+K поиск - A3: Контент и доступ — allowlist учебников, симуляции, feature flags - A4: Геймификация — статистика, начисление XP/монет с пресетами, сброс прогресса - A5: Аудит и безопасность — аудит-лог, RBAC, модерация аватаров - A6: System Health — CPU/RAM/event loop, HTTP-статистика, журнал ошибок Технические изменения: - initPage → const { isAdmin } - ALL_CHAPTERS() = CHAPTERS + (isAdmin ? ADMIN_CHAPTERS : []) - admin nav в sidebar (tg-nav-admin), admin chapters в tg-admin-content - scrollToSection/updateReadUI/initHash используют ALL_CHAPTERS() - прогресс-бар считает все главы (17 или 23 в зависимости от роли) Co-Authored-By: Claude Sonnet 4.6 --- frontend/teacher-guide.html | 419 ++++++++++++++++++++++++++++++++++-- 1 file changed, 406 insertions(+), 13 deletions(-) diff --git a/frontend/teacher-guide.html b/frontend/teacher-guide.html index 654a188..884db76 100644 --- a/frontend/teacher-guide.html +++ b/frontend/teacher-guide.html @@ -375,6 +375,42 @@ .tg-section.search-hidden { display: none; } .tg-chapter.search-hidden { display: none; } + /* Admin guide block */ + .tg-admin-divider { + display: flex; align-items: center; gap: 10px; + margin: 22px 0 10px; + font-size: 0.62rem; font-weight: 700; letter-spacing: 0.1em; + text-transform: uppercase; color: var(--text-3); + } + .tg-admin-divider::before, .tg-admin-divider::after { + content: ''; flex: 1; height: 1px; background: rgba(15,23,42,0.09); + } + .tg-nav-chapter.admin .tg-nav-ch-btn { color: #c0306a; } + .tg-nav-chapter.admin .tg-nav-ch-btn .tg-nav-ch-icon svg { stroke: #c0306a; } + .tg-nav-chapter.admin .tg-nav-ch-btn:hover, + .tg-nav-chapter.admin .tg-nav-ch-btn.active { background: rgba(241,91,181,0.07); } + .tg-admin-badge { + display: inline-flex; align-items: center; gap: 5px; + padding: 3px 10px; border-radius: 99px; + background: rgba(241,91,181,0.1); color: #c0306a; + font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; + margin-left: auto; + } + .tg-admin-badge svg { width: 12px; height: 12px; stroke: currentColor; } + .tg-chapter.admin-chapter .tg-chapter-header { background: linear-gradient(135deg,rgba(241,91,181,0.04),rgba(155,93,229,0.04)); border-radius: 16px; margin-bottom: 4px; } + .tg-chapter.admin-chapter .tg-chapter-icon svg { stroke: #c0306a; } + .tg-chapter.admin-chapter .tg-chapter-num { color: #c0306a; } + .tg-chapter.admin-chapter .tg-chapter-try { background: rgba(241,91,181,0.1); color: #c0306a; border: 1.5px solid rgba(241,91,181,0.25); } + .tg-chapter.admin-chapter .tg-chapter-try:hover { background: #c0306a; color: #fff; } + .tg-chapter-admin-header { + display: inline-flex; align-items: center; gap: 7px; + padding: 6px 14px; border-radius: 99px; + background: rgba(241,91,181,0.1); color: #c0306a; + font-size: 0.76rem; font-weight: 700; + margin-bottom: 18px; + } + .tg-chapter-admin-header svg { width: 14px; height: 14px; stroke: currentColor; } + /* Mobile */ @media (max-width: 1024px) { .tg-layout { padding: 0 16px 60px; gap: 0; } @@ -409,6 +445,10 @@
+ @@ -1248,9 +1288,6 @@
На онлайн-уроке
Откройте симуляцию в соседней вкладке и включите демонстрацию экрана — ученики увидят 3D-вращение в реальном времени. Или используйте режим аннотации прямо поверх симуляции на доске.
- -
-
14.4 Управление симуляциями (для администратора)

В панели администратора → вкладка «Симуляции»:

Включить/выключить конкретную симуляцию из каталога.
@@ -1354,8 +1391,6 @@
Радужный ошейник
При стрике 7+ дней подряд питомец получает анимированный радужный ошейник. Отличный мотиватор для регулярной работы!
-
-
16.3 Начисление XP администратором

В панели администратора → вкладка «Геймификация» → раздел «Начислить XP / Монеты»:

1
Выберите ученика из списка (есть фильтр по имени).
@@ -1437,6 +1472,322 @@
+ + +
@@ -1448,9 +1799,15 @@