Skip to content

Сервис для онбординга с динамическим обновлением страницы

Notifications You must be signed in to change notification settings

cloudsucker/onboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

ONBOARD - СЕРВИС ДЛЯ ОНБОРДИНГА С ДИНАМИЧЕСКИМ ОТОБРАЖЕНИЕМ

Warning

Этот проект был опубликован 14 мая 2024 года как тестовое задание при прохождении собеседования. Он не поддерживается, не является актуальным, и размещён публично только в целях изучения, выявления слабых мест и ошибок. Сам проект представляет собой сервис для динамического онбординга с шаблонизацией для пошагового опционального ведения клиента. В нём имеются недочёты, среди основных: жёсткая связность с фреймворком, хрупкость системы, поверхностная реализация.


🎯 Продуктовые цели сервиса

  1. Анкетирование потенциальных клиентов, с целью использования собранной информации для повышения конверсии в закрытие сделки отделом продаж.
  2. Автоматическая преднастройка системы: показать необходимые разделы для данного типа и вида бизнеса, скрыть все то, что не релевантно.

💡 Идея

Главные критерии проекта:

1. Деление древа опроса на два: меняющие логику вопросы и не меняющие 🔀

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

2. Поочерёдное отображение вопросов без перезагрузки страницы 🔄

Конечной целью было реализовать отправку вопросов поочерёдно, вне зависимости от того является ли вопрос информативным или меняющим ветку. Отдельной задачей было динамическое обновление (подгрузка) информации на страницу.

3. Простота прохождения вопроса 😊

Изначально было запланировано сделать несколько форм:

  • опциональный выбор (для ветвлений и вопросов не требующих ввода)
  • строковые (для ввода имени, почты и т д)
  • для целочисленных значений (вопросы по типу кол-ва людей в команде)
  • для дробных (площадь зала)

Но после реализации шаблона опционального выбора понял, что зачастую при первом знакомстве можно обусловиться категориями вместо уточнения всех чисел.

4. Гибкая система хранения пользовательских данных 📂

Задача была “изолировать” составляющего вопросы и просматривающего ответы от главных моделей. Таким образом получилось создать две модели для вопросов и ответов, 13 моделей для хранения информации о бизнесах пользователей и 1 модель для хранения пользовательских данных.

🌳 Тестовое дерево, включающего ветвления и объединения веток

tree

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

👩‍💻 Отображение моделей в Django admin

def __str__(self):
    return (
        # [Зависимость от вопроса: "ответ для этой ветки"] Текущий вопрос
        f"{f'[{str(self.depends_on.order) + ". " + str(self.depends_on.title)}: "{self.depends_key if self.depends_key else 'ANY'}"] ' if self.depends_on else ""}" + f"{str(self.order)}. " + self.title
    )

django_admin

🔗 Установка зависимостей между вопросами

Для создания зависимостей между вопросами было добавлено два поля:

  • поле зависимости для установления зависимости от другого вопроса (выделено красным)
  • ключ (ответ который нужно дать в предыдущем чтобы попасть на этот, выделено синим)

django_admin

🛠️ Установка

1. Создание и активация виртуального окружения

Переходим в нужную директорию, создаём виртуальное окружение

> python -m venv .venv

Активируем его

> .venv\Scripts\activate

2. Клонируем репозиторий

> git clone https://github.com/cloudsucker/onboard.git

Переходим в корневую директорию проекта

> cd onboard

3. Установка зависимостей

> pip install -r requirements.txt

4. Запуск

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

> cd onboard

Ваша рабочая директория должна выглядеть так:

.../onboard/onboard

Запускаем Django-приложение

> python manage.py runserver

📚 Используемые библиотеки

  • Django >= 5.0.6
  • pip-tools >= 7.4.1

📬 Обратная связь

По всем вопросам: [email protected]

About

Сервис для онбординга с динамическим обновлением страницы

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published