Pruvaوثائق

الاستحقاقات

ما إذا كانت مساحة العمل قد دفعت مقابل وحدة، وماذا تسمح به كل حالة.

يسجّل الاستحقاق ما إذا كانت لدى مساحة العمل وحدة. هناك استحقاق واحد لكل وحدة. يسجّل كل منها الباقة التي اشتُري عليها (Essentials أو Operations أو Professional أو Complete أو Enterprise؛ وتسجّل حزمة القطاع الباقة التي يحتاجها عدد وحدات Pro فيها؛ وSafety Vision بند مستقل، safety-vision، على وحدة الكاميرات؛ وتحتفظ الطلبات السابقة لـ 20 أكتوبر 2026 بـ Lite أو Base أو Standard أو Advanced)، وSKU، وحالة، ومفتاح enabled يتحكم فيه المالك.

الحالات

الحالةأعلى مستوى يحصل عليه أي شخصمتى
lockednoneلم تُشترَ قط، أو انقضت بعد اليوم 30. تبدأ الاستحقاقات الجديدة هنا.
activeكما مُنحمدفوعة وسارية.
graceكما مُنحفشل الدفع. وصول كامل لمدة 7 أيام أثناء إصلاحه.
read_onlyviewمن اليوم 8 إلى اليوم 30 بعد دفعة فاشلة. تستطيع القراءة والتصدير، لا التغيير أو الإرسال.

بعد القفل، تُحفظ البيانات لمدة 90 يومًا.

إذا أطفأ المالك وحدة (enabled = false)، يحصل الجميع على none لها، أيًا كانت الحالة. لا يمكن تشغيل وحدة locked.

من يستطيع تغيير ماذا

  • المتجر وحده يستطيع تغيير الباقة أو SKU أو الحالة أو نهاية الفترة. في هذا الإصدار ذلك إتمام الشراء التجريبي على الموقع، الذي يرسل رسالة موقَّعة إلى التطبيق.
  • لا يستطيع المالك إلا قلب enabled، وفقط عندما لا تكون الوحدة مقفلة.
  • لا يستطيع أي مستخدم، والمالك منهم، فتح وحدة بتحرير قاعدة البيانات. الأعمدة غير قابلة للكتابة للمستخدمين الذين سجّلوا الدخول.

رسالة المتجر

يبني إتمام الشراء التجريبي في الموقع جسمًا كهذا:

{ "orderId": "PV-…", "workspaceSlug": "aurora-marine", "sku": "tanker", "modules": ["noon", "emissions", "documents", "pms", "insurance"], "vessels": 4, "state": "active", "annualUsd": 57800, "oneOffUsd": 19944, "firstChargeUsd": 77744, "consent": { … }, "term": { … }, "trial": { … }, "chargeTodayUsd": 0, "payment": { "provider": "demo", "reference": "pm_demo_visa_4242", … } }

يوقّع timestamp.body بـ HMAC-SHA256 باستخدام سر مشترك ويرسل الطابع الزمني والتوقيع في ترويستي x-pv-timestamp وx-pv-signature إلى /api/entitlements على التطبيق. يرفض التطبيق التوقيع الخاطئ وأي شيء أقدم من 5 دقائق.

السر هو PRUVA_ENTITLEMENTS_SECRET. في وضع العرض خارج الإنتاج تُستخدم قيمة محلية ثابتة عندما لا يكون مضبوطًا. يكتب وضع قاعدة البيانات المحلية بدور الخدمة، لذا يتطلب التطبيق سرًا حقيقيًا هناك: اضبط PRUVA_ENTITLEMENTS_SECRET نفسه للتطبيق والموقع. في الإنتاج يرفض الموقع التوقيع من دونه.

في هذه الصفحة