§01
Umumiy ko'rinish
- Bu nima: Restoran tarmogʻi uchun koʻp tilli (ru/uz/en) Telegram e-commerce boti. Foydalanuvchi buyurtma beradi (yetkazib berish yoki olib ketish), filialni tanlaydi, OTP orqali avtorizatsiyadan oʻtadi, oʻz buyurtmalarini koʻradi, keshbek shtrix-kodini oladi va sharh qoldiradi. Bot tashqi Laravel API (
api.restaurant-chain.uz) uchun frontend vazifasini bajaradi; katalogni oʻzida saqlamaydi, balki soʻrovlarni proksi qiladi va orkestrlaydi. - Turi / holati / roli: bot / maintained / contributor (repozitoriy
ShahzodSalimsakovga tegishli; foydalanuvchi 2–3 asosiy dasturchidan biri, kommitlarning ~50%i). - Faol davri: birinchi kommit 2021-12-08, oxirgisi 2026-05-18. Uzoq umr koʻrgan ishchi loyiha: oʻzgartirishlar biznes talablariga qarab toʻlqin-toʻlqin keladi (yetkazib berish narxlari, toʻlov turlari, keshbekni yoqish/oʻchirish).
§02
Stek
- Tillar: JavaScript (Node.js, CommonJS). TypeScript faqat devDependencies ichida — amalda ishlatilmaydi (manba fayllar
.js). - Freymvorklar/kutubxonalar: Telegraf 4 (Scenes / WizardScene + Composer dialog holatlari mashinasi sifatida), telegraf-i18n (ru/uz/en), Fastify 3 + fastify-telegraf (webhook), Bull 4 + @bull-board (navbatlar va admin UI), ioredis, luxon (sana/vaqt mintaqalari), hashids (tg_id obfuskatsiyasi), bwip-js / barcode (shtrix-kod generatsiyasi), axios, lodash.
- Infra/deploy: PM2 (
pm2.config.js, ilovales_bot), webhookhttps://newbot.restaurant-chain.uz, Sentry (@sentry/node), Contabo serveri (vmi849112.contaboserver.net/choparpizza.uz). Dev — polling + lokal sessiya. - Ma'lumotlar: MongoDB (sessiyalar uchun telegraf-session-mongodb, yuborilgan xabarlarni kuzatish uchun
event_systemskolleksiyasi), Redis (Bull broadcast navbati + pub/sub). - E'tiborga molik tooling: agenda (planlashtiruvchi, kodda oʻchirilgan), node-cron / sfn-scheduler / cron-converter (qisman kommentga olingan — broadcast planlashtirish ustidagi iteratsiyalar izlari).
§03
Nima qilindi
Foydalanuvchining kommit xabarlari koʻpincha ma'nosiz ("asd", "asdf", "dsds", "sdsd"), shu sababli bosqichlar kommit matni emas, balki diff va koddan tiklandi.
- Buyurtma oqimi (yetkazib berish/olib ketish) —
controllers/startOrder: WizardScene bosqichlari manzil → bino → podyezd, API orqali geokodlash, eng yaqin terminalni topish, filial tanlash. - Filial ish soatlarini hisoblash —
startOrder/index.js(luxon), jumladan tunga oʻtuvchi smenalar va ish kuni/dam olish kuni mantiqini oʻz ichiga oladi. - Menyu va savat —
controllers/menu/index.js(~79 KB, botning yadrosi): kategoriyalar paginatsiyasi, savat, OTP avtorizatsiya, minimal buyurtma summasi. - Shtrix-kodli keshbek —
controllers/cashback: telefon raqamidan code128 generatsiyasi (bwip-js), chatga PNG yuboriladi. - Ommaviy xabarlar (broadcast) —
bot.js+util/queue.js: takrorlanuvchi cron ishlari bilan Bull navbati, progress Laravel API'ga qaytarib xabar qilinadi, faol ishlarni Redis pub/sub orqali bekor qilish. - Biznes yangilanishlari: yetkazib berish narxlari/ogʻirliklari (
d653fcd,f3d5a1b,02eef03), toʻlov turlari (85824d1,4d1d9f5 removed payment type uzcard,03fbbb5 turn off payment links), keshbekni yoqish/oʻchirish (1373664 cashback disabled,232b9b9), tillar/lokallar. - Oxirgi bosqich (`b4f848f`, 2026-05-18): toza refaktoring —
/api/configs/publicruntime fetchi (base64 dekod bilan) env'dan olinadigan statikutil/config.jsbilan almashtirildi. Bu — inson oʻqiy oladigan tavsif va Co-Authored-By: Claude Opus 4.7 bilan yagona kommit. - Hajm: jami 257 kommit, shundan 129tasi foydalanuvchiniki (Davron Yuldashev
yul.davron.93@gmail.com, taxalluslari Davron/Davr/Dave93), ~4.5 yil davomida. Muallif-hamkorlar:shahaa(Shahzod Salimsakov, egasi, 89 kommit),root(deploy).
§04
Texnik chellenjlar
- Jarayonlararo ish bekor qilish bilan maxsus Bull navbati (
util/queue.js):ExtendedQueue extends Queue+ExtendedJob, faol ish promise'larini kuzatish, Redis pub/sub (getInternalEventEmitter) orqali bekor qilish — sandbox jarayoni cheklovini aylanib oʻtish uchun Bull GitHub issue'lariga (#1056/#1067) toʻgʻridan-toʻgʻri havola asos qilib keltiriladi. → Taqsimlangan vazifalarni qayta ishlash va navbat qatlamidagi infratuzilma darajasidagi yechimlarni tushunishni koʻrsatadi. Repozitoriydagi eng nozik kod boʻlagi. - Backpressure hisoboti bilan broadcast (
bot.jssendQueue.process):tg_idlar roʻyxati boʻyicha ketma-ket yetkazib berish, har bir qadamda ish holatini tekshirish (uchma-uchid bekor qilish), har 50 xabarda progressni API'ga POST qilish,removedhodisasida yuborilgan xabarlarnievent_systemskolleksiyasi orqali oʻchirish. → Telegram rate-limitlari va broadcast holatini real hayotda boshqarish. - Yarim tunni kesib oʻtuvchi filial ish soatlari mantiqi (
startOrder/index.js:169–234, luxon): joriy vaqtni ochilish/yopilish bilan solishtirish,close.hour < open.hourboʻlganda kun tuzatish (tunga oʻtuvchi smenalar), ish kunlari/dam olish kunlari uchun alohida tarmoqlar. → Sana/vaqt mintaqalarining (Asia/Tashkent) chegara holatlarini puxta ishlash. - OTP avtorizatsiya (
menu/index.js):tg_idni hashids bilan kodlash, bearer tokenni yigʻish (base64 OTP_TOKEN + tasodifiy salt → hex), kodni qayta yuborish. → Backend soʻrovlari uchun maxsus imzolash sxemasi. - `b4f848f` refaktoringi (
util/config.js):parsePositiveInttarixiy xatti-harakatni saqlab qoladi (NaN boʻlganda fallback 0, aniq kommentariya bilan). → Loyihadagi toza, oʻylab qilingan kodning kamdan-kam uchraydigan namunasi.
§05
AI yordamida ishlab chiqish
- Topilgan sessiyalar: 0 (bu loyiha uchun lokal Claude Code sessiyalari katalogi yoʻq).
- AI bilan nima qilingan: bilvosita iz — oxirgi kommit
b4f848fCo-Authored-By: Claude Opus 4.7 (1M context)deb belgilangan. Bu — repozitoriydagi yagona toza, hujjatlashtirilgan kommit (config refaktoringi) boʻlib, u qolgan tarixdan keskin farq qiladi va legacy kodni tozalash uchun AI'dan bir martalik foydalanilganiga ishora qiladi. - AI-vorkflow patternlari: xulosa chiqarish uchun ma'lumot yetarli emas (bitta ma'lumot nuqtasi).
- Bu loyiha uchun toʻliq Claude Code sessiyalari mavjud emas.
§06
Yutuqlar va metrikalar
- Real ishlab chiqarish mahsuloti: faol ovqat yetkazib berish tarmogʻi uchun bot (
newbot.restaurant-chain.uz), 3 ta interfeys tili, Laravel API, MongoDB, Redis, Sentry, PM2 bilan integratsiya. - 129 foydalanuvchi kommiti ~4.5 yillik texnik xizmat davomida (2021–2026) — prototip emas, uzoq umr koʻrgan mahsulot.
- Funksionallik: yetkazib berish/olib ketish buyurtmasi, geokodlash, eng yaqin terminalni topish, OTP avtorizatsiya, keshbek shtrix-kodi, sharhlar, progress bilan rejalashtirilgan ommaviy xabarlar.
- Kodda aniq biznes metrikalari (DAU, buyurtmalar soni) yoʻq.