"Đồng bộ tồn kho mỗi 30 phút" — vì sao vẫn cháy đơn, vẫn ôm hàng
Phần mềm nào cũng quảng cáo “đồng bộ tồn kho đa kênh”. Chạy được vài tháng, bạn vẫn gặp đúng hai chuyện cũ: cháy đơn vào giờ cao điểm và ôm hàng chết vì kênh nào cũng chừa một ít cho chắc.
Lý do nằm ở hai chỗ, không phải ở tần suất đồng bộ. Thứ nhất, đồng bộ theo lịch thì giữa hai lần luôn có khoảng chết — 30 phút hay 5 phút cũng vậy, chỉ khác độ dài. Thứ hai, con số đem đi đồng bộ thường là tồn vật lý, trong khi thứ bán được là tồn sẵn bán — hai con số này lệch nhau bốn lớp.
Cách chữa không phải “đồng bộ nhanh hơn”, mà là trừ tồn theo sự kiện trên một nguồn duy nhất: đơn nổ ở kênh nào cũng trừ ngay vào cùng một con số, và con số đó đã trừ sẵn phần hàng không còn bán được.
30 phút là bao nhiêu đơn?
Lấy một mã bán chạy trong đợt flash sale: 20h00 mở sale, mã SKU SP-A102 chạy khoảng 240 đơn/giờ ở đỉnh, tồn thực còn 60 (số liệu minh họa).
Đồng bộ 30 phút một lần nghĩa là từ 20h00 tới 20h30, mọi kênh vẫn nhìn thấy con số cũ. Với nhịp 240 đơn/giờ, khoảng chết đó đủ chỗ cho khoảng 120 đơn — gấp đôi số hàng bạn thực có. Phần vượt sẽ thành đơn phải hủy, và hủy đơn ở sàn không chỉ là mất đơn: điểm vận hành tụt, gian hàng bị hạn chế hiển thị, nặng hơn thì bị khóa tính năng trong đợt cao điểm — đúng lúc đắt hàng nhất.
Rút xuống 5 phút thì khoảng chết còn ~20 đơn. Nhỏ hơn, nhưng vẫn là oversell, và bạn phải trả bằng số lần gọi API dày đặc. Đó là lý do cuộc đua “đồng bộ nhanh hơn” không có đích: vấn đề là cơ chế theo lịch, không phải con số phút.
Tồn “sẵn bán” không phải tồn vật lý
Con số trong kho và con số được phép đăng bán khác nhau bốn lớp:
| Lớp | Là gì | Vì sao không được tính vào hàng bán được |
|---|---|---|
| Đã gom cho đơn chưa xuất | Hàng có chủ, chờ nhặt | Bán tiếp là bán thứ đã hứa cho người khác |
| Đang đóng gói, chờ bàn giao | Nằm ở bàn đóng gói | Vật lý còn trong kho nhưng thực tế đã đi |
| Hoàn về chưa kiểm | Kiện hàng hoàn chưa mở | Chưa biết còn bán lại được không |
| Hàng lỗi, cận date, chờ hủy | Đã tách khỏi hàng tốt | Bán ra là rước khiếu nại |
Tồn sẵn bán = tồn vật lý trừ đủ bốn lớp trên. Đăng bán theo tồn vật lý là nguồn oversell phổ biến nhất, và nó không hiện ra cho tới ngày dồn đơn. Hai lớp cuối bảng còn dính sang chỗ khác: hàng hoàn chỉ quay lại tồn sẵn bán sau khi đã nhận – kiểm – phân loại đúng quy trình, không phải lúc kiện về tới cửa kho.
Trừ theo sự kiện, không theo lịch
Nguyên tắc gọn: mỗi sự kiện làm đổi tồn thì trừ hoặc cộng ngay tại nguồn, các kênh đọc từ đó chứ không giữ bản sao riêng. Đơn nổ ở TikTok Shop lúc 20h03 thì tồn chung giảm lúc 20h03, Shopee thấy con số mới ở lần khách kế tiếp mở trang — không chờ tới 20h30.
Đây chính là bài toán một nguồn sự thật cho tồn kho, chỉ nhìn từ góc kỹ thuật: khi tồn nằm ở một chỗ và mọi kênh trừ vào đó theo sự kiện, “đồng bộ” không còn là việc phải làm định kỳ nữa — nó là hệ quả tự nhiên của cách dữ liệu chạy.
Cần nói thẳng phần không đẹp: kênh nào cũng có độ trễ riêng của nền tảng, và không phải sàn nào cũng cho cập nhật tồn tức thì. Bạn không xóa được độ trễ đó, chỉ rút nó từ hàng chục phút xuống vài giây — đủ để flash sale không vỡ.
Buffer bao nhiêu là vừa
Buffer — chừa một phần tồn không đăng bán — là cách chống cháy đơn khi cơ chế trừ tồn còn chậm. Nó có giá: phần chừa ra là hàng nằm kho, và với hàng có hạn dùng thì chừa lâu là chừa luôn cả rủi ro cận date.
Vài mốc thực dụng, xếp theo tình huống chứ không theo công thức:
- Cơ chế theo sự kiện, hàng bán đều: gần như không cần buffer; giữ 0–2 đơn vị cho sai lệch đếm.
- Còn đồng bộ theo lịch: buffer ít nhất bằng lượng bán được trong một chu kỳ đồng bộ ở giờ cao điểm.
- Mã chạy flash sale: tách hẳn một lượng riêng cho đợt sale thay vì buffer chung, hết là dừng.
- Hàng cận date: không buffer — ưu tiên bán ra theo FEFO, chậm ngày nào mất giá ngày đó.
Buffer là thuốc giảm đau, không phải thuốc chữa. Nếu năm nào cũng phải nâng buffer để yên tâm, thứ cần thay là cơ chế trừ tồn.
Dấu hiệu hệ thống hiện tại đã tới hạn
- Nhân viên phải đếm tay cuối ngày để “cho chắc”, và con số đếm tay thường khác hệ thống.
- Mỗi đợt sale là một lần họp căng về việc chia tồn cho từng kênh.
- Có người giữ một file Excel riêng để biết thực sự còn bao nhiêu — dấu hiệu rõ nhất rằng hệ thống không còn được tin.
- Tỷ lệ hủy đơn do hết hàng tăng dần theo tháng, không phải theo mùa.
- Hàng chết trong kho tăng nhưng vẫn liên tục cháy đơn ở mã khác — buffer đang bù cho một cơ chế sai.
Điểm chung của các vụ oversell mùa sale là chúng không đến từ ngày thường: hệ thống chịu được nhịp 30 đơn/giờ suốt nhiều tháng nên không ai thấy vấn đề, rồi một đợt flash sale đẩy nhịp lên gấp mười và toàn bộ khoảng chết của cơ chế đồng bộ lộ ra trong một buổi tối. Cái giá không dừng ở số đơn phải hủy — điểm gian hàng tụt kéo hiển thị xuống đúng mùa bán tốt nhất, và niềm tin của đội vận hành vào con số tồn cũng vỡ theo: từ hôm sau, mọi người quay lại đếm tay, tức là quay lại chỗ xuất phát.
Checklist rà trong một buổi
- Lấy một mã bán chạy: tính số đơn bán được trong một chu kỳ đồng bộ ở giờ cao điểm — đó là mức oversell tối đa bạn đang chấp nhận.
- Kiểm tra con số đang đẩy lên sàn là tồn vật lý hay tồn sẵn bán; nếu là tồn vật lý, liệt kê đủ bốn lớp phải trừ.
- Xem hàng hoàn đang cộng lại tồn ở bước nào — lúc kiện về hay sau khi kiểm.
- Ghi lại buffer từng kênh hiện tại và quy ra tiền hàng nằm kho.
- Chốt một mã thử nghiệm chuyển sang trừ theo sự kiện, so tỷ lệ hủy đơn trước và sau hai tuần.
Kho, đơn sàn và sổ kế toán nằm trên cùng một hệ thì bốn lớp tồn ở trên là dữ liệu có sẵn, không phải thứ phải gom tay mỗi tuần — giải pháp cho nhà máy D2C mô tả đường đi đó.
Hỏi nhanh — đáp gọn
Đồng bộ tồn kho bao lâu một lần là đủ? Không có con số đủ, vì cơ chế theo lịch luôn để lại khoảng chết. Cách chặn oversell là trừ tồn theo sự kiện trên một nguồn duy nhất; tần suất đồng bộ chỉ quyết định khoảng chết dài hay ngắn.
Tồn sẵn bán khác tồn vật lý thế nào? Tồn sẵn bán đã trừ bốn lớp: hàng đã gom cho đơn chưa xuất, hàng đang đóng gói, hàng hoàn chưa kiểm, hàng lỗi hoặc cận date chờ xử. Đăng bán theo tồn vật lý là nguồn oversell phổ biến nhất.
Buffer tồn kho nên đặt bao nhiêu? Nếu còn đồng bộ theo lịch, tối thiểu bằng lượng bán được trong một chu kỳ ở giờ cao điểm. Nếu đã trừ theo sự kiện thì gần như không cần — và với hàng có hạn dùng thì buffer là cách tự tạo hàng cận date.
Nếu muốn biết tồn sẵn bán thật của bạn đang lệch tồn vật lý bao nhiêu, đặt lịch demo 30 phút — mang số liệu một mã bán chạy, chúng tôi chỉ vào đó mà nói, không slide.