5 دقائق قراءة

الأمان والصلاحيات

المؤسسات والأدوار والصلاحيات وسجل التغييرات ومعالجة بيانات العملاء.

وضع النسخة الحالية

النسخة الحالية تحتوي على أساس الحسابات: تسجيل دخول بالبريد وكلمة مرور، وجلسات مخزّنة على الخادم، ومؤسسات وعضويات وأدوار وسجل تغييرات في قاعدة بيانات PostgreSQL.

العملاء والطلبات والشحنات صارت تُقرأ من قاعدة البيانات ضمن حدود المؤسسة نفسها: كل صف مملوك لمؤسسة واحدة، ولا يمكن لمؤسسة أن ترى صفوف أخرى حتى لو عرفت المعرّف.

تطبيق المندوب يقرأ خط سيره الحقيقي من قاعدة البيانات، لكن ما يسجّله المندوب — التسليم والمحاولات والتحصيل — يبقى على جهازه ولا يصل الخادم بعد، وهذا مكتوب داخل التطبيق نفسه.

المناديب ومركز التوزيع يقرآن من قاعدة البيانات أيضًا: التاجر يرى فقط المناديب الذين يحملون شحناته هو، والإسناد من شاشة التوزيع ما زال تجريبيًا ولا يُحفظ.

صفحة تتبع الشحنة صارت تقرأ من قاعدة البيانات كذلك، لكنها المسار الوحيد بلا جلسة: رقم التتبع وحده هو المدخل، وهو فريد على مستوى المنصة كلها حتى لا يحتاج البحث إلى معرفة المؤسسة. ما يخرج للعميل مُختار حقلًا بحقل في طبقة القراءة نفسها، فلا يمكن لتغيير في الواجهة أن يكشف ما لم يُختَر.

لوحة التشغيل الرئيسية تُحسب أرقامها من صفوف قاعدة البيانات مباشرة، ولا تُخزَّن ولا تُقدَّر: ما لا يمكن اشتقاقه بصدق من الجداول الحالية لا يُعرض أصلًا.

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

صندوق الوارد والتسويات يُقرآن من قاعدة البيانات كذلك. لا تُرسَل رسائل فعلية، ولا تُنشأ تسوية ولا يُسجَّل تسليم نقدية، والبيانات المالية المعروضة بيانات تجريبية.

المناطق والأسعار تُقرأ من قاعدة البيانات أيضًا. أرقام مركز التوزيع عن كل منطقة — الطاقة المستخدمة ومتوسط التوصيل ونسبة النجاح — تُقاس من شحنات المنطقة نفسها، والمنطقة التي لا يوجد ما يُقاس فيها تقول ذلك صراحة بدل عرض رقم مُقنع.

الأتمتة وقوالب الرسائل تُقرآن من قاعدة البيانات كذلك، لكن لا يوجد مُشغِّل: لا تُنفَّذ أي أتمتة، ولا تُرسَل رسالة، ولا يُستقبل أي حدث أو Webhook. سجل التشغيل المعروض بيانات تجريبية، وأعداد التشغيل محسوبة من صفوفه لا مُدّعاة.

ما زالت قواعد الشحن تعمل على بيانات تجريبية داخل الواجهة. الكتابة والتعديل لم تُفعَّل بعد على أي وحدة — النسخة الحالية قراءة فقط من قاعدة البيانات.

أي زر يغيّر ما تراه على الشاشة دون أن يحفظ شيئًا إمّا معطّل ومكتوب عليه «قريبًا»، أو يحمل تنبيهًا ثابتًا يقول إن التغيير محلي فقط. لا يوجد استثناء صامت.

انتبهلا تُدخل بيانات عملاء حقيقية في هذه النسخة. لا توجد طبقة كتابة أصلًا: لا يمكن تعديل أو حذف أي سجل بعد إدخاله، والبيانات المعروضة تجريبية تُعاد تهيئتها مع أي تحديث.

المؤسسات

المؤسسة هي حدود العزل. كل متاجرك وفرقك وشحناتك تعيش داخلها، والتاجر الذي يملك شركة توصيل يمكن أن يكون له مؤسسة منفصلة لها.

الأدوار والصلاحيات

لكل عضو دور واحد داخل المؤسسة، والدور محدد في النظام وليس قابلًا للتعديل من داخل الحساب — مجموعة الصلاحيات نفسها سطح أمني، فلا يُترك توسيعها لمن يديرها.

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

المصفوفة الكاملة متاحة داخل المنصة في الإعدادات ← الأدوار والصلاحيات، ويمكن لأي عضو الاطلاع عليها: معرفة ما لا يستطيع دورك فعله ليست صلاحية.

