Logic Leap Collections — نظام إدارة تحصيل الديون
منصة عمليات تحصيل ديون لسوق الخليج: تستورد محافظ الدائنين من ملفات Excel بمئات آلاف الصفوف، توزّعها على المحصّلين، تتابع كل دين مكالمة بمكالمة، وتحوّل التحصيل إلى أهداف وعمولات متدرّجة. Django 6 وPostgreSQL 18 وCelery خلف لوحة React عربية.
نظرة عامة
نظام تحصيل ديون مبني على Django: محافظ ديون وتوزيعها على المحصّلين، ملفات العملاء والشركات، خطط السداد والمدفوعات، العمولات والأهداف، سلاسل الموافقات وسجل تدقيق كامل، ومراسلة آلية — مع معالجة دفعات الاستيراد الضخمة عبر Celery وPolars ولوحة React للمتابعة اللحظية.
01التحدي
شركة التحصيل تُستأجر من دائنين — شركة اتصالات مثلًا — لتحصيل ديون متأخّرة. والملف يصل كـ Excel بمئات آلاف الصفوف. استيراده بالطريقة المعتادة (صف بصف عبر ORM) يستغرق ساعات ويوقف النظام، وهذه هي الخطوة الأولى في كل مشروع جديد — فبطؤها يعني بطء كل شيء.
ثم التوزيع: الديون تُوزّع على المحصّلين بأهداف نسبية. التوزيع بالتناوب البسيط يظلم من عنده ملفات صعبة ويكدّس العمل على البعض. والتوزيع العدل يحتاج قسمة نسبية دقيقة لا تُهدر صفًا ولا تكرّره.
ثم المال: العمولة تُحسب على شرائح مبالغ، بمعدّلات لها تواريخ سريان، عبر ثلاثة مستويات (محصّل، مشرف، مدير) — وكل دفعة قد تحتاج موافقة متعدّدة الخطوات قبل أن تُحسب.
والنظام عربي أولًا من اليمين لليسار، ويحتاج إشعارات لحظية للموافقات.
02الحل
الاستيراد بُني كمسار عالي الأداء: الملف يُقرأ ويُعالَج مُتَّجهيًا (vectorised) عبر polars وPyArrow، ثم يُحمَّل إلى PostgreSQL بـ COPY FROM STDIN لا بإدراج صف بصف — بمعدّل مستهدف نحو 71 ألف صف في الثانية. والعملية تمرّ بمراحل صريحة: رفع، معاينة، تعيين أعمدة، ثم بدء — والتنفيذ على طابور Celery مخصّص للأعمال الثقيلة مع وظيفة خلفية تتابع التقدّم، والصفوف الفاشلة تُنزَّل كملف CSV بدل إفشال الدفعة كلها.
التوزيع لا يستخدم التناوب: يقسّم نسبيًا بطريقة Hamilton (أكبر البواقي) لضمان قسمة دقيقة بلا فقد ولا تكرار، ثم يختار الأقل حِملًا — فالعدل بنيوي لا تقديري. وإعادة التوزيع تدوّر الديون المهملة مع حفظ سجل التعيينات.
والمعمارية منظّمة بانتظام: كل تطبيق يضع منطقه في طبقة خدمات ترجع ServiceResult، والواجهات (views) نحيفة، والاستجابة كلها في مغلّف موحّد — فالسلوك متوقّع في 394 نقطة نهاية.
والمال مبني بصراحة: معدّلات عمولة بشرائح مبالغ وتواريخ سريان، دفتر إجماليات لكل مستوى، وجولة عمولة شهرية تحسب من الإجماليات مقابل الأهداف. والموافقات محرّك قابل للتعريف (قالب ← خطوات مرتّبة ← نسخة تنفيذ) يُشعِر المعتمدين لحظيًا عبر WebSocket.
والواجهة React 18 بـ TypeScript عربية RTL بالكامل، مع وضع محاكاة (mock) يسمح بتطويرها دون خلفية.
03الأثر
استيراد محفظة ضخمة صار عملية دقائق تُتابَع بمؤشّر تقدّم بدل ساعات تُعطّل النظام — وهي الخطوة التي كانت تؤخّر بدء كل مشروع جديد.
والتوزيع صار قابلًا للتفسير: المحصّل يعرف لماذا وصله هذا العدد، والإدارة تعرف أن القسمة دقيقة لا تقريبية.
والعمولة تُحسب من دفتر إجماليات وقواعد معرّفة بتواريخ سريان، فالخلاف على الأرقام صار مراجعة سجل لا مفاوضة. وكل ذلك موثّق في تسع وثائق مرجعية تشير إلى الكود بالسطر — بما فيها سجل مخاطر صريح للثغرات المعروفة.
أبرز ما يقدمه النظام
الوحدات التي جرى تسليمها وتشغيلها فعليًا.
-
01
استيراد محافظ Excel/CSV بمئات آلاف الصفوف عبر polars وCOPY FROM STDIN، بمراحل معاينة وتعيين أعمدة ومتابعة تقدّم وتنزيل الصفوف الفاشلة.
-
02
توزيع عادل بقسمة Hamilton النسبية ثم اختيار الأقل حِملًا، وإعادة توزيع تدوّر الديون المهملة بسجل تعيينات.
-
03
عمل المحصّل على الدين: سجل مكالمات، ملاحظات، وعود سداد، حالات مصنّفة إيجابًا وسلبًا، ومستندات مرفوعة.
-
04
مدفوعات بموافقة، ودفتر إجماليات محصّلة على ثلاثة مستويات (محصّل، مشرف، مدير).
-
05
أهداف شهرية ومعدّلات عمولة بشرائح مبالغ وتواريخ سريان، وجولة عمولة تُحسَب وتُراجَع وتُقفَل.
-
06
محرّك موافقات قابل للتعريف: قالب ثم خطوات مرتّبة ثم نسخة تنفيذ، بإشعار المعتمدين عبر WebSocket.
-
07
محرّك تقارير قائم على تعريفات: مخرجات JSON أو Excel، تحقّق فوري وتشغيل غير متزامن.
-
08
أدوار تراكمية تُزرَع بأمر إداري، ومحادثة فردية، وصندوق إشعارات دائم، وسجل تدقيق لا يُعدَّل.
-
09
إخفاء الأرقام المستثناة وإلغاء تكرار الهواتف، ووظائف خلفية لكل عمل ثقيل بمتابعة حالة ونتيجة.
-
10
لوحة React 18 بـ TypeScript عربية RTL بالكامل، مع وضع محاكاة يسمح بتطوير الواجهة دون خلفية.
-
11
تسع وثائق مرجعية تشير إلى الكود بالسطر، وسجل مخاطر صريح للثغرات المعروفة.
التقنيات المستخدمة
ما بُني به النظام فعليًا — لا قائمة عامة.