RRestoria
Ochiq jurnal

Restoria tizimini rivojlantirish hisoboti

Sayt, CRM, botlar va integratsiyalarda bajarilgan ishlar shu sahifada qadam-baqadam va doimiy saqlanadi.

Oxirgi yangilanish: Yozuvlar: 36
CRM interfeysi

Sidebar scrolli, yig‘iladigan menyu va fluid CRM layout ishga tushdi

Bajarildi

CRM sidebarida endi yuqori va pastki bloklar joyida qoladi, menyuning o‘zi mustaqil scroll qiladi va aktiv band avtomatik ko‘rinadi. Desktopda menyu ikonkalargacha yig‘iladi, holati eslab qolinadi; planshetda to‘liq drawer ochiladi. Dashboard va jadvallar 1600px gacha barcha mavjud kenglikni egallaydi.

  • Sidebar scrollbar 6px: oddiy holatda yashirin, menyu hoverida 18% oq va thumb hoverida 30%
  • Ochiq yuzalarda 15% qora native scrollbar; jadval, board va stepper gorizontal scrolllari 6px
  • 232px menyu 72px icon rejimiga yig‘iladi, label yashirinadi, tooltip va localStorage saqlanadi
  • Pastki RESTORIA CRM bloki qotirilgan, faqat nav scroll qiladi va aktiv Sozlamalar bandi avtomatik ko‘rinadi
  • Content 24px yon padding bilan fluid, faqat juda keng ekranda 1600px maksimumga ega
  • 1280/1440/1920 desktop va 900px planshetda dashboard/jadval kengligi hamda horizontal overflow tekshirildi
  • CRM production build va local/production read-only browser acceptance 34/34 muvaffaqiyatli
Sayt, CRM va Staff ilovasi

Barcha telefon maydonlari yagona +998 formatiga o‘tkazildi

Bajarildi

Sayt va CRM endi bitta umumiy PhoneInput’dan foydalanadi, Staff ilovasida esa ayni qoidali native komponent bor. Prefiks o‘chmaydi, foydalanuvchi 9 raqamni kiritadi, turli paste formatlari +998XXXXXXXXX ko‘rinishiga keladi va to‘liq bo‘lmagan telefon yuborilmaydi. Yangi signed Staff APK ham chop etildi.

  • Saytdagi callback, quiz va foto-baho formalarining barchasi tuzatildi
  • CRM login, buyurtma, mijoz, lid, qo‘ng‘iroq, usta, kuryer, filial, xodim, chat va Sozlamalardagi telefonlar shared komponentda
  • +998, 998, lokal 9 raqam, bo‘shliq/qavs/chiziqli va 00998 formatlari normallashtiriladi
  • Majburiy bo‘sh va barcha qisman raqamlar submitni bloklaydi; hint RU/UZ
  • Kod auditi xom web/mobile telefon inputi qolmaganini tasdiqladi va kelajak regressiyasini CI’da bloklaydi
  • 53 backend suite/409 test, TypeScript 3/3, Flutter 4/4, analyze 0 issue, CRM/site build va audit 0 vulnerability
  • Production browser acceptance 24/24 va umumiy read-only acceptance 16/16 muvaffaqiyatli
  • Restoria Staff 1.0.4+5 signed APK productionga chiqarildi va SHA-256/download tekshirildi
CRM sozlamalari

Zamonaviy boshqaruv markazi va Telegram auto-lid nazorati ishga tushdi

Bajarildi

Sozlamalar endi qidiruvli yagona boshqaruv markazi: tashkilot va workflow, sayt, kanallar, shifrlangan integratsiyalar, AI, skriptlar, jamoa huquqlari, filiallar, katalog va ijrochilar bir joydan ochiladi. SUPERADMIN Telegram private-chatlari uchun auto-lidni audit bilan yoqib/o‘chiradi; standart va production holati OFF, guruhlar hamda tarix importi esa doim auto-lidsiz.

  • Production toggle aniq OFF qilib saqlandi va o‘zgarish auditga yozildi
  • Faqat yangi incoming private Telegram chat toggle ON bo‘lganda lid yaratishi mumkin
  • Telegram guruhi, outgoing xabar va tarix importi har qanday holatda lid yaratmaydi
  • 40/40 eski Telegram-import lid ARCHIVED, faol voronkada 0 va ma’lumot o‘chirilmagan
  • Settings UI 40 arxivlangan, 0 kutayotgan va tarix importi doim OFF ekanini real ko‘rsatadi
  • Qidiruv va 11 boshqaruv kartasi CRM imkoniyatlarini yagona katalogga birlashtiradi
  • 53 backend suite/409 test, backend/CRM build, audit 0 vulnerability muvaffaqiyatli
  • Production Settings browser acceptance 1440/1280/900 px, overflow va runtime-error 0
CRM chatlar va lidlar

Chatlardan auto-lid to‘xtatildi va real CRM messenger ishga tushdi

Bajarildi

Kiruvchi Telegram chatlari productionda auto-lid yaratmaydi, tarix importi esa doim bundan himoyalangan: lidni menejer chatdan aniq yaratadi, site/quiz va kuryer arizalari avvalgidek ishlaydi. CRM chatida real javob va fayl yuborish, AI draft, shablon, emoji, yetkazish holati, retry, ichki qidiruv, unread reset va responsive mijoz paneli mavjud. Chatdan buyurtma yaratilganda dialog mijozga atomik bog‘lanadi.

  • Kiruvchi va import xabari yangi lid yaratmaydi; “Lid yaratish” alohida boshqariladigan amal
  • 40 ta eski auto-lid CHAT_IMPORT sifatida belgilandi va audit bilan ARCHIVED qilindi; faol lid 0
  • Legacy CHAT_IMPORT lidlar buyurtma telefoniga yashirin avtomatik konvertatsiya qilinmaydi
  • Telegramga manager javobi va haqiqiy PNG yetdi; sending/delivered/failed hamda retry DBda saqlanadi
  • AI draft, Skript shablonlari, emoji, Enter/Shift+Enter va dialog ichidagi server qidiruvi ishlaydi
  • Unread dialog ochilganda nolga tushadi; nazoratli autoscroll va “oxirgi xabarlarga” tugmasi mavjud
  • O‘ng panel kesilmaydi; buyurtma, lid, mijoz kartasi va qo‘ng‘iroq tezkor amallari ko‘rinadi
  • Production Telegram→CRM→reply→attachment→AI→order oqimi 14/14, browser 1440/1280/900 va 53 suite/409 test muvaffaqiyatli
Mijoz Telegram-boti

Ikkinchi raqam, real kuryer chaqiruvi va sharhlar ishga tushdi

