إشعارات المتصفح وPWA في ڤاريونس لمتاجر مصر: تنبيهات الطلبات والملخص اليومي
إشعارات المتصفح في ڤاريونس ترسل تنبيهات نظام عبر Web Push المبني على VAPID إلى كل جهاز تربطه من اللوحة: طلب جديد، ورسالة تواصل، وعميل محتمل جديد، مع ملخص يومي اختياري يُرسل مرة واحدة عن اليوم المغلق. كل جهاز له مفاتيحه الخاصة ويمكن تخصيص أنواع تنبيهاته وحده.
آخر تحقق: 2026-09-19
تُدار إشعارات المتصفح في ڤاريونس من تبويب «تنبيهات المتصفح» داخل /dashboard/settings، وهي مبنية على معيار W3C Web Push (ما يسمّيه النظام System C) وتميّزها عن إشعارات FCM الخاصة بتطبيق الجوال: اشتراك المتصفح يُخزَّن في مجموعة WebPushSubscription بينما رموز الجوال في DeviceToken، ولكل قناة خدمة إرسال مستقلة.
الربط يتم لكل جهاز على حدة: عند الضغط على زر التفعيل يسجّل المتصفح عامل الخدمة الخاص باللوحة (dashboard-sw.js)، ويطلب إذن الإشعارات من نظام التشغيل، ثم يرسل بصمة الاشتراك (endpoint مع مفتاحي p256dh وauth) إلى POST /api/dashboard/web-push/subscribe الذي يحفظها أو يحدّثها مقيدة بمعرّف متجرك ومعرّف المستخدم. نقطة النهاية فريدة عالمياً: إن كانت مسجلة لمستخدم أو متجر آخر يرد الخادم 409، ولكل مستخدم حد أقصى خمسة اشتراكات. ويُعاد تمييز audience تلقائياً إلى platform_admin عندما يكون الحساب مدير منصة حياً، وإلا يبقى merchant، فيُسحب هذا التمييز ممن سُحبت منه الصلاحية.
بعد الربط تظهر أربعة مفاتيح لهذا الجهاز فقط: الطلبات ورسائل التواصل والعملاء المحتملون (مفعّلة افتراضياً) والملخص اليومي (مغلق افتراضياً ويُفعَّل اختيارياً). التعديل يتم عبر PATCH /api/dashboard/web-push/preferences على نفس نقطة النهاية حصراً، فلا يتأثر هاتفك عندما تغيّر إعدادات حاسوبك. وتنبيه الطلب الجديد يحمل رابطاً عميقاً إلى صفحة الطلب /dashboard/orders/{orderId}، بينما يحمل الملخص اليومي رابط /dashboard/daily-summary.
الإرسال محكوم بمهلة خمس ثوانٍ لكل اشتراك: عند انتهاء صلاحية اشتراك (410 أو 404 من مزود الدفع) يحذفه الخادم تلقائياً ويحدّث lastSuccessAt عند النجاح، وكل إرسال اختبار يعيد أعداد sent وfailed وremoved. زر «اختبار» في نفس التبويب يرسل عبر POST /api/dashboard/web-push/test إلى أجهزتك أنت فقط دون إنشاء طلب، وزر الاختبار في /admin/notifications يرسل عبر POST /api/admin/web-push/test إلى كل أجهزة مدير المنصة بعد التحقق الحي من صلاحيته، فيُعطَّل من سُحب منه الدور تلقائياً.
الملخص اليومي خدمة مخصصة مستقلة: يختار التاجر الاشتراك الاختياري لكل جهاز، ثم يعمل مجدول 00:05 بتوقيت القاهرة عبر /api/cron/daily-summary-digest محمياً بسر CRON_SECRET، فيحسب أرقام اليوم المغلق السابق (المشاهدات والطلبات والعملاء المحتملين ورسائل التواصل) ويرسل حمولة موجزة بوسم daily-summary-{date} إلى المشتركين المفعّلين فقط، بتزامن منخفض (2) وصلاحية 86400 ثانية، مع سجل DailySummaryPushLog الذي يمنع تكرار الإرسال لنفس المتجر والتاريخ. أما البث العام للتجار من مدير المنصة فيتم عبر /api/admin/tenant-broadcast بطابور BullMQ غير متزامن عبر FCM وWeb Push معاً.
الشيء الوحيد غير الموجود بعد هو تثبيت واجهة المتجر كـ PWA على أجهزة العملاء: يوجد زر تثبيت مخطط له في التذييل لكنه ما زال في مرحلة التخطيط ولم يُبنَ، فلا تخلط بينه وبين إشعارات متصفح اللوحة العاملة حالياً.
خطوات الإعداد في ڤاريونس
افتح تبويب تنبيهات المتصفح
من اللوحة ادخل إلى /dashboard/settings ثم تبويب «تنبيهات المتصفح» (BrowserOrderAlertsSettings). ستجد حالة الدعم وعدد الأجهزة النشطة ومفاتيح الأنواع لهذا الجهاز.
اربط هذا الجهاز
اضغط زر التفعيل واقبل إذن الإشعارات في المتصفح ونظام التشغيل. يسجّل المتصفح عامل الخدمة ويرسل الاشتراك إلى POST /api/dashboard/web-push/subscribe. كرر ذلك على كل جهاز (حاسوب وهاتف) لأن الاشتراك خاص بكل متصفح.
اختر أنواع التنبيهات لهذا الجهاز
فعّل أو عطّل الطلبات ورسائل التواصل والعملاء المحتملين لكل جهاز وحده عبر PATCH /api/dashboard/web-push/preferences. الإعدادات الافتراضية مفعّلة للثلاثة، وتغيير جهاز لا يمس باقي الأجهزة.
اشترك في الملخص اليومي إن أردته
مفتاح الملخص اليومي مغلق افتراضياً: فعّله لكل جهاز تريد استلام الموجز عليه. يُرسل مرة واحدة الساعة 00:05 بتوقيت القاهرة عن اليوم المغلق السابق مع رابط /dashboard/daily-summary، ولا تكرار لنفس التاريخ.
جرّب الإرسال بزر الاختبار
اضغط «اختبار» في نفس التبويب: يرسل POST /api/dashboard/web-push/test إلى أجهزتك ويعرض أعداد المُرسل والفاشل والمحذوف. إن ظهر sent: 0 فلا يوجد اشتراك مفعّل لهذا المستخدم بعد. ومدير المنصة يجد زر اختبار مماثلاً في /admin/notifications.
أدر الأجهزة الخمسة والاشتراكات المنتهية
كل مستخدم بحد أقصى خمسة اشتراكات: احذف جهازاً قديماً من POST /api/dashboard/web-push/unsubscribe قبل إضافة جديد. الاشتراكات المنتهية (410/404) تُحذف تلقائياً عند الإرسال، وإعادة فتح اللوحة تحدّث الاشتراك بصمت دون إزعاج سجل النشاط.
راقب من سجل النشاط
كل ربط وإلغاء وتغيير تفضيل واختبار يُسجَّل في /dashboard/activity كحدث pwa دون مفاتيح أو نقاط نهاية، ويربط الحوار مباشرة بتبويب تنبيهات المتصفح. راجع السجل عند الاشتباه في جهاز لا يستلم.
أسئلة شائعة
هل أحتاج إلى تطبيق جوال لاستلام تنبيهات الطلبات؟
لا. إشعارات المتصفح تعمل عبر Web Push على المتصفح نفسه بعد ربط الجهاز من /dashboard/settings، وهي قناة مستقلة عن رموز FCM الخاصة بتطبيق الجوال.
هل إعدادات التنبيهات مشتركة بين أجهزتي؟
لا. كل جهاز له اشتراكه ومفاتيحه الخاصة، وتعديل أنواع التنبيهات يطال نقطة النهاية الحالية فقط، فيمكن تفعيل الطلبات على الهاتف وتعطيلها على حاسوب المكتب.
متى يصل الملخص اليومي وما محتواه؟
يُرسل مرة واحدة الساعة 00:05 بتوقيت القاهرة عن اليوم المغلق السابق: المشاهدات والطلبات والعملاء المحتملين ورسائل التواصل، مع رابط مباشر إلى /dashboard/daily-summary، ولن يتكرر لنفس المتجر والتاريخ بفضل سجل DailySummaryPushLog.
كيف أجرّب الإشعارات دون إنشاء طلب وهمي؟
اضغط زر الاختبار في تبويب تنبيهات المتصفح: يرسل POST /api/dashboard/web-push/test حمولة تجريبية إلى أجهزتك ويعرض أعداد المُرسل والفاشل والمحذوف دون إنشاء أي مستند إشعار.
فعّلت الإشعارات ولا يصلني شيء، ما الأسباب؟
الأسباب الشائعة: إذن الإشعارات مرفوض في المتصفح أو نظام التشغيل، أو انتهاء الاشتراك (يُحذف تلقائياً عند أول 410/404)، أو بلوغ حد خمسة أجهزة، أو نقطة نهاية مسجلة لمستخدم آخر (409). راجع زر الاختبار وسجل النشاط pwa ثم أعد الربط.
ماذا يحدث لإشعارات الموظف عند سحب صلاحيته؟
عند كل اشتراك وإرسال اختبار يعيد الخادم فحص دور المستخدم الحي: من سُحبت منه صلاحية مدير المنصة تُعطَّل صفوف platform_admin الخاصة به وتُعاد إلى merchant تلقائياً، فلا يستلم تنبيهات الإدارة بعدها.
هل يمكن لعملاء متجري تثبيت المتجر كتطبيق؟
ليس بعد. زر تثبيت واجهة المتجر كـ PWA ما زال في مرحلة التخطيط ولم يُبنَ، وهو منفصل تماماً عن إشعارات متصفح اللوحة العاملة حالياً للتاجر وفريقه.
هل تُخزَّن مفاتيح الدفع أو بيانات التصفح؟
مفاتيح p256dh وauth تُخزَّن في WebPushSubscription لأنها لازمة للإرسال، لكن سجل النشاط pwa لا يحفظ أبداً نقاط النهاية الكاملة ولا المفاتيح ولا User-Agent الخام، بل عائلة المتصفح وفئة المزود فقط.
استكشاف الأخطاء
1) لا يصل أي تنبيه: تأكد من قبول إذن الإشعارات في المتصفح ونظام التشغيل (وضع عدم الإزعاج في ويندوز يحجب الشارة)، ثم اضغط زر الاختبار وراجع الأعداد. 2) sent: 0 بعد الاختبار: لا يوجد اشتراك مفعّل لهذا المستخدم — أعد ربط الجهاز من تبويب تنبيهات المتصفح. 3) خطأ 409 عند الربط: نقطة النهاية مسجلة لمستخدم أو متجر آخر — احذفها من الجهاز الأصلي أولاً. 4) تجاوز حد خمسة أجهزة: احذف جهازاً قديماً عبر POST /api/dashboard/web-push/unsubscribe ثم أضف الجديد. 5) الملخص اليومي لا يصل: تأكد أن مفتاح dailySummary مفعّل لهذا الجهاز تحديداً (وليس جهازاً آخر)، وأن مفاتيح VAPID مضبوطة على الخادم وإلا رد الخادم VAPID_NOT_CONFIGURED. 6) تنبيهات الإدارة توقفت: الحساب لم يعد مدير منصة حياً — صفوف platform_admin تُعطَّل تلقائياً عند الفحص الحي.
حدود مهمة
• إشعارات المتصفح للتاجر وفريقه فقط، وليست قناة تسويق لعملاء المتجر. • كل مستخدم بحد أقصى خمسة اشتراكات متصفح. • الإرسال بمهلة خمس ثوانٍ لكل اشتراك، والاشتراكات المنتهية تُحذف بدل إصلاحها. • الملخص اليومي اشتراك اختياري (مغلق افتراضياً) ويُرسل مرة واحدة يومياً فقط. • تثبيت واجهة المتجر كـ PWA للعملاء غير مبني بعد (مرحلة تخطيط). • بث مدير المنصة للتجار يعمل بطابور غير متزامن وقد يتأخر عن الإرسال الفوري.