الاستحقاقات
ما إذا كانت مساحة العمل قد دفعت مقابل وحدة، وماذا تسمح به كل حالة.
يسجّل الاستحقاق ما إذا كانت لدى مساحة العمل وحدة. هناك استحقاق واحد لكل وحدة. يسجّل كل منها الباقة التي اشتُري عليها (Essentials أو Operations أو Professional أو Complete أو Enterprise؛ وتسجّل حزمة القطاع الباقة التي يحتاجها عدد وحدات Pro فيها؛ وSafety Vision بند مستقل، safety-vision، على وحدة الكاميرات؛ وتحتفظ الطلبات السابقة لـ 20 أكتوبر 2026 بـ Lite أو Base أو Standard أو Advanced)، وSKU، وحالة، ومفتاح enabled يتحكم فيه المالك.
الحالات
| الحالة | أعلى مستوى يحصل عليه أي شخص | متى |
|---|---|---|
locked | none | لم تُشترَ قط، أو انقضت بعد اليوم 30. تبدأ الاستحقاقات الجديدة هنا. |
active | كما مُنح | مدفوعة وسارية. |
grace | كما مُنح | فشل الدفع. وصول كامل لمدة 7 أيام أثناء إصلاحه. |
read_only | view | من اليوم 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 نفسه للتطبيق والموقع. في الإنتاج يرفض الموقع التوقيع من دونه.
مستويات الوصول
none وview وedit وpublish، تُضبط لكل شخص ولكل وحدة. السفينة والبر ليسا مفصولين بالسفينة في هذا الإصدار.
الفوترة والتجديد
التجربة لشهر واحد بعد دفعة مقدمة بنسبة 10%، والعقد لـ 3 سنوات مع الخروج في السنة 1، والفوترة السنوية، والتجديد، وإلغاء التجربة، وإلغاء التجديد، وعدم وجود استرداد للسنة التي بدأت بالفعل، وما يخزّنه كل طلب.