تخطَّ إلى المحتوى

نظرة عامة

مشروع Akadli-AI هو محرك مفتوح المصدر بدون حالة (Stateless) مخصص لسوق التجارة الإلكترونية الجزائري وللتقسيم الإداري الرسمي 2026 (69 ولاية و 1708 بلدية).

إشكالية الدفع عند الاستلام (COD) في الجزائر

في الجزائر، تمثل معاملات الدفع عند الاستلام أكثر من 95% من مبيعات المتاجر الإلكترونية، إلا أن نسبة رجوع الشحنات (Return Rate) تتجاوز عادة 30% إلى 40% بسبب:

  • طلبيات وهمية، أو أرقام هواتف غير صحيحة، أو طلبيات عشوائية بدون نية حقيقية للشراء.
  • عدم دقة العناوين (تحديث الولايات من 58 إلى 69 ولاية نادراً ما تدعمه المنصات العالمية مثل Shopify أو WooCommerce بشكل تلقائي).
  • رغبة الزبون في تعديل المقاس أو العنوان بعد إتمام الطلب وقبل خروج الشحنة مع شركة التوصيل (Yalidine, Ecotrack, ZR Express).
  • التكلفة العالية لمراكز الاتصال اليدوية وبطء وتيرتها في مواسم التخفيضات.

يقوم Akadli-AI بحل هذه المشاكل عبر محادثات صوتية طبيعية بالدارجة الجزائرية عبر وكلاء الذكاء الاصطناعي من ElevenLabs، مع محولات خفيفة تطابق العناوين وتحدث حالة المتجر بشكل فوري ومباشر.


دورة تأكيد الطلبية المتكاملة

┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ متجر إلكتروني │ │ @akadli/provider-* │ │ @akadli/dz-geo │
│ إنشاء طلبية │ ────> │ verifyWebhook() │ ────> │ 69 ولاية و │
│ (شوبيفاي، إلخ) │ │ parseWebhookOrder() │ │ 1708 بلدية │
└─────────────────┘ └──────────────────────┘ └────────┬────────┘
│ StandardizedDzOrder
▼
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ تحديث المتجر │ <──── │ @akadli/core │ <──── │ ElevenAgents │
│ وإضافة الوسوم │ │ handleFinalizeOrder │ │ مكالمة صوتية │
│ والملاحظات │ │ ToolCall() │ │ بالدارجة الجزائرية│
└─────────────────┘ └──────────────────────┘ └─────────────────┘

1. استقبال الـ Webhook والتحقق المشفر من التوقيع

بمجرد اكتمال الطلب في المتجر، يُرسل إشعار Webhook تلقائي إلى الخادم. يتحقق محول المتجر المناسب @akadli/provider-* من التوقيع المشفر بمقارنة زمنية آمنة وثابتة (crypto.timingSafeEqual) لمنع التلاعب:

  • Shopify: توقيع HMAC-SHA256 Base64 في ترويسة x-shopify-hmac-sha256.
  • YouCan: توقيع HMAC-SHA256 Hex في ترويسة x-youcan-signature.
  • WooCommerce: توقيع HMAC-SHA256 Base64 في ترويسة x-wc-webhook-signature.
  • Google Sheets: رمز سري مشترك أو توقيع HMAC.
  • Tassyir: توقيع Ed25519 بالمفتاح العام وفق معيار Standard Webhooks (v1a).

2. تطبيع العناوين وأرقام الهواتف

يتم تحويل الطلب إلى النموذج القياسي الموحد StandardizedDzOrder. وتقوم حزمة @akadli/dz-geo بـ:

  • تطبيع رقم الهاتف إلى الصيغة المحلية (05/06/07XXXXXXXX) أو الدولية (+213...).
  • تحديد كود الولاية المكون من رقمين (01 إلى 69) بدقة عبر مطابقة الاسم بالعربية أو الفرنسية أو العربيزي أو الرمز البريدي (13000 -> تلمسان 13).
  • التأكد من انتماء البلدية للولاية المعنية.
  • تحديد القيود المسموح بها للمتغيرات والولايات (OrderConstraints).

3. بناء متغيرات المحادثة الصوتية

تُنشئ حزمة @akadli/core المتغيرات الديناميكية التي تُحقن في جلسة ElevenLabs:

  • اسم المشتري واسم المنتج المطلوب والمقاس أو المتغير الحالي.
  • سعر المنتج بالدينار الجزائري بصيغة مناسبة للنطق بالدارجة.
  • اسم الولاية الحالية والبلدية.
  • قائمة المقاسات أو البلديات البديلة المتاحة كحواجز أمان تمنع الوكيل من اقتراح خيارات غير متوفرة.

4. المكالمة الصوتية بالدارجة

يتلقى الزبون المكالمة الهاتفية، حيث يتحدث معه الوكيل بالدارجة بلهجة لطيفة وطبيعية لتأكيد الرغبة في استلام الطلبية والتأكد من تفاصيل المقاس والعنوان.

5. اعتماد القرار وتحديث المتجر

في ختام المكالمة، يُطلق الوكيل أداة الخادم finalize_order_decision. تفحص @akadli/core القرار ضد القيود، ثم تنفذ التعديل عبر دالة provider.applyOrderDecision():

  • CONFIRMED: إضافة وسم akadli-confirmed وملاحظة تأكيد الطلب.
  • MODIFIED: إضافة وسوم akadli-modified و akadli-variant-{variant} وتعديل العنوان أو المتغير في المتجر مع ملاحظة تدقيق.
  • REFUSED: إضافة وسم akadli-refused وإلغاء الطلب تلقائياً في المتجر (إذا كان مفعلاً).