Anh/chị chọn ít nhất một nguồn biết sự kiện giúp tụi mình nha.
Anh/chị đã chơi game Taste Match chưa?
RồiChưa
Còn 1 mục chưa xong: Biết sự kiện qua đâuĐiền tiếp
Nhận mã QR
Tôi từ đủ 16 tuổi và đồng ý cho TRYOH! dùng tên, giới tính, nhóm tuổi và câu trả lời khảo sát ngắn để phát quà và thống kê sự kiện (chỉ số gộp). Không gọi điện, không nhắn tin.
9:41●●●
TikTok Food Fest 2026 · Quay là có quà
Minh Anh ơi, bấm Dừng!
Muôn vàn quà tặng đang chạy, nhanh tay bấm dừng để bóc secret cùng TikTok Food Fest nào
DỪNG
9:41●●●
TikTok Food Fest 2026
Check-in thành công, Minh Anh!
Đi sang quầy đổi quà bên trái để nhận quà
Đã dùng
K7MQ-3PXW
Anh/chị sẽ nhận
Túi mù Hyamin
?
Quà bí mật
Quét ở quầy quà mới biết
Mã chỉ nhận một lần. Giữ trang này mở cho tới khi nhận quà.
9:41●●●
TikTok Food Fest 2026 · Đã nhận quà
Cảm ơn Minh Anh nha!
Anh/chị đã nhận quà lúc 09:41. Chúc anh/chị một ngày hội thật vui!
TikTok Food Fest 2026 · 128 check-in · 97 đã nhận quà
BoothQuét quà
Camera đang tắt
Bật camera quét
Gõ mã: K7MQ-3PXW
Kiểm tra
✓Đưa quà đang hiện → bấm Đã trao quà · Quét tiếp
✕Khách đã nhận rồi. Kêu chưa nhận → cho khách quét QR trên màn đỏ
!Hết quà hoặc mã lạ — chưa đánh dấu
↩Quét nhầm → Hoàn tác trên màn xanh
TikTok Food Fest
Khớp màn hình khách
Minh Anh
K7MQ-3PXW
Đã trao quà · Quét tiếpQuét nhầm? Hoàn tác
TikTok Food Fest30s
Khách đã nhận quà rồi
Minh Anh
×1 phần quà
lúc 09:41
Khách nói chưa nhận?
Cho khách quét QR này bằng máy của họ để chat với TryOh và được cấp lại mã.
zalo.me/TryOh
Quét tiếp
Điện thoại PG · admin cho PG
Luồng hai quầy, không cần máy
Tại TikTok Food Fest 25–26/09, TryOh làm phần check-in và phát quà cho khách. Không máy nhả, không OTP: khách cho ba thông tin, nhận một mã QR dùng một lần; PG quét mã đó ở quầy quà và đưa quà bằng tay từ thùng cạnh mình. Mọi thứ nằm trong phần mềm sự kiện của TryOh — cùng kho quà, cùng sổ phát, cùng báo cáo.
Không OTP ⇒ nhanh hơn, nhưng vẫn chống được săn quà. Không gửi tin nhắn, không chờ mã: khách quét là điền, điền là có QR, cả lượt dưới 20 giây nên hàng không ùn. Gian lận chặn bằng hai lớp không cần số điện thoại: (1) cookie ghi trên trình duyệt mặc định của máy khi quét QR — mở lại link vẫn ra đúng mã cũ, không tạo được mã thứ hai; (2) IP + dấu thiết bị của kết nối lúc check-in — cùng máy đổi trình duyệt / xoá cookie vẫn bị nhận ra và trả về mã cũ. Cộng với mã QR dùng một lần và lượt quét xanh của PG, một khách không thể tự nhân bản để săn quà — độ tin cậy ~99,8%; phần rất nhỏ còn lại (nhiều máy thật của cùng một người) chỉ chặn được bằng OTP, mà OTP thì đổi lấy hàng chờ dài — không đáng cho một quà check-in.
Quầy 1 · Check-in
QR trên standee in từ /admin/events/software. Khách quét → /checkin/<event> → tên, giới tính, độ tuổi → màn "Check-in thành công" có QR và lời nhắc to "Đi sang quầy đổi quà bên trái để nhận quà". Khách vào chơi trước cũng được — mở lại link hay quét lại standee vẫn ra đúng mã cũ.
Có hiện quà hay không?
Ô reveal_prize trên console. Bật: bốc quà lúc check-in, khách thấy ngay. Tắt: khách thấy "quà bí mật", hệ thống bốc lúc PG quét. Cả hai cùng trừ kho event_prize — số "còn" trên màn PG là số thật.
Quầy 2 · PG quét và trao tay
Tab Quét quà trên admin cho PG (/admin/pg/scan). Xanh = hình quà, tên quà, tên khách cỡ lớn — PG với tay lấy đúng món đó đưa khách. Màn xanh không tự tắt: nút to "Đã trao quà · Quét tiếp" sát mép dưới chính là xác nhận quà đã nằm trong tay khách. Đỏ = khách đã nhận rồi, kèm quà gì và lúc nào; vàng = hết quà, chưa đánh dấu.
Khách: cảm ơn + chấm sao
PG quét xong, màn khách tự lật (hỏi máy chủ mỗi 8 giây) sang "Cảm ơn": giờ nhận, quà, 5 sao một chạm và một dòng nhỏ liên hệ TryOh. Đã nhận thì không quay về màn QR nữa — chỉ 4 phút đầu còn link "Xem lại mã QR" kèm đồng hồ đếm ngược, phòng PG quét rồi mà chưa kịp đưa quà.
Quét nhầm có Hoàn tác trong 5 phút, chỉ chính PG vừa quét. Mỗi bạn PG một tài khoản riêng để sổ ghi đúng ai phát.
Bước
Khách thấy
PG thấy
Hệ thống ghi
Quét standee
Mở /checkin/<event>
—
—
Điền thông tin
Tên · giới tính · độ tuổi
—
event_checkin + mã; bốc quà nếu bật hiện quà
Check-in thành công
QR + mã + CTA "sang quầy đổi quà bên trái" + quà (hoặc "quà bí mật")
Đếm check-in tăng
cookie trình duyệt ⇒ mở lại vẫn đúng mã, đúng màn
PG quét
—
Xanh · hình + tên quà · tên khách cỡ lớn · nút "Đã trao quà · Quét tiếp"
redeemed_at, redeemed_by; bốc quà tại chỗ nếu chưa có
Trao quà
Trang tự lật "Cảm ơn" + chấm sao
Bấm Quét tiếp = xác nhận đã trao, camera chạy tiếp
rating, rated_at khi khách chạm sao
Quét lại
Vẫn màn "Cảm ơn"
Đỏ · khách đã nhận · quà gì · lúc nào · QR "Khách nói chưa nhận?"
không đổi gì
Khách nói chưa cầm quà
Quét QR trên màn PG → /r/<mã> → nút "Mở Zalo · Chat với TryOh", mã đã sao chép sẵn
Gửi mã → bot trả link mã MỚI (lần 1/2) · ~20 phút sau bot hỏi "đã nhận chưa?"
Quét mã mới → Xanh · "Mã cấp lại lần 1"
event_gift_report + dòng event_checkin mới nối về gốc; lần 3 ⇒ flagged, hội thoại vào hàng chờ người
Kho & phát quà theo phiên
Sự kiện có ~60 loại quà nhưng tất cả phát bằng tay, không qua khay máy. Nếu bày cả 60 thùng cạnh PG thì kho soạn chậm, PG lục không ra, tồn cạnh booth phình to. Nên hệ thống chia hai ngày thành các phiên, mỗi phiên chỉ mở 2–8 loại quà với tỷ lệ rơi và số định phát chia sẵn: kho soạn đúng một mẻ nhỏ cho phiên kế tiếp (đếm bằng mắt, sai một món là thấy) · PG với tay là có đúng món màn xanh vừa hiện · tồn cạnh PG chỉ đủ cho phiên đang chạy, phần còn lại nằm ở kho. PG chỉnh lệch thực tế ngay tại booth, hệ thống chia lại các phiên chưa mở.
App PG · /admin/pg/giftsPhiên 2 đang mở: bật/tắt từng món, ghim %, đếm lại tồn booth. Chỉ những món này nằm cạnh PG.
Màn kho · /admin/pg/inventoryMẻ 3 gom sẵn theo kế hoạch, PG dặn "xin thêm 20". Kho sửa số theo thùng thật rồi bấm Gửi — kho trừ ngay, booth cộng khi PG đếm nhận.
Màn kho · tồn theo SKU (60 SKU ngày thật)Kho · Booth · Đã phát — số thật, cùng sổ với app PG. Đếm lại thùng thì sửa ô Kho; booth báo thiếu lúc nhận ⇒ phần thiếu tự trả về kho.
Ảnh chụp từ chính màn hình app TryOh (dữ liệu mẫu), không phải bản vẽ.
Theo Storage Report ngày 24/09, các nhãn gửi 168.392 item, gom theo quy cách phát thành
63.337 lượt quà cho hai ngày. Sự kiện kỳ vọng 20–50 nghìn khách. Mỗi khách một phần thì kể cả đón
đủ 50 nghìn khách, lúc đóng cổng vẫn còn hơn 13 nghìn lượt nằm trong thùng — nhãn trả tiền cho quà không đến tay ai.
Nên số phần mỗi khách không cố định: hệ thống tự tính lại giữa sự kiện theo tồn kho thật và lượt khách còn kỳ vọng.
Một câu hỏi duy nhất cho người đứng booth. "Từ giờ tới hết sự kiện còn kỳ vọng bao nhiêu khách nữa?" — kéo một thanh trượt. Hệ thống chia: K = tồn còn lại ÷ khách còn kỳ vọng, làm tròn, trần an toàn 12 phần/khách. Không ai phải tính tay.
Tự leo thang, không cần ai canh. Cả tử số lẫn mẫu số đều là số còn lại. Nghìn khách đầu nhận 2 phần; chiều vắng, hạ dự báo xuống thì nghìn khách cuối tự nhận 8 — không có ô "đã phát bao nhiêu" nào để lệch.
Thành phần túi tự ra theo nhãn hàng. K phần được chia theo đúng tỷ lệ các khe của phiên đang mở, nên nhãn nào tồn nhiều thì tỷ lệ cao và tự được chia nhiều phần hơn. Không có bảng công thức "túi A gồm gì" để ai đó quên cập nhật.
Tỷ lệ chia theo tồn kho ⇒ mọi mặt hàng cạn cùng lúc. Khe nào tồn sâu thì % cao ngay từ phiên đầu. Nhờ vậy khách phiên cuối vẫn thấy rổ quà đủ mặt như khách phiên đầu, thay vì tới chiều ngày 2 chỉ còn đúng một nhãn.
Chạy mô phỏng trọn hai ngày với cùng 35 nghìn khách kỳ vọng, hai cách chia tỷ lệ cho kết quả khác hẳn:
Tỷ lệ cố định theo hạng quà
Tỷ lệ theo tồn kho
Phiên cuối còn mấy loại quà
5 / 8 — Hyamin, GrowPLUS+, C2 hết sạch giữa chừng
8 / 8
Tồn dư lúc đóng cổng
14.250 lượt, 75% là CHINSU
11.321 lượt, rải đều cả 8 loại
Lượt quà đã phát
49.087
52.016
Quy cách phát — mỗi dòng là một "lượt" mà khách nhận, đúng như nhãn quy định trong Storage Report:
Quà
Một lượt gồm
Số lượt
CHINSU Hạt nêm + sốt thịt nướng
1 hạt nêm + 1 sốt
25.420
CHINSU Hạt nêm Shiitake 400g
2 gói
13.154
Mentos Peppermint
1 hộp
10.080
Combo bánh Cream-O / Oat Krunch / Lexus
3 bánh + 1 chai C2 Sâm
5.149
Khăn ướt Lamy
10 gói
5.000
C2 Sâm
2 chai
2.284
GrowPLUS+ Sữa non 110ml
1 lốc 4 hộp
1.250
Túi mù Hyamin
1 túi
1.000
Tổng 63.337 lượt / 168.392 item · 7 nhãn hàng, 8 quy cách phát (CHINSU đi hai quy cách: gói sốt kèm hạt nêm, và hạt nêm trần phát 2 gói) · nguồn: Storage Report 24/09/2026, sheet "Check-in Booth".
Giữa form và màn QR có một game hai giây: dải quà chạy sẵn từ khung hình đầu tiên, khách bấm DỪNG là chốt — món nằm dưới vạch chính là quà của khách. Không có vòng quay chậm dần giả vờ, không có độ trễ: dừng là dừng thật như dừng video, để khách land đúng món mình nhắm.
Dải chỉ có món CÒN HÀNG của phiên đang phát. Cùng một nguồn với app PG và màn kho: phiên mở 2–8 loại thì dải chạy đúng chừng đó; hết món nào là món đó biến mất khỏi dải chứ không để khách dừng vào rồi mới báo hết.
Tỷ lệ ghim vẫn đúng. Món bị ghim % xuất hiện thưa/dày trên dải theo đúng tỷ lệ đó, nên cho khách tự chọn không làm lệch kế hoạch phát của nhãn.
Máy chủ vẫn là người chốt. Ô khách dừng vào chỉ là đề nghị; nó chỉ được trao nếu lúc ghi vẫn còn hàng. Hết đúng lúc thì hệ thống đổi món khác và nói thẳng trên màn QR, không im lặng.
Bật/tắt và chỉnh được. Trong console sự kiện: bật/tắt game, tốc độ dải (ms mỗi ô), tự dừng sau n giây, dòng nhắn trên đầu màn. Tắt ⇒ khách đi thẳng từ form sang màn QR như cũ.
Hết quà ⇒ phần quay tự biến mất. Kho + booth của cả sự kiện về 0 thì quầy tự tắt phát quà: khách vẫn quét standee, điền thông tin, rồi ra màn "Cảm ơn, anh/chị đã check-in thành công" — không dải quay, không QR nhận quà. Standee đổi thành "Quét để check-in". Khách đã quay ra quà trước đó vẫn ra quầy nhận bình thường.
PG tổng bật/tắt tay. Đầu trang Booth của app PG có công tắc Phát quà: Tự động · Luôn bật · Tắt. Tắt ⇒ khách chỉ check-in; Luôn bật ⇒ vẫn phát khi sổ báo hết mà thùng sau quầy còn hàng. Gạt là áp ngay cho khách kế tiếp.
Túi mù nhiều phần. PG tổng kéo thanh "Túi mù: trung bình mỗi túi mấy phần quà?" (1–20) trên app PG. Dải quay đổi thành các túi quanh con số đó (trung bình 10 ⇒ Túi 8 … Túi 12 phần), khách quay 1 lượt ra 1 túi. Màn QR, màn cảm ơn và màn xanh của PG hiện cả túi ngang hàng, không món nào là "món chính", ×N từng món. Túi mới chỉ áp cho lượt quay kế tiếp.
PG quét ra đỏ nhưng khách khăng khăng chưa cầm quà — PG quét rồi quên đưa, khách khác lấy nhầm, hay khách thử vận may. Ở quầy đông không ai có thời gian phân xử, và một vài phần quà không đáng một cuộc cãi. Nên hệ thống không bắt PG quyết: màn đỏ có sẵn một QR đưa khách sang chat Zalo OA TryOh, bot AI (GLM) cấp lại mã mới, ghi sổ, rồi tự hỏi lại. Người thật chỉ vào cuộc khi vượt trần.
PG chìa QR trên màn đỏKhách quét bằng máy của mình → tryoh.vn/r/<mã>. Link có chữ ký 30–60 phút, chỉ sinh ra từ màn PG — tức phải có PG chứng kiến mới báo được.
Mở Zalo, gửi mãTrang đã sao chép sẵn mã; khách bấm "Mở Zalo · Chat với TryOh" rồi dán. Không app, không OTP, không điền gì thêm.
Bot cấp lại trong vài giâyBot đọc mã, gọi hàm cấp lại: sinh mã QR mới nối về mã gốc, trả link tryoh.vn/c/<mã mới>. Khách đưa QR đó cho PG → xanh "Mã cấp lại lần 1". Quà bốc lúc quét, trừ kho thật.
Bot hỏi lại sau ~20 phút"Anh/chị đã nhận được quà với mã cấp lại chưa? Rồi / Chưa". "Rồi" ⇒ đóng sổ. "Chưa" ⇒ cấp lại lần 2 (lần cuối). Câu trả lời lan man thì AI đọc, không rõ thì hỏi lại.
Lần 3: dừng, chuyển ngườiQuá 2 lần cấp lại, bot xin lỗi, không cấp nữa; hội thoại vào hàng chờ người trong inbox OA và dòng đỏ trên /admin/pg/reports. Vận hành gặp khách rồi bấm Đóng.
Tối đa 2 lần cấp lại / khách. Luật nằm trong hàm DB, không trong prompt — bot có bị "dụ" cũng không cấp được lần 3.
Lịch sử đầy đủ. Mỗi lần báo là một dòng: mã gốc → mã mới, ai cấp (bot / tay), khách trả lời gì, khi nào. PG thấy "mã cấp lại lần N" ngay trên màn xanh.
Cố ý KHÔNG có nút "chưa nhận quà" trên app khách. Một nút như vậy trên /c/<mã> là lời mời săn quà. Đường vào duy nhất là QR trên màn đỏ của PG — ai khiếu nại đều đứng trước mặt PG, bị nhớ mặt.
Bot dùng GLM (Z.ai), ~40đ/lượt. Model chỉ đọc câu tự do của khách; cấp mã, đếm lần, gửi link đều là code cố định — model không bao giờ tự viết ra một cái mã.
Live report cho ban tổ chức
Một link riêng cho TikTok, mở trên TV phòng điều hành hoặc điện thoại: đang có bao nhiêu người check-in, quà đang phát ra với tốc độ nào, còn bao nhiêu ở booth và trong kho. Cùng sổ với app PG và màn kho nên số nhảy theo từng lượt quét, tự làm mới 5 phút/lần hoặc bấm "Làm mới". Hamburger cao dần theo lượt check-in, ly trà sữa cạn dần theo quà còn lại, biểu đồ check-in theo từng 15 phút để biết giờ cao điểm. Không có tên, số điện thoại khách hay tên PG trên màn này.