
رزرواسیون
در این سند، انواع مدلهای متداول رزرو در سیستمهای آنلاین معرفی شدهاند. هر مدل بر اساس نوع کسبوکار و منطق تخصیص منابع، ساختار داده و قوانین متفاوتی دارد.
انواع مدلهای رزرواسیون
در این سند، انواع مدلهای متداول رزرو در سیستمهای آنلاین معرفی شدهاند. هر مدل بر اساس نوع کسبوکار و منطق تخصیص منابع، ساختار داده و قوانین متفاوتی دارد.
۱. مبتنی بر بازه زمانی کوتاه - Time-Slot Based
رزرو بر اساس ساعت یا دقیقه مشخص انجام میشود و جلوگیری از تداخل زمانی (overlap) اهمیت بالایی دارد.
کاربردها:
کلینیک
سالن زیبایی
مشاوره آنلاین
مربی خصوصی
استودیو ضبط
زمین ورزشی
ویژگیها:
start_datetimeend_datetimeمعمولاً ظرفیت = ۱
بررسی تداخل زمانی (Overlap Check)
مناسب برای منابعی که در یک زمان فقط به یک نفر اختصاص داده میشوند.
ساختار دادهها:
یک جدول برای پیکربندی خدمات یک پروژه
services
تعریف خدمات قابل رزرو
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه یکتا |
appsId | uuid / bigint | پروژه |
businessId | uuid / bigint | کسبوکار |
name | json / varchar | نام خدمت - چند زبانه |
description | json / text | توضیح خدمت - چند زبانه |
duration | int | مدت زمان بر حسب دقیقه |
slotInterval | int | فاصله تولید اسلاتها، مثلاً 15 دقیقه |
capacity | int | ظرفیت همزمان |
paddingBefore | int | بافر قبل از رزرو به دقیقه |
paddingAfter | int | بافر بعد از رزرو به دقیقه |
minAdvanceBookingMinutes | int | حداقل فاصله تا رزرو |
maxAdvanceBookingDays | int | حداکثر زمان رزرو در آینده |
requiresApproval | boolean | نیاز به تایید |
allowCancellation | boolean | امکان کنسلی |
allowReschedule | boolean | امکان جابجایی |
cancellationDeadlineMinutes | int | مهلت کنسلی |
isActive | varchar | true / flase |
visibility | varchar | public / private |
userId | uuid / bigint | ایجادکننده |
meta | jsonb | تنظیمات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
serviceStaff
چون هر خدمت ممکن است توسط چند پرسنل ارائه شود
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
serviceId | uuid / bigint | خدمت |
staffId | uuid / bigint | پرسنل p-id |
isActive | varchar | false / true |
userId | uuid / bigint | ایجادکننده |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
timeSlots
تعریف بازههای کاری/دردسترس بودن
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
serviceId | uuid / bigint nullable | اگر فقط برای یک خدمت باشد |
staffId | uuid / bigint nullable | اگر فقط برای یک پرسنل باشد |
dayOfWeek | smallint nullable | 0 تا 6، اگر تکرارشونده هفتگی باشد |
slotDate | date nullable | اگر فقط برای یک تاریخ خاص باشد |
startTime | time | زمان شروع |
endTime | time | زمان پایان |
isRecurring | boolean | آیا تکرارشونده است |
recurrenceEndDate | date nullable | پایان تکرار |
isActive | varchar | false / true |
userId | uuid / bigint | ایجادکننده |
meta | jsonb | توضیحات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
timeSlotExceptions
برای تعطیلی، مرخصی، یا استثناها
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
serviceId | uuid / bigint nullable | خدمت |
staffId | uuid / bigint nullable | پرسنل |
exceptionDate | date | تاریخ خاص |
startTime | time nullable | اگر بخشی از روز بسته باشد |
endTime | time nullable | پایان |
type | varchar | unavailable / extra_available |
reason | varchar | دلیل |
status | varchar | active / inactive |
userId | uuid / bigint | ایجادکننده |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
servicePrices
قیمت خدمات
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
serviceId | uuid / bigint | خدمت |
currency | varchar(10) | ارز |
amount | decimal(18,2) | مبلغ |
pricingType | varchar | fixed / per_person / per_hour |
validFrom | datetime nullable | شروع اعتبار |
validTo | datetime nullable | پایان اعتبار |
isActive | varchar | false / true |
userId | uuid / bigint | ایجادکننده |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
bookings
رزرو اصلی
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه رزرو |
appsId | uuid / bigint | پروژه |
type | Time-Slot | |
businessId | uuid / bigint | کسبوکار |
serviceId | uuid / bigint | خدمت |
staffId | uuid / bigint nullable | پرسنل |
userId | uuid / bigint | کاربر رزروکننده |
startDate | datetime | شروع رزرو |
endDate | datetime | پایان رزرو |
status | varchar | pending / confirmed / cancelled / completed / no_show / rejected |
paymentStatus | varchar | unpaid / paid / partial / refunded |
totalPrice | decimal(18,2) | مبلغ کل |
discountAmount | decimal(18,2) | تخفیف |
taxAmount | decimal(18,2) | مالیات |
finalPrice | decimal(18,2) | مبلغ نهایی |
currency | varchar(10) | ارز |
notes | text | توضیحات |
cancelReason | varchar | دلیل لغو |
cancelledBy | uuid / bigint nullable | چه کسی لغو کرده |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
۲. مبتنی بر بازه تاریخی - Date-Range-Based
رزرو بر اساس چند روز متوالی انجام میشود.
کاربردها:
هتل
ویلا
اجاره خودرو
اجاره تجهیزات
کمپینگ
ویژگیها:
check_incheck_outقیمتگذاری به صورت
per_nightیاper_dayبررسی همپوشانی تاریخها (Date Overlap)
تمرکز بر بازههای روزانه، نه ساعتی
ساختار دادهها:
resources
منبع قابل رزرو
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
appsId | uuid / bigint | پروژه |
type | varchar | room / villa / car / equipment / tent |
name | json / varchar | نام منبع |
description | json / text | توضیح |
code | varchar | کد داخلی |
capacity | int | ظرفیت |
status | varchar | active / inactive / maintenance |
userId | uuid / bigint | ایجادکننده |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
bookings
رزرو بازهای
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
appsId | uuid / bigint | پروژه |
businessId | uuid / bigint | کسبوکار |
resourceId | uuid / bigint | منبع |
userId | uuid / bigint | مشتری |
checkInDate | date | تاریخ ورود |
checkOutDate | date | تاریخ خروج |
nights | int | تعداد شب |
days | int | تعداد روز |
guestsCount | int | تعداد مهمان |
adultsCount | int | بزرگسال |
childrenCount | int | کودک |
status | varchar | pending / confirmed / checked_in / checked_out / cancelled |
paymentStatus | varchar | unpaid / paid / partial / refunded |
pricingMode | varchar | per_night / per_day / fixed |
subtotal | decimal(18,2) | مبلغ پایه |
discountAmount | decimal(18,2) | تخفیف |
taxAmount | decimal(18,2) | مالیات |
finalPrice | decimal(18,2) | مبلغ نهایی |
currency | varchar(10) | ارز |
notes | text | توضیحات |
version | int | کنترل همزمانی |
meta | jsonb | اطلاعات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
resource_availability_calendar
تقویم موجودی روزانه
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
resourceId | uuid / bigint | منبع |
resourceUnitId | uuid / bigint nullable | یونیت |
date | date | تاریخ |
totalInventory | int | موجودی کل |
reservedInventory | int | رزرو شده |
availableInventory | int | موجودی قابل رزرو |
price | decimal(18,2) nullable | قیمت همان روز |
currency | varchar(10) nullable | ارز |
minStay | int nullable | حداقل اقامت |
maxStay | int nullable | حداکثر اقامت |
checkInAllowed | boolean | آیا ورود مجاز است |
checkOutAllowed | boolean | آیا خروج مجاز است |
status | varchar | open / closed |
meta | jsonb | اطلاعات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
resource_prices
قیمتگذاری بازهای
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
resourceId | uuid / bigint | منبع |
resourceUnitId | uuid / bigint nullable | یونیت |
pricingMode | varchar | per_night / per_day / fixed |
amount | decimal(18,2) | مبلغ |
currency | varchar(10) | ارز |
validFrom | date | شروع اعتبار |
validTo | date | پایان اعتبار |
dayOfWeek | smallint nullable | قیمت ویژه روز خاص |
seasonName | varchar nullable | نام فصل |
status | varchar | active / inactive |
createdAt | datetime | تاریخ ایجاد |
۳. ظرفیتمحور - Capacity-Based
تمرکز بر تعداد افراد ثبتنامکننده است، نه تخصیص یک منبع خاص.
کاربردها:
کلاس آموزشی
تور گردشگری
کارگاه
بوتکمپ
بلیت کنسرت
ویژگیها:
total_capacityreserved_countجلوگیری از ثبتنام بیش از ظرفیت
عدم نیاز به مدیریت پیچیده تداخل زمانی (در صورت تکسانس بودن)
ساختار دادهها:
events
تعریف رویداد/کلاس
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
appsId | uuid / bigint | پروژه |
businessId | uuid / bigint | کسبوکار |
name | json / varchar | عنوان |
description | json / text | توضیح |
type | varchar | class / workshop / tour / event |
startDatetime | datetime | شروع |
endDatetime | datetime | پایان |
registrationStart | datetime nullable | شروع ثبتنام |
registrationEnd | datetime nullable | پایان ثبتنام |
capacity | int | ظرفیت کل |
minCapacity | int nullable | حداقل ظرفیت |
waitlistEnabled | boolean | لیست انتظار |
requiresApproval | boolean | نیاز به تایید |
status | varchar | draft / published / full / cancelled / completed |
locationType | varchar | offline / online / hybrid |
location | jsonb | آدرس |
organizerId | uuid / bigint nullable | برگزارکننده |
meta | jsonb | اطلاعات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
event_registrations
ثبتنام کاربران
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
eventId | uuid / bigint | رویداد |
userId | uuid / bigint nullable | کاربر |
customerName | varchar | نام |
customerPhone | varchar | موبایل |
customerEmail | varchar | ایمیل |
quantity | int | تعداد ثبتنام |
status | varchar | pending / confirmed / waitlisted / cancelled / attended / no_show |
approvalStatus | varchar | pending / approved / rejected |
paymentStatus | varchar | unpaid / paid / partial / refunded |
unitPrice | decimal(18,2) | قیمت واحد |
subtotal | decimal(18,2) | جمع |
discountAmount | decimal(18,2) | تخفیف |
taxAmount | decimal(18,2) | مالیات |
finalPrice | decimal(18,2) | نهایی |
currency | varchar(10) | ارز |
notes | text | توضیحات |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
event_waitlist
لیست انتظار
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
eventId | uuid / bigint | رویداد |
userId | uuid / bigint nullable | کاربر |
customerName | varchar | نام |
customerPhone | varchar | موبایل |
customerEmail | varchar | ایمیل |
quantity | int | تعداد |
priority | int | اولویت |
status | varchar | waiting / converted / expired / cancelled |
createdAt | datetime | تاریخ ایجاد |
event_prices
قیمت رویداد
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
eventId | uuid / bigint | رویداد |
ticketType | varchar | normal / vip / early_bird / student |
amount | decimal(18,2) | مبلغ |
currency | varchar(10) | ارز |
capacity | int nullable | ظرفیت این نوع بلیت |
validFrom | datetime nullable | شروع اعتبار |
validTo | datetime nullable | پایان اعتبار |
status | varchar | active / inactive |
createdAt | datetime | تاریخ ایجاد |
۴. موجودیمحور - Quantity-Based
رزرو بر اساس تعداد آیتمهای قابل اجاره یا فروش انجام میشود.
کاربردها:
اجاره دوربین
اجاره دوچرخه
تجهیزات نور
فروش بلیت با SKU
ویژگیها:
total_quantityکاهش موجودی در یک بازه زمانی مشخص
امکان رزرو چند واحد در یک سفارش
نیاز به مدیریت موجودی در سطح زمان
ساختار دادهها:
inventory_items
آیتم قابل رزرو یا اجاره
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
appsId | uuid / bigint | پروژه |
sku | varchar | کد کالا |
name | json / varchar | نام |
description | text / json | توضیح |
itemType | varchar | rental / sellable / ticketable |
totalQuantity | int | موجودی کل |
minOrderQuantity | int | حداقل سفارش |
maxOrderQuantity | int | حداکثر سفارش |
status | varchar | active / inactive |
trackInventoryByTime | boolean | آیا موجودی وابسته به زمان است |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
inventory_reservations
رزرو آیتم
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
itemId | uuid / bigint | آیتم |
userId | uuid / bigint nullable | کاربر |
customerName | varchar | نام |
customerPhone | varchar | موبایل |
customerEmail | varchar | ایمیل |
quantity | int | تعداد رزرو |
startDatetime | datetime nullable | شروع بازه |
endDatetime | datetime nullable | پایان بازه |
status | varchar | pending / confirmed / cancelled / returned / completed |
paymentStatus | varchar | unpaid / paid / partial / refunded |
unitPrice | decimal(18,2) | قیمت واحد |
subtotal | decimal(18,2) | جمع |
discountAmount | decimal(18,2) | تخفیف |
taxAmount | decimal(18,2) | مالیات |
finalPrice | decimal(18,2) | مبلغ نهایی |
currency | varchar(10) | ارز |
notes | text | توضیحات |
version | int | کنترل همزمانی |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
inventory_availability
موجودی در بازه زمانی
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
itemId | uuid / bigint | آیتم |
date | date | تاریخ |
totalQuantity | int | کل موجودی |
reservedQuantity | int | رزرو شده |
availableQuantity | int | مانده |
status | varchar | open / closed |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
inventory_prices
قیمت آیتم
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
itemId | uuid / bigint | آیتم |
pricingMode | varchar | fixed / per_hour / per_day / per_unit |
amount | decimal(18,2) | مبلغ |
currency | varchar(10) | ارز |
validFrom | datetime nullable | شروع |
validTo | datetime nullable | پایان |
status | varchar | active / inactive |
createdAt | datetime | تاریخ ایجاد |
۵. جایگاهمحور - Seat-Based
مدل پیشرفتهتر از Capacity-Based که در آن هر صندلی یا جایگاه یک واحد مستقل محسوب میشود.
کاربردها:
سینما
هواپیما
اتوبوس
سالن تئاتر
ویژگیها:
هر صندلی یک یونیت مستقل
انتخاب دستی صندلی توسط کاربر
جلوگیری از رزرو همزمان (Seat Locking / Concurrency Control)
مدیریت وضعیت هر صندلی (Available / Reserved / Sold)
ساختار دادهها:
venues
سالن یا محل برگزاری
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
name | varchar | نام سالن |
description | text | توضیح |
address | text | آدرس |
status | varchar | active / inactive |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
venue_sections
بخشهای سالن
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
venueId | uuid / bigint | سالن |
name | varchar | نام بخش |
code | varchar | کد |
level | varchar nullable | طبقه |
sortOrder | int | ترتیب |
status | varchar | active / inactive |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
seats
صندلیها
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
venueId | uuid / bigint | سالن |
sectionId | uuid / bigint nullable | سکشن |
rowLabel | varchar | ردیف |
seatNumber | varchar | شماره |
seatCode | varchar | کد یکتا |
seatType | varchar | normal / vip / wheelchair / couple |
xPosition | decimal nullable | موقعیت نقشه |
yPosition | decimal nullable | موقعیت نقشه |
status | varchar | active / inactive / broken |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
seat_events
اجرای خاص یا سانس مشخص
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
venueId | uuid / bigint | سالن |
title | varchar | نام اجرا |
description | text | توضیح |
startDatetime | datetime | شروع سانس |
endDatetime | datetime | پایان سانس |
salesStart | datetime nullable | شروع فروش |
salesEnd | datetime nullable | پایان فروش |
status | varchar | draft / on_sale / sold_out / cancelled / completed |
meta | jsonb | اطلاعات اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
seat_event_inventory
وضعیت هر صندلی برای هر اجرا
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
eventId | uuid / bigint | اجرا |
seatId | uuid / bigint | صندلی |
status | varchar | available / locked / reserved / sold / blocked |
price | decimal(18,2) | قیمت |
currency | varchar(10) | ارز |
lockExpiresAt | datetime nullable | انقضای قفل |
lockedBySession | varchar nullable | شناسه سشن |
bookingId | uuid / bigint nullable | رزرو مرتبط |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
seat_bookings
رزرو اصلی صندلی
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
eventId | uuid / bigint | اجرا |
userId | uuid / bigint nullable | کاربر |
customerName | varchar | نام |
customerPhone | varchar | موبایل |
customerEmail | varchar | ایمیل |
quantity | int | تعداد صندلی |
status | varchar | pending / confirmed / cancelled / expired |
paymentStatus | varchar | unpaid / paid / refunded |
subtotal | decimal(18,2) | مبلغ |
discountAmount | decimal(18,2) | تخفیف |
taxAmount | decimal(18,2) | مالیات |
finalPrice | decimal(18,2) | مبلغ نهایی |
currency | varchar(10) | ارز |
expiresAt | datetime nullable | پایان مهلت پرداخت |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
seat_booking_items
آیتمهای رزرو صندلی
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
bookingId | uuid / bigint | رزرو |
eventId | uuid / bigint | اجرا |
seatId | uuid / bigint | صندلی |
unitPrice | decimal(18,2) | قیمت صندلی |
currency | varchar(10) | ارز |
status | varchar | reserved / sold / cancelled |
createdAt | datetime | تاریخ ایجاد |
۶. رزرو تکرارشونده - Recurring-Booking
رزروهایی که به صورت دورهای و سریالی ایجاد میشوند.
کاربردها:
کلاس هفتگی
اجاره بلندمدت
قرارداد ماهانه
ویژگیها:
پشتیبانی از RRULE (مشابه Google Calendar)
تولید خودکار booking instanceها
امکان مدیریت تکجلسه (لغو یا ویرایش یک occurrence)
اتصال به یک الگوی مادر (Parent Booking)
ساختار دادهها:
booking_series
الگوی مادر رزرو
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
appsId | uuid / bigint | پروژه |
bookingType | varchar | time_slot / date_range / capacity |
parentEntityId | uuid / bigint nullable | شناسه خدمت/رویداد/منبع |
userId | uuid / bigint | کاربر |
customerName | varchar | نام |
customerPhone | varchar | موبایل |
customerEmail | varchar | ایمیل |
startDate | date | شروع سری |
endDate | date nullable | پایان سری |
startTime | time nullable | ساعت شروع |
endTime | time nullable | ساعت پایان |
timezone | varchar | منطقه زمانی |
rrule | text | قانون تکرار |
occurrencesCount | int nullable | تعداد رخدادها |
status | varchar | active / paused / cancelled / completed |
notes | text | توضیحات |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
recurring_booking_instances
رخدادهای تولیدشده
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
seriesId | uuid / bigint | سری مادر |
occurrenceDate | date | تاریخ رخداد |
startDatetime | datetime | شروع |
endDatetime | datetime | پایان |
entityType | varchar | booking / event_registration / reservation |
entityId | uuid / bigint nullable | رکورد اصلی |
status | varchar | scheduled / completed / cancelled / skipped / modified |
isException | boolean | آیا از الگو منحرف شده |
originalStartDatetime | datetime nullable | زمان اصلی قبل از ویرایش |
originalEndDatetime | datetime nullable | زمان اصلی |
notes | text | توضیحات |
meta | jsonb | داده اضافی |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
recurring_exceptions
برای لغو یا تغییر یک occurrence خاص
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
seriesId | uuid / bigint | سری |
occurrenceDate | date | تاریخ رخداد |
exceptionType | varchar | cancelled / rescheduled / modified |
newStartDatetime | datetime nullable | زمان جدید |
newEndDatetime | datetime nullable | پایان جدید |
reason | varchar nullable | دلیل |
createdBy | uuid / bigint | ایجادکننده |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
booking status
pending
confirmed
approved
rejected
cancelled
completed
expired
no_showpayment status
unpaid
pending
paid
partial
failed
refunded
partially_refundedavailability status
open
closed
blocked
maintenanceجداول مشترک مالی و عمومی
این جداول بهتر است برای همه مدلها مشترک باشند.
payments
ثبت پرداخت
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
payableType | varchar | booking / registration / reservation / seat_booking |
payableId | uuid / bigint | شناسه رکورد مرتبط |
userId | uuid / bigint nullable | کاربر |
gateway | varchar | درگاه |
transactionId | varchar | شماره تراکنش |
amount | decimal(18,2) | مبلغ |
currency | varchar(10) | ارز |
status | varchar | pending / paid / failed / refunded |
paidAt | datetime nullable | زمان پرداخت |
meta | jsonb | پاسخ درگاه |
createdAt | datetime | تاریخ ایجاد |
updatedAt | datetime | تاریخ بروزرسانی |
refunds
استرداد وجه
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
paymentId | uuid / bigint | پرداخت |
amount | decimal(18,2) | مبلغ برگشتی |
reason | varchar | دلیل |
status | varchar | pending / completed / failed |
refundedAt | datetime nullable | زمان استرداد |
meta | jsonb | اطلاعات تکمیلی |
createdAt | datetime | تاریخ ایجاد |
coupons
کد تخفیف
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
code | varchar | کد تخفیف |
discountType | varchar | fixed / percentage |
discountValue | decimal(18,2) | مقدار تخفیف |
currency | varchar(10) nullable | ارز در تخفیف ثابت |
maxDiscountAmount | decimal(18,2) nullable | سقف تخفیف |
minOrderAmount | decimal(18,2) nullable | حداقل خرید |
usageLimit | int nullable | سقف استفاده |
usedCount | int | تعداد استفاده شده |
validFrom | datetime | شروع اعتبار |
validTo | datetime | پایان اعتبار |
status | varchar | active / inactive / expired |
meta | jsonb | اطلاعات اضافی |
createdAt | datetime | تاریخ ایجاد |
auditLogs
ثبت تغییرات مهم
ستون | نوع | توضیح |
|---|---|---|
id | uuid / bigint | شناسه |
businessId | uuid / bigint | کسبوکار |
actorUserId | uuid / bigint nullable | انجامدهنده |
entityType | varchar | نوع رکورد |
entityId | uuid / bigint | شناسه رکورد |
action | varchar | create / update / cancel / approve / refund |
oldData | jsonb | مقدار قبلی |
newData | jsonb | مقدار جدید |
ipAddress | varchar | آیپی |
userAgent | text | مرورگر |
createdAt | datetime | تاریخ ایجاد |
لطفا وارد شوید تا نظر دهید
افزودن نظر
دیدگاه