BookingHash

محرّك الحجوزات ذو اليوميات المسلسلة بالتجزئة. بيئة تجريبية على staging

قرارات التوفر والحجوزات المؤقتة والحجوزات وأحداث دورة الحياة، كلٌّ منها يُسجَّل حدثاً في سلسلة تجزئة SHA-256 لكل حجز يمكن لأنظمتك التحقق منها عند الطلب.

كيف يصبح الحجز سجلاً

دورة الحياة آلة حالات. كل واقعة تكتب حدث صندوق صادر في معاملة قاعدة البيانات نفسها، فلا يمكن للسجل وتاريخه أن يفترقا.

  1. الطلب

    يطلب العميل سعة: غرفة، أو طاولة، أو موعداً، أو قطعة معدّات.

  2. قرار التوفر

    تقرّر وصفة نقية تعمل في الذاكرة. ليست حالة مخزَّنة؛ لا يُكتب شيء حتى يوضَع حجز مؤقت.

  3. الحجز المؤقت

    حجز مؤقت نشط يحفظ السعة لمدة محدودة.

  4. الحجز

    يتحول الحجز المؤقت إلى حجز: مطلوب وبانتظار الموافقة، أو مؤكَّد.

  5. أحداث دورة الحياة

    بدء، إكمال، إلغاء، عدم حضور، تعديل. كلٌّ منها حدث في السلسلة.

حجز واحد، سلسلة واحدة

كل حدث صف في سلسلة تجزئة SHA-256 لكل كيان: تغطي التجزئة المستأجر، وتجزئة الحدث السابق، والمعرّف، والكيان، والتسلسل، والنوع، والوقت، والحمولة القياسية. الرأس هو GENESIS، والتسلسل بلا فجوات، والتجزئات المزوّرة تُرفض عند الإدراج، والتحديث أو الحذف محظور بمحفّزات قاعدة البيانات.

‏BookingHash: حجز واحد، سلسلة واحدة

خلاصات توضيحية
  1. يصل طلب للغرفة 12 لليلتين؛ ويُحسب قرار التوفر في الذاكرة ولا يُخزَّن.
  2. يُختم الحدث 1، حجز مؤقت موضوع، بالتجزئة السابقة GENESIS.
  3. يُختم الحدث 2، حجز مؤكَّد، بتجزئة الحدث 1.
  4. يليه الحدث 3، بدء، والحدث 4، إكمال، وكلٌّ منهما مختوم بالتجزئة السابقة.
  5. يمشي التحقق على السلسلة ويعيد حساب كل تجزئة: CHAIN_VALID.
  6. تُعدَّل حمولة الحدث 2 إلى 3 ليالٍ: تختلف تجزئته المُعاد حسابها، وتفشل الروابط التي تليه، ويبلّغ التحقق بـ CHAIN_BROKEN عند التسلسل 2.

كل حدث يُجزَّأ مع التجزئة السابقة (SHA-256). غيّر حدثاً واحداً، وسيفشل كل رابط لاحق في التحقق.

اختياري: يمكن كتابة خلاصة يومية لكل مستأجر إلى تخزين بقفل الكائنات في وضع الامتثال (إرساء بكتابة واحدة)، ويُفعَّل لكل مستأجر.

ما تقدّمه الواجهة البرمجية

  • تحقق حتمي

    يعيد GET /v1/bookings/{id}/history اليوميات مع chainValid. تمشي قاعدة البيانات على السلسلة وتعيد حساب كل تجزئة؛ وأي حدث سابق مُعدَّل ينتج CHAIN_BROKEN عند ذلك الصف.

  • كتابات متكرّرة آمنة

    أرسل Idempotency-Key مع كل كتابة. الطلب المُعاد يعيد النتيجة الأصلية بدلاً من إنشاء نسخة مكرّرة.

  • مفاتيح تجريبية ومفاتيح حيّة

    مفاتيح البيئة التجريبية تبدأ بـ bh_test_، والمفاتيح الحية بـ bh_live_. المفتاح هو عنوان المستأجر؛ والمفتاح المجهول يتلقى استجابة 401 موحّدة.

  • إرساء بكتابة واحدة (اختياري)

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

أين يناسب

أي عملية تحجز سعة مؤقتاً ثم تؤكدها: غرف وليالٍ، طاولات وجلسات، مواعيد، تأجير، معدّات. يسجّل BookingHash القرار واليوميات؛ ومنتجك يملك التجربة.

ما لا ندّعيه

  • لا تُنشر إحصاءات عن التوفر أو زمن الاستجابة أو الحجم.
  • لا يُدّعى الحصول على أي شهادة أو تدقيق.
  • هي سلسلة تجزئة خطية في قاعدة بيانات، لا شبكة عامة ولا بنية شجرية.
  • التجزئات تغطي حمولة الحدث القياسية؛ فهي سجل كاشف للعبث، لا تشفير.

ابدأ ببيئة تجريبية. وانتقل إلى الإنتاج عندما تكون جاهزاً.

سجّل في البوابة، وأنشئ مؤسسة، وافتح بيئة تجريبية. وعندما تحتاج إلى الإنتاج، انضم إلى قائمة الانتظار.

البيئات التجريبية تعمل على بيئة التهيئة (staging) ببيانات اختبار. الوصول إلى الإنتاج يتم عبر قائمة الانتظار.