§01
Обзор
- Что это: Telegram-бот для заказа и доставки еды для Restaurant chain (UZ) (и Restaurant chain (UZ) — общий код). Полный диалоговый флоу заказа на сценах Telegraf, REST API на Elysia для внешних триггеров (уведомления/локации/расписание), очереди задач, многоязычный UI.
- Тип / статус / роль: bot · maintained (последний коммит 2025-07-10) · lead — пользователь основной автор: ~139 из 265 коммитов (Davron Yuldashev 59 + Davron 37 + Davr 34 + Davr@iMac 6 + Dave93 3); со-разработчики — братья Салим (shahaa 78 + Shahzod 10) и другие.
- Период активности: 2021-12-08 → 2025-07-10 — ~3.5 года, долгоживущий продакшн-бот.
§02
Стек
- Языки: TypeScript (новый код,
src/) + JavaScript (легаси,controllers/) — гибридная кодовая база в процессе миграции на TS. - Фреймворки/библиотеки: Bun (рантайм); Telegraf 4 + сцены (
telegraf-i18n,@telegraf/session,telegraf-session-redis/-local); Elysia.js (API + Swagger + CORS + Eden); MongoDB (драйвер 4); Redis (ioredis) для сессий; очереди Bull + BullMQ (+ bull-board); Sentry (трейсинг ошибок); prom-client / express-prometheus-middleware (метрики Prometheus); генерация штрих-кодов (bwip-js, canvas, bardcode); планировщики (node-cron, agenda, sfn-scheduler); luxon; winston; cheerio; string-similarity. - Инфра/деплой: PM2 (
pm2.config.js), webhook-режим в проде, сборка черезbun build --target bun. Три lock-файла (bun/yarn/npm). - Данные: MongoDB (
lesailes_bot), Redis (сессии + очереди), внешний APIapi.restaurant-chain.uz. - Заметный тулинг: скрипты миграции/инспекции Redis-сессий (
scripts/*.cjs), эндпоинты health/queue_info.
§03
Что реализовано
139 авторских коммитов за 3.5 года (по диффам/сообщениям):
- Диалоговый флоу заказа: сцены
start,startOrder,menu,myOrders,review,settings,callback(src/scenes/); рефакторинг myOrders на TS (06346a2, −1197 удаление легаси-хелперов;3ac66eeуправление флоу + сброс сессии по/start). - Бизнес-логика доставки: расчёт стоимости доставки (
d653fcd,f3d5a1b), вес (02eef03), типы оплаты (85824d1), самовывоз (35829c8), фиксы ценообразования (4117fdd). - API: reply-to-message (
a1cff3d), schedule_event/send_notify/send_location/queue_info/health (Elysia). - Зрелость инфраструктуры: переход на Redis-сессии (отдельный README_REDIS_SESSIONS.md + скрипты миграции), очереди Bull, метрики Prometheus, Sentry, i18n на 3 языка.
- Рефакторинг 2025-07: миграция JS→TS, улучшенная обработка ошибок и импортов (
697379a), серверный бинарник вынесен в .gitignore. - Масштаб: 265 коммитов; стабильная многолетняя эволюция (v2.0.0).
§04
Технические челленджи
По архитектуре (CLAUDE.md/package.json) и диффам (авторство пользователя — основной коммиттер):
- Адаптивное хранилище сессий (LocalSession в dev → Redis в проде, fallback на in-memory при падении Redis; скрипты миграции JS→Redis). → Продакшн-управление состоянием диалогов на масштабе.
- Очереди задач (Bull/BullMQ + bull-board) для отложенных уведомлений/рассылок (
schedule_event,send_notify) — отделение бота от фоновой обработки. → Архитектура на очередях. - Observability: метрики Prometheus (prom-client) + трейсинг Sentry в Telegram-боте — уровень зрелости, нечастый для ботов.
- Гибридная миграция JS→TS на живом продакшн-боте без переписывания с нуля (сцены постепенно переезжают в
src/scenes/). → Управление техдолгом. - i18n на 3 языка через telegraf-i18n с хранением языка в сессии; генерация штрих-кодов для заказов (bwip-js/canvas).
- Оговорка: по CLAUDE.md «ошибки часто проглатываются», тестов нет — типичный продакшн-бот с техдолгом.
- Совпадает с известным опытом пользователя: Telegraf Scenes/WizardScene, Bull+Redis, MongoDB, i18n.
§05
AI-разработка
- Найдено сессий: 0 (директория сессий Claude Code для этого проекта отсутствует; проверено через нормализацию полного пути). Локальные
.claude/+CLAUDE.md(на русском) присутствуют → AI-ассистирование вероятно было, но сессии здесь не записаны. - Что делалось с AI: транскриптов нет; CLAUDE.md структурирован под Claude Code.
- Паттерны AI-воркфлоу: документация структурирована под AI, но прямых сессий в этой директории нет.
§06
Достижения и метрики
- Продакшн Telegram-бот для крупного бренда доставки (Restaurant chain (UZ)/Restaurant chain (UZ)), v2.0.0, ~3.5 года в эксплуатации.
- 7 диалоговых сцен, REST API, очереди, метрики, 3 языка, Redis-сессии.