منصة سوق إلكتروني · التنقل

منصة تأجير سيارات مُدارة بنظام الوساطة في الإمارات

سوق إلكتروني مُدار لتأجير السيارات في الإمارات، يقف فيه المشغّل في منتصف كل صفقة: يتوسط في الحجوزات، ويحصّل الأموال، ويسوّي الحسابات مع شركات التأجير عبر محفظة مزدوجة الاتجاه تُحتسب من البيانات وتبقى دقيقة حتى آخر درهم.

التنفيذ
HashCode FZE
نوع المشروع
منصة سوق إلكتروني متكاملة بنموذج B2B2C، بنيناها ونملكها داخليًا
القطاع
تأجير السيارات والتنقل

B2B2C

نموذج السوق

مزدوجة الاتجاه

المحفظة والسجل

دقة عشرية تامة

حساب الأموال

في الاتجاهين

التسويات

نظرة عامة

منصة لتأجير السيارات في الإمارات. تعرض شركات التأجير أساطيلها عليها، ويستأجر العملاء من خلالها، ويقف المشغّل الذي يدير المنصة في المنتصف: ينتقي الإعلانات، ويتوسط في كل حجز، ويحصّل الأموال، ويقتطع عمولته، ثم يدفع للشركات مستحقاتها.

هذا الموقع في المنتصف هو جوهر المنتج كله. فالحجز لا ينتقل مباشرة من العميل إلى شركة التأجير، بل يمر أولًا عبر المشغّل الذي يتحكم في ما تراه الشركة ومتى تراه. المشغّل يملك العلاقة مع العميل، ويمسك النقد، ويدير حسابات الطرفين. والمنصة هي ما يجعل ذلك ممكنًا: سوق عام في الواجهة، ونظام وساطة وتسويات متكامل خلفه.

بنينا المنظومة كاملة ونملكها: الموقع العام، وبوابتا الإدارة والشركات، ومحرك التسعير والعمولات، والمحفظة وسجل المدفوعات، ومسار العقود والفحص، وأتمتة المراسلات التي تدير الحجوزات. قاعدة برمجية واحدة بُنيت داخليًا، دون أي منصة أسواق جاهزة من طرف ثالث تحتها.

التحدي

السوق المُدار أصعب بكثير من موقع إعلانات. فالمشغّل لا يكتفي بتعريف طرفين ببعضهما ثم الانسحاب، بل هو الطرف المقابل لكليهما: يحصّل دفعة العميل، ويدين لشركة التأجير بحصتها، ويحتفظ بعمولته، وعليه أن يثبت كل رقم للطرفين متى طُلب منه. والأموال لا تتحرك بشكل نظيف: أحيانًا يحصّل المشغّل، وأحيانًا تحصّل الشركة مباشرة ثم تصبح مدينة للمشغّل بحصته. وكل دفعة تُقسَّم بين أرباح الشركة والعمولة ورسوم الخدمة والضريبة، بينما تعود بعض الرسوم (مخالفة، أو يوم إضافي، أو رسم غير مسترد) بالكامل لطرف واحد ولا يجوز أبدًا احتسابها على الطرف الآخر. والودائع لا يُقتطع منها شيء. والتجديد يعيد فتح الحجز ويعيد تقسيمه. وأي خطأ في ذلك يعني أن شركة تقاضت أقل من حقها أو حُمّلت المبلغ مرتين، فتضيع الثقة في المنصة. لذلك كان على المنصة أن:

  • تضع المشغّل في موقع التحكم في كل حجز، بقواعد مفروضة في نموذج البيانات نفسه لا بالعُرف.
  • تحافظ على سجل دقيق حتى آخر درهم عبر التقسيمات والتجديدات والمبالغ العابرة والتسويات في الاتجاهين.
  • تتتبع من حصّل كل دفعة فعليًا، وتجري المقاصّة بين المستحقات في الاتجاهين.
  • تغطي عملية التأجير الحقيقية كاملة: عملاء موثَّقون، وعقود موقّعة، وتسليم موثّق، ومخالفات ونزاعات.

الحل

