Skip to main content
v2.0

SafeMilkCheck — Ứng dụng xác minh nguồn gốc sữa cho bà bầu và người tiêu dùng Việt Nam

Tóm tắt

Hơn 187.000 hộp sữa giả được sản xuất và phân phối trong đường dây chuyên sản xuất sữa cho bà bầu và trẻ sinh non — đối tượng phổ biến nhất là phụ nữ mang thai và người đau yếu, nhóm có nhu cầu dinh dưỡng cao nhưng ít có khả năng tự xác minh nguồn gốc sản phẩm. Phần lớn sữa giả được bán qua mạng xã hội và các sàn thương mại điện tử, nơi người mua không thể kiểm tra vật lý lô hàng trước khi nhận. Alpha Chain Ltd. đề xuất SafeMilkCheck — ứng dụng di động iOS/Android cho phép bà bầu và người tiêu dùng quét barcode trên hộp sữa để tra cứu lô hàng trong cơ sở dữ liệu, nhận kết quả xác minh ngay lập tức (xanh/đỏ), và gửi báo cáo sản phẩm nghi ngờ trực tiếp đến cơ quan quản lý. SafeMilkCheck hướng đến giải quyết khoảng trống xác minh nguồn gốc sữa mà không nền tảng nào tại Việt Nam hiện cung cấp.


Định nghĩa vấn đề

Phát biểu vấn đề

Bà bầu và người đang điều trị bệnh tại Việt Nam là nhóm tiêu dùng sữa phổ biến nhưng cũng là nhóm dễ bị tổn thương nhất bởi sữa giả. Sữa giả — thường bán qua Facebook, Zalo, Shopee, Lazada — không có cơ chế xác minh nguồn gốc cho người mua online. Không có công cụ số nào cho phép bà bầu kiểm tra lô hàng sữa trước khi sử dụng. Khi phát hiện sữa giả, không có kênh báo cáo thuận tiện đến cơ quan quản lý. Cơ quan chức năng thiếu dữ liệu tập trung về nơi phân phối sữa giả để truy xuất kịp thời.

Định lượng thiệt hại

  • 187.000 hộp sữa giả được sản xuất và phân phối trong đường dây bị phanh phui — con số chỉ là phần nổi của tình trạng sữa giả tại Việt Nam nguồn.

  • 0 ứng dụng xác minh nguồn gốc sữa bằng barcode tại Việt Nam tính đến tháng 4/2026 — tạo khoảng trống cho người tiêu dùng cần xác minh sữa cho bà bầu và trẻ nhỏ.

Phạm vi

Trong phạm vi:

  • Quét barcode (EAN-13, UPC-A) trên hộp sữa để tra cứu lô hàng
  • Cơ sở dữ liệu lô hàng sữa: nhãn hàng, nhà sản xuất, ngày sản xuất, ngày hết hạn, mã đăng ký
  • Kết quả xác minh: Xanh (hợp lệ) / Đỏ (nghi ngờ giả) / Vàng (không có dữ liệu)
  • Form báo cáo sản phẩm nghi ngờ gửi đến cơ quan quản lý (Cục Quản lý Dược, Sở Y tế)
  • Lịch sử quét và theo dõi sản phẩm đã mua
  • Thông báo khi có cảnh báo sữa giả mới (theo nhãn hàng hoặc lô hàng)

Ngoài phạm vi:

  • Thanh toán hoặc mua sữa trực tiếp trong app
  • Xác minh các sản phẩm không phải sữa
  • Truy xuất nguồn gốc nông sản hoặc thực phẩm tươi sống
  • Thay thế chứng nhận của cơ quan quản lý (chỉ hỗ trợ thông tin, không cấp phép)
  • Tích hợp với hệ thống logistics của các hãng sữa (dữ liệu do Alpha Chain Ltd. thu thập độc lập)

Mô hình vấn đề

Không gian vấn đề

Gọi MM là tập hợp mã barcode sữa trên thị trường, LL là tập hợp lô hàng (batch records) trong cơ sở dữ liệu, RR là tập hợp báo cáo sữa giả, và UU là tập hợp người dùng cần xác minh sữa.

Mỗi mã barcode mMm \in M có:

  • Vm{0,1}V_m \in \{0, 1\} — trạng thái xác minh (1 = đã đăng ký trong DB, 0 = chưa biết)
  • Bm[0,100]B_m \in [0, 100] — mức độ tin cậy (confidence) dựa trên số nguồn xác nhận
  • TmT_m — nhãn hàng, nhà sản xuất, ngày sản xuất (từ lô hàng)

