Бұл мақала ұйымдастырушыны жарыс өткізудің бүкіл жолымен жетелейді: сайт күнтізбесінде старт құрудан және қатысушыларды онлайн тіркеуден бастап, гонканы орнында төрелік етуге және нәтижелерді жариялауға дейін. Бүкіл процесс — браузердегі бірнеше кликтен далада уақыт белгілеуге дейін — біртұтас тізбекке байланған, әрі жарыс күні интернет міндетті емес.

Жалпы көрініс

  1. Ұйымдастырушы стартын күнтізбеге қосады.
  2. Бірнеше кликпен тіркеуді қосады (заявкаларды растаумен немесе онсыз) және қатысушыларды онлайн қабылдайды.
  3. Гонкаға дейін тіркеуді жабады және қатысушылардың түпкі тізімін судья компьютеріне синхрондайды.
  4. Орнында хронометраж бағдарламаларымен гонканы төрелік етеді (стартта тіркеу, уақыт белгілеу, хаттама есептеу).
  5. Дайын хаттама сайтқа қайта жүктеледі және бәріне көрінеді — қажет болса нақты уақытта.

Төменде әр қадам егжей-тегжейлі.

1-қадам. Старт құру және сайтта тіркеу

Соревнованиені күнтізбеге қосу

Кіріп, «Календарь → Соревнование қосу» бөлімін ашыңыз. Атауын, пәнін, күні мен орнын толтырыңыз. Ұйымдастырушылар мен админдер стартты бірден жариялайды; қарапайым қатысушылардың заявкалары модерациядан өтеді.

Тіркеуді бірнеше кликпен қосу

Соревнование бетінде (ұйымдастырушыға) тіркеу баптаулары бар. Негізгі параметрлер:

  • Тіркеу режимі: «тек өзін» (қатысушы аккаунтына байланысты) немесе «еркін» (кез келген адамды тіркеуге болады — капитан немесе еріктілер тіркегенде ыңғайлы).
  • Заявкаларды растау: растаумен (әр заявканы ұйымдастырушы қолмен растайды) немесе онсыз (қатысушы бірден тіркелді деп саналады).
  • Тіркеу мерзімі және қатысушылар лимиті.
  • Санаттар/топтар (мысалы, жас пен жыныс бойынша) және туған күн режимі (жыл немесе толық күн).
  • Эстафета/командалар командадағы қатысушылар санының шектеуімен.

Стартақы жарналарын төлеу

Маңызды: қатысушының сайтта жарнаны автоматты онлайн төлеуі әзірге жоқ. Егер жарна жинау қосылса, төлем фактісін ұйымдастырушы қолмен растайды — қатысушылар тізіміндегі «Отметить оплаченным» (Mark paid) батырмасымен. Яғни қатысушы жарнаны өзіңізге ыңғайлы тәсілмен (сайттан тыс) аударады, ал сіз оны төледі деп белгілейсіз. Бұл дамыту жоспарында, бірақ қазір дәл осылай жұмыс істейді.

Заявкаларды қабылдау және қатысушыларды басқару

Қатысушылар тізімінде ұйымдастырушы барлық заявкаларды көреді және оларды растай, қабылдамай (себебін көрсетіп), төлемді белгілей және жоя алады. Тізімді экспорттауға (CSV) және көрермендерге көрсетуге болады. Көрсету баптаулары төлемегендерді/расталмағандарды старт алдына дейін жасыруға мүмкіндік береді.

Старт алдында тіркеуді жабу

Құрам анықталғанда (мерзім өтті немесе тіркеуді өшірдіңіз), қатысушылар тізімі бекітіліп, судья компьютеріне көшіруге дайын.

2-қадам. Қатысушыларды судья компьютеріне синхрондау

Әр соревнованиеде хронометраж жүйесінің токені бар — оны соревнование бетінде ұйымдастырушы/админ көреді. Осы токен арқылы судейлік бағдарламалар сайтпен логин-парольсіз байланысады.

Start Protocol Maker бағдарламасында Settings → HTTP ашып, сайт мекенжайы мен токенді енгізіңіз — қолданба GET /api/v1/participants/?competition_token=<токен> шақырып, старт тізімін тіркелген қатысушылармен толтырады. Бұдан әрі бәрі жергілікті жұмыс істейді, интернет қажет емес.

3-қадам. Гонканы төрелік ету: хронометраж жүйесі

Енді үш настольды бағдарламаның жинағы іске кіріседі (Python 3.14, кроссплатформалық интерфейс). Олар қарапайым мәтіндік файлдармен (старт хаттамасы, топтар тізімі, нәтижелер) алмасады, сондықтан оларды судьялар ноутбуктері арасында тасымалдау оңай.

Гонка қалай өтеді

  1. Тіркеу және нөмірлер. Start Protocol Maker-де келгендерді белгілеп, нөмір бересіз. Нөмірлерді автоматты беруге болады («Get number»); жеке старт үшін бірінші нөмір мен аралықты секундпен орнатасыз.
  2. Старт. Chronometer старт уақытын белгілейді: жеке, топпен немесе ортақ масс-стартпен.
  3. Мәре және айналымдар. Мәреде төреші әр қатысушыға уақыт белгілейді. Көп айналымды жарыстар («finish / nextLap» режимі), бірнеше мәре слоты, екінші мәре посты және дисквалификация (DSQ) қолдау табады.
  4. Хаттама. Finish Protocol Generator старт хаттамасы мен белгілеулерді біріктіріп, орындарды есептейді (айналымдар, бақылау нүктелері, DNF/DNS/DSQ) және әдемі HTML-хаттама жасайды — абсолютті және топтар бойынша.

