Вижу по логам, что многие заходят в бота, смотрят на пустую строку и уходят. Ребят, мы понимаем: составлять структуру груза руками — то еще удовольствие.
Поэтому мы раскатили DEMO-режим! 🚀 (Помним, что сначала /start по-любому)
Теперь в меню бота появилась кнопка «🚀 Запустить ДЕМО-пример» (или команда /demo).Что она делает:
Рандомит транспорт: от микро-паллеты до 40-футового контейнера.
Генерирует груз: подбирает адекватные габариты под выбранную машину.
Пакует на лету: вы сразу видите результат (Vol%, Крен, CoG) и скорость работы движка в миллисекундах.
Дает потрогать данные: прямо в чате можно скачать входной JSON этого расчета, чтобы использовать его как шаблон для своих задач.
Визуализирует: под постом сразу будет ссылка на 3D-сцену именно этого демо-расчета.
Заходите, кликайте, ломайте — нам важен ваш фидбек по скорости и качеству укладки! 📦🎯
Антропоморфизм или две злобных вишенки
Skewer-v4: 500k items/sec 3D Packing API. Go to Telegram: @routeload_bot
Смотрю на вас как в зеркало... но в ответ не тронь, мы не для таких как ты, правда? Да мы не для таких, мы были созданы для настоящих мужиков. Когда одухотворяют неживые вещи для общения с ними это Антропоморфизм, а как называется когда человек с головой другого человека не разговаривает, но одушевляет части его тела, для общения с ними? Хм, ну да ладно от вымысла к реальности, а реальность у нас - 5ая статья в серии Шампур-Скребок выходит в публичное пространство. Route Load bot (телеграмм) для укладки груза. но сначала...
Коротко о том, что было в предыдущих сериях
Если вы пропустили начало этого инженерного триллера, вот краткий дайджест того, как мы разгоняли «телегу» до сверхзвуковых скоростей:
Начали с малого: Разработали векторную логику для решения задачи коммивояжера (TSP). Итог — 10 000 точек за 0.4 секунды. Пролетели через сложные топологические фигуры вроде спиралей и трилистников.
Масштабировали на флот: Смоделировали погрузку 100 000 контейнеров на 12 судов. С помощью Celery-воркеров и FastAPI разложили 42 000 контейнеров за 2 минуты, учитывая стэк-лимиты и LIFO.
Ударились в хардкор (Царь-задача): В прошлой статье мы перешли к упаковке разногабарита. Внедрили учет веса, центра тяжести (COG) и очередности выгрузки (LIFO). Добились безумной производительности — 500 000 айтемов в секунду.
Сегодня: Мы перестаем прятать «движок» в консоли и выпускаем его в открытое плавание. Пятая часть — это про то, как превратить математический хардкор в доступный сервис через Telegram-бота, JSON-интерфейс и 3D-визуализацию в браузере.
Почему это важно сейчас?
Многие спрашивали: «Круто, а как потрогать?». Сегодня я покажу архитектуру публичного API, завернутого в Docker, защищенного API-ключами и доступного любому человеку со смартфоном в кармане. От векторных вычислений — к работающему продукту.
Route Load bot. Архитектура процесса: от JSON до 3D-сцены
Разговор с кодом — это тоже своего рода антропоморфизм, но когда сервер на 8 ГБ оперативки начинает «ворочать» кубы в пространстве, это уже чистая математика. Весь путь запроса в Route Load bot разбит на 5 четких этапов:
1. Рукопожатие: /start
Пользователь заходит в бота, и первое, что он видит — не просто «Привет», а четкую инструкцию и ссылку на Swagger-документацию. Мы не прячем «потроха»: если ты разработчик или логист со своей системой — бери API и пользуйся. Бот здесь выступает в роли дружелюбного интерфейса к мощному движку.
2. Прием «груза»: JSON-файлы
Пользователь кидает файл order.json (через скрепку или текстом). На этом этапе в игру вступают Pydantic-схемы. Если в данных мусор (например, количество коробок qty: 0 или отрицательные размеры), бот вежливо (или не очень) укажет на ошибку, не нагружая основной движок бессмысленными расчетами.
Инициализация: Создаем виртуальный склад.
Расчет: Движок считает 3D-упаковку и балансировку центра тяжести (COG — Center of Gravity). Это критично: если перегрузить одну сторону фуры, на первом же повороте «антропоморфизм» закончится кюветом.
Кэширование: Результат летит в Redis с TTL 30 минут. Это наш «оперативный склад», откуда потом подтянется визуализация.
3. Вердикт: КПД и Центр тяжести
В ответ пользователь получает сухие, но важные цифры:
КПД: Насколько плотно мы «забили» контейнер.
Смещение COG: Насколько безопасно распределен вес.
Интерактив: Ссылка на 3D и кнопки рейтинга (1⭐ — 5⭐).
4. Обратная связь: PostgreSQL помнит всё
Когда юзер кликает на оценку (например, 4⭐), открывается асинхронная сессия с PostgreSQL. Мы пишем всё: task_id, оценку, @username и таймстамп. Это не просто статистика — это база для обучения алгоритма в будущем. Если мужики ставят 1 звезду, значит, упаковка «не лезет» в реальный контейнер, и надо править коэффициенты.
5. Визуализация: Магия в браузере
Самый «вкусный» этап. При переходе по ссылке срабатывает роут FastAPI @app.get("/visualize/{task_id}").
Система ныряет в Redis.
Достает сохраненный расчет.
Рендерит Jinja2-шаблон
visualize.html.Пользователь получает полноценную 3D-модель, которую можно крутить, вертеть и изучать, как именно движок разложил его коробки.

