تسجيل الدخول عند الباب
كيف يسجّل الموظفون دخول التذاكر عند الباب: اختيار جلسة، ومسح رمز QR بالكاميرا أو كتابة رمز، وما تعنيه كل نتيجة، وتنبيهات الباب، ومن يستطيع مسح أي جلسة.
لحزمة الحزمة الكاملة
صفحة الباب
يفتح تسجيل الدخول على /en/dashboard/check-in. يختار الموظفون الفعالية وجلستها، وتعرض الصفحة هل الأبواب مفتوحة، وكم دخلوا من كم يُتوقع، وآخر عمليات المسح، والتنبيهات المنتظرة. تُعد الأبواب مفتوحة من ساعتين قبل البداية، أو متى دخل أي شخص، حتى النهاية. وتسرد الصفحة جلسات الفعاليات المنشورة والتي نفدت تذاكرها وانتهت قبل أقل من 24 ساعة.
يحتاج تسجيل الدخول إلى اتصال: لا توجد قائمة انتظار دون اتصال لإعادة تشغيلها لاحقًا، وتتوقف الصفحة مؤقتًا ما دام الاتصال مقطوعًا.
مسح تذكرة
- تشغيل الكاميرا ووجّهها نحو رمز QR على التذكرة، أو اكتب الرمز في أدخل الرمز يدويًا: الرقم المرجعي للتذكرة مثل
TKT-1042-1يصلح كما يصلح نص رمز QR. تبقى الكاميرا مغلقة حتى تشغّلها، ولا تغادر لقطاتها الجهاز أبدًا. - تُفحص التذكرة أولًا دون إدخال أحد، وتعرض النتيجة الحامل والمقعد ونوع التذكرة.
- تأكيد الدخول يُدخلها. والتذكرة التالية تمسح النتيجة للشخص التالي.
تُقرأ الكاميرا في المتصفح بقارئ الباركود المدمج فيه، أو بـ jsQR حيث لا يوجد قارئ. والمتصفح الذي لا يستطيع استخدام كاميرا هنا يفحص الرموز المكتوبة أيضًا.
ما تعنيه كل نتيجة
| النتيجة | المعنى |
|---|---|
| التذكرة صالحة | يمكن إدخالها. لا يحدث شيء حتى تأكيد الدخول. |
| تم الوصول | تم الدخول الآن. |
| دخل سابقًا | أُدخلت من قبل؛ وتقول النتيجة متى ومن فعل. |
| فعالية خاطئة | التذكرة لفعالية أو جلسة أخرى. |
| تذكرة ملغاة | مستردّة، أو تنتظر استردادًا، أو ملغاة، أو غير مدفوعة، أو أُلغيت فعاليتها. |
| التذكرة غير موجودة | لا تذكرة تطابق الرمز. رمز QR القديم لتذكرة أُعيد إصدارها يُقرأ هكذا. |
- تُدخَل التذكرة مرة واحدة في كل جلسة مهما حدث: بابان يمسحانها في اللحظة نفسها يُدخلانها مرة واحدة، ويرى الثاني من فعل ذلك.
- يمكن إعادة المحاولة بأمان بعد انقطاع الاتصال: تُرسل المحاولة نفسها مرة أخرى، فلا يدخل أحد مرتين.
- يتقدم الاسترداد أو إعادة الإصدار اللذان يجريان قبل المسح بثانية.
تنبيهات الباب
المسح الذي ينتهي بنتيجة «دخل سابقًا» أو «فعالية خاطئة» أو «تذكرة ملغاة» يُحسب ضمن ما يحتاج إلى انتباه إلى أن يضغط أحد تم الاطلاع في صفحة الباب. تضيفها النظرة العامة إلى عدّها، وما دام مفتاح تنبيهات تسجيل الدخول في مساحة العمل مفعّلًا، يرنّ كل واحد منها جرس كل عضو يستطيع نشر الفعاليات. ويُسجَّل كل مسح، من دون الرمز نفسه.
تحتوي البيانات التجريبية الجديدة 1,127 دخولًا و8 تنبيهات منتظرة: في City Fest دخلت 27 تذكرة من 50 وفيها 3 تنبيهات، ولدى كل منظّم آخر باب مفتوح الآن.
من يستطيع مسح أي جلسة
- كل خطوة في تسجيل الدخول تحتاج إلى
checkin.scan. يملكها أدوار المالك والمدير وتسجيل الدخول التجريبية. - العضو الذي يستطيع تعديل الفعاليات أو نشرها (المالك والمدير التجريبيان) يستطيع مسح كل جلسة. وأي شخص آخر، كدور تسجيل الدخول، يمسح الجلسات المسندة إليه فقط، ويُخبَر بذلك إن لم توجد أي جلسة.
- تُسند الجلسات في صفحة العضو تحت الفريق، في جلسات تسجيل الدخول، بواسطة عضو يستطيع تعديل الفريق (
admins.edit). - حساب تسجيل الدخول التجريبي يمسح City Fest وDesign Talks عند Northline Events وWinter Science Weekend وWinter Lights Trail عند Meadow Days؛ وبيانات دخوله في دليل التثبيت.
الحدود
يستطيع كل موظف إجراء 120 طلب تسجيل دخول في الدقيقة من عنوان واحد، فلا يكون الماسح وسيلة لتجربة الرموز. خلف وسيط عكسي اضبط TRUST_PROXY=1 في .env الخاص بواجهة API حتى يكون العنوان هو عنوان الماسح نفسه.
المسارات خلفه
- يفحص
POST /api/admin/check-in/validateتذكرة ولا يُدخل أحدًا؛ ويأخذPOST /api/admin/check-in/admitأيضًاclient_request_id(معرّف UUID لكل محاولة) ويجيب بالإدخال الأصلي عند إرساله مرة أخرى. وكلاهما يأخذ{ session_code, code }؛ ورمز الجلسة هو المعرّف النصي للفعالية متبوعًا بـ-main(design-talks-main). - حالات الرفض: 404
NOT_FOUNDو409WRONG_SESSIONو409TICKET_VOIDو409ALREADY_ADMITTEDو403session_not_assignedو429 عند تجاوز الحد. - يقرأ
GET /api/admin/check-in/sessions/:code/summaryو/scansأرقام الباب وآخر 20 مسحًا فيه؛ ويمسحPOST .../acknowledgeتنبيهاته. ويحددPUT /api/admin/session-staff/:codeمن يمسح جلسة.