KAS — Đặt suất ăn qua Zalo Mini App & gom đơn sản xuất
Hệ thống nhận đơn từ phụ huynh / khách trên Zalo, giữ đúng số suất theo từng điểm giao, xác nhận thanh toán VietQR, chốt 2 ca sản xuất, bếp đóng gói, shipper giao tại trường / điểm nhận. Tài liệu này mô tả toàn bộ quy trình nghiệp vụ dưới góc nhìn vận hành — không đi sâu kỹ thuật.
Hệ thống phải làm đúng 7 việc
Mọi luồng bên dưới đều phục vụ các mục tiêu này. Logic nghiệp vụ nằm ở hệ thống trung tâm, không phụ thuộc giao diện.
1. Nhận đơn đúng
Đúng ngày giao, đúng điểm, đúng món theo cửa sổ giờ, đúng người nhận.
2. Giữ suất đúng
Không bán vượt 90 suất / điểm / ngày. Nhiều người đặt cùng lúc vẫn không oversell.
3. Thanh toán đúng
QR đúng số tiền + nội dung. Admin đối soát sao kê rồi xác nhận.
4. Chốt sản xuất đúng
Hai ca: trước 20:00 và 20:00–23:00. Sau chốt không sửa món / không hủy.
5. Giao hàng đúng người
Quét QR khách hoặc nhập mã 4 số theo đúng điểm + đúng ngày.
6. Truy vết sự cố
Thiếu hàng, sai món, khách không có mặt — ghi nhận, admin xử lý.
7. Không để frontend quyết
Nút trên Mini App chỉ gửi lệnh. Hệ thống mới được phép đổi trạng thái.
Ai dùng hệ thống?
Năm vai trò. Khách và shipper dùng Zalo Mini App. Điều hành / bếp / admin dùng Dashboard nội bộ.
Khách
- Xem menu & suất còn
- Đặt đơn, thanh toán
- Hủy nếu còn cửa sổ
- Đưa QR / mã 4 số
Điều hành
- Xác nhận tiền CK
- Xem xét lệch số tiền
- Xử lý hoàn tiền
- Chốt ca sản xuất
Bếp
- Xem / xuất danh sách nấu
- Đánh dấu sẵn sàng giao
- Không đổi đơn đã chốt
Shipper
- Gắn với 1 điểm giao
- Quét QR / nhập mã
- Xác nhận đã giao
- Đóng điểm & báo sự cố
Admin
- Điểm giao, menu, hạn mức
- Tài khoản / phân quyền
- Tạo đơn hộ
- Giờ làm việc đang cố định, chưa sửa trên màn hình
Một ngày vận hành — từ mở cửa đến hết hiệu lực
Mọi mốc giờ theo múi giờ Việt Nam (Asia/Ho_Chi_Minh). Ví dụ: khách đặt ngày 10/8 cho suất giao sáng 11/8.
ngày giao
Chốt ca 20:00 / 23:00 hiện admin bấm tay trên Dashboard (có kiểm soát, có snapshot). Tự động đúng giờ là lựa chọn sau — xem mục 17.
Ba ngày nghiệp vụ luôn tách riêng
Không dùng “lúc bấm nút” để suy ra ngày giao hay ngày nấu.
Ngày đặt
Ngày khách tạo đơn. Ví dụ 10/8, đặt lúc 19:40.
Ngày giao
Ngày khách nhận tại điểm. Ví dụ 11/8, khung 06:30–07:30.
Ngày sản xuất
Ngày bếp nấu. Đợt đầu = cùng ngày giao (sáng 11/8 nấu suất 11/8).
Từ mở Mini App đến có mã nhận hàng
Mini App chỉ hiển thị và gửi yêu cầu. Hệ thống tính tiền, giữ suất, sinh QR — frontend không được tự “chốt” đơn.
Màn hình Mini App (Phase 1)
Trang chủ / điểm giao
Seed 10 điểm A01–A10. Admin bật/tắt từng điểm (scale-up). Hiện còn X/90; đủ thì khóa nút “Hết suất”. Giờ nhận 06:30–07:30.
Menu / combo
Đợt đầu: combo cố định (1 mì + 1 nước), không bán lẻ. Combo A / B. 07:00–20:00 đủ món; 20:00–23:00 chỉ món đánh dấu còn bán sau 20h — chưa trừ kho. Phí giao = 0.
Người nhận
Họ tên, lớp, SĐT, ghi chú. Mini App nhớ form trên máy cho lần sau. Một Zalo được đặt nhiều đơn cùng ngày cùng điểm.
Thanh toán & lịch sử
QR CK, đếm ngược 10 phút, “Tôi đã thanh toán”, “Kiểm tra trạng thái”, mã nhận / QR khi đã TT, hủy khi đủ điều kiện.
VietQR thủ công — điều hành đối soát sao kê, chưa tự khớp ngân hàng
Khách CK đúng số tiền và nội dung tham chiếu. Điều hành đối soát sao kê rồi bấm xác nhận. Tự động khớp giao dịch là Phase sau.
Đợt đầu đã có: sinh QR, hết hạn 10 phút, nút “Tôi đã thanh toán” và “Kiểm tra trạng thái”, hàng đợi xác nhận / kiểm tra lệch trên Dashboard.
Chưa làm: ngân hàng báo có tiền tự động. Gom QR nhận hàng nhiều đơn cùng ngày cùng điểm (SRS gọi “nâng cao”) — xem câu 8; không phải gom một lần chuyển khoản.
Tối đa 90 suất / điểm giao / ngày giao
Đếm theo số phần ăn, không đếm số đơn. Một đơn 3 suất chiếm 3 chỗ. Còn 2 mà đặt 3 → từ chối cả yêu cầu, không bán “một phần”. Điểm đầy trên Mini App: khóa chọn + “Đã đủ 90/90 phần”.
Công thức suất còn lại
Còn = 90 − đang giữ − đã thanh toán − đã chốt sản xuất
- Đang giữ: đơn vừa tạo, chờ CK (tối đa 10 phút).
- Đã thanh toán: đã xác nhận tiền, chưa chốt ca nấu.
- Đã chốt: đã vào batch sản xuất — không trả suất khi hủy.
Ví dụ: giữ 12 · đã TT 40 · đã chốt 18 · còn 20 / 90.
Khi nào suất được trả / chuyển?
- Tạo đơn → giữ (reserved +)
- Xác nhận tiền → giữ −, đã TT +
- Hết hạn CK / từ chối review → nhả giữ
- Hủy đơn đã TT trước lúc chốt → nhả suất đã TT
- Chốt batch → đã TT −, đã chốt +
Nhiều người bấm đặt cùng lúc: hệ thống khóa từng điểm, chỉ người đến trước trong hạn mức được giữ chỗ.
Khách hủy trước 20:00 — hoàn tiền thủ công
Được hủy
- Chỉ đơn đã thanh toán, chưa chốt sản xuất.
- Còn trước 20:00 (cửa sổ menu đầy đủ).
- Hệ thống kiểm tra rule — không chỉ ẩn nút trên app.
- Đơn chờ CK: không nút hủy; hết 10 phút thì hết hạn, nhả suất.
Không được hủy
- Sau 20:00.
- Đơn đặt trong khung 20:00–23:00.
- Đã chốt batch / đang sản xuất / đang giao.
Hai ca chốt — Batch 1 và Batch 2
Mỗi đơn thuộc tối đa một ca. Sau khi chốt: không sửa món, không hủy, không đổi điểm giao, không đổi người nhận.
Batch 1 — trước 20:00
Cửa sổ đơn 07:00–20:00. Chốt nguyên liệu chính. Xuất danh sách nấu theo điểm / món / lớp / STT. SRS nhắc “special of the day” lúc chốt — chưa có món ngày (câu 10).
Batch 2 — 20:00 đến 23:00
Chỉ đơn đặt sau 20:00, món còn bán. Chốt lần 2 lúc 23:00. Xuất danh sách bổ sung.
Luồng chốt trên Admin (Phase 1 = bấm tay có kiểm soát)
Bếp đánh dấu “sẵn sàng giao” trên Dashboard. Mini App riêng cho bếp và in tem tại bếp chưa có trong đợt đầu — xem câu 2.
Shipper dùng Mini App (hiện cùng app với khách) — không app riêng
Mỗi shipper gắn một điểm giao. Quét QR của khách (Zalo mở Mini App) hoặc nhập mã 4 số. Mã 4 số chỉ tra trong đúng ngày + đúng điểm, không tìm trên toàn hệ thống. Khi chạy thật trên Zalo cần Mini App đã tạo — xem câu 7.
Sự cố tại điểm (Phase 1 ghi nhận)
Thiếu món / lỗi bếp
Ghi sự cố. Có hoàn tiền ngay hay chỉ log để xử lý cuối ngày — chưa chốt.
Khách không có mặt
Không xác nhận giao. Đơn chờ đóng điểm / nhận muộn.
Sai mã / vấn đề thanh toán
Ghi nhận, admin xem tab sự cố. Không tự đổi trạng thái đơn.
Đã có: tra QR / mã 4 số, bắt đầu giao, xác nhận giao, báo sự cố, đóng điểm. Ảnh chụp QR (mất mạng) vẫn quét được nếu máy shipper có mạng.
Đóng điểm → chờ tại kho → hết hiệu lực 09:00
Cần chốt với khách: từ 07:30–09:00 khách nhận tại kho thế nào? Ai quét / ai xác nhận đã lấy? Hiện sau khi đóng điểm, hệ thống không cho xác nhận “Giao thành công” tại điểm nữa — tránh giao nhầm sau khi xe đã về. Lúc 09:00 có thể tự chuyển đơn chưa nhận sang hết hiệu lực (có thể tắt). Đơn đang báo sự cố có bị hết hạn luôn hay không — xem câu 4.
Trạng thái đơn — khách thấy tiếng Việt, hệ thống giữ mã nội bộ
Không có nút “đổi status tùy ý”. Mỗi bước là một lệnh: xác nhận tiền, hủy, chốt ca, sẵn sàng, bắt đầu giao, xác nhận giao, đóng điểm.
Đang giữ suất 10 phút.
Nhả suất. Khách đặt lại nếu còn chỗ.
Lệch số/nội dung. Vẫn giữ suất.
Có STT, mã 4 số, QR. Được hủy trước 20:00.
Đã trả suất. Admin ck hoàn.
Đã chốt ca. Không hủy / không sửa.
Bếp đóng gói xong.
Shipper tại điểm.
Đã quét / nhập mã hợp lệ.
Sau khi đóng điểm.
Sau 09:00 theo policy. Không xóa đơn.
Mã IN_PRODUCTION có sẵn trong hệ thống nhưng Phase 1 không dùng lệnh riêng — “Đang sản xuất” = đã khóa theo ca. SRS Chương 1 chỉ liệt kê vài trạng thái công khai cho khách (Chờ thanh toán → Đã nhận → Đang sản xuất → Đang giao → Giao thành công / Quá giờ); bảng trên là đủ mã vận hành / admin.
Mỗi đơn có một bộ mã — không tái sử dụng STT đã cấp
| Mã | Ví dụ | Ý nghĩa | Khi nào có |
|---|---|---|---|
| Mã đơn | KA260822-A03-X7Q9 | Ngày giao + điểm + 4 ký tự ngẫu nhiên. Không đổi sau khi tạo. | Khi tạo đơn |
| STT theo điểm | 057 | Số xếp thùng / tem. Field riêng, không ghi đè mã đơn. Hủy rồi không tái sử dụng. | Khi xác nhận thanh toán (PAID) |
| Tham chiếu CK | PAY-KA260822-A03-X7Q9 | Nội dung CK = PAY- + đúng mã đơn. Unique. | Khi tạo đơn |
| Mã nhận 4 số | 4821 | Unique trong ngày + điểm | Khi xác nhận thanh toán |
| QR khách | token / deep link Zalo | Shipper quét để mở đúng đơn | Khi xác nhận thanh toán |
| Mã ca nấu | B1-260811 | Batch 1 hoặc Batch 2 | Khi chốt ca |
| Mã túi | BAG-…-01 | QR từng túi, scan chéo | Phase 2 — cần chốt có làm MVP không |
STT cấp lúc đơn đã thanh toán, theo từng điểm từng ngày. Đơn hủy sau đó không lấy lại số — tránh trùng tem / trùng thùng.
Hai ứng dụng người dùng thấy
Zalo Mini App — khách & shipper
Màu cam / xanh navy / kem theo logo. Khách và shipper đang dùng cùng Mini App trên Zalo (shipper thấy màn hình giao hàng khi được phân quyền). Máy dev đang giả lập đăng nhập Zalo. Khi chạy thật cần Mini App đã tạo trên Zalo — câu 7.
Admin Dashboard — điều hành nội bộ
Đơn (tìm theo mã, tên, lớp, SĐT), xác nhận tiền, kiểm tra lệch CK, hoàn tiền, chốt ca và xuất file bảng tính, sự cố, điểm giao, menu, tạo đơn hộ. Bếp đánh dấu sẵn sàng giao tại đây.
Luồng e2e “ngày đẹp” (nghiệm thu)
Tình huống thực tế — đã có phương án / còn mở
Các case vận hành khách hay hỏi. Không bịa rule mới; chỗ chưa chốt giữ màu cam.
| Tình huống | Cách xử lý | Hệ thống hiện tại |
|---|---|---|
| Người nhận hộ không có Zalo | Khách gửi ảnh QR hoặc mã 4 số. Shipper nhập tay mã trong đúng điểm + đúng ngày. | Đã có nhập mã 4 số. |
| Máy khách mất mạng | Dùng ảnh chụp QR đã lưu. Máy shipper online vẫn quét được. | QR tĩnh / token, không cần khách online lúc giao. |
| Khách đến muộn (sau 07:30) | Shipper đóng điểm → chờ nhận tại kho. Không hoàn tiền (SRS). | Đóng điểm đã có. Ai xác nhận lấy tại kho — câu 3. |
| Thiếu hàng / lỗi bếp | SRS: chuyển “Sự cố – chờ hoàn tiền”. Shipper bấm Báo lỗi. | Chỉ ghi sự cố, chưa đổi status / chưa hoàn — câu 5. |
| CK sai số / sai nội dung | SRS cũ: treo chờ TT đến ~22:00. Phase 1 đang chạy: khách bấm “Tôi đã thanh toán” → kiểm tra, vẫn giữ suất; hoặc hết 10 phút thì hết hạn. | Khách bấm “Tôi đã thanh toán” → đơn vào “Đang kiểm tra”, vẫn giữ suất; hoặc hết 10 phút thì hết hạn. Khác tình huống 6 trong SRS (treo đến khoảng 22:00). |
| Khách gọi hotline / không tự đặt được | SRS: admin tạo đơn hộ, đơn vẫn vào hệ thống (không xuống bếp ngoài hệ thống). | Đã có form tạo đơn hộ trên Admin → vẫn giữ suất / VietQR. |
| Đặt nhiều đơn cùng ngày cùng điểm | Được phép. Mỗi đơn một QR / một mã 4 số. Gom 1 QR tổng = nâng cao. | Mỗi đơn một QR. Gom — câu 8. |
Đợt đầu đang chạy — và những gì cố ý để sau
Đã có trong đợt đầu
- Đặt món Mini App + hạn mức 90 suất
- VietQR, giữ 10 phút, xác nhận tay, review lệch tiền
- Hủy trước 20:00 + hàng đợi hoàn tiền
- Chốt Batch 1/2, xuất CSV, khóa đơn
- STT + mã 4 số + QR khách
- Shipper giao / sự cố / đóng điểm
- Tự xử lý đơn quá giờ lúc 09:00 (có thể tắt)
- Admin tạo đơn hộ, tìm đơn
Không làm ở đợt đầu trừ khi khách yêu cầu
- QR từng túi, tem, scan chéo khách+túi, checklist nhiều túi
- Ngân hàng báo có tiền tự động / đối soát tự động
- Đúng 20:00 và 23:00 tự chốt ca
- Công thức nguyên liệu, trừ kho, menu theo tồn
- Bảng biểu đồ, chăm sóc khách, tích điểm
- In tem thẳng máy nhiệt / file PDF khổ nhỏ (đang xuất file bảng tính)
- Tin nhắn Zalo Official Account
- Mini App riêng cho bếp
Mười câu hỏi — vui lòng trả lời trước khi chạy thật / làm thêm
Các điểm đã thống nhất không hỏi lại: tối đa 90 suất/điểm/ngày, giữ chỗ 10 phút khi chờ CK, hủy trước 20:00 thì trả suất và hoàn tiền tay, thanh toán VietQR do điều hành đối soát, đóng điểm do shipper bấm, 00:00–07:00 không nhận đơn. Mỗi câu dưới đây trích đúng SRS KAS-SRS-07082026, rồi hỏi phần tài liệu chưa viết hết hoặc đang mâu thuẫn.
Người trả lời
Hai chỗ trong cùng tài liệu không cùng một thời điểm. Hiện hệ thống giao bằng QR trên điện thoại khách hoặc mã 4 số (đúng phần nghiệm thu “giao cơ bản”).
Câu trả lời
Hiện điều hành / bếp xuất được file bảng tính danh sách nấu (điểm, món, lớp, số thứ tự). Chưa nối máy in tại bếp, chưa ra file tem khổ nhỏ.
Câu trả lời
SRS nói khách tự đến kho và shipper mang hàng về bếp, nhưng không viết từng bước. Từ 09:00 SRS lại khóa mã QR (câu 4). Hiện sau khi đóng điểm, hệ thống không cho bấm “Giao thành công” nữa.
Câu trả lời — 3 ý
Hệ thống đã làm đúng hướng này (có thể tắt nếu cần). SRS viết chuyển từ “Đang giao hàng”; thực tế sau 07:30 nhiều đơn đã sang “Chờ nhận tại kho”.
Câu trả lời
Hiện shipper bấm “Báo lỗi” thì hệ thống chỉ lưu sự cố, đơn vẫn giữ trạng thái cũ, chưa tự chuyển “chờ hoàn tiền”.
Câu trả lời
Cùng tài liệu: một chỗ bảo tự chạy đúng giờ, một chỗ bảo admin bấm. Hiện điều hành xem trước danh sách, lưu nháp, rồi bấm xác nhận.
Câu trả lời
Cách trên chỉ chạy khi đã có Mini App trên Zalo (mã ứng dụng). Máy thử nghiệm đang đăng nhập giả lập.
Câu trả lời
SRS ghi nâng cao. Hiện mỗi đơn một QR và một mã 4 số. Đặt nhiều đơn cùng ngày cùng điểm thì được phép.
Câu trả lời
Hiện khách chỉ xem trạng thái trong Mini App. Chưa gửi tin Zalo. Gửi tin cần Official Account Zalo đã duyệt.
Câu trả lời
SRS nhắc món này lúc chốt ca 1 nhưng không viết cách cấu hình. Hiện menu đợt đầu là Combo A / Combo B.
Câu trả lời
Nên chốt thêm khi sắp chạy thật
Không phải mâu thuẫn SRS, nhưng cần số liệu vận hành:
Đăng nhập điều hành
Tài khoản nhận VietQR
Shipper gắn điểm
Đã gửi câu trả lời
KAS đã nhận được. Cảm ơn anh/chị đã xác nhận các điểm còn mở.