6.7 KiB
Проверка обновления 2026.09.27.1
Результаты
- Полный Python-прогон после основных изменений: 432 passed, 40 failed. Набор 40 не прошедших тестов совпадает с ранее зафиксированным набором v3; новых падений в этом прогоне нет. Их разбор сохранён в
PREVIOUS_40_FAILURES_RU.md. - После дополнительных проверок отказов и отсутствующих записей: целевая группа 24 passed, включая 18 новых функциональных тестов КХЛ/карьеры. Это отдельный прогон, не повтор всего набора.
- Старый тест имени обновлён под явное требование «Имя Фамилия». Статический тест BUILD45 приведён к обработчику вкладки v4, который захватывает
idпри создании переиспользуемой кнопки. Само переключение также проверялось через настоящий JS приложения. - Проверка синтаксиса Python, основного JS и встроенного JS интерфейса КХЛ — успешно.
Проверки данных и доступа
- Извлечение имени при наличии посторонних заголовков навигации.
- Расшифровка исходных многоуровневых таблиц тренеров и судей, фильтрация ложных сезонов/клубов.
- Восстановление имён из списков без чтения персональных страниц и без потери статистики.
- Ошибки сети/HTTP, остановка запросов после блокировки, сохранение прежнего файла при полном отказе, сохранение остальных людей при частичном обновлении.
- Сохранение кэша матчей с явной отметкой устаревания; повторное чтение повреждённого файла не стирает уже загруженную базу.
- Завершение фонового задания даже при ошибке перечитывания данных.
- Импорт идемпотентен; ошибка в середине импорта откатывает изменения.
- Заявка матча, полный состав, исключение неактивных/другого турнира, отображение игрока без записи в справочнике.
- Однофамильцы и конфликт даты рождения не приводят к подстановке чужой карьеры.
- Проценты считаются по суммарным величинам; недостающий показатель остаётся неизвестным.
- Зритель получает карьеру и CSV без изменения владельца/ревизии матча. Без входа — HTTP 401.
- CSV содержит весь выбранный состав, метаданные источника и защиту текстовых значений от формул.
Проверка на всей исходной базе
В тестовую SQLite через тот же сервис SQLAlchemy импортировано:
| Раздел | Записей |
|---|---|
| Игроки | 4 264 |
| Тренеры | 239 |
| Судьи | 45 |
| Всего | 4 548 |
Первый импорт в этой среде занял около 4,55 с; повторный при неизменившихся файлах — около 0,001 с, без перезаписи записей. Это измерение локального тестового импорта, не обещание скорости вашей PostgreSQL или сети. Файл всей тестовой БД — около 11,3 МБ.
В исходной базе у всех 4 264 игроков вместо имени сохранён текст навигации. Нормальное имя невозможно восстановить из таких строк без источника; для этого добавлена отдельная загрузка имён со списков КХЛ.
Интерфейс
Через jsdom, фактический код приложения, FastAPI и тестовую БД проверены:
- новая подвкладка «Карьера», загрузка заявки и полного состава;
- поиск, карточка игрока, выгрузка CSV, отсутствие команд изменения матча при работе с карьерой;
- списки имён КХЛ, понятные карточки тренеров/судей;
- обновление уже открытой карточки после перечитывания файла;
- понятная ошибка вместо исключения JSON-парсера при HTML-ответе сервера.
В обоих сценариях ошибок JavaScript не обнаружено. jsdom не измеряет реальное расположение элементов: визуальная проверка в Chromium/Windows не проводилась.
Ограничения
- Живую выгрузку KHL.ru подтвердить не удалось: прямой запрос из среды проверки завершился таймаутом, доступ к страницам через инструмент поиска — HTTP 403. Это внешнее ограничение не скрывается и не обходится.
- Нет подключения к вашей PostgreSQL, Windows и реальному vMix. Удалённое развёртывание не выполнялось.
- Таблица «Карьера» отражает сохранённые данные КХЛ. «Полный состав» основан на активных записях выбранного турнира в основной БД; актуальность зависит от последней синхронизации состава.
- При изменении разметки сайта нераспознанные строки помечаются; неподтверждённые значения не подменяются нулями.