انتقل إلى المحتوى

التحسينات

السابقالتالي

ما الذي يمنع الثقة بالأرقام اليوم، والتغييرات التي تصلحه — مرتبة بحسب ما تفتحه.

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

العيوب

1. المهام اليومية لا تعمل إلا إذا فتح أحد مكتب الاستقبال

تُستدعى runDailyRoutines من مكان واحد: عرض صفحة /dashboard/desk. والصفحة الرئيسية للكاشير هي /dashboard/cafe، فإن مرّ يوم دون أن يفتح أحد مكتب الاستقبال، لا تصدر فواتير الإيجار، وتبقى الزيارات المنسية مفتوحة، ولا تكتمل الحجوزات المنتهية.

الأثرالإيجار يُفوتَر متأخراً، وأرقام الإشغال والحجوزات خاطئة حتى يزور أحد الصفحة
الإصلاحأضف مشغّل cron في Cloudflare (triggers.crons في wrangler.jsonc) يشغّل المهام الساعة 06:00 بتوقيت بورتسودان. عامل OpenNext يعالج fetch فقط، فيلزم مدخل مخصص رقيق يضيف معالج scheduled. أبقِ استدعاء الصفحة احتياطاً — فالمهمة تحجز اليوم أصلاً، فلا تعمل مرتين
الجهدصغير إلى متوسط

2. حجوزات التذاكر المنتهية تبقى معلّقة إلى الأبد

حين ينتهي حجز التذكرة تتحرر المقاعد عند القراءة، لكن الطلب يبقى PENDING ويظهر في عدد المعلّق في الاستقبال. لا شيء يلغيه أبداً.

الأثرعدد المعلّق في الاستقبال يزداد فقط؛ ولا يمكن قراءة تحويل الدفع من الحالة
الإصلاحفي المهام اليومية: PENDING بلا رقم بنكك وholdUntil < now ← CANCELLED مع cancelledAt والسبب "انتهى الحجز" — القاعدة نفسها التي تتبعها الحجوزات
الجهدصغير

3. تقفيل الصندوق يُسقط تسويات حسابات المقهى

تسوية الحساب تُبقي طريقة الدفع TAB. وتقفيل صندوق الاستقبال (cashUp في src/lib/desk/reports.ts) لا يعدّ من مدفوعات المقهى إلا CASH أو BANKAK. أما تقرير مبيعات المقهى فيضيف التسويات، فيختلف التقريران.

الأثرتقفيل آخر اليوم ينقص بقيمة كل حساب سُوّي في ذلك اليوم
الإصلاحأضف مجاميع CafeTabSettlement حسب طريقة الدفع إلى التقفيل
الجهدصغير

4. الموقع العام ولوحة الإدارة يعدّان مقاعد الفعالية بطريقتين

النموذج العام يعدّ صفوف REGISTERED مقابل السعة. ولوحة الإدارة تعدّ REGISTERED وATTENDED. تسجيل حضور شخص يحرر مقعداً في الموقع العام.

الأثرقد تمتلئ الفعالية فوق سعتها بعد بدء تسجيل الحضور
الإصلاحعُدّ الحالتين في registerForEvent واستعلامات الفعاليات العامة
الجهدصغير

5. "ممتلئة" تظهر متأخرة حتى خمس دقائق

صفحات الفعاليات مخزنة مؤقتاً 300 ثانية، ولا تسجيل جديد ولا تغيير حالة من الإدارة يحدّثها.

الأثريرى الزوار مقاعد نفدت فينتهون في قائمة الانتظار
الإصلاحrevalidatePath لصفحة الفعالية بعد كل تسجيل وكل تغيير حالة
الجهدصغير

6. لا أحد يُرقّى من قائمة الانتظار

حين يُلغى تسجيل يبقى المقعد فارغاً. قائمة الانتظار لا تُقرأ إلا يدوياً.

الأثرمقاعد فارغة في فعاليات لها قائمة انتظار
الإصلاحعند الإلغاء، رقِّ أقدم صف WAITLISTED واعرض للموظف رابط واتساب لإبلاغه
الجهدمتوسط

النقاط العمياء

أ. من أين يأتي الناس

لا شيء يسجّل كيف وصل الزائر: لا وسوم utm، ولا المُحيل، ولا "كيف سمعت عنا". وبدونه لا يمكن قياس أي قرار تسويقي.

  • احفظ أول utm_source وutm_medium وutm_campaign (أو نطاق المُحيل) في ملف تعريف ارتباط داخل src/proxy.ts.
  • خزّنه كحقل source على BookingRequest وTicketOrder وEventRegistration وProgramApplication وEnquiry وDeskCustomer.
  • أضف "كيف سمعت عنا؟" إلى نموذج العميل الجديد في الاستقبال، للزوار المباشرين.
  • ضع وسماً على كل رابط ينشره سبيس: ?utm_source=facebook&utm_medium=post&utm_campaign=<event-slug>.

يفتح: الإيراد والتحويل حسب القناة — جوهر خطة النمو.

ب. متى حدثت كل خطوة

المقهى وحده يسجّل وقت كل تغيير. في غيره يضيع وقت الانتقال بمجرد أن يتغير الصف مرة أخرى.

النموذجالناقصيفتح
BookingRequestconfirmedAt، cancelledAt، completedAtزمن التأكيد؛ وholdUntil يُمسح أيضاً عند التأكيد
TicketOrdersubmittedAtالزمن من التحويل إلى التحقق
EventRegistrationأي وقت تغييرمتى يُلغي الناس
EnquiryfirstResponseAt، closedAtزمن الرد — سرعة تحويل المهتم إلى عميل
ProgramApplicationdecidedAtزمن المراجعة
DeskChargepaidAtأيام تحصيل الإيجار

أنظف إصلاح جدول أحداث لكل نطاق، كما يعمل CafeOrderEvent اليوم: صف لكل تغيير، مع من ومتى.

ج. ضغطات واتساب

كل مسار ينتهي برابط wa.me، ولا تُعدّ أي ضغطة. مرّر الروابط عبر مسار تحويل صغير (مثل /go/whatsapp?from=booking) يسجّل الضغطة ثم يحوّل إلى واتساب.

يفتح: كم شخصاً يختار واتساب بدل مسار الويب، وأي صفحة ترسلهم.

د. زيارات الموقع

لا توجد بيانات مشاهدات للصفحات، فرأس كل مسار مفقود. Cloudflare Web Analytics مجاني وبلا ملفات تعريف ارتباط، ولا يحتاج إلا وسم سكربت على موقع تخدمه Cloudflare أصلاً.

يفتح: التحويل من المشاهدات إلى الطلبات لكل صفحة.

هـ. فجوات أصغر

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

ترتيب العمل

الترتيبالتغييرلماذا أولاً
1العيوب 1–3تجعل أرقام المال والإشغال اليوم خاطئة
2النقطة العمياء أ (المصدر)كل قرار نمو يحتاجها؛ والبيانات لا تتراكم إلا من يوم إطلاقها
3العيوب 4–5تحمي تجربة الفعاليات مع نموها
4النقطتان ب وجمقاييس السرعة ومسار واتساب
5النقطة د، والعيب 6، والفجوات الأصغرتكمل الصورة