Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vladislavyar/dynamic_onboarding

Сервис динамического формирования онбординга, сбора статистики и вывода её через RestAPI.
https://github.com/vladislavyar/dynamic_onboarding

bootstrap5 css django django-rest-framework docker html javascript jquery makefile poetry python swagger

Last synced: 6 days ago
JSON representation

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

Awesome Lists containing this project

README

        


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/.




Стек