5) الأدوار — كل موظف يرى شاشاته فقط
📍 التحكم في: factory-layout/factory-layout.component.ts (تفلتر navGroups بـ PermissionService.hasAnyPermission) + production-standalone.routes.ts (كل مسار عليه permissionGuard بصلاحية محددة). أمثلة الصلاحيات: production.orders, production.mrp, production.costing, production.shopfloor.operate, production.shopfloor.supervise, production.boms, production.routings, production.centers, production.confirmations, production.reports.
قبل: كل الشاشات كانت بتظهر للكل بدون تمييز، فالمشغّل كان بيشوف شاشات تخطيط ومحاسبة مالهاش لازمة ليه وده بيلخبط. بعد: قائمة المصنع (السايدبار) بتتفلتر أوتوماتيك حسب صلاحيات الموظف — أي شاشة الموظف ملوش صلاحيتها مش بتظهر له أصلًا، وكمان لو حاول يفتح رابطها بييجي permissionGuard يمنعه. الخطوات العملية (للأدمن): (1) روح إدارة الأدوار/الصلاحيات وأعطِ كل دور الصلاحيات اللي تخصّه فقط: المشغّل ← production.shopfloor.operate (يشوف الترمينال بس)؛ المشرف ← يضيف production.shopfloor.supervise (شاشة البورد الحية)؛ المخطّط ← production.mrp (قمرة التخطيط + MPS + CRP)؛ المحاسب/مراقب التكلفة ← production.costing (الانحرافات + التكاليف القياسية)؛ مدير الإنتاج ← production.orders + production.confirmations + production.reports. (2) سجّل دخول بكل دور وتأكّد إن القائمة بتوريله شاشاته بس. ملاحظة: السوبر أدمن (بصلاحيات فاضية) بيشوف كل حاجة.
✅ النتيجة: النتيجة المتوقعة: كل موظف يفتح المصنع فيلاقي قائمة نضيفة فيها شاشاته اللي يشتغل عليها بس، فمفيش تشتيت ولا دخول لشاشات حساسة. نصيحة: امنح أقل صلاحية تكفي الدور (least privilege): المشغّل مايحتاجش غير الترمينال، والمحاسب مايحتاجش الترمينال. راجع الأدوار دوريًا وامسح أي صلاحية production.* زيادة عن الحاجة.