رصد
الدليل التشغيلي للدعم الفني وإدارة التخطيط والتحكم
مرجع كل العمليات. الأجزاء المعلَّمة 🟢 تُقرأ مباشرة من المنصة، فتتحدّث وحدها مع أي تعديل في الإعدادات.
1 مقدمة
هذا الدليل هو المرجع التشغيلي لفريقي الدعم الفني وإدارة التخطيط والتحكم في منصة رصد، ويغطي الإصدار الحالي من الواجهة والخادم.
- لمن: حسابات إدارة التخطيط (ROLE_PLANNING) والدعم الفني (ROLE_SUPPORT) — أغلب أدوات الإدارة الحساسة مقصورة عليهما.
- كيف يُستخدم: كل قسم = مجال عمل. ابحث عن العملية بالاسم، ونفّذ الخطوات كما هي. أسماء الأزرار والتابات مكتوبة كما تظهر في المنصة.
- قاعدة عامة: أي عملية تكتب بيانات كثيرة (استيراد، ترحيل رموز، استرجاع نسخة) تُنفَّذ خارج وقت الدوام، وبعد التأكد من وجود نسخة احتياطية.
- سجل التدقيق: كل عملية إدارية تُسجَّل باسم منفّذها في تاب «سجل التدقيق»، بما فيها ما يُنفَّذ عبر «دخول كحساب».
2 مكوّنات المنصة
رصد = واجهة ويب من ملف واحد + خادم Google Apps Script مرتبط بملف Google Sheets هو قاعدة البيانات، مع بوت تلجرام ومُرحِّل Netlify.
| المكوّن |
ما هو |
ما يهمك تشغيلياً |
| الواجهة (rasd_portal) |
ملف HTML واحد يُرفع كـ index.html على الاستضافة |
يتصل بالخادم عبر رابط SCRIPT_URL (رابط Web App المنتهي بـ /exec). يحفظ نسخة محلية من البيانات في المتصفح للعرض الفوري |
| الخادم (backend_rasd) |
Apps Script منشور كـ Web App |
كل العمليات تمر بـ doPost باسم «إجراء» (Action). أي تعديل على الكود لا يسري إلا بنشر نسخة جديدة (Deploy) |
| قاعدة البيانات |
ملف Google Sheets المرتبط بالسكربت |
شيتات JSON مقسّمة (Users، Schools، Surveys، Estimates، Tickets، Notifications…) + شيتات صفوف (ResponsesRows، Complaints، Projects، PoFinance، Targets، PocAchieved) + سجلات (AuditLog، ErrorLog). لا تُعدَّل يدوياً إلا بإشراف فني |
| الكاش والإصدارات |
CacheService + أرقام إصدار في Script Properties |
كل استيراد أو كتابة يرفع رقم الإصدار فيبطل الكاش تلقائياً. زر «تحديث» في أي تاب يجبر إعادة الحساب |
| الصور والملفات |
Google Drive (مجلدا TBC_Survey_Images وTBC_Support_Tickets) |
المنصة ترفض عرض أي ملف خارج هذين المجلدين (حماية). لا تنقلهما ولا تغيّر اسميهما |
| بوت تلجرام |
بوت المنصة (@TBC_RASD_EASTERN_BOT) |
إشعارات، تفعيل حسابات، أسئلة، وتطبيق مصغّر داخل تلجرام |
| مُرحِّل Netlify |
دالة netlify/functions/telegram.mjs |
تستقبل رسائل تلجرام وترد فوراً ثم تمرّرها للخادم (Apps Script يرد بتحويل 302 فيرفضه تلجرام). تحتاج متغيّر بيئة GAS_URL = رابط /exec |
| الذكاء الاصطناعي |
Gemini (افتراضي) أو Claude |
المساعد الذكي، فحص الصور، تصنيف البلاغات، استخراج المستندات. بحد عام لكل دقيقة ولكل يوم |
القفل العام: عمليات الكتابة تمر واحدةً تلو الأخرى (انتظار حتى 25 ثانية). لذلك استيراد كبير أثناء الدوام يُبطئ حفظ التقارير والاعتمادات عند الجميع، بينما القراءة (العرض والمؤشرات) بلا قفل.
3 الأدوار والصلاحيات
قاعدة ذهبية: مصفوفة الصلاحيات تتحكم فيما يظهر على الشاشة (التابات والأزرار وقوائم البوت فقط). أما الخادم فله فحوص أدوار ثابتة في الكود، ولا تغيّرها المصفوفة. مثال: الاعتماد دائمًا للمديرين والإدارة الكاملة، و«دخول كحساب» دائمًا للتخطيط والدعم فقط.
3.1 مجموعات الأدوار
| المجموعة |
الأدوار |
ما تملكه |
| الإدارة الكاملة (9 أدوار) |
إدارة التخطيط والتحكم، الدعم الفني، إدارة القطاع الشرقي، منسق المشاريع، المدير التنفيذي للمكتب الإقليمي الشرقي، مدير البرامج التنفيذي للمكتب الإقليمي، مدير برنامج إدارة التخطيط والتحكم، مهندس تخطيط إدارة المشاريع، مهندس تخطيط الصيانة والتشغيل |
صلاحيات إدارية متطابقة. تُنشأ يدويًا فقط، ولا يمكن التسجيل الذاتي عليها |
| صلاحيات حصرية للتخطيط والدعم |
إدارة التخطيط والتحكم + الدعم الفني |
ضبط النظام، استيراد المشاريع والمالية والمستهدفات وPOC، الاستشاريين، دخول كحساب، دعوات Outlook، تعديل أي دور عند الاعتماد |
| المديرون |
مدير الزون + إدارة المكتب الفرعي |
اعتماد ورفض تقارير فرعهم، التفويض. الفرق بينهما تنظيمي فقط |
| الميدان |
مشرف الصيانة والتشغيل |
حصر المدارس المسندة إليه فقط |
| حصر أساسي (مؤقت) |
مشرف حصر أساسي |
تاب «بناء القاعدة الأساسية» ومدارسه المخصصة |
| رؤية رصد |
مشرف إدارة التخطيط والتحكم |
«رؤية رصد» فقط |
| البلاغات |
مشرف البلاغات |
إدارة المدارس واستيراد البلاغات (لكن المسح الكامل يحتاج الإدارة الكاملة) |
| الترميم |
مدير قسم الترميم + مدير برنامج الترميم (اعتماد نهائي)؛ مهندس ترميم + مدير مشروع/استشاري الترميم (مراجعة) |
المقايسات |
| المشاريع فقط |
مدير إدارة المشاريع + 6 أدوار PM (برنامج/مشروع/استشاري × إنشاء/ترميم) |
تابات المشاريع والمالية والمستهدفات والتشغيل المستمر فقط، عرضًا بلا استيراد |
| شاشة العرض |
حساب عرض فقط |
لا يظهر في المصفوفة |
الأدوار المتاحة للتسجيل الذاتي هي: مدير الزون، إدارة مكتب فرعي، مشرف الصيانة والتشغيل، مشرف حصر أساسي، مشرف البلاغات، أدوار الترميم، مدير إدارة المشاريع، وأدوار PM الستة. وعند الاعتماد تظهر علامة ⚠️ على الأدوار القيادية، وعلامة 🔴 على الأدوار الإدارية.
3.2 تعديل مصفوفة الصلاحيات
- قائمة الملف الشخصي ← «📊 تقرير الصلاحيات» للاطلاع، أو «✏️ تعديل الصلاحيات» للتعديل (للإدارة الكاملة).
- فعّل أو ألغِ الخانات، ثم اضغط «💾 حفظ التعديلات». يمكنك أيضًا «📤 تصدير Excel»، ثم التعديل خارج المنصة، ثم «📥 استيراد Excel». الاستيراد يعرض الفروقات ولا يحفظ حتى تضغط حفظ.
- «↺ إرجاع الكل للافتراضي» يلغي كل التعديلات.
3.3 المصفوفة الحالية (مباشرة من المنصة)
- التعديلات محفوظة في شيت PermissionsOverrides، وتبقى بعد أي نشر جديد للكود.
- حماية من الإغلاق: يجب أن يبقى تاب المستخدمين وصلاحية «تعديل مصفوفة الصلاحيات» لدور إداري واحد على الأقل، وإلا يُرفض الحفظ.
- صلاحيتا «السماح بتعديل التقارير» و«السماح بطباعة PDF» في حساب المستخدم محفوظتان لكن غير مطبّقتين في الكود حاليًا. المطبّق فعليًا هو إلزامية الموقع وإلزامية الصورة فقط، وتُفحصان في المتصفح.
4 الحسابات: من التسجيل حتى الإيقاف
كل العمليات هنا من تاب «إدارة الهيكل والمستخدمين»، وتحتاج دورًا إداريًا كاملًا ما لم يُذكر غير ذلك.
4.1 التسجيل الذاتي واعتماده
- المستخدم: صفحة الدخول ← «📝 تسجيل حساب جديد». يدخل الاسم، البريد (إلزامي وفريد)، الجوال، كلمة المرور، المسمى، والفرع. يُمنح رمزًا وظيفيًا تلقائيًا RSD-yy-NNN.
- شرط كلمة المرور: 8 خانات على الأقل، تجمع حروفًا وأرقامًا، ولا تُقبل الكلمات الشائعة أو المتوقعة.
- الحدود: 5 طلبات لكل بريد خلال 15 دقيقة، وحد عام 30 طلبًا في الساعة. إذا كرّر المستخدم الطلب بالبريد نفسه يُعاد له رمز الطلب المعلّق.
- الاعتماد: بطاقة «🆕 طلبات تسجيل جديدة بانتظار الاعتماد». راجع «المسمى عند الاعتماد» و«الفرع عند الاعتماد»، ثم «✓ قبول واعتماد» أو «✕ رفض» مع سبب اختياري.
- إذا ظهر تحذير «يشبه حساباً قائماً»، فالغالب أن صاحب الطلب لديه حساب. ارفض الطلب وأرسل له تفعيلًا لحسابه القديم.
- التخطيط والدعم يستطيعان تغيير الدور إلى أي دور. باقي الإدارة تغيّر إلى أدوار التسجيل الذاتي فقط. وكل تغيير يُسجل في سجل التدقيق.
- المستخدم المعتمد يحتفظ بكلمة مروره، ولا يُطلب منه تغييرها. تصله رسالة ترحيب على تلجرام والبريد وداخل المنصة.
4.2 إنشاء حساب يدويًا أو بالإكسل
- حساب واحد: «➕ إضافة مستخدم جديد». الحقول الإلزامية: الاسم والرمز الوظيفي والمسمى وكلمة المرور (يمكن استخدام زر «توليد 🎲»). الحساب الجديد يُلزم بتغيير كلمة المرور في أول دخول.
- بالإكسل: التاب الفرعي «📥 الاستيراد والتصدير» ← «📥 تنزيل القالب» ← «📤 رفع ملف مستخدمين». المطابقة تتم بالرمز الوظيفي: يُحدّث الموجود، ويُنشأ الجديد، ولا يُحذف أحد.
- ⚠️ إذا كان المسمى غير معروف يُحفظ الحساب «مشرف الصيانة والتشغيل» بلا تنبيه. راجع المسميات قبل الرفع.
- ⚠️ إذا كانت خانة كلمة المرور فارغة أو ضعيفة تُولّد كلمة عشوائية لا تظهر لك. بعد الرفع أرسل لهم دعوات أو أكواد تفعيل.
- تعديل حساب: زر «تعديل». الرمز الوظيفي لا يتغيّر من هنا (استخدم أداة الترحيل في القسم التالي)، ولا يمكن استخدام بريد حساب آخر.
4.3 تفعيل الحساب وإرسال الدعوات
الطريقة الموصى بها هي أن ترسل للمستخدم كود تفعيل يضع به كلمة مروره بنفسه، بدلاً من أن تسلّمه كلمة مرور.
| الأداة |
المكان |
ماذا تفعل |
| «🔗 رابط التفعيل» |
صف المستخدم (لغير المفعّلين) |
يولّد كود XXXX-XXXX صالحًا 7 أيام لمرة واحدة، مع رابط تلجرام ورسالة جاهزة للواتساب. الكود الجديد يلغي السابق |
| «📥 تصدير أكواد التفعيل» |
أعلى التاب |
ملف إكسل بأكواد جديدة لكل غير المفعّلين. ⚠️ يلغي كل الأكواد المرسلة سابقًا |
| «✉️ دعوات الحسابات» (Outlook) |
بطاقة في تاب المستخدمين (التخطيط والدعم) |
تجهيز دعوات تُرسل من بريد الشركة. التفاصيل أدناه |
خطوات دعوات Outlook:
- اختر المستخدمين (الملفات بلا بريد تُتخطى)، ثم «✉️ تجهيز N دعوة». هذا يصدر أكوادًا جديدة ويسجل العملية في شيت InviteLog.
- لكل مستخدم ثلاث طرق للإرسال:
- «💻 مسودة Outlook»: ملف .eml يُفتح في Outlook المكتبي مسودةً جاهزة بتصميمها.
- «🌐 Outlook ويب».
- «📱 رسالة» (تطبيق البريد في الجهاز). وزر «⬇️ تنزيل كل المسودات» يجمعها في ملف واحد.
- أرسل من Outlook الشركة. في الدعوة: الرمز الوظيفي، كود التفعيل، زر «تفعيل حسابي»، رابط تلجرام، وبريد الدعم ERPMO@tbc.sa.
إذا أعدت تجهيز دعوة لشخص فقد ألغيت كود دعوته السابقة. أرسل له الدعوة الأحدث دائمًا.
جانب المستخدم: صفحة الدخول ← «🔑 تفعيل حسابي». يدخل الرمز الوظيفي أو البريد، ثم الكود، ثم كلمة مرور جديدة. 5 محاولات خاطئة تقفل التفعيل 15 دقيقة. ومعنى «مفعّل ✓» أن المستخدم غيّر كلمة المرور المؤقتة.
4.4 كلمات المرور والقفل
| الحالة |
الحل |
| نسي كلمة المرور |
«نسيت كلمة المرور؟». يصله رمز من 6 أرقام صالح 15 دقيقة على تلجرام والبريد. الحد 3 طلبات كل 15 دقيقة |
| لا يصله الرمز |
«كلمة المرور» في صف المستخدم (إعادة تعيين من الإدارة) أو كود تفعيل جديد. الإعادة تفك القفل وتلزمه بتغييرها |
| «بيانات الدخول غير صحيحة» وهي صحيحة |
الحساب مقفل بعد 5 محاولات خاطئة (15 دقيقة). انتظر، أو أعد تعيين كلمة المرور |
| «تم إيقاف تسجيل الدخول مؤقتاً لدواعي أمنية» |
أكثر من 500 محاولة خاطئة على المنصة خلال حوالي 10 دقائق. يفتح تلقائيًا. ابحث عن مصدر الهجوم |
| «يجب تغيير كلمة المرور أولاً» |
الحساب جديد أو أُعيد تعيينه. يغيّرها من «🔑 تغيير كلمة المرور» |
| خرج من المنصة وحده |
الجلسة مدتها 6 ساعات ثابتة. خيار «تذكر الجلسة» يحفظها بعد إغلاق المتصفح فقط |
4.5 الإيقاف والحذف
- «إيقاف»: يقطع جلسة المستخدم في طلبه التالي برسالة «تم تعطيل حسابك». هذا هو الخيار المفضّل عند ترك العمل لأنه قابل للتراجع.
- «🗑️ حذف»: بتأكيد مزدوج، ولا يمكن حذف حسابك أنت. تبقى تقارير المحذوف باسمه، وتُلغى التفويضات الموجهة إليه.
- قبل إيقاف مشرف أسند مدارسه لغيره (انظر «المدارس»)، وإلا تظهر مدارسه في تقرير فحص الحسابات.
4.6 «🔎 دخول كحساب» (للتشخيص)
- للتخطيط والدعم فقط. يعرض المنصة بالضبط كما يراها المستخدم، وهو أسرع طريقة لفهم شكوى "لا أرى …".
- لا يعمل على حسابك أنت، ولا على حساب إداري كامل، ولا على حساب موقوف.
- لا يُطلب تغيير كلمة المرور أثناء هذا الدخول، حتى لو كان الحساب غير مفعّل.
- كل عملية تتم أثناء الدخول تُسجّل في سجل التدقيق بعلامة «[نُفِّذ عبر دخول كحساب…]». لذلك لا تعتمد ولا تحذف شيئًا أثناءه.
- تحديث الصفحة ينهي الدخول ويعيدك لحسابك.
4.7 تفويض صلاحية الاعتماد
- المدير (أو الإداري) يفوّض من قائمة ملفه الشخصي ← «🔄 تفويض صلاحية الاعتماد».
- يختار مديرًا آخر وتاريخ انتهاء (إلزامي). يستطيع المفوَّض إليه اعتماد تقارير فرع المفوِّض وتعديلها حتى هذا التاريخ.
- التفويض من حساب الشخص نفسه فقط. وإذا كان غائبًا تستطيع الإدارة الاعتماد مباشرة لأن صلاحيتها تشمل كل الفروع.
4.8 دليل المستخدم التلقائي
في أول دخول حقيقي يُرسل للمستخدم دليل PDF خاص بدوره، مرة واحدة، على تلجرام أو البريد. وللطباعة والمشاركة يوجد تاب «📘 دليل التسجيل».
5 سلامة الحسابات والرموز الوظيفية
الرمز الوظيفي الموحّد هو RSD-سنة-تسلسل (مثل RSD-26-014)، والبريد لا يتكرر بين حسابين. الأدوات في: إدارة المستخدمين ← «🧭 سلامة الحسابات والرموز الوظيفية» (للتخطيط والدعم الفني).
5.1 قواعد يطبّقها النظام تلقائياً
- البريد يُرفض إذا كان مسجّلاً لحساب آخر — في التسجيل، إنشاء حساب، الاستيراد، تعديل البريد، ولحظة اعتماد طلب التسجيل. ويُرفض كذلك إذا ساوى رمزاً قديماً لحساب آخر.
- حسابات قديمة ببريد مكرر: الدخول بالبريد يختار الحساب الذي تطابق كلمة مروره، واستعادة كلمة المرور والتفعيل بالبريد تُرفض (غامض) — يدخل صاحبه بالرمز الوظيفي.
- طلبات التسجيل المعلّقة تُظهر تنبيهاً أحمر إذا كان الاسم أو الجوال يطابق حساباً قائماً، وعدد المدارس التي سيراها تلقائياً لأن اسمه مكتوب فيها كمشرف. قبل الاعتماد تأكد أنه ليس نفس الشخص بحساب قديم.
5.2 🔍 فحص الحسابات (قراءة فقط)
يعرض: البريد المكرر، الاسم المكرر (بعد تطبيع الهمزات والتاء المربوطة)، الجوال المكرر (آخر 9 أرقام)، المدارس المربوطة باسم المشرف فقط، ورموز مشرفين مكتوبة في المدارس ولا تطابق أي حساب.
المعالجة: الحساب المكرر (غالباً الأقدم غير المفعّل) ← أوقفه من جدول المستخدمين، أو عدّل بريده إلى الصحيح.
5.3 📌 تثبيت ربط المدارس
المدرسة التي بلا "رمز مشرف" تُربط بأي حساب اسمه يطابق اسم المشرف المكتوب — مصدر التضارب. الزر يكتب الرمز في كل مدرسة لها مشرف نشط واحد مطابق فيتوقف الربط بالاسم لها نهائياً. الغامضة (اسمان متقاربان أو بلا حساب) تبقى كما هي، وتُعدَّل يدوياً من شاشة المدارس.
- شغّل «فحص الحسابات» وأصلح الأسماء المكررة أولاً.
- اضغط «تثبيت ربط المدارس» وأكّد.
- راجع قائمة الغامضة المتبقية وعدّلها يدوياً.
5.4 🔁 ترحيل الرموز القديمة إلى RSD
يغيّر الرمز في كل مكان مرتبط به: التقارير، المدارس، عمود المشرف في البلاغات، المقايسات، التذاكر، الإشعارات، المسودات، الرؤية، صندوق الترميم، الاستشاريين، إعدادات الإشعارات، التفويض، والجلسات. سجلا التدقيق والأخطاء لا يتغيّران (تاريخيان).
- توقيت: خارج الدوام — الحفظ يتوقف عند الجميع أثناء التنفيذ (دقائق).
- «معاينة ترحيل الرموز» ← جدول القديم ← الجديد. حسابات الإدارة مستثناة افتراضياً، وحسابا admin وشاشة العرض لا يُرحَّلان أبداً.
- أول مرة: اختر حسابين تجريبيين فقط ونفّذ، ثم تحقق أنهما يدخلان ويريان تقاريرهما ومدارسهما.
- «تصدير المعاينة (Excel)» للاحتفاظ بالجدول.
- «تنفيذ الترحيل للمحدّد» ← اكتب كلمة ترحيل. يُنشئ النظام أولاً نسخة احتياطية كاملة من ملف البيانات في Drive (إن فشلت لا يتغيّر شيء)، ويظهر رابطها في النتيجة.
- نزّل «جدول الرموز الجديدة» وأرسل الدعوات (قسم الحسابات).
بعد الترحيل: الرمز القديم يبقى صالحاً للدخول كاسم بديل، والجلسات المفتوحة تستمر، والمتصفح يتحدّث للرمز الجديد ويُبلغ المستخدم وينقل مسوداته المحلية. أكواد التفعيل غير المستخدمة للحسابات المُرحَّلة تُلغى (تُرسل جديدة مع الدعوة).
5.5 🛠️ إصلاح/استكمال الترحيل
استخدمه في حالتين: التنفيذ توقف في المنتصف (يتوقف ذاتياً قرب حد الـ 6 دقائق ويذكر المتبقي)، أو ظهر رمز قديم من جديد بسبب حفظ متزامن. يعيد تطبيق جدول «القديم ← الجديد» على كل المخازن، وهو آمن للتكرار. إن بقي «لم يكتمل» أعد الضغط.
إن انتهت مهلة المتصفح أثناء الترحيل: لا تعد «التنفيذ». راجع «سجل التدقيق» (حدث USERNAME_MIGRATION)، ثم استخدم «إصلاح/استكمال».
الحسابات الجديدة من التسجيل الذاتي أو استيراد المدارس تأخذ رمز RSD من الخادم مباشرة بنفس التسلسل.
6 المدارس وإسنادها
التاب: «إدارة المدارس والبيانات». الإدارة متاحة للإدارة الكاملة ومشرف البلاغات. المشرف الميداني يرى «🏫 المدارس المسندة في عهدتك» فقط.
6.1 الاستيراد الجماعي (مستوى الخطر: عالٍ)
- «📥 استيراد جماعي للمدارس» ← «📥 تنزيل القالب المعتمد». اسم الشيت «حصر المشرفين والمدارس».
- املأ القالب. الأعمدة المهمة: اسم المشرف، الجوال، المدير المباشر، إدارة التعليم (منها يُحدّد الفرع، وليس من عمود «المنطقة»)، أسماء المدارس، الرقم الوزاري، الإيميل، وأعمدة «مسارات» الثلاثة في آخر القالب (نوع السجل = مسارات، الرقم الوزاري للأصلية، نفس المبنى نعم/لا — الفرع يرث مشرف الأصلية ومكتبها)، الجنس، خط الطول، خط العرض، مدير القطاع (المكتب الفرعي).
- الفرع: إذا حوت «إدارة التعليم» كلمة حفر الباطن أو أحساء يُسند لها، وما عدا ذلك «الشرقية».
- «📤 رفع القالب المعبأ». ماذا يحدث تلقائيًا:
- «المدير المباشر» يُنشأ كـ «مدير الزون» لكل الفروع، ويُقترح ربط كل مشرف بمديره في «الهيكل الوظيفي للاستشاري» بعد مراجعة (سيتم ربط · تعارض مع تعديل يدوي · غير مطابق) قبل التطبيق.
- «مدير القطاع» يُنشأ كـ «إدارة المكتب الفرعي».
- المشرف الجديد يُنشأ كـ «مشرف الصيانة والتشغيل». والموجود تُحدّث بياناته الوظيفية فقط.
- كل الحسابات الجديدة تأخذ رموز RSD تلقائيًا وكلمة مرور عشوائية مختلفة لكل شخص. ملاحظة: النص على الشاشة ما زال يقول «موحّدة» وهذا قديم.
- ينزل ملف «بيانات_دخول_الحسابات_الجديدة» مرة واحدة فقط. احفظه فورًا، أو أرسل دعوات Outlook بدلًا منه.
حمايات الحفظ:
- قبل كل حفظ لقائمة المدارس تُؤخذ نسخة احتياطية.
- يُرفض حفظ يُنقص القائمة أكثر من 20% إلا بتأكيد.
- يُرفض الحفظ إذا تغيّرت البيانات من جهاز آخر منذ تحميلك. الحل: حدّث الصفحة وأعد العملية.
- الدمج يتم باسم المدرسة المطابق حرفيًا. أي اختلاف إملائي يُنتج مدرسة مكررة.
6.2 عمليات يومية
| العملية |
المسار |
ملاحظات |
| إضافة مدرسة |
«➕ إضافة مدرسة يدوياً» |
الاسم والمشرف إلزاميان. إذا كان الاسم موجودًا تُستبدل المدرسة |
| نقل مدارس لمشرف آخر |
«👤 إسناد مجموعة مدارس لمشرف» ← «فتح الأداة» |
يعرض مشرفي الصيانة والتشغيل فقط، وحتى 150 مدرسة مطابقة للبحث |
| تثبيت المدارس بالمشرف المعتمد |
تاب المستخدمين ← «فحص الحسابات» ← تثبيت |
يربط المدارس المكتوب فيها اسم المشرف بحسابه الفعلي. يعمل مع المشرفين النشطين فقط. انظر «سلامة الحسابات» |
| طلبات إضافة مدارس من المشرفين |
بطاقة «🏫 طلبات إضافة مدارس جديدة» |
«✓ اعتماد» يضيف المدرسة ويُسندها لصاحب الطلب. قبل الاعتماد تأكد أن المدرسة غير موجودة باسم مختلف |
| فتح تعديل البيانات للمشرفين |
«فتح صلاحية تحديث بيانات المدارس للمشرفين» |
حتى لو كان مغلقًا يستطيع المشرف تحديث التواصل عبر شاشة التحقق لمدارسه |
| التحقق من الملف الأساسي |
بطاقات المشرف: تحديث التواصل، «📍 تحديث الموقع بموقعي الحالي»، «✅ تأكيد صحة البيانات» |
شريط النسبة يوضح التقدم |
| استرجاع القائمة |
«⏪ استرجاع المدارس» / «⏪ استرجاع النماذج» |
مستوى واحد فقط: آخر نسخة قبل آخر حفظ. الوضع الحالي يُحفظ قبل الاسترجاع |
بعد أي تغيير في إسناد المدارس أو فروعها شغّل «🔗 إعادة ربط البلاغات بالمدارس» (تاب البلاغات ← أدوات متقدمة)، لأن ربط البلاغ بالمدرسة يُحفظ وقت الاستيراد.
6.3 تابات مرتبطة
- «📚 سجل المدارس التراكمي» (الإدارة والمديرون): آخر إجابة غير مرفوضة لكل سؤال وكل مدرسة، مع تصدير Excel وزر «🤖 لخّص هذا السجل».
- «🧱 بناء القاعدة الأساسية»: مدارس مشرف الحصر الأساسي تُحدّد في حقل «المدارس المخصّصة له» بحسابه (إذا تُرك فارغًا يرى كل المدارس). شاشة العمل لكل مدرسة غير مبنية بعد وتظهر كعنصر مؤقت.
- تحديد المحافظات تلقائيًا: الخادم يدعمه (220 مدرسة في كل تشغيل)، لكن الزر غير موجود في الواجهة الحالية.
7 الاستبيانات والتقارير و«رؤية رصد»
7.1 دورة حياة التقرير
- إنشاء النموذج (الإدارة): تاب «عمليات الحصر» ← «+ إنشاء حصر جديد».
- المسمى والاستحقاق والتوجيهات، ثم البنود. الأنواع: نص، فقرة، اختيار واحد/متعدد، قائمة، رقم، تاريخ، تقييم، صورة، GPS.
- الخيار المعلّم «إشكالية» يُحوَّل تلقائيًا للترميم عند اعتماد التقرير. ويمكن إظهار سؤال بشرط إجابة سؤال سابق.
- «حفظ ونشر النموذج ✓» ينبّه المشرفين على تلجرام.
- ⚠️ لا تغيّر مسمى حصر له تقارير. التقارير مربوطة بالمسمى، فتصبح «يتيمة» إذا تغيّر. أنشئ نموذجًا جديدًا بدلًا من ذلك.
- التعبئة (المشرف):
- يختار الفرع والمدرسة (المسندة إليه فقط)، ثم «التقاط GPS»، ثم يجيب، ثم «رفع التقرير للاعتماد ✓».
- الصور تُرفع فور التقاطها.
- المسودة تُحفظ محليًا مع كل تغيير، وعلى الخادم كل 5 إجابات وعند مغادرة الصفحة. اختيار المدرسة نفسها يعرض استكمال المسودة.
- الإرسال المكرر بسبب ضعف الشبكة لا يُنتج تقريرًا مكررًا.
- التعديل:
- المشرف يعدّل تقريره خلال 48 ساعة، أو بعدها إذا مُنح «🔓 إذن تعديل للمشرف».
- تعديل الإدارة على تقرير معتمد أو مرفوض يتطلب سببًا، ويُحفظ في سجل التعديلات.
- الاعتماد (المديرون لفرعهم، والإدارة للكل):
- «✓ اعتماد التقرير» أو «✕ رفض بملاحظة».
- للدفعات: «✅ اعتماد الكل (حسب الفلاتر الحالية)». راجع الفلاتر جيدًا قبل الضغط.
- الاعتماد يبلّغ الكاتب ويُرسل الإشكاليات إلى «📥 الوارد من الحصر» في الترميم، مع مقايسة مسودة لكل مدرسة.
- المخرجات:
- «🖨️ عرض التقرير» للطباعة، و«📤 تليجرام» لإرسال نسخة PDF.
- التصدير المتقدم «🖨️ PDF» أو «📊 Excel» بفلاتر (الحصر، الفروع، المشرف، المدرسة). الصور لا تدخل في الإكسل.
مشاكل شائعة:
- "المشرف لا يرى مدرسته": المدرسة غير مسندة إليه، أو مسندة لاسمه القديم. الحل: «فحص الحسابات» ثم تثبيت، أو أداة الإسناد.
- "الموقع لا يُلتقط": إذن الموقع مغلق في المتصفح. يمكن استثناء مستخدم بإلغاء «📍 إلزامية التقاط الموقع» من حسابه.
- تقارير بلا نموذج: «تنظيف التقارير اليتيمة الآن» في تاب السجلات. تأكد أولًا أن السبب ليس تغيير اسم حصر.
- حذف نموذج يسأل إن كنت تريد حذف تقاريره أيضًا. الإجابة بنعم لا تُسترجع.
7.2 «👁️ رؤية رصد» (مقارنة بالصور فصلية)
المسؤولون: التخطيط، الدعم، ومدير برنامج التخطيط. المنفّذ: «مشرف إدارة التخطيط والتحكم».
- البنود: «📥 استيراد قائمة البنود». الأعمدة: البند (إلزامي)، الفئة، إلزامي، ملاحظة. الاستيراد يستبدل القائمة كلها.
- الأساس: «🤖 رفع تقارير المدارس السابقة» (PDF أو صور). الذكاء الاصطناعي يقرأ كل صفحة، ثم تراجع وتضغط «💾 حفظ الأساس». علّم «دمج مع الأساس الحالي» لكي لا تستبدله.
- الدورة: دورة واحدة كل ربع سنة (YYYY-Qn).
- تُجهَّز تلقائيًا كمسودة في أول 7 أيام من الربع، أو يدويًا بـ «تجهيز دورة الآن».
- «🚀 إطلاق الدورة» يحتاج أساسًا واحدًا على الأقل، ويبلّغ المشرفين.
- التذكيرات تبدأ قبل الاستحقاق بـ 7 أيام. «تعديل الاستحقاق» و«إيقاف الدورة» متاحان.
- المشرف: يقارن صورة الأساس بصورة حديثة، ويختار «سليم» أو «إشكالية» لكل بند، ثم «رفع التقرير لاعتماد إدارة التخطيط ✓».
- المراجعة: «مقارنة واعتماد» ثم «✓ اعتماد» أو «↩ إرجاع للمشرف» مع سبب. الاعتماد يرسل الإشكاليات للترميم، ويقفل التقرير.
7.3 التقرير التنفيذي بالذكاء الاصطناعي
الزر العائم 🤖 ← «🚀 تقرير تنفيذي شهري». كل إجابة تُصدَّر PDF، أو Excel إذا حوت جدولًا. السياق محصور بصلاحيات المستخدم، والحد 40 سؤالًا في الساعة (يُضبط بـ AI_MAX_PER_HOUR).
8 استيراد الملفات
8.1 جدول الملفات
| الملف |
المسار |
الشيت والأعمدة الإلزامية |
الحفظ |
الدورة |
| محفظة المشاريع |
«إدارة المشاريع» ← «📥 استيراد البيانات» |
«All Projects»: «رقم المشروع» + «اسم المشروع بالعربي» |
استبدال كامل آمن |
7 أيام |
| القيم المالية PO |
«قيم الإنجاز مقابل القيم المالية» ← استيراد |
«PO financial details»: Purchase Order Number + Project Number |
استبدال كامل آمن |
7 أيام |
| المستهدف |
«المستهدفات» ← «📥 استيراد البيانات والمطابقة» |
«Revenue Budget Sources»: Isnaad code NEW + Budget Amount2 |
استبدال كامل آمن |
ثابت |
| POC (المحقق) |
نفس البطاقة ← «استيراد POC» |
«POC»: Record No. + This Period POC Amount |
دمج يحفظ الأشهر القديمة |
30 يومًا |
| البلاغات |
«البلاغات» ← «📥 استيراد البيانات» |
أول شيت: DisplayID + SchoolNumber |
مسح ثم رفع (غير آمن) |
يومي |
| عقود التشغيل والمحاضر |
«عقود ومحاضر التشغيل المستمر» ← استيراد |
«Contracts»: PO No + Contractor؛ «Isnad»: Isnad |
استبدال لكل نوع |
30 يومًا |
| عقود نقل المهام (MOE) |
«عقود نقل المهام» ← «📥 الاستيراد» |
شيت «MOE»، العمود «اسم المشروع» إلزامي |
استبدال كامل |
30 يومًا |
| الفواتير المالية |
«الفواتير المالية» ← «📥 الاستيراد» |
أول شيت، صف عناوين يحوي «Vendor/Contractor Name» |
استبدال كامل |
7 أيام |
| عقود الاستشاريين |
«عقود الاستشاريين» |
شيت لكل أمر عمل، فيه صف عناوين يحوي «#» |
تحديث حسب أمر العمل |
30 يومًا |
| سجل أوامر العمل |
نفس التاب |
CSV أو Excel، والصفوف التي تبدأ بـ TBC فقط |
تحديث |
30 يومًا |
| كتالوج الاتفاقية |
«الترميم والتأهيل» ← «📚 كتالوج بنود الاتفاقية الإطارية» |
الأعمدة: م / اسم البند / الوحدة |
استبدال |
ثابت |
| الأسعار الاسترشادية |
نفس المكان |
من الصف 6، والأعمدة من E لكل مقاول |
تحديث وإضافة |
90 يومًا |
| مؤشرات SMO KPI |
«SMO KPI» ← «📥 استيراد البيانات» |
ورقة «SMO - KPI»: صف عناوين أوله «#» ثم مؤشر لكل صف، و8 أعمدة لكل شهر |
استبدال السنة نفسها فقط |
30 يومًا |
المشاريع والمالية والمستهدف وPOC وSMO KPI: للتخطيط والدعم فقط. البلاغات: للإدارة الكاملة. عقود التشغيل: للتخطيط والدعم ومهندس تخطيط الصيانة. الكتالوج والأسعار: للإدارة ومدير الترميم.
8.2 حالة الملفات الآن (مباشرة من المنصة)
8.3 كيف يعمل "الاستبدال الآمن"
الملف يُرفع على دفعات كل منها 2000 صف، إلى شيت مؤقت (مثل Projects__staging). ولا يُستبدل الشيت الحيّ إلا بعد نجاح آخر دفعة. لذلك انقطاع الشبكة في المنتصف لا يفسد البيانات القديمة.
- كل دفعة تُعاد تلقائيًا حتى 3 مرات، وتظهر أثناء ذلك رسالة «انقطاع مؤقت — إعادة محاولة…».
- إذا ظهرت «حدث خطأ في الدفعة n بعد عدة محاولات» فالبيانات القديمة سليمة. أعد الاستيراد من البداية.
- «تم إيقاف هذا الاستيراد لأن عملية استيراد أخرى بدأت…» تعني أن شخصًا آخر يستورد الملف نفسه في الوقت نفسه. نسّق معه، لأن الأحدث هو ما يُحفظ.
- «جلسة الاستيراد غير موجودة أو انتهت» أو «الشيت المؤقت للاستيراد غير موجود»: حدّث الصفحة وأعد الاستيراد.
- بعد النجاح: يُسجّل في سجل الاستيراد، وتُجهَّز الإحصائيات في الخلفية خلال ثوانٍ. أول فتح للتاب بعد ذلك قد يكون أبطأ قليلًا.
- بطاقة «🩺 تشخيص حالة البيانات» في كل تاب استيراد فيها زران:
- «🩺 فحص»: قراءة فقط.
- «🛠️ فحص وإصلاح»: يكمل استبدالًا انقطع بعد آخر دفعة، ولا يلمس البيانات إذا كان الشيت الحيّ ممتلئًا.
8.4 ملاحظات خاصة بكل ملف
- المشاريع:
- عمود Data Date مهم. منه تُبنى نقطة منحنى SPI (آخر 12 نقطة)، وبدونه لا تُسجّل نقطة.
- الصفوف بلا رقم مشروع تُتجاهل.
- بعد الاستيراد يُرسل تنبيه العقود بالبريد إذا كان PROJECTS_ALERT_EMAIL مضبوطًا.
- المالية: صفوف PO التي لا تطابق مشروعًا في المحفظة مخفية من العرض. لذلك استورد المشاريع أولًا.
- المستهدف: صف العناوين يُكتشف تلقائيًا في أول 12 صفًا (بالبحث عن Budget Amount2).
- POC:
- ⚠️ المتصفح يبقي فقط الصفوف التي يحوي فيها عمود Creator «ضياء» أو «diaa»، والباقي يظهر «تم تخطي N سجل لمناطق أخرى». إذا تغيّر منشئ السجلات يحتاج الكود تعديلًا.
- ⚠️ البطاقة تقول «كل ملف يستبدل بياناته بالكامل»، لكن POC في الحقيقة يدمج: يحفظ الأشهر التي لا يغطيها الملف الجديد ويذكرها في رسالة النجاح.
- المعتمد فقط ما حالته POC_Approved.
- مطابقة المحاضر («🔗 مطابقة محاضر الإسناد بتصنيف المستهدف»):
- «✨ قبول كل الاقتراحات» ثم «💾 حفظ وإعادة الحساب».
- النسبة: 8 تُفهم 1.08، و 0.08 تُفهم 1.08 أيضًا.
- أولوية النسبة: المطابقة اليدوية، ثم عمود TBC Project Margin %، ثم فلتر «معامل المحضر» (1.08).
- التشغيل المستمر: العقود التي تغطي أكثر من نطاق تظهر «يحتاج توزيع». رابط «توزيع» متاح للتخطيط والدعم.
- الملفات الكبيرة: انتظر حتى يكتمل تحميل الصفحة. إذا ظهر «الرجاء الانتظار قليلاً حتى يتم تحميل المكتبات» فمكتبة Excel لم تُحمَّل بعد.
9 التابات التشغيلية: البلاغات والمشاريع والمستهدفات والترميم
9.1 البلاغات: التحديث اليومي
المسار التلقائي (المفضّل):
- ملف «كل البلاغات» يُوضع يوميًا في مجلد Drive المحدد في COMPLAINTS_DAILY_FOLDER_ID.
- النظام يأخذ أحدث ملف الساعة 12:30، ويعيد المحاولة 16:00. الاستبدال آمن عبر شيت مؤقت، والملف نفسه لا يُستورد مرتين.
- إذا لم يصل ملف حتى 16:00 يُرسل تنبيه «⚠️ ملف البلاغات لم يصل اليوم».
- المواعيد تُعدّل من «إدارة الإشعارات ← المواعيد». للاختبار اليدوي: «⚡ تشغيل التحديث التلقائي الآن (اختبار)».
المسار اليدوي: «📥 اختر ملف "كل البلاغات" وابدأ التحديث اليومي». يمسح القديم، ثم يرفع، ثم ينظّف التكرار، ثم يعيد الربط بالمدارس.
- ⚠️ غير آمن: إذا انقطع الرفع تبقى البلاغات ناقصة. الحل هو إعادة التحديث اليومي فورًا بالملف نفسه.
- ⚠️ مشرف البلاغات يرى الزر، لكن خطوة المسح تحتاج إدارة كاملة، فيظهر له «تعذر مسح البيانات القديمة، لم يبدأ التحديث».
- القالب: أول شيت، والعمودان DisplayID و SchoolNumber إلزاميان. التصنيف يُستنتج من CategoryTier2/3.
«⚙️ أدوات متقدمة»:
| الزر |
متى تستخدمه |
| «🔗 إعادة ربط البلاغات بالمدارس» |
بعد أي تغيير في المدارس أو الفروع |
| «📋 تصدير المدارس غير المرتبطة» |
لمعرفة المدارس الناقصة من القائمة أو ذات الرقم الوزاري الخاطئ |
| «🧹 تنظيف التكرارات» |
عند ظهور بلاغ مرتين |
| «📤 رفع ملف فوق الموجود» |
إضافة بدون مسح (الأحدث يفوز)، بدون إعادة ربط |
| «🔄 مسح الكاش» |
إذا كانت الأرقام لا تتغيّر بعد استيراد ناجح |
| «🤖 إعادة تصنيف البلاغات الغامضة» |
بلاغات «صيانة» ذات وصف: 300 بلاغ في كل تشغيل، كرّر حتى يصبح المتبقي 0 |
| «🗑️ مسح كل البلاغات نهائياً» |
لا تستخدمه إلا قبل رفع كامل مباشرة. لا يُسترجع |
| «☀️ إرسال الملخص اليومي الآن» / «🏛️ فحص تنبيه المدارس الأكثر بلاغات» |
اختبار الإشعارات |
العرض الافتراضي يبدأ من 2026-08-10. «📋 جدول البلاغات» مجمّع حسب المدرسة، و«+» يفتح حتى 500 بلاغ. التصدير حده 50,000 صف.
9.2 المشاريع والمالية
- الفلاتر الرئيسية (مشاريع جارية فقط): «الصيانة الطارئة الجارية» و«مشاريع الإسكان» و«المشاريع الإنشائية» (وهي الباقي).
- تعريفها يُضبط من «🎛️ تعريف الفلاتر الرئيسية» في تاب الاستيراد، بتحديد أرقام المحاضر لكل مجموعة.
- المحضر لا يدخل في مجموعتين.
- شارات المخاطر:
- «⚠️ متأخر»: 1–30 يومًا.
- «🔶 متأخر بشدة»: أكثر من 30.
- «🔴 حرج»: أكثر من 90.
- «📅 تجاوز العقد».
- «⏳ قرب انتهاء العقد» / «📜 قرب انتهاء محضر»: خلال 3 أسابيع.
- «⏸️ متوقف».
- «⏰ تنبيه العقود ومحاضر الإسناد بالبريد» ← «اختبار التنبيه الآن». يحتاج PROJECTS_ALERT_EMAIL.
- «⚡ تجهيز الإحصائيات مسبقاً» ← «⚡ تجهيز الآن»: يبني اللقطات الدائمة للمشاريع والمالية والمستهدفات.
- تصدير المالية حده 20,000 صف.
9.3 المستهدفات
- مكانه: مجموعة «المستهدفات والأداء» في القائمة الجانبية (خرج من «إدارة المشاريع»)، ومحتواه لم يتغير.
- الفلاتر: السنة، الشهر، وحدة العمل، التصنيف، معامل المحضر. شريط الشهور يحدد «حتى شهر»، والافتراضي آخر شهر فيه إنجاز.
- الرسم تفاعلي: وحدة العمل ← التصنيف ← المحضر.
- التصدير:
- Excel.
- PDF.
- «📑 تصدير التقرير»: عرض PowerPoint لفترة من/إلى، مع حقلي التحديات والتوصيات.
9.4 SMO KPI (مؤشرات الأداء المؤسسي)
في مجموعة «المستهدفات والأداء». يراه من يرى «المستهدفات»، والاستيراد وتعديل القواعد للتخطيط والدعم الفني.
- نظرة عامة: عجلة المؤشرات ونسبة التحقيق، وعدد المؤشرات المحققة كل شهر، وعداد لكل مؤشر، و«نبض الأشهر»، و«يحتاج انتباه».
- نسبة التحقيق = عدد المؤشرات المحققة ÷ المؤشرات التي لها مستهدف. المؤشر الذي له مستهدف بلا نتائج (مثل "لا يوجد نظام CAFM") يُحسب غير محقق.
- حكم كل مؤشر حسب قاعدته في جدول «⚙️ قاعدة تقييم كل مؤشر»:
- آخر شهر: آخر نتيجة مقابل مستهدف شهرها.
- المتوسط: متوسط الأشهر حتى الشهر المختار (مع «أدنى شهر» إن وُجد).
- كل الأشهر: محقق فقط إذا تحقق كل شهر.
- القواعد تُستنتج تلقائيًا من نص المستهدف في الملف (≥ أو ≤، الحد، % أو يوم، وكلمة Average تعني المتوسط). عدّلها ثم «💾 حفظ القواعد»، والحساب يتغير فورًا بدون استيراد جديد. القواعد المعدلة يدويًا تبقى عند استيراد نفس السنة.
- المصفوفة الشهرية: الضغط على أي خانة يعرض المستهدف والمحقق ونوع المستند ومصدر البيانات والسبب والخطة البديلة والقرار. الشهر غير المحقق بلا سبب يظهر في «يحتاج انتباه».
- الشهر الجديد: ارفع نفس الملف بعد تعبئة الشهر. «حتى شهر» ينتقل وحده لآخر شهر فيه نتائج، وكل الحسابات تتحدث. الشهر يُحسب فقط إذا كانت فيه نتيجة فعلية.
- سنة جديدة تُحفظ منفصلة وتُختار من فلتر «السنة».
- يحتاج تعديل كود فقط إذا تغيّر ترتيب أعمدة القالب نفسه.
9.5 الترميم والتأهيل (المقايسات)
الحالات:
- مسودة.
- مُرسلة — بانتظار المراجعة.
- قيد المراجعة (أو مُعادة للتعديل ثم إعادة إرسال).
- اعتماد مبدئي — بانتظار مدير القسم.
- معتمدة نهائياً — جاهزة للطرح، أو مرفوضة.
- المهندس يراجع ويسعّر، ولا يعتمد مبدئيًا إلا بعد تسعير كل البنود. الإعادة والرفض يحتاجان سببًا.
- المدير يعتمد نهائيًا.
- «📥 الوارد من الحصر» يستقبل إشكاليات التقارير المعتمدة، ويُنشئ مقايسة مسودة لكل مدرسة. الاستبعاد منه يحتاج سببًا.
- «🏛️ الرفع للوزارة» (التخطيط والدعم ومهندس تخطيط المشاريع): الحالات لم تُرفع / رُفعت / وافقت / رفضت / أجّلت. الرفض يمكن أن يُرجع المقايسة للتعديل.
- ربط مشاريع RV بالرقم الوزاري يتم تلقائيًا، والمطابقة بالذكاء الاصطناعي 25 مشروعًا في كل تشغيل.
- «⚠️ تقرير بنود خارج الاتفاقية» يكشف البنود الحرة في مقايسات الصيانة الطارئة.
9.6 «🤖 تحليل بالذكاء الاصطناعي» (البلاغات)
تاب فرعي داخل «البلاغات» يظهر لكل من يرى البلاغات (الإجراء «🤖 تحليل البلاغات بالذكاء الاصطناعي» في مصفوفة الصلاحيات).
- تحليل واحد للمنطقة كلها: يجريه Claude مرة واحدة على كل بلاغات المنطقة، ثم يرى كل مستخدم ما يخص نطاقه فقط: الإدارة كل شيء، ومدير المكتب بلاغات فرعه وملخص فرعه، والمشرف بلاغات مدارسه. فلا يتكرر التحليل لكل مستخدم ولا تُدفع تكلفته أكثر من مرة.
- ما يُحلَّل: البلاغات المفتوحة الآن فقط (لا يدخل المغلق ولا الملغى)، حتى 300 بلاغ (الأعلى أولوية ثم الأحدث)، مع سياق المنظومة لكل مدرسة: بلاغاتها خلال 90 يومًا وأكثر فئاتها، والمعاد فتحها، ومدة بقاء البلاغ مفتوحًا، والمقاول، ومقايسات الترميم.
- النتيجة: خلاصة المنطقة وخلاصة لكل مكتب، وبلاغات تحتاج تدخلًا فوريًا، والأنماط المتكررة، والمدارس الأكثر احتياجًا مع المسار المقترح، وبلاغات تصنيفها لا يطابق وصفها، والمكررة، والتوصيات مع الجهة المسؤولة والمكتب.
- متى يُحدَّث: تلقائيًا كل يوم الساعة 16:30 بعد تحديث البلاغات (الموعد من «إدارة الإشعارات ← المواعيد»). ويمكن للقيادات (أدوار Claude في 11.4 والإدارة الكاملة) تحديثه يدويًا «↻ تحديث التحليل الآن» حتى 3 مرات يوميًا، وبفاصل 15 دقيقة على الأقل.
- التصدير: «⬇️ Excel» (سبع أوراق) و«🖨️ طباعة»، وكلاهما لنطاق المستخدم فقط.
- أرقام البلاغات والمكاتب التي لا توجد في البيانات تُحذف من النتيجة تلقائيًا، والتحليل استرشادي يُراجَع معه البلاغ الأصلي. إذا بلغ Claude سقفه الشهري أو تعذّر، يُجرى التحليل على Gemini ويظهر ذلك على النتيجة.
9.7 «📈 أثر رصد التشغيلي» (تصنيف المدارس على عمليات التدخل)
في مجموعة «المستهدفات والأداء». يطبّق معايير الدليل التشغيلي لإدارة المشاريع على مدارس الصيانة والتشغيل (مدارس «إدارة المدارس والبيانات»)، فيضع كل مدرسة في أول عملية تنطبق عليها من تسع عمليات (من بند الإصلاحات حتى الاستثمار) ويرتّبها بدرجة أولوية، ويشرح سبب كل قرار. في التبويب «📘 دليل التشغيل» بثلاثة عشر قسمًا يُولَّد من القواعد نفسها، ويُنزَّل PDF أو ملفًا للمشاركة.
- من يراه: مفتاحه في مصفوفة الصلاحيات «📈 أثر رصد التشغيلي». الافتراضي: الإدارة الكاملة، ومدير الزون وإدارة المكتب الفرعي (مدارس مكتبهما فقط إن ارتبطا بمكتب)، ومدير إدارة المشاريع، ومدير برنامج الإنشاء، ومدير قسم الترميم والتأهيل ومدير برنامج الترميم. الخادم يطبّق المصفوفة نفسها (بما فيها التخصيص).
- الاستيراد: للتخطيط والدعم الفني فقط من «📥 استيراد البيانات». ملف «Schools Information» كما هو (ورقة Schools)؛ تُقرأ الأعمدة بأسمائها، ويظهر قبل الحفظ جدول «مطابقة الأعمدة والتحقق» وعدد القيم المعبأة والمطابقة التقديرية. «⬇️ تنزيل القالب» يعطي الأعمدة المطلوبة وورقة تعليمات. «💾 حفظ الاستيراد» يستبدل البيانات كاملة استبدالًا ذرّيًا، ويُسجَّل في سجل الاستيرادات (دورة 90 يومًا) وسجل التدقيق.
- الربط: بـ«الرقم الوزاري» بالأرقام فقط من الطرفين (S-58605 = 58605). الصف في الملف غير الموجود في المنصة لا يدخل الحساب ويظهر في «نتيجة المطابقة الحالية»؛ والمدرسة بلا صف في الملف تظهر في «بيانات ناقصة».
- ملف «المسح الميداني (عاين) وتقويم التعليم»: يُرفع من الزر نفسه ويُعرف من عناوينه. يُقرأ منه المسح الميداني («المؤشر العام» ومكوّناته وكود المبنى؛ المدرسة متعددة المباني يُعتمد أدناها)، والمؤشر العام (النص، والإنجليزية تُحوَّل)، والبيئة المدرسية (الرقم ← مستوى). يُحفظ في ورقة ImpactEval مستقلًا عن «Schools Information» ويحل محل الأعمدة المقابلة فيه.
- ملف «المباني المخلاة»: ورقة ER، يُعرف من عمود «حالة إخلاء المبنى». يُحفظ في ورقة ImpactEvac. المبنى الصالح = مخلى وليس للإزالة وله إحداثيات. يحسب الخادم لكل مدرسة لها إحداثيات المسافة إلى أقرب مبنى صالح (عدا مبناها)، ويأخذ للمدرسة نفسها العمر والدراسة الإنشائية وقرار الإزالة إذا غابت من «Schools Information». بطاقة «📂 ملفات البيانات» تبيّن حالة رفع الملفات الثلاثة.
- الحقول الأساسية: المسح الميداني، والمؤشر العام، وملكية المبنى. غياب أي منها يضع المدرسة في «بيانات ناقصة». عمر المبنى غير متوفر بعد، فيُتجاوَز شرطه مؤقتًا (علامة ≈) ويعود متى استُورد.
- مؤشر حالة المبنى = المسح الميداني (عاين) 90% + «رؤية رصد» 10% (نسبة البنود السليمة في آخر تقرير معتمد). إن غابت رؤية رصد يعود وزنها للمسح.
- البلاغات: المتكررة والعالية الخطورة والأمن والسلامة تُحسب من بلاغات المنصة الحية؛ أعمدة الملف بديل فقط إذا لم توجد بلاغات. بلاغا أمن وسلامة مفتوحان أو أكثر = «الحالات الطارئة».
- الأداء: IMPACT_GET قراءة بلا قفل، وكاش مضغوط يتجدد مع الاستيراد والبلاغات وبيانات المدارس، وخلال 30 دقيقة لاعتماد تقرير رؤية رصد.
10 تلجرام
البوت @TBC_RASD_EASTERN_BOT يستقبل رسائله عبر مُرحِّل Netlify (الوضع المعتمد)، وكل أدوات تشخيصه في «ضبط النظام ← ✈️ تلجرام ← ✈️ تشخيص ربط تليجرام».
10.1 أوضاع استقبال الرسائل
| الوضع |
التفعيل |
متى |
| مُرحِّل Netlify (موصى به) |
Script Property باسم TELEGRAM_RELAY_URL = https://rasdtbc.com/.netlify/functions/telegram ، وفي Netlify متغيّر GAS_URL = رابط /exec ، ثم زر «⚡ تفعيل الرد الفوري» |
دائماً — ردود فورية وبلا تكدّس |
| الاستعلام الدوري (Polling) |
زر «🔄 التحويل لوضع الاستعلام الدوري» |
بديل طوارئ إذا توقف Netlify — الرد يتأخر حتى دقيقة |
| مباشر إلى Apps Script |
تشغيل setTelegramWebhook() من المحرر |
غير موصى به: Apps Script يرد 302 فتتكدّس الرسائل |
10.2 التشخيص
- «🩺 فحص»: يتأكد بالترتيب من التوكن ← البوت يرد ← اسم البوت مطابق ← الـ webhook مضبوط ومطابق (أو الاستعلام يعمل) ← عدد المربوطين.
- «🔗 فحص وإعادة ربط الـwebhook»: يعيد الربط على المُرحِّل. استخدمه بعد أي نشر جديد أو إذا توقف البوت عن الرد.
- «📨 إرسال رسالة اختبار لي»: يحتاج أن يكون حسابك أنت مربوطاً بتلجرام.
10.3 ربط المستخدمين
- مستخدم قائم: الملف الشخصي ← «🔗 تفعيل إشعارات تليجرام». الرابط صالح 30 دقيقة، والمنصة تكتشف الربط تلقائياً.
- حساب غير مفعّل: رابط التفعيل في الدعوة (صالح 7 أيام) يربط تلجرام ويرسل رمزاً من 6 أرقام (30 دقيقة) لوضع كلمة المرور من «تفعيل حسابي».
- طلب تسجيل معلّق: يمكن ربطه قبل الاعتماد، فتصله رسالة الاعتماد على تلجرام.
- إيقاف إشعارات مستخدم: مفتاح الإشعارات في جدول المستخدمين (فردياً أو للكل).
10.4 الأوامر والأسئلة
- القائمة «☰» حسب الدور: /app (يفتح التطبيق المصغّر)، /pending، /regs، /reports، /surveys، /schools، /vision، /estimates، /complaints، /projects، /targets، /contracts، /tickets، /ticket (رفع تذكرة مع صورة)، /notif، /open. كل الأوامر عدا /app ترد بنص فقط.
- أسئلة حرة مثل: «تقرير عن مدرسة …»، «بلاغات الأحساء المفتوحة»، «المشاريع المتأخرة»، «عقد TBC006845»، «بطاقة مدرسة …»، «راسل [اسم]» (للتخطيط والدعم). كل سؤال يخضع لمصفوفة الصلاحيات.
- الحد: 30 رسالة في الساعة لكل مستخدم. الرد على رسالة دعم فني (Reply) يُضاف للتذكرة نفسها.
10.5 التطبيق المصغّر «مركز التحكم»
يُفتح بـ /app ويدخل بتوقيع تلجرام بلا كلمة مرور (جلسة 6 ساعات). الأقسام وبنود القائمة لكل دور تُضبط من «ضبط النظام ← ✈️ تلجرام»:
- الخلية 🔒 = الدور لا يملك التاب في مصفوفة الصلاحيات (عدّل المصفوفة أولاً).
- الحفظ يدفع القائمة الجديدة فوراً لأول 250 مستخدماً مربوطاً، والباقون مع رسالتهم التالية.
- «استعادة التوزيع الافتراضي» يعيد القوائم لأصلها.
11 ضبط النظام
تاب «⚙️ ضبط النظام» خاص بالتخطيط والدعم، وفيه 6 صفحات مرتبة بحسب الموضوع، وفي أعلاها خانة «🔍 ابحث عن بطاقة أو إعداد». الشارة بجانب «📥 البيانات والملفات» هي عدد الملفات التي تحتاج رفعًا.
| الصفحة |
استخدمها عندما |
| 🩺 الصحة والمراقبة |
تشكو الناس من البطء أو لأي مشكلة. فيها «📡 المراقبة الحية» (الحمل مقابل السعة، نبض المكوّنات، «⏪ إعادة تشغيل اليوم»)، و«🩺 فحص النظام الكامل»، و«⏰ المهام المجدولة»، و«🗂️ أحجام البيانات» |
| 📥 البيانات والملفات |
تريد معرفة ما هو متأخر ومن رفع آخر مرة: «⬆️ ملفات تحتاج رفعًا الآن»، و«📥 آخر استيراد لكل ملف»، و«🧊 اللقطات الدائمة»، و«🗃️ تخزين تقارير الحصر» |
| ✈️ تلجرام |
كل ما يخص البوت: «✈️ تشخيص ربط تليجرام»، وحالة البوت، والإرسال اليدوي للملخصات والتنبيهات، وتوزيع قوائم البوت وأقسام «مركز التحكم» على الأدوار |
| 🧠 الذكاء الاصطناعي |
«🤖 تشخيص المساعد الذكي»، وحالة المزوّد، والاستخدام والتكلفة، والتوجيه والحدود، وآخر النداءات (التفاصيل في القسم 11.4) |
| 🚀 النشر والخدمات |
بعد أي نشر: يقارن إصدار الواجهة بالخادم، ويعرض رصيد Netlify وحالة الربط وسجل النشر. وفيها «☁️ مصدر قراءة البلاغات» و«⚡ طبقة القراءة السريعة» و«📄 محرك تقارير PDF» و«📧 مزوّد البريد» و«🔌 التكاملات الخارجية» و«🧭 مسار الترميم — توجيه أثر رصد» |
| 🖥️ الشاشات والمحتوى |
«🖥️ تحكم شاشة العرض» (اللوحات، سرعة الدوران، إعلان الشريط، «🔄 تحديث كل الشاشات الآن»؛ صفحة الزوار: الموقع + ?visitors=1)، و«🖼️ صفحة الترحيب» (التفعيل ووقت الظهور والنصوص وشكل الخريطة ولمن تظهر)، و«📝 أسئلة التحقق» |
11.1 بطاقات الصحة والبيانات والتلجرام والخدمات
- «🩺 فحص النظام الكامل» (الصحة والمراقبة): حوالي 26 فحصًا تستغرق 20–40 ثانية، ولا تغيّر أي بيانات. يمكن تصدير النتيجة أو إرسالها لتلجرام. وبعد استقرار النظام اضغط «تثبيت القيم الحالية كمرجع».
- «🧾 آخر الأخطاء المسجّلة»: أخطاء الخادم وأجهزة المستخدمين، تظهر بعد الفحص. ابدأ منها عند أي بلاغ.
- «✈️ تشخيص ربط تليجرام» (تلجرام) و «🤖 تشخيص المساعد الذكي» (الذكاء الاصطناعي).
- «⬆️ ملفات تحتاج رفعًا الآن» و «📥 آخر استيراد لكل ملف» (البيانات والملفات): ما هو متأخر ومن رفع آخر مرة.
- «🧊 اللقطات الدائمة» (البيانات والملفات):
- «إعادة بناء اللقطات الآن».
- «مسح الكاش المؤقت».
- مجرد فتح هذه الصفحة يصلح تلقائيًا أي لقطة مفقودة (مرة كل 10 دقائق لكل لقطة).
- «⏰ المهام المجدولة» (الصحة والمراقبة): انظر القسم التالي.
- «🔌 التكاملات الخارجية» (النشر والخدمات): Drive Advanced Service (مطلوب لـ PDF)، حصة البريد اليومية، وبريد التنبيهات. وحالة البوت في صفحة «تلجرام»، وحالة مزوّد الذكاء الاصطناعي في صفحة «الذكاء الاصطناعي».
- الإرسال اليدوي (تلجرام):
- إرسال ملخص المستهدفات أو البلاغات الآن.
- فحص تنبيهات المشاريع.
- «🗃️ تخزين تقارير الحصر» (البيانات والملفات): «ترحيل التقارير إلى «صف لكل تقرير»»: لمرة واحدة. الشيت القديم يبقى نسخة احتياطية، والتراجع بضبط RESPONSES_STORAGE=legacy.
11.2 وضع الضغط العالي
عندما يتجاوز الحمل 80% من السعة يعمل «🚦 وضع الضغط العالي» 10 دقائق: يخفّف تحديث المستخدمين ويؤجل التجهيز. يُرسل تنبيه «systemHealth» إذا وصل الحمل 80%، أو حدثت 10 أخطاء فأكثر في الساعة، أو قلّت حصة البريد عن 20.
11.3 النسخ الاحتياطي والاسترجاع
أزرار الاسترجاع ليست هنا، بل في تاب المدارس ← «⏪ استرجاع آخر نسخة احتياطية». تغطي المدارس والنماذج فقط. باقي البيانات تعتمد على سجل إصدارات Google Sheets نفسه (ملف ← سجل الإصدارات).
11.4 «🧠 الذكاء الاصطناعي»: التوجيه والمراقبة
صفحة في «ضبط النظام» لمراقبة استخدام الذكاء الاصطناعي وتكلفته وضبط توجيهه.
- التوجيه حسب الدور: المساعد الذكي في المنصة وفي تلجرام: الأدوار المحددة في «الأدوار الموجّهة إلى Claude» تستخدم Claude (مدفوع)، وبقية الأدوار كالمشرفين تستخدم Gemini (الطبقة المجانية). أما «تحليل البلاغات» فيجريه Claude دائمًا مرة واحدة للمنطقة (انظر 9.6). الافتراضي: الإدارة الكاملة، ومديرو الزون والمكاتب الفرعية، ومدير قسم الترميم وما يعادله، ومدير إدارة المشاريع، ومدير برنامج الإنشاء. مهام النظام الداخلية (تصنيف البلاغات، فهم رسائل البوت، التلخيص، المطابقة) تبقى على AI_PROVIDER.
- التحويل التلقائي إلى Gemini: إذا بلغت تكلفة Claude في الشهر «سقف تكلفة Claude الشهري»، أو لم يُضبط مفتاحه، أو تعذّر نداؤه، يُنفَّذ الطلب على Gemini ويُسجَّل السبب في «تحويلات إلى Gemini».
- البطاقات: تكلفة Claude هذا الشهر مقابل السقف، وطلبات Gemini اليوم مقابل حده اليومي الآمن، ونداءات اليوم وأخطاؤه، والتحويلات. الشريط أخضر حتى 80%، وبرتقالي من 80%، وأحمر عند الحد.
- الجداول: النداءات اليومية لآخر 30 يومًا، والاستخدام حسب الميزة، والأكثر استخدامًا، وآخر النداءات بتكلفتها ومدتها، وآخر الأخطاء.
- التعديل: الأدوار والسقف الشهري وطريقة التوجيه لإدارة التخطيط والتحكم والدعم الفني، ويُسجَّل كل تعديل في سجل التدقيق. التكلفة تُحسب من أسعار Anthropic الرسمية لكل نموذج، وسجل النداءات في شيت AiUsage (آخر ~6000 نداء).
12 الإشعارات والمهام المجدولة
12.1 إدارة الإشعارات
من قائمة الملف الشخصي ← «🔔 إدارة الإشعارات»:
- «👤 إشعاراتي» (لكل مستخدم): اختيار تلجرام أو بريد لكل نوع، وزر «إيقاف الكل مؤقتًا».
- «👥 حسب الوظائف (عام)» (التخطيط والدعم):
- الافتراضي لكل دور.
- عمود 🔒 يمنع المستخدمين من إيقاف الإشعار.
- «➕ أشخاص» لإضافة مستلمين بالاسم.
- تصدير واستيراد Excel.
- «⏰ المواعيد» (إدارة التخطيط فقط): الوقت والتكرار (يومي / أيام العمل / أسبوعي / شهري / متوقف). توقيت Google تقريبي بفارق ±15 دقيقة تقريبًا.
لماذا لم يصل إشعار؟ افحص بالترتيب:
- مفتاح الإشعارات للمستخدم في جدول المستخدمين.
- هل النوع محصور بأدوار معينة؟
- البريد متاح فقط لثلاثة أنواع: طلبات التسجيل، التذاكر، وتنبيه العقود. الباقي تلجرام فقط، حفاظًا على حصة 100 بريد يوميًا.
- إذا لم يكن النوع مغلقًا: هل أوقف المستخدم الكل مؤقتًا؟ ما تفضيله؟
- الافتراضي لدوره.
- هل حسابه مربوط بتلجرام أصلًا (شارة «تلجرام ✓»)؟
رسائل الأمان (الرموز، التفعيل، الترحيب) لا يمكن إيقافها.
12.2 إعدادات الإشعارات الحالية (مباشرة من المنصة)
12.3 المهام المجدولة
🟢 عمود الموعد يُقرأ مباشرة من «⏰ المواعيد» — أي تعديل هناك يظهر هنا فورًا.
| المهمة |
الموعد |
ماذا تفعل |
| ملخص البلاغات المفتوحة |
07:00 |
PDF للمشرفين، وملخص إقليمي للتخطيط |
| «📥 بانتظاري» الصباحي |
07:30 |
ملخص المهام المعلّقة لكل مستخدم مربوط |
| تنبيه العقود والمحاضر |
07:30 |
بريد (PROJECTS_ALERT_EMAIL) وتلجرام |
| 🤖 تحليل البلاغات بالذكاء الاصطناعي |
16:30 |
تحليل Claude اليومي لكل بلاغات المنطقة بعد تحديثها (انظر 9.6) |
| مهمة رؤية رصد اليومية |
07:45 |
تجهيز الدورة، التذكيرات، تنظيف صور المسودات، وتنبيه رصيد Netlify |
| ملفات تحتاج رفعًا |
08:00 |
تنبيه بالملفات المتأخرة |
| موازنة عقود الاستشاريين |
08:00 |
عقود تنتهي خلال 6 أشهر وفيها 50 ألف ريال غير مستغلة أو أكثر |
| تذكيرات الحصر |
08:00 |
مرة كل يومين كحد أقصى لكل مستخدم |
| تحديث البلاغات من المجلد |
12:30 + احتياطي 16:00 |
انظر "التابات التشغيلية" |
| ملخص المستهدفات |
الأحد 07:30 |
أسبوعي |
| تجهيز اللقطات |
كل ساعتين |
يتوقف في وضع الضغط العالي |
| نبض النظام |
كل ساعة، 07–21 |
رسالة «💓» |
| استعلام تلجرام |
كل دقيقة |
اختياري، لوضع الطوارئ فقط |
إعادة تثبيت المهام:
- الطريقة الأسهل: «⏰ المواعيد» ← «💾 حفظ وإعادة ضبط المهام». يعيد تثبيت المهام ذات المواعيد دفعة واحدة.
- من محرر Apps Script فقط: installDurableWarmTrigger و installSystemPulseTrigger. شغّل sendSystemPulse مرة قبلها لمنح الإذن.
- ⚠️ في وضع المُرحِّل تظهر "استعلام تلجرام" غير مثبّتة، وهذا طبيعي. والبطاقة لا تفحص مهام الاستشاريين وتذكيرات الحصر ورؤية رصد و«بانتظاري». للتأكد منها افتح المحرر ← Triggers.
13 التشخيص وحل المشكلات
قبل أي تشخيص:
- خذ الرمز الوظيفي ولقطة شاشة.
- افتح «🧾 آخر الأخطاء المسجّلة».
- جرّب «🔎 دخول كحساب» لترى ما يراه المستخدم.
13.1 جدول الأعراض والحلول
| العرض |
السبب المرجّح |
الحل |
| لا يستطيع الدخول |
قفل بعد 5 محاولات، أو رمز قديم، أو حساب موقوف |
انتظر 15 دقيقة أو أعد تعيين كلمة المرور. الرمز القديم يعمل كاسم بديل بعد الترحيل |
| خرج من المنصة فجأة |
انتهت الجلسة (6 ساعات)، أو أُوقف الحساب |
ادخل من جديد |
| تاب غير ظاهر |
مصفوفة الصلاحيات، أو الدور خطأ |
«📊 تقرير الصلاحيات» |
| زر ظاهر لكنه يرفض |
الخادم له فحص دور ثابت |
راجع قسم "الأدوار والصلاحيات"، فهذه ليست مشكلة مصفوفة |
| المشرف لا يرى مدارسه |
إسناد باسم مختلف أو رمز قديم |
«فحص الحسابات» ثم تثبيت، أو أداة الإسناد |
| تاب يعرض أصفارًا بعد استيراد ناجح |
اللقطة قديمة أو الاستبدال انقطع |
«🛠️ فحص وإصلاح»، ثم «⚡ تجهيز الآن»، ثم افتح «ضبط النظام» |
| أرقام البلاغات لا تتغيّر |
كاش |
«🔄 مسح الكاش» |
| البلاغات ناقصة أو فارغة |
انقطاع التحديث اليدوي |
أعد التحديث اليومي فورًا |
| بلاغات غير مرتبطة بمدرسة |
مدرسة غير موجودة أو رقمها الوزاري خاطئ |
«📋 تصدير المدارس غير المرتبطة»، ثم صحّح، ثم «🔗 إعادة الربط» |
| البوت لا يرد |
الـ webhook سقط أو تغيّر رابط الخادم |
«🩺 فحص» ثم «🔗 فحص وإعادة ربط الـwebhook». تأكد من GAS_URL في Netlify. للطوارئ: وضع الاستعلام |
| البوت يقول «غير مربوط» |
الحساب غير مربوط |
الملف الشخصي ← «🔗 تفعيل إشعارات تليجرام» |
| البوت يتوقف عن الرد لشخص واحد |
تجاوز 30 رسالة في الساعة |
ينتظر ساعة |
| المساعد الذكي لا يرد |
المفتاح أو الحصة |
«🩺 فحص المساعد الذكي»، وراجع AI_PROVIDER والمفتاح والحدود |
| لا تصل رسائل البريد |
انتهت الحصة اليومية (100)، أو النوع تلجرام فقط |
«🔌 التكاملات» ← حصة البريد. للدعوات استخدم Outlook |
| PDF لا يُنشأ |
خدمة Drive Advanced غير مفعّلة |
فعّلها من المحرر ← Services |
| ملف البلاغات التلقائي لم يُستورد |
الملف لم يصل، أو هو نفس ملف الأمس، أو المهمة غير مثبتة |
افحص المجلد، ثم «⚡ تشغيل التحديث التلقائي الآن»، ثم installDailyComplaintsTrigger |
| المنصة بطيئة للجميع |
ضغط عالٍ أو لقطات مفقودة |
«📡 المراقبة الحية»، ثم «🧊 اللقطات الدائمة» |
| «تم إيقاف هذا الاستيراد…» |
شخصان يستوردان الملف نفسه |
نسّقا بينكما، ثم أعد الاستيراد |
| حفظ المدارس مرفوض |
تغيير متزامن أو تقليص أكثر من 20% |
حدّث الصفحة. إذا كان التقليص مقصودًا فأكّده |
| مدرسة مكررة |
اختلاف إملائي بين الملف والموجود |
وحّد الاسم في القالب وأعد الرفع |
| تقارير اختفت من السجلات |
تغيير اسم الحصر |
أعد الاسم السابق بالضبط |
| الواجهة قديمة بعد النشر |
كاش المتصفح |
تحديث قوي (Ctrl+Shift+R)، وقارن الإصدارات في «🚀 النشر» |
| «تم إيقاف تسجيل الدخول مؤقتاً…» للجميع |
أكثر من 500 محاولة خاطئة |
تفتح تلقائيًا. إذا تكررت بلّغ الأمن السيبراني |
13.2 التصعيد
- المستوى 1: الدعم الفني. أي شيء في هذا الجدول.
- المستوى 2: إدارة التخطيط.
- ما يحتاج محرر Apps Script أو Script Properties.
- المسح النهائي.
- ترحيل الرموز.
- النشر.
- المستوى 3: تعديل الكود. مثل فلتر POC المكتوب في الكود، أو خطأ متكرر في سجل الأخطاء.
13.3 «🤖 اسأل Claude Code»
للمستوى 3، أو لأي مشكلة لم يحلّها هذا الدليل. المكان: قائمة الملف الشخصي ← «🤖 اسأل Claude Code» (للتخطيط والدعم الفني).
- اكتب المشكلة، وأضف الرمز الوظيفي للمستخدم المتأثر إن وجد. خانة «أرفق آخر 10 أخطاء مسجّلة في المنصة» مفعّلة افتراضيًا.
- اضغط «🚀 انسخ وافتح Claude Code». المنصة تنسخ رسالة جاهزة (المشكلة + الإصدار + دورك + آخر الأخطاء) وتفتح Claude Code في تبويب جديد.
- هناك الصق الرسالة (Ctrl+V) كأول رسالة.
- يلزم حساب Claude له صلاحية على مستودع المنصة.
- الرسالة تطلب من Claude ألا ينشر أو يرفع أي شيء على GitHub قبل موافقتك.
- أي تعديل كود يقترحه يُراجَع ويُنشر بالطريقة المعتادة (قسم "النشر والنسخ الاحتياطي")، ويُحدَّث هذا الدليل معه.
14 النشر والنسخ الاحتياطي
14.1 نشر الخادم (Apps Script)
- قبل النشر: خذ نسخة من الكود الحالي، ونسخة من الشيت (ملف ← إنشاء نسخة).
- الصق الكود الجديد في المحرر واحفظه.
- Deploy ← Manage deployments ← ✏️ Edit ← Version: New version ← Deploy.
- ⚠️ لا تختر "New deployment"، لأنه يغيّر رابط /exec.
- إذا تغيّر الرابط فعلًا:
- حدّث SCRIPT_URL في index.html.
- حدّث GAS_URL في Netlify.
- اضغط «⚡ تفعيل الرد الفوري».
- إذا أضاف الكود صلاحيات جديدة (Drive أو Triggers)، شغّل أي دالة install مرة من المحرر ووافق على الأذونات.
- التحقق بعد النشر:
- «🚀 النشر والاستضافة» ← «🔗 حالة الربط».
- «🩺 فحص النظام الكامل».
- «📨 إرسال رسالة اختبار لي».
14.2 نشر الواجهة (Netlify)
- الواجهة ملف index.html واحد في مستودع GitHub باسم Dedesese1990/survey.html، وتُنشر تلقائيًا على rasdtbc.com مع كل Commit.
- كل نشر يكلّف 15 رصيدًا من 1000 شهريًا. اجمع التعديلات في Commit واحد. يصل تنبيه عند استهلاك 75% ثم 90%.
- اكتب رقم الإصدار في رسالة الـ Commit ليظهر في «🗂️ سجل النشر».
- التراجع: «الرجوع لهذا الإصدار» يفتح Netlify، وهناك تضغط «Publish deploy». هذا لا يستهلك بناءً جديدًا.
- الترتيب عند تغيير الطرفين: انشر الخادم أولًا ثم الواجهة. الخادم الجديد يخدم الواجهة القديمة، والعكس غير مضمون.
- ⚠️ ثابتا الإصدار في الكود ما زالا «29»، والموجود على GitHub «28». ارفع RASD_BACKEND_VERSION و RASD_APP_VERSION معًا في كل نشر لكي تكون مقارنة الإصدارات مفيدة.
14.3 نشر إصدار يغيّر الطرفين
- انشر الخادم الجديد كـ «New version».
- ارفع الواجهة الجديدة مكان index.html في Commit واحد.
- افتح «الرئيسية» وتأكد من ظهور الخريطة والرادار.
- شغّل «فحص الحسابات»، ثم معاينة ترحيل الرموز (بدون تنفيذ) لمراجعة الخطة.
- جرّب دعوة Outlook واحدة على بريدك قبل الإرسال الجماعي.
14.4 النسخ الاحتياطي
| النسخة |
متى تُؤخذ |
الاسترجاع |
| Backup_Schools / Backup_Surveys |
تلقائيًا قبل كل حفظ كامل للمدارس أو النماذج |
تاب المدارس ← «⏪ استرجاع…» (مستوى واحد) |
| نسخة Drive من الشيت |
تلقائيًا قبل تنفيذ ترحيل الرموز |
يدويًا من Drive |
| الشيت القديم للتقارير |
بعد ترحيل «صف لكل تقرير» |
RESPONSES_STORAGE=legacy |
| سجل إصدارات Google Sheets |
دائمًا |
ملف ← سجل الإصدارات (يسترجع الملف كله) |
| نسخة يدوية أسبوعية (موصى بها) |
كل أحد، وقبل أي نشر |
ملف ← إنشاء نسخة |
15 مرجع Script Properties
المكان: محرر Apps Script ← ⚙️ Project Settings ← Script Properties. التعديل هنا لإدارة التخطيط فقط، والقيم السرية لا تُشارك في محادثات.
15.1 مفاتيح يضبطها الإنسان
| المفتاح |
الغرض |
ملاحظات |
| PORTAL_URL |
رابط المنصة |
بدونه لا تظهر أزرار تلجرام ولا روابط التفعيل |
| API_TOKEN / API_TOKEN_LEGACY_OFF |
رمز الواجهة / إيقاف الرمز القديم |
اضبط LEGACY_OFF=1 بعد نشر الواجهة الجديدة |
| TELEGRAM_BOT_TOKEN / TELEGRAM_BOT_USERNAME |
البوت |
الاسم بدون @، ويجب أن يطابق البوت الحقيقي |
| TELEGRAM_RELAY_URL |
رابط المُرحِّل |
https://rasdtbc.com/.netlify/functions/telegram |
| AI_PROVIDER |
gemini أو claude |
مع GEMINI_API_KEY/GEMINI_MODEL أو ANTHROPIC_API_KEY/ANTHROPIC_MODEL |
| AI_MAX_PER_HOUR |
حد أسئلة المساعد لكل مستخدم |
الافتراضي 40. وهناك أيضًا GEMINI_RPM_CAP (10) و GEMINI_RPD_CAP (1000) |
| AI_ROUTING · AI_CLAUDE_ROLES · AI_CLAUDE_MONTHLY_USD |
توجيه الذكاء الاصطناعي حسب الدور وسقف تكلفة Claude |
تُدار من «ضبط النظام ← 🧠 الذكاء الاصطناعي». الافتراضي: role، والأدوار العليا، و50 دولارًا |
| ANTHROPIC_ANALYSIS_MODEL · AI_ANALYSIS_EFFORT |
نموذج Claude وعمقه لتحليل البلاغات فقط |
الافتراضي claude-opus-5 و low. وأيضًا AI_ANALYSIS_MAX_ROWS (300) و AI_ANALYSIS_MAX_RUNS_DAY (10 يدويًا) و AI_ANALYSIS_COOLDOWN_MIN (15) |
| PROJECTS_ALERT_EMAIL |
مستلم تنبيه العقود |
بدونه لا يُرسل التنبيه بالبريد |
| SUPPORT_ALERT_EMAIL |
بريد تذاكر الدعم |
— |
| COMPLAINTS_DAILY_FOLDER_ID |
مجلد ملف البلاغات اليومي |
معرّف المجلد من رابط Drive |
| REHAB_ALERT_TOP_N / MIN_COUNT / COOLDOWN_DAYS |
تنبيه المدارس الأكثر بلاغات |
الافتراضي: 5 / 10 / 14 يومًا |
| NETLIFY_TOKEN / NETLIFY_SITE_ID / NETLIFY_CYCLE_DAY |
متابعة النشر والرصيد |
الرمز من: Netlify ← User settings ← Applications ← Personal access tokens |
| RESPONSES_STORAGE |
rows أو legacy |
للتراجع عن ترحيل التقارير فقط |
15.2 مفاتيح تُدار من الواجهة (لا تعدّلها يدويًا)
- WELCOME_SETTINGS، DISPLAY_SETTINGS، PJ_MAIN_FILTERS، CHECK_REFERENCES.
- TELEGRAM_WEBHOOK_SECRET، TELEGRAM_POLLING_MODE، TELEGRAM_POLL_OFFSET.
15.3 مفاتيح داخلية (لا تلمسها)
- إصدارات البيانات: GLOBAL_DATA_VERSION وما يشبهها، ومفاتيح data_version و spi.
- التسلسل والجلسات: REG_SEQ_yy (عداد الرموز RSD)، sess_، import_session_.
- السجلات وحالة التشغيل: IMPORT_LOG، LAST_، POST_IMPORT_WARM، NOTIF_LAST_RUN، COMPLAINTS_AUTO_، NETLIFY_CREDITS_READING، NETLIFY_ALERTED.
⚠️ حذف REG_SEQ_yy قد يعيد إصدار رموز مستخدمة. وحذف مفاتيح الإصدارات يجبر كل الأجهزة على إعادة التحميل الكامل.
16 قوائم المراجعة
16.1 يوميًا: الدعم الفني (10 دقائق صباحًا)
16.2 أسبوعيًا: إدارة التخطيط
16.3 شهريًا
16.4 ربع سنوي
16.5 مستخدم جديد (من البداية للنهاية)
- اعتماد طلبه، أو إنشاء حسابه بالدور والفرع الصحيحين.
- إسناد المدارس إذا كان مشرفًا.
- إرسال دعوة Outlook (كود تفعيل ورابط تلجرام).
- التأكد من شارتي «مفعّل ✓» و«تلجرام ✓» خلال يومين.
- «🔎 دخول كحساب» سريع للتأكد أنه يرى ما يجب.
16.6 مغادرة مستخدم
- نقل مدارسه بـ «👤 إسناد مجموعة مدارس لمشرف».
- إلغاء أي تفويض منه أو إليه.
- «إيقاف» الحساب، وليس حذفه.
- «🔗 إعادة ربط البلاغات بالمدارس».