Назад в архив
IV. Клиентские проекты и логистические платформыдополнительноучастникклиент анонимизирован

Pizza Brand Telegram Bot

Продакшн-бот в Telegram для заказа еды в пиццерии Restaurant chain (UZ) (Узбекистан) — близнец Restaurant chain (UZ)Bot на общей кодовой базе, но крупнее и с более свежими фичами.

Статус
поддерживается
Период
2021-07-31 → 2026-05-18
AI-сессий
1
Стек
Языки
JavaScript
Фреймворки · Инфра
Telegraf 4.15FastifyBulltelegraf-i18n
§01

Обзор

  • Что это: Мультиязычный (ru/uz/en) e-commerce бот в Telegram для сети пиццерий Restaurant chain (UZ) (choparpizza.uz). Меню/корзина, доставка/самовывоз, выбор терминала, стоп-листы, авторизация, отзывы, массовые рассылки. Фронтенд к внешнему Laravel API (в стиле api.choparpizza.uz). Тот же владелец репозитория (ShahzodSalimsakov) и архитектура, что и у Restaurant chain (UZ)Bot.
  • Тип / статус / роль: bot / maintained / contributor (2–3 разработчика; у пользователя 174 из 317 коммитов, ~55%).
  • Активный период: 2021-07-31 → 2026-05-18, ~5 лет. Живой: 2025–2026 показывают свежую волну фич с чистыми conventional-commits (часть — с Claude).
§02

Стек

  • Языки: JavaScript (Node.js, CommonJS). TypeScript только в devDeps (не используется).
  • Фреймворки/библиотеки: Telegraf 4.15 (новее, чем 4.4 у Restaurant chain (UZ)Bot; Scenes/WizardScene), telegraf-i18n (ru/uz/en), Fastify 3 + fastify-telegraf, Bull 4 + @bull-board, ioredis, luxon, hashids, bwip-js/canvas (штрихкоды), axios.
  • Инфра/деплой: PM2, Sentry, @inspector-apm/inspector-nodejs (APM-мониторинг — единственное заметное отличие в зависимостях от Restaurant chain (UZ)Bot), choparpizza.uz / сервер Contabo. Bun (bun.lockb присутствует) + yarn.lock — миграция пакетного менеджера.
  • Данные: MongoDB (сессии + коллекция event_systems), Redis (Bull + pub/sub).
  • Заметный тулинг: agenda/node-cron/sfn-scheduler (частично legacy/закомментировано).
§03

Что реализовано

Ранняя история — мусорные сообщения («asd», «dsd», «fix»); с 2025 года — чистые conventional commits (часть сгенерирована Claude).

  • Меню/корзинаcontrollers/menu/index.js >2755 строк (больше, чем у Restaurant chain (UZ)Bot): пагинация, корзина, модификаторы, half-products, промоакции (threeSaleProducts, 8246873).
  • Стоп-листы по терминаламf241cf3 fix: Enforce stop-list check on product variants + b0697e4 (answerCbQuery при блокировке).
  • Плановые рассылкиbot.js + util/queue.js: cron-джобы Bull, прогресс репортится в API, удаление сообщений; cb9c9f3 feat: endpoint to remove scheduled events from MongoDB, 0dac3ce feat: Emit 'removed' event on job removal.
  • send_notify с reply30928f3 refactor: Add support for replying to a message.
  • Бизнес-апдейты: города (94653c7 trying to fix cities issue), время закрытия, тексты доставки.
  • Финальный рефакторинг (`5880f35`, 2026-05-18): заменил /api/configs/public на статический env-конфиг (тот же рефакторинг, что и в Restaurant chain (UZ)Bot — общее обновление для обоих ботов).
  • Объём: 317 коммитов за ~5 лет, 174 у пользователя. Активность волнами; недавно оживлён с AI-ассистентом.
§04

Технические челленджи

  • Стоп-лист на уровне варианта/модификатора (controllers/menu/index.js, addToCart, коммит f241cf3): раньше валидировался только ID родительского продукта → отсутствующие размеры пиццы (40 см) проскакивали в корзину. Фикс: GET terminals/get_stock?terminal_id=..., сборка blockedIds из [selectedProdId, rightProduct.id, ...selectedModifiers.map(id)], проверка пересечения со стоп-листом, блокировка через productIsNotInStock. → Реальный продакшн-баг в доменной логике; корректное расширение проверки на все составляющие продукта.
  • Удаление плановых сообщений из MongoDB (bot.js, cb9c9f3): endpoint /api/schedule_event/remove_within_mongo — курсор по event_systems по jobId, bot.telegram.deleteMessage(chatId, message_id) + удаление документа, с детальным логированием и try/catch на каждое сообщение. → Управление состоянием рассылки (есть и баг: обращение к queueJob.id вне области видимости — потенциальный ReferenceError).
  • Кастомная очередь Bull с Redis pub/sub (util/queue.js) — то же, что и в Restaurant chain (UZ)Bot: межпроцессная отмена выполняющихся джоб (общий инфра-паттерн семейства).
  • APM-инструментирование (@inspector-apm/inspector-nodejs) — продакшн-мониторинг производительности бота.
§05

AI-разработка

  • Найдено сессий: 1 (в локальной директории сессий Claude Code, 0f95e959-...jsonl, ~3.2 MB).
  • Что сделано с AI: сэмпл первого промпта — «commit and push» (минимальный ручной ввод); реальные AI-правки видны в коммитах с Co-Authored-By: Claude Opus 4.7 (1M context): стоп-лист на уровне варианта (f241cf3), логирование отправки/удаления сообщений, рефакторинг env-конфига (5880f35).
  • Паттерны AI-воркфлоу: использование Claude Code для точечных багфиксов и рефакторинга внутри большого legacy-файла (menu/index.js, 2.7k+ строк), с чистыми conventional-commit сообщениями, сгенерированными AI. Делегирование рутины («commit and push»).
  • В отличие от alfaclean — здесь AI применялся прицельно на legacy-коде, а не для greenfield-архитектуры.
§06

Достижения и метрики

  • Реальный продакшн-бот для сети пиццерий Restaurant chain (UZ); 3 языка; интеграция с Laravel API/MongoDB/Redis/Sentry/APM.
  • 174 пользовательских коммита из 317 за ~5 лет — долгоживущий продукт.
  • menu/index.js >2755 строк — крупнейший контроллер; богатая доменная логика (модификаторы, half-products, стоп-листы, промоакции).
  • Точных бизнес-метрик в коде нет.
§07

Контрибьюторы

git shortlog · все ветки

  1. Dave93202
  2. shahzodsalimsakov96
  3. root10
  4. Boburt8
  5. i76717571
5 контрибьюторов317 коммитов всего
Сейчас

Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.

Связаться