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
|
|
@ -87,16 +87,25 @@ def main():
|
|||
for pairing in next_round['pairings']:
|
||||
if len(pairing) == 3:
|
||||
p1, p2, color = pairing
|
||||
pairs.append({
|
||||
'white': {'name': p1.name, 'rank': p1.sno, 'rating': p1.rating, 'points': p1.points},
|
||||
'black': {'name': p2.name, 'rank': p2.sno, 'rating': p2.rating, 'points': p2.points},
|
||||
'color': color,
|
||||
})
|
||||
elif len(pairing) == 5:
|
||||
pairs.append({
|
||||
'white': {'name': pairing[1] if pairing[2] == 'w' else pairing[4], 'name2': ...},
|
||||
})
|
||||
if color == 'bye':
|
||||
pairs.append({
|
||||
'board': 0,
|
||||
'bye': {'name': p1.name, 'rank': p1.sno, 'rating': p1.rating, 'points': p1.points},
|
||||
})
|
||||
elif color == 'w':
|
||||
pairs.append({
|
||||
'board': len(pairs) + 1,
|
||||
'white': {'name': p1.name, 'rank': p1.sno, 'rating': p1.rating, 'points': p1.points},
|
||||
'black': {'name': p2.name, 'rank': p2.sno, 'rating': p2.rating, 'points': p2.points},
|
||||
})
|
||||
else:
|
||||
pairs.append({
|
||||
'board': len(pairs) + 1,
|
||||
'white': {'name': p2.name, 'rank': p2.sno, 'rating': p2.rating, 'points': p2.points},
|
||||
'black': {'name': p1.name, 'rank': p1.sno, 'rating': p1.rating, 'points': p1.points},
|
||||
})
|
||||
json.dump({
|
||||
'tournament': tournament['name'],
|
||||
'round': next_round['round'],
|
||||
'pairings': pairs,
|
||||
'source': next_round.get('source', 'algorithm'),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue