---
name: delor-sport-amateur-leagues-h2h
description: "Делор спорт — любительские лиги (Setka Cup/TT Cup/Лига Про) вернулись в фон через собственную H2H/форма-статистику вместо веб-грандинга (2026-07-13)"
metadata:
  node_type: memory
  type: project
  originSessionId: 6620ea3d-79ed-46e4-b5ea-65828f0cc0b8
---

Делор, commit a3e74a0 (2026-07-13): владелец потребовал вернуть покрытие виртуальных/фьючерсных/любительских лиг, но явно сказал «угадывать нельзя, нужна аналитика». Согласован порядок: любительские → фьючерсы → виртуал (виртуал — только после проверки на реальных данных, есть ли там вообще эксплуатируемое отклонение от случайного распределения; честный RNG → оставить исключённым, не «включить и гадать»). Из трёх сделан только первый шаг.

**Почему любительские лиги были исключены:** нет медийного присутствия → веб-грандинг (`search_match_context`) таймаутит → LLM либо не отвечает, либо гадает по кэфам.

**Находка на проде, изменившая план:** это круговые пулы игроков (`Setka Cup. Пекин` — 6 игроков играют друг с другом каждые ~30 мин весь день) → H2H/форма реальны и воспроизводимы. Но `sport_matches` не хранит историю (`cleanup_sport_matches` каскадом удаляет отыгранный матч через ~2ч) — негде было накопить.

**Сделано:** новая таблица `sport_h2h_results` (match_id UNIQUE, league, team_home/away, score, winner) — пишется в `run_cleanup_tick` ДО удаления (тот же паттерн, что `settle_pending`). Новый модуль `amateur_stats.py`: `get_amateur_stats()` — H2H+форма за 10 матчей, доли через переиспользованный `wilson_bounds` из `pick_insights.py`; **честный гейт** — `None` при H2H<3 И форма любого игрока<5, вместо гадания на тонкой выборке. `analyze_match_consensus` для амateur-лиги больше НЕ вызывает веб-поиск вовсе — вместо него статистика или честный empty-result (тот же путь, что при пустых веб-сниппетах). `analyze_top_n` больше не исключает эти лиги на уровне SELECT.

**Проверено:** 33 новых/изменённых теста (1075 всего); прод рестарт — `sport_h2h_results` сразу наполнилась 5 реальными матчами, лог подтвердил запись, DB подтвердила 12 амateur-матчей получили `analyzed_ts` (раньше невозможно), 2 тика без ошибок.

**Важно — не путать со следующей проверкой:** таблица стартует пустой, содержательных пиков по этим лигам не будет несколько дней/недель, пока гейт не накопит данные. Это не баг, это гейт работает честно — как и winrate-check для [[delor-sport-dashscope-lessons]], нужна отдельная сверка через время.

Связано: [[delor-sport-dashscope-lessons]] (единая модель-анализатор осталась той же, изменился только источник грандинга для этих лиг), [[sport-reliability-quality-pref]]. Детали, отвергнутые варианты — Obsidian Projects/Делор Changelog+Decisions `D-amateur-league-h2h`.
