Skip to content

artasvest/umirhack26

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Реализованная функциональность

По техническому заданию.

  • Функционал 1 — квиз из 6 шагов: тип помещения (одиночный выбор); зоны (множественный выбор, минимум один); площадь (ползунок 20–300 м², шаг 5, значение по умолчанию 60); стиль интерьера (одиночный выбор); бюджет (одиночный выбор); форма — имя, телефон (обязательно), email, комментарий, чекбокс согласия на обработку данных.
  • Функционал 2 — навигация и интерфейс: кнопки «Назад» и «Далее»; индикация прогресса (прогресс-бар или подпись вида «Шаг N из 6»); ответы сохраняются при переходе назад; валидация обязательных полей; анимация переходов между шагами; адаптивная вёрстка под ширины 320px, 375px, 768px и 1024px и выше.
  • Функционал 3 — отправка, состав заявки и аналитика: все ответы уходят на сервер одним JSON; кнопка отправки блокируется до завершения запроса; после успеха показывается экран успеха, при ошибке — понятное сообщение; в заявке фиксируются ответы квиза, дата и время, URL страницы и UTM-метки; отправляются аналитические события (в т.ч. quiz_start, quiz_step_1quiz_step_5, quiz_form_view, quiz_submit, quiz_success).

Особенность проекта в следующем:

Дополнительные возможности сверх ТЗ.

  • Киллерфича-1: конструктор / редактор схемы квиза в админке (визуальная схема и сохранение конфигурации шагов).
  • Киллерфича-2: админ-панель — роли, создание менеджеров, сводная аналитика и воронка, экспорт данных (в т.ч. CSV).
  • Киллерфича-3: кабинет менеджера по лидам (статусы, заметки, голосовые с транскрипцией, напоминания) и Telegram-бот для уведомлений о новых заявках и смены статусов по кнопкам; опционально — ИИ-резюме лида, страница статуса заявки для клиента.

Основной стек технологий:

  • LEMP (Linux, nginx как обратный прокси и отдача собранного фронтенда в контейнерной сборке).
  • HTML, CSS, JavaScript, TypeScript.
  • PostCSS, Tailwind CSS.
  • Vue 3, Vite.
  • Python 3.12, FastAPI, Uvicorn, SQLAlchemy, PostgreSQL (через async-драйвер).
  • Git.
  • Docker, Docker Compose.

Демо

Демо сервиса доступно по адресу: https://itdon-smartquiz-hack.ru

Реквизиты теста для менеджера: xana@ex.com: , пароль: 123123 Реквизиты теста для админа: admin@studio.local , пароль: ADMIN123123

(Для входа в панель администратора или менеджера при локальном запуске без изменения конфигурации по умолчанию используются учётные данные из переменных ADMIN_EMAIL и ADMIN_PASSWORD в файле окружения backend; подставьте их вместо тестовой пары, если развёрнули демо с другими значениями.)

СРЕДА ЗАПУСКА

  • Развёртывание удобно на Debian-подобном Linux (Debian 9+) или иной ОС с установленным Docker и Docker Compose;
  • Для ручного запуска без контейнеров: Python 3.11+ (рекомендуется 3.12), Node.js для сборки фронтенда, PostgreSQL (версия 14+);
  • Требуется nginx (в compose входит отдельный образ) или эквивалентный прокси при промышленной схеме;
  • Для Telegram-бота в файле окружения указываются токен и идентификатор чата менеджеров; для транскрипции и внешних LLM — ключи провайдеров по необходимости.

УСТАНОВКА

Вариант с Docker Compose

Выполните в корне репозитория (предварительно создайте файл .env в корне с корректным DATABASE_URL, согласованным с параметрами сервиса базы в docker-compose.yml, и при необходимости скопируйте/создайте backend/.env с секретами JWT, Telegram и API):

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y docker.io docker-compose-plugin git
git clone <URL-репозитория>
cd <каталог-клона>
docker compose up -d --build

После успешного старта API доступен на порту backend-сервиса (по умолчанию 8000), веб-интерфейс — через nginx (по умолчанию 80). Один раз выполняется контейнер инициализации БД (db-bootstrap), создающий таблицы и начальные данные.

База данных

Создайте пользователя и базу в PostgreSQL (при использовании compose это делается через переменные окружения сервиса db). Строка подключения задаётся в DATABASE_URL (в корневом .env для Compose и/или в backend/.env для локального запуска), формат async-драйвера, например:

postgresql+asyncpg://ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ@ХОСТ:5432/ИМЯ_БД

Выполнение миграций и начальное наполнение

Схема и системные записи создаются при старте приложения и отдельным шагом bootstrap в Docker. Для ручного применения без полного стека API выполните из каталога backend при настроенном backend/.env:

python -m app.bootstrap

Установка зависимостей проекта (без Docker)

Backend — зависимости из requirements.txt:

cd backend
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Frontend — зависимости через npm:

cd frontend
npm ci
npm run build

Собранные статические файлы подключаются к nginx согласно используемой конфигурации (см. docker/nginx).

РАЗРАБОТЧИКИ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors