66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
from enum import Enum
|
|
|
|
|
|
class ProductAdminRole(str, Enum):
|
|
"""Level 1 — VerifyPack internal staff."""
|
|
super_admin = "super_admin"
|
|
admin = "admin"
|
|
finance = "finance"
|
|
support = "support"
|
|
|
|
|
|
class ClientRole(str, Enum):
|
|
"""Level 2 — roles inside a client organization."""
|
|
admin = "admin"
|
|
finance = "finance"
|
|
user = "user"
|
|
|
|
|
|
class SubscriptionStatus(str, Enum):
|
|
active = "active"
|
|
grace = "grace" # 30 days after expiry: read-only, verify still works
|
|
archived = "archived" # verify still works, no new products/batches/QRs
|
|
deleted = "deleted" # no access, data retained
|
|
|
|
|
|
class ProductStatus(str, Enum):
|
|
active = "active"
|
|
inactive = "inactive"
|
|
draft = "draft"
|
|
archived = "archived"
|
|
|
|
|
|
class QRType(str, Enum):
|
|
batch = "batch" # Option 1 — one QR for the whole batch
|
|
per_pack = "per_pack" # Option 2 — unique serialized QR per pack
|
|
|
|
|
|
class QRStatus(str, Enum):
|
|
active = "active"
|
|
inactive = "inactive"
|
|
expired = "expired"
|
|
draft = "draft"
|
|
disabled = "disabled"
|
|
|
|
|
|
class ComplianceStatus(str, Enum):
|
|
complete = "complete"
|
|
pending = "pending"
|
|
expired = "expired"
|
|
expiring = "expiring" # within 30 days
|
|
|
|
|
|
class VerificationState(str, Enum):
|
|
genuine = "genuine"
|
|
unverified = "unverified"
|
|
not_found = "not_found"
|
|
recalled = "recalled"
|
|
|
|
|
|
class PaymentStatus(str, Enum):
|
|
paid = "paid"
|
|
pending = "pending"
|
|
failed = "failed"
|
|
refunded = "refunded"
|
|
overdue = "overdue"
|