Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Нива-Мотор

Корпоративная B2B-платформа для производителя горно-шахтного электрооборудования. Проект объединяет публичный сайт, технический каталог, интерактивные 3D-модели, обработку обращений, сервисный учёт, аналитику и AI-рекомендации в одной Flask-системе.

Главная страница (это старый скриншот, сейчас всё выглядит куда изящнее)

Что решает проект

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

Основные возможности:

  • двуязычная публичная часть на русском и английском языках;
  • каталог продукции с категориями, характеристиками, файлами и связанным оборудованием;
  • интерактивный просмотр GLB-моделей с вращением и масштабированием;
  • разделы решений, реализованных проектов, новостей и документов;
  • технические паспорта для 15 позиций продукции;
  • адаптивная форма коммерческих, сервисных и общих обращений;
  • отдельный учёт неисправностей и связанных сервисных работ;
  • развитая административная панель с управлением практически всем содержимым сайта;
  • сквозная аналитика просмотров, вовлечения, скачиваний, заявок и неисправностей;
  • AI-рекомендации по данным сайта и сервисным обращениям;
  • AI-анализ загружаемых Excel- и Word-файлов;
  • журнал действий администраторов;
  • базовые SEO-настройки, Open Graph, canonical и hreflang.

Интерфейс

Скриншоты ниже демонстрируют интерфейс на тестовых данных.

Каталог продукции
Каталог продукции
Карточка товара и 3D-модель
Карточка товара с 3D-моделью
Отраслевые решения
Раздел решений
3D-модель решения
Решение с 3D-моделью
Реализованные проекты
Реализованные проекты
Контакты и форма обращения
Контакты
Административная панель
Общая сводка
Главная страница админки
Управление товарами
Управление товарами
Обработка заявок
Обработка заявок
Аналитическая панель
Аналитика сайта

AI-рекомендации по обращениям и неисправностям

AI-рекомендации

3D-визуализация

GLB-модели можно подключать к товарам, решениям и проектам через административную панель. На публичной странице посетитель может:

  • вращать модель;
  • приближать и отдалять объект;
  • осматривать оборудование до запроса документации или консультации;
  • перейти от 3D-просмотра к техническим характеристикам, связанному оборудованию и паспорту изделия.

Главная страница также использует Three.js для отдельной презентационной 3D-сцены.

Административная панель

Админка построена как единый интерфейс управления сайтом. Через неё можно создавать, редактировать, публиковать и удалять:

  • страницы и реквизиты компании;
  • категории и товары;
  • технические характеристики и файлы товаров;
  • типы и единицы оборудования;
  • группы решений и сами решения;
  • проекты и кейсы;
  • новости и документы;
  • заявки, сервисные обращения и записи о неисправностях.

Для контента поддерживаются русская и английская версии, порядок сортировки, статусы публикации, изображения, технические файлы и 3D-модели. Действия администратора сохраняются в журнале изменений.

Заявки и сервисные обращения

Форма обращения меняется в зависимости от выбранной темы. Система обрабатывает:

  • коммерческие запросы;
  • общие вопросы;
  • сервисные обращения;
  • сообщения о поломках;
  • жалобы и отзывы;
  • предложения по улучшению;
  • запросы на доработку;
  • предложения о сотрудничестве.

Обращение можно привязать к товару, решению, проекту, типу оборудования и конкретной единице оборудования. Для поломок сохраняются приоритет, категория неисправности, повторяемость, необходимость выезда или обратного звонка, ответственный сотрудник и результат работы.

Статусы заявки и связанной неисправности синхронизируются, поэтому аналитика не получает противоречивые данные.

Аналитика

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

  • просмотры и вовлечение;
  • открытия и отправки формы;
  • конверсия по этапам воронки;
  • скачивания документов и паспортов;
  • популярные товары, решения и проекты;
  • структура обращений по темам, тону и приоритету;
  • динамика неисправностей;
  • проблемное оборудование;
  • повторные поломки;
  • связь неисправностей с решениями и реализованными проектами;
  • статистика работы сервисных сотрудников.

Период отчёта переключается между 7, 30, 90 и 365 днями.

AI-рекомендации

AI-модуль подключается опционально через Gemini API. Он используется в двух сценариях.

Анализ обращений и неисправностей

Модель получает подготовленную сводку без прямого доступа к базе и формирует:

  • основной вывод;
  • обнаруженные закономерности;
  • риски;
  • рекомендуемые действия;
  • оценку уверенности результата.

Анализ файлов

В админке можно загрузить:

  • .xlsx — таблицу Excel;
  • .docx — документ Word.

