بدل ما تفتح الموديول وتدوّر، شريط أوامر عام (⌘K) يلاقيلك أي فاتورة/أمر/عميل من أي شاشة، ويفتحه على صفحته الخاصة بلينك تقدر تشاركه وتفتحه في تاب جديد.
فحصنا الكود فعليًا — مش افتراض:
الفاتورة بتفتح في Dialog جوه القائمة (viewDialogVisible). مفيش URL خاص بيها → مينفعش bookmark، ولا تاب جديد، ولا تشارك لينك، والـ back مابيرجعّهاش.
البحث الموجود محلّي داخل الموديول بس (LIS/worklist). الـ topbar فيه إشعارات ومستخدم — مفيش "افتح برقم" ولا بحث شامل عبر المستندات.
توصل لفاتورة معيّنة = افتح الموديول ← القائمة ← فلتر/دوّر ← اضغط. كتير لمستخدم بيدخّل عشرات المستندات في الساعة.
ده شكل الحل بالثيم الحقيقي. اضغط على شريط البحث فوق (أو ⌘K) عشان تحسّه بنفسك:
↑↓ للتنقّل · ↵ للفتح · النتائج مجمّعة حسب النوع · بحث بالرقم أو الاسم أو العميل.
القفزة من البحث بتوديك لصفحة المستند جوه شكل الموديول (السياق محفوظ) — وبلينك حقيقي:
| القطعة | التفصيل |
|---|---|
| Routes (FE) | صفحة تفصيل لكل مستند بـ :id param (Angular lazy route + paramMap). الحالي dialog-only → نضيف route تفتح نفس الكمبوننت في صفحة. |
| Command Bar (FE) | كمبوننت في layout/topbar + خدمة CommandBarService (overlay, debounce، تنقّل كيبورد، recent في localStorage). يفتح بـ ⌘K / Ctrl+K. |
| Search API (BE) | GET /search?q=&types=invoices,orders,customers — يرجّع {type, id, title, subtitle, badge, route} مرتّبة بالصلة، يحترم صلاحيات المستخدم (per-module). |
| الأداء | debounce 200ms، حد 8 لكل نوع، فهرسة على رقم المستند/الاسم. النتايج تفتح route جاهز (مفيش تحميل تاني). |
| الصلاحيات | البحث + الفتح يمرّان بنفس permissionGuard — اللي ملوش صلاحية مبيشوفش المستند. |