feat: улучшения системы расписания и UI
- Добавлены таймауты (8 сек) для запросов расписания - Реализована навигация по неделям с поддержкой параметра wk - Улучшено кэширование с автоматической очисткой старых записей - Добавлена валидация параметров в getSchedule - Улучшен UI загрузки с анимированными сообщениями и предупреждениями - Оптимизирована обработка ошибок и очистка памяти JSDOM - Обновлены зависимости проекта - Добавлена документация для старых файлов
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Schedule } from '@/widgets/schedule'
|
||||
import { Day } from '@/shared/model/day'
|
||||
import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next'
|
||||
import { getSchedule, ScheduleResult } from '@/app/agregator/schedule'
|
||||
import { getSchedule, ScheduleResult, ScheduleTimeoutError } from '@/app/agregator/schedule'
|
||||
import { NextSerialized, nextDeserialized, nextSerialized } from '@/app/utils/date-serializer'
|
||||
import { NavBar } from '@/widgets/navbar'
|
||||
import { LastUpdateAt } from '@/entities/last-update-at'
|
||||
@@ -149,9 +149,14 @@ export async function getServerSideProps(context: GetServerSidePropsContext<{ gr
|
||||
cleanupCache()
|
||||
}
|
||||
} catch(e) {
|
||||
// При таймауте или любой другой ошибке используем кэш, если он доступен
|
||||
if (cachedSchedule?.lastFetched) {
|
||||
scheduleResult = cachedSchedule.results
|
||||
parsedAt = cachedSchedule.lastFetched
|
||||
// Логируем использование кэша при таймауте
|
||||
if (e instanceof ScheduleTimeoutError) {
|
||||
console.warn(`Schedule fetch timeout for group ${group}, using cached data from ${cachedSchedule.lastFetched.toISOString()}`)
|
||||
}
|
||||
} else {
|
||||
throw e
|
||||
}
|
||||
|
||||
@@ -23,3 +23,4 @@ export default function handler(
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,3 +23,4 @@ export default function handler(
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ export default function HomePage({ groups, groupsByCourse }: HomePageProps) {
|
||||
<>
|
||||
<Head>
|
||||
<title>Расписание занятий — Колледж Связи ПГУТИ</title>
|
||||
<meta name="description" content="Расписание занятий для всех групп Колледжа Связи ПГУТИ. Выберите группу для просмотра расписания." />
|
||||
<meta name="description" content="Расписание занятий для всех групп Колледжа Связи ПГУТИ" />
|
||||
</Head>
|
||||
<div className="min-h-screen p-4 md:p-8">
|
||||
<div className="max-w-4xl mx-auto space-y-4">
|
||||
|
||||
Reference in New Issue
Block a user