A Anketa Documentation
Clear reference for builders and operators

Краткая документация, собранная без лишнего шума.

Эта страница описывает основные механики Anketa: как устроены типы вопросов, как живет интервью, как работают логика, экспорт, медиабиблиотека и ключевые настройки проекта.

Question types

Типы вопросов

Общие поля: id, type, title, description, required, timer, а также правила переходов и видимости.

Одиночный выбор

Список вариантов с выбором одного ответа. Поддерживаются закрепленные и взаимоисключающие опции, а также перемешивание.

Множественный выбор

Выбор нескольких вариантов с ограничением минимального и максимального количества ответов.

Текст

Текстовый ответ с минимальной длиной, проверкой по шаблону и подсказкой.

Матрица

Оценка по строкам и столбцам, с поддержкой одиночного или множественного выбора в строке.

Шкала, ranking, allocation

Числовые шкалы, выбор top-k и распределение процентов или количества по вариантам.

Booking

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

Heatmap и info block

Точки на изображении, медиа-блоки, таймеры и режимы просмотра до конца.

Runtime

Прохождение анкеты

В тестовом режиме ?test=1 анкета работает как предпросмотр и не пишет ответы в базу. В боевом режиме создается сессия и каждый ответ сохраняется на сервере.

  • POST /session/open открывает или возобновляет интервью по device_id.
  • POST /session/answer сохраняет ответ после каждого шага.
  • POST /sessions/<id>/end завершает интервью.
  • Для booking бронь слота подтверждается только на шаге Далее, без предварительного hold; после выбора слота показывается обязательный номер телефона.

Подробно: /docs/runtime.md

Responses

Просмотр ответов

В активном проекте можно открыть список заполненных анкет и перейти внутрь конкретной сессии, чтобы листать вопросы и ответы в порядке анкеты.

  • Вход доступен из таблицы активных проектов.
  • Таблица Заполненные анкеты показывает сессии кроме in_progress.
  • Для booking-проектов в admin UI есть отдельная вкладка загрузки слотов, етот режим показывает телефон и кнопку удаления записи.
  • Фильтр по статусу собирается из реально загруженных данных.
  • Если по выбранному статусу нет сессий, на экране остаётся пустая таблица.

Подробно: /docs/project_responses.md

Export

Экспорт данных

Результаты можно выгружать в CSV, XLSX и SPSS. Поддерживается фильтрация по статусам интервью и анонимизация IP и геоданных.

  • Одиночный выбор экспортируется как одно поле, множественный - как бинарные столбцы по вариантам.
  • Текст хранится строкой, шкала - числом, матрица - разложением по строкам и столбцам.
  • Ranking и allocation кодируются в формате, пригодном для дальнейшего анализа.

Подробно: /docs/export.md

Piping

Подстановки

В тексты, заголовки и описания можно подставлять ответы на предыдущие вопросы, чтобы создавать более контекстный flow.

  • @@QID - простой ответ.
  • @@QID|N - N-й выбранный вариант или N-я ячейка матрицы.
  • @@QID|#VAL - текст опции со значением VAL.
  • @@QID|#ROW#COL - конкретное значение из матрицы.

Media

Загрузка и библиотека медиа

Для info_block и heatmap поддерживаются изображения и видео. В анкете лучше использовать относительные пути вроде /image/... и /video/....

  • POST /__upload - загрузка для admin и superadmin.
  • GET /media - библиотека медиа для организации.
  • DELETE /media - удаление для административных ролей.

Подробно: /docs/media_library.md

Logic rules

routing_rules и visibility_rules

Раздел логики управляет переходами через routing_rules и видимостью через visibility_rules, используя JSON-выражения в if.

Поддерживаемые операторы

  • AND, OR, NOT
  • ==, !=, <, <=, >, >=
  • IN, NOT_IN
  • HAS_ANY, HAS_ALL, HAS_NONE

Шпаргалка и примеры: /docs/logic.md

Пример routing_rules

{
  "id": "rr1",
  "priority": 1,
  "if": { "==": ["$q1", "A"] },
  "goto": "q5"
}

Пример visibility_rules

{
  "id": "vr1",
  "priority": 1,
  "initial": "VISIBLE",
  "action": "HIDE",
  "if": { "==": ["$q1", "no"] }
}

Quickstart

Быстрый старт

Для локальной разработки backend обычно поднимается на 8000, frontend - на 3000. Во frontend API ходит через /api, чтобы dev и prod проксировались одинаково.

Для фонового локального запуска храните логи в output/logs/, а не в корне репозитория.

Подробно: /docs/quickstart.md

Settings

Настройки анкеты

  • allow_back - разрешить возврат к предыдущим вопросам.
  • allow_repeat - разрешить повторное прохождение.
  • allow_resuming - продолжать опрос с того же места на том же устройстве.
  • Для проектов с записью доступны отдельные вкладки сетки слотов и загрузки по слотам.
  • Квоты, таймеры и служебные режимы тоже управляются из настроек проекта.

FAQ

Вопросы и ответы

На каких устройствах можно проходить опрос?

На компьютере, планшете и смартфоне в современном браузере.

Что делать, если сессия прервалась?

Если включено возобновление, просто откройте ссылку снова - интервью продолжится с последнего места.

Можно ли вернуться к предыдущему вопросу?

Это зависит от настройки allow_back.

Доступна ли повторная попытка?

Это контролируется организатором через allow_repeat.

Как скачать результаты?

В административной части доступен экспорт CSV, XLSX и SPSS.