بنينا النظام بطبقات نظيفة، وأبقينا منطق العمل مستقلًا عن أي إطار عمل أو مزوّد واحد حتى لا يُحاصَر المشروع لاحقًا. هكذا تترابط الأجزاء.

حجوزات تمر عبر المشغّل

يمر كل حجز عبر المشغّل قبل أن يصل إلى شركة التأجير، ولا تستطيع الشركة رؤية الحجز حتى يسلّمه لها المشغّل صراحة. وهذا مفروض في نموذج البيانات لا بالعُرف: الحجز ببساطة غير مرئي للشركة إلى أن يُحوَّل إليها. وبذلك يستطيع المشغّل فحص كل صفقة وتسعيرها والتحكم فيها، بدل أن يكتفي بتمرير العملاء المحتملين.

محفظة وسجل مزدوجا الاتجاه

محفظة كل شركة تُحتسب ولا تُخزَّن: تعيد المنصة بناء السجل الكامل عند كل قراءة انطلاقًا من الحجوزات والمدفوعات الأساسية. وهي تتتبع إجمالي المقبوض، ورسوم الخدمة، والعمولة، والضريبة، والأرباح، والمبالغ المستحقة في كل اتجاه، والأهم: من حصّل النقد. فإذا حصّلت الشركة المبلغ مباشرة، تظهر العمولة التي تدين بها للمشغّل بندًا صريحًا مرفقًا بسببه. وتجري المنصة مقاصّة بين المدفوعات والتسويات حتى لا يُحمَّل أحد مرتين أبدًا.

محرك التسعير والعمولات

تُبنى الأسعار من نموذج عمولات متدرّج مع رسوم خدمة وضريبة اختيارية، وكلها بحساب عشري دقيق. ويستطيع المشغّل تعديل التسعير لكل شركة ولكل سيارة، أما العروض الترويجية فتثبّت تفاصيل سعرها لحظة الحجز، فتبقى الأرقام صحيحة بعد انتهاء العرض. وتُحفظ التقسيمات المتوقعة منفصلة عن المتحققة فعلًا، فتُحتسب الدفعات الجزئية والتجديدات بالتناسب الصحيح بدل أن تُفسد حسابات الحجز الأصلي.

مدفوعات معروفة المصدر

تسجّل كل دفعة الغرض منها، ومن حصّلها، ولمن تُستحق، وهل هي مؤكدة أم ما زالت معلّقة. وتذهب المبالغ العابرة إلى الطرف الصحيح دون أن تُسجَّل دينًا بين الطرفين، وتبقى الدفعات المعلّقة خارج كل المجاميع حتى تُصرف، أما المبالغ المستردة، وإفراج الودائع، والدفعات الجزئية فكلها مدعومة أصلًا في النظام. وتُعالَج أحداث مزوّد الدفع بشكل متساوي الأثر (idempotent)، فلا يُحتسب أي webhook أُعيد إرساله مرتين.

تسويات في الاتجاهين

تمثّل المنصة التدفقين اللذين يوجدان فعلًا في أي سوق مُدار: مدفوعات من المشغّل إلى الشركة تُحوَّل إلى حساب بنكي موثَّق، وتسويات من الشركة إلى المشغّل حين تحصّل الشركة نقدًا تدين بجزء منه. ويراجع المشغّل كلا النوعين قبل إغلاقهما.

العقود والتحقق من الهوية وسجل التدقيق

يُتحقق من هوية العملاء عبر بطاقة الهوية ورخصة القيادة قبل تأكيد أي حجز. وتُولَّد عقود التأجير بصيغة PDF وتُوقَّع عبر روابط محددة المدة. ويُوثَّق التسليم والإرجاع في سجلات فحص تتضمن التوقيعات، وموقع GPS، وقراءة العدّاد، والصور، وسجلات تدقيق غير قابلة للتعديل، أي أثر ورقي مبني للنزاعات والمخالفات. ولكل من المخالفات، والقائمة السوداء، والرسوم بعد انتهاء التأجير مسار عمل خاص بها.

أتمتة الحجز عبر المراسلة

