SYS-01 قيد التشغيل الفعلي

منصة عمليات للتجزئة

منصة شاملة مستضافة ذاتيًا تدير خدمة العملاء وعمليات المحتوى لـ English Home Libya — إجابات مطابقة للكتالوج، وتعرّف من الصور، ونشر موثوق، وتسليم للبشر.

الدور
عمل فردي — البنية المعمارية والتنفيذ والنشر والتشغيل
الفترة
2025 – حتى الآن
التقنيات
TypeScript · Next.js · PostgreSQL · Kysely · Docker Compose · Caddy · Gemini API · Meta Graph API
روابط
شكل 01.0 مخطط معماري بنية النشر الفعلية من المستودع — خادم واحد مُدار ذاتيًا تحت Docker Compose (نطاقات توضيحية).

ملخص لمسؤولي التوظيف

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

OPS-FLOW

تصور تفاعلي · اسحب للاستكشاف

تصور هندسي ثلاثي الأبعاد

النظام كتركيب تفاعلي

تدفق عمليات ثلاثي الأبعاد: القنوات الاجتماعية، والاستقبال الدائم، وحل الكتالوج، والتسليم المعاملاتي، والتحويل البشري.

يمكن استخدام سهمي اليمين واليسار لتدوير المشهد. يوجد وصف نصي كامل، ولا تعتمد أي حقيقة على الرسم وحده.

مسار الطلب — من قناة Meta إلى التسليم البشري

مخطط خطي بثماني عقد يمثل تسلسل المعالجة من استقبال الرسالة حتى التسليم البشري.

  1. يرسل العميل سؤالًا عبر Messenger أو Instagram Direct — غالبًا «بكم هذا؟» مع صورة. تصل الرسالة عبر Meta webhook.

  2. تُحفظ الأحداث في PostgreSQL كوظائف قابلة للاستئناف قبل المعالجة؛ كما تمنع مفاتيح الإزالة تكرار معالجة webhook نفسه.

  3. تُقرأ الأسعار من الكتالوج الحي فقط — أكثر من 4,700 منتج (يوليو 2026) — ولا يُخترع سعر أبدًا.

  4. التعرف على المنتج من الصورة يتبع قاعدة «لا تخمين»: المجموعة الفارغة تعيد «لا يوجد»، والتصحيحات البشرية تعلّم المطابق.

  5. يجمع النظام الرسائل المتتابعة ويقرر الرد اعتمادًا على أدوات الكتالوج فقط، مع إعادة فحص ai_enabled لحظة الإرسال — إن تدخل إنسان أثناء التوليد يُسقَط الرد.

  6. لا يمكن أن تتسرب صيغة الأدوات أو أي نص داخلي إلى رسالة عميل.

  7. تُسجّل نية الإرسال داخل المعاملة نفسها ثم ينفذها عامل دائم؛ لا تُوسم رسالة بأنها «سلّمت» إلا بعد تأكيد واجهة Meta.

  8. لحظة تحول النية إلى شراء أو استرجاع أو شكوى، تنتقل المحادثة إلى إنسان — وتتوقف الأتمتة.

اختر مرحلة لفحصها

المشكلة

بُنيت هذه المنصة وتُشغَّل لصالح English Home Libya، وهو نشاط تجزئة يخدم عملاء في ليبيا. تصل أسئلة المنتجات باللهجة الليبية عبر Messenger وInstagram Direct، وغالبًا في صورة مرفقة بسؤال «بكم هذا؟». وتعني الإجابة الآمنة تحديد منتج واحد من أكثر من 4,700 منتج في الكتالوج (حتى يوليو 2026)، ونشر المحتوى من دون إرسال مكرر، وعدم اختراع سعر أو حالة تشغيل أبدًا. وقد جاءت المتطلبات من خبرتي المباشرة في إدارة الأنظمة الرقمية للعلامة.

النظام

يراسل العملاء أيًا من القناتين؛ فتحفظ المنصة webhook الموقّع، وتجمّع دفعات الرسائل، وتتعرف على المنتج بالكود أو بالنص بثلاث لغات أو من صورة، ثم تجيب بأسعار تُقرأ من الكتالوج الحي فقط، وتسلّم المحادثة لإنسان عند تحول الطلب إلى شراء أو استرجاع أو شكوى. وتغطي لوحة العمليات ثنائية اللغة، المصممة أولًا للعربية (RTL)، الوارد والتحليلات ومراجعة الصور وضوابط التشغيل واستوديو محتوى يُعِد وينشر منشورات وقصص فيسبوك وإنستغرام.

لا يرد webhook بالنجاح إلا بعد حفظ الحدث. ويتولى عامل منفصل مهامًا دائمة مدعومة بـ PostgreSQL وصندوق إرسال معاملاتي، بحيث يمكن استئناف الردود والمنشورات من دون تكرار صامت. وتبقي جلسات المدراء المتعددة وفحوص الجاهزية وسجل التدقيق حالة التشغيل واضحة.

يغذي هذا الخطّ نظامان فرعيان منشوران كمستودعين مستقلين: أداة جمع كتالوج قابلة للاستئناف جمعت كتالوج صور تجاوز 11 غيغابايت خلال عملية البناء الموثقة، ومحرك مطابقة حتمي ثلاثي اللغات يقرر أي منتج تركي مجموع هو نفسه المنتج المسعّر في الكتالوج العربي/الإنجليزي — المطابقات عالية الثقة فقط تُعتمد تلقائيًا، وكل ما عداها يذهب لمراجعة بشرية. والتعرف من الصور يتبع قاعدة «لا تخمّن أبدًا»: القائمة الفارغة تعيد «لا شيء» لا أقرب منتج سيئ، والتصحيحات البشرية المؤكدة تعلّم المحرك.

قرارات وُلدت من أعطال حقيقية

كل من هذه الضوابط موجود لأن شيئًا ما حدث فعلًا ذات مرة:

  • تجميع الدفعات — العملاء يرسلون خمس رسائل قصيرة لا رسالة واحدة؛ نافذة خمس ثوانٍ تمنع خمسة ردود منفصلة.
  • حارس التجاوز — استجابة النموذج البطيئة لا يمكنها الكتابة فوق حالة محادثة أحدث.
  • إعادة الفحص عند الإرسال — إذا تولى إنسان المحادثة أثناء التوليد، يُسقَط رد الذكاء الاصطناعي ولا يُرسل.
  • منقّي المخرجات — صيغ الأدوات البرمجية لا تتسرب أبدًا إلى رسالة عميل.
  • تسليم صادق — لا تُعلَّم رسالة كمُسلَّمة إلا بعد تأكيد الواجهة البرمجية.

من الاستضافة المجانية إلى بنية مملوكة

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

التحقق والحدود

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

الأدلة