اعتبر كل غرفة أو مورد وحدة مستقلة لها سعة وساعات تشغيل، واربط الحجز بوقت بداية ونهاية محددين. تحقّق من السعة والتداخل وفاصل التجهيز قبل التأكيد. لا تخلط عدد الحضور داخل الغرفة بعدد الحجوزات التي يمكن قبولها على الغرفة نفسها.
عرّف ما الذي يُحجز بالضبط
قد يعرض الموقع «مساحة عمل» لكنه يقصد غرفة اجتماعات خاصة أو مكتبًا فرديًا أو مقعدًا في مساحة مشتركة. هذه ليست وحدة مخزون واحدة. في الغرفة الخاصة يُحجز المورد كله عادة وفق السياسة المحددة، بينما المقاعد المشتركة قد تُباع كوحدات مستقلة. اختر نموذجًا واحدًا للنسخة الأولى بدل وضع الجميع خلف زر حجز متشابه.
سنستخدم مثالًا توضيحيًا لغرف اجتماعات فقط: غرفة أ تتسع لستة أشخاص، وغرفة ب تتسع لعشرة. هذه سعات مصطنعة للشرح، وليست قائمة أماكن حقيقية. لا يؤدي وجود أربعة مقاعد فارغة في غرفة أ المحجوزة لفريق من شخصين إلى السماح تلقائيًا بحجز ثانٍ فيها.
اجعل تعريف المورد قابلًا للتشغيل
احتفظ لكل غرفة بمعرف واسم وسعة وموقع وساعات إتاحة وحالة تشغيل. سجّل الإغلاق للصيانة كفترة تمنع الحجز، لا كملاحظة يقرأها الموظف بعد قبول الطلب. وإذا كانت الشاشة وجهاز العرض جزءًا ثابتًا من الغرفة، فاذكرهما كمرافق؛ أما جهاز مشترك يتنقل بين الغرف فقد يصبح موردًا مستقلًا لاحقًا.
يحتاج الحجز إلى الغرفة وصاحبه وعدد الحضور وبداية ونهاية وحالة. افصل سبب الزيارة الداخلي عن البيانات الضرورية للعرض العام. لا تعرض أسماء العملاء على تقويم مفتوح؛ يمكن إظهار «غير متاح» دون كشف من حجز.
حدّد المدة وفاصل التجهيز قبل تصميم التقويم
اكتب سياسة البداية والنهاية بوضوح. مثلًا، قد تسمح بحجز يبدأ على رأس الساعة ومدته ساعة أو ساعتان، مع خمس عشرة دقيقة للتجهيز بعده. هذه اختيارات تشغيلية توضيحية وليست قواعد عامة لكل مساحة. إذا انتهى الاجتماع الساعة 11:00، يصبح البدء التالي وفق هذا المثال 11:15، لا 11:00.
استخدم صيغة موحدة لعرض التوقيت والمنطقة الزمنية المقصودة. عندما تتغير السياسة، حدّد أثرها على الحجوزات القائمة بدل إعادة تفسيرها بصمت. قد يكون من الأنسب الاحتفاظ بالفاصل المعتمد مع كل حجز ومراجعة التعارضات يدويًا عند التغيير.
افحص التداخل على الفترة والمورد معًا
في النموذج المقترح، تتعارض فترتان إذا بدأت الأولى قبل نهاية الثانية وانتهت بعد بداية الثانية، مع احتساب فاصل التجهيز للمورد نفسه. أما غرفتان مختلفتان فلا تتعارضان لمجرد استخدام الوقت نفسه، ما لم تشتركا في مورد إضافي محدود.
يشرح توثيق PostgreSQL لأنواع النطاقات تمثيل فترات الوقت وقيود استبعاد التداخل، بما في ذلك أمثلة الحجز حسب الغرفة. هذا مرجع تقني لإحدى طرق التنفيذ، لا دليل على أن تطبيقك يستخدم PostgreSQL أو أن إطلاق فعّل هذا المنع. اطلب من المنفّذ ضمان القاعدة في طبقة الحفظ واختبار وصول طلبين معًا؛ لا يكفي أن يبدو الوقت غير متاح في تقويم قديم.
فرّق بين الطلب والحجز المؤكد
يمكنك البدء بطلبات يراجعها موظف. اكتب عندها «طلب حجز» ولا ترسل تأكيدًا قبل اعتماده. وإذا اخترت التأكيد الفوري، يجب أن تنجح عملية تخصيص المورد قبل عرض النجاح. حدد إن كانت الطلبات المعلقة تحجز الوقت مؤقتًا، ولمدة كم؛ لا تترك وقتًا محجوزًا إلى أجل غير محدد بسبب نموذج مهجور.
في النسخة المقترحة لا تمسك الطلبات الجديدة بالمورد، والتأكيد وحده يحجزه. لذلك قد يصل طلبان للفترة نفسها، ويقبل المسؤول أحدهما بعد فحص التوفر ويرفض الآخر أو يقترح بديلًا. الإلغاء يحرر الفترة وفق السياسة المعتمدة مع الاحتفاظ بالسجل. تجنّب تعديل غرفة أو مدة حجز مؤكد من دون إعادة التحقق.
اختبر المنطق قبل التوسع
ابدأ بغرفتين وثلاثة سيناريوهات: عدد حضور أكبر من السعة، وتداخل جزئي، وحجز يبدأ بعد التجهيز. أضف محاولة تأكيد متزامنة قبل التشغيل الفعلي. النتائج الواردة في الجدول توقعات مقترحة للاختبار، وليست نتائج تجربة أُجريت على إطلاق.
إذا أردت تجربة نموذج مخصص، انسخ الوصف وافتح إطلاق، ثم راجع المطلوب وما نُفّذ بالفعل. وإذا كانت عضوياتك وفوترة الاستخدام وتوزيع المقاعد معقدة، فقارن النظام المخصص بحل إدارة مساحات جاهز. لا توسّع نطاق النموذج ليشمل هذه الوظائف لمجرد ظهور تقويم جميل.
| السيناريو | المتوقع | السبب |
|---|---|---|
| غرفة أ محجوزة 10:00–11:00 مع تجهيز حتى 11:15؛ طلب جديد 10:30–11:30 | رفض التأكيد لتداخل الفترة على المورد نفسه | يبدأ قبل انتهاء إشغال الغرفة والتجهيز |
| غرفة أ نفسها؛ طلب جديد يبدأ 11:00 | رفضه وفق فاصل التجهيز المقترح | انتهاء الاجتماع لا يعني انتهاء إشغال المورد |
| غرفة أ نفسها؛ طلب يبدأ 11:15 لخمسة أشخاص | قابل للتأكيد إذا لا توجد قيود أخرى | بعد التجهيز وضمن سعة الستة |
| غرفة ب في الوقت نفسه لتسعة أشخاص | قابل للتأكيد إذا كانت ب متاحة | مورد مستقل بسعة عشرة في المثال |
| غرفة أ لسبعة أشخاص رغم خلو التقويم | رفض السعة أو عرض غرفة مناسبة | التوفر الزمني لا يلغي حد الحضور |
الوصف القابل للنسخ
ابنِ نموذجًا أوليًا عربيًا RTL لطلبات حجز غرف اجتماعات في مساحة عمل واحدة. الكيانات: غرفة، ساعات إتاحة، فترة إغلاق، طلب حجز، حجز مؤكد، حدث تغيير. لكل غرفة معرف وسعة. لكل طلب عدد حضور وبداية ونهاية ومنطقة زمنية واضحة. استخدم بيانات وهمية: غرفة أ لسِتة وغرفة ب لعشرة أشخاص، وفاصل تجهيز 15 دقيقة. الطلب الجديد لا يمسك الوقت، والتأكيد يتطلب فحص السعة والإغلاق والتداخل على الغرفة نفسها مع فاصل التجهيز، وتنفيذ منع التعارض في طبقة الحفظ. لا تقبل تأكيدين متعارضين حتى عند وصولهما معًا. أظهر فشل التأكيد دون نجاح كاذب. يرى العميل حجوزاته، ويرى المسؤول جميع الموارد، ولا تكشف أسماء الحاجزين للعامة. تغيير الغرفة أو الوقت يعيد الفحص؛ الإلغاء يحرر الفترة ويحفظ السجل. لا تضف دفعًا أو عضويات أو مكاتب مشتركة في النسخة الأولى. بيّن ما يحتاج إلى إعداد أو لم يُنفّذ. قدّم خطوات اختبار؛ لا تختلق نتائج ناجحة.
ابدأ بوصف واضح
انسخ الوصف والصقه في إطلاق لبدء مشروعك.
قائمة الفحص
- يُرفض عدد حضور يتجاوز سعة الغرفة ولو كان الوقت متاحًا.
- يُرفض التداخل الجزئي والكلي على الغرفة نفسها.
- يُسمح بالتوقيت نفسه لغرفة أخرى متاحة وفق القواعد.
- يُحسب فاصل التجهيز ويظهر للعميل وقت بدء صالح.
- الإغلاق للصيانة يمنع التأكيد ضمن فترته.
- يُنفّذ اختبار طلبين متزامنين وتسجَّل النتيجة الفعلية قبل الإطلاق.
- إلغاء الحجز يحرر المورد، وتغيير مدته يعيد التحقق من التعارض.
- لا تكشف صفحة التوفر أسماء الحاجزين أو تفاصيل اجتماعاتهم.
أسئلة شائعة
هل يكفي إخفاء الأوقات المحجوزة في التقويم؟
لا. قد تبقى صفحة قديمة مفتوحة أو يصل طلبان معًا. يجب التحقق عند التأكيد والحفظ، ثم اختبار النتيجة الفعلية في التنفيذ المختار.
هل الغرفة التي تتسع لستة أشخاص تقبل ستة حجوزات؟
ليس في نموذج الغرفة الخاصة. السعة تحدد عدد الحاضرين داخل حجز واحد. بيع المقاعد منفردة نموذج مختلف يحتاج قواعد مخزون أخرى.
ماذا يحدث إذا زادت مدة اجتماع قائم؟
تعامل معها كتعديل يعيد فحص السعة والتوفر وفاصل التجهيز والحجز التالي. لا تمدد الوقت بصمت أو تحذف حجزًا آخر لمعالجة التعارض.
هل يجب إضافة دفع إلكتروني من البداية؟
لا يلزم لنموذج طلبات الحجز المقترح. إذا أضيف لاحقًا، حدّد العلاقة بين مهلة الدفع وإمساك الوقت والتأكيد والإلغاء قبل التنفيذ.
المصادر
- PostgreSQL — Range Types — تمثيل النطاقات الزمنية وقيود استبعاد تداخل حجوزات المورد؛ ليس اختبارًا لإطلاق (تاريخ التحقق: 2026-09-20)
أُعدّ هذا الدليل بمساعدة الذكاء الاصطناعي. الغرف والأوقات والسعات أمثلة توضيحية، والجدول يبيّن نتائج متوقعة لا اختبارات منفّذة. راجع القواعد واختبر المخرجات قبل النشر.

