Files
hockey_new/VALIDATION_KHL_CAREER_RU.md
2026-09-27 00:25:40 +03:00

6.7 KiB
Raw Blame History

Проверка обновления 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. Удалённое развёртывание не выполнялось.
  • Таблица «Карьера» отражает сохранённые данные КХЛ. «Полный состав» основан на активных записях выбранного турнира в основной БД; актуальность зависит от последней синхронизации состава.
  • При изменении разметки сайта нераспознанные строки помечаются; неподтверждённые значения не подменяются нулями.