Commit Graph

8 Commits

Author SHA1 Message Date
kilyabin
b1f892ca7d perf: оптимизация памяти - кэширование только текущей недели и условный парсинг Критические оптимизации для снижения потребления памяти с 1.2 ГБ: - Кэширование только текущей недели: * Кэш хранит только текущие недели (без параметра wk) * Запросы с конкретной неделей (wk указан) не кэшируются * Ключ кэша изменен с ${group}_${wk} на group * Уменьшен maxCacheSize с 100 до 50 записей - Условный парсинг навигации по неделям: * Парсинг навигации выполняется только если weekNavigationEnabled === true * Если навигация выключена, parseWeekNavigation не вызывается * Экономит память и CPU при выключенной навигации * Параметр shouldParseWeekNavigation передается через getSchedule -> parsePage - Результат: * Значительное снижение потребления памяти * Кэш содержит только актуальные данные (текущие недели) * Парсинг навигации выполняется только при необходимости Измененные файлы: - src/pages/[group].tsx - логика кэширования только текущей недели - src/app/agregator/schedule.ts - параметр для условного парсинга - src/app/parser/schedule.ts - условный вызов parseWeekNavigation
Критические оптимизации для снижения потребления памяти

- Кэширование только текущей недели:
  * Кэш хранит только текущие недели (без параметра wk)
  * Запросы с конкретной неделей (wk указан) не кэшируются
  * Ключ кэша изменен с `${group}_${wk}` на `group`
  * Уменьшен maxCacheSize с 100 до 50 записей

- Условный парсинг навигации по неделям:
  * Парсинг навигации выполняется только если weekNavigationEnabled === true
  * Если навигация выключена, parseWeekNavigation не вызывается
  * Экономит память и CPU при выключенной навигации
  * Параметр shouldParseWeekNavigation передается через getSchedule -> parsePage

- Результат:
  * Значительное снижение потребления памяти
  * Кэш содержит только актуальные данные (текущие недели)
  * Парсинг навигации выполняется только при необходимости

Измененные файлы:
- src/pages/[group].tsx - логика кэширования только текущей недели
- src/app/agregator/schedule.ts - параметр для условного парсинга
- src/app/parser/schedule.ts - условный вызов parseWeekNavigation
2025-11-23 02:38:09 +04:00
kilyabin
2893a9fd18 feat: добавлена навигация по неделям с возможностью отключения через админ-панель
feat: добавлена навигация по неделям с возможностью отключения через админ-панель

Реализована навигация по неделям в расписании с парсингом ссылок из HTML страницы
оригинального сайта. Добавлена возможность управления навигацией через админ-панель
с сохранением настроек в файл.

Основные изменения:

- Парсинг навигации по неделям:
  * Добавлены типы WeekInfo и ParseResult в парсер
  * Реализована функция parseWeekNavigation для извлечения ссылок с параметром wk
  * Парсер ищет ссылки в href, onclick, формах и других атрибутах
  * Автоматическое определение номеров недель из текста ссылок и контекста
  * Вычисление соседних недель на основе найденных данных

- API и функции:
  * Обновлена функция getSchedule для поддержки параметра wk в URL
  * Обновлен getServerSideProps для чтения параметра wk из query string
  * Кэширование расписания с учетом недели (ключ включает group + wk)

- Компоненты:
  * Создан компонент WeekNavigation с кнопками навигации
  * Интегрирована навигация в компонент Schedule
  * Навигация работает через изменение URL параметра wk

- Система настроек:
  * Создан settings-loader для загрузки/сохранения настроек в JSON
  * Добавлен API endpoint /api/admin/settings для управления настройками
  * Добавлен переключатель в админ-панели для включения/выключения навигации
  * Настройки сохраняются в src/shared/data/settings.json и переживают перезапуски

- Файлы:
  * src/app/parser/schedule.ts - парсинг навигации по неделям
  * src/app/agregator/schedule.ts - поддержка параметра wk
  * src/pages/[group].tsx - чтение wk из query и передача настроек
  * src/widgets/schedule/week-navigation.tsx - компонент навигации
  * src/widgets/schedule/index.tsx - интеграция навигации
  * src/pages/admin.tsx - управление настройками
  * src/shared/data/settings-loader.ts - загрузка/сохранение настроек
  * src/pages/api/admin/settings.ts - API для настроек
  * src/shared/data/settings.json - файл с настройками
2025-11-23 02:24:27 +04:00
kilyabin
327f143a29 fixed scripts and replaced consts 2025-11-18 04:13:20 +04:00
VityaSchel
410b5acb29 Fix hydration error; fix linter reports; fix t.me link 2023-10-02 20:25:03 +04:00
VityaSchel
755654cf9d Added last update, cache strategy, telegram fail notifications, teachers photos 2023-10-02 18:54:26 +04:00
VityaSchel
f6daee6201 Add dates, discipline fallbacks 2023-10-02 01:04:55 +04:00
VityaSchel
a4667f57c7 Added parser 2023-10-01 21:28:53 +04:00
VityaSchel
b6ea0217c3 Added parser function 2023-10-01 20:18:37 +04:00