Mỗi báo cáo rRr \in R có:

  • mrm_r — mã barcode liên quan
  • trt_r — thời điểm báo cáo
  • sr{1,0,1}s_r \in \{-1, 0, 1\} — mức độ: -1 = giả, 0 = không chắc chắn, 1 = xác nhận hợp lệ

Công thức điểm đau tổng hợp

Dmathrmtotal=uU1(u bought counterfeit milk)c(u)mathrmtotalconsumerdamage+rRcmathrmgov(r)mathrmgovernmenttracecostD_{mathrm{total}} = \underbrace{\sum_{u \in U} \mathbb{1}(u \text{ bought counterfeit milk}) \cdot c(u)}_{mathrm{total consumer damage}} + \underbrace{\sum_{r \in R} c_{mathrm{gov}}(r)}_{mathrm{government trace cost}}

Trong đó c(u)c(u) là thiệt hại (chi phí y tế, thời gian điều trị, thiệt hại cho thai nhi/trẻ nhỏ) khi người dùng uu sử dụng sữa giả, và cmathrmgov(r)c_{mathrm{gov}}(r) là chi phí cơ quan quản lý xử lý mỗi báo cáo.

Ràng buộc

C1:mM,  Vm must be determined within 5 seconds of scanC_1: \forall m \in M,\; V_m \text{ must be determined within } 5\text{ seconds of scan} C2:Bm70auto-verify; Bm<70require manual verifyC_2: B_m \geq 70 \Rightarrow \text{auto-verify; } B_m \lt 70 \Rightarrow \text{require manual verify} C3:rR,  r must reach authority within 24 hoursC_3: \forall r \in R,\; r \text{ must reach authority within } 24\text{ hours} C4:Users are not required to provide personal info beyond scanned barcodeC_4: \text{Users are not required to provide personal info beyond scanned barcode}


Giải pháp đề xuất

Tổng quan giải pháp

SafeMilkCheck là ứng dụng di động iOS/Android cho phép bà bầu và người tiêu dùng quét barcode trên hộp sữa để xác minh nguồn gốc lô hàng trong thời gian thực. Nền tảng tích hợp bốn chức năng cốt lõi: (1) Quét barcode — camera nhận diện mã EAN-13/UPC-A trên hộp sữa, trả kết quả trong 5 giây; (2) Xác minh lô hàng — đối sánh mã barcode với cơ sở dữ liệu lô hàng, hiển thị kết quả Xanh/Đỏ/Vàng; (3) Báo cáo nghi ngờ — form one-tap gửi báo cáo đến cơ quan quản lý kèm ảnh hộp sữa và mã lô; (4) Theo dõi lịch sử — nhật ký tất cả sản phẩm đã quét, cảnh báo khi có recall.

Điểm khác biệt với AnToan (ACIL-2026-001)

ChiềuSafeMilkCheckAnToan
DomainAn toàn sữa / chống hàng giảAn toàn thực phẩm tại địa điểm ăn uống
Người dùngBà bầu, người đau yếu, cha mẹ trẻ nhỏNgười tiêu dùng đô thị chọn nơi ăn
Tính năng cốt lõiQuét barcode + tra lô hàng + báo cáo giảQuét QR tại quán + cảnh báo vị trí + trust score
Dữ liệu nguồnCơ sở dữ liệu lô hàng (self-built) + báo cáo cộng đồngKiểm địch chính phủ + trust score cộng đồng
Cơ chế cảnh báoRecall alert theo nhãn hàng/lô hàngGeo-alert theo vị trí khi có vụ ngộ độc
Phân khúcB2C cá nhân + B2G cơ quan quản lýB2C + B2B nhà hàng + B2G chính phủ

