مفتوح المصدر

Depotwin

منصة مفتوحة المصدر، بُنيت باستخدام Claude Code · توأم رقمي حيّ لأسطول مركبات

توأم رقمي حيّ ثلاثي الأبعاد لـ240 مركبة محاكاة في موسكو: مسار بيانات بلغة Go وNATS JetStream إلى TimescaleDB، ونماذج أعطال تنبّه إلى الأعطال قبل وقوعها بأيام، ومساعد بنموذج لغوي محلي عبر استعلامات للقراءة فقط، وتطبيق للسائقين يعمل دون اتصال.

Depotwin — معاينة

المشكلة

تعرض لوحات الأساطيل مواقع المركبات، لكنها لا تعرض ما يوشك أن يتعطل، ونادراً ما تُقارَن تنبيهاتها وتوقعاتها بما حدث فعلاً.

الحل

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

التفاصيل التقنية

التُقط ارتفاع الحرارة قبل 4.5 يوم (القواعد: 3.0) بإنذارات كاذبة أقل؛ و17 من 18 سؤالاً محجوزاً أجاب عنها المساعد بشكل صحيح؛ و200 طلب في الثانية دون أخطاء تحت الحمل؛ وعرض حيّ وتكامل مستمر لكل جزء.

نظرة عامة

Depotwin منصة مفتوحة المصدر بنيتُها باستخدام Claude Code لأعرض نظاماً آنياً كاملاً مقيساً على حقيقة مرجعية. يقود محاكٍ مكتوب بلغة Go ‏240 شاحنة صغيرة وشاحنة وحافلة صغيرة على شبكة طرق موسكو من OpenStreetMap، ويرسل القراءات كما تفعل أجهزة تتبّع GPS، ويدسّ أعطالاً: سرقة الوقود، وتلف منظِّم الحرارة والبطارية، وتزييف موقع GPS، والقيادة ليلاً. وما حدث فعلاً يُنشر على حدة، فتُقيَّم أنظمة الكشف دون أن تراه.

تمرّ القراءات عبر NATS JetStream إلى TimescaleDB (‏13.4 مليون قراءة أُعيد تشغيلها دون فجوات أو تكرار رغم إعادة التشغيل) ومنها إلى توأم ثلاثي الأبعاد مبني بـReact وMapLibre وthree.js. وتكتشف خدمة تنبيهات على FastAPI الأعطال لحظة وقوعها، وتنبّه نماذج LightGBM المبنية على خصائص يومية إلى الأعطال قبل وقوعها: على أساطيل لم ترها من قبل التقطت 156 من 157 عطلاً بارتفاع الحرارة قبل 4.5 يوم، مقابل 3.0 أيام لقواعد العتبات، وبإنذارات كاذبة أقل. ولا يستطيع المساعد المبني على Qwen 3.5 9B المحلي إلا استدعاء سبعة استعلامات مُتحقَّق منها للقراءة فقط، ويعرض البيانات وراء كل إجابة؛ وأجاب إجابة صحيحة عن 17 من 18 سؤالاً محجوزاً للاختبار.

ويستخدم السائقون تطبيقاً بـExpo يحفظ الورديات والفحوص وبلاغات الأعطال مع الصور دون اتصال، ثم يرسلها بالترتيب دون تكرار، فيظهر العطل في التوأم فوراً. ويراقب Prometheus وGrafana كل مرحلة، وقواعد التنبيه مختبَرة، وكشف اختبار الحمل بـk6 أين كانت الواجهة البرمجية تنهار؛ وبعد الإصلاحات تخدم 200 طلب في الثانية دون أخطاء مع بقاء 200 مشاهد متصلين.

ماذا يفعل

  • يحاكي بلغة Go ‏240 شاحنة صغيرة وشاحنة وحافلة صغيرة على شبكة طرق موسكو الحقيقية (OpenStreetMap)، مع أعطال مدسوسة وحقيقة مرجعية لا يراها النظام العامل
  • ينقل القراءات عبر NATS JetStream إلى TimescaleDB، ثم عبر WebSocket إلى توأم ثلاثي الأبعاد (React وMapLibre وthree.js)، مباشرةً أو بإعادة التشغيل
  • يتنبأ بارتفاع حرارة المحرك وتلف البطارية قبل أيام باستخدام LightGBM؛ ويجيب نموذج لغوي محلي (Qwen 3.5 9B) عن الأسئلة بالعربية والروسية والإنجليزية عبر استعلامات ثابتة للقراءة فقط
  • تطبيق للسائقين بـExpo ‏(React Native) يعمل دون اتصال؛ وفي التشغيل: Prometheus وGrafana وقواعد تنبيه مختبَرة واختبار حمل بـk6

الخطوة التالية

تبحث عن مطوّر Full-Stack أو Python — أو تحتاج إلى بناء شيء مشابه؟ لنتحدث.

منفتح على عروض العمل — حضورياً أو بنظام هجين في موسكو، أو عن بُعد؛ بدوام كامل أو بعقد. أردّ خلال 48 ساعة — وأسرع عبر Telegram.

تواصل معي Telegramتحميل السيرة الذاتية

الحسن الفران.

© 2026 · صمّمته وبنيته بنفسي. التقنيات: Next.js وTailwind وFramer Motion.

توقيتي المحلي: · موسكو

ملاحظات
كيف بُني هذا الموقع

التقنيات

Next.js (App Router) وReact، مع Tailwind CSS للتنسيق وFramer Motion للحركة. يُرسل نموذج التواصل الرسائل عبر Resend، والموقع مستضاف على Vercel.

ثلاث لغات وتصميم واحد

لكل من النسخ الإنجليزية والروسية والعربية عنوانها الخاص (/en و/ru و/ar)، وكلها تستخدم المكوّنات نفسها. يعتمد التصميم على خصائص CSS المنطقية (start/end بدلاً من left/right)، فتنعكس النسخة العربية من اليمين إلى اليسار دون أنماط منفصلة. ويُرسل الخادم كل صفحة بلغتها واتجاه نصها مسبقاً، فلا ينقلب شيء بعد التحميل، ولا يُنزَّل الخط العربي إلا عند ظهور نص عربي على الشاشة.

الأداء وسهولة الوصول

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

الكود المصدري على GitHub