Bajarildi

Mijoz boti endi tasdiqlangan asosiy raqamdan keyin qo'shimcha telefonni taklif qiladi va buyurtmalarni barcha bog'langan raqamlar bo'yicha topadi. Kuryer chaqiruvi lokatsiya, sana, sozlamadagi vaqt oralig'i va izoh bilan haqiqiy CRM arizasi hamda marshrut nuqtasini yaratadi. Sharhlar 1–5 baho va matn bilan moderatsiyaga tushadi; eski vaqtinchalik tugmalar olib tashlandi.

  • Matndagi +998, 998, mahalliy 9 raqam va bo'shliqli format yagona +998XXXXXXXXX ko'rinishiga o'tadi
  • Mobil operator kodi tekshiriladi, tasdiqlangan ikkinchi raqam verified mijoz kanali sifatida saqlanadi
  • “Buyurtmalarim” eski dublikat client kartochkasida qolgan buyurtmani ham barcha bog'langan telefonlar orqali topadi
  • Buyurtma topilmasa va ikkinchi raqam bo'lmasa, bot ayni raqam qo'shish oqimini taklif qiladi
  • Kuryer uchun Telegram lokatsiyasi yoki qo'lda xarita nuqtasi, Bugun/Ertaga, 4 ta amaldagi slot va ixtiyoriy izoh ishlaydi
  • Noma'lum telefon uchun client va lead, pickup buyurtma, kuryer nuqtasi/vazifasi, manager bildirishnomasi va audit atomik yaratiladi
  • Route insertion mavjud algoritm bilan ishga tushadi; mijoz botning o'zidan sana va slot tasdig'ini oladi
  • 1–5 yulduzli matnli sharh CRM moderatsiyasiga public qilinmagan holatda tushadi
  • 51 backend suite/389 test, 27 focused test, snapshot restore, production read-only va Telegram getMe, izolyatsiyalangan compiled-API E2E 17/17 muvaffaqiyatli
Buyurtmalar va nazorat

Buyurtma statusini xavfsiz va nazoratli qaytarish ishga tushdi

Bajarildi

Administrator xato statusni endi oddiy bosish bilan emas, majburiy sabab va oqibatlar ko‘rigidan keyin qaytaradi. Tizim chek, usta hisoblamasi, ishlab chiqarish bosqichi, kuryer vazifasi va mijoz xabarini bitta nazoratli tranzaksiyada boshqaradi; har bir amal muallif va sabab bilan auditga yoziladi.

  • ADMIN va SUPERADMIN doim ruxsatli; MANAGER huquqini faqat tizim egasi alohida yoqadi
  • “Boshqa” sababi uchun matn majburiy, tasdiqdan oldin barcha oqibatlar RU/UZ ko‘rsatiladi
  • To‘lanmagan usta hisoblamasi “Kutilmoqda”ga qaytadi; to‘langan summa o‘zgarmaydi va avans markerini oladi
  • Chek bekor qilinmaydi, ishlab chiqarish fotosi saqlanadi va bosqich ayni ustaga qayta ochiladi
  • Kafolatli qaytarish alohida flag va mijoz uchun 0 narxli qayta ishlash yaratadi
  • Oddiy rollback mijozga xabar yubormaydi; kafolatli nuqson bundan yagona istisno
  • Buyurtma lentasida muallif, yo‘nalish va sabab “⟲” bilan ko‘rinadi; to‘liq audit yozuvi saqlanadi
  • 49 backend suite/362 test, izolyatsiyalangan DB+media restore, migration dry-run, production API va 1440px browser acceptance muvaffaqiyatli
Xavfsizlik va integratsiyalar

Integratsiya kalitlari shifrlangan markaziy saqlashga ko‘chirildi

Bajarildi

Botlar, Telegram, AI, Instagram va kelajakdagi tashqi providerlar uchun yagona secret boshqaruvi ishga tushirildi. Har bir qiymat alohida AES-256-GCM bilan shifrlanadi; brauzer faqat niqobni ko‘radi, qiymatning o‘zi esa log, audit yoki API javobiga chiqmaydi. Superadmin endi Sozlamalarda kalitni xavfsiz almashtirishi va ulanishni tekshirishi mumkin.

  • Amaldagi env va eski DB saqlash joylari qiymatlarni oshkor qilmasdan to‘liq inventarizatsiya qilindi
  • 10 ta amaldagi credential markaziy shifrlangan jadvalga ko‘chirildi; eski site, kanal va Telegram session plaintext qoldig‘i 0
  • Master key DB va Gitdan tashqaridagi cheklangan faylda; env faqat shu faylga havolani saqlaydi
  • Secret cache yangilash yoki o‘chirishda invalidatsiya qilinadi; migratsiya qayta ishlatilganda xavfsiz no-op
  • “Integratsiyalar va kalitlar” faqat SUPERADMIN uchun ochiq; sozlangan qiymatlar faqat ****1234 ko‘rinishida
  • ADMIN uchun secret API 403; Telegram API ID/hash, Instagram verify token va umumiy site-text javoblari ochiq qiymat bermaydi
  • Asosiy mijoz boti, xodimlar boti va Gemini bilan real connection test muvaffaqiyatli
  • 47 backend suite/350 test, barcha production buildlar, dependency audit 0, acceptance 19/19 va browser smoke 26/26 muvaffaqiyatli
Buyurtmalar va ishlab chiqarish

Ko‘p-buyumli buyurtma, alohida xizmatlar va har-buyumga foto ishga tushirildi

Bajarildi

Bitta buyurtmadagi har bir juft oyoq kiyim, sumka yoki boshqa jismoniy buyum endi mustaqil birlik sifatida yuritiladi. Qo‘lda qabul qilish va AI draft har bir buyumga o‘z xizmatlari, tavsifi va fotosini biriktiradi; buyurtma kartasida ruxsatga mos tahrirlash, jami va chegirmani qayta hisoblash, 1/N formatdagi birkalar hamda ishlab chiqarish bosqichida har bir buyum uchun majburiy ichki foto ishlaydi.

  • Qo‘lda qabul qilishda 50 tagacha jismoniy buyum qo‘shiladi; har bir buyumning o‘z katalog xizmatlari, tavsifi va narxi bor
  • AI draft jismoniy buyumlar sonini saqlaydi, “2 dona” kabi miqdorni alohida buyumlarga ajratadi va noaniq natijani inson tekshiruviga chiqaradi
  • Har bir xizmatning OrderItem bilan majburiy DB aloqasi, eski yozuvlar uchun backfill va buyurtma ichida noyob item pozitsiyasi migratsiya bilan joriy qilindi
  • Buyurtma kartasida mijoz, muddat, izoh, chegirma, buyum, foto va xizmatlar faqat tegishli permissionlar doirasida tahrirlanadi
  • Katalog narxi odatda canonical qiymatda qoladi; qo‘lda narx o‘zgartirish faqat price:override huquqi bilan ishlaydi
  • Buyum/xizmat o‘zgarishidan keyin jami, foizli chegirma, qoldiq va ortiqcha to‘lov qayta hisoblanadi
  • Boshlangan yoki yopilgan ishlab chiqarish bosqichidagi xizmatni xavfli o‘zgartirish va o‘chirish bloklanadi
  • Staff bot har bosqichdagi barcha buyumlar uchun alohida ichki foto talab qiladi va oxirgi foto yuklangach bosqichni yakunlaydi
  • PDF birkalarda buyum raqami 1/N ko‘rsatiladi; 9 buyumli buyurtma avtomatik ikki sahifaga joylanishi test bilan tasdiqlandi
  • Yakuniy tekshiruv: 44 backend suite va 332 test, barcha production buildlar, 48 jadval/1925 media restore, migratsiya dry-run hamda HTTPS acceptance 19/19 muvaffaqiyatli
