منصة كفاءات العائلة
وثيقة نقاش عائلية — نسخة عربية قابلة للملاحظات

منصة كفاءات العائلة

وثيقة توصيف مقسّمة حسب التخصص، مخصصة لجمع آراء أفراد العائلة قبل اعتماد النسخة النهائية. الهدف: بناء منصة مغلقة وآمنة تساعد على معرفة كفاءات الأسرة وترشيحها للفرص المناسبة.

النوعموقع خاص ومغلق للعائلة
التقنيةPHP · HTML · CSS · JS · JSON
العدد المتوقعحوالي 50 عضوًا

تجربة شكل الموقع المستقبلي

روابط واضحة للمتصفح حتى يأخذ فكرة عن شكل الموقع قبل التنفيذ الفعلي. هذه الصفحات تجريبية وببيانات افتراضية فقط.

صفحة تسجيل الدخول

تجربة رحلة البريد وكلمة المرور ثم OTP.

لوحة العضو

تجربة ملف العضو، السير الذاتية، والبحث عن الكفاءات.

هذه الملاحظات ستظهر في ملخص الملاحظات آخر الوثيقة.
١

القرار العام والهدف

هذا القسم يخص أصحاب القرار في العائلة: هل الفكرة مناسبة؟ ما حدود استخدامها؟ ومن يملك صلاحية إدارتها؟

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

القيمة الأساسية

تحويل معرفة أفراد العائلة من معلومات متفرقة إلى قاعدة بيانات منظمة قابلة للبحث.

حدود الاستخدام

المنصة للاستخدام العائلي الداخلي فقط، وليست موقع توظيف عام أو منصة مفتوحة للزوار.

  • لا يظهر المحتوى إلا للأعضاء المعتمدين.
  • لا يتم نشر السير الذاتية كرابط مباشر.
  • المنصة تساعد على الترشيح والتواصل، ولا تستبدل قرارات التوظيف الرسمية.
٢

الأمن والتحقق

هذا القسم يخص من يراجع الخصوصية والأمان: الدخول، البريد، OTP، الجلسات، وحماية الصفحات.

تسجيل
تفعيل البريد
OTP إجباري
موافقة المدير
قرار مهم: OTP يبقى إلزاميًا عند كل تسجيل دخول ناجح بكلمة المرور، ولا تُفتح الجلسة الكاملة إلا بعد إدخال الكود الصحيح.
  • كلمة المرور تُحفظ مشفرة باستخدام password_hash / bcrypt.
  • كود OTP مكوّن من 6 أرقام وصالح لمدة 10 دقائق.
  • بعد 3 محاولات فاشلة يُلغى الكود ويطلب النظام تسجيل دخول جديد.
  • الأفضل أمنيًا حفظ هاش كود OTP وليس الكود الصريح.
  • بعد تفعيل البريد، يبقى العضو في حالة انتظار اعتماد المدير قبل رؤية بيانات الآخرين.
  • كل صفحة داخلية تمر عبر فحص جلسة وصلاحية.
سبب الإبقاء على OTP: حتى لو حصل شخص على البريد وكلمة المرور، لا يستطيع الدخول دون الوصول إلى البريد واستلام الكود.
٣

البيانات و JSON

هذا القسم يخص طريقة التخزين، النسخ الاحتياطي، وبنية ملفات الأعضاء.

القرار المعتمد: استخدام ملفات JSON بدون قاعدة بيانات؛ لأن العدد المتوقع حوالي 50 عضوًا فقط، وهذا يجعل المشروع أبسط وأسهل في النسخ الاحتياطي.
/private_data/ users/ user_abc123.json user_def456.json cvs/ cv_hash_1.pdf cv_hash_2.pdf pending.json otp.json search_index.json logs.json settings.json
العنصرالقرارملاحظة
ملفات الأعضاءملف JSON مستقل لكل عضوأسهل في التعديل والنسخ والقراءة الفردية.
الكتابة المتزامنةاستخدام flock()يمنع تلف الملفات عند تحديثين بنفس الوقت.
النسخ الاحتياطينسخ مجلد private_dataيُفضّل عمل نسخة دورية يدوية أو عبر سكربت بسيط لاحقًا.
التوسعSQLite أو MySQL لاحقًاإذا زاد العدد أو تعقدت التقارير.
٤

الأرشفة الداخلية لتسهيل البحث

هذا القسم يخص سرعة البحث وتنظيم البيانات المختصرة القابلة للفهرسة.

