الاتحاد الموحد سويوز
العمارة الدفاعية التكاملية للقرن الحادي والعشرين
تقرير استراتيجي موسَّع
I. مقدمة: الطبيعة الجديدة للصراع
بعد World War II، لم تعد الحرب عسكرية حصرًا.
اليوم الصراع هو:
- أنظمة العقوبات،
- العزلة التقنية،
- الهجمات السيبرانية،
- تدمير الهوية،
- إدارة السرديات،
- تقويض الأنظمة المالية.
لم تعد الدفاع تعادل الجيش.
الدفاع هو تكامل النظام.
II. فلسفة عقيدة النصر
نصر القرن الحادي والعشرين هو حالة يصبح فيها:
- العدوان غير مجدٍ اقتصاديًا.
- الهجوم المعلوماتي لا يدمر المجتمع.
- التناقضات الداخلية لا تتطور إلى انقسام.
- يبقى الاتحاد مركز جذب.
الصيغة:
النصر = الردع × السيادة × المعنى × التنمية
إذا كان أي عامل يساوي صفرا — فالمنظومة هشة.
ثالثا. هندسة الاتحاد الواحد 1. المنظومة العسكرية الاستراتيجية
المهمة — ضمان حتمية الرد.
العناصر الرئيسية:
- الردع الاستراتيجي،
- أنظمة الدفاع الصاروخي والدفاع الجوي من الجيل الجديد،
- القيادة السيبرانية،
- أنظمة الإدارة الذاتية،
- البنية التحتية للأقمار الصناعية المحمية.
المبدأ: يجب أن يكون النزاع المحتمل خاسرا سلفا للمبادر.
2. السيادة التكنولوجية
من يتحكم بالتقنيات — فهو يحدد القواعد.
الاتجاهات:
- الإلكترونيات الدقيقة،
- الاستقلال البرمجي،
- الذكاء الاصطناعي والبيانات الكبيرة،
- أنظمة الطاقة الذاتية،
- البنية التحتية الرقمية الحرجة.
الاعتماد = خطر استراتيجي.
3. الاستدامة الاقتصادية
بدون اقتصاد مستدام يستنزف الدفاع.
المنظومات:
- تجارة متنوعة،
- الأمن الغذائي،
- الاستقلال الطاقي،
- آليات تسوية بديلة،
- التخطيط الصناعي الطويل الأجل.
4. الأمن الدلالي
الانقسام المعلوماتي يدمّر أسرع من الصواريخ.
يلزم:
- التواصل الاستراتيجي،
- السياسة الثقافية،
- تعليم يقوم على التفكير المنظومي،
- حماية من التلاعب الإدراكي.
يجب أن يفهم المجتمع لماذا يوجد الاتحاد.
5. دبلوماسية النووسفير
أعلى مستوى للدفاع هو خفض قابلية البيئة للنزاع.
المبادئ:
- تحالفات البنية التحتية،
- الترابط الاقتصادي،
- منصات التعاون،
- الاندماج في السلاسل العالمية دون فقدان السيادة.
الهدف هو بناء عالم يصبح فيه الحرب غير عقلاني.
رابعا. نموذج مستويات الصمود الخمسة للاتحاد
المستوى |
معيار الصمود |
الخطر عند الضعف |
|
العسكري |
الردع المضمون |
العدوان الخارجي |
|
تكنولوجية |
الأنظمة المستقلة |
حجب التطور |
|
اقتصادية |
الاكتفاء الذاتي |
الاستنزاف |
|
اجتماعية |
الثقة والعدالة |
الانقسام الداخلي |
|
دلالي |
المهمة المشتركة |
تدهور الهوية |
خامسا. مبدأ “الدفاع عبر التنمية”
النموذج الكلاسيكي:
الأمن أولا ثم التنمية.
النموذج التكاملي للاتحاد:
التنمية هي الأمن.
الطفرة التكنولوجية تخفض احتمال النزاع أكثر من زيادة عدد الجيش.
سادسا. النموذج المؤسسي
- مركز التحليل الاستراتيجي.
- معهد السيادة التكنولوجية.
- مجلس السياسة الدلالية.
- منصة التعاون الصناعي.
- إطار الإدارة الرقمية.
يجب أن تعمل جميع العناصر ككائن حي واحد.
السابع. مخاطر القرن الحادي والعشرين
- الحصار التكنولوجي،
- حروب العقوبات،
- الاستنزاف الديموغرافي،
- التهديدات السيبرانية،
- انهيار المنظومة التعليمية.
يجب أن يكون الدفاع استباقيا لا تفاعليا.
الثامن. الخاتمة
الاتحاد الموحد ليس كتلة عسكرية. إنه هندسة الصمود.
النصر في القرن الحادي والعشرين هو:
- اقتصاد مستقر،
- استقلال تكنولوجي،
- تكامل ثقافي،
- الردع الاستراتيجي،
- تعاون دولي.
فقط الجمع بين هذه العوامل يشكل أمانا حقيقيا.
مشروع رسالة مرافقة
إلى تقرير "الاتحاد الموحد: الهندسة الدفاعية التكاملية للقرن الحادي والعشرين"
الزملاء الأعزاء،
في ظروف تحول منظومة الأمن العالمية، وتسارع الدورات التكنولوجية، ونمو الأشكال الهجينة للمواجهة، يكتسب الانتقال من التدابير المجزأة إلى هندسة الصمود المتكاملة أهمية خاصة.
في إطار تطوير الخبرات المكتسبة، يُقدَّم تقرير استراتيجي
"الاتحاد الموحد: الهندسة الدفاعية التكاملية للقرن الحادي والعشرين".
يضع التقرير مقاربة منهجية لمسائل:
- الردع الاستراتيجي من الجيل الجديد،
- السيادة التكنولوجية والرقمية،
- الاستدامة الاقتصادية في ظروف ضغط العقوبات،
- حماية الفضاء المعرفي والدلالي،
- خفض حدة النزاعات عبر التعاون في البنية التحتية.
ينطلق النموذج المقترح من المبدأ:
التنمية هي الأمن.
يُنظر في التقرير إلى الدفاع ليس فقط كإطار عسكري، بل كمجموعة من العناصر المترابطة: الصناعة والعلوم والتعليم والسياسة الإعلامية والتعاون الدولي.
وقد أُولي اهتمام خاص لـ:
- دمج أنظمة الإدارة الرقمية،
- صمود البنية التحتية الحيوية،
- التنسيق المؤسسي للاتجاهات الاستراتيجية.
تتسم الوثيقة بطابع خبير تحليلي وهي مخصصة للمناقشة في الوسط المهني.
نحن مستعدون لتقديم نسخة موسعة وملاحق تحليلية وخارطة طريق مرحلية للتنفيذ.
مع التقدير،
س. ل. سوكولوف
مشروع رسالة نسخة معززة.
بشأن إرسال التقرير الاستراتيجي حول البنية المتكاملة للاستدامة الدفاعية
المحترم ________،
بهدف تطوير المقاربة المنظومية لضمان الاستدامة الوطنية، يُرسَل التقرير التحليلي:
«الاتحاد الموحد: البنية الدفاعية المتكاملة للقرن الحادي والعشرين»
تتضمن الوثيقة نموذجا منظما للدفاع يقوم على خمس منظومات مترابطة ومؤشرات فعالية قابلة للقياس.
1. المنظومة العسكرية الاستراتيجية
يُقترح الانتقال من التراكم الكمي إلى معايير ضمان عدم جدوى العدوان.
المؤشرات الرئيسية:
- معامل استقلالية منظومات الإدارة (نسبة الاستقلال عن المنصات الخارجية)؛
- استدامة البنية التحتية الحيوية (زمن الاستعادة بعد الحادث)؛
- حصة قنوات الاتصال المحمية؛
- مستوى الاستدامة السيبرانية (عتبة صد الهجمات).
2. السيادة التكنولوجية
التركيز على تقليص الاعتماد الحرج على الموردين الخارجيين.
المعايير المستهدفة المقترحة:
- حصة المكونات المحلية في القطاعات الحيوية؛
- مستوى التوطين في الإلكترونيات الدقيقة؛
- استقلالية الحلول البرمجية في القطاع الحكومي؛
- حصة البيانات الاستراتيجية المستضافة في مراكز المعالجة الوطنية.
3. الاستدامة الاقتصادية
بدون قاعدة اقتصادية، تنهك الإمكانات الدفاعية.
المقاييس:
- معامل الاكتفاء الذاتي الصناعي؛
- الاستقلالية الغذائية (نسبة التزويد الداخلي)؛
- تنويع اتجاهات التصدير؛
- استدامة آليات التسوية تجاه الضغط الخارجي.
4. الاستدامة المعرفية والاجتماعية
للنزاعات المعاصرة طابع هجين.
المؤشرات:
- مستوى الثقة العامة في المؤسسات؛
- حصة المواطنين المنخرطين في البرامج التعليمية للتفكير المنظومي؛
- مؤشر الاستدامة المعلوماتية؛
- سرعة تحييد الحملات المعلوماتية التدميرية.
5. مبدأ «الدفاع عبر التنمية»
يبرر التقرير استراتيجية يقوم فيها ما يلي:
يُنظر إلى تنمية الصناعة والعلوم والتعليم باعتبارها عنصرا في المنظومة الدفاعية.
يُقترح التزامن بين:
- السياسة الصناعية،
- التخطيط العلمي والتكنولوجي،
- التحول الرقمي،
- استراتيجية الكوادر.
النتيجة العملية لتطبيق النموذج
- تقليص المخاطر الاستراتيجية؛
- رفع مستوى القابلية للإدارة في السيناريوهات الأزمية؛
- تشكيل بنية مستدامة للردع؛
- تعزيز الفاعلية الدولية عبر المشاريع البنية التحتية.
التقرير ذو طابع تحليلي ومخصص للنظر الخبير. نحن مستعدون لتقديم حسابات موسعة ومصفوفة مخاطر وخارطة طريق مرحلية.
أولاً. التقرير: «الاتحاد الموحد: البنية الدفاعية التكاملية في القرن الحادي والعشرين»
7 استنتاجات رئيسية
1. تغيرت طبيعة الصراع
المواجهة المعاصرة ذات طابع هجين: عقوبات، وقيود تكنولوجية، وهجمات إلكترونية، وتأثير معلوماتي. المنظومة العسكرية ليست سوى أحد العناصر.
2. الدفاع = منظومة من الأطر المترابطة
يتضمن النموذج 5 مستويات:
- العسكري-الاستراتيجي
- تكنولوجية
- اقتصادية
- الاجتماعي-المعرفي
- المؤسسي-التنسيقي
إضعاف أي مستوى يقلل من استقرار المنظومة بأكملها.
3. التبعية التكنولوجية — الخطر الرئيسي في القرن الحادي والعشرين
تتشكل قابلية التأثر الحرجة في مجالات:
- الإلكترونيات الدقيقة،
- البرمجيات،
- تقنيات الطاقة،
- البنية التحتية الرقمية.
تقليل التبعية — أولوية استراتيجية.
4. الاستقرار الاقتصادي — شرط الردع
بدون قاعدة صناعية لا يمكن تحقيق دفاع طويل الأمد.
يلزم:
- تنويع التجارة،
- آليات تسوية مستقلة،
- تطوير سلاسل إنتاجية بدورة كاملة.
5. الاستقرار المعرفي يؤثر على الأمن مباشرة
الانقسام المعلوماتي في المجتمع قادر على إلحاق ضرر مماثل لضربة عسكرية. الأمر يتطلب عملاً منهجياً مع:
- التعليم،
- البيئة الإعلامية،
- السياسة الثقافية.
6. التنمية عنصر من عناصر الدفاع
الاستثمارات في:
- العلم،
- البنية التحتية،
- الإدارة الرقمية،
- التحديث الصناعي
تقلل من احتمال الصراع أكثر من مجرد تعزيز القوات.
7. الهدف ليس النصر في الحرب، بل منع الحرب
البنية الدفاعية الفعالة تجعل العدوان بلا معنى اقتصادياً واستراتيجياً.
ثانياً. مصفوفة المخاطر
(الاحتمال × الضرر × تدابير الرد)
|
№ |
الخطر |
الاحتمال |
الضرر المحتمل |
تدابير مضادة |
|
1 |
حصار تكنولوجي |
مرتفعة |
تقييد التنمية، والاعتماد |
توطين الإنتاجات الحيوية |
|
2 |
هجمات سيبرانية على البنية التحتية |
مرتفعة |
اضطراب الإدارة |
إنشاء منظومات مستقلة وأنظمة احتياطية |
|
3 |
ضغط العقوبات |
متوسطة–عالية |
خسائر مالية |
تنويع آليات التسوية |
|
4 |
زعزعة الاستقرار المعلوماتي |
مرتفعة |
استقطاب اجتماعي |
برامج محو الأمية الإعلامية والاتصال الاستراتيجي |
|
5 |
تراجع ديموغرافي |
متوسطة |
إضعاف إمكانات الكوادر |
دعم السياسة الأسرية والتعليمية |
|
6 |
تسرب الكفاءات التكنولوجية |
متوسطة |
فقدان السيادة العلمية |
الاستثمار في البحث والتطوير وبرامج الكوادر |
|
7 |
قيود الطاقة |
منخفضة–متوسطة |
تراجع الإمكانات الصناعية |
تطوير أنظمة طاقة مستقلة |
التركيز الختامي للرسالة
في الرسالة المرفقة يمكن إضافة فقرة ختامية:
سيسمح تطبيق النموذج التكاملي للاستدامة الدفاعية بالانتقال من إدارة المخاطر التفاعلية إلى هندسة استباقية لمنع النزاعات.
قسم معزز
الاستدامة الاقتصادية كمنظومة دفاع
1. الأطروحة الاستراتيجية
الاقتصاد ليس «دعماً» للدفاع.
الاقتصاد هو أساس الردع.
تاريخياً لم تُؤمَّن الاستدامة بالقوة العسكرية وحدها، بل أيضاً بالإمكانات الصناعية. بعد World War II أصبح التعبئة الصناعية العامل الحاسم في النصر.
في القرن الحادي والعشرين، التعبئة = استقلالية تكنولوجية ومالية.
2. المعايير الرئيسية للاستدامة الاقتصادية
2.1. الاكتفاء الذاتي الصناعي
المؤشرات المستهدفة (أفق 5–7 سنة):
- ≥ 75% من التوطين في القطاعات الحيوية (بناء الآلات، والطاقة، والمجمع الصناعي العسكري)؛
- ≥ 60% من توطين قاعدة المكونات الإلكترونية الدقيقة؛
- ≥ 80% من التزويد الداخلي بالمواد الاستراتيجية.
المقياس الرقابي: مؤشر الاستقلالية الصناعية (IPA).
2.2. الاستقرار المالي
مخاطر القرن الحادي والعشرين هي الحصار الحسابي والاعتماد على العملات الأجنبية.
الأهداف المرجعية:
- ≥ 70% من العمليات التجارية الخارجية — ضمن آليات حسابية بديلة؛
- تشكيل نموذج احتياطي للتسويات بين المصارف؛
- حصة الاحتياطيات الاستراتيجية ≥ 24 أشهر من تغطية واردات البنود الحرجة.
المؤشر الضابط: معامل الاستقلال المالي (KFI).
2.3. الاستقلال الطاقي
الطاقة = قابلية الإدارة. المعايير:
- ≥ 90% من الميزان الطاقي الداخلي من الموارد الذاتية؛
- ≥ 20% من حصة التوليد الموزع؛
- إسناد احتياطي للمنشآت الحرجة (100%).
المقياس: مؤشر الاستدامة الطاقية (IEU).
2.4. الأمن الغذائي
الغذاء عامل من عوامل الاستقرار الاجتماعي.
الأهداف:
- ≥ 95% من التزويد الداخلي بالمنتجات الأساسية؛
- احتياطي استراتيجي ≥ 12 أشهر؛
- استقلال صندوق البذور ≥ 80%.
المؤشر: معامل الاستقلال الغذائي (KPA).
2.5. القيمة المضافة التكنولوجية
النموذج القائم على المواد الأولية يعزز الهشاشة. المتجه المستهدف:
- نمو حصة المنتجات ذات القيمة المضافة العالية ≥ 50% في هيكل الصادرات؛
- زيادة النفقات على البحث والتطوير إلى ≥ 3% من الناتج المحلي الإجمالي؛
- نمو حصة الصناعات عالية التقنية ≥ 25% من الناتج المحلي الإجمالي.
المقياس: مؤشر العمق التكنولوجي (ITG).
3. الآليات المؤسسية للتنفيذ
4. النموذج الاقتصادي «الدفاع عبر التنمية»
الصيغة:
الاستدامة الاقتصادية = الإنتاج × التكنولوجيا × الاستقلال المالي × الكوادر
إذا أُضعف عنصر واحد — تصبح المنظومة هشة.
5. مصفوفة المخاطر الاقتصادية (النسخة المعززة)
|
الخطر |
الاحتمال |
الضرر |
أولوية الاستجابة |
|
الحصار التكنولوجي |
مرتفعة |
حرج |
الأقصى |
|
العزلة المالية |
متوسطة–عالية |
مرتفع |
مرتفع |
|
القيود اللوجستية |
متوسطة |
مرتفع |
مرتفع |
|
التبعية للمواد الأولية |
متوسطة |
متوسط |
متوسط |
|
تراجع ديموغرافي |
متوسطة |
الاستراتيجي |
الأقصى |
6. الموقف النهائي للرسالة
يمكن إضافة لمسة ختامية:
تُعتبر الاستدامة الاقتصادية عنصرا في معمارية الدفاع الوطنية، يضمن القدرة الطويلة الأمد على الردع الاستراتيجي والتطور.
الملحق أ. تحليل سيناريوهي للاستدامة
المنهجية
نقيّم المنظومة وفق 5 أطر (العسكري، التكنولوجي، الاقتصادي، المعرفي، المؤسسي) عبر:
- احتمالية الحدث (منخفضة/متوسطة/عالية)،
- الضرر (منخفض/متوسط/عالٍ/حرج)،
- زمن الاستجابة (ساعات/أيام/أسابيع)،
- عتبة الاستدامة (ما الاحتياطيات/البدائل المطلوبة كي لا "ننهار").
السيناريو 1. المتفائل
"منافسة مُدارة + نافذة تنمية"
المحفزات
- الضغط الخارجي لا يتصاعد، والهجمات الهجينة تبقى «خلفية»؛
- تبقى قنوات التجارة/التعاون عبر مسارات بديلة.
نافذة الفرص
- توطين متسارع للمكونات الحرجة؛
- تحديث الصناعة دون نظام التعبئة؛
- نمو الطلب الداخلي على التقنيات العالية.
الإجراءات ذات الأولوية
- رفع برامج البحث والتطوير وبرامج الكوادر (المهندسون/العلوم التطبيقية).
- إيصال إحلال الواردات إلى "الحد الأدنى الحرج" في المكونات.
- إدخال رصد دائم للمخاطر والاعتماديات التقنية (تدقيقات ربع سنوية).
النتيجة المستهدفة
- استدامة دون نظام إجهاد، ونمو العمق التكنولوجي.
السيناريو 2. الأساسي
"ضغط طويل الأمد + موجات قيود"
المحفزات
- حزم قيود جديدة دورية؛
- ارتفاع تكلفة اللوجستيات، واختناقات محلية في الإمداد؛
- تصاعد الحوادث السيبرانية والحملات المعلوماتية.
المخاطر الرئيسية
- "نقاط ضيقة" في الإلكترونيات الدقيقة/صناعة الأدوات الآلية/البرمجيات؛
- إخفاقات في المواد والمكونات الحرجة؛
- تآكل الثقة بسبب الاضطراب الاقتصادي والهجمات على الهوية.
الإجراءات ذات الأولوية
- مصفوفة الاعتماديات الحرجة (المكوّن → المورّد → البديل → المدة).
- الاحتياط: مخزونات المواقع الحرجة (12–24 شهرا).
- إزدواجية أطر الإدارة: قنوات اتصال/بيانات مستقلة.
- تعاون صناعي كامل الدورة (مبدأ التجمّعات).
النتيجة المستهدفة
- تحافظ المنظومة على الضغط دون فقدان السيطرة ودون "أكل" المستقبل.
السيناريو 3. الإجهاد
"تصعيد حاد: انقطاع مالي-تكنولوجي + ضربات سيبرانية"
المحفزات
- تقييد التسويات/السيولة عبر القنوات الخارجية؛
- عقوبات حرجة على المعدات/المكونات؛
- هجمات سيبرانية واسعة النطاق على الطاقة/الاتصالات/اللوجستيات؛
- عملية معلوماتية متزامنة لتحطيم الروح المعنوية/إحداث الانقسام.
ملف الضرر: مرتفع/حرج، لا سيما في الأيام الأولى 30–90.
منظومة مكافحة الأزمات (ما ينبغي أن يكون جاهزاً مسبقاً)
- نمط الاستقلالية: مخططات احتياطية للمدفوعات/المقاصة، قطاعات ذات أولوية.
- غرفة عمليات "war room": مركز موحد لتنسيق الحوادث (سيبراني + لوجستي + شبكة الطاقة + إعلامي).
- الدفاع عن البنية التحتية الحيوية: عزل القطاعات، بروتوكولات يدوية، قدرات احتياطية.
- الاستقرار الاجتماعي: حماية دخول الفئات الأساسية، ضبط أسعار السلة الحرجة.
- إحلال الواردات التعبوي: خطوط إحلال سريعة، إعادة توزيع القدرات.
النتيجة المستهدفة: الحفاظ على القابلية للإدارة، ومنع الانهيار المتسلسل للبنية التحتية.
الملحق ب. جدول التزامن بين القطاعات
الفكرة بسيطة: الاستقرار الدفاعي لا يتحقق بالقطاع، بل بمواضع الوصل (البيانات ↔ الطاقة ↔ الإنتاج ↔ الكوادر ↔ اللوجستيات ↔ المالية ↔ المعنى).
1) مصفوفة "المنظومة → القطاع → المخرج → KPI"
|
المحيط |
القطاعات الداعمة |
المخرج الحرج |
KPI (مثال) |
|
العسكري-الاستراتيجي |
الاتصالات، الأقمار الاصطناعية، صناعة الأجهزة |
إدارة مستدامة |
زمن استعادة الإدارة؛ نسبة القنوات المحمية |
|
تكنولوجية |
الإلكترونيات الدقيقة، صناعة الأدوات الآلية، البرمجيات |
سلاسل مستقلة |
نسبة التوطين؛ نسبة البرمجيات الوطنية في الأنظمة الحرجة |
|
اقتصادية |
الصناعة، الطاقة، المالية |
قاعدة الموارد |
مخزون المواقع الحرجة؛ استقلالية ميزان الطاقة |
|
المعرفي |
التعليم، الإعلام، الثقافة |
استقرار المجتمع |
مؤشر الثقة؛ سرعة تحييد الحملات الإعلامية |
|
المؤسسي |
الإدارة الحكومية، التوحيد القياسي |
التنسيق |
زمن اتخاذ القرارات؛ % المشروعات ذات التزامن بين الوزارات |
2) جدول "7 السلاسل الرئيسية" (أهم مواضع الوصل)
|
السلسلة |
لماذا نحتاجها |
الاختناق |
ما ينبغي تزامنه |
|
الإلكترونيات الدقيقة → الاتصالات → الإدارة |
قابلية إدارة البلاد |
المكونات/المصانع |
التوطين + المعايير + الاعتماد |
|
الطاقة → الصناعة → اللوجستيات |
استقرار الإنتاج |
الشبكات/الاحتياطي |
التوليد الموزع + احتياطي المنشآت |
|
البيانات → الذكاء الاصطناعي → الحماية السيبرانية |
الدفاع الاستباقي |
الكوادر/البرمجيات |
مراكز البيانات + التدريب + بروتوكولات الاستجابة |
|
المال → التسويات → التجارة الخارجية |
استقرار التبادل |
المقاصة/العملة |
تسويات بديلة + احتياطيات + مسارات |
|
المواد → الكيمياء → الهندسة الميكانيكية |
إنتاج بدورة كاملة |
مواد نادرة |
احتياطيات المخازن + إعادة المعالجة + البدائل |
|
التعليم → الكوادر → البحث والتطوير |
طفرة تكنولوجية |
هجرة الأدمغة |
المنح + المدارس الهندسية + طلبات البحث والتطوير |
|
المعنى → الثقة → الجهوزية للتعبئة |
الاستقرار الاجتماعي |
الاستقطاب |
التواصل + الثقافة + محو الأمية الإعلامية |
3) سجل مصغّر "الاعتماديات الحرجة" (قالب السطر)
يُدرج هذا كجدول في الملحق ويُملأ بحسب الواقع:
- البند (المكون/المادة/البرمجيات)
- المنظومة (أين تُستخدم)
- المصدر الحالي (خارجي/داخلي)
- الخطر (الحجب/ارتفاع الكلفة/الانقطاع)
- البديل (نظير/تطوير)
- مدة الاستبدال (6/12/24/36 شهرًا)
- الاحتياطي (المخزون، أشهر التغطية)
- المنظومة المسؤولة (التكنولوجيا/الاقتصاد/المؤسسات)
الملحق ب. اختبار الإجهاد للاستقرار: 10 منظومة حرجة في الاتحاد
المقياس
- عتبة الانهيار — ما يُعدّ "منطقة حمراء" (بحسب الزمن/النطاق).
- التسلسل المتتالي — أي المنظومات تسقط تباعًا.
- خطة الاستعادة — ما نفعله في أول 24 ساعة / 72 ساعة / 30 يومًا.
- مؤشرات الأداء الرئيسية للجهوزية — ما نقيس به الجهوزية الفعلية (لا التقارير).
1) منظومة الطاقة (التوليد + الشبكات + الإرسال والتحكم)
عتبة الانهيار: خسارة ≥ 15% من القدرة في المنطقة لأكثر من 6 ساعة، أو اختلال التردد/استقرار الشبكة.
تسلسل متتالٍ: الاتصال → المياه/الحرارة → الصناعة → اللوجستيات → الرعاية الصحية.
خطة الاستعادة
- 0–24 ساعة: عزل المقاطع المتأثرة بالحوادث، تغذية المنشآت الحيوية بالكهرباء ذات الأولوية، إدخال الاحتياطيات (مولدات الديزل/التوربينات الغازية)، بروتوكولات التحكم اليدوية.
- 24–72 ساعة: إعادة توزيع التدفقات، تشغيل التوليد الموزع، نقل محطات المحولات المتنقلة.
- حتى 30 يوم: إصلاح "الاختناقات"، إنشاء مخططات احتياطية دائمة ومستودعات لمجموعات القطع الحيوية.
KPI
- زمن استعادة الأحمال الحيوية (بالساعات)؛
- نسبة المنشآت الحيوية المزودة بتغذية احتياطية (٪)؛
- زمن التحويل إلى المخططات الاحتياطية (بالدقائق).
2) الاتصالات والتحكم (الخطوط الرئيسية، الاتصالات الخاصة، الشبكات اللاسلكية)
عتبة الفشل: تدهور القابلية للتحكم > 2 ساعة (قنوات غير مستقرة في الحلقات الرئيسية).
تسلسل متتالٍ: الإدارة الحكومية → الدفاع → المالية → اللوجستيات.
خطة الاستعادة
- 0–24 ساعة: الانتقال إلى القنوات الاحتياطية المحمية، أولوية حركة المرور، فصل المقاطع المخترقة.
- 24–72 ساعة: نشر عقد متنقلة، احتياطي عبر الأقمار الصناعية، استعادة التوجيه.
- حتى 30 يوم: تحديث المنظومات المشفرة، "منظومة مزدوجة" للاتصالات على جميع المستويات.
KPI
- نسبة القنوات المحمية (٪)؛
- زمن التحويل إلى الاحتياطي (بالدقائق)؛
- نسبة عقد الاتصالات المستقلة (٪).
3) النظام المالي والتسويات
عتبة الفشل: استحالة إجراء مدفوعات جماعية > 24 ساعة أو تجميد قنوات المقاصة الخارجية.
تسلسل متتالٍ: التجارة → اللوجستيات → التوتر الاجتماعي.
خطة الاستعادة
- 0–24 ساعة: تشغيل منظومة التسويات الاحتياطية (المقاصات الداخلية)، تحديد حدود المخاطر، أولوية الرواتب/المعاشات/المشتريات الحيوية.
- 24–72 ساعة: تحويل العمليات الخارجية إلى آليات بديلة، استقرار السيولة.
- حتى 30 يوم: توسيع قنوات الدفع المستقلة، لوائح "التعبئة المالية".
KPI
- استمرارية المدفوعات للسكان (٪)؛
- نسبة العمليات التي تمر عبر المنظومة الاحتياطية (٪)؛
- زمن استعادة المدفوعات الجماعية (بالساعات).
4) اللوجستيات والنقل (السكك الحديدية/الموانئ/الطرق/العقد الجوية)
عتبة الفشل: تعطل إمدادات الشحنات الحيوية > 72 ساعة أو حظر العقد الرئيسية.
تسلسل متتالٍ: الغذاء → الوقود → الصناعة.
خطة الاستعادة
- 0–24 ساعة: إعادة توجيه المسارات، أولوية الشحنات الحيوية، فرض نظام خاص في العقد.
- 24–72 ساعة: تعبئة الناقلين الاحتياطيين، توزيع مخزونات المستودعات.
- حتى 30 يوم: إنشاء مسارات بديلة، قدرات الحاويات/المستودعات، "الموانئ الجافة".
KPI
- تسليم الشحنات الحيوية وفق اتفاقية مستوى الخدمة (٪)؛
- زمن الالتفاف حول العقدة المحظورة (بالساعات/الأيام)؛
- احتياطي مخزونات المستودعات (أيام التغطية).
5) الغذاء والسلاسل الزراعية
عتبة الفشل: نقص السلة الأساسية في المنطقة > 7 يوم أو صدمة سعرية > الممر المحدد.
تسلسل متتالٍ: الاستقرار الاجتماعي → الثقة → القابلية للتحكم.
خطة الاستعادة
- 0–24 ساعة: الإفراج عن الاحتياطيات، ممرات سعرية للمجموعة الحيوية، لوجستيات ذات أولوية.
- 24–72 ساعة: إعادة التوزيع بين المناطق، دعم المنتجين/التصنيع.
- حتى 30د: تعزيز صندوق البذور/الأعلاف، توسيع التجهيز، البنية التحتية للمخازن.
KPI
- أيام التغطية بالاحتياطي الاستراتيجي؛
- استقرار سعر السلة الأساسية (% الانحراف)؛
- حصة التزويد المحلي (%).
6) الصحة والجهوزية الصحية
عتبة الانهيار: تحميل زائد للمستشفيات الثابتة > 20% من الطاقات لمدة 2+ أسبوع أو نقص في الأدوية الحرجة.
التسلسل: الديموغرافيا ← الاقتصاد ← الثقة.
خطة الاستعادة
- 0–24 ساعة: بروتوكولات الفرز الطبي، إعادة توزيع التدفقات، تعبئة المخزونات.
- 24–72 ساعة: نشر الطاقات المؤقتة، لوجستيات الأدوية/المستهلكات.
- حتى 30د: توسيع الإنتاج المحلي للمواد الحرجة، تحديث المعايير.
KPI
- التزود بالأدوية الحرجة (أيام)؛
- زمن نشر الطاقات الإضافية (يوم)؛
- حصة المنتجات الطبية الحرجة المحلية (%).
7) الإدارة الحكومية واستمرارية السلطة
عتبة الانهيار: العجز عن اتخاذ/إيصال القرارات على المستويات الرئيسية > 2 ساعة.
التسلسل: كل شيء.
خطة الاستعادة
- 0–24 ساعة: الانتقال إلى مراكز إدارة احتياطية، لوائح “الإدارة بدون تقنية معلومات”، القنوات ذات الأولوية.
- 24–72 ساعة: مزامنة المستويات، قيادة موحدة للحادث (غرفة العمليات).
- حتى 30د: “إزدواجية القابلية للإدارة” (المراكز، الكوادر، الاتصال، الإجراءات).
KPI
- زمن استعادة سلسلة القيادة؛
- حصة الأجهزة ذات الإدارة الاحتياطية (%)؛
- وتيرة التدريبات (مرة/سنة).
8) مجمع الصناعات الدفاعية والتعبئة الصناعية
عتبة الانهيار: انقطاع الإنتاج/المكونات الحرجة > 30 يوم.
التسلسل المتعاقب: المنظومة العسكرية ← التكنولوجية ← السياسة الخارجية.
خطة الاستعادة
KPI
9) التعليم/الكوادر/البحث والتطوير (المنظومة الهندسية)
عتبة الانهيار: نقص مستدام في المتخصصين الرئيسيين أو تسرب الكفاءات.
التسلسل: التكنولوجيا ← الصناعة ← الدفاع.
خطة الاستعادة
- 0–24 ساعة: إعطاء الأولوية للكفاءات الرئيسية، “سجل الكوادر”.
- 24–72 ساعة: حزم تحفيزية، برامج إعادة تأهيل متسارعة.
- حتى 30د: مدارس هندسية، منح البحث والتطوير، طلبيات على التطويرات التطبيقية.
KPI
- إخراج المهندسين/سنة حسب الأولويات؛
- حصة البحث والتطوير من الناتج المحلي الإجمالي (%)؛
- مدة إشغال الوظائف الشاغرة في المجالات الحرجة (يوم).
10) الإعلام/البيئة المعلوماتية/الاستقرار المعرفي
عتبة الفشل: الاستقطاب الجماهيري، انخفاض الثقة دون العتبة الحرجة أو نجاح العمليات المعلوماتية المؤدية إلى شلل إداري.
التسلسل: الاستقرار الاجتماعي ← الإدارة الحكومية ← الاقتصاد.
خطة الاستعادة
- خلال 0–24 ساعة: مركز موحد للتواصل في الأزمات، منظومة وقائع سريعة، وقف الذعر.
- خلال 24–72 ساعة: حملات توضيحية، محو الأمية الإعلامية، العمل مع قادة المجتمعات.
- حتى 30 يوم: استراتيجية منظومية للأمن الدلالي (تعليم + ثقافة + إعلام).
KPI
- سرعة دحض التسريبات الهدامة (بالساعات)؛
- مؤشر الثقة في المؤسسات؛
- نسبة السكان ذوي الأمية الإعلامية الأساسية (%).
الملحق ز. "غرفة الحرب" — هيئة أركان موحدة للحادث (قالب الهيكل)
التكوين:
الطاقة، الاتصالات، السيبرانية، المالية، اللوجستيات، الكتلة الاجتماعية، الإعلام، الصناعة.
بروتوكول موحد:
الاكتشاف ← العزل ← الاستعادة ← التحليل اللاحق.
الوضع:
24/7 في سيناريو الإجهاد، تدريبات أسبوعية في الوضع الأساسي.
بطاقة الاستقرار
(معيار للمنظومة الحرجة في الاتحاد)
1. تعريف المنظومة
- اسم المنظومة:
- الإطار (عسكري / تكنولوجي / اقتصادي / معرفي / مؤسسي):
- مستوى الحراجة: I / II / III
- الهيئة/المنسق المسؤول:
2. الدالة الهدفية
ما الذي يجب أن تؤمنه المنظومة في أي ظرف؟ (صياغة في 1–2 سطرًا، بدون كلمات عامة)
3. عتبة الفشل (المنطقة الحمراء)
بشكل محدد:
- زمن التدهور:
- النطاق:
- فقدان الوظائف (%):
4. الاحتياطي
- الاحتياطي المادي (الطاقات، المستودعات، المعدات):
- الاحتياطي المعلوماتي (قنوات مكررة):
- الاحتياطي الكوادري:
- الاحتياطي المالي:
5. سيناريو الاستجابة. 0–24 ساعة
(الإجراءات الأولى) 24–72 ساعة
(الاستقرار) حتى 30 يوم
(الاستعادة والتعزيز)
6. مؤشرات الأداء الرئيسية للاستقرار
- وقت الاستعادة (RTO):
- فقدان البيانات المسموح به (RPO):
- % الاستقلالية:
- وتيرة اختبارات الإجهاد:
- مؤشر الجاهزية (الإجمالي):
7. مستوى النضج
1 — إعلاني
2 — منفّذ جزئياً
3 — عامل
4 — مُختبَر بانتظام
5 — صامد أمام سيناريو الإجهاد
مثال 1
بطاقة الصمود — منظومة الطاقة
الإطار: اقتصادي-تكنولوجي
درجة الأهمية: I
الدالة الهدفية:
ضمان الإمداد المستمر بالطاقة للبنية التحتية الحيوية والصناعة.
عتبة الفشل:
فقدان > 15% من القدرة في المنطقة لمدة > 6 ساعة.
الاحتياط:
- 20% من التوليد الموزع
- 100% احتياطي للمنشآت الحيوية
- 30 يوم من مخزون المكونات الرئيسية
KPI:
- وقت الاستعادة < 12 ساعة
- 95% من المنشآت الحيوية بتغذية مستقلة
- 2 اختبار إجهاد سنوياً
مثال 2
بطاقة الصمود — المنظومة المالية
الإطار: اقتصادي
درجة الأهمية: I
الدالة الهدفية:
استمرارية التسويات والمدفوعات الاجتماعية.
عتبة الفشل:
استحالة تنفيذ العمليات الجماعية > 24 ساعة.
الاحتياط:
- آلية مقاصة بديلة
- 24 شهر من تغطية واردات البنود الحيوية
- 2 من مراكز البيانات المستقلة
KPI:
- 99% من المدفوعات في الموعد
- استعادة المدفوعات الجماعية < 6 ساعة
- حصة التسويات المستقلة ≥ 70%
مثال 3
بطاقة الصمود — الاتصالات والإدارة
الإطار: مؤسسي-عسكري
درجة الأهمية: I
الدالة الهدفية:
قابلية إدارة مضمونة على جميع المستويات.
عتبة الفشل:
انقطاع الاتصال المستقر > 2 ساعة.
الاحتياط:
- قنوات مكررة (ألياف بصرية + قمر صناعي + احتياطي راديوي)
- مراكز إدارة احتياطية
- منظومة مزدوجة مشفرة
KPI:
- التحويل إلى الاحتياطي < 10 دقيقة
- 100% عقدة رئيسية مع التكرار
- تدريبات ربع سنوية
كيفية استخدام هذا استراتيجيا
إذا أُرسلت الوثيقة رسميا، أوصي بما يلي:
- إعداد 10 بطاقة تعريف (لجميع الأنظمة الحرجة).
- تجميعها في جدول موحد "مؤشر استدامة الاتحاد".
- إدخال إجراء تدقيق سنوي.
- إضافة قسم "ديناميكية المؤشرات على مدى 3 سنة".
أولا: المؤشر الموحد لاستدامة الاتحاد (SIU)
1. منطق المؤشر
الاستدامة ليست مجموعا، بل حاصل ضرب المنظومات.
إذا كانت إحدى المنظومات ضعيفة، فإن المنظومة كلها معرضة للخطر.
الصيغة:
SIU = (W × T × E × C × I)^{1/5},
حيث:
- W — المنظومة العسكرية
- T — التكنولوجية
- E — الاقتصادية
- C — المعرفية (الاجتماعية)
- I — المؤسسية
تُقيَّم كل منظومة على مقياس من 0–100.
يُستخدم المتوسط الهندسي بحيث تخفض الحلقة الضعيفة المؤشر العام.
2. الحساب الداخلي لكل منظومة
كل منظومة = المتوسط وفق 5 معايير:
المحيط |
المعاملات |
W |
الردع، استقلالية الإدارة، التكرار الاحتياطي، الاستدامة السيبرانية، التدريبات |
T |
التوطين، البحث والتطوير، الاحتياطي من الكوادر، استقلالية البرمجيات، عمق الإنتاج |
E |
الصناعة، المالية، الطاقة، الغذاء، اللوجستيات |
C |
الثقة، الاستدامة المعلوماتية، التعليم، التكامل الثقافي، الجاهزية للتعبئة |
I |
سرعة القرارات، التنسيق بين القطاعات، تكرار المراكز، تدقيق المخاطر، شفافية مؤشرات الأداء |
3. مقياس التفسير
SIU |
المستوى |
|
0–40 |
منظومة ضعيفة |
|
40–60 |
مستدامة جزئيا |
|
60–75 |
مستقرة |
|
75–85 |
استدامة عالية |
|
85–100 |
محمية استراتيجيا |
4. مثال على الحساب (افتراضي)
W = 78
T = 62
E = 70
C = 65
I = 60
SIU ≈ 66 الاستنتاج: المنظومة مستقرة، لكن المنظومتين التكنولوجية والمؤسسية تحتاجان إلى تعزيز.
ثانياً. خارطة الطريق: الانتقال من 2 إلى 5
مستويات النضج
2 — مُنفَّذ جزئياً
3 — يعمل
4 — يُختبر بانتظام
5 — صامد أمام السيناريو الإجهادي
المرحلة 1 (عام 0–2)
الانتقال من 2 إلى 3. الهدف: إضفاء الطابع الرسمي على المنظومة.
- اعتماد بطاقات الصمود.
- إدخال سجل موحد للاعتماديات الحرجة.
- إطلاق التدقيق السنوي لـ SIU.
- إنشاء مركز لرصد المخاطر.
- بدء اختبارات الإجهاد الربعية.
النتيجة: المنظومة مُدارة.
المرحلة 2 (2–5 سنوات)
الانتقال من 3 إلى 4. الهدف: اختبار المنظومة في الممارسة.
- تدريبات قطاعية مشتركة منتظمة.
- مضاعفة مراكز التحكم.
- زيادة الاحتياطيات إلى المستويات المعيارية.
- توطين المكونات الحرجة 60–75%.
- رفع الإنفاق على البحث والتطوير ≥ 3% من الناتج المحلي الإجمالي.
النتيجة: المنظومة تصمد أمام الإجهاد الأساسي.
المرحلة 3 (5–10 سنوات)
الانتقال من 4 إلى 5. الهدف: استقلالية استراتيجية كاملة.
- منظومة تحكم مزدوجة كاملة.
- 80–90% من استقلالية القطاعات الحرجة.
- الصمود أمام العزلة المالية.
- مؤشر ثقة مرتفع (>75).
- SIU ≥ 80.
النتيجة: يصبح العدوان غير عقلاني.
ثالثاً. آلية الرقابة
مرة واحدة في السنة:
- إعادة حساب SIU.
- تحديث البطاقات.
- تقرير علني (أو مغلق) عن الديناميكيات.
- تعديل خارطة الطريق.
الأهم
الصمود ليس تقريراً. بل ديناميكية مؤشرات مُدارة.
منصة «سويوز»
نموذج أولي للواجهة (MVP)
1️⃣ الشاشة الرئيسية — STRATEGIC DASHBOARD
العنصر المركزي:
SIU — المؤشر المركب للاستدامة
المؤشر الدائري الكبير:
- 0–40 المنطقة الحمراء
- 40–60 الصفراء
- 60–75 الخضراء
- 75+ الخضراء الداكنة
أسفله — الديناميكية خلال 12 أشهر.
على اليمين — 5 منظومات
المحيط |
المؤشر |
الاتجاه |
|
العسكري |
78 |
↑ |
|
تكنولوجية |
62 |
→ |
|
اقتصادية |
70 |
↑ |
|
المعرفي |
65 |
↓ |
|
المؤسسي |
60 |
→ |
النقر على كل منها — الانتقال إلى التفصيل.
2️⃣ شاشة المنظومة (مثال: الاقتصادية)
كتلة 1 — مؤشرات الأداء الرئيسية في الوقت الحقيقي
- الاستقلالية الصناعية (%)
- الاستقرار المالي
- توازن الطاقة
- المؤشر الغذائي
- الاستدامة اللوجستية
كل منها — مع إشارة ضوئية.
كتلة 2 — خريطة المخاطر
المصفوفة: الاحتمال × الضرر
تُضاء المخاطر تلقائيا عند تجاوز العتبة.
كتلة 3 — الاتجاهات
مخطط 1 / 3 / 5 سنوات
- التوقعات في ظل الديناميكية الحالية.
3️⃣ وحدة "سجل الاعتماديات"
الواجهة:
المرشح:
- القطاع
- مستوى الخطر
- الحصة المستوردة
- مدة الاستبدال
جدول:
| المكون | الخطر | البديل | المدة | الاحتياطي |
يبرز النظام تلقائيا المواقع الحرجة.
4️⃣ وحدة "اختبار الإجهاد"
شاشة السيناريوهات:
- التفاؤلي
- أساسي
- الإجهاد
يختار المستخدم الحدث:
- الحصار المالي
- هجوم سيبراني
- الخلل اللوجستي
- الحادث الطاقي
يحسب النظام:
- انخفاض SIU
- زمن الاستعادة
- الآثار المتسلسلة
5️⃣ WAR ROOM DIGITAL
يُفعَّل الوضع تلقائياً عند:
- انخفاض SIU دون 60
- تجاوز حد المخاطر الحرجة
تنقسم الشاشة إلى 4 مناطق:
- خريطة الأحداث
- مؤشرات الأداء الرئيسية الحرجة
- المهام والحلول
- مؤقت الاستجابة
6️⃣ معمارية مستويات الوصول
المستوى 1 — الاستراتيجي
المؤشرات والتحليلات المجمعة فقط.
المستوى 2 — التشغيلي
مؤشرات القطاعات والمخاطر.
المستوى 3 — التقني
البيانات والمعاملات العميقة.
7️⃣ المعمارية التقنية للنسخة الأولية MVP
- الواجهة الخلفية: منظومة خوادم محمية
- قاعدة البيانات: موزعة
- التحليلات: وحدة حساب SIU
- الواجهة: ويب + إنترانت محمية
- السجلات: تدقيق مستمر للإجراءات
8️⃣ الحد الأدنى من وظائف الإطلاق (6–9 أشهر)
- حساب SIU.
- لوحة معلومات 5 منظومات.
- بطاقات الاستدامة.
- اختبار إجهاد أساسي.
- إدخال مؤشرات الأداء الرئيسية يدوياً.
دون تعقيد مفرط.
أولاً. الأثر الاقتصادي لارتفاع الاستدامة
1. المنطق الأساسي
الاستدامة تخفض:
- علاوة المخاطر،
- التقلب،
- الخسائر الناجمة عن الأزمات،
- تكاليف إحلال الواردات في الوضع الطارئ.
وتزيد:
- الجاذبية الاستثمارية،
- عمق المعالجة،
- القيمة المضافة،
- الاستقلال التكنولوجي.
2. نموذج التأثير على الناتج المحلي الإجمالي.
لنقسم الأثر إلى 4 كتل:
1️⃣ تقليل خسائر الأزمات
تاريخياً، "تلتهم" الأزمات 3–8% من الناتج المحلي الإجمالي في السيناريو الضاغط.
رفع SIU من 60 → 80 يقلل الخسائر بمقدار 30–50%.
الوفر: ≈ 1,5–3% من الناتج المحلي الإجمالي سنوياً في أفق 10 سنة.
2️⃣ نمو القيمة المضافة التكنولوجية
زيادة حصة التقنيات العالية: +10% في هيكل الصادرات
= +2–3% في الناتج المحلي الإجمالي على المدى المتوسط.
3️⃣ خفض التكاليف المالية
الاستدامة تقلل:
- تكلفة الاقتراض،
- خسائر العقوبات،
- تسرب رأس المال.
الأثر التقديري: +0,5–1,5% من الناتج المحلي الإجمالي.
4️⃣ المضاعف البنيوي التحتي
الاستثمارات في:
- الطاقة،
- الرقمنة،
- التعاون الصناعي،
- تعطي مضاعفاً 1,4–1,8.
3. الأثر الإجمالي
عند الانتقال بـ SIU من 65 → 80: النمو المحتمل للناتج المحلي الإجمالي: +3–6% مقارنة بالمسار الأساسي في أفق 7–10 سنة.
الأهم: الاستدامة تسدد ثمنها.
ثانياً. منصة المراقبة "سويوز"
ننتقل إلى الإدارة الرقمية.
معمارية منصة "سويوز"
1. الهدف
مراقبة حقيقية للاستدامة في وضع 24/7. ليست تقارير مرة في السنة. بل نظام حي.
2. الوحدات الأساسية
الوحدة 1 — SIU-CORE
- الحساب الآلي لمؤشر الاستدامة.
- لوحة معلومات 5 منظومات.
- الديناميكية خلال 1–5–10 سنة.
الوحدة 2 — سجل الاعتماديات الحرجة
- المكوّن → القطاع → المورّد → الخطر.
- إشارات عند تجاوز العتبة.
الوحدة 3 — محرك اختبار الضغط
- نمذجة السيناريوهات.
- تقييم الآثار المتسلسلة.
- توقع زمن الاستعادة.
الوحدة 4 — مراقبة مؤشرات الأداء الرئيسية
- الطاقة.
- الارتباط.
- المالية.
- اللوجستيات.
- التعليم.
- مجمع الصناعات الدفاعية.
وحدة 5 — غرفة العمليات الرقمية
- تكامل البيانات في الأزمات.
- مركز اتخاذ القرارات.
- سجل الحوادث.
3. البنية التقنية
تشمل المنصة:
- منظومة بيانات محمية،
- عُقد موزعة،
- طبقة تحليلية (الذكاء الاصطناعي)،
- واجهة الإدارة الاستراتيجية.
4. مستويات الوصول
- الاستراتيجي (المؤشر المجمع).
- التشغيلي (المؤشرات القطاعية).
- التقني (المقاييس المحددة والإنذارات).
5. مراحل التنفيذ
المرحلة 1 (سنة 1–2)
- إطلاق SIU-CORE.
- بطاقات الاستدامة.
- اختبارات الإجهاد الأساسية.
المرحلة 2 (3–5 سنوات)
- دمج البيانات القطاعية.
- الإشارات الآلية.
- مركز الرصد الرقمي.
المرحلة 3 (5–10 سنوات)
- التوأم الرقمي الكامل للاستدامة.
- التنبؤ القائم على الذكاء الاصطناعي.
- الحماية الاستباقية.
الرابط النهائي. نمو SIU ← انخفاض المخاطر ← نمو الاستثمارات ← نمو الناتج المحلي الإجمالي ← تعزيز الاستدامة. دورة مغلقة.
نموذج البيانات (مخطط البيانات) لمنصة «سويوز» للنسخة الأولية القابلة للتطبيق. يمكن تسليم هذا مباشرة إلى المهندس المعماري/المطور: الكيانات، والعلاقات، والحقول، وقواعد إدارة الإصدارات وحساب SIU.
نموذج البيانات لمنصة «سويوز» (النسخة الأولية القابلة للتطبيق)
0) مبادئ النموذج
- الحدثية: كل أمر مهم يُسجَّل كقياس / حادث / قرار / اختبار.
- إدارة الإصدارات: للبطاقات ومؤشرات الأداء الرئيسية والحدود إصدارات (ليرى التدقيق التاريخ).
- التسلسل الهرمي: النظام ← المنظومة ← النظام الفرعي ← مؤشر الأداء الرئيسي ← القياس.
- المعايير مقابل الواقع: نخزّن القيم المستهدفة والقياسات الفعلية بشكل منفصل.
1) الأدلة المرجعية (الأساسية)
1.1 Contour. منظومات الاستدامة (5).
- contour_id (PK)
- code (W, T, E, C, I)
- name
- weight (افتراضيًا 0.2)
- description
1.2 النظام الحرج. 10 للأنظمة الحرجة (الطاقة، الاتصال، المال…).
- system_id (PK)
- name
- category (energy/comm/finance/…)
- criticality_level (1/2/3)
- owner_org
- region_scope (national/region/local)
- status (active/archived)
1.3 النظام الفرعي. الأنظمة الفرعية داخل النظام الحرج CriticalSystem.
- subsystem_id (PK)
- system_id (FK → CriticalSystem)
- name
- description
- status
1.4 الوحدة التنظيمية OrgUnit. المنظمات/الأقسام.
- org_id (PK)
- name
- type (operator/regulator/analysis/…)
- contact_role (ليست بيانات شخصية، الدور فقط)
- status
1.5 دور المستخدم UserRole (RBAC). أدوار الوصول.
- role_id (PK)
- name (strategic/operational/technical/auditor/admin)
- permissions (json/bitmask)
2) بطاقات الصمود (الإصدارات والرقابة)
2.1 بطاقة الصمود ResiliencePassport. بطاقة النظام ("الترويسة" الحالية).
- passport_id (PK)
- system_id (FK)
- contour_id (FK)
- current_version_id (FK → PassportVersion)
- maturity_level (1–5)
- created_at, updated_at
2.2 إصدار البطاقة PassportVersion. إصدار البطاقة (التدقيق والتغييرات).
- version_id (PK)
- passport_id (FK)
- version_no (int)
- target_function (text)
- failure_threshold (نص + حقول مهيكلة أدناه)
- rto_target_hours (float)
- rpo_target_hours (float)
- autonomy_target_pct (float)
- test_frequency_per_year (int)
- approved_by_org (FK → OrgUnit)
- effective_from, effective_to
- notes
2.3 عتبة الفشل FailureThreshold. (اختياري، إذا لزم الهيكلة)
- threshold_id (PK)
- version_id (FK)
- metric (e.g. “capacity_loss_pct”, “outage_hours”)
- operator (>, >=, <…)
- value (float)
- unit
2.4 ملف الاحتياطي ReserveProfile. ملف الاحتياطيات حسب إصدار البطاقة.
- reserve_id (PK)
- version_id (FK)
- reserve_type (physical/data/people/finance)
- description
- coverage_days (float, nullable)
- capacity_units (nullable)
- last_verified_at
3) مؤشرات الأداء والقياسات
3.1 مؤشر الأداء KPI. دليل مؤشرات الأداء.
- kpi_id (PK)
- name
- unit (%, hours, days, index)
- aggregation (avg/min/max/last/weighted)
- direction (higher_is_better / lower_is_better)
- description
3.2 تعريف مؤشر الأداء KPIDefinition. ربط مؤشر الأداء بالنظام/النظام الفرعي والمنظومة + المعايير.
- kpi_def_id (PK)
- kpi_id (FK)
- system_id (FK)
- subsystem_id (FK, nullable)
- contour_id (FK)
- target_value (float)
- warning_value (float)
- critical_value (float)
- weight_in_contour (عدد عشري) (المجموع حسب المنظومة = 1.0)
- effective_from, effective_to
- source_type (manual/api/import)
- owner_org (FK)
3.3 القياس Measurement. القياسات الفعلية لمؤشرات الأداء.
- measurement_id (PK)
- kpi_def_id (FK)
- timestamp
- value (float)
- quality_flag (ok/suspect/missing)
- ingested_at
- source_ref (سلسلة نصية: ملف/جهاز استشعار/نظام)
4) المخاطر والاعتماديات
4.1 سجل المخاطر RiskRegister. سجل المخاطر (بما في ذلك لمصفوفة الاحتمال×الضرر).
- risk_id (PK)
- name
- type (tech/finance/cyber/logistics/info/…)
- description
- probability (1–5)
- impact (1–5)
- risk_score (computed = prob×impact)
- owner_org (FK)
- status (open/mitigating/closed)
- last_reviewed_at
4.2 بند الاعتمادية DependencyItem. الاعتماديات الحرجة (مكوّن/برمجيات/مادة).
- dep_id (PK)
- system_id (FK)
- subsystem_id (FK, nullable)
- item_name
- item_type (component/material/software/service)
- current_source (domestic/foreign/mixed)
- import_share_pct (float)
- substitution_plan (text)
- substitution_due_months (int)
- reserve_coverage_months (float)
- risk_level (low/med/high/critical)
- owner_org (FK)
- updated_at
5) الحوادث وغرفة العمليات War Room
5.1 الحادث Incident. الحادث/الحدث (حقيقي أو تدريب).
- incident_id (PK)
- system_id (FK)
- incident_type (cyber/outage/supply/finance/info/…)
- severity (1–5)
- started_at, ended_at
- status (open/contained/recovered/closed)
- summary
- root_cause (nullable)
- created_by_role (FK → UserRole)
5.2 أثر الحادث IncidentImpact. الأثر المتسلسل (أي مؤشرات أداء/أنظمة تأثرت).
- impact_id (PK)
- incident_id (FK)
- kpi_def_id (FK, nullable)
- affected_system_id (FK, nullable)
- delta_value (float, nullable)
- notes
5.3 سجل القرارات DecisionLog. سجل قرارات غرفة العمليات War Room.
- decision_id (PK)
- incident_id (FK)
- time
- decision_text
- assigned_org (FK)
- deadline
- status (planned/in_progress/done)
- evidence_ref (nullable)
6) اختبارات الإجهاد والسيناريوهات
6.1 Scenario
- scenario_id (PK)
- name (optimistic/base/stress + custom)
- description
- assumptions (text/json)
- created_at
6.2 تشغيل اختبار الإجهاد StressTestRun. إطلاق الاختبار.
- run_id (PK)
- scenario_id (FK)
- initiated_at
- initiated_by_role
- scope (national/region/system)
- status
6.3 نتيجة اختبار الإجهاد StressTestResult. النتائج حسب الأنظمة/المنظومات.
- result_id (PK)
- run_id (FK)
- system_id (FK)
- contour_id (FK)
- expected_siu_drop (float)
- expected_rto_hours (float)
- critical_findings (text)
- recommended_actions (text)
7) حساب المؤشرات (SIU)
7.1 درجة المنظومة ContourScore. الدرجة الإجمالية للمنظومة عن الفترة.
- contour_score_id (PK)
- contour_id (FK)
- period_start, period_end
- score_0_100
- computed_at
- method_version (لتغيير المنهجية)
7.2 درجة SIU SIUScore. مؤشر SIU.
- siu_id (PK)
- period_start, period_end
- siu_0_100
- w_score, t_score, e_score, c_score, i_score
- computed_at
- method_version
قاعدة الحساب (MVP)
- نحسب كل درجة منظومة ContourScore كمتوسط مرجّح لمؤشرات الأداء وفق weight_in_contour في تعريف مؤشر الأداء عن الفترة (مثل last/avg).
- SIU = المتوسط الهندسي للمنظومات الخمس:
SIU = (W × T × E × C × I)^{1/5} - إذا كثرت القيم المفقودة في منظومة، نُدخل غرامة (مثل -5…-15) لتحفيز توفير البيانات.
8) الروابط (بإيجاز)
- Contour 1—N Resilience Passport
- CriticalSystem 1—N ResiliencePassport, 1—N Subsystem, 1—N KPIDefinition, 1—N Incident, 1—N DependencyItem
- KPI 1—N KPIDefinition
- KPIDefinition 1—N Measurement
- Incident 1—N DecisionLog, 1—N IncidentImpact
- Scenario 1—N StressTestRun 1—N StressTestResult
- ContourScore + SIUScore — تجميعات دورية
9) الحد الأدنى من البيانات لإطلاق MVP
لكي تعمل المنصة "فورًا":
- 10 CriticalSystem
- 5 Contour
- بواقع 5 مؤشر أداء لكل منظومة (25 مؤشرأداء كحد أدنى)
- 1 بطاقة تعريف للنظام (10 بطاقة تعريف) + الإصدارات
- استيراد أسبوعي لـ Measurement (حتى اليدوي)
- 1 السيناريو الأساسي لاختبار الإجهاد
هيكل DDL لـ PostgreSQL (الجداول/المفاتيح/الفهارس) وwireframe للتنقل/الشاشات وفقاً لنموذج البيانات الخاص بنا حصراً.
1) PostgreSQL DDL (الهيكل)
-- =========================================
-- PLATFORM "SOYUZ" - MVP DDL (PostgreSQL)
-- =========================================
-- 0) Enums (يمكن استبدالها بقوائم مرجعية)
DO $$ BEGIN
CREATE TYPE risk_status AS ENUM ('open','mitigating','closed');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE incident_status AS ENUM ('open','contained','recovered','closed');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE quality_flag AS ENUM ('ok','suspect','missing');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE kpi_direction AS ENUM ('higher_is_better','lower_is_better');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE kpi_aggregation AS ENUM ('avg','min','max','last','weighted');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE system_status AS ENUM ('active','archived');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE reserve_type AS ENUM ('physical','data','people','finance');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE dependency_type AS ENUM ('component','material','software','service');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE source_type AS ENUM ('manual','api','import');
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
-- 1) Core reference tables
CREATE TABLE IF NOT EXISTS contour (
contour_id BIGSERIAL PRIMARY KEY,
code TEXT NOT NULL UNIQUE CHECK (code IN ('W','T','E','C','I')),
name TEXT NOT NULL,
weight NUMERIC(6,4) NOT NULL DEFAULT 0.2000,
description TEXT
);
CREATE TABLE IF NOT EXISTS org_unit (
org_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
type TEXT,
contact_role TEXT, -- الدور فقط، دون بيانات شخصية
status system_status NOT NULL DEFAULT 'active'
);
CREATE TABLE IF NOT EXISTS user_role (
role_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE, -- strategic/operational/technical/auditor/admin
permissions JSONB NOT NULL DEFAULT '{}'::jsonb
);
CREATE TABLE IF NOT EXISTS critical_system (
system_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
category TEXT NOT NULL, -- energy/comm/finance/logistics/...
criticality_level SMALLINT NOT NULL CHECK (criticality_level BETWEEN 1 AND 3),
owner_org BIGINT REFERENCES org_unit(org_id),
region_scope TEXT NOT NULL DEFAULT 'national',
status system_status NOT NULL DEFAULT 'active'
);
CREATE TABLE IF NOT EXISTS subsystem (
subsystem_id BIGSERIAL PRIMARY KEY,
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
status system_status NOT NULL DEFAULT 'active',
UNIQUE(system_id, name)
);
-- 2) Passports (versioned)
CREATE TABLE IF NOT EXISTS resilience_passport (
passport_id BIGSERIAL PRIMARY KEY,
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
contour_id BIGINT NOT NULL REFERENCES contour(contour_id),
current_version_id BIGINT, -- FK added after passport_version exists
maturity_level SMALLINT NOT NULL DEFAULT 2 CHECK (maturity_level BETWEEN 1 AND 5),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(system_id, contour_id)
);
CREATE TABLE IF NOT EXISTS passport_version (
version_id BIGSERIAL PRIMARY KEY,
passport_id BIGINT NOT NULL REFERENCES resilience_passport(passport_id) ON DELETE CASCADE,
version_no INT NOT NULL,
target_function TEXT NOT NULL,
failure_threshold_txt TEXT, -- وصف موجز لعتبة الفشل
rto_target_hours NUMERIC(10,2),
rpo_target_hours NUMERIC(10,2),
autonomy_target_pct NUMERIC(6,2),
test_frequency_per_year INT,
approved_by_org BIGINT REFERENCES org_unit(org_id),
effective_from DATE NOT NULL DEFAULT CURRENT_DATE,
effective_to DATE,
notes TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(passport_id, version_no)
);
ALTER TABLE resilience_passport
ADD CONSTRAINT fk_passport_current_version
FOREIGN KEY (current_version_id) REFERENCES passport_version(version_id);
CREATE TABLE IF NOT EXISTS failure_threshold (
threshold_id BIGSERIAL PRIMARY KEY,
version_id BIGINT NOT NULL REFERENCES passport_version(version_id) ON DELETE CASCADE,
metric TEXT NOT NULL,
operator TEXT NOT NULL, -- >, >=, < ...
value NUMERIC(18,6) NOT NULL,
unit TEXT
);
CREATE TABLE IF NOT EXISTS reserve_profile (
reserve_id BIGSERIAL PRIMARY KEY,
version_id BIGINT NOT NULL REFERENCES passport_version(version_id) ON DELETE CASCADE,
reserve_type reserve_type NOT NULL,
description TEXT,
coverage_days NUMERIC(10,2),
capacity_units TEXT,
last_verified_at TIMESTAMPTZ
);
-- 3) KPI model
CREATE TABLE IF NOT EXISTS kpi (
kpi_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
unit TEXT NOT NULL,
aggregation kpi_aggregation NOT NULL DEFAULT 'avg',
direction kpi_direction NOT NULL DEFAULT 'higher_is_better',
description TEXT
);
CREATE TABLE IF NOT EXISTS kpi_definition (
kpi_def_id BIGSERIAL PRIMARY KEY,
kpi_id BIGINT NOT NULL REFERENCES kpi(kpi_id),
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
subsystem_id BIGINT REFERENCES subsystem(subsystem_id) ON DELETE SET NULL,
contour_id BIGINT NOT NULL REFERENCES contour(contour_id),
target_value NUMERIC(18,6),
warning_value NUMERIC(18,6),
critical_value NUMERIC(18,6),
weight_in_contour NUMERIC(8,6) NOT NULL DEFAULT 0.200000,
effective_from DATE NOT NULL DEFAULT CURRENT_DATE,
effective_to DATE,
source_type source_type NOT NULL DEFAULT 'manual',
owner_org BIGINT REFERENCES org_unit(org_id),
CHECK (weight_in_contour >= 0 AND weight_in_contour <= 1)
);
CREATE INDEX IF NOT EXISTS idx_kpi_def_system ON kpi_definition(system_id);
CREATE INDEX IF NOT EXISTS idx_kpi_def_contour ON kpi_definition(contour_id);
CREATE INDEX IF NOT EXISTS idx_kpi_def_kpi ON kpi_definition(kpi_id);
CREATE TABLE IF NOT EXISTS measurement (
measurement_id BIGSERIAL PRIMARY KEY,
kpi_def_id BIGINT NOT NULL REFERENCES kpi_definition(kpi_def_id) ON DELETE CASCADE,
timestamp TIMESTAMPTZ NOT NULL,
value NUMERIC(18,6) NOT NULL,
quality_flag quality_flag NOT NULL DEFAULT 'ok',
ingested_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
source_ref TEXT
);
CREATE INDEX IF NOT EXISTS idx_measurement_kpi_def_time ON measurement(kpi_def_id, timestamp DESC);
CREATE INDEX IF NOT EXISTS idx_measurement_time ON measurement(timestamp DESC);
-- 4) Risks & dependencies
CREATE TABLE IF NOT EXISTS risk_register (
risk_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
description TEXT,
probability SMALLINT NOT NULL CHECK (probability BETWEEN 1 AND 5),
impact SMALLINT NOT NULL CHECK (impact BETWEEN 1 AND 5),
risk_score SMALLINT GENERATED ALWAYS AS (probability * impact) STORED,
owner_org BIGINT REFERENCES org_unit(org_id),
status risk_status NOT NULL DEFAULT 'open',
last_reviewed_at TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_risk_score ON risk_register(risk_score DESC);
CREATE INDEX IF NOT EXISTS idx_risk_status ON risk_register(status);
CREATE TABLE IF NOT EXISTS dependency_item (
dep_id BIGSERIAL PRIMARY KEY,
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
subsystem_id BIGINT REFERENCES subsystem(subsystem_id) ON DELETE SET NULL,
item_name TEXT NOT NULL,
item_type dependency_type NOT NULL,
current_source TEXT NOT NULL, -- domestic/foreign/mixed
import_share_pct NUMERIC(6,2),
substitution_plan TEXT,
substitution_due_months INT,
reserve_coverage_months NUMERIC(10,2),
risk_level TEXT NOT NULL, -- low/med/high/critical
owner_org BIGINT REFERENCES org_unit(org_id),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_dep_system ON dependency_item(system_id);
CREATE INDEX IF NOT EXISTS idx_dep_risk ON dependency_item(risk_level);
-- 5) Incidents & War Room
CREATE TABLE IF NOT EXISTS incident (
incident_id BIGSERIAL PRIMARY KEY,
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
incident_type TEXT NOT NULL, -- cyber/outage/supply/finance/info/...
severity SMALLINT NOT NULL CHECK (severity BETWEEN 1 AND 5),
started_at TIMESTAMPTZ NOT NULL,
ended_at TIMESTAMPTZ,
status incident_status NOT NULL DEFAULT 'open',
summary TEXT,
root_cause TEXT,
created_by_role BIGINT REFERENCES user_role(role_id)
);
CREATE INDEX IF NOT EXISTS idx_incident_system ON incident(system_id, started_at DESC);
CREATE INDEX IF NOT EXISTS idx_incident_status ON incident(status);
CREATE TABLE IF NOT EXISTS incident_impact (
impact_id BIGSERIAL PRIMARY KEY,
incident_id BIGINT NOT NULL REFERENCES incident(incident_id) ON DELETE CASCADE,
kpi_def_id BIGINT REFERENCES kpi_definition(kpi_def_id) ON DELETE SET NULL,
affected_system_id BIGINT REFERENCES critical_system(system_id) ON DELETE SET NULL,
delta_value NUMERIC(18,6),
notes TEXT
);
CREATE TABLE IF NOT EXISTS decision_log (
decision_id BIGSERIAL PRIMARY KEY,
incident_id BIGINT NOT NULL REFERENCES incident(incident_id) ON DELETE CASCADE,
time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
decision_text TEXT NOT NULL,
assigned_org BIGINT REFERENCES org_unit(org_id),
deadline TIMESTAMPTZ,
status TEXT NOT NULL DEFAULT 'planned', -- planned/in_progress/done
evidence_ref TEXT
);
CREATE INDEX IF NOT EXISTS idx_decision_incident ON decision_log(incident_id, time DESC);
-- 6) Scenarios & stress tests
CREATE TABLE IF NOT EXISTS scenario (
scenario_id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE, -- optimistic/base/stress/custom
description TEXT,
assumptions JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS stress_test_run (
run_id BIGSERIAL PRIMARY KEY,
scenario_id BIGINT NOT NULL REFERENCES scenario(scenario_id),
initiated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
initiated_by_role BIGINT REFERENCES user_role(role_id),
scope TEXT NOT NULL DEFAULT 'national', -- national/region/system
status TEXT NOT NULL DEFAULT 'running'
);
CREATE TABLE IF NOT EXISTS stress_test_result (
result_id BIGSERIAL PRIMARY KEY,
run_id BIGINT NOT NULL REFERENCES stress_test_run(run_id) ON DELETE CASCADE,
system_id BIGINT NOT NULL REFERENCES critical_system(system_id) ON DELETE CASCADE,
contour_id BIGINT NOT NULL REFERENCES contour(contour_id),
expected_siu_drop NUMERIC(10,2),
expected_rto_hours NUMERIC(10,2),
critical_findings TEXT,
recommended_actions TEXT
);
CREATE INDEX IF NOT EXISTS idx_stress_result_run ON stress_test_result(run_id);
CREATE INDEX IF NOT EXISTS idx_stress_result_system ON stress_test_result(system_id);
-- 7) Scores (computed aggregates)
CREATE TABLE IF NOT EXISTS contour_score (
contour_score_id BIGSERIAL PRIMARY KEY,
contour_id BIGINT NOT NULL REFERENCES contour(contour_id),
period_start DATE NOT NULL,
period_end DATE NOT NULL,
score_0_100 NUMERIC(6,2) NOT NULL CHECK (score_0_100 BETWEEN 0 AND 100),
computed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
method_version TEXT NOT NULL DEFAULT 'mvp_v1',
UNIQUE(contour_id, period_start, period_end, method_version)
);
CREATE TABLE IF NOT EXISTS siu_score (
siu_id BIGSERIAL PRIMARY KEY,
period_start DATE NOT NULL,
period_end DATE NOT NULL,
siu_0_100 NUMERIC(6,2) NOT NULL CHECK (siu_0_100 BETWEEN 0 AND 100),
w_score NUMERIC(6,2) NOT NULL,
t_score NUMERIC(6,2) NOT NULL,
e_score NUMERIC(6,2) NOT NULL,
c_score NUMERIC(6,2) NOT NULL,
i_score NUMERIC(6,2) NOT NULL,
computed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
method_version TEXT NOT NULL DEFAULT 'mvp_v1',
UNIQUE(period_start, period_end, method_version)
);
-- Helpful indexes for dashboard queries
CREATE INDEX IF NOT EXISTS idx_siu_latest ON siu_score(period_end DESC);
CREATE INDEX IF NOT EXISTS idx_contour_score_latest ON contour_score(period_end DESC, contour_id);
ملاحظة بشأن MVP
- لا يوجد في DDL جدول للمستخدمين (تسجيل الدخول/المصادقة). بالنسبة لـ MVP يكفي RBAC للأدوار + SSO/LDAP خارجي لاحقاً.
- الأوزان كثيرة: contour.weight + kpi_definition.weight_in_contour. في MVP يمكن تثبيت المنظومات وفقاً لـ 0.2 وإدارة أوزان KPI فقط.
2) Wireframe للواجهة (القائمة + الشاشات)
التنقل العام (القائمة اليسرى)
- الرئيسية
- المحاور
- W عسكري
- T تقنيات
- E اقتصاد
- C معرفي
- I مؤسسي
- الأنظمة الحرجة
- الطاقة
- التواصل
- المال
- اللوجستيات
- الغذاء
- الرعاية الصحية
- الحوكمة الحكومية
- مجمع الصناعات الدفاعية
- الكوادر/البحث والتطوير
- البيئة المعلوماتية
- بطاقات تعريف الاستدامة
- KPI والقياسات
- المخاطر والاعتماديات
- اختبارات الإجهاد
- War Room
- التقارير / التصدير
- الإعدادات
- القوائم المرجعية
- العتبات/المقاييس
- أدوار الوصول
شاشة 1: الرئيسية (Strategic Dashboard)
الشريط العلوي:
- الفترة (أسبوع/شهر/ربع سنة)
- المرشح (بلد/منطقة/نظام)
- زر "تشغيل اختبار الإجهاد"
- مؤشر الوضع (Normal / Alert / War Room)
المحتوى:
- مقياس SIU كبير
- 5 بلاطات المنظومات (W/T/E/C/I): score + الاتجاه + الحالة
- «أعلى 5 من المخاطر» (من risk_register حسب risk_score)
- «أعلى 5 من التبعيات» (من dependency_item حسب risk_level=critical)
- «الحوادث النشطة» (من incident status=open/contained)
شاشة 2: المنظومة (مثال: الاقتصاد)
علامات التبويب:
- KPI
- المخاطر
- التبعيات
- الأحداث (الحوادث)
- التوصيات (من نتائج اختبارات الإجهاد)
تبويب KPI:
- جدول KPI مع الحدود (target/warn/critical)
- رسم بياني لاتجاه كل KPI (آخر 90 يومًا)
- «فجوات البيانات» (quality_flag=missing) — خصم في المؤشر
شاشة 3: النظام الحرج (مثال: الطاقة)
ترويسة النظام:
- مستوى الخطورة
- الجهة المسؤولة (org_unit)
- بطاقة السجل الحالي (الإصدار)
الكتل:
- مؤشرات KPI للنظام (بما في ذلك الأنظمة الفرعية)
- حد الفشل (من passport_version + failure_threshold)
- الاحتياطيات (من reserve_profile)
- الحوادث حسب النظام
- زر «فتح غرفة العمليات للنظام»
شاشة 4: بطاقات سجل الاستدامة
- قائمة البطاقات (system + contour + maturity)
- فتح البطاقة ← سجل الإصدارات
- محرر الإصدار (إذا سمح الدور بذلك)
- زر «تعيين كإصدار حالي» (يحدّث current_version_id)
شاشة 5: KPI والقياسات
- كتالوج KPI
- ربط KPI بالأنظمة (kpi_definition)
- استيراد القياسات / الإدخال اليدوي
- مراقبة جودة البيانات (ok/suspect/missing)
- تدقيق المصادر (source_ref)
شاشة 6: المخاطر والتبعيات
- مصفوفة الاحتمال×الضرر (heatmap)
- سجل المخاطر (risk_register)
- سجل التبعيات (dependency_item) مع مرشحات:
- risk_level
- import_share_pct
- substitution_due_months
شاشة 7: اختبارات الإجهاد
- السيناريوهات (scenario)
- عمليات الإطلاق (stress_test_run)
- النتائج (stress_test_result):
- الانخفاض المتوقع في SIU
- RTO المتوقع
- التوصيات
شاشة 8: غرفة العمليات
تخطيط لوحة 4:
- خريطة/خط زمني للحادث
- مؤشرات الأداء الرئيسية "المنطقة الحمراء"
- سجل القرارات (decision_log)
- المهام/المواعيد/المسؤولون (decision_log status)
الدخول التلقائي إلى غرفة العمليات إذا:
- siu_score < 60 أو
- خطورة الحادث severity ≥ 4 أو
- risk_score ≥ 20 (5×4، 5×5)
1) حساب ContourScore و SIU (SQL)
1.1 تطبيع مؤشرات الأداء الرئيسية إلى مقياس 0–100
الفكرة: نحول كل بُعد من أبعاد مؤشرات الأداء الرئيسية إلى درجة 0–100 نسبةً إلى العتبات critical_value / warning_value / target_value.
- إذا كان higher_is_better:
- value ≥ target → 100
- value ≤ critical → 0
- بين critical و target — استيفاء خطي (يمكن تعقيده لاحقاً)
- إذا كان lower_is_better: بصورة معكوسة
-- =========================================
-- KPI scoring view (0..100)
-- Uses latest measurement per KPI definition within period
-- =========================================
CREATE OR REPLACE VIEW v_kpi_latest_in_period AS
SELECT
kd.kpi_def_id,
kd.kpi_id,
kd.system_id,
kd.subsystem_id,
kd.contour_id,
kd.target_value,
kd.warning_value,
kd.critical_value,
kd.weight_in_contour,
k.direction,
k.aggregation,
m.timestamp,
m.value,
m.quality_flag
FROM kpi_definition kd
JOIN kpi k ON k.kpi_id = kd.kpi_id
JOIN LATERAL (
SELECT m1.*
FROM measurement m1
WHERE m1.kpi_def_id = kd.kpi_def_id
ORDER BY m1.timestamp DESC
LIMIT 1
) m ON TRUE
WHERE kd.effective_to IS NULL OR kd.effective_to >= CURRENT_DATE;
-- Score each KPI definition to 0..100
CREATE OR REPLACE VIEW v_kpi_score_latest AS
SELECT
v.*,
CASE
WHEN v.quality_flag = 'missing' THEN 0
WHEN v.direction = 'higher_is_better' THEN
CASE
WHEN v.target_value IS NULL OR v.critical_value IS NULL THEN NULL
WHEN v.value >= v.target_value THEN 100
WHEN v.value <= v.critical_value THEN 0
ELSE ROUND( ( (v.value - v.critical_value) / NULLIF((v.target_value - v.critical_value),0) ) * 100, 2)
END
WHEN v.direction = 'lower_is_better' THEN
CASE
WHEN v.target_value IS NULL OR v.critical_value IS NULL THEN NULL
WHEN v.value <= v.target_value THEN 100
WHEN v.value >= v.critical_value THEN 0
ELSE ROUND( ( (v.critical_value - v.value) / NULLIF((v.critical_value - v.target_value),0) ) * 100, 2)
END
ELSE NULL
END AS score_0_100
FROM v_kpi_latest_in_period v;
ملاحظة: warning_value لا يُستخدم حالياً في الصيغة. في الإصدار v2 يمكن إنشاء دالة "متعددة الأجزاء": critical→warning→target.
1.2 ContourScore = المتوسط المرجح لمؤشرات الأداء الرئيسية حسب المنظومة
-- =========================================
-- Contour score = weighted average of KPI scores
-- =========================================
CREATE OR REPLACE VIEW v_contour_score_current AS
SELECT
c.contour_id,
c.code AS contour_code,
CURRENT_DATE AS period_start,
CURRENT_DATE AS period_end,
ROUND(
SUM(ks.score_0_100 * kd.weight_in_contour) / NULLIF(SUM(kd.weight_in_contour),0),
2
) AS score_0_100,
SUM(CASE WHEN ks.score_0_100 IS NULL THEN 1 ELSE 0 END) AS null_scores_cnt,
SUM(CASE WHEN ks.quality_flag = 'missing' THEN 1 ELSE 0 END) AS missing_cnt
FROM contour c
JOIN kpi_definition kd ON kd.contour_id = c.contour_id
JOIN v_kpi_score_latest ks ON ks.kpi_def_id = kd.kpi_def_id
GROUP BY c.contour_id, c.code;
1.3 SIU = المتوسط الهندسي لـ 5 منظومات + عقوبة على القيم المفقودة
-- =========================================
-- SIU score = geometric mean of 5 contour scores
-- + optional penalty for missing data
-- =========================================
CREATE OR REPLACE VIEW v_siu_score_current AS
WITH cs AS (
SELECT
contour_code,
score_0_100,
missing_cnt
FROM v_contour_score_current
),
pivot AS (
SELECT
MAX(CASE WHEN contour_code='W' THEN score_0_100 END) AS w_score,
MAX(CASE WHEN contour_code='T' THEN score_0_100 END) AS t_score,
MAX(CASE WHEN contour_code='E' THEN score_0_100 END) AS e_score,
MAX(CASE WHEN contour_code='C' THEN score_0_100 END) AS c_score,
MAX(CASE WHEN contour_code='I' THEN score_0_100 END) AS i_score,
SUM(missing_cnt) AS total_missing
FROM cs
)
SELECT
CURRENT_DATE AS period_start,
CURRENT_DATE AS period_end,
w_score, t_score, e_score, c_score, i_score,
-- Base geometric mean
ROUND(
POWER(
NULLIF(w_score,0) * NULLIF(t_score,0) * NULLIF(e_score,0) * NULLIF(c_score,0) * NULLIF(i_score,0),
1.0/5.0
),
2
) AS siu_base,
-- Penalty: -0.5 per missing KPI (cap -15)
GREATEST(
ROUND(
POWER(
NULLIF(w_score,0) * NULLIF(t_score,0) * NULLIF(e_score,0) * NULLIF(c_score,0) * NULLIF(i_score,0),
1.0/5.0
) - LEAST(total_missing * 0.5, 15),
2
),
0
) AS siu_0_100
FROM pivot;
1.4 (اختياري) طرق عرض مادية materialized views للسرعة
-- Materialize contour and SIU daily/weekly via cron/job
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_contour_score_current AS
SELECT * FROM v_contour_score_current;
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_siu_score_current AS
SELECT * FROM v_siu_score_current;
-- Refresh commands:
-- REFRESH MATERIALIZED VIEW mv_contour_score_current;
-- REFRESH MATERIALIZED VIEW mv_siu_score_current;
2) بيانات أولية Seed (MVP)
2.1 المنظومات والأدوار والمنظمات و 10 من الأنظمة الحرجة
-- =========================================
-- SEED DATA - CORE
-- =========================================
-- Contours
INSERT INTO contour (code, name, weight, description) VALUES
('W','العسكري',0.2,'الردع، القابلية للتحكم، المرونة السيبرانية، التدريبات')،
('T','التكنولوجي',0.2,'التوطين، البحث والتطوير، البرمجيات، الكوادر، العمق الإنتاجي')،
('E','الاقتصادي',0.2,'الصناعة، المال، الطاقة، الغذاء، اللوجستيات')،
('C','المعرفي',0.2,'الثقة، المناعة المعلوماتية، التعليم، الثقافة')،
('I','المؤسسي',0.2,'التنسيق، سرعة القرارات، تدقيق المخاطر، الاحتياطي الإداري')
ON CONFLICT (code) DO NOTHING;
-- Roles
INSERT INTO user_role (name, permissions) VALUES
('strategic', '{"read":"all","write":"none"}'),
('operational','{"read":"all","write":"kpi,incident,decision"}'),
('technical', '{"read":"all","write":"kpi,measurement,deps"}'),
('auditor', '{"read":"all","write":"none"}'),
('admin', '{"read":"all","write":"all"}')
ON CONFLICT (name) DO NOTHING;
-- وحدات تنظيمية (تقريباً)
INSERT INTO org_unit (name, type, contact_role, status) VALUES
('مركز مراقبة سويوز','analysis','منسق','active')،
('مشغل البنية التحتية الحرجة','operator','مناوب','active')،
('المركز السيبراني','operator','مناوب','active')،
('المنظومة المالية','operator','منسق','active')،
('المنظومة اللوجستية','operator','منسق','active')،
('البيئة المعلوماتية/الاتصالات','operator','منسق','active')،
('البحث والتطوير والكوادر','operator','منسق','active')
ON CONFLICT (name) DO NOTHING;
-- 10 Critical systems
INSERT INTO critical_system (name, category, criticality_level, owner_org, region_scope, status)
SELECT x.name, x.category, x.crit, ou.org_id, 'national', 'active'
FROM (VALUES
('منظومة الطاقة','energy',1)،
('الاتصال والإدارة','comm',1),
('النظام المالي','finance',1),
('اللوجستيات والنقل','logistics',1),
('النظام الغذائي','food',1),
('الرعاية الصحية','health',2),
('استمرارية الحكم الحكومي','governance',1),
('مجمع الصناعات الدفاعية والتعبئة الصناعية','defense_industry',1),
('الكوادر والبحث والتطوير','hr_rnd',2),
('البيئة المعلوماتية والاستقرار المعرفي','info',1)
) AS x(name, category, crit)
JOIN org_unit ou ON ou.name = 'مركز رصد سويوز'
ON CONFLICT (name) DO NOTHING;
2.2 مؤشر أداء رئيسي (25 وحدة: بمقدار 5 لكل منظومة)
-- =========================================
-- SEED DATA - KPI CATALOG (25)
-- =========================================
-- W (higher better unless stated)
INSERT INTO kpi (name, unit, aggregation, direction, description) VALUES
('W1: استقلالية الإدارة','%','last','higher_is_better','نسبة منظومات الإدارة المستقلة'),
('W2: نسبة القنوات المحمية','%','last','higher_is_better','نسبة قنوات الاتصال المحمية'),
('W3: زمن التبديل إلى الاحتياطي','min','last','lower_is_better','الدقائق حتى الانتقال إلى القنوات الاحتياطية'),
('W4: الاستقرار السيبراني (عتبة الصد)','index','last','higher_is_better','مؤشر الاستقرار ضد الهجمات'),
('W5: تكرار التدريبات بين المنظومات','per_year','last','higher_is_better','تدريبات/سنة');
-- T
INSERT INTO kpi (name, unit, aggregation, direction, description) VALUES
('T1: توطين المكونات الحرجة','%','last','higher_is_better','نسبة المكونات الحرجة الموطنة'),
('T2: نسبة البرمجيات المحلية في الأنظمة الحرجة','%','last','higher_is_better','استخدام البرمجيات المحلية'),
('T3: البحث والتطوير إلى الناتج المحلي الإجمالي','%GDP','last','higher_is_better','كثافة البحث والتطوير'),
('T4: تخريج المهندسين حسب الأولويات','per_year','last','higher_is_better','عدد الخريجين/سنة'),
('T5: زمن استبدال المكون الحرج','months','last','lower_is_better','مدة استبدال نقطة الاختناق');
-- E
INSERT INTO kpi (name, unit, aggregation, direction, description) VALUES
('E1: الاستقلالية الصناعية','%','last','higher_is_better','الاكتفاء الذاتي في الإنتاج'),
('E2: استمرارية المدفوعات الجماعية','%','last','higher_is_better','نسبة المدفوعات دون تأخير'),
('E3: الاستقلالية في الطاقة','%','last','higher_is_better','نسبة توفير الطاقة داخليا'),
('E4: أيام الاحتياطي الغذائي','days','last','higher_is_better','تغطية الاحتياطي'),
('E5: اتفاقية مستوى الخدمة لتسليم الشحنات الحرجة','%','last','higher_is_better','تسليم الشحنات الحرجة وفق اتفاقية مستوى الخدمة');
-- C
INSERT INTO kpi (name, unit, aggregation, direction, description) VALUES
('C1: مؤشر الثقة بالمؤسسات','index','last','higher_is_better','الثقة العامة'),
('C2: سرعة تفنيد التسريبات','hours','last','lower_is_better','الساعات حتى التحصين'),
('C3: نسبة محو الأمية الإعلامية','%','last','higher_is_better','السكان ذوو الأمية الإعلامية الأساسية'),
('C4: تغطية التعليم المنهجي','%','last','higher_is_better','نسبة التغطية بالبرامج'),
('C5: مؤشر الترابط الاجتماعي','index','last','higher_is_better','الاستقطاب/الترابط');
-- I
INSERT INTO kpi (name, unit, aggregation, direction, description) VALUES
('I1: زمن دورة اتخاذ القرار','hours','last','lower_is_better','من الحدث إلى القرار'),
('I2: تغطية بطاقات الاستقرار','%','last','higher_is_better','نسبة الأنظمة ذات البطاقات'),
('I3: انتظام تدقيق المخاطر','per_year','last','higher_is_better','تدقيقات/سنة'),
('I4: ازدواجية مراكز الإدارة','%','last','higher_is_better','التغطية بمراكز احتياطية'),
('I5: تنفيذ القرارات في الموعد','%','last','higher_is_better','نسبة المهام المنجزة في الموعد')
ON CONFLICT (name) DO NOTHING;
2.3 ربط مؤشرات الأداء الرئيسية بالمنظومات و10 بالنظم (KPIDefinition)
لكي "ينطلق" النموذج الأولي، نفعل ما يلي: نربط كل واحد من مؤشرات الأداء الرئيسية 25 بجميع الأنظمة (هذا طبيعي للنموذج الأولي، ثم نقسمها حسب الأنظمة الفرعية). الوزن داخل المنظومة = 0.2 (5 مؤشر أداء رئيسي).
-- =========================================
-- SEED DATA - KPI DEFINITIONS (25 KPI x 10 systems)
-- =========================================
-- Helper: get contour_id by code
WITH contours AS (
SELECT contour_id, code FROM contour
),
systems AS (
SELECT system_id FROM critical_system WHERE status='active'
),
kpimap AS (
SELECT kpi_id, name FROM kpi
),
defs AS (
SELECT
s.system_id,
c.contour_id,
k.kpi_id,
-- targets/warn/critical per KPI name (MVP rough norms)
CASE
WHEN k.name LIKE 'W1:%' THEN 85
WHEN k.name LIKE 'W2:%' THEN 80
WHEN k.name LIKE 'W3:%' THEN 10
WHEN k.name LIKE 'W4:%' THEN 80
WHEN k.name LIKE 'W5:%' THEN 4
WHEN k.name LIKE 'T1:%' THEN 70
WHEN k.name LIKE 'T2:%' THEN 80
WHEN k.name LIKE 'T3:%' THEN 3
WHEN k.name LIKE 'T4:%' THEN 100000 -- مقياس شرطي، سنقوم بالتوحيد لاحقا
WHEN k.name LIKE 'T5:%' THEN 12
WHEN k.name LIKE 'E1:%' THEN 75
WHEN k.name LIKE 'E2:%' THEN 99
WHEN k.name LIKE 'E3:%' THEN 90
WHEN k.name LIKE 'E4:%' THEN 180
WHEN k.name LIKE 'E5:%' THEN 95
WHEN k.name LIKE 'C1:%' THEN 75
WHEN k.name LIKE 'C2:%' THEN 6
WHEN k.name LIKE 'C3:%' THEN 60
WHEN k.name LIKE 'C4:%' THEN 50
WHEN k.name LIKE 'C5:%' THEN 70
WHEN k.name LIKE 'I1:%' THEN 12
WHEN k.name LIKE 'I2:%' THEN 100
WHEN k.name LIKE 'I3:%' THEN 4
WHEN k.name LIKE 'I4:%' THEN 80
WHEN k.name LIKE 'I5:%' THEN 90
ELSE NULL
END AS target_value,
CASE
WHEN k.name LIKE 'W3:%' THEN 20
WHEN k.name LIKE 'T5:%' THEN 18
WHEN k.name LIKE 'C2:%' THEN 12
WHEN k.name LIKE 'I1:%' THEN 24
ELSE NULL
END AS warning_value,
CASE
WHEN k.name LIKE 'W1:%' THEN 50
WHEN k.name LIKE 'W2:%' THEN 40
WHEN k.name LIKE 'W3:%' THEN 60
WHEN k.name LIKE 'W4:%' THEN 40
WHEN k.name LIKE 'W5:%' THEN 1
WHEN k.name LIKE 'T1:%' THEN 40
WHEN k.name LIKE 'T2:%' THEN 50
WHEN k.name LIKE 'T3:%' THEN 1
WHEN k.name LIKE 'T4:%' THEN 20000
WHEN k.name LIKE 'T5:%' THEN 36
WHEN k.name LIKE 'E1:%' THEN 50
WHEN k.name LIKE 'E2:%' THEN 90
WHEN k.name LIKE 'E3:%' THEN 70
WHEN k.name LIKE 'E4:%' THEN 30
WHEN k.name LIKE 'E5:%' THEN 80
WHEN k.name LIKE 'C1:%' THEN 45
WHEN k.name LIKE 'C2:%' THEN 48
WHEN k.name LIKE 'C3:%' THEN 30
WHEN k.name LIKE 'C4:%' THEN 20
WHEN k.name LIKE 'C5:%' THEN 40
WHEN k.name LIKE 'I1:%' THEN 72
WHEN k.name LIKE 'I2:%' THEN 60
WHEN k.name LIKE 'I3:%' THEN 1
WHEN k.name LIKE 'I4:%' THEN 40
WHEN k.name LIKE 'I5:%' THEN 60
ELSE NULL
END AS critical_value
FROM systems s
JOIN contours c ON TRUE
JOIN kpimap k ON (
(c.code='W' AND k.name LIKE 'W%:%') OR
(c.code='T' AND k.name LIKE 'T%:%') OR
(c.code='E' AND k.name LIKE 'E%:%') OR
(c.code='C' AND k.name LIKE 'C%:%') OR
(c.code='I' AND k.name LIKE 'I%:%')
)
)
INSERT INTO kpi_definition (
kpi_id, system_id, contour_id,
target_value, warning_value, critical_value,
weight_in_contour, source_type, owner_org
)
SELECT
d.kpi_id, d.system_id, d.contour_id,
d.target_value, d.warning_value, d.critical_value,
0.2,
'manual',
(SELECT org_id FROM org_unit WHERE name='مركز رصد سويوز' LIMIT 1)
FROM defs d
ON CONFLICT DO NOTHING;
مهم: مؤشرات الأداء الرئيسية مثل «تخريج مهندسين» تتطلب تطبيعًا حسب السكان/الخطة. في النسخة الأولية هو مجرد عرض توضيحي. في النسخة التشغيلية نجعله «مهندسون لكل 100k» أو «نسبة تنفيذ الخطة».
2.4 عدة قياسات لكي تعرض لوحة المعلومات SIU فورًا
-- =========================================
-- SEED DATA - MEASUREMENTS (latest values)
-- =========================================
-- سنضع قياس "اليوم" لجميع kpi_definition.
-- للعرض التوضيحي: قيم قريبة من target (مع انحرافات طفيفة).
INSERT INTO measurement (kpi_def_id, timestamp, value, quality_flag, source_ref)
SELECT
kd.kpi_def_id,
NOW(),
CASE
WHEN k.name LIKE 'W1:%' THEN 82
WHEN k.name LIKE 'W2:%' THEN 77
WHEN k.name LIKE 'W3:%' THEN 14
WHEN k.name LIKE 'W4:%' THEN 75
WHEN k.name LIKE 'W5:%' THEN 3
WHEN k.name LIKE 'T1:%' THEN 60
WHEN k.name LIKE 'T2:%' THEN 72
WHEN k.name LIKE 'T3:%' THEN 2.2
WHEN k.name LIKE 'T4:%' THEN 70000
WHEN k.name LIKE 'T5:%' THEN 16
WHEN k.name LIKE 'E1:%' THEN 70
WHEN k.name LIKE 'E2:%' THEN 98.5
WHEN k.name LIKE 'E3:%' THEN 88
WHEN k.name LIKE 'E4:%' THEN 120
WHEN k.name LIKE 'E5:%' THEN 93
WHEN k.name LIKE 'C1:%' THEN 68
WHEN k.name LIKE 'C2:%' THEN 10
WHEN k.name LIKE 'C3:%' THEN 45
WHEN k.name LIKE 'C4:%' THEN 38
WHEN k.name LIKE 'C5:%' THEN 62
WHEN k.name LIKE 'I1:%' THEN 18
WHEN k.name LIKE 'I2:%' THEN 70
WHEN k.name LIKE 'I3:%' THEN 2
WHEN k.name LIKE 'I4:%' THEN 55
WHEN k.name LIKE 'I5:%' THEN 84
ELSE NULL
END AS value,
'ok'::quality_flag,
'seed_mvp'
FROM kpi_definition kd
JOIN kpi k ON k.kpi_id = kd.kpi_id
WHERE (kd.effective_to IS NULL OR kd.effective_to >= CURRENT_DATE);
كيف نتحقق من أن الحساب يعمل (بسرعة)
-- 1) عرض KPI scores
SELECT contour_id, COUNT(*) cnt, ROUND(AVG(score_0_100),2) avg_score
FROM v_kpi_score_latest
GROUP BY contour_id
ORDER BY contour_id;
-- 2) المنظومات
SELECT * FROM v_contour_score_current ORDER BY contour_code;
-- 3) SIU
SELECT * FROM v_siu_score_current;
-- =========================================
-- DASHBOARD PACK (single query views)
-- SIU + contour tiles + top risks + top deps + active incidents
-- =========================================
-- 1) Latest SIU (from materialized if exists, else from view)
CREATE OR REPLACE VIEW v_dashboard_siu_latest AS
SELECT *
FROM v_siu_score_current;
-- 2) Contour tiles
CREATE OR REPLACE VIEW v_dashboard_contours AS
SELECT
contour_id,
contour_code,
score_0_100,
missing_cnt,
null_scores_cnt
FROM v_contour_score_current
ORDER BY contour_code;
-- 3) Top risks (by risk_score)
CREATE OR REPLACE VIEW v_dashboard_top_risks AS
SELECT
risk_id,
name,
type,
probability,
impact,
risk_score,
status,
last_reviewed_at
FROM risk_register
WHERE status IN ('open','mitigating')
ORDER BY risk_score DESC, last_reviewed_at NULLS LAST
LIMIT 5;
-- 4) Top dependencies (critical first, then high; shortest due date first)
CREATE OR REPLACE VIEW v_dashboard_top_dependencies AS
SELECT
dep_id,
item_name,
item_type,
system_id,
import_share_pct,
substitution_due_months,
reserve_coverage_months,
risk_level,
updated_at
FROM dependency_item
WHERE risk_level IN ('critical','high')
ORDER BY
CASE risk_level WHEN 'critical' THEN 0 ELSE 1 END,
substitution_due_months NULLS LAST,
reserve_coverage_months NULLS FIRST,
updated_at DESC
LIMIT 5;
-- 5) Active incidents (open/contained)
CREATE OR REPLACE VIEW v_dashboard_active_incidents AS
SELECT
i.incident_id,
i.system_id,
cs.name AS system_name,
i.incident_type,
i.severity,
i.started_at,
i.status,
i.summary
FROM incident i
JOIN critical_system cs ON cs.system_id = i.system_id
WHERE i.status IN ('open','contained')
ORDER BY i.severity DESC, i.started_at DESC
LIMIT 10;
-- 6) Single "dashboard pack" view as JSON (handy for API)
CREATE OR REPLACE VIEW v_dashboard_pack_json AS
SELECT jsonb_build_object(
'siu', (SELECT to_jsonb(s) FROM v_dashboard_siu_latest s),
'contours', (SELECT jsonb_agg(to_jsonb(c) ORDER BY c.contour_code) FROM v_dashboard_contours c),
'top_risks', (SELECT jsonb_agg(to_jsonb(r)) FROM v_dashboard_top_risks r),
'top_dependencies', (SELECT jsonb_agg(to_jsonb(d)) FROM v_dashboard_top_dependencies d),
'active_incidents', (SELECT jsonb_agg(to_jsonb(a)) FROM v_dashboard_active_incidents a)
) AS dashboard;
-- =========================================
-- OPTIONAL: ROLLUPS (weekly/monthly) for fast charts
-- Uses measurements to compute contour scores by period.
-- =========================================
-- Helper: choose period bucket. For weekly: date_trunc('week', ts), monthly: date_trunc('month', ts)
-- 1) KPI score per period (latest measurement within period)
CREATE OR REPLACE VIEW v_kpi_latest_by_week AS
WITH m2 AS (
SELECT
m.kpi_def_id,
date_trunc('week', m.timestamp)::date AS period_start,
(date_trunc('week', m.timestamp) + INTERVAL '6 days')::date AS period_end,
m.timestamp,
m.value,
m.quality_flag,
ROW_NUMBER() OVER (
PARTITION BY m.kpi_def_id, date_trunc('week', m.timestamp)
ORDER BY m.timestamp DESC
) AS rn
FROM measurement m
)
SELECT
kd.kpi_def_id,
kd.kpi_id,
kd.system_id,
kd.subsystem_id,
kd.contour_id,
kd.target_value,
kd.warning_value,
kd.critical_value,
kd.weight_in_contour,
k.direction,
m2.period_start,
m2.period_end,
m2.timestamp,
m2.value,
m2.quality_flag
FROM m2
JOIN kpi_definition kd ON kd.kpi_def_id = m2.kpi_def_id
JOIN kpi k ON k.kpi_id = kd.kpi_id
WHERE m2.rn = 1;
-- Score weekly
CREATE OR REPLACE VIEW v_kpi_score_by_week AS
SELECT
v.*,
CASE
WHEN v.quality_flag = 'missing' THEN 0
WHEN v.direction = 'higher_is_better' THEN
CASE
WHEN v.target_value IS NULL OR v.critical_value IS NULL THEN NULL
WHEN v.value >= v.target_value THEN 100
WHEN v.value <= v.critical_value THEN 0
ELSE ROUND( ( (v.value - v.critical_value) / NULLIF((v.target_value - v.critical_value),0) ) * 100, 2)
END
WHEN v.direction = 'lower_is_better' THEN
CASE
WHEN v.target_value IS NULL OR v.critical_value IS NULL THEN NULL
WHEN v.value <= v.target_value THEN 100
WHEN v.value >= v.critical_value THEN 0
ELSE ROUND( ( (v.critical_value - v.value) / NULLIF((v.critical_value - v.target_value),0) ) * 100, 2)
END
ELSE NULL
END AS score_0_100
FROM v_kpi_latest_by_week v;
-- 2) Contour score by week (across all systems, MVP global)
CREATE OR REPLACE VIEW v_contour_score_by_week AS
SELECT
c.contour_id,
c.code AS contour_code,
ks.period_start,
ks.period_end,
ROUND(
SUM(ks.score_0_100 * kd.weight_in_contour) / NULLIF(SUM(kd.weight_in_contour),0),
2
) AS score_0_100,
SUM(CASE WHEN ks.score_0_100 IS NULL THEN 1 ELSE 0 END) AS null_scores_cnt,
SUM(CASE WHEN ks.quality_flag = 'missing' THEN 1 ELSE 0 END) AS missing_cnt
FROM contour c
JOIN kpi_definition kd ON kd.contour_id = c.contour_id
JOIN v_kpi_score_by_week ks ON ks.kpi_def_id = kd.kpi_def_id
GROUP BY c.contour_id, c.code, ks.period_start, ks.period_end;
-- 3) SIU by week
CREATE OR REPLACE VIEW v_siu_by_week AS
WITH cs AS (
SELECT period_start, period_end, contour_code, score_0_100, missing_cnt
FROM v_contour_score_by_week
),
pivot AS (
SELECT
period_start,
period_end,
MAX(CASE WHEN contour_code='W' THEN score_0_100 END) AS w_score,
MAX(CASE WHEN contour_code='T' THEN score_0_100 END) AS t_score,
MAX(CASE WHEN contour_code='E' THEN score_0_100 END) AS e_score,
MAX(CASE WHEN contour_code='C' THEN score_0_100 END) AS c_score,
MAX(CASE WHEN contour_code='I' THEN score_0_100 END) AS i_score,
SUM(missing_cnt) AS total_missing
FROM cs
GROUP BY period_start, period_end
)
SELECT
period_start,
period_end,
w_score, t_score, e_score, c_score, i_score,
ROUND(
POWER(
NULLIF(w_score,0) * NULLIF(t_score,0) * NULLIF(e_score,0) * NULLIF(c_score,0) * NULLIF(i_score,0),
1.0/5.0
),
2
) AS siu_base,
GREATEST(
ROUND(
POWER(
NULLIF(w_score,0) * NULLIF(t_score,0) * NULLIF(e_score,0) * NULLIF(c_score,0) * NULLIF(i_score,0),
1.0/5.0
) - LEAST(total_missing * 0.5, 15),
2
),
0
) AS siu_0_100
FROM pivot
ORDER BY period_end DESC;
If you want the MVP to feel “alive” immediately, run this quick seed for risks/dependencies/incidents too:
-- =========================================
-- Optional seed: risks, dependencies, incident
-- =========================================
INSERT INTO risk_register (name, type, description, probability, impact, owner_org, status, last_reviewed_at)
VALUES
('حظر تقني للمكونات الحرجة','tech','تقييد الإمدادات/المعدات','5','5',
(SELECT org_id FROM org_unit WHERE name='مركز رصد سويوز'), 'open', NOW()),
('هجوم سيبراني على البنية التحتية الحرجة','cyber','هجمات على الطاقة/الاتصالات/اللوجستيات','5','4',
(SELECT org_id FROM org_unit WHERE name='المركز السيبراني'), 'open', NOW()),
('انقطاع لوجستي في الشحنات الحرجة','logistics','إفشال المسارات/العقد','4','4',
(SELECT org_id FROM org_unit WHERE name='المنظومة اللوجستية'), 'mitigating', NOW())
ON CONFLICT DO NOTHING;
INSERT INTO dependency_item (system_id, item_name, item_type, current_source, import_share_pct,
substitution_plan, substitution_due_months, reserve_coverage_months,
risk_level, owner_org)
VALUES
((SELECT system_id FROM critical_system WHERE name='الاتصالات والتحكم'),
'شريحة شبكات حرجة','component','foreign',85,
'تطوير بديل محلي + إنتاج تعاقدي',24,6,'critical',
(SELECT org_id FROM org_unit WHERE name='مركز رصد سويوز')),
((SELECT system_id FROM critical_system WHERE name='النظام المالي'),
'مكونات HSM (وحدات تشفير)','component','mixed',40,
'توطين الإنتاج والاعتماد',18,9,'high',
(SELECT org_id FROM org_unit WHERE name='المركز السيبراني'))
ON CONFLICT DO NOTHING;
INSERT INTO incident (system_id, incident_type, severity, started_at, status, summary, created_by_role)
VALUES
((SELECT system_id FROM critical_system WHERE name='منظومة الطاقة'),
'outage',4,NOW() - INTERVAL '3 hours','contained','خلل محلي في عقدة الإرسال',
(SELECT role_id FROM user_role WHERE name='operational'))
ON CONFLICT DO NOTHING;
Use this one-liner to fetch the whole dashboard payload: