Trình duyệt · 09.09.2026 · số liệu bản kéo mới

Kế hoạch làm sạch dữ liệu sản phẩm

Dữ liệu sản phẩm đang nằm ở hai nơi và không nơi nào là bản gốc. Kế hoạch này chốt bản gốc, đo khối lượng phải sửa, và chặn nguồn để ba tháng nữa không lặp lại.

Chưa động vào dữ liệu bán hàng
Phần 1

Vấn đề

Kho cào giữ 470 file CSV với 164.001 lượt sản phẩm, mỗi bạn cào lưu một chỗ. Store đang bán giữ hơn một triệu sản phẩm trên khoảng 350 store. Không có gì nối hai bên lại, nên không ai biết bản nào mới hơn.

Hệ quả nặng nhất: nạp lại một file cào là ghi đè lên hàng đang bán, không cảnh báo gì — vì hệ thống nhận diện sản phẩm theo handle, trùng handle thì đè. Dấu vết duy nhất để lại là SKU đã đổi.

Loại lỗi trong kho càoSố nhómHậu quả
Trùng toàn bộ3.461Rác, không nguy hiểm
Trùng SKU nhưng khác ảnh7.639Mã kho không định danh được thiết kế
Trùng handle và ảnh, khác SKU1.747Nạp sau đè nạp trước, im lặng
Cùng handle, nội dung khác6.569Không biết bản nào chuẩn

Và đây là phần nặng nhất, đo thẳng trên 1.079.859 sản phẩm đang bán ở 359 store:

Lỗi ngay trên hàng đang bánSố lượngHậu quả
Va chạm SKU trong cùng một store2.185 nhóm
6.591 sản phẩm
Nhà in nhận đơn không biết in mẫu nào
Sản phẩm bị nhân bản trong cùng store101 nhóm
129 bản thừa
Cùng tên, cùng bộ SKU, hai handle khác nhau
Phần 2

Bốn nguyên tắc

Store là bản gốc Sản phẩm đã có trên store thì lấy theo bản trên store, bản trong file cào bỏ đi.
Chưa lên store mới check tay Check xong mới đẩy lên, không đẩy trước rồi sửa sau.
Loại 8 store khỏi mọi phạm vi 5 store BlueJose/UniJames và 3 store test niche Linh. Đã áp thẳng vào script kéo dữ liệu nên không phải nhớ.
Không sửa file gốc Bản sạch sinh ra thư mục riêng, thư mục cào giữ nguyên để còn đối chiếu.
Phần 3

Khối lượng thật

Nếu check tay hết 15.955 nhóm, mỗi nhóm 3 phút thì mất 800 giờ người, khoảng 100 ngày công. Không khả thi. Nhưng chính nguyên tắc “store là bản gốc” tự giải quyết phần lớn: nhóm nào mà mọi bản đều đã nằm trên store thì bản trên store chính là câu trả lời, không cần ai xem.

NhómTổng Đã có trên store
khỏi check
Nửa có nửa chưa
check ngay
Chưa lên store
hoãn
Trùng SKU khác ảnh7.6397.2604375
Trùng handle và ảnh1.74779728922
Cùng handle xem tay6.5696.5233412
Tổng15.95514.580661.309
14.580
nhóm được nguyên tắc giải quyết, không cần người
66
nhóm phải quyết định ngay — khoảng nửa ngày công
1.309
nhóm hoãn, chỉ đụng khi thật sự định đẩy lên store
Phần 4

Năm giai đoạn

GĐ 0

Kéo lại dữ liệu và đối soát store đã xong

Việc
Kéo lại toàn bộ product từ production, tự loại 8 store theo nguyên tắc 3
Công cụ
pull-store-products.mjs — đã thêm cờ loại store theo tên, từ nay chạy lại là tự loại
Kết quả
359 store kéo được (bản cũ 347), 1.079.859 sản phẩm
Không vào
10 store rớt (6 lỗi quyền, 2 chưa thanh toán Shopify, 1 đang bị review, 1 mất quyền giữa hai lần kéo) · 4 store đã chết · 8 store loại theo nguyên tắc

Danh bạ store tăng từ 363 lên 381 nên toàn bộ con số trong tài liệu này đã được tính lại trên dữ liệu mới, không còn là số của bản 29/8.

GĐ 1

Làm sạch trên chính store đang bán ảnh hưởng tiền

Đính chính
SKU trùng không trừ kho lẫn nhau — Shopify gắn kho vào từng variant, không gắn vào SKU. Kiểm chứng: mỗi variant có mã kho riêng, và 1.837 trường hợp cùng SKU nhưng tồn kho khác nhau.
Vì sao vẫn phải sửa
SKU là mã đi kèm đơn tới nhà in. Mã hiện tại thiếu phần định danh thiết kế nên hu060325tt-ncaa-white-#1 team nằm trên 77 sản phẩm khác nhau — nhà in không biết in mẫu nào
Việc
1a. Xoá sản phẩm trùng toàn bộ trong cùng store, giữ bản sửa gần nhất
1b. Sửa va chạm SKU trong cùng store
Cách làm
Mỗi dòng trong danh sách có sẵn link mở thẳng Shopify admin. Người làm mở link, đối chiếu, xử lý. Không có script tự xoá.
Khối lượng
101 nhóm nhân bản (129 bản thừa) sửa tay — ước 1 ngày. 2.185 nhóm va chạm SKU không sửa tay được, xem giai đoạn 1b
Ai
1 người vận hành store
Xong khi
chạy lại báo cáo không còn nhóm nào

