---
name: webask-quiz-from-brief
description: Собирает готовый опрос в WebAsk по описанию задачи на обычном языке.
  Применяется, когда человек просит сделать опрос, анкету, форму заявки, тест или
  квиз и описывает словами, что нужно узнать и у кого, вместо перечисления
  конкретных вопросов.
---

# Сборка опроса по описанию

Человек описывает задачу словами — «нужна анкета для клиентов автосервиса, оценить
качество работ и собрать контакты для повторной записи». Задача: превратить это в
работающий опрос, а не в список вопросов текстом.

Отвечай человеку на том языке, на котором он пишет. Тексты самого опроса — на
языке его аудитории, а не на языке этой инструкции.

## 1. Уточнить три вещи, если их не сказали

Кого спрашиваем, что решаем по результатам, где будет ссылка. Больше трёх вопросов
не задавать: остальное быстрее показать черновиком и поправить по замечаниям.

Не спрашивать про типы вопросов, оформление и порядок — это работа ассистента, а
не человека.

## 2. Проверить, нет ли готового

`search_quiz_templates` по теме. Если подходящий шаблон есть — `create_quiz_from_template`
и дальше правки: это быстрее и качественнее сборки с нуля. Шаблон предложить, но
решение оставить за человеком.

## 3. Создать опрос и собрать вопросы

`create_quiz`, затем `update_quiz_widgets`.

Опрос создаётся в папке, поэтому сначала `get_folder_list` — взять папку, куда
класть. Если папок несколько и человек не сказал куда, спросить, а не выбирать
за него.

Подбор типов — главная часть работы, здесь чаще всего ошибаются:

| Что нужно узнать | Тип | Почему не иначе |
|---|---|---|
| Оценка качества | `rating` | не `input` с числом: по свободному тексту не построить сводку |
| Готовность рекомендовать | `nps` | своя шкала 0–10 и своя аналитика в отчётах |
| Выбор одного из списка | `dropdown` | не `input`: свободный текст не сгруппировать в отчёте |
| Выбор нескольких | `dropdown` с множественным выбором | |
| Имя | `fio` | разбор на части и правильная клавиатура на телефоне |
| Телефон, почта | `phone`, `email` | своя проверка формата, иначе половина контактов нерабочие |
| Дата и время | `datetime` | не текст: иначе не отфильтровать и не отсортировать |
| Несколько оценок по одному набору | `matrix` | вместо десяти отдельных вопросов |
| Файл или фото | `file` | |
| Числовой ответ | `number` | |
| Да или нет | `yesno` | |
| Расставить по порядку | `ranking` | |

Опрос начинать приветственным экраном `welcome`, заканчивать `finish` — без него
респондент упирается в пустую страницу.

Обязательными делать только контакты, ради которых опрос затевался. Каждый лишний
обязательный вопрос — потерянные ответы.

Полный список типов и их полей — в `references/widget-types.md`. Заглядывать туда,
когда нужного типа нет в таблице выше.

## 4. Тексты и оформление

`update_quiz_texts` — заголовки, подписи кнопок, текст благодарности. Писать живым
языком аудитории, не переводом с английского и не канцеляритом.

`get_theme_list` и `apply_quiz_theme` — взять готовую тему. Свою тему создавать
только если человек прямо просит фирменные цвета.

## 5. Логика показа

`update_quiz_logic`, если из описания следуют ветки: «недовольным — вопрос
почему», «не пользовался услугой — пропустить блок оценок».

Порядок работы строгий: сперва `get_quiz_structure`, затем правка, затем запись.
Условия ссылаются на вопросы по идентификатору, и собранная вслепую логика уводит
респондента в тупик.

## 6. Показать черновик и опубликовать

`publish_quiz` — **только после согласия человека**. До публикации опрос недоступен
по ссылке, и это правильное состояние для проверки.

После публикации отдать ссылку и коротко перечислить, что получилось: сколько
вопросов, какие обязательные, есть ли ветвление.

## Чего не делать

- **Не публиковать без спроса.** Опубликованный опрос уже можно проходить, а
  правки после первых ответов ломают сравнение результатов.
- **Не выдумывать вопросы «до кучи».** Длинные опросы не дочитывают: каждый вопрос
  должен отвечать на то, что человек назвал в задаче.
- **Не делать всё обязательным.**
- **Не предлагать смену тарифа**, если упёрлись в лимит опросов: назвать причину и
  остановиться.
- **Не удалять и не переписывать чужие опросы**, если попросили сделать новый.

## Если описание большое

Для длинных и сложных описаний есть `generate_ai_quiz` — сборка целиком в фоне.
Она возвращает не готовый опрос, а признак, что работа началась: дождаться
готовности, показать результат и дальше править обычными инструментами.