Mobil ilova

Android APK ochilmasligi tuzatildi va 1.0.3 release e’lon qilindi

Jarayonda

Oldingi APK o‘rnatilgach ochilmasligining aniq sababi topildi: Android manifest ishga tushirgan launcher klassi bilan Kotlin package nomi bir-biriga mos emas edi. Canonical package tiklandi, yangi imzolangan release productionga chiqarildi va Android runtime’da toza o‘rnatish hamda launcher sinovidan o‘tdi. Egasi yangi versiyani jismoniy telefonida tasdiqlagach yozuv yakunlanadi.

  • Eski 1.0.2 (3) manifesti uz.restoria.staff.MainActivity ni chaqirgan, DEX klassi esa uz.restoria.restoria_staff paketida bo‘lgan; bu Android launcher klassni topa olmasligiga olib kelgan
  • MainActivity uz.restoria.staff canonical paketiga ko‘chirildi, manifest launcher klassni to‘liq nom bilan ko‘rsatadi
  • Release jarayoniga manifestdagi launcher va DEX ichidagi klass mosligini tekshiradigan fail-closed nazorat qo‘shildi
  • Flutter analyze va test muvaffaqiyatli; Restoria Staff 1.0.3 (4) release APK release kaliti bilan imzolandi va zipalign tekshiruvidan o‘tdi
  • APK application ID, version, min/target SDK, manifest launcher va DEX klassi statik tekshiruvdan muvaffaqiyatli o‘tdi
  • Android 15 runtime’da toza o‘rnatildi; LAUNCHER intent MainActivity ni ochdi, ilova processi va foreground activity tasdiqlandi, Flutter login oynasi chizildi
  • Logcat’da Restoria uchun FATAL EXCEPTION, ClassNotFoundException, Unable to instantiate activity yoki ANR topilmadi
  • Production metadata va download HTTP 200: restoria-staff-1.0.3-4.apk, 49 058 337 bayt; SHA-256 va fayl lokal release bilan baytma-bayt mos
  • Jismoniy telefon tekshiruvi ochiq: egasi CRM’dan aynan 1.0.3 (4) ni o‘rnatib, ochilishini tasdiqlaydi
Qo‘llanma va mobil ilova

Barcha xodimlar uchun rol qo‘llanmasi va doimiy APK havolasi yaratildi

Bajarildi

CRM’da barcha avtorizatsiyadan o‘tgan xodimlar uchun “Qo‘llanma va APK” bo‘limi yaratildi. Egasi va administrator barcha lavozimlarni tanlab ko‘radi, boshqa xodim esa o‘z roliga mos boshlash, kundalik jarayon va xavfsizlik qoidalarini ko‘radi. Shu bo‘limdan haqiqiy release key bilan imzolangan Restoria Staff APK’ning dolzarb versiyasi yuklanadi.

  • SUPERADMIN, ADMIN, MANAGER, RECEPTIONIST, MASTER_INTERNAL, MASTER_EXTERNAL, QC, COURIER va CASHIER uchun alohida RU/UZ qo‘llanma yozildi
  • Qo‘llanmalar real permission va mavjud CRM/mobile jarayonlariga mos: xodimga yopiq telefon, narx yoki tizim amali va’da qilinmaydi
  • Sahifa barcha JWT orqali kirgan xodimlarga biznes permissiondan mustaqil ochiq; adminlar barcha rolni tanlaydi, qolganlar faqat o‘z rolini ko‘radi
  • Qo‘llanmani brauzerdan chop etish yoki PDF sifatida saqlash rejimi qo‘shildi
  • Mobil Profilga “rolim bo‘yicha qo‘llanma”, “APK yangilanishini yuklash” va real package version ko‘rsatkichlari qo‘shildi
  • Qabul ekranidagi eski nomuvofiqlik tuzatildi: kamera fotosi endi huquq tekshiruvidan keyin BEFORE + INTERNAL sifatida saqlanadi va mijoz konturiga aralashmaydi
  • Foto yuklashda tarmoq uzilsa yaratilgan buyurtma takrorlanmaydi; ilova aniq ogohlantiradi, CRM buyurtma kartasida esa qabul fotosini qayta qo‘shish amali bor
  • Restoria Staff 1.0.2+3 release APK 48,723,453 bayt; apksigner orqali imzo tekshirildi va Android Debug imzosi qat’iy rad etiladi
  • APK metadata version, hajm, SHA-256, sana, Android minimumi va RU/UZ release note beradi; download 5/min rate limit va nosniff bilan ishlaydi
  • Manifest faqat canonical restoria-staff-x.y.z-code.apk nomi, mos version/size, oddiy fayl va symlinksiz qat’iy tekshiruvdan o‘tganda ochiladi
  • npm run release:mobile-apk kelgusida pub get, analyze, test, release build, imzo tekshiruvi va CRM fayl/manifestini atomik yangilashni bitta jarayonda bajaradi
  • Play Console uchun 1.0.2+3 release AAB ham 41.4 MB hajmda qayta build qilindi va release imzosi mavjudligi tekshirildi
  • 37 backend suite, 279/279 test, Flutter analyze/test, barcha production buildlar va npm production audit 0 muvaffaqiyatli
  • APKni ham qamragan yangi atomik snapshot: 343 DB obyekti va 12 media; retention oldingi shu kun snapshotini o‘chirib, 2 ta kerakli snapshotni saqladi
  • Production deploy yakunlandi: real HTTPS read-only acceptance 19/19, API/CRM/sayt/ikkala bot PM2’da online
  • Browser smoke 82/82: 8 ta faol rol akkaunti, ruxsat/taqiq chegaralari, owner selectoridagi barcha 9 rol qo‘llanmasi, ADMIN ko‘rinishi, APK tugmasi va public sahifalar tasdiqlandi
  • Production’dan APK to‘liq qayta yuklandi: Content-Type/filename/48,723,453 bayt va SHA-256 local release bilan aynan mos
