Commit graph

7 commits

Author SHA1 Message Date
Roman Vrubel
70ff9bfc4b Таблица в code-блоке: 3 колонки, 2 строки на пару, влезает на телефон
Формат:
#  │ Игрок                  │ О
───┼────────────────────────┼────
1  │ Мармылев Александр Д.  │ 4.0
   │ Нестеров Мирон А.      │ 4.0

Внутри code-блока MarkdownV2 не нужен (literal text).
2026-06-14 21:03:59 +00:00
Roman Vrubel
a17e21c983 Починены краши MarkdownV2: экранирование точек в очках, fallback на plain text
- Очки теперь через _md_escape (4.0 → 4\.0)
- Каждая пара в две строки (белые сверху, чёрные снизу)
- Защита: при ошибке MarkdownV2 парсинга — plain text
- Экранрованы точки в статусных сообщениях
2026-06-14 21:01:10 +00:00
Roman Vrubel
566daf5bb4 Убрал таблицу, заменил на компактный список (влезает на телефон)
Каждая пара — одна строка: номер, белые (очки) — чёрные (очки).
Убрал мёртвый код: _display_width, _make_table_* и др.
2026-06-14 20:51:24 +00:00
Roman Vrubel
35fb54a887 Перевёл Telegram-ботов на MarkdownV2 с таблицами в code-блоках
- client_bot.py: вывод пар в моноширинной таблице ()
  с учётом ширины кириллицы и обрезкой длинных имён
- admin_bot.py: /stat в MarkdownV2
- Оба бота: все сообщения в ParseMode.MARKDOWN_V2
2026-06-14 20:48:02 +00:00
Roman Vrubel
5c4b2536e7 Добавлены Telegram-боты (клиентский + админский)
- Клиентский бот: принимает ссылку на chess-results.com,
  проверяет наличие результатов/жеребьёвки, считает пары
  следующего тура, выводит в HTML-формате
- Админский бот: /stat — уникальные пользователи,
  всего запросов, запросов за сегодня
- Статистика через SQLite (volume bot-data)
- Оба бота в docker-compose с автоперезапуском
- .env.example с тестовыми токенами
- .env в .gitignore
2026-06-14 20:39:19 +00:00
Roman Vrubel
bbbfe61094 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).
2026-06-14 20:29:27 +00:00
Roman Vrubel
cf7fafd2ba chessCalc: парсер chess-results.com + FIDE Swiss + Docker
Принимает URL турнира, показывает пары следующего тура в Telegram-формате.
- parser.py: парсинг chess-results.com
- swiss.py: FIDE Dutch System
- display.py: форматирование для Telegram
- Docker: docker compose run --rm chess-calc 'URL'
2026-06-14 13:57:32 +00:00