Menyu importi va API
Menyuni Excel, CSV yoki JSON fayldan to‘ldirish, rasmlarni fayl nomi bo‘yicha biriktirish, matnlarni SI bilan yozish va menyuni o‘z dasturlaringizdan API va MCP orqali yuklash.
Menyuni har bir taomni alohida emas, birdaniga to‘ldirish mumkin: Excel, CSV yoki JSON jadvalidan. Import har bir taomni r_keeperda topadi, nima o‘zgarishini ko‘rsatadi va faqat «Qo‘llash» tugmasidan keyin yozadi. Narxlar va menyu tarkibi avvalgidek r_keeperdan olinadi, import faqat bezakni o‘zgartiradi: uch tildagi nomlar, tavsiflar, tarkib, kategoriyalar, belgilar va rasmlar.
Admin paneldagi import
- Menyu admin panelini oching, Menyu → Menyu importi bo‘limi. U restoran serveri admin panelida ham, bulutli admin panelda ham bor.
- «Shablon / joriy menyuni yuklab olish» tugmasini bosing. r_keeperdagi barcha taomlar va allaqachon to‘ldirilganlar bilan Excel fayl yuklanadi. Bu ham shablon, ham zaxira nusxa.
- Kerakli kataklarni to‘ldiring va faylni «Faylni yuklash» tugmasi bilan yuklang. Bo‘sh kataklar hech narsani o‘zgartirmaydi.
- Tekshiruvni ko‘ring: har bir qator uchun qaysi r_keeper taomi topilgani, nima o‘zgarishi va izohlar ko‘rinadi. Xatoli qatorlar yozilmaydi.
- «Qo‘llash» ni bosing. O‘zgarishlar planshetlarga va QR-menyuga navbatdagi sinxronlashda yetib boradi.
Ustunlar
| Ustun | Bu nima |
|---|---|
| sifr | Taomning r_keeperdagi identifikatori. Taomni topishning eng aniq usuli |
| Код | Taomning r_keeperdagi kodi |
| Код/sifr | Ikkalasi uchun bitta ustun: avval sifr, keyin kod bo‘yicha qidiramiz |
| Название r_keeper | Kassadagi nomi. sifr va kod bo‘lmasa, taom shu nom bo‘yicha qidiriladi (registrga qaramay) |
| Название RU, UZ, EN | Har bir tildagi menyu nomi |
| Описание RU, UZ, EN | Qisqa tavsif |
| Состав RU, UZ, EN | Vergul bilan tarkib |
| Категория | Menyu bo‘limining nomi. Bunday bo‘lim bo‘lmasa, u yaratiladi |
| Метки | spicy, veg, halal, new, hit vergul bilan |
| Скрыто | Taomni ko‘rsatmaslik uchun 1 |
| Фото (URL) | Rasm havolalari probel bilan |
Ikkinchi «Разделы» varag‘i (ixtiyoriy) bo‘limlarni belgilaydi: uch tildagi nom, ota bo‘lim, tartib, bo‘lim yashirinmi.
Sarlavhalarni o‘zbekcha ham yozish mumkin: «Nomi UZ», «Tavsif UZ», «Tarkibi UZ», «Kategoriya», «Rasm».
Rasmlar
- Fayllar. «Rasm qo‘shish» va «Rasmlar papkasi» tugmalari rasmlarni taomlarga fayl nomi bo‘yicha biriktiradi:
Плов.jpg(nomi),101.jpg(kod),Плов (2).jpg(o‘sha taomning ikkinchi rasmi). Fayllardagi rasmlar avval yuklanganlarga qo‘shiladi. - Havolalar. «Фото (URL)» ustunidagi havolalar taom rasmlarini almashtiradi. Brauzer rasmni o‘zi yuklaydi, sayt ruxsat bermasa, uni server yuklaydi.
- Barcha rasmlar brauzerda qo‘lda yuklashdagidek siqiladi: to‘liq rasm 1280 px gacha va ro‘yxatlar uchun 420 px kichik nusxa. O‘lcham bo‘yicha cheklov yo‘q.
SI bilan matnlar
Restoraningiz uchun SI ulangan bo‘lsa, importda va «Taomlar» sahifasida «SI bilan to‘ldirish» tugmasi bor. SI r_keeperdagi taom nomi, bo‘limi va narxi bo‘yicha rus, o‘zbek va ingliz tillarida nom, qisqa tavsif va tarkib yozadi. Matn bir tilda allaqachon bo‘lsa, SI uni tarjima qiladi. «To‘ldirilgan maydonlarni qayta yozish» belgilanmaguncha to‘ldirilgan maydonlar o‘zgarmaydi. Har bir taklifni saqlashdan oldin tuzatish yoki belgini olib tashlash mumkin. SI ni SBG qo‘llab-quvvatlash xizmati ulaydi, kunlik taomlar limiti bor.
O‘z dasturlaringiz uchun API
Xuddi shu import kabinetdagi shaxsiy kalit bilan dasturlarga ham ochiq (kalitlar haqida: White Server va AI). Kalit Bearer-token sifatida ishlaydi. Egasi roli kerak: menejer kaliti rad javobini oladi.
curl -X POST https://rkpr.uz/api/r/<restoran id>/menu/batch \
-H "Authorization: Bearer <kalit>" -H "Content-Type: application/json" \
-d '{
"dryRun": true,
"categories": [{ "name_ru": "Супы", "name_uz": "Sho‘rvalar", "name_en": "Soups" }],
"products": [
{ "rk7_sifr": 1001, "name_uz": "Toshkent palovi", "category": "Супы", "tags": ["hit"] },
{ "code": 102, "description_ru": "Тянутая лапша с говядиной", "images": ["https://example.com/lagman.jpg"] },
{ "name": "Самса", "name_en": "Samsa" }
]
}'
Javob: har bir qator bo‘yicha hisobot.
{
"dryRun": true, "ok": false,
"summary": { "categories": { "create": 1, "update": 0, "unchanged": 0, "error": 0 },
"products": { "create": 1, "update": 1, "unchanged": 0, "error": 1 },
"images": { "stored": 0, "reused": 0, "download": 1, "skipped": 0 } },
"categories": [{ "index": 0, "input": "Супы", "action": "create", "changes": ["name_ru", "name_uz", "name_en"], "warnings": [] }],
"products": [
{ "index": 0, "input": "1001", "rk7_sifr": 1001, "rk7_name": "Плов", "matchedBy": "sifr", "action": "create", "changes": ["name_uz", "tags", "category_id", "name_ru"], "warnings": [] },
{ "index": 1, "input": "102", "rk7_sifr": 1002, "rk7_name": "Лагман", "matchedBy": "code", "action": "update", "changes": ["description_ru", "images"], "warnings": [] },
{ "index": 2, "input": "Самса", "action": "error", "error": "название «Самса» подходит к нескольким блюдам r_keeper: Самса (sifr 13), Самса (sifr 14). Укажите rk7_sifr", "warnings": [] }
]
}
Qoidalar:
- Taomni qidirish:
rk7_sifr, keyincode, keyin aniqname, keyin registrga qaramayname. Nom bir nechta taomga mos kelsa, qator xato bilan qaytadi. - Bo‘limni qidirish:
id, keyinrk7_sifr, keyin registrga qaramayname_ru. Topilmasa, yaratiladi.parentvacategorynom yoki id qabul qiladi. - Faqat yuborilgan maydonlar o‘zgaradi. Bo‘sh satr maydonni tozalaydi.
imagestaom rasmlari ro‘yxatini almashtiradi. - Rasmlar:
http(s)havola (bulut 15 soniyada 10 MB gacha yuklaydi, tur mazmuni bo‘yicha tekshiriladi: JPEG, PNG yoki WebP),data:image/...;base64,...yoki allaqachon yuklangan rasm xeshi. Bulut rasmlarni siqmaydi, shuning uchun 1,5 MB dan katta rasm saqlanmaydi, hisobotda ogohlantirish bo‘ladi. Katta rasmlarni admin panel orqali yuklang, u yerda ular siqiladi. Butun so‘rov 6 MB dan oshmasin. - dryRun: true faqat tekshiradi va hech narsa yozmaydi. Rasm havolalari bunda yuklanmaydi.
- O‘zgarishlar restoran serveri va planshetlarga oddiy sinxronlash bilan yetib boradi.
Joriy menyuni xuddi shu formatda yuklab olish (yuklab olib, tuzatib, qayta yuborish qulay):
curl -H "Authorization: Bearer <kalit>" https://rkpr.uz/api/r/<restoran id>/menu/export
Javob kodlari: 401 kalit yo‘q yoki noto‘g‘ri, 403 restoran sizniki emas yoki sizda menejer roli, 400 bo‘sh so‘rov.
MCP
Kabinetning MCP serverida xuddi shu formatdagi menu_export va menu_batch vositalari bor. AI-yordamchi, masalan, menyuni o‘qib, tavsiflar yozib, ularni yuklashi mumkin: avval dryRun: true bilan, keyin sizning tasdig‘ingiz bilan.