Что под капотом (Сервисное меню)
Помимо основного флоу, мы внедрили стандартный набор «выживания» в Телеграме:
help: Чтобы не забыть, зачем мы здесь.stats: Лимит в 300 запросов (пока щедро, для всех).tasks: История последних 10 расчетов (подтягиваем из БД).feedback: Прямая связь с разработчиками.
Грабли, Docker и «Злобные вишенки» деплоя
Теория — это когда всё понятно, но ничего не работает. Практика — это когда всё работает, но не сразу. Когда мы начали паковать всё это в Docker на боевом сервере в Питере, вылезли те самые «вишенки»:
Лимиты Docker Hub: Оказалось, что анонимные скачивания образов в 2026 году — это лотерея. Пришлось переезжать на зеркала, чтобы Nginx вообще соизволил скачаться.
Битва за SSL: Пока DNS-записи домена
skewer-api.ruрасползались по миру, Certbot отказывался выдавать «замочек». Пришлось подождать, пока интернет «узнает» наш новый адрес.Анти-спам: В первой версии бот был слишком подозрительным — банил за любое лишнее движение. Настроили Redis-мидлварь так, чтобы она отсекала только явных ботов, давая спокойно работать.
Итог: Пробуйте в деле
Мы не стали строить закрытую крепость. Проект открыт, API доступно, а бот готов крутить ваши коробки 24/7.
🚀 Попробовать прямо сейчас: @routeload_bot Система принимае�� отзывы, комментарии. Если появится интерес, не стесняйтесь связываться
Не стесняйтесь:Пишите в бота, тестируйте свои реальные заказы. Если есть идеи по алгоритмам или вы нашли баг — стучитесь в фидбэк или прямо здесь в комментариях. Мы создали это для работы, а работа должна быть удобной.
сваггер https://skewer-api.ru/docs#/ он есть, но по апи ключу. пользуйтесь ботом и если уже решите что, нужен сваггер, то обращайтесь в фидбэк, я все увижу и отвечу. Сейчас сервис OPEN IN TELEGRAM. @routeload_bot без апи ключа не протестируете (вижу , что пытаетесь, поэтому акцентирую внимание на боте).
