feat(catalog): хаб-страница для Алгебры 8 (3 главы под единым слагом)

- migration 014: parent_slug column + algebra-8 hub row +
  rename old algebra-8 → algebra-8-ch1 (progress сохраняется
  через стабильный textbook_id=3)
- backend/routes/textbooks.js: GET / фильтрует parent_slug IS NULL;
  aggregated progress для хабов; новый GET /:slug/children
- algebra_8_hub.html: новая хаб-страница с 3 карточками глав,
  hero с общим прогрессом, XP-бейдж, ссылки на главы
- algebra_8/ch2/ch3: кнопки cross-chapter заменены на
  одну «К алгебре 8» в шапке

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-27 16:49:20 +03:00
parent 033c941b02
commit 699fdcc7fb
6 changed files with 469 additions and 24 deletions
+2 -6
View File
@@ -337,13 +337,9 @@ input,select,textarea{font-family:inherit}
<div class="hdr-sub">Квадратные уравнения</div>
</div>
<div class="hdr-side">
<a href="/textbook/algebra-8" class="hdr-btn" title="К Главе 1">
<a href="/textbook/algebra-8" class="hdr-btn" title="К Алгебре 8 — все главы">
<svg class="ic" viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg>
Глава 1
</a>
<a href="/textbook/algebra-8-ch3" class="hdr-btn" title="К Главе 3">
Глава 3
<svg class="ic" viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg>
К алгебре 8
</a>
<button id="search-btn" class="hdr-btn" title="Поиск (Ctrl+K)">
<svg class="ic" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="m21 21-4-4"/></svg>