Skip to content

Allocation Schema

Schema allocation chứa 4 model quản lý việc phân bổ không gian và tài nguyên cho các địa điểm, sự kiện, và sắp xếp chỗ ngồi. Nó hỗ trợ cấu trúc phân cấp từ kế hoạch xuống đến các đơn vị có thể phân bổ riêng lẻ.

Nguồn: packages/core/src/models/schemas/allocation/

Tổng quan Model

ModelTên BảngMô tả
AllocationPlanallocation.AllocationPlanKế hoạch cấp cao nhất thuộc sở hữu của một Organizer
AllocationLayoutallocation.AllocationLayoutCấu hình bố cục trong một kế hoạch
AllocationZoneallocation.AllocationZoneNhóm logic các đơn vị trong một bố cục
AllocationUnitallocation.AllocationUnitĐơn vị có thể phân bổ riêng lẻ (ghế, bàn, v.v.)

Phân cấp

AllocationPlan

Container cấp cao nhất thuộc sở hữu của một Organizer. Đại diện cho cấu hình địa điểm hoặc sự kiện.

CộtKiểuRàng buộcMô tả
statustextNOT NULL, DEFAULT UNKNOWNTrạng thái kế hoạch
namejsonb (i18n)NOT NULLTên đa ngôn ngữ
stylejsonbCấu hình kiểu dáng trực quan
organizer_idtextNOT NULLFK đến Organizer
+ các cột chungid, createdAt, modifiedAt, deletedAt, metadata

AllocationLayout

Cấu hình bố cục cụ thể trong một kế hoạch. Liên kết đến kế hoạch thông qua planId.

CộtKiểuRàng buộcMô tả
statustextNOT NULL, DEFAULT UNKNOWNTrạng thái bố cục
namejsonb (i18n)NOT NULLTên đa ngôn ngữ
stylejsonbKiểu dáng bố cục (nền, kích thước)
plan_idtextNOT NULLFK đến AllocationPlan
+ các cột chung

AllocationZone

Nhóm logic các đơn vị trong một bố cục. Đại diện cho các phần, khu vực, hoặc danh mục.

CộtKiểuRàng buộcMô tả
statustextNOT NULL, DEFAULT UNKNOWNTrạng thái khu vực
namejsonb (i18n)NOT NULLTên đa ngôn ngữ
stylejsonbKiểu dáng khu vực (màu sắc, viền)
layout_idtextNOT NULLFK đến AllocationLayout
+ các cột chung

AllocationUnit

Đơn vị có thể phân bổ riêng lẻ (ghế, bàn, chỗ đậu xe, v.v.) với hỗ trợ vị trí linh hoạt.

CộtKiểuRàng buộcMô tả
statustextNOT NULL, DEFAULT UNKNOWNTrạng thái đơn vị
namejsonb (i18n)NOT NULLTên đa ngôn ngữ (ví dụ: "Ghế A1")
placementjsonbNOT NULLDữ liệu vị trí (xem Loại Vị trí bên dưới)
stylejsonbKiểu dáng đơn vị (icon, màu sắc, kích thước)
zone_idtextNOT NULLFK đến AllocationZone
+ các cột chung

Loại Vị trí

AllocationUnit hỗ trợ nhiều chiến lược vị trí thông qua union phân biệt:

typescript
type TAllocationUnitPlacement =
  | { type: 'grid'; value: TPlacementGrid }
  | { type: 'absolute'; value: TPlacementAbsolute }
  | { type: 'identifier'; value: TPlacementIdentifier }
  | { type: 'geolocation'; value: TPlacementGeolocation }
  | { type: 'relative'; value: TPlacementRelative };

Grid

Cho chỗ ngồi truyền thống theo hàng/cột:

json
{ "type": "grid", "value": { "row": "A", "column": 1 } }

Absolute

Cho định vị chính xác XY trên canvas:

json
{ "type": "absolute", "value": { "x": 150, "y": 200, "z": 1 } }

Identifier

Vị trí được đặt tên đơn giản:

json
{ "type": "identifier", "value": "VIP-BOX-1" }

Geolocation

Cho phân bổ ngoài trời hoặc dựa trên GPS:

json
{ "type": "geolocation", "value": { "latitude": 10.762622, "longitude": 106.660172, "accuracy": 5 } }

Relative

Định vị tương đối so với một đơn vị khác:

json
{ "type": "relative", "value": { "relativeTo": "unit-123", "offsetX": 50, "offsetY": 0 } }

Quan hệ Thực thể

Tích hợp với Sản phẩm

ProductVariant có thể liên kết đến các thực thể allocation cho sản phẩm theo chỗ ngồi cụ thể:

Cột ProductVariantFK Đích
allocation_plan_idAllocationPlan
allocation_layout_idAllocationLayout
allocation_zone_idAllocationZone
allocation_unit_idAllocationUnit

Điều này cho phép sản phẩm vé được gắn với chỗ ngồi, khu vực, hoặc bố cục cụ thể.

Tài liệu Liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.