إضافة أساسية: إنشاء ملف search_index.json يعمل كفهرس داخلي مختصر. عند البحث، يقرأ النظام الفهرس بدل قراءة كل ملفات الأعضاء كاملة.
{ "usr_abc123": { "name": "أحمد محمد", "specialization": "هندسة", "degree": "بكالوريوس", "experience_years": 7, "skills": ["إدارة مشاريع", "PHP", "Excel"], "looking_for_job": true, "admin_approved": true, "has_cv": true, "keywords": "احمد محمد هندسة بكالوريوس ادارة مشاريع php excel" } }
  • يتحدث الفهرس عند إنشاء عضو، اعتماد عضو، تعديل ملف شخصي، رفع CV، أو تغيير حالة البحث عن عمل.
  • لا يحتوي الفهرس على كلمات مرور أو OTP أو token أو مسار CV الحقيقي.
  • يوضع في لوحة المدير زر: إعادة بناء الفهرس عند الحاجة.
٥

الملفات الشخصية والسير الذاتية

هذا القسم يخص محتوى ملف العضو: ماذا نطلب منه؟ وما البيانات التي تظهر للآخرين؟

الحقلالوصفملاحظات خصوصية
الاسم الكاملاسم العضوظاهر للأعضاء المعتمدين.
البريدللدخول و OTPيمكن إخفاؤه عن غير المدير إذا رغبت العائلة.
رقم الجوالللتواصل المهنييفضّل جعله اختياريًا.
التخصص والدرجةمجال العمل والمؤهلأساسي للبحث.
سنوات الخبرة والمهاراتللفلترة والترشيحتظهر في بطاقة العضو.
أبحث عن عملمؤشر اختيارييجب أن يتحكم به العضو بنفسه.
السيرة الذاتية PDFملف مرفوعلا يفتح إلا عبر endpoint محمي.
  • قبول PDF فقط وبحد حجم واضح، مثل 5 ميغابايت.
  • تسمية ملفات CV بأسماء مشفرة لا تكشف هوية العضو.
  • حذف السيرة القديمة تلقائيًا عند رفع نسخة جديدة.
  • إمكانية وضع حالة: لا يوجد CV / CV مرفوع / يحتاج تحديث.
٦

البحث والتوصيات

هذا القسم يخص تجربة البحث: كيف يصل فرد العائلة إلى الشخص المناسب بسرعة؟

فلاتر أساسية

الاسم، التخصص، المهارات، الدرجة العلمية، سنوات الخبرة، يبحث عن عمل.

نتائج مختصرة

بطاقات تعرض الاسم، التخصص، المهارات، الحالة الوظيفية، وزر عرض CV.

  • البحث يتم عبر JavaScript و AJAX بدون إعادة تحميل الصفحة.
  • لا تظهر في النتائج إلا الحسابات المعتمدة من المدير.
  • عند اختيار عضو معيّن، يتم تحميل ملفه الكامل من JSON.
  • يمكن لاحقًا إضافة ترشيح ذكي بسيط حسب المهارات المطابقة.
مبدأ مهم: البحث لا يجب أن يحوّل المنصة إلى كشف عام. كل نتيجة يجب أن تكون لمن لديه صلاحية كاملة فقط.
٧

الواجهة ونظام التصميم

هذا القسم يخص شكل المنصة وتجربة الاستخدام، خصوصًا دعم العربية وسهولة الاستخدام لكبار وصغار أفراد العائلة.

القرار التصميمي: اعتماد NDS-vanilla كمرجع واجهات مستقل للنظام الوطني السعودي للتصميم، باستخدام HTML و CSS و JavaScript فقط، بدون Bootstrap أو Tailwind أو jQuery.
  • First public release of NDS-vanilla: تنفيذ مجتمعي مستقل للنظام الوطني السعودي للتصميم باستخدام HTML و CSS و JavaScript.
  • التنفيذ الرسمي من DGA عبارة عن React/Storybook component library يغطي مكونات الواجهة الأساسية.
  • هذا الخيار يتيح نفس روح النظام لأي Stack: مكونات، تخطيطات، قوالب، توثيق، وبيئة تطوير كاملة.
  • 70+ components مع markup و styles و JavaScript behavior.
  • Compliance-ready templates لقوالب DGA الرسمية ككود حي يعمل.
  • Real-world examples لصفحات مركبة تظهر المكونات معًا.
  • Zero runtime dependencies: بدون Bootstrap أو Tailwind أو jQuery أو framework.
  • RTL/LTR native عبر CSS Logical Properties بدون ملفات منفصلة.
  • 3-tier design tokens: color → semantic → component عبر CSS custom properties.
  • Smart component loader: فحص DOM مرة واحدة وتهيئة المكونات الموجودة فقط.
  • هدف الأداء: CSS حرج صغير، JS مضغوط، واجهة متوافقة مع Web Vitals.