Chỉ có hai việc, không phải ba: Shopify bắt handle duy nhất trong một store, nên lỗi “trùng handle” về mặt kỹ thuật không thể xảy ra trong cùng một store — nó chỉ xảy ra giữa các store, mà đó là nhân bản có chủ đích.

Và không tìm trùng bằng ảnh được: Shopify cấp cho mỗi sản phẩm một bản sao ảnh riêng, nên hai sản phẩm trùng nhau không bao giờ chung link ảnh. Dấu hiệu dùng được là cùng tên và cùng bộ SKU.

GĐ 1b

Đổi quy ước SKU rồi sinh lại hàng loạt chữa gốc

Sửa tay 2.185 nhóm không chữa được gốc: quy ước đặt mã thiếu phần định danh thiết kế, nên lô hàng sau lại sinh lỗi y hệt. 1.994 trong 2.185 nhóm là thiết kế khác nhau thật, không phải bản Men/Youth của cùng một áo.

Việc
Bổ sung mã đội vào quy ước SKU, viết script sinh lại mã cho 6.591 sản phẩm dính
Ví dụ
…-NCAA2-Alternate-Blake Corum…-NCAA2-MICH-Alternate-Blake Corum
Ai
1 dev viết script, 1 người duyệt kết quả trước khi đẩy
Thời gian
2–3 ngày
Lưu ý
Phải làm trước khi đẩy thêm hàng mới, nếu không số cần sửa phình thêm
GĐ 2

Xử lý 66 nhóm ưu tiên cao

Việc
Nhóm vừa có bản đã lên store vừa có bản chưa lên — quyết định bản nào là chuẩn
Ai
1 người, phối hợp với bạn cào sở hữu file
Thời gian
nửa ngày
Xong khi
cả 66 nhóm đều có một bản được đánh dấu chuẩn
GĐ 3

Dọn kho cào

Tự động
Xoá 31 file trùng 100% — riêng thư mục products_export_split/ gồm 15 file chỉ là bản cắt nhỏ của file nằm ngay cạnh nó. Bỏ 3.471 bản trùng toàn bộ (đã xong). Đánh dấu 137.932 sản phẩm đã có trên store là không đẩy lại.
Cần người
22.598 sản phẩm chưa có trên store — xếp hàng chờ duyệt nội dung trước khi đẩy
Thời gian
phần tự động 30 phút; phần duyệt tùy số lượng thật sự muốn đẩy
GĐ 4

Chặn tái phát quan trọng nhất về lâu dài

Làm sạch một lần mà không chặn nguồn thì ba tháng nữa lặp lại y hệt.

Tin tốt
Cơ chế chặn đã có sẵn trong code — màn xem trước lúc nạp đã biết báo va chạm SKU, cả với dữ liệu cũ lẫn trong chính lô đang nạp. Không phải viết mới.
Vấn đề
Phần này đã code xong nhưng chưa deploy
Việc
Deploy và bật bắt buộc: không cho nạp khi màn xem trước báo va chạm, trừ khi có người bấm xác nhận
Ai
1 dev, gộp vào việc deploy Product Library đang có

Kèm theo: mỗi tháng chạy lại bộ báo cáo một lần để soi.

Phần 5

Năm việc cần chốt

  1. Xác nhận nguyên tắc “store là bản gốc”

    Toàn bộ con số ở Phần 3 dựa vào nguyên tắc này. Nếu đổi, khối lượng quay lại mức 15.955 nhóm thay vì 66.

  2. Sản phẩm trùng trên store: xoá hẳn hay chuyển sang lưu trữ?

    Đề xuất chuyển sang lưu trữ. Xoá là không lấy lại được, còn lưu trữ vẫn giữ được lịch sử đơn hàng của sản phẩm đó.

  3. Ai đứng tên làm giai đoạn 1

    Người này cần quyền sửa sản phẩm trên tất cả store liên quan.

  4. 12 store hiện không kéo được có xử lý không

    7 store lỗi quyền phải cài lại app, 2 store chưa thanh toán Shopify, 2 store đang bị Shopify review, 2 store chưa rõ nguyên nhân. Chừng nào chưa kéo được thì dữ liệu của chúng nằm ngoài mọi báo cáo.

  5. 1.309 nhóm hoãn: để đó hay dọn luôn?

    Đề xuất chỉ check khi thật sự định đẩy sản phẩm đó lên. Dọn sạch luôn tốn thêm khoảng 9 ngày công.

Phần 6

Rủi ro

Rủi roCách chặn
Xoá nhầm sản phẩm đang bán Giai đoạn 1 chạy trên danh sách có người duyệt từng dòng, không có script tự xoá. Cộng với đề xuất lưu trữ thay vì xoá.
Nạp file cào đè lên hàng đang bán Giai đoạn 3 đánh dấu 137.932 sản phẩm không đẩy lại; giai đoạn 4 chặn ngay ở khâu nạp
Số liệu lệch vì dữ liệu cũ Đã tính lại xong trên bản kéo mới: 359 store, 1.079.859 sản phẩm
Làm xong lại bẩn tiếp Giai đoạn 4, cộng chạy lại bộ báo cáo hàng tháng