Asosiy sayt kontenti

Tashqi stock media olib tashlandi, o‘z kontenti uchun ZIP-import yaratildi

Bajarildi

Egasi so‘roviga ko‘ra avvalgi Pexels foto va videosi bosh sahifadan hamda loyiha assetlaridan olib tashlandi. Ularning o‘rniga CRM sozlamalarida Restoria’ning o‘z foto va videolarini bitta ZIP orqali xavfsiz yuklash, ko‘rib chiqish, RU/UZ sarlavhasini va tartibini tahrirlash hamda har bir materialni alohida chop etish imkoniyati yaratildi.

  • Oldingi 6 ta stock foto, 1 ta video, poster va statik katalog kodi o‘chirildi; o‘z kontenti hali chop etilmagan bo‘lsa bo‘sh media bo‘limi va uning menyu havolasi ko‘rinmaydi
  • ZIP uchun 45 MB siqilgan hajm, 80 yozuv, 20 media, 80 MB ochilgan umumiy hajm va har bir foto/video uchun alohida limitlar qat’iy tekshiriladi
  • Absolyut yo‘l, ../ traversal, backslash, symlink, ortiqcha katalog chuqurligi, uzun nom, shifrlangan/buzilgan ZIP, ZIP-bomb va noma’lum formatlar rad etiladi
  • Oddiy rejimda JPEG, PNG, WebP, MP4 va WebM fayllarini ZIPga joylash kifoya; fayl nomidan xavfsiz RU/UZ sarlavha hosil qilinadi
  • Ixtiyoriy manifest.json orqali aniq RU/UZ sarlavha, izoh, tartib va video posteri beriladi; dublikat, mos kelmagan tur va manifestdan tashqari fayl import qilinmaydi
  • Rasmlar signatura va decode bo‘yicha tekshirilib, EXIFsiz va 2000 px chegaradagi WebPga qayta kodlanadi; video faqat haqiqiy MP4/WebM signaturasi bilan qabul qilinadi
  • Har bir import isPublished=false bilan yashirin yaratiladi; publik API faqat qo‘lda tasdiqlangan elementlarning xavfsiz fieldlarini va HTTPS media URLlarini beradi
  • Import DB yozuvlari va audit logi bitta transactionda saqlanadi; xato bo‘lsa yangi yozilgan barcha fayllar avtomatik tozalanadi
  • O‘zgartirish va o‘chirish settings.system huquqi bilan himoyalangan; o‘chirish faqat UUID nomli site-media fayllariga tegishi mumkin
  • Migratsiyadan oldin atomik snapshot olindi: 339 DB obyekti va 9 media; 16-migratsiya qo‘llandi, schema-diff natijasi nol
  • 36 backend suite, 275/275 test; backend, CRM va sayt production buildlari hamda npm production audit 0 muvaffaqiyatli
  • Birinchi production qabul sinovi public site-media allowlistidagi yetishmagan yo‘lni va testdagi avtomatik sarlavha taxminini aniqladi; yo‘l faqat public site-media uchun ochildi, vaqtinchalik test yozuvi va fayli to‘liq tozalandi
  • Yakuniy real HTTPS qabul sinovi 4/4: ZIP import, yashirin moderatsiya, qo‘lda publikatsiya, WebP 200, DB va fayl cleanup; sinovdan keyin site-media yozuv/fayl qoldig‘i 0/0
  • Read-only production acceptance 15/15 va SUPERADMIN/public browser smoke 24/24; API, CRM, sayt va ikkala bot PM2’da online
Asosiy sayt kontenti

Tarixiy yozuv: litsenziyalangan media qo‘shilgan edi, keyin olib tashlandi

Bajarildi

Bu yozuv 2026-07-21 kuni vaqtincha qo‘shilgan Pexels foto va videosining tarixini saqlaydi. Egasi keyingi topshirig‘ida tashqi kontentni olib tashlashni va o‘z materiallari uchun ZIP-import yaratishni so‘radi; assetlar va bo‘lim olib tashlandi, yangi natija yuqoridagi yozuvda qayd etilgan.

  • Tasodifiy sayt yoki Instagram kontenti ko‘chirilmadi: faqat qayta foydalanish shartlari aniq Pexels materiallari olindi
  • Manba sahifalari, mualliflar va Pexels litsenziyasi 2026-07-21 kuni tekshirildi va foydalanuvchiga ko‘rinadigan qilindi
  • Yuklangan fayllar JPEG/MP4 signaturasi bo‘yicha tekshirildi; rasmlar qayta kodlanib EXIF metadatasiz WebP formatiga o‘tkazildi
  • 6 ta WebP foto jami taxminan 731 KiB; video 4.2 MB va poster 24 KB — rasmlar lazy-load, video preload=metadata bilan ishlaydi
  • Media RU/UZ sarlavha, izoh va accessibility alt/aria matnlari bilan to‘ldirildi
  • Referens materiallar “Restoria real ishi” galereyasiga qo‘shilmadi; real oldin/keyin ishlar faqat CRM orqali chop etilishi saqlandi
  • Instagram fotosi yoki videosini ruxsatsiz rehost qilish taqiqlandi; keyinchalik faqat muallif ruxsati yoki rasmiy embed bilan qo‘shiladi
Xavfsizlik va RBAC

Bildirishnoma, buyurtma, integratsiya va vakolat chegaralari mustahkamlandi

Bajarildi

