الفعاليات والأماكن ومخططات المقاعد
ما تحتويه الفعالية وأنواع تذاكرها، وكيف ينشئ المنظّم فعالية وينشرها ويلغيها، والأماكن على الخريطة، ومخططات المقاعد بمسوداتها وإصداراتها المنشورة، وكيف يُبقي الحجز المؤقت المقاعد للمشتري.
لحزمة الحزمة الكاملة
ما تحتويه الفعالية
| الجزء | القيم |
|---|---|
| النصوص، بالإنجليزية والعربية | العنوان (160 حرفًا) والملخص (500) والوصف (5000). يلزم العنوان والوصف بالإنجليزية للنشر. |
| العنوان | معرّف نصي يُصنع من العنوان الإنجليزي إن لم يُعطَ، ويُبقى فريدًا برقم. |
| الفئة | workshop أو talk أو festival كما في البيانات التجريبية |
| المكان والدخول | مكان، ومقاعد reserved (مقاعد من المخطط المنشور للمكان) أو دخول general (كمية بلا أرقام مقاعد) |
| الجدولة | البداية والنهاية بالمنطقة الزمنية للفعالية نفسها، وبرنامج حتى 24 بندًا (وقت وعنوان وتفصيل اختياري) |
| الظهور | public (مدرجة في الكتالوج والبحث) أو unlisted (تُباع برابطها فقط) |
| اللون | pink أو yellow أو teal أو blue. لا صورة للفعالية: يُرسم عنوانها وتاريخها ولونها على شكل تذكرة. |
| أنواع التذاكر | من 1 إلى 10، لكل منها اسم وسعر (0 للمجاني) وسعة وأقصى عدد في الطلب (من 1 إلى 8) وحالة بيع: متاحة للبيع أو موقوفة مؤقتًا أو مغلقة |
تُحفظ الأسعار بأصغر وحدة من عملة مساحة العمل (2000 تعني $20.00)، ويسمّي عمود السعر في المحرر تلك العملة: التي سُعّرت بها أنواع تذاكر الفعالية، أو عملة مساحة العمل لفعالية جديدة. تُضاف رسوم الحجز، وهي 3% في البيانات التجريبية، لكل تذكرة عند الدفع ويدفعها الحاضر؛ والتذكرة المجانية لا تحملها.
الحالات وما يعرضه الموقع
| الحالة | في الموقع |
|---|---|
| مسودة | مخفية. كل فعالية جديدة تبدأ هنا. |
| منشور | مدرجة (إذا كانت عامة)، وقابلة للبحث، وفي خريطة الموقع، ومتاحة للبيع. |
| نفدت التذاكر | مدرجة، وكل نوع تذكرة فيها يظهر نافدًا. تبقى الصفحة مفتوحة ويمكن حفظ الفعالية. |
| ملغى | خارج الكتالوج. تقول صفحتها إنها أُلغيت، ولا تفتح تذاكرها الباب بعد الآن. |
| مؤرشف | مخفية، وفي تبويب «انتهت» في اللوحة، وتُحذف من قوائم المحفوظات لدى الحضور. |
تحتوي البيانات التجريبية الجديدة 36 فعالية عبر أربعة منظّمين: 29 منشورة، واثنتان نفدت تذاكرهما، وواحدة أُلغيت، و4 مسودات. ويسرد الموقع 22 منها المتاحة للبيع أو الجارية الآن، 3 منها جارية الآن، و9 انتهت بالفعل.
النشر والإلغاء والإجراءات الأخرى
| الإجراء | وظيفته |
|---|---|
| نشر | يحتاج إلى العنوان والوصف بالإنجليزية، ونوع تذكرة واحد على الأقل بسعة، وبداية في المستقبل، ولمقاعد محجوزة مخططًا منشورًا في المكان. وإلا يسرد المحرر ما ينقص. |
| إلغاء النشر | يعود إلى مسودة: يتوقف البيع الجديد، وتُحرَّر الحجوزات الحية، وتبقى التذاكر المباعة صالحة. |
| إلغاء الفعالية | يتوقف البيع والدخول فورًا، وتُحرَّر الحجوزات، ويصل بريد إلى كل طلب مدفوع. لا يتحرك أي مال: استرد كل طلب من صفحته. ويُؤكَّد الإلغاء بكتابة المعرّف النصي للفعالية. |
| نسخ | مسودة جديدة باسم "(copy)" بأنواع التذاكر نفسها وبلا مبيعات. |
| أرشفة | لمسودة أو فعالية ملغاة أو فعالية انتهت. تبقى الطلبات والتذاكر. |
لا تُحذف الطلبات والتذاكر أبدًا بعد أن يتحرك المال. وكل إجراء يُكتب في سجل التدقيق.
صفحة الفعاليات والمحرر
- تبويبات الكل ومنشورة ومسودة وانتهت، وبحث، وفلاتر للفئة والحالة والتواريخ (الثلاثون يومًا القادمة، والتسعون يومًا القادمة، وهذا العام، والفعاليات السابقة)، بثماني فعاليات في كل صفحة، مع المباع من السعة والإيرادات في كل صف.
- تتيح قائمة كل صف معاينة الفعالية وتعديلها وفتح حضورها ونسخها ونشرها وإلغاء نشرها وأرشفتها وإلغاءها.
/en/dashboard/events/newينشئ فعالية و/en/dashboard/events/<id>/editيعدّل واحدة، في أربعة تبويبات (التفاصيل والتذاكر والجدول والظهور) بجانب معاينة التذكرة وقائمة الجاهزية.- السعر يُقفل بعد أول بيع، فيبقى ما دفعه المشترون صحيحًا. ويثبت المكان ونمط الدخول بعد بيع التذاكر، ولا يمكن إزالة نوع تذكرة بيع منه، وتُرفض سعة أقل من المباع.
- إذا حفظ شخص آخر الفعالية بعد أن فتحتها، يقول المحرر ذلك ويُبقي ما كتبته غير محفوظ إلى أن تعيد التحميل.
- يسرد
/en/dashboard/events/<id>/attendeesتذاكر الفعالية: الحامل والمقعد والنوع والحالة ووقت الدخول، مع بحث وفلاتر لمن دخلوا ومن لم يدخلوا والملغاة.
الأماكن
- يحمل المكان اسمًا باللغتين، وعنوانًا ومدينة ومنطقة زمنية وسعة، وملاحظات إمكانية الوصول والمواصلات باللغتين، ونقطة اختيارية على الخريطة.
- تعرض صفحة الأماكن في اللوحة كل مكان على خريطة وفي قائمة مع مقاعده (محجوزة مع إصدار مخططها، أو دخول عام) وفعالياته القادمة. ولمحرر المكان أداة اختيار على الخريطة مع بحث عن الأماكن.
- ترسم الخرائط بلاطات OpenFreeMap ويستخدم البحث عن الأماكن خدمة Photon العامة، كلتاهما من دون مفتاح. وتوجّهها
NEXT_PUBLIC_MAP_STYLE_LIGHTوNEXT_PUBLIC_MAP_STYLE_DARKوNEXT_PUBLIC_PLACE_SEARCH_URLفي اللوحة إلى مكان آخر. - للموقع صفحة لكل مكان مع فعالياته، ولمكان بمقاعد مخططه المنشور.
- في البيانات التجريبية 9 أماكن. لكل من Room 3 وMill Street Lecture Hall مخطط منشور من 72 مقعدًا؛ وتبيع الأماكن الأخرى دخولًا عامًا.
مخططات المقاعد
المخطط شبكة من 1 إلى 40 صفًا في كل منها من 1 إلى 60 مقعدًا، مع ما يصل إلى ستة ممرات. تُسمّى المقاعد بحرف الصف ورقمه (A12). ويفتح محرر المقاعد على /en/dashboard/venues/<id>/seating.
- يمكن تعليم كل مقعد مهيّأ أو مرافق (يظهران على خريطة المشتري)، أو معطّل (مخفي عن المشترين، لمقعد مكسور أو موضع كاميرا)، وإعطاؤه فئة سعر: الفئة 1 تُباع بنوع تذكرة الفعالية الأول، والفئة 2 بنوعها الثاني، وهكذا.
- حفظ المخطط يحتفظ بمسودة تُعدَّل بحرية. للمكان مسودة واحدة في كل مرة.
- نشر يجمّد المسودة كإصدار. الإصدار المنشور لا يتغير أبدًا: المقاعد المباعة عليه تبقى مرتبطة به، وأي تغيير لاحق إصدار جديد يُنشأ بـ إنشاء إصدار جديد. يحتاج النشر إلى مقعد مفعّل واحد على الأقل، وألا تزيد المقاعد المفعّلة على سعة المكان.
- تبيع الفعالية ذات المقاعد المحجوزة أحدث مخطط منشور لمكانها، من لحظة نشر الفعالية.
حجوزات المقاعد المؤقتة
- اختيار المقاعد على الخريطة لا يحجز شيئًا؛ أما الحجز فيفعل. يُبقي المقاعد (أو كمية دخول عام) لمشترٍ واحد طوال مدة حجز مساحة العمل، عشر دقائق في البيانات التجريبية، بحسب ساعة الخادم، ويرى المشتري العدّ التنازلي.
- لا يستطيع مشتريان حجز المقعد نفسه أبدًا. والمقعد الذي أُخذ قبل لحظة يُرفض مع رسالة باختيار غيره.
- يحجز الطلب الواحد 8 تذاكر على الأكثر، ولا يتجاوز أبدًا حد نوع التذكرة نفسه. وللحاضر المسجَّل دخوله حجز حي واحد لكل جلسة: الاختيار الجديد يحل محل القديم.
- حين ينتهي الوقت تصبح المقاعد متاحة للآخرين فورًا، وتنظّف عملية مسح كل 15 ثانية الحجوزات المنتهية. ومبالغ الحجز لقطة ثابتة، فلا يغيّرها تغيّر لاحق في الأسعار.
- مدة الحجز وحد الطلب الواحد قيمتان في مساحة العمل (
hold_secondsوهي 600، وmax_per_orderوهي 8، في البيانات التجريبية). ولا تعدّلهما اللوحة.
من يستطيع فعل ماذا
| الصلاحية | يتيح |
|---|---|
events.view | رؤية كل فعالية، ومنها المسودات، وحضورها |
events.edit | إنشاء الفعاليات وتعديلها ونسخها |
events.publish | النشر وإلغاء النشر والإلغاء والأرشفة |
venues.view | رؤية الأماكن ومخططاتها |
venues.edit | إنشاء الأماكن وتعديلها، وحفظ المخططات ونشرها |
يملك دورا المالك والمدير التجريبيان الخمس كلها؛ أما المالية وتسجيل الدخول فلا تملكان شيئًا منها.
ما تتحقق منه واجهة API
- يرفض المحرر وواجهة API بـ
codeمقروء آليًا:VERSION_CONFLICT(حفظ شخص آخر أولًا) وPRICE_LOCKEDوHAS_SALESوEVENT_CLOSEDوNOT_READY(مع ما ينقص فيdetails.missing) وINVALID_TRANSITIONوCONFIRMATION_REQUIRED. - حفظ مسودة مخطط حفظها شخص آخر بعد تحميلك لها هو 409
VERSION_CONFLICT؛ ونشر مخطط يزيد على سعة المكان هو 400OVER_CAPACITY. - يحتاج
POST /api/holdsإلىIdempotency-Key، ويجيب بالحجز مع رمز يظهر مرة واحدة ويُرسل بعد ذلك باسمX-Hold-Token. المقعد الذي لم يعد متاحًا هو 409SEAT_UNAVAILABLE، والنوع النافد 409SOLD_OUT، والحجز المنتهي 410HOLD_EXPIRED. - يجيب
GET /api/public/sessions/:code/availabilityبوقت الخادم ومدة الحجز والرسوم، ولجلسة بمقاعد محجوزة بحالة كل مقعد. ويقرؤه الموقع كل 20 ثانية ما دامت الخريطة مفتوحة.