Основные изменения: - 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).
28 lines
724 B
Docker
28 lines
724 B
Docker
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Python dependencies
|
|
COPY requirements.txt .
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
# Copy bbpPairings binary (FIDE Swiss engine)
|
|
COPY bbpPairings.exe /usr/local/bin/bbpPairings.exe
|
|
RUN chmod +x /usr/local/bin/bbpPairings.exe
|
|
|
|
# Set path for bbpPairings wrapper
|
|
ENV BBP_PATH=/usr/local/bin/bbpPairings.exe
|
|
|
|
# Copy application code
|
|
COPY swiss_calc/ /app/swiss_calc/
|
|
|
|
# Create entry point
|
|
RUN python3 -c "from swiss_calc import parser; print('✅ Module loaded')"
|
|
|
|
ENTRYPOINT ["python3", "-m", "swiss_calc"]
|
|
CMD ["--help"]
|