Kênh triển khai

Một bộ component, 4 mode. Đổi mode bằng <html data-platform="…">.

Nguồn: chuyển từ design/docs/02-kenh-trien-khai.md ngày 2026-11-11.

So sánh nhanh

Kiosk (offline)WebsiteApp (webview)Zalo Mini App
data-platformkioskwebappzalo
Thiết bịMàn cảm ứng 32–55" đứng, iPad tại boothDesktop + mobile browserApp FPT (Hi FPT, FPT Play…)Zalo trên điện thoại
Viewport chuẩn1080×1920360–1440360–430360–430
Khoảng cách xem1–2 m40–60 cm30 cm30 cm
Body / Nút26 / 34px16 / 17px16 / 17px16 / 17px
Vùng chạm tối thiểu96px44px48px48px
HeaderLogo lớn giữa trên, không menu.ds-appbar có logoẨn — app native loẨn — dùng header Zalo
Safe areaKhôngenv()env()--zaui-safe-area-inset-*
Đăng nhậpKhông — nhập SĐT tại chỗSĐT + OTP / FPT IDLấy từ phiên appZalo auth + xin quyền SĐT
MạngCó thể chập chờn — phải chạy offlineOnlineOnlineOnline
FontNhúng trong buildWeb fontWeb fontSubset, nhúng trong gói
Thêm mode tv: màn ngang 1920×1080 không cảm ứng tại sự kiện, xem từ 3–5 m (body 30px, điểm 180px). Chỉ hiển thị sân chơi, bảng điểm, QR tham gia; thao tác nằm trên điện thoại hoặc nút booth. Xem mau-game.html.

Kiosk — activation offline

Yêu cầuChi tiết
Attract loopKhi rảnh, chạy màn mời chơi động (cụm bit-dot + CTA lớn). Chạm bất kỳ đâu để bắt đầu
Tự resetKhông thao tác 60 giây → hỏi "Bạn còn chơi không?" 10 giây → về attract, xoá dữ liệu phiên
Vùng thao tácĐặt nút chính ở 1/3 dưới màn hình đứng (tầm tay người đứng)
Không hoverMọi phản hồi qua trạng thái nhấn :active
Bàn phímBàn phím số tuỳ biến trên màn (không gọi bàn phím OS)
Riêng tưChe SĐT 09•••••123 ở màn kết quả — người xếp hàng nhìn thấy
OfflineLưu lead vào bộ nhớ máy, đồng bộ khi có mạng; hiển thị trạng thái đồng bộ cho nhân viên (cử chỉ ẩn, vd. chạm giữ logo 5 giây)
In / QR quàMã quà hiển thị dạng QR lớn ≥ 320px để nhân viên quét
Chống cháy mànKhông để nền tĩnh hoàn toàn trên màn LCD nhiều giờ — attract phải chuyển động

Website

Yêu cầuChi tiết
ResponsiveMobile-first; ≥ 1024px tăng display 64px, gutter 32px
Khung gameDesktop: game nằm trong khung tỉ lệ 9:16 giữa màn, hai bên là thể lệ + bảng xếp hạng
SEO/shareẢnh OG 1200×630 dùng gradient cam + cụm bit + logo âm bản
HoverCó hover cho card, nút

App (webview)

Yêu cầuChi tiết
HeaderẨn .ds-appbar; tiêu đề do app native truyền vào
Đăng nhậpNhận token từ app qua bridge, không bắt đăng nhập lại
Nút backPhần cứng/cử chỉ back phải đóng modal trước khi thoát game
ThemeCó thể đổi data-theme theo app (Hi FPT → blue)

Zalo Mini App

Yêu cầuChi tiết
HeaderZalo vẽ header + cụm nút "… / ×" bên phải. Không đặt nút quan trọng ở góc phải trên
UI kitCó thể dùng ZaUI (zmp-ui) cho khung; component game dùng .ds-* để giữ brand
QuyềnXin SĐT/vị trí đúng lúc cần (ví dụ ngay trước bước nhận quà), kèm lý do
Chia sẻNút "Chia sẻ nhận thêm lượt" dùng API share của Zalo
Dung lượngGói có giới hạn — subset font, ảnh WebP, tránh video nền
Kiểm duyệtThể lệ, điều khoản, chính sách dữ liệu phải có link rõ ràng (Zalo kiểm duyệt khi publish)

Dữ liệu cá nhân (áp dụng mọi kênh)

Quy tắcLý do
Checkbox đồng ý xử lý dữ liệu không tick sẵn, có link chính sáchNghị định 13/2023/NĐ-CP
Chỉ thu trường cần thiết (thường: tên, SĐT, khu vực)Giảm rơi rụng form
Ghi rõ mục đích: "để trao quà và tư vấn dịch vụ FPT"Minh bạch

Lịch sử thay đổi

BảnNgàyNgười sửaNội dung
1.02026-11-11DesignerChuyển từ Markdown sang HTML