الدورالنطاق
مالك الحسابكل شيء، بما فيه حذف المؤسسة ومنح دور المالك.
مديركل شيء عدا حذف المؤسسة.
مدير العملياتالطلبات والشحن والتحصيل والتسويات والمناديب.
خدمة العملاءالمحادثات والطلبات والمرتجعات بدون تسويات.
المخزنالتجهيز والبوالص والمرتجعات الواردة.
مندوب توصيلتطبيق المندوب فقط، ولا وصول للوحة التاجر.
مشاهدة فقطقراءة بلا أي تعديل.

الحسابات والجلسات

الدخول بالبريد وكلمة المرور. كلمات المرور مخزّنة بخوارزمية Argon2id ولا يمكن استرجاعها، والجلسة محفوظة على الخادم بينما يحمل المتصفح رمزًا مبهمًا في كوكي httpOnly — المخزَّن في قاعدة البيانات هو بصمة الرمز لا الرمز نفسه.

المؤسسة النشطة تُقرأ من سجل الجلسة ويُعاد التحقق منها مقابل عضوية سارية في كل طلب. لا تُقرأ أبدًا من رابط أو ترويسة أو نموذج، وهذه هي حدود العزل بين المؤسسات.

إزالة عضو من الفريق تُنهي جلساته في تلك المؤسسة فورًا.

كل عضو يرى جلساته النشطة في الإعدادات ← الأجهزة والجلسات، مع الجهاز وعنوان IP وآخر نشاط، ويمكنه إنهاء أي جلسة أو إنهاء كل الجلسات الأخرى دفعة واحدة.

محاولات الدخول الفاشلة محدودة العدد لكل بريد ولكل عنوان IP، والمحاولة الفاشلة تستغرق نفس زمن المحاولة الناجحة حتى لا يكشف زمن الرد وجود الحساب من عدمه.

المندوب اليوم يدخل بالبريد وكلمة المرور مثل باقي الفريق، ورقم هاتفه محفوظ على حسابه في انتظار تفعيل الدخول برمز التحقق.

المندوب لا يرى إلا الشحنات المسندة إليه هو تحديدًا. الشحنة مملوكة لمؤسسة التاجر والمندوب موظف في شركة التوصيل، والربط بينهما يمر بجدول إسناد واحد يحمل معرّف المؤسستين معًا — فلا يستطيع مندوب فتح شحنة زميله ولا شحنة لم تُسند له، ولا تستطيع شركة توصيل رؤية إسنادات شركة أخرى.

مخططدخول المندوب برقم الهاتف ورمز التحقق، واستعادة كلمة المرور بالبريد، وإرسال دعوات الفريق بالبريد — كلها مخططة ولم تُفعّل بعد.

الإجراءات الحساسة

بعض الإجراءات ستحتاج تأكيدًا إضافيًا أو صلاحية أعلى في النسخة الإنتاجية.

  • إلغاء شحنة أو تسجيل مرتجع.
  • اعتماد تسوية بها فرق.
  • تعديل الأسعار وقواعد الشحن.
  • تفعيل أتمتة ترسل رسائل للعملاء.
  • حذف أو دمج سجلات العملاء.

سجل التغييرات

السجل المركزي موجود في قاعدة البيانات، وكل سطر فيه مربوط بالمؤسسة وبمن نفّذ الإجراء ومتى.

اليوم يسجّل أحداث الحساب والفريق: تسجيل الدخول والخروج ومحاولات الدخول الفاشلة والدعوات وقبولها وتغيير الأدوار وإزالة الأعضاء. أحداث التشغيل تُضاف مع نقل كل وحدة إلى قاعدة البيانات، والخطوط الزمنية في الطلب والشحنة والمرتجع تعرضها اليوم داخل الواجهة.

السجل معروض في الإعدادات ← سجل التغييرات لمن يملك صلاحية الاطلاع عليه، مع تصفية حسب نوع الإجراء. لا يعرض أي حدث من مؤسسة أخرى.

دعوات الفريق

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

مالك الحساب وحده يستطيع منح دور المالك أو سحبه، ولا يمكن لأحد تغيير دوره أو إزالة نفسه، ولا يمكن إزالة آخر مالك للمؤسسة.

انتبهإرسال البريد لم يُفعّل بعد، فالرابط يُنسخ ويُرسل يدويًا. تعامل معه ككلمة مرور: من يملكه يستطيع الانضمام.

بيانات العملاء

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

الاسم الأول للمندوب ورقم مخفي جزئيًا يظهران فقط أثناء وجود الشحنة معه.

الفهرسة

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

اقرأ أيضًا