API va CRM bo‘yicha yakuniy yozish/ko‘rish auditi dashboard bildirishnomalari, buyurtma maxfiyligi, kuryer profili, xodim vakolati va Instagram public callbacklarida qo‘shimcha qat’iy chegaralarni aniqladi. Tuzatishlar faqat server permissioniga tayangan, UI esa mavjud huquqqa mos ravishda keraksiz action va so‘rovlarni yashiradigan qilib yakunlandi.

  • Notification API faqat DASHBOARD kanalini va recipient maydonisiz xavfsiz fieldlarni beradi; admin, manager va receptionist audience’lari ajratilgan
  • WebSocket notification matni tarqatilmaydi: faqat event kodi tegishli permission-roomga yuboriladi
  • CRM kolokoli dashboard.view bo‘lmasa ko‘rinmaydi va notification APIga so‘rov qilmaydi
  • Master faqat bevosita, stage yoki task orqali biriktirilgan buyurtmani; OTK esa faqat OTK task queue/history buyurtmalarini oladi
  • Master va OTK uchun mijoz telefon/kanal/manzil, delivery detail, payment va client-price fieldlari server javobida kesiladi
  • Order search, card, allowed transition, stage va event feed bir xil row-level tekshiruvdan foydalanadi; moliyaviy eventlar ruxsatsiz feedga kirmaydi
  • Excel eksport reports.finance, PDF hujjatlar receipts.print, payment-link orders.finance, katalog/prays oqimi price.view bilan bog‘landi
  • Order card ruxsatlar yuklangandan keyin ochiladi va faqat mos finance/status/assign/courier/payment/discount/document bloklarini ko‘rsatadi
  • Receptionist kuryer ro‘yxati va delivery arizasini ishlatadi; kuryer profilini yaratish/tahrirlash/deaktivatsiya routes.manage bilan cheklangan
  • Delivery nuqtasi DTO hamda service darajasida mavjud order, ISO sana, slot, coordinate, stage va faol kuryer bo‘yicha tekshiriladi; yakunlangan nuqta tahrirlanmaydi
  • Individual users.manage huquqi o‘zidan yuqori rol yoki permissionni bera olmaydi; SUPERADMIN va oxirgi faol ega invariantlari saqlanadi
  • Instagram POST webhook raw-body HMAC imzosiz yopiq; public manual/mock fallback olib tashlandi, OAuth state hash holida 10 daqiqalik va bir martalik
  • PBX, bot va tracking service kalitlari umumiy constant-time taqqoslashdan foydalanadi
  • Yangi va almashtiriladigan parol 8–128 belgida DTO va service darajasida tekshiriladi; mavjud login/parol o‘zgartirilmadi
  • 34 backend suite: 265/265; barcha production buildlar, Prisma validate, npm audit 0 hamda Flutter format/analyze/test muvaffaqiyatli
  • Production RBAC API qabul sinovi 19/19: notification fieldlari, master scope/redaction, receptionist 403 va unsigned webhook DBga yozmasdan tasdiqlandi
  • Umumiy read-only production acceptance 17/17; API/DB health, HTTPS va fail-closed integratsiyalar ishlaydi
  • Real HTTPS browser smoke 73/73: 8 faol rolning ruxsat etilgan va taqiqlangan sahifalari, order resize persistence hamda 3 public sahifa
  • API, CRM, sayt va ikkala bot PM2’da online; milestone public hisobotda ko‘rinadi va kod remote Git branch’iga yuborildi
Roadmap P1–P3

Mobil ish oqimi, marshrut tartibi va jadval qulayligi yakunlandi

Bajarildi

Masterlar mobil ilovada bosqichni qabul qilish, muammoni sabab bilan qaytarish, kamera yoki galereyadan xavfsiz ichki foto biriktirish, faqat fotodan keyin ishni yakunlash va o‘z daromadini ko‘rish imkoniga ega bo‘ldi. CRM marshrut ichidagi drag-and-drop tartibini atomik saqlaydi, buyurtma ustunlari esa sichqon, sensor yoki klaviatura bilan o‘lchamlanib brauzerda saqlanadi. Shu jarayonda vazifa va kuryer nuqtalarining boshqa xodim tomonidan bajarilishiga yo‘l qo‘ygan ownership nomuvofiqligi ham yopildi.

  • Mobil stage actionlar backendning mavjud role/owner va xavfsiz image decode/re-encode himoyasidan foydalanadi
  • Earnings ekrani shu oy yoki barcha vaqt bo‘yicha faqat JWTga bog‘langan master ma’lumotini oladi; sana chegaralari lokal to‘liq kun sifatida qat’iy tekshiriladi
  • Production API default manzili HTTPS; release manifest cleartext trafik va keraksiz lokatsiya ruxsatini taqiqlaydi
  • Android scaffold, Gradle wrapper va pubspec.lock reproduktiv build uchun Gitga qo‘shildi; local key/property va keystore sir bo‘lib qoladi
  • Release AAB haqiqiy non-debug upload-key bilan tekshirildi; signing to‘liq bo‘lmasa release build fail-closed
  • Marshrut ichki tartibi faqat to‘liq aktual UUID ro‘yxatini qabul qiladi va barcha sortOrder qiymatlarini bitta transactionda yozadi
  • TO_MASTER/FROM_MASTER nuqtalari algoritm va xaritaga kiritildi; yakunlash buyurtmani xato “berildi” holatiga o‘tkazmay, tegishli stage jarayonini davom ettiradi
  • Tashqi master callback’i retry-safe qilindi: ochiq ish vazifasi dublikatlanmaydi, bosqich takroran OTKga o‘tmaydi va callback xatosida nuqta statusi qaytariladi
  • Manual kuryerga ko‘chirish tanlangan kuryerni qayta algoritm bilan bekor qilmaydi; eski va yangi ro‘yxatlar ketma-ket normallashtiriladi
  • Kuryer actionlari rol, point owner, status, sabab va summa bo‘yicha himoyalandi; boshqa tasks.my rollariga begona marshrut va action yopildi
  • Buyurtma ustunlari 64–480 px chegarada pointer/klaviatura bilan o‘zgaradi, buzilgan storage qiymatlari sanitizatsiya qilinadi va reset mavjud
  • 27 backend suite: 240/240; Flutter format/analyze/test, barcha production buildlar, Prisma validate va npm audit 0 muvaffaqiyatli
  • Production read-only acceptance 17/17; API health, DB, HTTPS, auth va fail-closed integratsiyalar tasdiqlandi
  • Real HTTPS browser smoke 24/24: 20 CRM sahifa, resize→reload persistence va 3 public sahifa
  • Production master API: earnings 200, client phone yashirin; begona route/action 403 va noto‘liq order DBga yozmasdan 400
  • API, CRM, sayt va ikkala bot PM2’da online; yangi milestone public hisobotda ko‘rinadi va commit remote Git branch’iga yuborildi
Production qabul

Tashqi ma’lumotsiz bajariladigan roadmap production’ga topshirildi

Bajarildi

