Репозиторий содержит baseline-реализацию сервиса под задачу ранжирования кандидатов на смены:
- API-сервис на
zero(TCP RPC); - baseline train-пайплайн;
- eval-пайплайн с дневной симуляцией и расчетом целевой метрики;
- инфраструктура проверки качества (tests, coverage gate, pre-commit, load-test).
Участники проходят следующий сценарий:
- Получают доступ к репозиторию и клонируют кодовую базу.
- Изучают контракты API, инструкции запуска и автотесты.
- Получают train/validation данные в CSV-формате.
- Обучают собственную модель и готовят решение.
- Интегрируют модель/алгоритмы в сервис, не нарушая контракты.
- Запускают тесты, eval и нагрузочные проверки.
- Оформляют Merge Request в своей ветке.
- После дедлайна организаторы фиксируют изменения и оценивают качество.
README.md— общий обзор, quickstart и команды.HOW-TO.md— практический маршрут участника (куда и как вносить изменения).CHECKLIST.md— checklist перед коммитом и MR.DATA.md— форматы train/validation таблиц и примеры.REGLAMENT.md— регламент валидации, метрика и запуск eval.TRAIN.md— детали train-пайплайна и train-артефактов.
make install
make migrate
make runВ отдельном терминале:
make testhackaton/service— RPC-сервис, DTO, работа с БД,prepare/ready/predict.hackaton/train— baseline обучение и сохранение train-артефактов.hackaton/eval— дневной цикл оценки, расчет метрики, генерацияeval_report.md.tests/unit,tests/e2e— unit/e2e тесты.scripts/load_test.py— нагрузочное тестированиеpredict.REGLAMENT.md— официальный регламент оценки.DATA.md— контракты данных с примерами.TRAIN.md— детали train-модуля.HOW-TO.md— практический гайд для участников (куда и как вносить изменения).CHECKLIST.md— чеклист перед коммитом решения.
poetry run python -m hackaton.train.cli train \
--user-path data/train/user.csv \
--shift-path data/train/shift.csv \
--event-path data/train/event.csv \
--output-dir artifacts/train \
--skip-shappoetry run python -m hackaton.eval.cli run \
--host 127.0.0.1 \
--port 8000 \
--user-path data/train/user.csv \
--shift-path data/train/shift.csv \
--event-path data/train/event.csv \
--val-apply-path data/validation/apply.csv \
--val-shift-path data/validation/shift.csv \
--val-event-path data/validation/event.csv \
--output-dir artifacts/eval_run \
--predict-max-concurrency 4 \
--predict-max-rpm 200Артефакт оценки: artifacts/eval_run/eval_report.md.
- Пул кандидатов для метрики фиксирован:
pool_size = 10. - Ограничение FPR:
max_fpr = min(1.0, capacity / 10). - Агрегация: по группам емкости внутри дня, затем среднее по дням.
Полные правила: REGLAMENT.md.
Форматы данных и примеры: DATA.md.
make test— unit/e2e + coverage gate (>=80%).make precommit— ruff + hooks + pytest.make load-test— нагрузочный тестpredictс markdown-отчетом.make compose-up— запуск в Docker.
В репозитории настроены workflow:
.github/workflows/ci.yml:- lint + pytest + coverage;
- запуск сервиса;
- RPC smoke-check (
user/shift/event -> prepare/ready -> predict), где проверяется, что для смены подбираются исполнители.
.github/workflows/load-test.yml:- ручной и nightly запуск нагрузочного сценария;
- проверка budget (
failed_calls == 0,p95 <= 1000ms); - публикация markdown-отчета нагрузочного теста как artifact.
Merge должен проходить только при зеленых CI-проверках.