Telegramda yozing@Odilient

BRAUZER KENGAYTMASI

NDA ostida

Amazon Relay’ni avtomatlashtirish

Amazon Relay yuk doskasi uchun Chrome kengaytmasi va Node.js vositalari: yangi yuklar va to‘lov o‘zgarishlarini kuzatadi, ularni manzil va yukni olish vaqti bo‘yicha saralaydi hamda mos yuklarni band qiladi.

Logistika
Soha
2 oy
Muddat
2022
Yil
Boshlang‘ich nuqta

Muammo

Amazon Relay’dagi tashuvchilar umumiy yuk doskasida yuk uchun bellashadi: yaxshi takliflarni tezda olib ketishadi, to‘lovlar esa ko‘z o‘ngingizda o‘zgarib turadi. Qo‘lda ishlash kun bo‘yi sahifani yangilab o‘tirish, har bir kartochkadan masofa, yukni olish vaqti va manzilni o‘qib chiqish hamda «Book» tugmasini birinchi bo‘lib bosishga umid qilish degani edi. Maqsad — kuzatish, saralash va bosishni operator o‘zi belgilagan aniq qoidalar asosida brauzerga topshirish.

Biz nima qildik

Yechim

Biz kartochkalarni skreyping qilmasdan, yuk doskasining o‘z JSON javoblarini o‘qiydigan Chrome kengaytmasini yaratdik. U sozlanadigan siklda uch rejimda ishlaydi: yangi yuklar va to‘lov oshgani haqida signal, qidirish va ajratib ko‘rsatish hamda belgilangan miqdorgacha avtomatik band qilish. Filtrlar masofa, yukni olishgacha vaqt zaxirasi, eng kech jo‘nash vaqti hamda AQSh shtatlari, ZIP-kodlar yoki terminallar ro‘yxatini qamrab oladi. Keyinroq yaratilgan Node.js mijozi esa brauzer oynasisiz so‘rov yuborib, yuklarni band qildi.

Texnologiyalar
JavaScriptChrome Extensions APINode.jsjQueryBootstrapMoment.jsWebpack
Parda ortida

Loyiha qanday yaratildi

Amazon Relay yuk doskasi uchun Chrome kengaytmasi

Amazon Relay — tashuvchilar Amazon tarmog‘i uchun yuk topib, band qiladigan platforma. Uning yuk doskasida ish takliflari jo‘nash va yetib borish manzili, masofa, to‘xtash joylari, yukni olish vaqti va to‘lov summasi bilan ko‘rsatiladi, bu e’lonlar esa to‘xtovsiz o‘zgarib turadi. AQSh yuk doskasida ishlaydigan tashuvchi uchun biz avtomatlashtirish vositalarini yaratdik: ular doskani kuzatadi, operator qoidalariga mos yuklarni ko‘rsatadi va buyruq berilsa, ularni band qiladi. Avval Chrome kengaytmasi, keyin esa brauzersiz (headless) ishlaydigan Node.js mijozi paydo bo‘ldi.

Ish 2022-yil apreldan iyungacha uch bosqichda olib borildi.

Asosiy imkoniyatlar

  • Doskaning o‘z ma’lumotlarini o‘qiydi — sahifa yuklanishidan oldin kiritiladigan skript window.fetch ni o‘rab oladi, yuk doskasi API javoblarining nusxasini oladi va JSON’ni kengaytmaga uzatadi. Filtrlar kartochkalardan yig‘ib olingan matn bilan emas, tuzilmalangan maydonlar bilan ishlaydi: to‘lov, umumiy masofa, to‘xtash joylari soni, birinchi yukni olish vaqti hamda har bir to‘xtash joyining shtati, ZIP-kodi va terminali.
  • Uch ish rejimi — Simple alert yangi e’lon qilingan yuklarni va to‘lovning belgilangan dollar chegarasidan ortiq oshishini kuzatadi. Search filtrlardan o‘tgan yuklarni topib, ajratib ko‘rsatadi. Auto book mos yuklarni belgilangan maksimal miqdorga yetguncha band qiladi.
  • Operator belgilaydigan filtrlar — minimal va maksimal masofa, birinchi yukni olishgacha daqiqalarda zaxira, eng kech jo‘nash sanasi va vaqti hamda AQSh shtati, besh xonali ZIP-kod yoki terminal kodi bo‘yicha joylashuv filtri — u ruxsat etilganlar ro‘yxati sifatida ham, istisnolar ro‘yxati sifatida ham ishlaydi. Shtatlarning to‘liq nomlari ikki harfli kodlarga keltiriladi, shuning uchun «Illinois» va «IL» bir xil yuklarga mos keladi.
  • Nazorat ostidagi yangilash sikli — kengaytma doskaning o‘rnatilgan avtoyangilanishini to‘xtatib qo‘yadi, sahifani o‘zi sozlanadigan tezlikda, ustiga tasodifiy kechikish qo‘shib yangilaydi, yuk kartochkalarini baholashdan oldin esa ular MutationObserver yordamida to‘liq chizilishini kutadi.
  • Vizual va ovozli signallar — yangi yuklar ajratib ko‘rsatiladi va ro‘yxat boshiga chiqariladi, to‘lovi oshgan yuklarga oshish miqdori yozilgan belgi qo‘yiladi, eng yaxshi to‘lanadigan yangi mos yuk esa ekranga aylantirib keltiriladi va ochib qo‘yiladi. Yangi yuk, narx o‘zgarishi va muvaffaqiyatli band qilish uchun alohida tovushlar chalinadi.
  • Fast Book — ixtiyoriy rejim: u Book tugmasining yozuvini o‘zgartiradi va band qilish oynasini o‘sha bosishning o‘zida tasdiqlaydi. Tezlik muhim bo‘lganda bitta qadam qisqaradi.
  • Tezkor tugma va vkladka himoyasi — bitta tugma siklni ishga tushiradi va to‘xtatadi, fon skripti esa vkladkalarni «bo‘shatib bo‘lmaydigan» deb belgilaydi, shunda Chrome fonda ishlab turgan yuk doskasini muzlatib qo‘ymaydi.