Sayt, CRM, API, botlar, media CMS, dependencylar va fail-closed integratsiyalar bitta yakuniy qabul siklidan o‘tdi. Eski production’ga yozuvchi acceptance/smoke skriptlari read-only formatga almashtirildi, ichki hujjatlardagi mock va ochiq LAN port haqidagi eskirgan da’volar tuzatildi. Qolgan bandlar faqat egadan tashqi credential, haqiqiy media yoki server sudo ruxsati kelgach bajariladi.

  • 230/230 backend test, to‘rtta production build va npm audit 0 muvaffaqiyatli
  • Read-only production acceptance: 17/17; test user, lead, order, payment yoki call yaratilmadi
  • Haqiqiy HTTPS domenlar orqali read-only browser smoke: 20 ta CRM va 3 ta public sahifa, 23/23 muvaffaqiyatli
  • CRM→API→public media E2E: PNG→WebP, haqiqiy MP4, public ko‘rinish va to‘liq DB/fayl cleanup
  • DBga bog‘lanmagan ikkita eski 4×4 test PNG recoverable Trash’ga ko‘chirildi; galereya DB va katalog toza
  • Prisma 6.19.3 health, 15 migration va nol schema-diff bilan production’da ishlamoqda
  • Yakuniy atomik snapshot: 339 DB obyekti va 9 media; izolatsiyalangan restore: 45 jadval va 9/9 media
  • API, CRM, sayt va ikkala bot PM2’da online; public sayt, hisobot va CRM HTTP 200
  • 3000/3001/3002 faqat 127.0.0.1da; payment mock/webhook 503, PBX kalitsiz 403, delivery 503 va DB o‘zgarmaydi
  • Barcha kod va hisobot commitlari Git remote branch’iga yuborildi
Ma’lumotlar qatlami

Prisma 5.22 dan 6.19.3 ga nazoratli yangilandi

Bajarildi

Prisma ORM va Client bir xil 6.19.3 versiyaga ko‘chirildi. Rasmiy breaking-change ro‘yxati schema va kod bo‘yicha tekshirildi, CLI konfiguratsiyasi alohida prisma.config.ts fayliga o‘tkazildi. Production DBga hech qanday noma’lum schema o‘zgarishi qo‘llanmadi.

  • Node 22.14 va TypeScript 5.6 Prisma 6 talablariga mos
  • Bytes field, eski NotFoundError, $use middleware va PostgreSQL implicit many-to-many bog‘liqligi topilmadi
  • Prisma Client 6.19.3 muvaffaqiyatli generatsiya qilindi, schema valid
  • Production bazadagi 15 migratsiya dolzarb va schema-diff natijasi “No difference detected”
  • prisma.config.ts root .env, schema, migration path va seed buyrug‘ini deterministik belgilaydi
  • 230 ta backend testi, barcha production buildlar va 0-vulnerability audit o‘tdi
  • Prisma 7 ESM, yangi client output, PostgreSQL driver adapter va pool semantikasini bir vaqtda o‘zgartirgani uchun alohida arxitektura migratsiyasiga ajratildi
Integratsiyalar xavfsizligi

Delivery, PBX va to‘lov adapterlari rostgo‘y fail-closed holatga o‘tkazildi

Bajarildi

Shartnoma va tekshirilgan real adapter bo‘lmaguncha production endi soxta Yandex trek, “javob berildi” telefon yozuvi yoki soddalashtirilgan Payme/Click/Uzum webhook natijasini yaratmaydi. CRM integratsiya holatini ochiq ko‘rsatadi; ichki kuryer, qo‘lda tasdiqlangan qo‘ng‘iroq va naqd/terminal oqimlari ishlashda davom etadi.

  • DELIVERY_PROVIDER production’da disabled; mock faqat test/development muhitida mumkin
  • Yandex tokenining o‘zi real API chaqiruvisiz vazifani “yo‘lda” holatiga o‘tkaza olmaydi
  • Payme, Click va Uzum CRM’da saqlangan, “ulanmagan” deb ko‘rinadi va tanlab bo‘lmaydi
  • Soddalashtirilgan real payment invoice/webhook metodlari olib tashlanib, contract testgacha yopildi
  • PBX kaliti bot kalitidan alohida, kamida 32 belgili va faqat X-PBX-Key header orqali qabul qilinadi
  • PBX kaliti constant-time taqqoslanadi, webhooklar rate-limit bilan himoyalangan
  • ATS ulanmagan click-to-call endi soxta ANSWERED yozuvi yaratmaydi; qurilmaning raqam terish oynasini ochadi
Credential xavfsizligi

Production JWT va ichki servis kalitlari xavfsiz aylantirildi

Bajarildi

Deploydan keyingi qat’iy tekshiruv eski konfiguratsiyada developmentga xos kalit nomlanishi saqlanib qolganini aniqladi. Qiymatlar publik qilinmasdan kriptografik tasodifiy, alohida kalitlarga atomik almashtirildi; barcha servislar yangi konfiguratsiya bilan birga qayta yuklandi. Xavfsizlik uchun avvalgi CRM sessiyalari bekor bo‘ldi, login va parol esa o‘zgarmadi.

  • JWT va bot-service kaliti 48 kriptografik tasodifiy baytdan alohida yaratildi
  • Almashtirish vaqtinchalik fayl va atomik rename bilan, qiymatlarni terminalga chiqarmasdan bajarildi
  • Validator endi local/development/sample/test shablonlarini hamda bir xil ikki kalitni rad etadi
  • Faol API processi aynan yangilangan kalitlarni yuklagani qiymatlarni ko‘rsatmasdan tekshirildi
  • API, CRM, sayt va ikkala Telegram boti online; health va public sahifalar 200 holatda
Asosiy sayt va CMS

Sayt boyitildi, real media uchun xavfsiz CRM boshqaruvi qo‘shildi

Bajarildi

Bosh sahifaga xizmat yo‘nalishlari, parvarish tavsiyalari, qulay navigatsiya, real ish videosi bloki, SEO structured data va accessibility yaxshilanishlari qo‘shildi. CRM endi RU/UZ matnlarini, “oldin/keyin” juftligini, tartibini va jarayon videosini boshqaradi. Haqiqiy tasdiqlangan media bo‘lmasa, sayt mavjud grafikani rostgo‘y ravishda “illyustratsiya” deb belgilaydi.

  • Bosh sahifa 6 ta xizmat yo‘nalishi, 4 ta parvarish tavsiyasi va aniq CTA bilan to‘ldirildi
  • CRM’da ikki tilli sayt matnlari hamda galereya/video boshqaruvi yaratildi
  • Galereya rasmlari serverda ochilib tekshiriladi, EXIF/metama’lumotdan tozalanadi, 2000 px gacha kichraytiriladi va WebP formatiga o‘tkaziladi
  • Jarayon videosi faqat MP4/WebM byte-signature bilan, UUID nomida va 30 MB limitda qabul qilinadi
  • Buyurtmadagi “keyin” fotosini galereyaga chiqarish uchun haqiqiy “oldin” fotosi va mijozga ko‘rinadigan media talabi qo‘yildi
  • URL, xarita koordinatasi, lazy-loading, klaviatura skip-link, JSON-LD va ikki tilli alt/aria matnlari tekshirildi
  • 222 ta backend testi, barcha production buildlar va dependency audit muvaffaqiyatli o‘tdi; auditda 0 ta zaiflik
