§01
Umumiy ko'rinish
- Bu nima: Restaurant chain (UZ) pitseriyalar tarmog'i (choparpizza.uz) uchun ko'p tilli (ru/uz/en) Telegram e-commerce boti. Menyu/savat, yetkazib berish/olib ketish, terminal tanlash, stop-listlar, avtorizatsiya, sharhlar, ommaviy tarqatmalar. Tashqi Laravel API (
api.choparpizza.uzuslubidagi) uchun frontend. Restaurant chain (UZ)Bot bilan bir xil repo egasi (ShahzodSalimsakov) va arxitektura. - Turi / holati / roli: bot / maintained / contributor (2–3 dasturchi; foydalanuvchida 317 dan 174 ta kommit, ~55%).
- Faol davri: 2021-07-31 → 2026-05-18, ~5 yil. Tirik: 2025–2026 yillar toza conventional-commits bilan yangi imkoniyatlar to'lqinini ko'rsatadi (ba'zilari — Claude bilan).
§02
Stek
- Tillar: JavaScript (Node.js, CommonJS). TypeScript faqat devDeps ichida (ishlatilmagan).
- Freymvorklar/kutubxonalar: Telegraf 4.15 (Restaurant chain (UZ)Bot'ning 4.4'idan yangiroq; Scenes/WizardScene), telegraf-i18n (ru/uz/en), Fastify 3 + fastify-telegraf, Bull 4 + @bull-board, ioredis, luxon, hashids, bwip-js/canvas (shtrix-kodlar), axios.
- Infra/deploy: PM2, Sentry, @inspector-apm/inspector-nodejs (APM monitoring — Restaurant chain (UZ)Bot'dan yagona sezilarli bog'liqlik farqi), choparpizza.uz / Contabo server. Bun (
bun.lockbmavjud) + yarn.lock — package manager migratsiyasi. - Ma'lumotlar: MongoDB (sessiyalar +
event_systemskolleksiyasi), Redis (Bull + pub/sub). - E'tiborga molik tooling: agenda/node-cron/sfn-scheduler (qisman legacy/komment qilingan).
§03
Nima qilindi
Erta tarix — axlat xabarlar ("asd", "dsd", "fix"); 2025 yildan boshlab — toza conventional commitlar (ba'zilari Claude tomonidan generatsiya qilingan).
- Menyu/savat —
controllers/menu/index.js>2755 satr (Restaurant chain (UZ)Bot'nikidan kattaroq): pagination, savat, modifikatorlar, half-productlar, aksiyalar (threeSaleProducts,8246873). - Terminal bo'yicha stop-listlar —
f241cf3 fix: Enforce stop-list check on product variants+b0697e4(bloklanganda answerCbQuery). - Rejalashtirilgan tarqatmalar —
bot.js+util/queue.js: Bull cron joblari, API'ga progress hisoboti, xabarlarni o'chirish;cb9c9f3 feat: endpoint to remove scheduled events from MongoDB,0dac3ce feat: Emit 'removed' event on job removal. - javob bilan send_notify —
30928f3 refactor: Add support for replying to a message. - Biznes yangilanishlari: shaharlar (
94653c7 trying to fix cities issue), yopilish vaqti, yetkazib berish matni. - Yakuniy refactor (`5880f35`, 2026-05-18):
/api/configs/publicstatik env config bilan almashtirildi (Restaurant chain (UZ)Bot'dagi xuddi shu refactor — ikkala botga umumiy yangilanish). - Hajm: ~5 yil davomida 317 ta kommit, 174 tasi foydalanuvchidan. Faollik to'lqinlar bilan; yaqinda AI yordamida qayta jonlantirildi.
§04
Texnik chellenjlar
- Variant/modifikator darajasidagi stop-list (
controllers/menu/index.js,addToCart, kommitf241cf3): avval faqat ota mahsulot ID'si tekshirilardi → sotuvda yo'q pitsa o'lchamlari (40 sm) savatga tushib qolardi. Yechim: GETterminals/get_stock?terminal_id=...,[selectedProdId, rightProduct.id, ...selectedModifiers.map(id)]danblockedIdstuziladi, stop-list bilan kesishuv tekshiriladi,productIsNotInStockbilan bloklanadi. → Domen mantig'idagi haqiqiy produkshn bag; tekshiruvni barcha mahsulot komponentlariga to'g'ri kengaytirish. - Rejalashtirilgan xabarlarni MongoDB'dan o'chirish (
bot.js,cb9c9f3):/api/schedule_event/remove_within_mongoendpointi —event_systemsbo'ylabjobIdbo'yicha kursor,bot.telegram.deleteMessage(chatId, message_id)+ hujjatni o'chirish, har bir xabar uchun batafsil logging va try/catch. → Tarqatma holatini boshqarish (bag ham bor:queueJob.idga o'z scope'idan tashqarida murojaat — potentsial ReferenceError). - Redis pub/sub bilan maxsus Bull queue (
util/queue.js) — Restaurant chain (UZ)Bot'dagidek: ishlayotgan joblarni jarayonlararo bekor qilish (oiladagi umumiy infra pattern). - APM instrumentatsiyasi (
@inspector-apm/inspector-nodejs) — botning produkshn unumdorligini monitoring qilish.
§05
AI yordamida ishlab chiqish
- Topilgan sessiyalar: 1 (lokal Claude Code sessiyalar katalogida,
0f95e959-...jsonl, ~3.2 MB). - AI bilan nima qilingan: birinchi promptning namunasi — "commit and push" (minimal qo'lda kiritish); haqiqiy AI o'zgartirishlari
Co-Authored-By: Claude Opus 4.7 (1M context)bo'lgan kommitlarda ko'rinadi: variant darajasidagi stop-list (f241cf3), xabarlarni yuborish/o'chirish uchun logging, env-config refactor (5880f35). - AI-vorkflow patternlari: katta legacy fayl (menu/index.js, 2.7k+ satr) ichida maqsadli bagfikslar va refactoring uchun Claude Code'dan foydalanish, AI tomonidan generatsiya qilingan toza conventional-commit xabarlari bilan. Rutinani delegatsiya qilish ("commit and push").
- alfaclean'dan farqli o'laroq — bu yerda AI greenfield arxitektura uchun emas, balki legacy kodda aniq maqsad bilan ishlatilgan.
§06
Yutuqlar va metrikalar
- Haqiqiy produkshn bot Restaurant chain (UZ) pitseriyalar tarmog'i uchun; 3 til; Laravel API/MongoDB/Redis/Sentry/APM bilan integratsiya.
- 174 ta foydalanuvchi kommiti ~5 yil davomidagi 317 tadan — uzoq umr ko'rgan mahsulot.
- menu/index.js >2755 satr — eng katta kontroller; boy domen mantig'i (modifikatorlar, half-productlar, stop-listlar, aksiyalar).
- Kodda aniq biznes metrikalar yo'q.