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

Шаг 2 — задания

Формулировки заданий по утверждённой предметной области. Пока область не утверждена, шаг сообщит об этом вместо формы — задания генерируются по её DDL.

Покрытие тем заданиями и карточки заданий с типом, сложностью и ограничениями.
шаг 2Покрытие тем заданиями и карточки заданий с типом, сложностью и ограничениями.

Что содержит задание​

ПолеЗачем
titleкороткое имя в списках
business_statementчто видит студент первым: бизнес-формулировка без имён таблиц и колонок, но со всем нужным для решения
statementточная техническая формулировка; по ней строятся проверки, студенту доступна в раскрытом «Полном условии»
kindselect, dml или ddl — определяет, что вообще сравнивать
objectivesтемы курса, которые задание закрывает
difficulty1–3, показывается студенту засечками
require_constructsконструкции, которые обязаны быть в решении
forbid_constructsконструкции, которых быть не должно

Две формулировки — не дублирование. Студент читает бизнес-версию и сам решает, какие таблицы для этого нужны; техническая открывается в «Полном условии» и остаётся источником правды для проверок. Править бизнес-формулировку можно свободно: она исключена из source_hash, поэтому материализации от этого не устаревают.

Обе формулировки самодостаточны: по любой из них задание решается без второй. Бизнес-версия обязана называть, что вывести — все выводимые величины в том же порядке, что и в result.columns, — границы отбора и нужную сортировку; имён колонок в ней по-прежнему нет. Обе пишутся в Markdown: абзацы, списки, код, выделение.

Состав колонок, признак порядка, кардинальность и точность чисел студент видит отдельным блоком «что должно получиться» — он собран из машинных полей задания, а не из текста нейросети, поэтому не может разойтись с проверками.

Гейт формулировок​

Перед утверждением студия проверяет не только покрытие тем, но и структуру постановки:

  • бизнес-формулировка не пуста и не повторяет техническую дословно;
  • у select-задания задан состав колонок, имена не повторяются и не пусты;
  • если result.ordered включён, в формулировке сказано, по чему сортировать;
  • у dml-задания перечислены state_tables, и все они есть в схеме.

Смысл текста машиной не проверяется — за него отвечает промпт и блок «что должно получиться» рядом с условием.

Требуемые и запрещённые конструкции​

Так задание удерживается в теме занятия. «Без агрегатов» на первой лекции, «через JOIN, а не подзапрос» на четвёртой. Проверка sql_constraints разбирает решение как SQL: обойти требование DISTINCT через GROUP BY не получится.

Покрытие тем​

До утверждения студия сверяет, сколько заданий закрывает каждую тему, с квотами из шага 1:

ТемаЗаданийНужно
Простые SELECT и WHERE32–3покрыто
Вариации SELECT и WHERE56–8не хватает

Пока в таблице есть непокрытые темы, кнопки утверждения нет. Варианты действий: перегенерировать задания, ослабить квоты на шаге 1 или дописать задания вручную через ручной режим.

Утверждение​

«Утвердить задания» фиксирует хэш набора заданий и хэш области, к которой он собран. Если область потом изменится, задания получат пометку «устарели» с причиной — работать дальше с ними студия не даст.