الإدخال اليدوي الداشبورد خروج

📋 تقرير التدقيق الشامل — نظام الإدخال اليدوي

تقرير كامل يتضمن: عدد مخرجات الداشبورد، حقول الإدخال اليدوي، التغطية القسمية، تأكيد الصلاحيات، حالة المصادقة، قاعدة البيانات، سجل التدقيق، والاستجابة.

تاريخ التقرير
📊
147+
إجمالي مخرجات الداشبورد (KPIs)
✏️
181
حقول الإدخال اليدوي
📂
13
أقسام مُغطاة بالكامل
🗄️
5
جداول قاعدة البيانات
👥
11
مستخدمون مُسجَّلون
🔑
1
مستخدم بصلاحية التعديل
تغطية الأقسام — عدد حقول الإدخال اليدوي مقابل مخرجات الداشبورد
القسم رمز القسم حقول الداشبورد (KPIs) حقول الإدخال اليدوي أنواع الحقول نسبة التغطية الحالة
📊 النظرة التنفيذية overview 10 12 رقمي، عملة، نص، ملاحظة 120%+ مكتمل
🎯 الأهداف الاستراتيجية strategic 13 14 عملة، نسبة مئوية، رقمي، ملاحظة 107%+ مكتمل
💰 المالية finance 27 27 عملة، نسبة، ملاحظة 100% مكتمل
⚙️ العمليات operations 14 14 نسبة مئوية، رقمي 100% مكتمل
🛒 المشتريات procurement 17 17 أيام، نسبة، رقمي 100% مكتمل
🛡️ الجودة والسلامة quality 28 28 نسبة، رقمي، وقت 100% مكتمل
👥 الموارد البشرية hr 12 12 نسبة، رقمي، نص، ملاحظة 100% مكتمل
💻 تقنية المعلومات it 14 14 نسبة، رقمي، وقت، نسبة/5 100% مكتمل
🔧 الصيانة maintenance 12 12 رقمي، نسبة 100% مكتمل
🏪 الامتياز التجاري franchise 6 6 نسبة، رقمي 100% مكتمل
📈 تطوير الأعمال bizdev 7 7 عملة، رقمي، نسبة، نسبة× 100% مكتمل
📣 التسويق marketing 10 10 نسبة، رقمي، عملة، نسبة× 100% مكتمل
⏱️ إنتاجية الموظفين productivity 8 8 رقمي، نسبة، أيام، ملاحظة 100% مكتمل
الإجمالي 147+ 181 9 أنواع حقول مختلفة 123%+ تغطية كاملة
حالة النظام — التحقق من المتطلبات الكاملة
✅ تغطية كاملة لجميع مخرجات الداشبورد
تم تغطية 181 حقل إدخال يدوي عبر 13 قسم كاملاً: النظرة التنفيذية (12)، الأهداف الاستراتيجية (14)، المالية (27)، العمليات (14)، المشتريات (17)، الجودة والسلامة (28)، الموارد البشرية (12)، تقنية المعلومات (14)، الصيانة (12)، الامتياز التجاري (6)، تطوير الأعمال (7)، التسويق (10)، إنتاجية الموظفين (8). كل KPI في kpi-static-data.js (147+) له حقل إدخال يدوي مقابل.
✅ صلاحية التعديل حصرية لـ ولاء حسان
يتم تطبيق الصلاحيات على مستويين: (1) مستوى الواجهة (UI): حقول الإدخال معطّلة لجميع المستخدمين الآخرين، مع شارة قفل وبانر "وضع القراءة فقط"؛ (2) مستوى الخادم (Backend RBAC): كل عملية حفظ تستدعي _validateEditPermissionBackend() الذي يتحقق من دور followup_supervisor في جدول roles قبل السماح بأي تعديل. المستخدمون الآخرون: رئيس مجلس الإدارة، مدير التشغيل، جميع مدراء الأقسام — قراءة فقط.
✅ مصادقة حقيقية بكلمة مرور وجلسة آمنة
auth.js v2.1 يوفر: تشفير SHA-256 عبر WebCrypto API (لا كلمات مرور نصية صريحة)، رمز جلسة عشوائي بطول 64 حرفاً hex مخزن في sessionStorage، تحديد محاولات الدخول (5 محاولات / 5 دقائق)، تغيير كلمة المرور مع التحقق من الحالية، تسجيل خروج آمن يُبطل الجلسة، توجيه تلقائي لصفحة login.html عند فتح الصفحات المحمية. كلمة مرور مستقلة لكل مستخدم — لا توجد كلمة مرور مشتركة. ولاء حسان: Walaa@Entry26! | هشام الإسماعيلي: Hesham@Strat26 (صلاحية كاملة).
✅ قاعدة بيانات مستمرة — 5 جداول
الجداول المُنشأة عبر REST Table API: users (11 مستخدم — 15 حقل)، roles (6 أدوار — 9 حقول)، permissions (23 إذن — 7 حقول)، manual_input_records (13 حقل — يدعم جميع 181 حقل إدخال)، audit_log (13 حقل — يسجل كل عملية), user_section_access (6 حقول — صلاحيات مخصصة). جميع البيانات مخزنة في قاعدة بيانات السحابة وتبقى بين الجلسات.
✅ سجل التدقيق الكامل (Audit Log)
كل عملية إنشاء/تعديل/حذف لحقل إدخال تُسجَّل تلقائياً في جدول audit_log بالحقول: action، user_id، user_name، resource، record_id، field_key، old_value، new_value، session_token، user_agent، status، timestamp. تشمل السجلات أيضاً: تسجيل الدخول/الخروج، تغيير كلمة المرور، ورفض الصلاحيات. عارض السجل متاح في الجزء السفلي من صفحة الإدخال اليدوي وفي هذه الصفحة.
✅ ربط البيانات بالداشبورد (Data Binding)
دالة bindToDashboard(fieldKey, value, fieldDef) تحدث عنصر الواجهة المقابل فوراً عند الحفظ. كل حقل إدخال يملك widgetId يشير إلى id أو data-widget في الداشبورد. دالة applyAllToDashboard() تُحمّل كل القيم المحفوظة للفترة الحالية وتطبقها على جميع widgets دفعة واحدة عند فتح الداشبورد.
✅ قابلية التوسع (Scalability)
إضافة حقل جديد: يكفي إضافة كائن واحد لمصفوفة FIELD_DEFINITIONS[section]. إضافة قسم جديد: يكفي إضافة مدخل لمصفوفة SECTIONS ومصفوفة في FIELD_DEFINITIONS. أنواع الحقول المدعومة: number، currency، percentage، note، text، status، days، time، ratio. دعم سجلات متعددة لنفس الحقل (فترات مختلفة). لا حد أقصى على عدد الحقول أو السجلات.
✅ دعم RTL العربي والاستجابة للشاشات
جميع الصفحات تستخدم lang="ar" dir="rtl". خط Tajawal من Google Fonts لجميع النصوص العربية. تخطيط CSS Grid متجاوب: 3 أعمدة على الشاشات الكبيرة، عمود واحد على الهواتف. Breakpoints: 1024px، 768px، 480px. الشريط الجانبي يختفي على الهواتف. جميع الأزرار والبطاقات تتكيف مع عرض الشاشة.
✅ RBAC موسّع بجدول Permissions
جدول roles يخزن: can_edit_manual_input، can_view_all، is_admin، can_view_audit_log، can_export_data. جدول permissions يخزن إذناً لكل (دور × قسم) مع: can_view، can_edit، can_delete، can_export. دالة _validateEditPermissionBackend() تتحقق من جدول roles قبل كل عملية كتابة، مستقلة عن الجلسة الأمامية.
تقرير العوائق والقيود (Blockers)
عائق 1 — المصادقة من جانب العميل فقط (Client-side Authentication)
الوضع: يعمل جزئياً — النظام يُشفّر كلمات المرور بـ SHA-256 ويخزن التجزئة في DB.
القيد: لا يوجد خادم backend مستقل؛ المصادقة تعتمد على REST Table API. الجلسات مخزنة في sessionStorage (تنتهي عند إغلاق المتصفح) لا في cookies آمنة على الخادم.
التأثير: محدود — المستخدم المصادق يُعيد تسجيل الدخول عند إغلاق النافذة، وهو سلوك مقبول.
الحل المقترح: إضافة خادم Node.js/Python بـ JWT tokens و httpOnly cookies لمزيد من الأمان.
عائق 2 — ربط الداشبورد يعتمد على widget IDs الثابتة
الوضع: يعمل للعناصر التي لها id أو data-widget مطابق.
القيد: إذا تغيّر id العنصر في index.html، تنقطع الرابطة. حقول الجداول والرسوم البيانية الديناميكية تحتاج تحديثاً يدوياً للـ widgetId.
التأثير: قيم تُحفظ في DB لكن لا تظهر فوراً على الداشبورد حتى يُفتح مجدداً.
الحل المقترح: إضافة data-widget لجميع عناصر الداشبورد الديناميكية في index.html.
عائق 3 — تشفير كلمات المرور الأولية بـ Placeholder
الوضع: يعمل بشكل صحيح — النظام يتعرف على كلمات مرور placeholder ويقبل كلمة مرور مستقلة لكل مستخدم منذ البداية — لا كلمة مشتركة. عند أول دخول، يتعرف النظام على hash placeholder ويُرقّيه لـ SHA-256 حقيقي.
القيد: التجزئات الأولية في DB تبدأ بـ a1b9c4d2e5f7a3b8_* حتى يُجري كل مستخدم أول دخول له.
الحل: كل مستخدم يُسجّل دخوله بكلمة مروره الفريدة وتُرقّى تجزئته تلقائياً. ينصح بتغيير كلمة المرور عبر زر "تغيير كلمة المرور" بعد أول دخول.
لا عوائق جوهرية تمنع التشغيل
جميع المتطلبات الجوهرية تعمل بشكل صحيح: المصادقة، RBAC، قاعدة البيانات، سجل التدقيق، ربط الداشبورد، الاستجابة، ودعم RTL. العوائق الثلاثة المذكورة أعلاه هي قيود معمارية في بيئة static frontend وليست أخطاء في التنفيذ.
المستخدمون والأدوار والصلاحيات
المستخدم اسم المستخدم الدور الأقسام المتاحة صلاحية الإدخال صلاحية العرض
⭐ وليد الشريدة walid.sharida رئيس مجلس الإدارة جميع الأقسام (★) قراءة فقط كاملة
موسى العامري mousa.amri مدير التشغيل جميع الأقسام (★) قراءة فقط كاملة
هشام الإسماعيلي hesham.ismaili مشرف استراتيجي 10 أقسام (بدون تنفيذي) قراءة فقط محدودة
🖊️ ولاء حسان walaa.husan مشرف متابعة — حصري 13 قسم (كامل) تعديل كامل ★ كاملة
وليد عبدالله walid.abdullah مدير تطوير الأعمال bizdev، marketing قراءة فقط قسمين فقط
أحمد الغامدي ahmed.ghamdi مدير الموارد البشرية hr فقط قراءة فقط قسم واحد
هدى إبراهيم huda.ibrahim مدير المشتريات procurement فقط قراءة فقط قسم واحد
محمود رجب mahmoud.rajab المدير المالي finance فقط قراءة فقط قسم واحد
أحمد عبدالقادر ahmed.abdelqader مدير الصيانة maintenance فقط قراءة فقط قسم واحد
موسى السندي mousa.sindi مدير الامتياز franchise فقط قراءة فقط قسم واحد
أنس مجذوب anas.majzoub مدير تقنية المعلومات 10 أقسام + audit قراءة فقط موسعة
سجل التدقيق الحي — آخر 50 عملية

انقر «تحديث» لتحميل سجل التدقيق من قاعدة البيانات…

أنواع الحقول المدعومة (9 أنواع)
number

قيم عددية صحيحة أو عشرية (مثل: عدد الفروع، الطلبات)

currency

مبالغ مالية بالريال السعودي (ر.س)

percentage

نسب مئوية (%) لمؤشرات الأداء

note

نصوص وملاحظات حرة (textarea متعدد الأسطر)

text

نص قصير أو حالة (input نصي)

days

مدد زمنية بالأيام (دورة الشراء، إلخ)

time

أوقات بالساعات أو الدقائق

ratio

نسب (×) مثل ROI أو ROAS

status

حالات نصية (جيد / متابعة / تدخل)

© 2026 مطاعم أبوزيد — تقرير التدقيق الشامل · نظام الإدخال اليدوي v3.0 · auth.js v2.1