Сервисы и платформы

Разработка сервиса для FPV-магазинов — Конструктор дронов

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

Посетить сайт
PythonPydanticFastAPIRESTOpenAPIPostgreSQL 16SQLAlchemyRedis 7PreactTypeScriptViteShadow DOMReact 18react-routerPyodideJWT
Конструктор дронов

Задача

Магазинам FPV- и БПЛА-комплектующих нужен конструктор, в котором покупатель собирает дрон из каталога и узнаёт о несовместимости деталей до передачи комплекта в корзину. Проверка должна учитывать физические размеры и крепления, питание и протоколы компонентов. Сервис требовалось встраивать в сайты разных магазинов с их цветами и шрифтами. Данные партнёров нужно было разделить, а сотрудникам дать возможность вести каталог и настраивать правила совместимости без программирования.

Подбор начинается с рамы

Режим «Мастер» проводит покупателя от рамы через систему, управление и FPV к питанию и дополнительным компонентам. Выбранная рама задаёт ограничения: детали с неподходящим креплением или слишком большим винтом становятся недоступными. Конструктор объясняет причину.

На телефоне подбор также идёт по шагам. В карточке детали видны характеристики, цена и остаток — покупатель оценивает компонент перед добавлением в сборку.

Выбор рамы на телефоне: поиск и карточка с размерами, весом, ценой и остатком
Выбор рамы на телефоне: поиск и карточка с размерами, весом, ценой и остатком

Совместимость проверяется при подборе

Ядро на Python проверяет геометрию, массу и центр тяжести, питание, протоколы, UART-порты и тяговооружённость. При замене детали характеристики пересчитываются: покупатель видит, как меняются вес, токи и прогноз времени полёта. Сообщения разделены на ошибки, предупреждения и пояснения. Блокирующая ошибка отключает добавление комплекта в корзину.

Для расчёта центра тяжести у слотов рамы заданы координаты установки компонентов. Тяга рассчитывается по замерам производителя из таблицы мотора. Если подходящих данных нет, результат помечается как оценка.

Выбор аккумулятора рядом с составом сборки: панель характеристик выделяет превышения допустимых токов
Выбор аккумулятора рядом с составом сборки: панель характеристик выделяет превышения допустимых токов

Каталог и правила без кода

Сотрудники магазина ведут детали в административной панели: ищут по названию и SKU, фильтруют по категориям, меняют характеристики, цены и остатки. Для каждой категории предусмотрена своя форма. Каталог можно загрузить из CSV или XLSX с предварительным просмотром и сопоставлением колонок.

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

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

Статистика показывает препятствия при подборе

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

Статистика за период: воронка сборок и частые ошибки помогают разбирать причины блокировок
Статистика за период: воронка сборок и частые ошибки помогают разбирать причины блокировок

Встраивание в сайт магазина

Виджет на Preact поддерживает цвета и шрифт магазина. Shadow DOM изолирует его стили от оформления сайта. Данные партнёров разделены по схемам PostgreSQL, а Redis хранит каталог и результаты проверок в кэше.

Для передачи комплекта в корзину реализовали JavaScript-событие и callback. Сайт получает товары, количество и сумму по своему каталогу, затем рассчитывает скидки. Покупателю не нужно добавлять каждую деталь повторно.

Гостевая сборка сохраняется в локальном хранилище браузера. Конфигурацию также можно сохранить по ссылке и отправить другу или консультанту. Для знакомства с продуктом подготовили браузерное демо: Python-ядро выполняется через Pyodide без серверного API.

Цели

  • Выявлять несовместимость деталей до передачи комплекта в корзину
  • Передавать комплект в корзину магазина целиком
  • Дать сотрудникам управление каталогом и правилами без программирования
  • Поддержать встраивание в сайты разных магазинов с разделением данных

Целевая аудитория

  • Покупатели комплектующих для FPV-дронов и БПЛА
  • Сотрудники магазинов, которые ведут каталог и настраивают совместимость

Что нужно пользователю

Job to be done — от ситуации к результату

Ситуация

Я подбираю комплектующие для дрона и должен учесть, подходят ли они друг другу по креплениям, питанию и протоколам.

Задача

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

Результат

Могу оценить конфигурацию до покупки, отправить её на обсуждение другу или консультанту и передать комплект в корзину без повторного добавления деталей.

Что внутри

1

Пошаговый подбор комплектующих

2

Проверка физической и электрической совместимости

3

Пересчёт характеристик при замене деталей

4

Блокировка добавления в корзину при ошибках

5

Восстановление гостевой сборки и сохранение по ссылке

6

Передача состава и стоимости комплекта в корзину

7

Импорт каталога из CSV и XLSX

8

Настройка правил совместимости без кода

9

Статистика сборок и частых ошибок

10

Брендирование виджета и разделение данных магазинов

Как работали

1

Анализ технического задания

2

Разработка ядра совместимости и API

3

Разработка виджета подбора комплектующих

4

Создание административной панели

5

Подготовка браузерного демо

Нужен похожий проект?

Расскажите о задаче — оценим объём, сроки и стоимость, предложим решение. Есть ТЗ — загрузите его и получите предварительную цифру за несколько минут.

Оценить по ТЗ