Проект создан с целью помочь ребятам определить свои профессиональные интересы и склонности, а также ускорить обработку результатов тестов, что позволит им получить быстрые и точные рекомендации по выбору карьеры.
- Эффективность: Telegram-бот ускоряет процесс профориентации и экономит время как ребят, так и профдизайнеров, позволяя получать результаты мгновенно.
- Доступность: Пользователи могут воспользоваться ботом в любое время, что сделает профориентацию более доступной и удобной.
- Хранение результатов в базе данных: Профдизайнеры имеют постоянный доступ к результатам тестирования пользователей, что позволяет им легко отслеживать и анализировать прогресс и потребности подростков в любое удобное время.
- Вопросы и консультации через бота: Подростки могут задавать вопросы профдизайнерам через бота в любое время. Профдизайнеры получают уведомления о новых запросах и могут предоставить консультацию и поддержку в Админ-панели.
Директория | Описание |
---|---|
infra |
Файлы для запуска с помощью Docker, настройки Nginx |
src/backend |
Код Django приложения |
src/bot |
Код бота |
Нажмите, чтобы развернуть спойлер
- Доступ к тестированию только при регистрации в ЛК
- Отправка отформатированных сообщений с вопросами пользователю
- Автоматическая интерпретация результатов заданий
- Задания 1-4
- Задание 8
- Отправка расшифровок по профессиональным направлениям на основе результатов тестов
- Меню с возможностью просмотра списка заданий и расшифровок к ним
- Возможность через кнопку меню задать вопрос профдизайнеру
- Просмотр результата тестов в админ-панели
- Общая сводка по подростку с возможностью скачать в PDF
- Возможность ответить на вопрос подростка в админ-панели
- Уведомление профдизайнера в telegram о том, что ему пришёл вопрос от подростка
- Тестирование API Django приложения
- Регистрация профдизайнеров в админ-панели
- Python 3.11+;
- Docker (19.03.0+) c docker compose;
- Poetry.
- Устанавливаем инструмент для работы с виртуальным окружением и сборки пакетов poetry:
Информация по poetry и его установка
Poetry - это инструмент для управления зависимостями и виртуальными окружениями, также может использоваться для сборки пакетов. В этом проекте Poetry необходим для дальнейшей разработки приложения, его установка обязательна.
Как скачать и установить?
- Установите poetry следуя инструкции с официального сайта.
- После установки перезапустите оболочку и введите команду
poetry --version
- Если установка прошла успешно, вы получите ответ в формате
Poetry (version 1.2.0)
ℹ️ |
Опционально: измените конфигурацию poetrypoetry config virtualenvs.in-project true Выполнение данной команды необходимо для создания виртуального окружения в папке проекта. |
- Создадим виртуальное окружение нашего проекта с помощью команды:
poetry install
Результатом выполнения команды станет создание в корне проекта папки .venv. Зависимости для создания окружения берутся из файлов poetry.lock (приоритетнее) и pyproject.toml
Для добавления новой зависимости в окружение необходимо выполнить команду
poetry add <package_name>
Пример использования:
poetry add starlette
Также poetry позволяет разделять зависимости необходимые для разработки, от основных. Для добавления зависимости необходимой для разработки и тестирования необходимо добавить флаг --group dev
poetry add <package_name> --group dev
Пример использования:
poetry add pytest --group dev
Порядок работы после настройки
Чтобы активировать виртуальное окружение, введите команду:
poetry shell
Существует возможность запуска скриптов и команд с помощью команды без активации окружения:
poetry run <script_name>.py
Примеры:
poetry run python script_name>.py
poetry run pytest
poetry run black
Порядок работы в оболочке не меняется. Пример команды для Win:
python src/run_bot.py
Доступен стандартный метод работы с активацией окружения в терминале с помощью команд, если использовали virtualenvs.in-project true:
Для WINDOWS:
source .venv/Scripts/activate
Для UNIX:
source .venv/bin/activate
- Клонируем репозиторий и переходим в его директорию:
git clone https://github.com/Studio-Yandex-Practicum/you_can_bot.git && cd you_can_bot
- Копируем файл .env.example с новым названием .env и заполняем его необходимыми данными:
cp .env.example .env
nano .env
- Подготавливаем бэкенд к работе:
cd src/backend/
python manage.py migrate
- Наполняем БД данными заданий:
python manage.py loaddata \
fixtures/tasks.json \
fixtures/task_1_data.json \
fixtures/task_2_data.json \
fixtures/task_3_data.json \
fixtures/task_4_data.json \
fixtures/task_5_data.json \
fixtures/task_6_data.json \
fixtures/task_7_data.json \
fixtures/task_8_data.json \
fixtures/groups.json
Если нужен доступ в админскую часть для управления данными, создаем администратора:
python manage.py createsuperuser
Для запуска REST API бэкенда используем команду:
python manage.py runserver
Для запуска телеграм-бота используем команду (в отдельном терминале):
cd src/bot/
python run_bot.py
Чтобы запустить unittest
тестирование работы функционала проекта, нужно:
- Для тестирования Django приложения
cd src/backend/
python manage.py test
Cкачайте и установите Docker, следуя инструкции (для Windows; в левом меню есть возможность выбрать инструкцию для другой ОС).
- Создайте
.env
file в папке проекта на основе.env.example
- Удалите локальную тестовую базу (если создавали) во избежание конфликтов (optional)
- Перейдите в папку infra:
cd infra/
- Запустите следующую команду:
docker-compose up -d
Эта команда создаст и запустит в фоновом режиме контейнеры, необходимые для работы приложения (db, backend, bot, nginx).
- Затем выполните следующие команды внутри контейнера
backend
- Применение миграций
docker-compose exec backend python backend/manage.py migrate
- Загрузка данных заданий
docker-compose exec backend python backend/manage.py loaddata \
backend/fixtures/tasks.json \
backend/fixtures/task_1_data.json \
backend/fixtures/task_2_data.json \
backend/fixtures/task_3_data.json \
backend/fixtures/task_4_data.json \
backend/fixtures/task_5_data.json \
backend/fixtures/task_6_data.json \
backend/fixtures/task_7_data.json \
backend/fixtures/task_8_data.json \
backend/fixtures/groups.json
- Создание супер пользователя (optional)
win:
docker-compose exec backend python backend/manage.py createsuperuser
linux:
docker compose exec -it backend python backend/manage.py createsuperuser
- Сбор статики
docker-compose exec backend python backend/manage.py collectstatic --no-input
Админка будет доступна по адресу http://127.0.0.1/admin/
На проекте принято использовать black для автоформатирования кода. https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html
В некоторых случаях форматирование словарей или последовательностей может быть неудобным для чтения, тогда можно использовать комментарии, чтобы указать участок кода, который не нужно форматировать.
# fmt: off
test_user_answers = {
1: 'а', 2: 'а', 3: 'б', 4: 'а', 5: 'б', 6: 'а', 7: 'б',
8: 'а', 9: 'а', 10: 'б', 11: 'а', 12: 'б', 13: 'а', 14: 'б',
15: 'а', 16: 'а', 17: 'б', 18: 'а', 19: 'б', 20: 'а', 21: 'б',
}
# fmt: on
Обязательно установите git hooks с помощью pre-commit, которые будут выполняться при git commit
, это автоматизирует применение к вашим изменениям автоформатирование black
, проверки isort
, flake8
и др.
Для этого находясь в корневой директории проекта выполните команду
pre-commit install
В этом разделе представлены наиболее часто используемые команды.
Подробнее: https://python-poetry.org/docs/cli/
Создать виртуальное окружение и установить зависимости
poetry install
Использование --without dev
позволяет устанавливать зависимости без зависимостей группы dev
.
Добавить зависимость в pyproject.toml
poetry add <package_name>
Использование --group dev
позволяет установить зависимость, необходимую только для разработки. Это полезно для
разделения develop и prod зависимостей.
При создании новой ветки наследоваться от develop, не забыв спуллить себе последние изменения Пример наименования веток:
feature/send-sandwiches
fix/process-bread-not-found.