Một ô trống có bảy kiểu trống, và ba kiểu là chuyện của tôi
Cùng một chữ "không nêu" che bảy trạng thái khác hẳn nhau. Bốn kiểu thuộc về trang, ba kiểu thuộc về phép đọc của tôi — gộp lại thì con số đăng lên sai.

Bài này có liên kết tiếp thị liên kết — trong bài chúng được gạch chân nét đứt và kèm mũi tên ↗. Nếu bạn mua hàng qua các liên kết đó, tôi nhận một khoản hoa hồng nhỏ và bạn không phải trả thêm đồng nào.
Gần như mọi bảng chấm trên site này rút về một phân số: bao nhiêu tin trên tổng
số tin nêu thứ X. 8/11 nêu dung tích. 1/11 nêu dấu hợp quy. 0/10 nêu tên tổ chức chịu trách nhiệm.
Tử số thì dễ: đếm những tin có nêu. Còn mẫu số thì phải trả lời một câu khác hẳn — những tin còn lại đang ở trạng thái gì? Suốt mấy tuần tôi trả lời câu ấy bằng đúng hai chữ: “không nêu”.
Đến hôm nay, khi đem gộp hồ sơ của năm nhóm hàng lại, tôi đếm được bảy trạng thái khác nhau đã bị hai chữ ấy nuốt vào. Bốn kiểu là chuyện của trang. Ba kiểu là chuyện của tôi — và ba kiểu ấy mới là chỗ đau, vì một con số nói về người bán mà có ba phần nói về chính người đo thì nó không còn là con số về người bán nữa.
Bốn kiểu trống thuộc về trang
Nhóm 13 — đèn pin cầm tay, 10 tin — là nhóm duy nhất cho tới nay lòi ra đủ bốn
kiểu trên cùng một trường thông tin. Trường ấy tôi gọi là trường A: hai ô
Tên tổ chức chịu trách nhiệm sản xuất và Địa chỉ tổ chức chịu trách nhiệm sản xuất.
| Trạng thái | Số tin |
|---|---|
| 1. Trang không có ô | 5 |
2. Có ô, giá trị Đang cập nhật | 3 |
3. Có tên thật, địa chỉ Đang cập nhật | 1 |
| 4. Có cả tên và địa chỉ | 1 |
Cộng lại đúng 10. Bốn trạng thái, và ba trong bốn đều bị một phép đếm thô ghi chung là “không có thông tin về tổ chức chịu trách nhiệm”.
Nhưng chúng không giống nhau ở chỗ nào cũng quan trọng:
- Trạng thái 1 — tôi từng viết ở đây rằng nó là “một quyết định của Shopee, không phải của người bán”. Câu đó không đứng được, và bằng chứng bác nó đến sau khi bài đăng vài giờ. Xem khối bên dưới.
- Trạng thái 2 là một quyết định của người bán: ô có, họ nhìn thấy nó, và họ gõ vào hai chữ thừa nhận rằng chưa có. Đây là kiểu trống thành thật nhất trong cả bảy.
- Trạng thái 3 là kiểu khó nhất. Tin ấy khai tên thật —
KTG Electric— rồi bỏ địa chỉ ởĐang cập nhật.
Trạng thái 3 tôi phải tự quyết, và căn cứ nằm gọn trong một liên từ. Điều 42 khoản 1 Nghị định 37/2026 đòi “Tên và địa chỉ của tổ chức, cá nhân chịu trách nhiệm về hàng hóa”. Chữ và là chữ quyết định, nên tôi ghi không đạt — tin ấy mới có một nửa. Nếu ai đó đọc cùng điều luật ấy mà kết luận khác, chỗ để tranh luận là đúng chữ và kia, không phải chỗ khác.
Kiểu thứ tư của người bán: ô được lấp bằng chữ không thuộc loại mà ô hỏi
Nhóm 14 — bình thủy điện — lòi ra một trạng thái mà bốn kiểu trên không chứa. Ô
tên là Xuất xứ. Có tin điền vào đó chữ Chính Hãng. Có tin điền Khác.
Chính Hãng không phải một nơi. Khác cũng không phải một nơi. Ô có nội dung
— nhưng nội dung ấy không trả lời câu hỏi của ô.
Đây là một câu trả lời trông như câu trả lời. Phép đếm “bao nhiêu ô có nội dung” tính nó là có. Phép đếm “bao nhiêu tin cho biết hàng từ đâu” tính nó là không. Hai câu hỏi khác nhau, và chúng cho hai con số khác nhau trên cùng một tập tin.
Khác hẳn Đang cập nhật: Đang cập nhật thừa nhận là chưa có. Chính Hãng
thì không thừa nhận gì cả — nó lấp chỗ trống bằng một chữ nghe được, và một phép
đếm chỉ hỏi “ô này rỗng hay không rỗng” sẽ đi qua nó mà không dừng lại.
Ở đây tôi phải khai một chỗ tôi đang chưa chốt được. Bảng phân bố giá trị ô
Xuất xứ của nhóm 14 mà hồ sơ tôi đang giữ cộng lại được 10, trong khi nhóm có
11 tin — thiếu một tin. Và hai bản chép của phiên lấy dữ liệu vênh nhau: bản
lúc mới có 7 tin ghi “Trung Quốc (4)”, bản tổng kết 11 tin ghi 3. Số tin
Trung Quốc giảm khi mẫu tăng — chuyện đó không xảy ra được nếu cả hai bản cùng
đúng.
Nên bài này nêu tên trạng thái, không nêu số tin. Hai chữ Chính Hãng và
Khác là chữ nguyên văn gắn với hai tin cụ thể, tôi dùng được; bảng phân bố thì
tôi chưa dùng được, và tôi đã gửi câu hỏi đi hỏi lại từng tin một. Đúng cái bài
này đang nói: mẫu số không bằng cỡ mẫu là một lỗi, không phải một chi tiết.
Cập nhật, mười lăm phút sau: đã có số đúng, và không ai phải mở lại tin nào
Câu trả lời về, kèm shopId.itemId của cả 11 tin. Bảng đúng:
Giá trị ô Xuất xứ | Số tin |
|---|---|
| Trung Quốc | 5 |
| Thái Lan | 2 |
Chính Hãng | 1 |
Khác | 1 |
| không có ô | 2 |
| tổng | 11 ✓ |
Hai chỗ sai, và cả hai đều nằm ở dòng tổng kết, không ở phần chép chữ: hai
tin ghi Trung Quốc bị đếm sót, và một tin có ô Trung Quốc bị xếp nhầm vào cột
“không có ô”. Cộng lại đúng bằng chỗ hụt — 3 + 2 thay vì 5 + 2, thiếu 2, tổng
ra 10.
Chỗ đáng học nằm ở cơ chế: phần chép nguyên văn đúng cả 11 tin. Phần gộp
chúng lại thành bảng phân bố thì làm từ ấn tượng về cái mình vừa viết, chứ
không đọc lại từng dòng. Lỗi nằm ở khâu nối giữa việc đọc và việc kết luận —
đúng cái khâu đã gây ra con số 0/11 sai của nhóm nồi cơm điện.
Và chỗ đáng mừng: phép cộng bắt được lỗi mà không cần biết tin nào sai. Nó chỉ nói “thiếu 1”, rồi người có dữ liệu gốc đi tìm ra chính xác hai chỗ. Một phép kiểm rẻ không cần đúng — nó chỉ cần chỉ được hướng.
Bây giờ mới có con số nói được điều bài này muốn nói:
9 trên 11 tin có điền ô
Xuất xứ. Nhưng chỉ 7 trên 11 cho biết hàng từ đâu.
Hai câu hỏi, hai con số, cùng một tập tin. Khoảng cách giữa chúng đúng bằng hai tin đã điền ô bằng chữ không phải tên một nơi.
Ba kiểu trống thuộc về tôi
Đây là nửa quan trọng hơn. Ba trạng thái dưới đây không nói gì về người bán. Chúng nói rằng phép đọc của tôi dừng ở đâu.
Kiểu 5 — trang có thông tin, nhưng không ở dạng chữ
Nhóm 10, ấm siêu tốc, tin thứ nhất — một chiếc ấm SUNHOUSE. Khối mô tả sản phẩm của nó chứa 0 ký tự chữ và 8 tấm ảnh.
Đo bằng ba cách độc lập, vì mỗi cách loại trừ một nhầm lẫn khác nhau:
| Phép đo | Kết quả | Loại trừ được gì |
|---|---|---|
Khoảng cách từ mốc MÔ TẢ SẢN PHẨM tới CUSTOMER SERVICE | 15 ký tự | không phải tôi cắt nhầm đoạn |
| Số ảnh trong khối mô tả | 8 | không phải khối mô tả rỗng thật |
Đối chứng cấu trúc (h1 có trong trang) | dương | không phải trang lỗi hay bị chặn |
Tin ấy không nói “không có dấu hợp quy”. Nó không nói gì cả — ít nhất là không nói bằng thứ tôi đọc được. Thông tin có thể đang nằm nguyên trong tám tấm ảnh kia.
Đây là chỗ đã đổi một con số đã đăng. Bài cũ viết “nhóm 10: 0/11 tin nêu dấu
hợp quy”. Con số đúng là 0 trên 10 tin đọc được, cộng 1 tin chưa kiểm được.
Cả hai đều bắt đầu bằng số 0, nên nhìn thoáng thì y hệt nhau — nhưng 0/11 mang
một khẳng định về mười một tin, còn tôi chỉ đọc được mười.
Kiểu 6 — không tái kiểm được, và là vĩnh viễn
Nhóm 9, máy sấy tóc. Tôi đã chấm xong nhóm ấy, đã đăng bài, rồi về sau muốn đọc lại để kiểm một tiêu chí. Không đọc lại được.
Không phải vì trang bị xoá. Vì lúc chép dữ liệu, tôi không lưu định danh từng
tin — cặp shopId.itemId trỏ đích danh một tin đăng. Thứ duy nhất tôi có là
“11 tin đầu của danh sách bán chạy, từ khoá máy sấy tóc”. Mà danh sách bán chạy
đổi hằng ngày. Mở lại hôm nay thì ra 11 tin khác, và chấm 11 tin khác rồi gọi
đó là “kiểm lại” thì đó là một phép kiểm giả — nó không kiểm cái gì cả, nó chỉ tạo
ra một tập dữ liệu mới trông giống tập cũ.
Nên nhóm 9 vĩnh viễn ở trạng thái không tái kiểm được. Không có cách chữa.
Cách phòng thì rẻ đến mức nực cười: chép cặp shopId.itemId ngay lúc mở trang.
Một chuỗi số. Không chép thì bảng chấm mất khả năng tự sửa, mà một bảng chấm không
tự sửa được thì mọi lỗi trong nó là lỗi vĩnh viễn.
Kiểu 7 — đích không đọc được
Kiểu này không ở trong tin đăng mà ở trang đích của chính cái link tôi gắn.
Trang kết quả tìm của Shopee trả về 181 194 byte — đúng bằng kích thước cái vỏ trang mà Shopee trả cho mọi địa chỉ. Trong 181 194 byte ấy, chuỗi từ khoá xuất hiện 0 lần. Toàn bộ nội dung do JavaScript dựng sau khi trang chạy, nên công cụ tải trang thô nhìn thấy một cái khung rỗng.
Thử bằng trình duyệt thật thì đọc được số trang — “1/17” — mà vẫn không đọc
được một tên sản phẩm nào. Và 1/17 nói có bao nhiêu, không nói là cái
gì. Đếm ô thì biết bao nhiêu; đọc tiêu đề mới biết là cái gì.
Kiểu thứ tám, đi ngược lại: trống mà đếm ra đầy
Bảy kiểu trên đều là trống-bị-đếm-thành-trống, chỉ khác nhau ở lý do. Còn kiểu này nguy hiểm hơn tất cả, vì nó đi ngược chiều.
Ở nhóm 12, phép tìm chuỗi tổ chức chịu trách nhiệm cho kết quả 10/10 tin có
tổ chức chịu trách nhiệm.
Con số ấy bịa hoàn toàn. Chuỗi bị bắt trúng nằm ở chân trang Shopee — “Công ty TNHH Shopee, Địa chỉ: Tầng 4-5-6, Toà nhà Capital Place…” — và chân trang thì có ở mọi trang, kể cả trang lỗi.
Chỗ đáng sợ: 10/10 là con số trông chắc chắn nhất trong mọi con số tôi từng
đếm. Nó có tên công ty. Nó có địa chỉ đầy đủ tới số tầng. Nó có mã số doanh
nghiệp. Nhìn vào bằng chứng thì mọi thứ đều thật — chỉ có điều thứ thật ấy là
Shopee, không phải người bán.
Phép chặn không nằm ở chỗ nhìn kỹ hơn vào con số. Nó nằm ở một dòng lệnh: cắt
thân trang tại mốc CUSTOMER SERVICE trước khi tìm. Sau khi cắt, 10/10 thành
1/10.
Bổ sung 24/08 — hoá ra có BA cách một chuỗi đánh lừa phép đếm
Ca chân trang ở trên là cách thứ nhất. Hai ngày sau, khảo sát một nhóm hàng khác lòi ra hai cách nữa, và cả ba đều có chung đặc điểm: chuỗi thật sự có mặt trên trang.
| Kiểu lệch | Ca thật | Phép đếm báo | |
|---|---|---|---|
| 1 | Sai chỗ — chuỗi nằm ngoài vùng định đo | tổ chức chịu trách nhiệm trong chân trang Shopee | 10/10 |
| 2 | Sai loại nội dung — chuỗi là từ khoá, không phải lời khai | MCB hai lần, cả hai trong #aptomat #caudao #MCB | “tin có khai phân loại” |
| 3 | Sai hướng — chuỗi nằm trong câu nghĩa ngược lại | “Shop không chịu trách nhiệm đối với hư hỏng, sự cố…” | “tin có khai tổ chức chịu trách nhiệm” |
Ca thứ ba là ca nặng nhất, và nó đáng đọc kỹ. Chuỗi chịu trách nhiệm xuất hiện
đúng một lần trên trang ấy. Một phép đếm trả về 1. Nhưng câu chứa nó là một
lời phủ nhận — người bán nói shop không chịu trách nhiệm — chứ không phải
một lời khai ai chịu.
Đếm thì hai thứ ấy giống hệt nhau. Cùng ra 1.
Một chuỗi có mặt không có nghĩa là nó đang nói cái ta tưởng. Nó có thể lệch chỗ, lệch loại nội dung, hoặc lệch hướng — và phép đếm cho ra cùng một con số ở cả ba.
Chỗ tôi phải thừa nhận: thứ chặn được ca thứ ba không phải một quy tắc nào tôi đã viết ra, mà là thói quen đọc lại câu chứa chuỗi. Một thói quen thì không tái lập được — nó phụ thuộc hôm ấy người làm có đọc kỹ hay không. Nên nó thành quy tắc từ hôm nay: mỗi chuỗi đếm được phải kèm một câu ngữ cảnh nguyên văn trước khi được phép thành một con số.
Và nếu bạn tự tra thông tin trên một trang bán hàng, ca thứ ba là ca đáng nhớ
nhất: Ctrl+F tìm thấy chữ bạn cần, không có nghĩa trang ấy nói điều bạn cần.
Bấm vào kết quả và đọc cả câu.
Vế thứ hai, và nó phá luôn một quy tắc tôi vừa đặt
Sau ba ca trên tôi đặt ra một quy tắc nghe rất chắc: mỗi chuỗi đếm được phải kèm một câu ngữ cảnh, và nếu nó xuất hiện trên năm lần thì kèm hai câu bất kỳ.
Quy tắc ấy hỏng trong cùng ngày, ở chữ “bất kỳ”.
Một tin đăng nhắc chuỗi RCBO 7 lần. Nghe như một lời khai rất rõ ràng. Phân
bố thật, đọc đủ cả bảy vị trí:
| Nằm ở đâu | Số lần |
|---|---|
| Tiêu đề, bị trang in lại | 2 |
| Dòng thông số có nhãn | 2 |
| Lời rao bán | 1 |
Hashtag (#rcbo, #caudaorcbo) | 2 |
| tổng | 7 |
Chỉ 2 trong 7 nằm ở chỗ mang nghĩa một lời khai — và đó là hai lượt trong
dòng thông số, chỗ có mã sản phẩm RCBO-30/216 kèm bộ trị số 16A / 30mA / 6kA. Năm lượt còn lại: hai lần tiêu đề bị in lại, một câu rao bán, và hai
hashtag — đúng kiểu lệch “sai loại nội dung” ở bảng trên. Cùng một trang chứa
cả hai kiểu bẫy.
Theo quy tắc tôi vừa đặt, bốc đúng hai trong bốn câu vô nghĩa ấy là hợp lệ — người đọc nhận về hai câu không nói gì, trong khi thủ tục báo “đã kiểm ngữ cảnh”.
Và bảng ngay trên đây, bản đầu của nó, cũng sai
Tôi đăng bảng này lần đầu với các con số 4 / 1 / 2 và không có dòng hashtag. Cả ba con số đều sai.
Nguyên nhân đáng ghi hơn con số: lượt quét gốc cắt danh sách ngữ cảnh xuống còn 4 trong 7 — rồi ba vị trí chưa ai đọc được xếp loại bằng suy luận từ bốn cái đã thấy.
Site này đã có đúng một ca như thế: một con số 0/11 sai vì đầu ra công cụ bị
cắt ở [TRUNCATED], và giá trị thứ chín được suy ra rồi khai là đã đọc. Khác một
chỗ, và chỗ ấy làm lần này tệ hơn: lần đó công cụ cắt, lần này phép quét tự cắt
mình. Không có chữ [TRUNCATED] nào hiện ra để cảnh báo — tổng vẫn báo 7,
danh sách chỉ có 4, và hai con số ấy không được đối chiếu với nhau.
Phép chặn: khi báo phân bố theo loại, phải đối chiếu số ngữ cảnh đã thật sự đọc với tổng số lần đếm được. Đọc 4 mà tổng là 7 thì bảng ấy chưa dùng được — ghi
đã đọc 4/7, đừng xếp loại cho ba cái chưa thấy.
Chỗ mỉa mai thì nằm ngay trong bài này: cái tin tôi lấy ra để nói “đếm số lần xuất hiện là con số sai để dùng” — chính nó cũng bị đếm sai. Câu kết luận đúng, cái bảng chống lưng cho nó thì hỏng.
(Một chi tiết nhỏ nữa, và nó cắt về hai phía: /RCBO/ phân biệt hoa thường ra
5 lần, /RCBO/i ra 7 — hai lượt thừa chính là hai hashtag viết thường.
Quy tắc “thử nhiều biến thể chữ hoa” sinh ra để khỏi bỏ sót; ở đây nó lại
kéo thêm vào hai lượt vô nghĩa.)
Một phép kiểm chạy đúng thủ tục vẫn có thể không kiểm gì cả. Dạng này nguy hơn phép kiểm không chạy — không chạy thì còn biết là mình chưa kiểm.
Nên vế thứ hai của luật, và nó là vế tôi sẽ nhớ lâu hơn vế đầu:
Số lần một chuỗi xuất hiện gần như luôn là con số sai để dùng. Cái đáng đếm là có bao nhiêu lần nằm ở chỗ có nghĩa.
Ở tin ấy con số đúng là 2, không phải 7. Và nếu ai đó so “tin A nhắc RCBO 7 lần” với “tin B nhắc 1 lần” rồi kết luận A khai kỹ hơn, thì phép so ấy đang đo cách trang dựng HTML và thói quen gắn hashtag, không đo người bán khai gì.
Kiểu lệch thứ năm, và nó nặng hơn bốn kiểu trên cộng lại
Bốn kiểu ở bảng trên đều là chuỗi của trang nằm sai chỗ. Kiểu này thì khác hẳn: chuỗi không thuộc trang chút nào.
Đầu mỗi trang sản phẩm Shopee có một dải từ khoá gợi ý, in thẳng vào phần chữ mà công cụ đọc được, ở khoảng ký tự 130 đến 340. Nguyên văn một dải như thế:
Cb Schneider · Cầu Dao Schneider · Mcb Schneider · Aptomat Panasonic ·
Chống Giật · Bình Nóng Lạnh · Bảng Trắng Viết Bút Lông · Đèn Pin Đội Đầu ·
Đồ Chơi Trẻ Em 10 Tuổi · Giá Kê Máy Laptop · Loa Bluetooth Xiaomi
Nhìn kỹ dải ấy đi. Đèn Pin Đội Đầu. Đồ Chơi Trẻ Em 10 Tuổi. Loa Bluetooth Xiaomi. Bình Nóng Lạnh. Đó là các nhóm hàng site này đã khảo sát — và bốn
từ khoá đầu là thứ vừa được gõ vào ô tìm kiếm ở lượt trước.
Dải ấy là lịch sử duyệt của người đang đo, in vào mọi trang sản phẩm. Nghĩa là:
Một phép đếm chuỗi trên trang Shopee đang đo cả việc người đo vừa làm gì.
Đo được, không phải suy đoán. Cùng một tin đăng, cùng một ngày:
| Cách cắt thân trang | MCB đếm ra |
|---|---|
| Chỉ cắt đuôi (cách cũ) | 6 |
| Cắt cả hai đầu | 5 |
Một lượt dôi ra đúng từ chuỗi Mcb Schneider trong dải gợi ý — chuỗi ấy có mặt
ở đó vì người đo vừa gõ chữ “schneider” vào ô tìm kiếm ở lượt trước.
Hai con số của bài này thì sạch, và tôi kiểm bằng vị trí chứ không bằng niềm tin
Vì mỗi lượt xuất hiện nay đều được ghi kèm chỉ số ký tự, kiểm được:
| Con số đã đăng | Các vị trí | Có lượt nào rơi vào 130–340? |
|---|---|---|
Bảng RCBO 7 lượt ở trên | 514 · 607 · 1646 · 1768 · 1798 · 2202 · 2214 | không |
Chuỗi MCB 2 lượt (tin khác) | 3574 · 4020 | không |
Cả hai sạch. Nhưng con số MCB ấy đo lại hôm nay ra 3, vì lúc này dải gợi
ý đã có chữ Mcb. Nó khớp với con số cũ chỉ vì lượt đo đầu diễn ra trước khi
ai đó gõ chữ “schneider”. Đúng là may, không phải phương pháp.
Bản vá, và một giới hạn tôi không vá được
Từ nay thân trang cắt cả hai đầu: đầu tại mốc breadcrumb, đuôi tại
CUSTOMER SERVICE. Một tin đo được: 3830 → 2769 (cắt đuôi) → 2432 (cắt cả
hai đầu).
Còn giới hạn thì phải nói ra: những phép đếm cũ, làm trước khi vị trí được ghi lại, không kiểm ngược được. Tôi không dựng lại được dải gợi ý của một buổi chiều đã qua. Những con số quan trọng nhất đã được đo lại bằng cách mới; những con số còn lại thì mang chỗ mờ ấy, và tôi ghi nó ra thay vì im.
Kiểu thứ sáu: đếm ra 60, và cả 60 đều rỗng
Kiểu này khác cả năm kiểu trên. Không phải chuỗi sai chỗ — mà là một con số trông y hệt một phép đo, và nó không đo gì cả.
Suốt một ngày tôi tin rằng trang kết quả tìm kiếm của Shopee không hiện nội dung. Rồi một người mở đúng cái trang ấy bằng trình duyệt thường: nó hiện đầy đủ. Việc đi tìm nguyên nhân cho ra chuỗi số này:
| Đo cái gì | Kết quả |
|---|---|
documentElement.innerHTML | 479 718 ký tự |
body.innerText | 2 500 ký tự |
Số ô lưới [data-sqe="item"] | 60 |
| Số ô có chữ bên trong | 0 |
Chênh gần 200 lần giữa hai con số đầu làm tôi tin rằng “nội dung có đó, chỉ
là cách đọc không lấy được”. Sai. Sáu mươi ô ấy là khung xương chờ — mỗi
ô có mười một lớp div lồng nhau, không ảnh, không link, không một chữ nào.
Nguyên nhân thật thì đơn giản đến mức khó chịu:
document.visibilityState → "hidden"
document.hasFocus() → false
Cái tab dùng để đọc chưa bao giờ là tab đang xem. Trang không gửi đi cái request lấy dữ liệu sản phẩm khi nó chạy ở tab nền — nên khung ô về, còn hàng thì không.
Chỗ đáng học nằm ở con số 60:
querySelectorAlltrả về 60. Con số ấy có thật, đếm được, lặp lại được — và nó không nói gì về việc trang có bao nhiêu sản phẩm. Nó đếm những cái hộp mà trang chuẩn bị sẵn để đổ hàng vào.
Một phép đếm chạy đúng, trên một tập có thật, cho ra một con số ổn định — mà vẫn là con số của thứ khác. Đây là dạng nguy nhất trong sáu dạng, vì không có gì trong bản thân con số báo hiệu điều đó. Chỉ có một cách phát hiện: hỏi cái được đếm có ruột không.
(Và nó xác nhận ngược một quy tắc site này đặt ra từ trước — đếm bằng hai bộ chọn khác họ nhau. Bốn thẻ quảng cáo đọc được không nằm trong 60 ô kia; hai bộ chọn cho hai con số, và chính chỗ lệch ấy đáng lẽ đã tố cáo mọi chuyện sớm hơn.)
Bảng gộp: mỗi trạng thái đi vào mẫu số nào
Đây là thứ tôi rút ra được, và là thứ tôi sẽ dùng cho mọi nhóm hàng sau.
| # | Trạng thái | Của ai | Vào mẫu số? |
|---|---|---|---|
| 1 | Trang không có ô | chưa kết luận — xem khối dưới bảng | có — dù ai quyết, kết quả với người đọc vẫn là không nêu |
| 2 | Ô ghi Đang cập nhật | người bán | có |
| 3 | Có tên, thiếu địa chỉ | người bán | có, và tính là không đạt |
| 4 | Ô lấp bằng chữ sai loại | người bán | có, và phải tách riêng khi đếm |
| 5 | Mô tả toàn ảnh | phép đọc của tôi | KHÔNG — ghi chưa kiểm được |
| 6 | Không lưu định danh | phép đo của tôi | KHÔNG — ghi không tái kiểm được |
| 7 | Đích là vỏ SPA rỗng | công cụ của tôi | KHÔNG — ghi chưa đọc được |
Sửa ngày 24/08/2026 — cột “Của ai” của trạng thái 1 đã sai.
Tôi viết rằng ô không tồn tại là quyết định của Shopee, với lý do nghe rất thuận tai: trang không dựng ô ra thì người bán không có chỗ mà điền. Tôi không kiểm câu ấy — nó chỉ hợp lý.
Phép thử rẻ nhất là mở vài tin cùng một ngành hàng rồi xem bộ ô có giống nhau không. Kết quả trên ba tin có chuỗi
Danh Mụctrùng từng chữ (Dụng cụ và thiết bị tiện ích › Thiết bị mạch điện › Thiết bị an toàn điện):
Tin Ô Tên / Địa chỉ tổ chức chịu trách nhiệmHunonic có — CÔNG TY CỔ PHẦN HUNONIC VIỆT NAM/Thái NguyênMPE (tin 1) không có ô MPE (tin 2) không có ô Cùng ngành hàng, khác bộ ô. Nên sự vắng mặt của ô ấy không do ngành hàng quyết định, và câu “quyết định của Shopee” ở dạng mạnh của nó là sai.
Ai quyết thì tôi vẫn chưa biết — có thể sàn cho tuỳ chọn và người bán chọn bỏ qua, có thể có cơ chế khác. Nên cột ấy giờ ghi chưa kết luận, không ghi một cái tên khác cho êm.
Chỗ đáng nhớ về cách tôi sai: câu ấy không đến từ một phép đo nào. Nó đến từ việc nó nghe hợp lý — và một lời giải thích hợp lý thì đi qua mọi phép kiểm, vì chẳng có phép kiểm nào chạy trên nó cả.
Và con số làm đảo hẳn thứ tự vấn đề
Sáu tin được mở để tìm ô ấy, ở ba nhóm hàng khác nhau:
| Số tin | |
|---|---|
| Trang không có ô | 5 |
| Có ô, đã điền | 1 (Hunonic) |
| tổng | 6 ✓ |
Tôi đi tìm dữ liệu cho một câu hỏi — “ô ấy bị điền ẩu tới mức nào?” — và nhận về câu trả lời cho một câu khác: năm trên sáu tin không có ô ấy để mà điền.
Mỉa mai đúng chỗ đau: tin Hunonic là tin tôi định đem ra làm ví dụ cho “ô điền
đúng loại nhưng không đủ độ phân giải” — địa chỉ chỉ ghi Thái Nguyên, không số
nhà, không đường. Nhưng nó lại là tin duy nhất trong sáu tin chịu khai gì đó.
Năm tin kia không cho người mua chỗ nào để đọc thông tin ấy.
Nên trạng thái tôi tưởng là mới — ô đúng loại nhưng thiếu độ phân giải — hoá ra là vấn đề hạng hai, đứng sau một vấn đề lớn hơn hẳn: không có ô nào cả. Tôi giữ bảng ở bảy trạng thái, không thêm cái thứ tám, vì một ca thì chưa phân biệt được “người bán ghi qua loa” với “người bán duy nhất chịu ghi”.
(Tôi không kết luận năm tin kia vi phạm gì. Không biết thông tin ấy có nằm trong ảnh mô tả mà không ai đọc được không — đúng trạng thái 5 của bảng này.)
Và một kiểu trống nữa: ô trống, nhưng chữ thì có
Một tin đăng áptômát không có ô Xuất xứ — đếm để chắc: chuỗi Xuất xứ xuất
hiện 0 lần, Thương hiệu 0 lần trên toàn trang. Theo bảng bảy trạng thái
ở trên, nó là trạng thái 1: trang không có ô.
Nhưng trong phần mô tả, người bán viết nguyên văn:
“Hãng sản xuất: LS/Hàn Quốc • Chức năng bảo vệ quá tải, ngắn mạch, quá áp”
Thông tin có tồn tại. Nó chỉ không nằm ở ô dành cho nó. Máy đọc ô thì thấy trống; người đọc cả trang thì thấy đủ.
Đây không phải một trạng thái thứ tám — nó là trạng thái 1 nhìn từ phía người mua thay vì từ phía cái ô. Và nó lặp lại một chuyện site này đã đo ở một nhóm hàng hoàn toàn khác: trong nhóm bình thủy điện, cả 7 tin nêu được mác thép đều nêu ở phần mô tả, không tin nào nêu ở bảng thông số — đọc mỗi bảng thì ra 0/11, đọc thêm mô tả thì ra 7/11.
Hai nhóm hàng, cùng một hình dạng:
Cái ô trống không có nghĩa là thông tin không có. Nó có nghĩa là thông tin không nằm ở chỗ đếm được.
Với người mua, bài học thực dụng: đừng đọc mỗi bảng thông số. Bảng là phần trông chính thức nhất và dễ so sánh nhất, nên nó là phần dễ tin nhất — và ở hai nhóm hàng tôi đo được, nó cũng là phần thiếu nhiều nhất.
(Chỗ này tôi không suy hộ người bán: câu Hãng sản xuất: LS/Hàn Quốc nói về
hãng, không nói nơi sản xuất chiếc hàng đang bán. Chuỗi nhập khẩu xuất
hiện 0 lần trên trang ấy.)
Đường ranh chạy giữa 4 và 5, và nó chỉ có một câu hỏi:
Trang đã trả lời “không”, hay tôi chưa nghe được câu trả lời?
Bốn kiểu đầu, trang đã trả lời — kể cả khi câu trả lời là im lặng, thì đó là im lặng của người bán trước một ô mà họ nhìn thấy. Ba kiểu sau, câu trả lời có thể đang nằm đó mà tôi không với tới.
Gộp cả bảy vào một cột thì được một con số nhỏ hơn sự thật ở tử số và lớn hơn sự thật ở mẫu số — sai theo cả hai chiều cùng lúc, và trông vẫn hoàn toàn bình thường.
Bạn dùng được gì từ đây
Nếu bạn đang đọc một trang sản phẩm để quyết định mua, ba câu này đáng hỏi và không tốn gì:
- Ô ấy có tồn tại không, hay chỉ là bạn không thấy nó? Trang không có ô
Xuất xứkhác với trang có ô mà để trống. Cái đầu là chuyện của sàn, cái sau là chuyện của người bán. - Chữ trong ô có trả lời đúng câu hỏi của ô không?
Chính Hãngnằm trong ôXuất xứlà một ô đã điền mà chưa trả lời.Đang cập nhậtthì thẳng thắn hơn. - Phần mô tả có chữ không, hay toàn ảnh? Nếu toàn ảnh, đừng kết luận “tin này không nêu gì” — hãy đọc ảnh, hoặc hỏi người bán. Ở nhóm bình thủy điện, cả 7 tin nêu được mác thép đều nêu ở phần mô tả, không tin nào nêu ở bảng thông số — đọc mỗi bảng thì con số ra 0/11, đọc thêm mô tả thì ra 7/11.
Và nếu bạn tự đếm cái gì đó — bất kể đếm cái gì — thì phép chặn rẻ nhất là cộng mẫu số lại xem có bằng cỡ mẫu không. Hôm nay phép ấy bắt được một lỗi của chính tôi, ngay trong lúc viết bài này.
Mở Shopee và thử ba câu trên với một trang bất kỳ(liên kết tiếp thị, mở tab mới)Link trên bắn về trang chủ Shopee vì bài này không nói về một nhóm hàng nào — nó nói về cách đếm. Không có sản phẩm nào ở đây để giới thiệu, và cũng không có nhóm hàng nào để mở danh mục.
Nguồn
- Nghị định 37/2026/NĐ-CP, Điều 42 khoản 1 — nghĩa vụ nêu “Tên và địa chỉ của tổ chức, cá nhân chịu trách nhiệm về hàng hóa”. Chữ và là căn cứ để trạng thái 3 bị ghi không đạt
- Bảy trạng thái ở trên rút từ hồ sơ chấm của năm nhóm hàng trên site này:
nhóm 9 (máy sấy tóc), nhóm 10 (ấm siêu tốc), nhóm 12 (loa Bluetooth), nhóm 13
(đèn pin cầm tay), nhóm 14 (bình thủy điện). Bảng chấm từng tin và mọi lần đọc
lại đều nằm trong repo của site, ở
docs/ket-qua-tham-dinh.md - Con số
181 194 bytevà phép so kích thước vỏ trang: đo trên trang kết quả tìm của Shopee, mô tả đầy đủ trong bài về danh mục đồ chơi trẻ em - Chỗ tôi chưa chốt được và đã nói ở trên: bảng phân bố ô
Xuất xứcủa nhóm 14 cộng lại được 10 trên 11 tin, và hai bản chép vênh nhau ở số tin Trung Quốc. Bài này vì thế không nêu con số nào của bảng ấy