Commit Graph

38 Commits

Author SHA1 Message Date
kilyabin
16bba463eb feat: добавлено предупреждение о fallback кэше и debug опции
Основные изменения:

- Предупреждение о неактуальности расписания:
  * Добавлен баннер предупреждения при использовании 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 админ-панели
2025-12-02 01:05:36 +04:00
kilyabin
86715eaf66 feat: улучшение кэширования и обработки ошибок расписания
- Изменен TTL кэша с 1 часа на 15 минут для нормального использования
- Добавлен fallback кэш на 24 часа для использования при ошибках парсинга
- Улучшена обработка ошибок: при отсутствии кэша показывается страница с ошибкой вместо 500
- Добавлена анимация появления сообщения об ошибке
- Улучшено логирование fallback кэша с указанием возраста
- Добавлены новые сообщения загрузки и логика избежания повторений
2025-11-30 22:50:23 +04:00
kilyabin
3345eb2e3f feat: улучшения системы расписания и UI
- Добавлены таймауты (8 сек) для запросов расписания
- Реализована навигация по неделям с поддержкой параметра wk
- Улучшено кэширование с автоматической очисткой старых записей
- Добавлена валидация параметров в getSchedule
- Улучшен UI загрузки с анимированными сообщениями и предупреждениями
- Оптимизирована обработка ошибок и очистка памяти JSDOM
- Обновлены зависимости проекта
- Добавлена документация для старых файлов
2025-11-30 22:15:07 +04:00
kilyabin
fcacea3653 style: добавлены пустые строки в конце файлов
- Добавлены пустые строки в конце файлов для соответствия стандартам форматирования
- Исправлено отсутствие перевода строки в конце old/old-schedule.txt
2025-11-28 00:43:04 +04:00
kilyabin
dd6058881c fix: исправлена TypeScript ошибка и улучшена обработка ошибок сборки
- Исправлена TypeScript ошибка в login.ts: добавлено поле retryAfter в тип ResponseData
- Улучшена обработка ошибок в manage.sh: добавлена проверка успешности сборки перед проверкой standalone директории
- Предупреждение о missing standalone директории теперь выдает ошибку с подробным описанием
2025-11-28 00:42:04 +04:00
kilyabin
9df04745df Рефакторинг: улучшение системы аутентификации и UI компонентов
- Удалены устаревшие файлы (mock.js, old-schedule.txt, loading-overlay.tsx)
- Переработана система аутентификации (login, logout, check-auth)
- Добавлен компонент toast для уведомлений
- Улучшен контекст загрузки (loading-context)
- Обновлен парсер расписания (schedule.ts)
- Улучшена админ-панель
- Обновлена документация (README.md)
- Старые файлы перемещены в директорию old/
2025-11-28 00:29:46 +04:00
kilyabin
24bb531dfb feat(ui): improve lesson cards and theme button, optimize dependency checks
UI Improvements:
- Highlight classroom number in lesson cards using Badge component
  * Applied to both mobile and desktop views
  * Improved visual distinction for classroom information

- Fix theme switcher button layout on mobile
  * Add "Тема" text label inside the button (visible on all devices)
  * Remove redundant absolute positioned span below button
  * Fix text overflow issues on mobile devices
  * Improve button isolation to prevent text escaping

Performance Optimization:
- Optimize dependency installation check in deployment scripts
  * Replace timestamp-based check with content hash comparison
  * Use MD5 hash of package.json and lock files to detect real changes
  * Save hash after successful installation for future comparisons
  * Significantly reduce unnecessary npm install runs during updates
  * Add .dependencies.hash to .gitignore

Files changed:
- src/widgets/schedule/lesson.tsx - Added Badge for classroom
- src/features/theme-switch/index.tsx - Added text label to button
- src/widgets/navbar/index.tsx - Improved button container structure
- src/pages/index.tsx - Removed redundant theme label span
- scripts/manage.sh - Optimized dependency check logic
- scripts/install.sh - Optimized dependency check logic
- .gitignore - Added .dependencies.hash exclusion
2025-11-26 01:09:46 +04:00
kilyabin
2225851177 feat: new favicons and minor fixes 2025-11-26 00:35:58 +04:00
kilyabin
423178aefb fix: navigation under weeks switch 2025-11-26 00:10:55 +04:00
kilyabin
3ccab6bf51 fix: removed the meanness
removed the meanness left by the developer of the base code
2025-11-24 02:06:12 +04:00
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
cf0137a8d6 feat: добавлены анимации загрузки и переходов между разделами
- Добавлен полноэкранный индикатор загрузки с размытием фона (LoadingOverlay)
- Реализован глобальный контекст загрузки для отслеживания переходов между страницами
- Добавлены плавные fade-анимации при переходах между страницами
- Реализованы поочередные (stagger) анимации для карточек:
  * Карточки дней на странице расписания
  * Карточки уроков внутри каждого дня
  * Карточки групп на главной странице
