Быстрый старт
Пятнадцать минут: студия автора на готовом паке-примере и практика студента в браузере. LLM-ключ не нужен — оба сценария работают на заготовленных ответах модели.
Что нужно
| Зачем | |
|---|---|
Docker с docker compose | база студента; студия поднимает эфемерный Postgres на каждый прогон |
| Python 3.12+ и uv | студия и CLI автора |
| Node 20+ | только если собираете интерфейсы из исходников |
uv sync --all-packages
Testcontainers по умолчанию поднимает сторожевой контейнер ryuk, который на Docker Desktop часто не стартует. Все команды студии запускайте с TESTCONTAINERS_RYUK_DISABLED=true.
Студия автора
TESTCONTAINERS_RYUK_DISABLED=true uv run gen studio --pack packs/spike --mock --port 8765
Открыть localhost:8765. Слева полоса трёх шагов: предметная область, задания, решения и проверки. Пак-пример уже пройден до третьего шага, поэтому сразу видно то, ради чего всё делается — отчёт приёмки со всеми вариантами данных и проверками.

Флаг --mock берёт ответы LLM из <пак>/mock_llm/. Для живой генерации нужен ключ:
cp .env.example .env # заполнить OPENROUTER_API_KEY
Практика студента
docker compose up
Открыть localhost:8766. Первый запуск собирает образ и накатывает схему пака — дальше старт занимает секунды.

Дальше по шагам:
Вкладка «Примеры данных» → «Загрузить в мою базу». В живой базе появятся строки, на которых видно, что задание вообще делает.
Редактор с подсветкой SQL и автодополнением по схеме пака. ⌘↵ — выполнить в живой базе.
«Проверить решение» прогоняет запрос по всем вариантам данных в отдельной чистой базе. Решение сохраняется в solutions/<задание>.sql.
Свой пак
Практика студента берётся из каталога, смонтированного в контейнер как /pack. В примере это packs/spike:
volumes:
- ../../packs/spike:/pack:ro
- ./solutions:/solutions
Замените путь на свой пак и перезапустите раннер:
docker compose up -d --force-recreate runner