Skip to content

Studio-Yandex-Practicum-Hackathons/culture_its_ok_1

Repository files navigation

Development Production

Стек технологий:

image image image image image image image

image image image image image image

Бот АНО "Культура"

Бот проводит экскурсии-медиации по местам с работами уличных художников в городе Ростов-на-Дону в реальном времени. На выбор несколько маршрутов. На протяжении всего маршрута бот "общается", описывает арт-объекты, рассказывает интересные факты о них, давая возможность порефлексировать.


Бот содержит административную зону, доступ к которой осуществляется по паролю и в которой можно сформировать следующие виды отчётов:

  • Отчёт по пользователям (по всем пользователям в БД)
  • Отчёт по маршрутам (за указанный период)
  • Отчёт по рефлексии (по конкретному маршруту за указанный период)

Указав адрес электронной почты в ходе диалога с ботом, он возвращает ссылку на Google-таблицу с отчётом


Так же есть браузерная административная панель со следующими особенностями:

  • Можно редактировать существующие маршруты или создавать новые, менять местами порядок отображения объектов
  • Можно помечать маршруты или этапы неактивными на время их составления/редактирования или в случае, если какой-то маршрут пройти стало невозможно (например, работа была повреждена)
  • Маршрутов может быть больше трёх, но пользователям выводятся первые три (неактивные не выводятся)
  • Возможно редактировать текст на всех кнопках
  • Загружаемые фотографии автоматически уменьшаются до указанного размера

Как это работает:

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

Как запустить проект:

  • Склонируйте репозитарий:
git clone [email protected]:Studio-Yandex-Practicum-Hackathons/culture_its_ok_1.git
  • Установите Docker согласно инструкции с официального сайта: https://docs.docker.com/

  • Получите все необходимые данные для переменных окружения: telegram токен, sentry dsn, info сервисного аккаунта Google, сслыку на форму опроса для web app (например, Google Forms. В целях пробного запуска можно указать любой URL)`

  • В папке infra/ создайте папку env с файлами переменных окружения (в качестве примера можно взять папку env.examle):

# env/.general

# Server
SERVER_HOST=<ip адрес или доменное имя сервера>
SERVER_PORT=80

# Versions
POSTGRES_VERSION=15
REDIS_VERSION=7.0.8
NGINX_VERSION=1.23.3

# Hosts
POSTGRES_HOST=postgres
REDIS_HOST=redis
DJANGO_HOST=django
NGINX_HOST=nginx

# Ports
POSTGRES_PORT=5432
REDIS_PORT=6379
DJANGO_PORT=8000
# env/.bot

TELEGRAM_TOKEN=<...>
DEBUG=FALSE
ADMIN_PASSWORD=password     # пароль от административной зоны
READING_SPEED=250           # скорость чтения текста (слов в минуту)
PHOTO_SHOW_DELAY=5          # задержка при показе фотографий (секунд)
REFLECTION_TEXT_LIMIT=500   # предельная длина текста рефлексии (символов)
REFLECTION_VOICE_LIMIT=120  # предельная длина голосового сообщения рефлексии (секунд)
SURVEY_URL=<...>            # ссылка на страницу опроса для отображения в web app
# env/.django

ALLOWED_HOSTS=127.0.0.1,<ip адрес или доменное имя сервера>
SECRET_KEY=<...>
DEBUG=False
PHOTO_RESIZE_QUALITY=medium  # качество сжатия картинок, загружаемых через админку (low/medium/high)
# env.google

TYPE=service_account
PROJECT_ID=<...>
PRIVATE_KEY_ID=<...>
PRIVATE_KEY=<...>
CLIENT_EMAIL=<...>
CLIENT_ID=<...>
AUTH_URI=https://accounts.google.com/o/oauth2/auth
TOKEN_URI=https://oauth2.googleapis.com/token
AUTH_PROVIDER_X509_CERT_URL=https://www.googleapis.com/oauth2/v1/certs
CLIENT_X509_CERT_URL=HTTPS://WWW.GOOGLEAPIS.COM/ROBOT/V1/METADATA/X509/SERVICE-ACCOUNT%40CEDAR-CHANNEL-394314.IAM.GSERVICEACCOUNT.COM
UNIVERSE_DOMAIN=googleapis.com"
SPREADSHEET_URL="https://docs.google.com/spreadsheets/d/{}"
# env/.postgres

POSTGRES_DB=database
POSTGRES_USER=user
POSTGRES_PASSWORD=password
# env/.sentry

SENTRY_DSN=<...>
  • Создайте и запустите docker контейнеры:

для запуска из образов с Docker Hub:

# Linux
sudo docker compose --env-file=env/.general up --build -d

# Windows
docker compose --env-file=env/.general up --build -d

для локальной сборки контейнеров:

# Linux
sudo docker compose --file=docker-compose-dev.yaml --env-file=env/.general up --build -d

# Windows
docker compose --file=docker-compose-dev.yaml --env-file=env/.general up --build -d
  • Создайте суперпользователя для входа в админку Django (пример для случая локальной сборки контенеров):
(sudo) docker compose --file=docker-compose-dev.yaml --env-file=env/.general exec bash django

python manage.py createsuperuser

Админка будет доступна по адресу: http://<ip адрес сервера>/admin/

Как наполнить базу:

  • Из директории /infra/data скопируйте файл routes.json и папку media в контейнер Django:
(sudo) docker compose --file=docker-compose-dev.yaml --env-file=env/.general cp data/routes.json django:/app/

(sudo) docker compose --file=docker-compose-dev.yaml --env-file=env/.general cp data/media django:/app/
  • Зайдите в контейнер Django под пользователем root и поменяйте права на папку media
(sudo) docker compose --file=docker-compose-dev.yaml --env-file=env/.general exec -u root django bash

chown -R admin:admin media
  • Залейте дамп в базу данных:
python manage.py loaddata routes.json

Разработчики:

Александр Бондаренко - Тимлид

Александр Гусаров - Разработчик

Даниил Ларюшин - Разработчик

Полина Николаева - Разработчик

Сергей Ткачук - Разработчик

Ярослав Лошкарев - Разработчик

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published