لوحة تحكم الحجوزات
ما تفعله لوحة تحكم الفريق المضيف: النظرة العامة، وصفحات الشريط الجانبي، وإعدادات الشركة، والإشعارات، وتسجيل الدخول.
لحزمة الحزمة الكاملة
الصفحات
كل صفحة موجودة بالإنجليزية تحت /en وبالعربية تحت /ar. تفتح لوحة التحكم على /en/dashboard بعد تسجيل الدخول في /en/auth/login. لا يظهر كل عنصر في الشريط الجانبي إلا عندما يملك المسؤول المسجّل صلاحيته.
| عنصر الشريط الجانبي | المسار | الصلاحية | وظيفته |
|---|---|---|---|
| نظرة عامة | /en/dashboard | overview.view | إشغال هذا الشهر وإيراداته، ووصول اليوم ومغادرته، وما ينتظر. |
| التقويم | /en/dashboard/calendar | calendar.view | شهر من الليالي، وصف لكل إقامة، مع نافذة التواريخ المحظورة وسجل الحظر. |
| الحجوزات | /en/dashboard/bookings | bookings.view | الحجوزات مع تبويبات للحالة والبحث والمرشحات، وصفحة لكل حجز. |
| الإقامات | /en/dashboard/stays | stays.view | الإقامات مع تبويبات للحالة والبحث والمرشحات، ومحرر الإقامة. |
| الاستفسارات | /en/dashboard/inquiries | inquiries.view | أسئلة الضيوف من الموقع، مع لوحة تفاصيل. |
| التقييمات | /en/dashboard/reviews | reviews.view | ما كتبه الضيوف بعد الإقامة؛ انشر كل تقييم أو أخفِه. |
| المساعد الذكي | /en/dashboard/ai-assistant | ai_chat.use | محادثة تجيب من بيانات الشركة وتتصرف بناءً عليها. |
| الإعدادات | /en/dashboard/settings | لا شيء (لكل تبويب صلاحياته) | الشركة، والصفحة الرئيسية، والوجهات، والمدفوعات، والملف الشخصي، والأمان. |
| إدارة المسؤولين | /en/dashboard/admins-management | admins.view | حسابات الفريق وأدوارهم. |
| أدوار المسؤولين | /en/dashboard/admins-roles | roles.view | الأدوار والصلاحيات. |
تجد لوحة بحث في الشريط العلوي الصفحات والإقامات والحجوزات والاستفسارات، ويحمل الجرس الإشعارات. وأي صفحة تُفتح بعنوانها دون الصلاحية تعرض «لا تملك صلاحية الوصول إلى هذه الصفحة.» بدلًا من ذلك، وهو الرفض نفسه الذي تعطيه واجهة API.
النظرة العامة
- إشغال هذا الشهر وإيراداته وحجوزاته، ووصول اليوم ومغادرته، والضيوف المقيمون حاليًا، بالمنطقة الزمنية للشركة.
- الإيرادات والحجوزات والإشغال شهرًا بشهر خلال آخر اثني عشر شهرًا، وأفضل الإقامات، والحجوزات حسب الحالة، وبلدان الضيوف.
- وصول اليوم ومغادرته، والحجوزات قيد الانتظار، وآخر سبعة حجوزات، وأحدث التقييمات، والاستفسارات المفتوحة، وكل منها يرتبط بصفحته.
- يُحسب كل رقم من الحجوزات حين تطلبه الصفحة، فلا يختلف أبدًا عن التقويم.
الحجوزات
- مرشح لكل حالة مع عددها، وبحث بالمرجع أو اسم الضيف، ونطاق تاريخ الوصول، الأحدث أولًا، عشرة في الصفحة.
- صفحة لكل حجز، على
/en/dashboard/bookings/<reference>: الإقامة، والضيف، وتفصيل السعر، والدفع، والجدول الزمني، وملاحظة داخلية لا يراها الضيف، والخطوات التي يمكن اتخاذها: تأكيد، وتسجيل الوصول، وإكمال، وإلغاء. - الخطوة التي لا يستطيع الحجز اتخاذها الآن تظهر معطّلة مع سببها، مثل حجز بالبطاقة لم يصل دفعه، بدلًا من إخفائها.
الإعدادات
في الإعدادات ستة تبويبات. الملف الشخصي والأمان يخصان المسؤول المسجّل؛ والباقي يحتاج إلى صلاحية للعرض وأخرى للحفظ.
| التبويب | الصلاحية | ما يضبطه |
|---|---|---|
| الشركة | settings.view، وsettings.edit للحفظ | اسم الشركة وشعارها النصي ووصفها باللغتين، وبريد التواصل والهاتف وسطر العنوان، والعملة (USD)، والمنطقة الزمنية (America/New_York)، وأوقات الوصول والمغادرة الافتراضية على شبكة نصف ساعة، وتوقيع الرسائل إلى الضيوف. |
| الصفحة الرئيسية | settings.view، وsettings.edit للحفظ | الإقامة في واجهة الموقع، والإقامات الأربع المختارة بالترتيب (الإقامات المنشورة فقط)، والأسئلة التي تجيب عنها الصفحة الرئيسية، باللغتين. |
| الوجهات | destinations.view، والإنشاء أو التعديل أو الحذف | اسم كل منطقة وشعارها ووصفها باللغتين، والمعرّف النصي، وصورة الغلاف، وترتيب الفرز، وهل تُعرض. لا يمكن حذف وجهة ما زالت لها إقامات. |
| المدفوعات | settings.view، وsettings.edit للحفظ | هل Stripe وPayPal مضبوطان على واجهة API وهل مفاتيحهما تجريبية أم حقيقية، وهل المحاكي قيد الاستخدام، ومفتاح الدفع عند الوصول، وسياسة الإلغاء التي يقرؤها الضيوف. |
| الملف الشخصي | لا شيء: يحفظ كل مسؤول ملفه بنفسه | صورة المسؤول المسجّل واسمه الأول واسم عائلته وبريده وهاتفه. تُغيَّر بيانات تسجيل الدخول تحت الأمان لا هنا. |
| الأمان | لا شيء | بيانات تسجيل دخول المسؤول المسجّل. |
لا تُعرض مفاتيح الدفع نفسها هنا ولا تُعدَّل أبدًا: هي في .env الخاص بواجهة API. ولا يُرفع شعار العلامة هنا أيضًا: يأتي من ملفات العلامة في المشروع.
الإشعارات
- يُخطَر كل مسؤول يستطيع عرض الحجوزات حين يُدفع حجز، سواء سوّاه webhook من Stripe أو PayPal أو التقاط PayPal أو المحاكي؛ وحين ينتظر حجز بالدفع عند الوصول أن يؤكده المضيف؛ وحين يُلغى حجز، بجملة تقول هل أنهاه الضيف أم الفريق أم حجز غير مدفوع انتهت مهلته. ويُخطِر السؤال الجديد كل مسؤول يستطيع عرض الاستفسارات، والتقييم الجديد كل مسؤول يستطيع عرض التقييمات.
- تصل مباشرة، مع رسالة قصيرة على الشاشة، ويسرد الجرس أحدث 30. يُحفظ كل إشعار 30 يومًا، إلى أن يُقرأ أو يُزال.
- لا يُرسل شيء بالبريد الإلكتروني: لا توجد خدمة بريد في القالب.
- يستخدم الاتصال المباشر
NEXT_PUBLIC_WEBSOCKET_BASE_URL، وهو عنوان واجهة API بدون/api، وتقبله واجهة API منFRONTEND_URL. وإعادة التحميل تعرض دائمًا أحدث الصفوف؛ والتحديثات المباشرة وحدها تعتمد على الاتصال.
تسجيل الدخول
- يبدأ نموذج تسجيل الدخول فارغًا. تذكر هذا الجهاز يُبقي الجلسة بعد إغلاق المتصفح، حتى ينتهي رمز واجهة API (سبعة أيام افتراضيًا)؛ وإذا أزلت العلامة تنتهي الجلسة بإغلاق المتصفح أو التبويب.
- البريد الخاطئ وكلمة المرور الخاطئة يظهران بالرسالة نفسها، «بريد إلكتروني أو كلمة مرور غير صحيحة»، فلا يخبر النموذج أحدًا أي العناوين لها حساب. وبعد عشر محاولات فاشلة خلال خمس عشرة دقيقة من عنوان واحد يقول النموذج حاول لاحقًا.
- عندما ترفض واجهة API جلسة (رمز منتهي أو ملغى)، تسجّل لوحة التحكم الخروج وتفتح صفحة تسجيل الدخول. ويصل تغيير أدوار المسؤول إليه وهو مسجّل الدخول.
- تعرض صفحة تسجيل الدخول عدد الإقامات التي تنشرها الشركة وعدد الوجهات التي تعرضها، مقروءًا من
GET /api/staysوGET /api/destinationsالعامين في واجهة API، بجوار اللغات التي تشحنها لوحة التحكم؛ وما دامت واجهة API لا يمكن الوصول إليها تعرض اللغات فقط. - يضم رأس الصفحة الشعار النصي و«العودة إلى الموقع» ومبدّل اللغة ومبدّل المظهر بين «النظام» و«فاتح» و«داكن»؛ ويضم تذييلها سطر حقوق النشر ورابطًا إلى صفحة الخصوصية في الموقع. ويفتح الشعار النصي و«العودة إلى الموقع» ورابط الخصوصية العنوان المضبوط في
NEXT_PUBLIC_SITE_URL، وما دام فارغًا يُحذف الرابطان ولا يرتبط الشعار النصي بشيء.
كيف تترابط أجزاء كود لوحة الإدارة
مُضمَّن مع مشترياتك. سجّل الدخول لقراءته، أو افتحه في ملف التنزيل.
بنية الكود، وطريقة إضافة صفحة وترجمة وخدمة API.