يدير وكيل آلي المحادثة من الاستفسار حتى التأكيد عبر واتساب: يتأكد من التوفر مع الشركة، ويجمع مستندات العميل، ويُتم الحجز، فلا يضطر فريق العمليات إلى إنجاز ذلك يدويًا في نافذة دردشة. وتصب الحجوزات الموثَّقة مباشرة في نظام الوساطة والسجل نفسه.

التقنيات

التقنيات المستخدمة في بناء المنصة
الطبقةالتقنيات
الواجهة الأماميةNext.js (React, TypeScript)، Tailwind CSS، وفصل الموقع العام عن البوابات بنطاقات فرعية
واجهة الخلفية البرمجيةPython، FastAPI، async SQLAlchemy، REST
قاعدة البياناتPostgreSQL، مع ترحيلات مخطط ذات إصدارات
الأموال والسجلحساب عشري دقيق، ومحفظة مزدوجة الاتجاه تُحتسب مع كل طلب
المدفوعاتمزوّد دفع خارجي، مع معالجة webhooks متساوية الأثر (idempotent)
المستنداتتوليد ملفات PDF للعقود على الخادم، مع توقيع إلكتروني عبر روابط مرمّزة (tokenised)
تخزين الملفاتتخزين متوافق مع S3 للمستندات والصور وصور الفحص
المصادقةJWT مع تسجيل دخول برمز لمرة واحدة عبر البريد الإلكتروني للعملاء والشركات
أتمتة الحجزوكيل مُترجَم (compiled) يشغّل آلة حالات ثابتة للحجز عبر مزوّد مراسلة للأعمال
البنية التحتيةDocker / Docker Compose، ولا تبدأ الخلفية إلا بعد نجاح حزمة الاختبارات

النظام مبني بأسلوب الكتلة الواحدة المقسّمة إلى وحدات (modular monolith): مناطق API منفصلة للسوق العام، وحسابات العملاء، والشركات، والمدفوعات، والإدارة، والعمليات، فوق قاعدة بيانات PostgreSQL واحدة، مع تعدد مستأجرين على مستوى التطبيق يحصر كل شركة في بياناتها، وفصل الموقع العام عن بوابتي الإدارة والشركات بنطاقات فرعية.

النتائج والأثر

بوساطة المشغّل

كل حجز يمر عبر مسار وساطة واحد خاضع للتحكم

في الاتجاهين

تسويات: مدفوعات للشركات، ونقد حصّلته الشركات يُستحق للمشغّل

دقة عشرية

تقسيم الأموال بين العمولة والرسوم والضريبة والمبالغ العابرة

بمستوى التدقيق

تحقق من الهوية وعقود موقّعة إلكترونيًا وسجلات فحص للنزاعات

لماذا يهم هذا

أي أحد يستطيع بناء موقع إعلانات. الصعوبة هنا كانت في المال. فلأن المشغّل هو الطرف المقابل لكلا الجانبين، على المنصة أن تحصّل كل دفعة وتقسّمها وتسوّيها، وأن تكون جاهزة لتبرير كل رقم لشركة التأجير متى طلبت. وهذا يعني أن المحفظة لا يمكن أن تكون رصيدًا يعدّله أحد يدويًا، بل يجب أن تكون سجلًا حقيقيًا يُحتسب من البيانات، يجري المقاصّة في الاتجاهين ويتذكر من حصّل ماذا. صممنا نموذج الأموال هذا، وغرسنا قواعد الوساطة في البيانات نفسها حتى لا يمكن الالتفاف عليها، وبنينا حوله كل ما يحتاجه التأجير الحقيقي: التسعير، والعقود، والتحقق من الهوية، والفحص، والمدفوعات. وإتقان ذلك هو المهمة كلها.

  • سوق إلكتروني
  • B2B2C
  • سجل مالي (فينتك)
  • المدفوعات والتسويات
  • FastAPI
  • PostgreSQL
  • التحقق من الهوية (KYC)
  • أتمتة الحجز بالذكاء الاصطناعي

ابنِ شيئًا مثل هذا مع HashCode

منصات ذكاء اصطناعي، وأتمتة، وبرمجيات مخصّصة، نصمّمها ونبنيها ونشغّلها بالكامل. أخبرنا عن مشروعك.