Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/vladislavyar/dynamic_onboarding
- Owner: VladislavYar
- License: mit
- Created: 2024-05-01T12:21:22.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-05-08T09:47:59.000Z (6 months ago)
- Last Synced: 2024-05-08T10:45:25.235Z (6 months ago)
- Topics: bootstrap5, css, django, django-rest-framework, docker, html, javascript, jquery, makefile, poetry, python, swagger
- Language: Python
- Homepage:
- Size: 306 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
dynamic_onboarding
Описание
Сервис динамического формирования онбординга, сбора статистики и вывода её через RestAPI.
Примечание
Мной было решено уйти от концепции дерева, т.к. такая реализация не позволяет
достаточно гибко формировать вопросы для клиента и вызывает неудобство работы с множественными полями.
В итоге было решено реализовать онбординг в виде направленного графа.
"Цельным" онбордингом является только начальный, при этом его потомки больше похожи на конструктор,
из которых собирается следующая страница онбординга, так же в основе такого решения лежит концепция в виде от общего к частному.
Есть определённые условия, которых необходимо придерживаться для корректного вывода(в проекте реализована валидация сохранения/редактирования через админ-панель и ORM):
- Запрещены циклические вызовы опросников, чтобы клиент не попал в бесконечные ответы и не "ломал" статистику;
- Опросник ссылается на следующий опросник только из одного поля, иначе сама логика онбординга построена не правильно;
- Скрытие опросников, клиент на которые уже отвечал - поддержка чистоты статистики и защита от случайных связей;
- Начало онбординга всегда состоит из одного опросника, при этом любой потомок может стать "началом", отдельно от родителя.
Уточнения по работе проекта
Работа с пользователем упрощена до минимума, одна форма для регистрации и авторизации.
В объекте модели "Тип поля" регулярное выражение "главнее" типа, т.е. его наличие поменяет поле на "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/
.
Стек