- Изменен порядок проверок: сначала определяется isChange, затем проверяется 'Свободное время'
- Добавлена специальная обработка замен 'свободное время' на пару
- Корректно извлекаются название предмета, преподаватель, адрес и кабинет из структуры HTML
- Теперь при замене отображаются все данные пары вместо 'Пары нет'
Основные изменения:
- Предупреждение о неактуальности расписания:
* Добавлен баннер предупреждения при использовании fallback кэша
* Добавлено toast уведомление о возможной неактуальности данных
* Баннер показывает возраст кэша в удобочитаемом формате
* Автоскролл с учетом рендеринга баннера
- Debug опции в админ-панели:
* Добавлена секция с аккордеоном для debug опций (только в dev режиме)
* Опции: принудительное использование кэша, пустое расписание, ошибка, таймаут, информация о кэше
* Все опции с тумблерами для удобного управления
* API endpoint обновлен для поддержки debug настроек
- Структурные изменения:
* Создан компонент Accordion для shadcn/ui
* Расширены типы AppSettings для поддержки debug опций
* Компонент баннера размещен внутри Schedule компонента (следуя правилам проекта)
* Добавлен файл .cursorrules с правилами для AI ассистента
- Исправления:
* Исправлена сериализация undefined значений в getServerSideProps
* Улучшена логика автоскролла при использовании fallback кэша
* Убраны лишние отступы у баннера предупреждения
- Зависимости:
* Добавлен @radix-ui/react-accordion для компонента аккордеона
- Прочие изменения:
* Обновлены настройки в settings.json
* Изменения в старых файлах (old/README.md, old/old-schedule.txt)
* Обновления в API endpoints админ-панели
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 - файл с настройками