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 админ-панели
This commit is contained in:
@@ -21,15 +21,37 @@ async function handler(
|
||||
|
||||
if (req.method === 'PUT') {
|
||||
// Обновление настроек
|
||||
const { weekNavigationEnabled } = req.body
|
||||
const { weekNavigationEnabled, debug } = req.body
|
||||
|
||||
if (typeof weekNavigationEnabled !== 'boolean') {
|
||||
res.status(400).json({ error: 'weekNavigationEnabled must be a boolean' })
|
||||
return
|
||||
}
|
||||
|
||||
// Валидация debug опций (только в dev режиме)
|
||||
if (debug !== undefined) {
|
||||
if (typeof debug !== 'object' || debug === null) {
|
||||
res.status(400).json({ error: 'debug must be an object' })
|
||||
return
|
||||
}
|
||||
|
||||
if (process.env.NODE_ENV !== 'development') {
|
||||
res.status(403).json({ error: 'Debug options are only available in development mode' })
|
||||
return
|
||||
}
|
||||
|
||||
const debugKeys = ['forceCache', 'forceEmpty', 'forceError', 'forceTimeout', 'showCacheInfo']
|
||||
for (const key of debugKeys) {
|
||||
if (key in debug && typeof debug[key] !== 'boolean' && debug[key] !== undefined) {
|
||||
res.status(400).json({ error: `debug.${key} must be a boolean` })
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const settings: AppSettings = {
|
||||
weekNavigationEnabled
|
||||
weekNavigationEnabled,
|
||||
...(debug !== undefined && { debug })
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user