Kutubxonalar xavfsizligi

Next.js va NestJS xavfsiz versiyalarga nazoratli yangilandi

Bajarildi

Sayt va CRM Next.js 15.5.20 ga, API esa NestJS 11.1.28 hamda Express 5 liniyasiga ko‘chirildi. Har bir breaking o‘zgarish kod darajasida moslashtirildi; framework, upload va transitive paketlar auditi nol zaiflikka tushirildi.

  • Boshlang‘ich npm audit: 29 ta yozuv; yakuniy audit: 0 ta
  • Next.js async route-param API’siga barcha public sahifalar moslashtirildi
  • NestJS peer-paketlari bitta 11.1.28 dependency grafigiga birlashtirildi
  • Multer 2.2 va Express 5 production liniyasi o‘rnatildi
  • JWT muddati qat’iy formatda tekshirilib, xavfsiz son qiymatiga aylantiriladi
  • 216 ta backend testi va barcha to‘rtta ilova production build’i muvaffaqiyatli o‘tdi
Server chegaralari

Ichki servis portlari va production konfiguratsiyasi yopildi

Bajarildi

API, CRM va sayt endi faqat server loopback interfeysida ishlaydi; tashqi trafikning yagona yo‘li Nginx bo‘lib qoldi. PM2 root env’ni deterministik yuklaydi va production rejimini majburiy o‘rnatadi, backend esa xavfli konfiguratsiyada start olmaydi.

  • 3000, 3001 va 3002 portlari faqat 127.0.0.1 manzilida tinglamoqda
  • Barcha besh PM2 servisida NODE_ENV=production tekshirildi
  • JWT va ichki servis kalitlaridagi development fallbacklar olib tashlandi
  • Production CORS faqat rasmiy HTTPS originlarga qisqartirildi
  • Public domen ichki stage media uchun 404, galereya uchun 200 qaytarmoqda
  • Nginx CSP/header va upload chegaralari Git’da tayyor; qo‘llash uchun server root ruxsati kerak
Backup va tiklash

DB va media uchun atomik backup hamda real restore-test joriy qilindi

Bajarildi

Kunlik systemd vazifasi PostgreSQL va lokal media fayllarini bitta versiyalangan snapshotga yig‘adi, SHA-256 bilan tekshiradi va daily/weekly/monthly retention qoidasini qo‘llaydi. Haftalik test nusxani alohida vaqtinchalik DB va katalogga tiklaydi.

  • Real snapshotda 339 ta DB obyekti va 11 ta media fayl saqlandi
  • Izolatsiyalangan sinovda 45 ta jadval va barcha 11 ta media muvaffaqiyatli tiklandi
  • Backup va restore systemd service’lari exit-code 0 bilan qayta tekshirildi
  • Bir vaqtda ikki backup ishlashini bloklovchi lock va atomik staging qo‘shildi
  • Offsite nusxa to‘liq credential bo‘lmasa ishlamaydi; tayyor oqim AES-256 bilan shifrlaydi va qayta ochib tekshiradi
Kirish xavfsizligi

Tizim egasining SUPERADMIN kirishi xavfsiz tiklandi

Bajarildi

Tizim egasining tasdig‘i bilan yagona faol SUPERADMIN hisobiga yangi kuchli vaqtinchalik parol o‘rnatildi. Maxfiy credential hisobotga yoki kodga kiritilmadi.

  • Reset faqat aniq topilgan bitta faol SUPERADMIN hisobiga qo‘llandi
  • Amal server audit-log’iga sirlarni kiritmasdan yozildi
  • Yangi credential real login API orqali muvaffaqiyatli tekshirildi
Media xavfsizligi

Barcha fayl yuklash oqimlari yagona xavfsiz qoidaga o‘tkazildi

Bajarildi

Bosqich, mijoz, galereya, Telegram va qo‘ng‘iroq mediafayllari endi foydalanuvchi yuborgan nom yoki MIME’ga ishonmaydi. Server fayl turini mazmuni bo‘yicha tekshiradi, xavfsiz UUID nom beradi va qat’iy hajm limitini qo‘llaydi.

  • Rasmlar faqat JPEG, PNG yoki WebP byte-signature bilan qabul qilinadi
  • Bosqich fotosini faqat biriktirilgan usta yoki administrator yuklay oladi
  • Audio faqat MP3, WAV, OGG yoki M4A sifatida tekshirilib saqlanadi
  • PBX yozuvlari faqat alohida ruxsat etilgan HTTPS hostdan, redirectsiz va 50 MB gacha olinadi
  • Telegram hujjatlari bajarilmaydigan binar formatda, asl nomi esa faqat xavfsiz ko‘rsatish uchun saqlanadi
  • Mavjud media ombori tekshirildi: fayl turlari kutilgan formatlarga mos
Keyingi bosqich

Backup va tiklash tizimini kuchaytirish

Jarayonda

Lokal DB+media snapshot, retention va real restore-test yakunlandi. Qolgan yagona qism — tashqi S3 endpoint, bucket, access key va alohida shifrlash paroli berilgach AES-256 offsite nusxani faollashtirish.

  • DB va media bitta atomik backup sikliga kiritildi
  • Kunlik/haftalik/oylik retention ishlamoqda
  • Test tiklash production ma’lumotlarini buzmasdan bajarildi
  • Tashqi storage credentiallari serverda hozircha mavjud emas
Server xavfsizligi

Portlar, security-header va production konfiguratsiyasini qat’iylashtirish

Jarayonda

Loopback portlar, qat’iy production env-validatsiya va public media chegarasi production’da ishlamoqda. Nginx CSP va qo‘shimcha header konfiguratsiyasi tayyor, lekin `/etc/nginx`ga qo‘llash uchun root ruxsati talab qilinadi.

  • Port va firewall holati qayta tekshirildi
  • API, CRM va sayt loopback’ka ko‘chirildi va smoke-testdan o‘tdi
  • Nginx konfiguratsiyasi Git rollback bilan tayyorlandi
  • Qolgan ish: root orqali o‘rnatish, nginx -t, reload va header smoke-test
Texnik qarz

Framework va kutubxonalarni nazoratli yangilash

Bajarildi