Негізгі мүмкіндіктер

  • Орнында тіркеу және нөмір беру: қолмен енгізу және автонөмірлеу, топтар/санаттар, аралықпен жеке старт, уақыт ығысуы және кезең нөмірі.
  • Икемді уақыт белгілеу: жеке, топтық және масс-старт; бірнеше мәре слоты; көп айналымды жарыстар; екінші мәре посты; DSQ.
  • Ақылды есептеу: айналымдар мен бақылау нүктелері бойынша сұрыптау, DNF, DNS және дисквалификацияларды дұрыс өңдеу.
  • Брендтелген хаттамалар: HTML-шаблондар (бейтарап және клубқа арналған), абсолютті және топтық есеп.

Интернетсіз жұмыс (офлайн)

Старт орнында интернет жиі болмайды — бұл қалыпты жағдай. Үш бағдарлама да жергілікті жұмыс істейді: тіркеу, уақыт белгілеу және хаттама құру тек ноутбуктегі файлдарды пайдаланады. Сайтпен байланыс міндетті емес: қатысушылар тізімін алдын ала тарттыңыз, ал хаттамаларды кейінірек жүктеуге болады. Бүкіл жарысты толық офлайн өткізіп, нәтижелерді кешке жариялауға болады.

Сенімділік және сақтық көшірмелер

Төрелік — жауапкершілік, ал ноутбук қатып қалуы, заряды бітуі немесе зақымдануы мүмкін. Сондықтан кез келген әрекет дерлік дискіге сақталады:

  • Start Protocol Maker хаттаманың сақтық көшірмесін (data/spm_backup.txt) сақтайды және өзгерістерде снимок жасайды; келесі іске қосуда күй автоматты қалпына келеді.
  • Chronometer әрбір белгілеуден кейін дерлік temp/ қалтасына уақыт белгісі бар снимок жазады (temp/stc<уақыт>.txt). Қажет болса автосақтауды «Disable backup» белгісімен өшіруге болады.

Практикалық қорытынды: ноутбук толықтай дерлік істен шықса да, бірақ қатты диск аман болса, осы снимоктардан нәтижелердің көп бөлігін шығарып, хаттаманы қалпына келтіресіз.

Нәтижелерді сайтқа жариялау

Дайын хаттама сайтқа қайтады. Finish Protocol Generator-дың Upload батырмасы HTML-хаттаманы POST /api/v1/protocols/upload/ -қа жібереді (multipart, сол соревнование токенімен және is_live жалаушасымен). Сайт хаттаманы сақтап, соревнование бетінде көрсетеді. «Live» режимінде оны гонка барысында жаңартуға болады — көрермендер нәтижелерді нақты уақытта көреді. Балама ретінде FTP арқылы жүктеу де бар.

Судейлік бағдарламаларды орнату (қысқаша)

Үш бағдарлама да бірдей орнатылады. Git, Python 3.14 және Poetry қажет.

Алдымен — Python 3.14 және Poetry:

# macOS
brew install git python@3.14 pipx && pipx ensurepath && pipx install poetry

# Linux (Ubuntu/Debian)
sudo apt install git && sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update && sudo apt install python3.14 python3.14-venv
pip3 install pipx && pipx ensurepath && pipx install poetry

# Windows (PowerShell): Git пен Python 3.14 орнатыңыз ("Add Python to PATH" белгілеңіз), содан соң:
pip install pipx; pipx ensurepath; pipx install poetry

Әр бағдарламаны орнату және іске қосу (Start Protocol Maker мысалында — қалғандары үшін URL мен қалтаны ауыстырыңыз):

git clone https://github.com/dchernykh1984/StartProtocolMakerPython.git
cd StartProtocolMakerPython
poetry config virtualenvs.in-project true
poetry install --no-root
poetry run python -m app.main

Дәл солай: https://github.com/dchernykh1984/ChronometerPython.git (Chronometer) және https://github.com/dchernykh1984/FinishProtocolGeneratorPython.git (Finish Protocol Generator).

macOS үшін терминалсыз қос шертумен іске қосуға болатын дайын қолданба жинақтары (.app) бар.

Кеңейту мүмкіндігі

Жүйе ашық кодты (open source) әрі модульді, сондықтан оны дамыту оңай:

  • Өз хаттама шаблондарыңыз — клуб/федерацияға брендтеу бөлек HTML-шаблонмен қосылады, есептеу логикасын өзгертпейді.
  • Жаңа жүктеу форматтары — сайтқа HTTP-ден бөлек FTP бар; ұқсас жолмен басқа платформаларға коннекторлар қосуға болады.
  • Қатысушылардың жаңа дереккөздері мен старт хаттамасының форматтары — файл форматы қарапайым мәтін.
  • Есептеу логикасы (айналымдар, бақылау нүктелері, ұпайлар) бөлек модульде және стандартты емес форматтарға кеңейтіледі.

Репозиторийлер


*Сипаттама сайт пен судейлік жобалардың бастапқы коды негізінде, 2026 жылдың маусымы бойынша жасалды. Нақты орнату қадамдары мен өзекті мүмкіндіктерді тиісті репозиторийлердің README-сінен қараңыз.*