Các quyết định thiết kế chính

  • Quyết định 1 — Barcode thay vì QR: Barcode (EAN-13) là tiêu chuẩn trên mọi hộp sữa, không cần nhà sản xuất hợp tác triển khai QR riêng. Quét barcode hoạt động ngay với cơ sở hạ tầng sẵn có.

  • Quyết định 2 — Cơ sở dữ liệu lô hàng tự xây: Không phụ thuộc vào dữ liệu từ nhà sản xuất — Alpha Chain Ltd. xây dựng DB bằng cách thu thập từ nhiều nguồn: dữ liệu công khai của Cục Quản lý Dược, báo cáo recall quốc tế (FDA, EFSA), và báo cáo cộng đồng người dùng. Mô hình này cho phép mở rộng mà không cần đàm phán với từng hãng sữa.

  • Quyết định 3 — Kết quả Xanh/Đỏ/Vàng thay vì điểm số: Bà bầu cần câu trả lời rõ ràng "có an toàn hay không", không phải điểm 75/100. Ba mức giảm thiểu interpretation error.

Tiêu chí thành công

Tiêu chíMục tiêuPhương pháp đo lường
Thời gian xác minh≤ 5 giây từ lúc quét đến kết quả (4G)Latency p95 từ API
Độ chính xác xác minh≥ 95% đối với các nhãn hàng có trong DBCross-check với recall records
Tỷ lệ người dùng quét≥ 40% người dùng quét ≥ 1 lần/sau khi muaSự kiện quét trong analytics
Tỷ lệ báo cáo≥ 10% người dùng gửi báo cáo khi kết quả ĐỏTỷ lệ báo cáo/submit
Số lượng lô hàng trong DB≥ 10.000 lô hàng sau 3 thángĐếm records trong DB
Thời gian chuyển báo cáo đến cơ quan≤ 24 giờ từ lúc submitTimestamp delta

Luồng hệ thống

Luồng chính: người dùng quét barcode → API tra cứu batch record → trả kết quả Xanh/Đỏ/Vàng trong 5 giây. Luồng báo cáo: khi nhận kết quả Đỏ/Vàng, người dùng gửi báo cáo → hệ thống lưu → nếu ≥ 3 báo cáo cùng barcode trong 48h → tự động chuyển đến cơ quan quản lý. Luồng recall: cơ quan gửi webhook → hệ thống cập nhật batch → push notification đến người dùng đã quét sản phẩm cùng lô.


Thuật toán cốt lõi

Thuật toán MilkCheck Verification (MCV)

Alpha Chain Ltd. sử dụng thuật toán MilkCheck Verification (MCV) để xác định trạng thái của một mã barcode sữa. Thuật toán kết hợp ba nguồn dữ liệu: batch record từ cơ sở dữ liệu, trạng thái recall từ cơ quan quản lý, và confidence score từ báo cáo cộng đồng.

Input:

  • mm — mã barcode (EAN-13)
  • RmR_m — tập báo cáo cộng đồng liên quan đến mm
  • CmathrmgovC_{mathrm{gov}} — trạng thái recall chính phủ

Output: Vm{GREEN,YELLOW,RED}V_m \in \{GREEN, YELLOW, RED\}Bm[0,100]B_m \in [0, 100]

Công thức:

Bm=min(100,  0.50Bmathrmdb+0.30Bmathrmcommunity(Rm)+0.20Bmathrmgov(Cmathrmgov))B_m = \min\left(100,\; 0.50 \cdot B_{mathrm{db}} + 0.30 \cdot B_{mathrm{community}}(R_m) + 0.20 \cdot B_{mathrm{gov}}(C_{mathrm{gov}})\right)

Các hàm thành phần:

  • Bmathrmdb={100barcode in DB with complete batch info50barcode in DB but missing info0barcode not in DBB_{mathrm{db}} = \begin{cases} 100 & \text{barcode in DB with complete batch info} \\ 50 & \text{barcode in DB but missing info} \\ 0 & \text{barcode not in DB} \end{cases}

  • Bmathrmcommunity(Rm)={100{rRm:sr=1}5501{rRm:sr=1}<50{rRm:sr=1}3 (counterfeit suspected)B_{mathrm{community}}(R_m) = \begin{cases} 100 & |\{r \in R_m: s_r = 1\}| \geq 5 \\ 50 & 1 \leq |\{r \in R_m: s_r = 1\}| < 5 \\ 0 & |\{r \in R_m: s_r = -1\}| \geq 3 \text{ (counterfeit suspected)} \end{cases}

  • Bmathrmgov(Cmathrmgov)={0recall = TRUE100registered with authority50no government infoB_{mathrm{gov}}(C_{mathrm{gov}}) = \begin{cases} 0 & \text{recall = TRUE} \\ 100 & \text{registered with authority} \\ 50 & \text{no government info} \end{cases}

Luật phân loại:

undefined