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.fetchni 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
MutationObserveryordamida 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.