الصفحات المستهدفة

الدخول، التسجيل، OTP، انتظار الاعتماد، الملف الشخصي، البحث، لوحة المدير.

المكونات المستهدفة

الأزرار، النماذج، التنبيهات، البطاقات، الجداول، وسوم المهارات، حالات الخطأ والنجاح.

٨

لوحة المدير

هذا القسم يخص صلاحيات المشرفين ومن يدير اعتماد الأعضاء والبيانات.

الصلاحيةمعتمدة؟ملاحظة
اعتماد عضو جديدنعمبعد تفعيل البريد و OTP.
رفض أو حذف عضونعميدويًا، بدون حذف تلقائي للمعلقين.
تعطيل حسابنعمأفضل من الحذف عند وجود شك.
مشاهدة من لم يرفع CVنعملمتابعة اكتمال البيانات.
إعادة بناء الفهرسنعمزر إداري مهم.
إحصائيات نصيةنعمبدون رسوم بيانية.
إشعار جماعيمؤجلليس ضروريًا للنسخة الأولى.
تصدير CSVمؤجليمكن إضافته لاحقًا.
٩

التنفيذ والتشغيل

هذا القسم يخص الخطة العملية لبناء النسخة الأولى دون تعقيد زائد.

المرحلةالمهامالأولوية
١هيكل المشروع، private_data، .htaccess، صفحات الدخول الأساسيةعالية
٢التسجيل، تفعيل البريد، تشفير كلمة المرورعالية
٣OTP، الجلسات، حماية الصفحات، CSRFعالية
٤لوحة المدير والاعتماد اليدويعالية
٥الملف الشخصي ورفع CV المحميعالية
٦search_index.json والبحث والفلترةعالية
٧تحسين الواجهة وفق NDS-vanillaمتوسطة
٨اختبار شامل وتجربة مع عينة من أفراد العائلةعالية
١٠

ما تم إلغاؤه أو تأجيله من النسخة الأولى

هذا القسم يمنع تضخم المشروع ويجعل النسخة الأولى قابلة للتنفيذ.

ملغى من النسخة الأولى: حذف الحسابات المعلقة تلقائيًا بعد 24 ساعة، و Chart.js، والرسوم البيانية.

إلغاءات معتمدة

لا حذف تلقائي للحسابات المعلقة. لا رسوم بيانية. لا Chart.js.

مؤجل لاحقًا

التقارير الشهرية، CRON للتذكيرات، الإشعارات الجماعية، تصدير CSV، التحليلات المتقدمة.

١١

أسئلة النقاش قبل اعتماد الوثيقة

هذه الأسئلة تساعد على استشراف آراء أفراد العائلة وتحويلها إلى قرارات واضحة.

  1. من يحق له التسجيل؟ كل من يحمل اسم العائلة؟ أم بدعوة فقط؟
  2. هل رقم الجوال يظهر للجميع أم فقط للمدير؟
  3. هل السيرة الذاتية تظهر لكل عضو معتمد أم تحتاج موافقة صاحبها عند التحميل؟
  4. هل نضيف المدينة أو منطقة السكن ضمن البحث؟
  5. هل نضيف جهة العمل الحالية؟ أم قد تكون حساسة؟
  6. كم مديرًا نحتاج؟ مدير واحد أم أكثر؟
  7. هل نحتاج سجل عمليات للمدير؟ مثل: من اعتمد، من عطّل، من عدّل.
  8. هل نطلق نسخة تجريبية على 10 أعضاء أولًا؟
١٢

حفظ أو إرسال الملاحظات

بعد قراءة الوثيقة وكتابة الملاحظات أسفل الأقسام، يمكن للقارئ من هنا جمع كل ملاحظاته في نص واحد، ثم حفظها كملف، نسخها، أو تجهيزها للإرسال بالبريد.

ملاحظة: الإرسال عبر البريد يفتح برنامج البريد في الجهاز باستخدام mailto. إذا لم يعمل، استخدم زر النسخ أو حفظ TXT ثم أرسله يدويًا عبر واتساب أو البريد.