Asosiy kontentga o‘tish
Innovialabs

Taksi ilovasini qanday yaratish: asosiy komponentlar va arxitektura

Chuqur4 daq

Qisqacha

Taksi servisi — uchta mijoz (yo‘lovchi, haydovchi, dispetcher) va haydovchilarni geoqidirish, matching, tariflash, to‘lov hamda real vaqtdagi koordinatalar oqimiga ega bekend.

Taksi servisi nimalardan iborat

Taksi ilovasi bitta ilova emas, bir nechta qismdan iborat tizim:

  • yo‘lovchi ilovasi — buyurtma, kutish, safar, to‘lov, baho;
  • haydovchi ilovasi — liniyaga chiqish, buyurtmalarni qabul qilish, navigatsiya, daromad;
  • dispetcher va administrator paneli — qo‘lda buyurtmalar, nazorat, tariflar, haydovchilar, nizolar;
  • bekend — geoqidiruv, matching, narxlash, safarlar, to‘lovlar, bildirishnomalar.

Murakkablik ekranlarda emas, real vaqtda: minglab mashinalar doimiy koordinata yuboradi, buyurtmani esa soniyalar ichida tayinlash kerak.

Yo‘lovchi ilovasi

Minimal funksiyalar to‘plami:

  • manzil takliflari va xaritada pinni aniqlashtirish bilan olib ketish va borish nuqtasini tanlash;
  • tarifni tanlash va buyurtmagacha oldindan narx;
  • mashina qidirish, haydovchi va avtomobil kartochkasi, xaritada real vaqtdagi mashina;
  • naqd, karta yoki balansdan to‘lov;
  • maskalangan raqam orqali chat yoki qo‘ng‘iroq, «safarni ulashish» tugmasi;
  • safarlar tarixi, cheklar, baho.

Haydovchi ilovasi

  • «liniyada / liniyada emas» statusi va fonda geopozitsiya uzatish — iOS va Android ning fon ishiga cheklovlarini hisobga olgan holda;
  • qabul qilish taymeri, mijozgacha masofa va taxminiy narx bilan kiruvchi buyurtma;
  • ichki xarita yoki tashqi navigatorlar orqali navigatsiya;
  • safar statuslari: mijozga ketyapman, joyidaman, yo‘lda, yakunlandi;
  • balans, komissiyalar, to‘lovlar, hujjatlar.

Dispetcher paneli

Avtomatik servisda ham dispetcher kerak: telefon orqali buyurtmalar, korporativ mijozlar, nosozliklar va shikoyatlar. Panel mashinalar va buyurtmalar xaritasini ko‘rsatadi, buyurtmani qo‘lda tayinlash, tarif va zonalarni o‘zgartirish, haydovchilarni bloklash va safarning to‘liq tarixi bilan nizolarni hal qilish imkonini beradi.

Matching: buyurtma qanday tayinlanadi

  1. Olib ketish nuqtasi yaqinidagi bo‘sh haydovchilarni geoindeks orqali topish (H3 kabi olti burchakli to‘rlar, geohash yoki PostGIS).
  2. Mos kelmaganlarni chiqarib tashlash: tarif, avto klassi, bolalar o‘rindig‘i, bloklashlar.
  3. To‘g‘ri chiziq bo‘yicha emas, yo‘llar bo‘yicha yetib kelish vaqti bo‘yicha saralash — daryo yoki bir tomonlama ko‘cha hammasini o‘zgartiradi.
  4. Buyurtmani taymer bilan bir yoki bir nechta haydovchiga taklif qilish; rad etilsa — keyingisiga.

Ketma-ket yuborishga muqobil — paketli tayinlash: tizim buyurtmalarni bir-ikki soniya yig‘ib, barcha yo‘lovchilarning umumiy kutishini kamaytiradigan tarzda taqsimlaydi.

Tariflar va surge

Narx odatda chaqiruv, daqiqalar va kilometrlardan hamda minimal narx, kutish va qo‘shimcha to‘lovlardan tashkil topadi. Oldindan narx xarita servisidagi marshrut bo‘yicha hisoblanadi; yakuniy narx — haqiqiy trek bo‘yicha yoki oldindan qat’iy belgilanadi.

Surge (oshiruvchi koeffitsiyent) zonada talab taklifdan yuqori bo‘lganda yoqiladi. U zonalar va qisqa vaqt oynalari bo‘yicha hisoblanadi. Muhimi:

  • koeffitsiyentni yo‘lovchiga buyurtmagacha ko‘rsatish;
  • narx har daqiqada sakramasligi uchun keskin o‘zgarishlarni silliqlash;
  • oshiruvchi koeffitsiyentlar mahalliy qoidalar bilan qanday tartibga solinishini tekshirish.

Xaritalar va geoma’lumotlar

To‘rtta funksiya kerak bo‘ladi: xaritani ko‘rsatish, geokodlash (manzildan koordinataga va aksincha), tirbandlikni hisobga olgan marshrutlash va yetib kelish vaqtini baholash. Tijoriy API lardan yoki ochiq ma’lumotlar asosidagi o‘z marshrutlashingizdan (masalan, OpenStreetMap ustida OSRM) foydalanish mumkin. Tanlashda shahringizdagi manzillar sifatini va o‘sishda so‘rovlar narxini hisobga oling — marshrutlash so‘rovlari juda ko‘p bo‘ladi.

To‘lov

  • Buyurtmada kartani predavtorizatsiya qilish va safardan keyin haqiqiy summani yechish.
  • To‘lov provayderi orqali kartalarni tokenlashtirish — karta raqamlari serverlaringizda saqlanmasligi kerak.
  • Servis komissiyasi, haydovchi balansi va muntazam to‘lovlar.
  • Bekor qilishlar, pullik kutish va qaytarishlarni to‘g‘ri hisobga olish.

Masshtabda real-time

Birinchi kundan qo‘yiladigan arxitektura qarorlari:

  • Koordinatalar va statuslar uchun doimiy ulanish (WebSocket yoki MQTT), zaxira sifatida push-bildirishnomalar.
  • Haydovchilar koordinatalari har bir nuqtada asosiy bazada emas, xotiradagi tezkor omborda (masalan, geo-buyruqli Redis) saqlanadi.
  • Safar treklari xabarlar navbati orqali yoziladi va paketlab saqlanadi.
  • Safar — qat’iy o‘tishlarga ega chekli avtomat; ikki haydovchining bir buyurtmani bir vaqtda qabul qilishi atomar operatsiya bilan istisno qilinadi.
  • Servislar yuklama bo‘yicha ajratiladi: geolokatsiya va matching billing va admin paneldan alohida masshtablanadi.

Ko‘p uchraydigan xatolar

  • Yo‘llarni hisobga olmay, to‘g‘ri chiziq bo‘yicha matching.
  • Oflayn mantiqning yo‘qligi: haydovchi safar o‘rtasida aloqani yo‘qotdi va buyurtma «osilib» qoldi.
  • Boshida dispetcher panelining yo‘qligi — har bir nosozlik bazada qo‘lda ishlashga aylanadi.

Ko‘p beriladigan savollar

Ha, talabni tekshirish uchun bu tez yo‘l. O‘z ishlanmangiz matching va tariflarning o‘z mantig‘i, mahalliy to‘lov tizimlari bilan integratsiya yoki ma’lumotlar ustidan to‘liq nazorat kerak bo‘lganda o‘zini oqlaydi.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.