- Анимации работают на всех устройствах, включая мобильные
- Улучшен компонент Spinner с поддержкой разных размеров
- Исправлена ошибка гидратации с вложенными <li> элементами в навигации
- Оптимизированы задержки анимаций для более быстрого отображения контента
2025-11-23 01:29:09 +04:00
kilyabin
e5262f8203 feat: добавлена админ-панель и главная страница с навигацией по курсам
Основные изменения:

Админ-панель:
- Создана защищенная паролем админ-панель по пути /admin
- Реализована система авторизации с сессионными куками
- Добавлен CRUD для управления группами (создание, редактирование, удаление)
- Добавлено поле "курс" (1-5) для каждой группы с возможностью редактирования

Структура данных:
- Миграция групп из TypeScript файла в JSON формат (groups.json)
- Обновлена структура данных: добавлено поле course
- Реализована автоматическая миграция старых данных в новый формат
- Создан groups-loader для работы с JSON файлом

Главная страница:
- Создана главная страница с аккордеоном по курсам (1-5)
- Группы сгруппированы по курсам для удобной навигации
- Добавлены кнопки: "Добавить группу", переключение темы и GitHub
- Убрана верхняя навигация с главной страницы

Навигация:
- Добавлена кнопка "К группам" в начало навигации на страницах расписания
- На мобильных устройствах скрыты кнопки групп, оставлена только кнопка возврата
- Улучшена адаптивность навигации

Технические улучшения:
- Исправлена проблема с tailwind-scrollbar-hide (заменен плагин на CSS класс)
- Обновлены все компоненты для работы с новой структурой данных групп
- Добавлена поддержка переменных окружения ADMIN_PASSWORD и ADMIN_SESSION_SECRET
2025-11-23 00:58:58 +04:00
kilyabin
808d577964 feat: исправление мобильной версии и улучшение UX
- Исправлена мобильная версия: добавлена горизонтальная прокрутка навигации,
  оптимизированы отступы и размеры элементов для touch-интерфейсов
- Устранено зависание на мобильных: удален бесконечный цикл в date-serializer.ts
- Улучшена читаемость: сделаны светлее описание пар, дни недели и текст
  последнего обновления (текущий день остается выделенным)
- Добавлена автоматическая прокрутка до текущего дня при загрузке страницы
- Добавлено отображение 'Пары нет' для отмененных пар при замене
- Оптимизированы скрипты установки: добавлена проверка зависимостей перед
  установкой для ускорения повторных запусков
- Исправлено отображение адреса и аудитории на мобильных устройствах
- Улучшены диалоги и touch-цели для мобильных устройств
2025-11-23 00:13:51 +04:00
kilyabin
327f143a29 fixed scripts and replaced consts 2025-11-18 04:13:20 +04:00
kilyabin
b82d4e5085 add scripts to auto-install 2025-11-18 03:57:22 +04:00
VityaSchel
7e440c9bff Add loading indicator to group switcher 2023-10-15 00:58:12 +04:00
VityaSchel
95f1b8914f Change temporary redirect to permanent, fix robots.txt 2023-10-14 19:58:26 +04:00
VityaSchel
d1f990b706 Fix canonical URLs for SEO 2023-10-12 19:03:25 +04:00
VityaSchel
9ae56a82a8 Fix sitemap.xml dynamic generation 2023-10-12 18:45:24 +04:00
VityaSchel
813fa218e9 It seems that next-sitemap is unable to produce sitemaps for dynamic paths, so we're switching back to dynamic server-side sitemap generation 2023-10-12 18:35:39 +04:00
VityaSchel
3af808d77c OGP meta tags and SEO optimization 2023-10-12 16:03:43 +04:00
VityaSchel
23e32a63c4 Fix ETag header 2023-10-04 18:48:16 +04:00
VityaSchel
ea39ea9da1 Remove redunant console.logs and netlify status badge 2023-10-03 18:07:10 +04:00
VityaSchel
256153f7c3 Gray out passed days, scroll to current day by disabling history restoration in History API 2023-10-03 18:05:38 +04:00
VityaSchel
00d81ef7df ETag generation 2023-10-03 15:47:50 +04:00
VityaSchel
5bee5a2e54 Added fallback strategy 2023-10-03 02:17:12 +04:00
VityaSchel
d8ccc560ee Fixed tech stack in README 2023-10-02 22:31:51 +04:00
VityaSchel
cd22cb31d7 attempt to fix #3 2023-10-02 21:50:41 +04:00
VityaSchel
4f93a851a7 attempt to fix #2 2023-10-02 21:47:34 +04:00
VityaSchel
9bb6a67b3a Idk go fuck yourself 2023-10-02 21:45:16 +04:00
VityaSchel
2d867fab2a Add title, description, favicon, keywords, author tags 2023-10-02 21:29:20 +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
6653796e87 Added navbar 2023-10-01 21:56:32 +04:00
VityaSchel
b6ea0217c3 Added parser function 2023-10-01 20:18:37 +04:00
VityaSchel
0bb5f022e9 Initial commit 2023-10-01 18:53:04 +04:00