Yêu Cầu Thiết Kế: Template Box BigFan & Logic Lọc Tin Tức Theo Khu Vực
Ngày cập nhật: 30/06/2026
Loại: UI Design Templates & Backend Logic Specification
Ảnh feedback:
1. Thiết Kế Template Sinh Động Cho Box BigFan
Vấn đề hiện tại
Box BigFan trên trang chủ hiện tại quá đơn điệu: Nền trắng tinh, chữ đen mặc định, icon tròn nhỏ đơn giản, không tạo được cảm giác không khí lễ hội/nhận thưởng để kích thích người chơi.
Giải pháp: Xây dựng các Color Templates & Typography sẵn
Thiết kế sẵn 3-4 mẫu template màu sắc (nền gradient nhẹ, icon tương ứng, thiết lập font size/weight) cho từng loại phần thưởng/hoạt động. Khi chạy, hệ thống chỉ việc đổ tên người dùng, tên phần thưởng và thời gian vào khung có sẵn.
Mẫu 1: Nhận Giải Từ Vòng Quay May Mắn (Lucky Wheel Winner)
- Màu nền (Background): Gradient vàng nhạt sang cam nhạt (
linear-gradient(135deg, #FFF9E6, #FFF0CC)) - Icon đại diện: Bánh xe vòng quay hoặc vòng quay lấp lánh (màu vàng kim)
- Badge loại: Màu cam đất thương hiệu (
#E5A93C), chữ trắng - Typography:
- Tên user:
fontSize: 14,fontWeight: 'bold', màu#664C1A - Nội dung:
fontSize: 13, màu#805E24
- Tên user:
Mẫu 2: Ưu Đãi / Quà Tặng Sinh Nhật (Birthday Reward)
- Màu nền (Background): Gradient hồng phấn sang đỏ nhạt (
linear-gradient(135deg, #FFF0F2, #FFE0E5)) - Icon đại diện: Hộp quà sinh nhật (màu đỏ/hồng) hoặc bánh sinh nhật
- Badge loại: Màu hồng đậm, chữ trắng
- Typography:
- Tên user:
fontSize: 14,fontWeight: 'bold', màu#801A27 - Nội dung:
fontSize: 13, màu#992233
- Tên user:
Mẫu 3: Đăng Ký Thành Viên Mới / Thăng Hạng (Membership Upgrade)
- Màu nền (Background): Gradient xanh dương nhạt sang bạc (
linear-gradient(135deg, #EBF3FF, #D9E8FF)) - Icon đại diện: Vương miện hoặc thẻ thành viên lấp lánh
- Badge loại: Màu xanh Navy, chữ trắng
- Typography:
- Tên user:
fontSize: 14,fontWeight: 'bold', màu#1A3D80 - Nội dung:
fontSize: 13, màu#244D99
- Tên user:
2. Logic Lấy Tin Tức Theo Khu Vực & Fallback Global
Bố cục hiển thị tin tức
- Tin gần nhất (mới nhất): Hiển thị dạng Box to (Hero Card) ở trên cùng.
- Các tin cũ hơn: Dạng List tin nhỏ xếp hàng dọc ở phía dưới.
Logic lọc dữ liệu (Data Logic)
Hệ thống không hiển thị tràn lan mà cần tối ưu hóa theo vị trí địa lý của người dùng:
Lấy thông tin Vị trí của User (Tỉnh/Thành hoặc Chi nhánh)
↓
Có xác định được khu vực của User không?
├── CÓ: Gửi API lấy tin theo khu vực
│ (VD: `GET /news?branch_city=HCM`)
│
│ → Có tin tức nào trả về không?
│ ├── CÓ → Hiển thị 5 tin mới nhất của khu vực đó
│ └── KHÔNG → Chuyển sang Fallback Global
│
└── KHÔNG (Tắt định vị/Lỗi) → Chuyển sang Fallback Global
↓
[Fallback Global]
Gửi API lấy tin toàn hệ thống
(VD: `GET /news?global=true`)
Hiển thị 5 tin mới nhất toàn quốc
| Trường hợp | Nguồn tin hiển thị | Số lượng hiển thị |
|---|---|---|
| Định vị được & Chi nhánh đó có tin | Tin tức riêng của chi nhánh/khu vực đó | Tối đa 5 tin mới nhất |
| Không định vị được OR Chi nhánh không có tin | Tin tức chung của toàn hệ thống (Global News) | Tối đa 5 tin mới nhất |
Checklist Kỹ Thuật Cho Lập Trình Viên
Frontend (React Native)
- Khai báo stylesheet các template màu sắc cho BigFan Box (Lucky, Birthday, Upgrade).
- Gán biến động:
{userName},{rewardName},{relativeTime}vào template tương ứng dựa trên thuộc tínhactivityTypecủa record. - Lấy vị trí tỉnh thành hiện tại của thiết bị (hoặc tỉnh thành chi nhánh đã lưu trong Profile).
- Truyền params
locationhoặccity_idlên API lấy tin tức. - Thiết kế Component News List: Dòng đầu tiên check
index === 0render Card lớn, các index từ 1 đến 4 render list nhỏ bên dưới.
Backend / API
- Cấu hình API
/newsnhận tham số lọc theo tỉnh thành / khu vực. - Nếu query theo khu vực trả về rỗng (empty array), API tự động truy vấn tin tức Global và trả về kết quả fallback (không để client phải gọi 2 lần).