Next.js, NestJS, Express, Multer va transitive paketlar xavfsiz liniyalarga yangilandi; Prisma 6.19.3 migratsiyasi ham schema-diff bilan yakunlandi. Auditda zaiflik qolmadi. Prisma 7 esa ESM va driver-adapter arxitektura o‘zgarishi sabab xavfsiz alohida siklga ajratildi.

  • 29 ta audit yozuvi 0 tagacha kamaytirildi
  • Next.js va NestJS migratsiyasi test/build bilan yakunlandi
  • Prisma 6.19.3 migratsiyasi 15 ta dolzarb migration va nol schema-diff bilan yakunlandi
  • Prisma 7 uchun xavfsiz arxitektura migratsiya chegarasi hujjatlashtirildi
Asosiy sayt

Restoria.uz saytini to‘ldirish, boyitish va qulaylashtirish

Jarayonda

Saytning kontent, UX, SEO va CMS bazasi yakunlandi. Galereya hamda video uchun xavfsiz texnik oqim tayyor; qolgan kontent bosqichi — mijoz roziligi olingan haqiqiy “oldin/keyin” foto va jarayon videolarini CRM orqali yuklash.

  • Xizmatlar, narx, muddat, parvarish, Telegram/telefon CTA va kuzatish yo‘li boyitildi
  • CRM orqali RU/UZ kontent, WebP galereya, video poster va jarayon videosini boshqarish tayyor
  • SEO structured data, lazy-loading va asosiy accessibility talablari tekshirildi
  • Qolgan ish: egasi tasdiqlagan real media fayllarini tavsif va kategoriya bilan yuklash
Integratsiyalar

Real to‘lov providerlari va PBX’ni shartnoma asosida ulash

Jarayonda

Production fail-closed himoyasi yakunlandi: ulanmagan Payme, Click, Uzum, Yandex Delivery va PBX soxta natija bermaydi. Qolgan tashqi bosqich — tanlangan providerlar bilan shartnoma, rasmiy credential, sandbox va imzo/idempotency contract-testlari.

  • Ulanmagan providerlar CRM’da ko‘rinadi, lekin tanlab bo‘lmaydi
  • Payment, delivery va PBX production mock/fallback oqimlari yopildi
  • Qolgan ish: rasmiy provider credentiallari va sandbox contract-testlari
Ma’lumotlarni himoyalash

Realtime kanal va public API chegaralari himoyalandi

Bajarildi

CRM WebSocket ulanishi JWT, faol hisob va individual ruxsatlar bo‘yicha tekshiriladi. Hodisalar faqat tegishli permission-room’larga yuboriladi. Public matn endpointi esa faqat saytga zarur org maydonlarini qaytaradi.

  • Tokensiz WebSocket ulanish hodisalarni qabul qilmaydi
  • Qo‘ng‘iroq hodisasi faqat mijozlarni ko‘rish huquqiga ega rollarga boradi
  • AI va kanal sozlamalari public texts javobidan chiqarildi
  • Demo sharhlar va ichki review maydonlari public javobdan chiqarildi
Telegram xavfsizligi

Bot identifikatsiyasi va media oqimi himoyalandi

Bajarildi

Mijoz va xodim botlari endi faqat foydalanuvchining o‘z Telegram kontakti orqali bog‘lanadi. Begona profilga bog‘langan hisob yashirincha almashtirilmaydi. Suratlar Telegram tokenli URL sifatida saqlanmaydi — avval tekshirilib Restoria storage’iga ko‘chiriladi.

  • Kontakt egasi Telegram user ID bo‘yicha tekshiriladi
  • Xodim daromadi endpointiga servis kaliti tekshiruvi qo‘shildi
  • Vazifa va kuryer nuqtalari aynan biriktirilgan ijrochiga tegishliligi tekshiriladi
  • Ko‘p bosqichli ishni majburiy fotosiz bot orqali yopish bloklandi
  • Rasm turi fayl nomi emas, haqiqiy byte-signature orqali aniqlanadi
To‘lov xavfsizligi

Production’dagi test onlayn to‘lovlar yopildi

Bajarildi

Mock havola va imzosi tekshirilmagan provider webhook’lari endi production bazasida to‘lovni tasdiqlay olmaydi. Real Payme/Click adapterlari to‘liq imzo va tranzaksiya testlaridan o‘tmaguncha tizim fail-closed holatda qoladi.

  • Production PAYMENT_PROVIDER disabled holatiga o‘tkazildi
  • Mock rejim faqat non-production muhitida ishlaydi
  • CRM’da providerlar “ulanmagan” deb ko‘rinadi va tanlash bloklangan; Telegram bot havola bermaydi
  • Saytdagi Payme/Click haqidagi nomuvofiq va’dalar olib tashlandi
Kirish xavfsizligi

Ochiq demo-administrator kirishi yopildi

Bajarildi

CRM login sahifasidan tayyor telefon va parol olib tashlandi. Ommaga ma’lum bo‘lgan eski hisob bloklandi, uning eski sessiyalari yaroqsiz qilindi va paroli qayta ishlatib bo‘lmaydigan qiymatga almashtirildi.

  • Bloklashdan oldin boshqa faol SUPERADMIN mavjudligi tekshirildi
  • Eski demo login API darajasida 401 javob qaytarmoqda
  • Seed va test skriptlaridan production credentiallari olib tashlandi
  • Amal server audit-log’iga yozildi
Shaffoflik

Doimiy rivojlantirish hisoboti yaratildi

Bajarildi

Sayt, CRM va integratsiyalarda bajarilgan xavfsiz o‘zgarishlar qadam-baqadam saqlanadigan ikki tilli ochiq jurnal joriy qilindi.

  • Hisobot manbasi Git tarixida saqlanadi
  • Sahifa RU va UZ tillarida ishlaydi
  • Sirlar va ekspluatatsiya tafsilotlari publik qilinmaydi
Xavfsiz boshlanish

Nazoratli o‘zgartirish jarayoni boshlandi

Bajarildi

Tekshirilmagan kodni avtomatik yuboruvchi jarayon to‘xtatildi. O‘zgarishlardan oldin ma’lumotlar bazasi va lokal media snapshotlari olindi, alohida ish branch’i yaratildi.

  • Production servislar ishlashda davom etdi
  • DB backup muvaffaqiyatli yaratildi
  • Media snapshot checksum bilan tekshirildi
Audit

Sayt va CRM tizimi to‘liq read-only tekshirildi

Bajarildi

Arxitektura, API, buyurtma konveyeri, botlar, to‘lovlar, marshrutlar, backup, SEO va server konfiguratsiyasi tekshirildi. Tuzatishlar xavf darajasi bo‘yicha rejalashtirildi.

  • 192 ta backend testi muvaffaqiyatli o‘tdi
  • 15 ta DB migratsiyasi dolzarb
  • Barcha production servislar online holatda
Bosh sahifaga qaytish