Arxitektura va texnologiyalar

Brauzer kengaytmasi

Kengaytma — JavaScript’da yozilgan Manifest V2 Chrome kengaytmasi. Kontent-skript mavjud ishlar ro‘yxati ustiga boshqaruv panelini joylashtiradi; panel jQuery, Bootstrap va Moment.js sana-vaqt tanlagichi asosida qurilgan. Ikkinchi skript document_start bosqichida web-accessible resurs sifatida kiritiladi va sahifaning o‘z kontekstida ishlaydi — yuk doskasining fetch chaqiruvlarini faqat shu yerdan kuzatish mumkin. U yuk doskasining har bir javobini window.postMessage orqali kontent-skriptga uzatadi.

Kontent-skript ish takliflarining eng so‘nggi ro‘yxatini xotirada saqlaydi, yangi yuklar va to‘lov o‘zgarishlarini aniqlash uchun uni oldingi holat bilan solishtiradi va siklning har bir aylanishida filtrlarni qo‘llaydi.

Bosqichlar

Birinchi versiya 2022-yil aprelida tayyor bo‘ldi: unda operatorlar uchun yozuvlar rus tilida edi va Chrome sync xotirasida saqlanadigan mobil ko‘rinish almashtirgichi bor edi. 2022-yil maydagi versiyada panel qayta ishlandi, rejim nomlari ingliz tiliga o‘tkazildi va fon skriptiga vkladkani bo‘shatib yuborishdan himoya qo‘shildi.

Brauzersiz Node.js mijozi

2022-yil iyunida biz o‘sha yuk doskasi API’si bilan brauzer oynasisiz ishlaydigan Node.js mijozini qo‘shdik. U operatorning saqlangan qidiruvini — jo‘nash nuqtasidan radius, tirkama turlari, bir mil uchun minimal stavka va to‘xtash joylarining maksimal soni kabi parametrlar bilan — tasodifiy og‘ish qo‘shilgan interval bilan qayta-qayta yuboradi. Natija paydo bo‘lishi bilan u to‘xtash joylarini istisno qilingan terminal kodlari ro‘yxati bilan solishtiradi, band qilish so‘rovini yuboradi va so‘rovlarni to‘xtatadi.

Har bir qidiruv profili ikki fayldan iborat — muhit konfiguratsiyasi va so‘rov tanasi — va ular buyruq qatorida uzatiladi, shuning uchun bir nechta profilni alohida jarayonlar sifatida ishga tushirish mumkin. Mijoz node-fetch va dotenv dan foydalanadi, Webpack bilan yig‘iladi va lokal konfiguratsiya orqali berilgan operatorning o‘z Relay sessiyasi bilan autentifikatsiyadan o‘tadi.

Avtomatlashtirishdagi qarorlar

Ushlab olingan API javoblari bilan ishlash filtrlarni kartochkalarning HTML tuzilishiga bog‘liq qilmadi, to‘lovlarni esa valyuta yozilgan satrlardan ajratib olmasdan, oddiy sonlar sifatida solishtirish mumkin bo‘ldi. Tasodifiy interval, miqdor chegarasi va aniq Start va Stop tugmalari vosita qanchalik tajovuzkor ishlashini operator nazoratida qoldirdi. Node.js mijozi kengaytmaga zarur bo‘lgan ko‘rinadigan brauzer oynasiga ehtiyojni yo‘q qildi: kengaytma paneli operatorlarga yuk doskasini ekranda ochiq qoldirishni eslatib turadi.

Bizning rolimiz

Biz taxminan ikki oy davomida uchala vositani yaratdik va takomillashtirib bordik: birinchi kengaytma, uning qayta ishlangan versiyasi va brauzersiz mijoz, jumladan so‘rovlarni qayta yuborish formati va bir nechta profil bilan ishlash tizimi.

O‘xshash ishlar

Bu loyiha sun’iy intellekt integratsiyasi va avtomatlashtirish bo‘yicha ishlarimiz qatoriga kiradi. Amazon ustiga qurilgan boshqa vositalar uchun Amazon sotuvchilari uchun vositalar va Amazon buyurtma va yetkazib berish vidjetlari kengaytmasini ko‘ring. Noldan yaratilgan ichki vositalar haqida veb-ilovalar yaratish sahifasida o‘qing.

Birga yaratamiz

Amazon Relay’ni avtomatlashtirish kabi loyiha kerakmi?

Mahsulotingiz nima qilishi kerakligini ayting. Ish hajmini belgilaymiz, muddatlarni rejalashtiramiz va qat’iy narx yuboramiz — bepul va davom ettirish majburiyatisiz.

Bepul konsultatsiya Majburiyatsiz Tezkor javob