Website & mobile
Game online trên trình duyệt desktop, trình duyệt điện thoại và webview trong app FPT (Hi FPT, FPT Play): đường dẫn campaign, đăng nhập, bố cục, chia sẻ và đo lường nguồn.
Mục tiêu
| Mục tiêu | Chỉ số đo | Ngưỡng MVP |
| Vào game nhanh từ link | Thời gian tải landing đến tương tác được (4G, điện thoại tầm trung) | ≤ 3 giây ở p75 |
| Đăng nhập không rơi rụng | Tỉ lệ người nhập SĐT hoàn tất OTP | ≥ 85% |
| Không bắt đăng nhập lại trong app FPT | Người vào từ Hi FPT / FPT Play phải nhập SĐT | 0% khi app truyền token hợp lệ |
| Biết người chơi đến từ đâu | Phiên chơi có nguồn (UTM / src) | ≥ 95% |
Ngoài phạm vi
- App native riêng cho minigame — chỉ chạy dạng web và webview.
- SEO cho từng campaign ngắn ngày; chỉ cần share/OG đúng .
- API OTP, FPT ID, bridge với app — hợp đồng ở Hệ thống ngoài.
- Breakpoint, cỡ chữ, hover — xem Kênh triển khai (UI).
Ba bối cảnh chạy
| Web desktop | Web mobile | Webview app FPT |
| Kênh | web | web | app |
| Vào từ | Link quảng cáo, fanpage, email, website FPT | Như desktop + QR tại booth (mô hình A, C) | Banner / mục "Ưu đãi" trong Hi FPT, FPT Play |
| Đăng nhập | SĐT + OTP / FPT ID | SĐT + OTP / FPT ID | Token từ app qua bridge |
| Header | Appbar có logo | Appbar có logo | Ẩn; tiêu đề do app truyền |
| Theme | Cam | Cam | Theo app (Hi FPT → xanh) |
| Chia sẻ | Copy link, Facebook, Zalo | Web Share của hệ điều hành | Gọi share của app ; không có thì copy link |
Vai trò & quyền
| Vai trò | Việc trên kênh web / app |
| Người chơi | Xem landing, đăng nhập, chơi, chia sẻ, xem Quà của tôi |
| Quản lý campaign | Bật kênh web/app cho campaign, đặt đường dẫn, ảnh share, mô tả OG, tạo link có UTM |
| Quản trị hệ thống | Cấu hình tên miền, danh sách app được phép gọi bridge, khoá tích hợp |
User stories
| Mã | Là… | Tôi muốn… | Để… | Ưu tiên |
| US-WEB-01 | Người chơi | mở link campaign và xem thể lệ, quà trước khi đăng nhập | quyết định có chơi không | Must |
| US-WEB-02 | Người chơi | đăng nhập bằng SĐT + OTP | không cần tạo tài khoản | Must |
| US-WEB-03 | Khách hàng FPT | đăng nhập bằng FPT ID | gắn với hợp đồng dịch vụ của tôi | Should |
| US-WEB-04 | Người dùng Hi FPT | mở game trong app mà không đăng nhập lại | chơi ngay | Must |
| US-WEB-05 | Người chơi desktop | thấy game, thể lệ và bảng xếp hạng cùng lúc | không phải chuyển trang | Should |
| US-WEB-06 | Người chơi | chia sẻ link có ảnh đẹp lên Facebook, Zalo | rủ bạn chơi, nhận thêm lượt | Must |
| US-WEB-07 | Người chơi trong app | bấm back để đóng popup chứ không thoát game | không mất phiên đang chơi | Must |
| US-WEB-08 | Quản lý campaign | tạo link có UTM cho từng kênh quảng cáo | so hiệu quả kênh trong báo cáo | Must |
Đường dẫn & landing campaign
| Trang | Đường dẫn | Có gì | Cần đăng nhập |
| Trang chủ | / | Campaign đang chạy trên kênh web | — |
| Landing campaign | /c/<slug> | Banner, thời gian, quà nổi bật, thể lệ, nút "Chơi ngay", bảng xếp hạng | — |
| Chơi | /c/<slug>/choi | Khung game | ✓ |
| Phòng chơi (QR từ TV) | /p/<mã phòng> | Vào thẳng phòng theo Chế độ chơi | ✓ |
| Quà của tôi | /qua | Theo Kho quà | ✓ |
| Thể lệ, chính sách dữ liệu | /c/<slug>/the-le, /chinh-sach | Văn bản tĩnh | — |
| Trạng thái campaign | Landing hiện |
| Đã duyệt, chưa tới giờ | Đếm ngược, thể lệ; nút "Nhắc tôi" |
| Đang chạy | Bình thường |
| Tạm dừng | "Chương trình tạm dừng, quay lại sau"; Quà của tôi vẫn xem được |
| Kết thúc | Kết quả, danh sách trúng (nếu thể lệ công bố); link campaign khác |
| Nháp, Chờ duyệt | 404 với người chơi; xem trước được khi đăng nhập quản trị |
Đăng nhập
SĐT + OTP
- Bấm "Chơi ngay" → nhập SĐT + checkbox đồng ý xử lý dữ liệu (không tick sẵn).
- Gửi OTP 6 số qua ZNS, lỗi thì SMS; hết hạn sau 5 phút.
- Nhập đúng → tạo/khớp hồ sơ theo Khách hàng; phiên đăng nhập giữ 30 ngày trên trình duyệt đó.
FPT ID
- Bấm "Đăng nhập FPT ID" → chuyển trang đăng nhập FPT ID → quay về đúng trang đang đứng.
- Nhận SĐT đã xác thực + mã khách hàng FPT (nếu có) → hợp nhất hồ sơ theo Khách hàng.
Token từ app qua bridge
- App mở webview với tham số kênh + campaign; game gọi bridge xin token người dùng.
- Máy chủ minigame đổi token với hệ thống của app lấy SĐT / FPT ID (Hệ thống ngoài).
- Thành công → vào thẳng; người chơi chưa đồng ý dữ liệu cho minigame thì hiện bước đồng ý một lần.
- Không có token / token hết hạn → gọi bridge xin làm mới 1 lần; vẫn lỗi → rơi về SĐT + OTP.
| Mã | Quy tắc | Ví dụ |
| BR-WEB-01 | Xem landing, thể lệ, bảng xếp hạng không cần đăng nhập; chỉ đăng nhập khi bắt đầu chơi | |
| BR-WEB-02 | Gửi lại OTP sau 60 giây; số lần gửi, sai OTP tối đa theo Chống gian lận | |
| BR-WEB-03 | Chỉ nhận token bridge từ app trong danh sách cho phép; token dùng 1 lần ở máy chủ, không lưu trên trình duyệt | |
| BR-WEB-04 | Ba cách đăng nhập cùng SĐT → cùng một người chơi; lượt chơi, quà dùng chung | Chơi 2 lượt trên Hi FPT + 1 lượt trên web = 3 lượt của cùng SĐT |
| BR-WEB-05 | Đăng nhập xong quay về đúng trang trước đó, kể cả /p/<mã phòng> | |
Bố cục & hành vi
| Mã | Quy tắc | Ví dụ |
| BR-WEB-06 | Desktop (≥ 1024px): game trong khung 9:16 giữa màn; trái là thể lệ + quà, phải là bảng xếp hạng. Mobile: game toàn màn, thể lệ và bảng xếp hạng là tab / trang riêng | |
| BR-WEB-07 | Game không bao giờ kéo giãn khỏi 9:16; màn ngang trên điện thoại hiện "Xoay dọc để chơi" | |
| BR-WEB-08 | Webview: back phần cứng / cử chỉ back đóng modal trước; đang trong phiên chơi → hỏi "Thoát? Lượt này sẽ tính là đã chơi" ; ở landing → trả về app | |
| BR-WEB-09 | Webview: ẩn appbar, ẩn nút đăng xuất; theme theo app truyền vào | Hi FPT → data-theme="blue" |
| BR-WEB-10 | Rời tab / khoá màn khi đang chơi: tạm dừng game nếu game cho phép, xử lý phiên theo Khung game | |
| BR-WEB-11 | Một SĐT mở game ở 2 tab / 2 thiết bị: chỉ một phiên chạy theo Khung game; tab còn lại báo "Bạn đang chơi ở nơi khác" | |
Bố cục chi tiết: Kênh triển khai (UI), Mẫu màn hình game.
Chia sẻ & OG
| Trường | Kiểu | Bắt buộc | Ràng buộc | Ghi chú |
| Tiêu đề OG | Chuỗi | ✓ | ≤ 60 ký tự | Mặc định = tên campaign |
| Mô tả OG | Chuỗi | ✓ | ≤ 150 ký tự | |
| Ảnh OG | Ảnh | ✓ | 1200×630, ≤ 300 KB | Mặc định: gradient cam + cụm bit + logo âm bản |
| Link chia sẻ | URL | ✓ | Landing + mã người mời + utm_source=share | Tự sinh theo người chơi |
| Ảnh kết quả cá nhân | Ảnh sinh tự động | — | Không chứa SĐT | Đợt 2 |
Lượt nhận thêm khi chia sẻ: quy tắc ở Khung game. Web không biết chắc người chơi đã đăng bài; chỉ ghi nhận được khi có người mở link.
Trình duyệt hỗ trợ
| Nền tảng | Hỗ trợ đầy đủ | Ghi chú |
| iOS | Safari iOS 15+; webview Hi FPT, FPT Play, Zalo, Facebook | Micro/camera trong webview có thể bị chặn — kiểm thử game 8 riêng |
| Android | Chrome 2 bản mới nhất, Android 9+; Samsung Internet, Cốc Cốc | Máy RAM 2 GB: tắt hiệu ứng nặng |
| Desktop | Chrome, Edge, Cốc Cốc, Safari, Firefox — 2 bản mới nhất | Cốc Cốc phổ biến ở Việt Nam |
| Không hỗ trợ | IE, trình duyệt không chạy WebGL / Canvas | Hiện trang "Mở bằng Chrome / Safari để chơi" |
Mở từ Facebook / MessengerTrình duyệt trong app Facebook có thể chặn cửa sổ đăng nhập FPT ID và mất phiên khi chuyển trang. Ưu tiên SĐT + OTP trong bối cảnh này và gợi ý "Mở bằng trình duyệt".
Theo dõi & nguồn
| Mã | Quy tắc | Ví dụ |
| BR-WEB-12 | Đọc utm_source, utm_medium, utm_campaign, utm_content và src ở lần vào đầu; lưu theo phiên trình duyệt và gắn vào phiên chơi, lead | ?utm_source=facebook&utm_medium=cpc&utm_campaign=tet2027 |
| BR-WEB-13 | Gán nguồn theo lần chạm đầu trong 7 ngày; vào lại bằng nguồn khác trong 7 ngày không ghi đè | |
| BR-WEB-14 | Webview: nguồn = tên app + vị trí banner do app truyền (vd. src=hifpt_banner_home) | |
| BR-WEB-15 | Sự kiện tối thiểu: xem landing, bấm chơi, gửi OTP, đăng nhập xong, bắt đầu phiên, kết thúc phiên, trúng, chia sẻ, mở Quà của tôi | Dùng cho phễu ở Báo cáo |
| BR-WEB-16 | Không gửi SĐT, mã quà vào công cụ analytics bên thứ ba; cookie quảng cáo chỉ bật khi người dùng đồng ý theo Dữ liệu cá nhân | |
Công cụ analytics dùng: GA4 / công cụ nội bộ FTEL — IT xác nhận.
Ngoại lệ & lỗi
| Tình huống | Hệ thống xử lý | Thông báo hiển thị |
| OTP không tới | Sau 60 giây cho gửi lại; lần 2 chuyển kênh ZNS ↔ SMS | "Chưa nhận được mã? Gửi lại qua SMS" |
| Nhập sai OTP | Đếm số lần sai theo Chống gian lận | "Mã chưa đúng, còn 2 lần thử" |
| FPT ID lỗi / người dùng huỷ | Quay về landing, giữ trang đích | "Chưa đăng nhập được, thử bằng SĐT" |
| Token bridge lỗi | Làm mới 1 lần; lỗi → SĐT + OTP | "Xác nhận SĐT để tiếp tục" |
| Mất mạng giữa phiên | Theo Khung game | "Mất kết nối. Kết quả của bạn vẫn được lưu" |
| Link campaign sai / không tồn tại | 404 có link về trang chủ | "Không tìm thấy chương trình" |
| Campaign không bật kênh này | Không cho chơi | "Chương trình chỉ chơi trên Zalo / tại booth" + link đúng kênh |
| Trình duyệt không hỗ trợ | Chặn ở landing | "Mở bằng Chrome / Safari để chơi" |
Tiêu chí nghiệm thu
AC-WEB-01Cho người chưa đăng nhập mở /c/<slug>, thì thấy thể lệ, quà, bảng xếp hạng mà không bị yêu cầu SĐT.
AC-WEB-02Cho người chơi nhập SĐT và OTP đúng, thì vào màn chơi và mở lại trình duyệt trong 30 ngày không phải đăng nhập lại.
AC-WEB-03Cho Hi FPT mở webview kèm token hợp lệ, thì vào màn chơi không có ô nhập SĐT, theme xanh, không có appbar.
AC-WEB-04Cho token bridge hết hạn và làm mới thất bại, thì hiện ô SĐT + OTP, không màn trắng.
AC-WEB-05Cho màn desktop 1440px, thì game hiện đúng tỉ lệ 9:16 giữa màn, thể lệ bên trái, bảng xếp hạng bên phải.
AC-WEB-06Cho webview Android đang mở modal, khi bấm back, thì modal đóng và vẫn ở màn chơi.
AC-WEB-07Cho link landing dán vào Facebook và Zalo, thì xem trước hiện đúng ảnh 1200×630, tiêu đề, mô tả của campaign.
AC-WEB-08Cho người vào bằng link có utm_source=facebook rồi trúng quà, thì lượt trúng và lead trong báo cáo có nguồn facebook.
AC-WEB-09Cho cùng SĐT chơi trên web và Hi FPT, thì Quà của tôi ở cả hai nơi hiện cùng danh sách quà.
Câu hỏi mở
| # | Câu hỏi | Hỏi ai | Hạn | Trả lời |
| Q-WEB-01 | Tên miền chạy game: subdomain fpt.vn hay tên miền riêng? | IT / Truyền thông | | |
| Q-WEB-02 | Hi FPT, FPT Play đã có bridge truyền token cho webview bên thứ ba chưa? Đội nào làm phía app? | Đội app Hi FPT / FPT Play | | |
| Q-WEB-03 | FPT ID có trong MVP không, hay chỉ SĐT + OTP? | PM / IT | | |
| Q-WEB-04 | OTP gửi ZNS trước hay SMS trước? Ngân sách mỗi tin (chạm Hệ thống ngoài) | FCM / IT | | |
| Q-WEB-05 | Thoát giữa phiên trong webview có tính là đã dùng lượt? (quyết ở Khung game) | FCM | | |
| Q-WEB-06 | Công cụ analytics và quy định cookie của FTEL | IT / Pháp chế | | |
Lịch sử thay đổi
| Bản | Ngày | Người sửa | Nội dung |
| 0.1 | 2026-11-11 | PM | Nháp khởi tạo |