Система извлекает текст и структуру файла, ограничивает объём входных данных и передаёт подготовленное содержимое AI-модели. Результат возвращается в виде структурированных выводов и рекомендаций. Временные файлы автоматически очищаются.

Технологии

  • Python 3.11+
  • Flask 3
  • Flask-SQLAlchemy
  • SQLAlchemy 2
  • Flask-Migrate / Alembic
  • Flask-WTF
  • SQLite для локальной разработки
  • Jinja2
  • Three.js
  • Google Model Viewer
  • Chart.js
  • OpenPyXL
  • python-docx
  • Gemini API
  • PowerShell-скрипты для подготовки и запуска под Windows

Структура проекта

niva-motor-site/
├── app/
│   ├── blueprints/          # Публичные страницы, API и админка
│   ├── services/            # AI, почта, загрузки и синхронизация данных
│   ├── static/              # CSS, JavaScript, изображения и Three.js
│   ├── templates/           # Jinja-шаблоны сайта и админки
│   ├── models.py            # Модели данных
│   └── __init__.py          # Фабрика Flask-приложения
├── docs/screenshots/        # Скриншоты для README
├── migrations/              # Миграции Alembic
├── source_documents/        # Исходные паспорта и каталог
├── tests/                   # Автоматические проверки
├── setup.ps1                # Первичная подготовка проекта
├── start-dev.ps1            # Локальный запуск
├── create_admin.py          # Создание администратора
├── seed.py                  # Основные начальные данные
├── import_passports.py      # Импорт технических паспортов
└── wsgi.py                  # Точка входа приложения

Локальный запуск на Windows

Нужен Python 3.11 или новее. Рекомендуется Python 3.12.

Откройте PowerShell в корне проекта и разрешите выполнение локальных скриптов только для текущего окна:

Set-ExecutionPolicy -Scope Process Bypass

Подготовьте окружение и базу:

.\setup.ps1

Скрипт:

  • создаст .venv;
  • установит зависимости;
  • сформирует локальный .env;
  • применит миграции;
  • наполнит базу начальными данными;
  • импортирует паспорта продукции;
  • синхронизирует справочник оборудования;
  • запустит автоматические проверки.

Создайте администратора:

.\.venv\Scripts\python.exe .\create_admin.py

Запустите проект:

.\start-dev.ps1

Адреса после запуска:

Сайт:    http://127.0.0.1:5000
Админка: http://127.0.0.1:5000/admin

Настройка окружения

При первом запуске setup.ps1 создаёт .env на основе .env.example и генерирует секретный ключ.

Почтовые уведомления

Для отправки заявок на email заполните SMTP-параметры и включите почту:

MAIL_ENABLED=true
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_USE_TLS=true
MAIL_FROM_EMAIL=no-reply@example.com
LEADS_TO_EMAIL=info@example.com

AI-функции

AI_INSIGHTS_ENABLED=true
GEMINI_API_KEY=your-api-key
GEMINI_MODEL=gemini-2.5-flash
GEMINI_TIMEOUT_SECONDS=45

Без API-ключа сайт, каталог, заявки и обычная аналитика продолжают работать. Недоступны только AI-рекомендации.

Проверки

Автоматические проверки запускаются внутри setup.ps1. Их также можно выполнить отдельно:

.\.venv\Scripts\python.exe -m unittest discover -s tests -v

Проверяются основные публичные маршруты, защита административных разделов, безопасность загрузок, валидация заявок, синхронизация статусов, публикация контента и работа справочников. После публикации репозитория те же проверки автоматически выполняются в GitHub Actions на Python 3.12 и 3.14 при каждом push и pull request.

Безопасность

В репозиторий не должны попадать .env, рабочая база, реальные заявки, пароли, приватные загрузки и временные файлы. Это уже учтено в .gitignore.

Дополнительно реализованы:

  • CSRF-защита административных форм;
  • безопасные cookie сессии;
  • ограничения типов и размера загружаемых файлов;
  • разделение публичных и приватных загрузок;
  • защита формы от простых ботов и частых повторных отправок;
  • экранирование AI-ответов перед выводом в интерфейс;
  • проверка доступности связанных объектов;
  • HTTP-заголовки безопасности;
  • журнал административных изменений.

Состояние проекта

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

Для production-развёртывания потребуется настроить внешний веб-сервер, постоянное хранилище загрузок, резервное копирование базы, SMTP и отдельный production-секрет.

About

Корпоративный сайт производителя промышленного электрооборудования с 3D-каталогом, аналитикой и административной панелью

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages