Перейти к основному содержимому

Командная строка

Интерфейс — обёртка над теми же стадиями конвейера. Из терминала удобнее прогонять практику целиком и запускать проверки в CI.

gen — сторона автора

студия
uv run gen studio --pack packs/my-course --mock --port 8765
материализация всей практики без интерфейса
TESTCONTAINERS_RYUK_DISABLED=true uv run gen materialize --pack packs/my-course --mock

gen materialize проходит шаг 3 по всем заданиям пака: консенсус решений, спека данных, варианты, проверки, гейт инвариантов, отчёт. По каждому заданию печатается строка результата, в конце — accepted: 7/8. Код возврата ненулевой, если принято не всё, поэтому команду можно ставить в пайплайн подготовки практики.

ФлагЗначение
--packкаталог пака (обязателен)
--mockответы LLM из <пак>/mock_llm/ вместо API
--portтолько у studio, по умолчанию 8765

runner — сторона студента и CI

сервер практики
uv run runner serve --pack packs/my-course --solutions solutions --port 8766
проверка сданных решений
uv run runner ci --pack packs/my-course --solutions solutions
ФлагЗначение
--packкаталог пака
--solutionsпапка с решениями, она же источник правды о сдаче
--pg-dsnстрока подключения; пусто — поднимается локальный контейнер
--hostадрес привязки, в Docker 0.0.0.0
--portпорт, по умолчанию 8766

runner ci читает solutions/<задание>.sql, гоняет каждое решение по всем вариантам данных и завершается ненулевым кодом, если хоть одно не сошлось. Это та же самая проверка, что и в браузере студента, — общий код, а не похожая логика.

Окружение

ПеременнаяЗачем
OPENROUTER_API_KEYживые вызовы LLM; берётся из .env
TESTCONTAINERS_RYUK_DISABLEDtrue для Docker Desktop на macOS
PG_DSNбаза практики для раннера
CHECK_DSNотдельная чистая база под проверки