5.5 KiB
Исправления аудита 7 сентября 2026
Исправлено в рабочей версии
-
Очередь внешних наблюдений фильтруется в SQL до limit/offset; UI показывает по 50 записей с навигацией, опубликованные записи не вытесняют ожидающие проверки.
-
Таймаут SSR-запроса к API: 8 секунд. Все пять страниц каталогов возвращают 503, Retry-After и no-store при сбое API; отсутствие сущности по-прежнему даёт 404.
-
Убрать выдуманный процент полноты, зависящий от числа уловов.
-
Различать время улова и поступления; показывать точное время UTC.
-
Объединять только повтор одного ID источника, а не похожие события.
-
Ограничить кэш 128 ключами и защитить запись от устаревшего поколения.
-
Запретить браузерное кэширование активности; серверный TTL сохраняется.
-
Перенести фильтрацию активности в SQL.
-
Строить шкалу по полной выборке одобренных записей, с явными 12-часовыми интервалами по reported_at.
-
Возвращать 404 для отсутствующей точки и 503 для недоступности API.
-
Захватывать блокировку scheduler до чтения cooldown и фиксировать резервирование до HTTP.
-
Выполнять rollback перед сохранением ошибки scheduler.
Остаётся
- Production CLI и scheduler используют общий PostgreSQL-журнал и блокировку по домену; попытка резервируется до HTTP, включая ошибки. Endpoint одного сайта ротируются по давности. Автономный research CLI также ограничивает домен и ошибки, но явно запрещён параллельно с production scheduler (8 сентября 2026).
- Межпроцессная инвалидация: сейчас фоновая публикация видна после TTL.
- Изменённая публикация снимается с активности и отправляется на ручное сопоставление. Подтверждение обновляет прежний CatchReport без дубликата; старый снимок сохраняется до подтверждения. Изменения видны в API после TTL кэша.
- Обнаружение удалённых оригиналов и долговременная история всех редакций источника.
- Sitemap постоянных страниц с пагинацией, без ограничения активности 72 часами. Последняя успешная версия хранится в памяти процесса; после перезапуска при недоступном API возвращается 503.
- Подключить API подсказок алиасов к административному UI: кнопка показывает подтверждённые русские названия; выбор и сохранение остаются отдельными действиями.
- Web Dockerfile использует npm ci; инструменты проверки/тестирования перенесены в devDependencies и удаляются перед копированием runtime. Обновлён lock-файл без сети. Сборка Docker-образа остаётся проверкой перед деплоем.
- Удалить pytest из Python production-зависимостей; локальная среда и CI используют отдельный requirements-dev.txt (8 сентября 2026).
- Hero переведён в WebP (1,6 МБ → 71 КБ), PNG-иконка переупакована (368 КБ → 69 КБ), изображения получили явные размеры и приоритет LCP. Pillow нужен в runtime: API декодирует и повторно кодирует пользовательские изображения для проверки формата, удаления EXIF и безопасного хранения.
- Визуальная проверка 320/390/768/1280 px: главная, рекорды, форма, статус и 404 не имеют горизонтального переполнения. На 320 px исправлен длинный заголовок рекордов; мобильные навигация и фильтры получили чистую прокрутку со scroll-snap без системной полосы (8 сентября 2026).
- Согласовать остальные формулировки README/roadmap с фактическим поведением.
Существовавшие перед этим пакетом незакоммиченные изменения кэша и карточек сохранены.