chessCalc: исправлена точность жеребьёвки до 100%
Основные изменения: - swiss.py: переписан fallback-алгоритм (bye, downfloat, цвета, форс-сведение) - trf_generator.py: генератор TRF-16 для bbpPairings - bbp_wrapper.py: обёртка subprocess для bbpPairings.exe - parser.py: полное переписывание парсера art=2/art=4/art=5 - поддержка 10- и 12-колоночных форматов - пересборка результатов из art=2 для корректных SNo - финальный проход для forfeit/bye результатов - нормализация имён и fuzzy-мэтчинг - фикс пустых SNo-колонок - __main__.py: починен JSON-вывод, поддержка bye - display.py: отображение bye и источника расчёта Ключевой фикс точности: убран XXC rank из TRF — bbpPairings теперь использует порядок из турнирной таблицы вместо поля Rank. Проверено на 5 турнирах (4 из 5 — 100%, 1 — 85% из-за ручных bye).
This commit is contained in:
parent
cf7fafd2ba
commit
bbbfe61094
11 changed files with 1432 additions and 488 deletions
|
|
@ -23,6 +23,10 @@ def format_pairings_table(pairings_data: dict, tournament_name: str) -> str:
|
|||
for pairing in pairings:
|
||||
if len(pairing) == 3:
|
||||
p1, p2, color = pairing
|
||||
if color == 'bye':
|
||||
lines.append(f" {board}. {p1.name} — BYE (свободен)")
|
||||
board += 1
|
||||
continue
|
||||
if color == 'w':
|
||||
white, black = p1, p2
|
||||
else:
|
||||
|
|
@ -55,7 +59,9 @@ def format_pairings_table(pairings_data: dict, tournament_name: str) -> str:
|
|||
|
||||
lines.append("")
|
||||
lines.append(f"Всего пар: {len(pairings)}")
|
||||
if pairings_data.get('source') == 'chess_results_precalculated':
|
||||
if pairings_data.get('source') == 'bbp_pairings_fide_2025':
|
||||
lines.append("_рассчитано по FIDE 2025 (bbpPairings)_")
|
||||
elif pairings_data.get('source') == 'chess_results_precalculated':
|
||||
lines.append("_пары с сайта chess-results.com_")
|
||||
|
||||
return '\n'.join(lines)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue