Skip to content

Сервис динамического формирования онбординга, сбора статистики и вывода её через RestAPI.

License

Notifications You must be signed in to change notification settings

VladislavYar/dynamic_onboarding

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dynamic_onboarding

Описание

Сервис динамического формирования онбординга, сбора статистики и вывода её через RestAPI.


Примечание

Мной было решено уйти от концепции дерева, т.к. такая реализация не позволяет достаточно гибко формировать вопросы для клиента и вызывает неудобство работы с множественными полями.
В итоге было решено реализовать онбординг в виде направленного графа.
"Цельным" онбордингом является только начальный, при этом его потомки больше похожи на конструктор, из которых собирается следующая страница онбординга, так же в основе такого решения лежит концепция в виде от общего к частному.

Есть определённые условия, которых необходимо придерживаться для корректного вывода(в проекте реализована валидация сохранения/редактирования через админ-панель и ORM):

  1. Запрещены циклические вызовы опросников, чтобы клиент не попал в бесконечные ответы и не "ломал" статистику;
  2. Опросник ссылается на следующий опросник только из одного поля, иначе сама логика онбординга построена не правильно;
  3. Скрытие опросников, клиент на которые уже отвечал - поддержка чистоты статистики и защита от случайных связей;
  4. Начало онбординга всегда состоит из одного опросника, при этом любой потомок может стать "началом", отдельно от родителя.


Уточнения по работе проекта

    Работа с пользователем упрощена до минимума, одна форма для регистрации и авторизации.

    В объекте модели "Тип поля" регулярное выражение "главнее" типа, т.е. его наличие поменяет поле на "text".

    В форме создания "Поле опроса" пункт "Значения поля" закастомлен через JS, от выбора в "Тип поля" он может быть множественным или единичным, следите за состоянием, возможно, могло что-то поломаться.

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

    На детальной странице элемента "Поля опроса", если у него несколько значений для выбора, выводится диаграмма с информацией из "Данные по опросу".

    Имеется "ручка" с выводом ответов клиентов на опросники, подключен filter и пагинация, с реализацией можно познакомиться на странице Swagger-a(кнопка-ссылка на главной странице).

    Тестовые данные(типы полей, опросы, поля опросов) формируются через management command, там вы можете убрать, например, обязательные поля или "мешающие" типы.


Как запустить

Через Docker

  • 1. Создать и заполнить файл .env в папке infra по шаблону .env.example.
  • 2. Если имеется утилита Make, в корне проекта выполнить команду make project-init,

    иначе

    выполнить команду docker compose -f ./infra/docker-compose.yml --env-file ./infra/.env up -d.

    Docker соберёт контейнеры с postgreSQL, приложением, выполнит миграцию,

    заполнит БД тестовыми данными, создаст superuser-a.

    После сервер будет доступен по адрессу: http://127.0.0.1:8000/.

  • Примечание

    В контейнер с приложением проброшен volume с кодом, изменение кода в проекте обновляет его в контейнере и перезапускает сервер.

  • Последующие запуски проекта осуществляются через команду make project-start

    или

    docker compose -f ./infra/docker-compose-start.yml --env-file ./infra/.env up -d

Через консоль

  • 1. Создать и заполнить файл .env в папке infra по шаблону .env.example.
  • 2. Создать БД в postgreSQL.

  • 3. Установить poetry pip install poetry.

  • 4. Создать и активировать виртуальную оболочку poetry shell.

  • 5. Установить зависимости poetry install.

  • 6. Выполнить миграцию БД python src/manage.py migrate.

  • 7. Создать superuser-a python src/manage.py createsuperuser --noinput.

  • 8. Заполнить БД тестовыми данными python src/manage.py test_data.

  • 9. Запустить сервер python src/manage.py runserver.

  • 10. Сервер будет доступен по адрессу: http://127.0.0.1:8000/.


Стек


About

Сервис динамического формирования онбординга, сбора статистики и вывода её через RestAPI.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published