Files
Learn_System/frontend
Maxim Dolgolyov 66166f6294 feat(algebra-8): синхронизация прогресса учебника с каталогом
Раньше: алгебра 1 и 2 главы хранили прогресс только в localStorage,
поэтому каталог /textbooks показывал 0/N прочитано и кнопку 'Открыть'
даже после активной работы с учебником.

Теперь обе главы шлют POST /api/textbooks/:slug/progress:
- markLastPara(id) — при каждом goTo(); сервер запоминает last_para,
  каталог показывает кнопку 'Продолжить'.
- markParaRead(id) — когда STATE.progress[key] первый раз ≥ 50%
  (внутрипараграфный прогресс достаточен); сервер добавляет id в
  paragraphs_read[], каталог показывает '1/7 прочитано'.
- Дебаунс 600мс — несколько быстрых переходов схлопываются в один POST.
- keepalive:true + beforeunload-flush, чтобы последний переход не
  потерялся при закрытии вкладки.
- loadServerReadState() при init() — если на другом устройстве уже
  прочитаны параграфы, локальный STATE.progress поднимается до 100%
  для них (визуально совпадает с каталогом).

Slug: 'algebra-8' для ch1, 'algebra-8-ch2' для ch2.
2026-05-27 16:01:26 +03:00
..