Project

General

Profile

VOC support #2880

Updated by harry harry 2 months ago

 
 Link design: https://www.figma.com/design/rKpXzV8hRJIgtVK4QtJqi8/B2C?node-id=5-2&p=f&t=WWaYJCpFurEZqYkn-0 

 ==================== 
 TỔNG QUAN CHỨC NĂNG 
 ==================== 
 Hệ thống gồm 2 màn hình: 
 1. Màn hình quay số 
 2. Màn hình hiển thị kết quả (trang trúng thưởng có hiệu ứng pháo hoa) 

 Luồng người dùng: 
 Quét QR → Trang quay số → Quay & xác định giải thưởng → Lưu kết quả vào DB local → Hiển thị trang kết quả 

 ==================== 
 QUY TẮC CHUNG 
 ==================== 
 - Kết quả quay số PHẢI được quyết định và lưu ở backend (database local). 
 - Mỗi thiết bị chỉ được quay MỘT LẦN DUY NHẤT. 
 - Nếu thiết bị đã quay → chặn không cho quay nữa. 
 - Nếu giải thưởng trong ngày đã hết → hiển thị thông báo “Hôm nay đã hết giải thưởng”. 
 - Khi quay trúng → chuyển sang trang thành công, hiển thị giải thưởng + hiệu ứng pháo hoa. 

 ==================== 
 QUY ĐỊNH THỜI GIAN 
 ==================== 
 - Thời gian diễn ra sự kiện: 22/01/2026 → 25/01/2026 
 - Thời gian quay mỗi ngày: 12:00 → 17:00 
 - Timezone mặc định: Asia/Bangkok (giờ Thái Lan) 
 - Cấu trúc phải dễ mở rộng để hỗ trợ thêm timezone khác trong tương lai (ví dụ: Philippines) 

 ==================== 
 CẤU TRÚC GIẢI THƯỞNG 
 ==================== 
 | Giải thưởng     | Mã        | Số lượng | 
 |---------------|---------|----------| 
 | Giải Nhất       | GRAND     | 5          | 
 | Giải Nhì        | SECOND    | 1000       | 
 | Giải Ba         | THIRD     | 2000       | 

 - Tổng số lượng giải thưởng phải được chia theo cấu trúc : 
  giải 2: 200/200/300/300, giải: 3: 400/400/600/600 . đều cho 4 ngày. 
 - Ví dụ: Giải Nhất = 5 → chia hợp lý (1–2 giải mỗi ngày). 
 - Số lượng giải thưởng còn lại theo NGÀY phải được lưu trong database. 

 ==================== 
 LOGIC QUAY SỐ (CỐT LÕI) 
 ==================== 
 Khi người dùng bấm “QUAY”: 

 1. Kiểm tra thời gian hợp lệ (ngày + giờ + timezone) 
 2. Xác định thiết bị người dùng (device fingerprint hoặc device ID đã hash) 
 3. Kiểm tra thiết bị đã quay chưa 
    → Nếu rồi thì từ chối 
 4. Kiểm tra số lượng giải thưởng trong ngày 
    → Nếu tất cả giải đều = 0 thì từ chối 
 5. Random giải thưởng: 
    - Chỉ random trong các giải còn số lượng trong ngày 
    - Tỷ lệ trúng tỉ lệ thuận với số lượng giải còn lại 
 6. Khi đã xác định giải: 
    - Trừ số lượng giải trong ngày 
    - Lưu kết quả quay (deviceId, prizeCode, timestamp) 
 7. Trả kết quả thành công kèm thông tin giải thưởng

Back

Add picture from clipboard (Maximum size: 50 MB)