Skip to main content
v2.0

AnToan — Nền tảng xác minh & cảnh báo an toàn thực phẩm tại địa điểm ăn uống

Tóm tắt

Ngộ độc thực phẩm tại Việt Nam tăng 125% so với cùng kỳ — 30 vụ trong quý I năm 2026, tăng 20 vụ so với cùng kỳ năm 2025. Người tiêu dùng Việt Nam tại các khu đô thị đông đúc không có công cụ số để xác minh an toàn thực phẩm trước khi ăn: không có lịch sử kiểm địch công khai, không có xếp hạng độc lập, không có cảnh báo sớm khi có vụ ngộ độc gần vị trí. Alpha Chain Ltd. đề xuất AnToan — ứng dụng di động iOS/Android cho phép người dùng quét mã QR tại địa điểm ăn uống để tra cứu điểm an toàn thực phẩm tổng hợp, lịch sử kiểm địch chính thức từ Chi cục An toàn thực phẩm, đánh giá từ cộng đồng, và nhận cảnh báo theo vị trí trong bán kính 5 km khi có vụ ngộ độc được xác nhận. AnToan tích hợp hai nguồn dữ liệu bổ trợ — kiểm địch chính thức từ cơ quan quản lý và trust score từ cộng đồng người dùng — để tạo ra lớp thông tin an toàn thực phẩm 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 đề

Người tiêu dùng Việt Nam, đặc biệt tại các khu đô thị đông đúc (TP.HCM hơn 14 triệu dân, Hà Nội hơn 8 triệu dân), không có phương tiện số nào để xác minh an toàn thực phẩm của một địa điểm ăn uống trước khi lựa chọn. Việc kiểm tra hiện tại phụ thuộc vào việc hỏi người quen hoặc quan sát vệ sinh bề ngoài — một quyết định mang tính may rủi. Các cơ quan chức năng (Chi cục An toàn thực phẩm) kiểm tra theo đợt, kết quả kiểm địch chưa được số hóa thành nguồn dữ liệu mở. Khi xảy ra ngộ độc, thời gian truy xuất nguồn gốc trung bình 48–72 giờ — quá chậm để ngăn chặn lan rộng. Người dân chỉ biết có vấn đề sau khi đã bị ngộ độc.

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

  • 30 vụ ngộ độc thực phẩm từ đầu năm 2026, tăng 20 vụ so với cùng kỳ năm 2025 nguồn

    "Quý I năm 2026, cả nước ghi nhận 30 vụ ngộ độc thực phẩm, tăng 20 vụ so với cùng kỳ năm trước." — Bộ trưởng Bộ Y tế Đào Hồng Lan, thanhnien.vn, 16/4/2026

  • Không có công cụ số nào cho phép người tiêu dùng xác minh an toàn thực phẩm trước khi ăn ngoài nhà tại Việt Nam tính đến tháng 4/2026 — tạo khoảng trống thông tin cho người tiêu dùng.

Phạm vi

Trong phạm vi:

  • Tra cứu điểm an toàn và lịch sử kiểm địch bằng mã QR tại địa điểm ăn uống
  • Cảnh báo theo vị trí (GPS) trong bán kính 5 km khi có vụ ngộ độc được xác nhận
  • Đánh giá rủi ro tổng hợp dựa trên dữ liệu kiểm địch chính thức và trust score cộng đồng
  • Hỗ trợ bếp ăn tập thể (trường học, công ty) quản lý an toàn nội bộ

Ngoài phạm vi:

  • Thay thế kiểm tra của cơ quan chức năng
  • Xử lý trực tiếp nguồn nguyên liệu ô nhiễm (chỉ cảnh báo, không can thiệp vật lý)
  • Thanh toán hoặc đặt món trực tiếp
  • Xác minh thuốc hoặc thực phẩm chức năng
  • Truy xuất nguồn gốc sản phẩm nông sản (thuộc concept riêng)

Mô hình vấn đề

Không gian vấn đề

Gọi UU là tập hợp người dùng có nhu cầu tra cứu an toàn thực phẩm, LL là tập hợp địa điểm ăn uống, II là tập hợp sự kiện kiểm địch (inspection record), và PP là tập hợp sự kiện ngộ độc.

Mỗi địa điểm lLl \in L tại tọa độ (latl,lonl)(lat_l, lon_l) có:

  • Điểm an toàn tổng hợp Sl[0,100]S_l \in [0, 100] — chưa tồn tại trên thị trường Việt Nam
  • Lịch sử kiểm địch Hl={i1,i2,,ik}H_l = \{i_1, i_2, \dots, i_k\} — tồn tại dạng giấy, chưa số hóa
  • Trust score cộng đồng TlT_l — từ đánh giá của người dùng AnToan
  • Trạng thái hoạt động Al{0,1}A_l \in \{0, 1\}

Mỗi sự kiện ngộ độc pPp \in P tại tọa độ (latp,lonp)(lat_p, lon_p) và thời điểm tpt_p có bán kính ảnh hưởng rp=5 kmr_p = 5\text{ km}.

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

Dmathrmtotal=uUd(u)mathrmtongthiethainguoidung+pPc(p)mathrmchiphiytexahoiD_{mathrm{total}} = \underbrace{\sum_{u \in U} d(u)}_{mathrm{tong thiet hai nguoi dung}} + \underbrace{\sum_{p \in P} c(p)}_{mathrm{chi phi y te xa hoi}}

Trong đó d(u)d(u) là thiệt hại (thời gian nghỉ việc, chi phí y tế, chi phí cơ hội) khi người dùng uu bị ngộ độc, và c(p)c(p) là chi phí xã hội của vụ pp.

Ràng buộc

C1:lL,  Sl must be computed from Hl (official inspections) and Tl (community)C_1: \forall l \in L,\; S_l \text{ must be computed from } H_l \text{ (official inspections) and } T_l \text{ (community)} C2:uU,  dist(u,p)5 kmu receives alertC_2: \forall u \in U,\; \text{dist}(u, p) \leq 5\text{ km} \Rightarrow u \text{ receives alert} C3:Alert must reach user within 30 minutes of confirmed incidentC_3: \text{Alert must reach user within } 30\text{ minutes of confirmed incident} C4:lL,  Sl[0,100]C_4: \forall l \in L,\; S_l \in [0, 100]

Mục tiêu

ACIL mô hình mục tiêu là tối đa hóa xác suất người dùng chọn địa điểm có Sl70S_l \geq 70 khi có thông tin đầy đủ:

maximize uUPr(u chooses place with Sl70full information)\text{maximize } \sum_{u \in U} \text{Pr}(u \text{ chooses place with } S_l \geq 70 \mid \text{full information})


Giải pháp đề xuất

Tổng quan giải pháp

AnToan là ứng dụng di động iOS/Android cho phép người dùng quét mã QR tại địa điểm ăn uống để xem ngay điểm an toàn tổng hợp SlS_l, lịch sử kiểm địch từ cơ quan chức năng, và trust score từ cộng đồng. Nền tảng tích hợp bốn chức năng cốt lõi: (1) Tra cứu QR — xem điểm SlS_l, kết quả kiểm địch gần nhất, và trust score; (2) Bản đồ xếp hạng — hiển thị các địa điểm xung quanh được xếp hạng theo SlS_l; (3) Cảnh báo theo vị trí — thông báo khi có vụ ngộ độc trong bán kính 5 km; (4) Đánh giá cộng đồng — người dùng báo cáo mức độ an toàn sau khi ăn.

AnToan khác biệt ở chỗ tích hợp hai nguồn dữ liệu bổ trợ: kiểm địch chính thức từ Chi cục An toàn thực phẩm (tính pháp lý) và trust score từ cộng đồng (tính real-time), tạo ra lớp thông tin an toàn thực phẩm mà không nền tảng nào tại Việt Nam cung cấp.

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

  • Quyết định 1 — QR code tại chỗ thay vì tìm kiếm text: Người dùng quét QR code trực tiếp tại địa điểm để đảm bảo đang xem thông tin đúng địa điểm đó, không phải địa điểm trùng tên. QR code được cấp phát qua quy trình đăng ký của Alpha Chain Ltd., mỗi địa điểm có một mã định danh duy nhất.

  • Quyết định 2 — Điểm tổng hợp kép thay vì chỉ một nguồn: AnToan kết hợp kiểm địch chính thức (Chi cục ATSP) với trust score cộng đồng. Kiểm địch chính thức cho tính pháp lý và độ tin cậy cao; trust score cộng đồng cho tính real-time và phản ánh trải nghiệm thực tế. Không phụ thuộc vào một nguồn duy nhất giúp hệ thống hoạt động ngay cả khi một nguồn chưa có dữ liệu.

  • Quyết định 3 — Cảnh báo theo vị trí thay vì feed tin tức: Người dùng không cần chủ động kiểm tra tin tức. Khi một vụ ngộ độc được xác nhận (từ nguồn chính thức hoặc báo cáo cộng đồng được xác minh), hệ thống tự động gửi thông báo đẩy đến tất cả người dùng trong bán kính 5 km.

Tiêu chí thành công

Tiêu chíMục tiêuPhương pháp đo lường
Tỷ lệ người dùng quét QR≥ 60% người dùng đã cài đặt quét QR ≥ 1 lần/tuầnSự kiện quét trong analytics
Điểm an toàn phản ánh đúng thực tếHệ số tương quan Pearson ρ0.75\rho \geq 0.75 giữa SlS_l và kết quả kiểm địch thực tếĐối sánh với dữ liệu Chi cục ATSP
Thời gian cảnh báo sau vụ việc≤ 30 phút từ khi vụ việc được xác nhận đến khi thông báo đến người dùng trong vùngLatency từ ingestion đến push
Độ chính xác trust score cộng đồngĐộ lệch trung bình so với kết quả kiểm tra cơ quan chức năng không vượt quá 15 điểmĐối sánh TlT_l với ImathrmrecentI_{mathrm{recent}}
Số lượng địa điểm đăng ký≥ 10.000 địa điểm sau 6 tháng ra mắt tại TP.HCMSố lượng QR code đã cấp
Tỷ lệ chuyển đổi B2B≥ 5% nhà hàng đăng ký gói premium trong 90 ngày đầuTỷ lệ paid:free
Thời gian phản hồi khi quét QR≤ 3 giây từ lúc bấm đến khi hiển thị thông tin (4G)Latency p95 từ API

Luồng hệ thống

Luồng chính: người dùng quét QR → API tra cứu place_id → tính điểm SlS_l từ lịch sử kiểm địch và trust score → trả về thông tin. Luồng cảnh báo chính thức: Chi cục ATSP hoặc Bộ Y tế gửi webhook → hệ thống lọc người dùng trong bán kính 5 km → gửi thông báo đẩy. Luồng trust score: người dùng đánh giá sau khi ăn → cập nhật TlT_l; nếu ≥ 3 báo cáo tiêu cực trong 24h → cảnh báo cộng đồng.


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

Thuật toán AnToan Safety Score (ATS)

Alpha Chain Ltd. sử dụng thuật toán AnToan Safety Score (ATS) để tính điểm an toàn tổng hợp SlS_l cho mỗi địa điểm ll. Thuật toán kết hợp ba nguồn dữ liệu: kiểm địch chính thức, tần suất kiểm địch, và trust score cộng đồng — với yếu tố điều chỉnh theo điều kiện thời tiết.

Input:

  • HlH_l — tập hợp lịch sử kiểm địch của địa điểm ll (từ Chi cục ATSP)
  • TlT_l — trust score cộng đồng (từ đánh giá người dùng)
  • WlW_l — hệ số điều kiện thời tiết (nhiệt độ, độ ẩm — tăng nguy cơ vi sinh)
  • FlF_l — tần suất kiểm địch trong 12 tháng

Output: Sl[0,100]S_l \in [0, 100]

Công thức: Sl=min(100,  0.40Imathrmrecent(Hl,tmathrmnow)+0.20Imathrmfreq(Fl)+0.25Tmathrmscore(Tl)0.15Wl)S_l = \min\left(100,\; 0.40 \cdot I_{mathrm{recent}}(H_l, t_{mathrm{now}}) + 0.20 \cdot I_{mathrm{freq}}(F_l) + 0.25 \cdot T_{mathrm{score}}(T_l) - 0.15 \cdot W_l\right)

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

  • Imathrmrecent(Hl,tmathrmnow)={100Δt90 days and latest inspection = pass0latest inspection = fail50latest inspection = warningmax(0,1005Δt9030)no inspection in 90+ daysI_{mathrm{recent}}(H_l, t_{mathrm{now}}) = \begin{cases} 100 & \Delta t \leq 90 \text{ days and latest inspection = pass} \\ 0 & \text{latest inspection = fail} \\ 50 & \text{latest inspection = warning} \\ \max(0, 100 - 5 \cdot \lfloor \frac{\Delta t - 90}{30} \rfloor) & \text{no inspection in 90+ days} \end{cases}

  • Imathrmfreq(Fl)=min(100,  25Tmathrminspections(Hl,12)1T4+5T1T<4)I_{mathrm{freq}}(F_l) = \min\left(100,\; 25 \cdot |T_{mathrm{inspections}}(H_l, 12)| \cdot \mathbf{1}_{|T| \geq 4} + 5 \cdot |T| \cdot \mathbf{1}_{|T| < 4}\right)

  • Tmathrmscore(Tl)={100Tl4.5754.0Tl<4.5503.0Tl<4.0252.0Tl<3.00Tl<2.0T_{mathrm{score}}(T_l) = \begin{cases} 100 & T_l \geq 4.5 \\ 75 & 4.0 \leq T_l < 4.5 \\ 50 & 3.0 \leq T_l < 4.0 \\ 25 & 2.0 \leq T_l < 3.0 \\ 0 & T_l < 2.0 \end{cases}

  • Wl={0T<25°C1025°CT<32°C20T32°CW_l = \begin{cases} 0 & T < 25°C \\ 10 & 25°C \leq T < 32°C \\ 20 & T \geq 32°C \end{cases} (penalty when weather conditions are unfavorable)

Quy tắc cập nhật trust score TlT_l:

  • Người dùng báo cáo "An toàn": Tlmin(5,  Tl+0.2)T_l \leftarrow \min(5,\; T_l + 0.2)
  • Người dùng báo cáo "Có vấn đề": Tlmax(0,  Tl0.5)T_l \leftarrow \max(0,\; T_l - 0.5)
  • Báo cáo ngộ độc chính thức từ cơ quan y tế: Imathrmrecent0I_{mathrm{recent}} \leftarrow 0, Tlmax(0,  Tl2.0)T_l \leftarrow \max(0,\; T_l - 2.0)

Threshold hiển thị:

  • Sl70S_l \geq 70: Màu xanh — An toàn
  • 60Sl<7060 \leq S_l < 70: Màu vàng — Cảnh báo nâng cao
  • Sl<60S_l < 60: Màu đỏ — Nguy cơ cao, hiển thị kèm lý do

Độ phức tạp

Chỉ sốGiá trị
Độ phức tạp thời gian$O(
Độ phức tạp không gian$O(
Tần suất tính lạiMỗi khi có kiểm địch mới, đánh giá mới, hoặc cập nhật thời tiết
Latency truy vấn trung bình< 50 ms (Redis cache, TTL 5 phút); p95 < 3s (4G)

Kiến trúc hệ thống

+------------------------------------------------------------------+
| Lớp 1: Client (Mobile App) |
| +-------------------------+ +--------------------------------+ |
| | Màn hình Quét QR | | Màn hình Bản đồ xếp hạng | |
| | - Camera viewfinder | | - Bản đồ tương tác (Google Maps)| |
| | - Hiển thị S_l + H_l | | - Clustering markers theo S_l | |
| | - Bottom sheet kết quả | | - Bộ lọc loại địa điểm | |
| +-------------------------+ +--------------------------------+ |
| +-------------------------+ +--------------------------------+ |
| | Màn hình Cảnh báo | | Màn hình Đánh giá & Địa điểm | |
| | - Danh sách vụ việc | | - Form đánh giá ATSP (1-5 sao) | |
| | - Bán kính 5km toggle | | - Thông tin địa điểm + QR reg. | |
| | - Nguồn xác nhận | | - Nút "Tôi đã ăn ở đây" | |
| +-------------------------+ +--------------------------------+ |
+------------------------------------------------------------------+
|

+------------------------------------------------------------------+
| Lớp 2: API Gateway (Node.js) |
| +------------------+ +------------------+ +-----------------+ |
| | /place (GET) | | /alerts (POST/GET)| | /auth (POST) | |
| | tra cứu S_l + H_l| | quản lý cảnh báo | | xác thực JWT | |
| +------------------+ +------------------+ +-----------------+ |
| +------------------+ +------------------+ |
| | /place/register | | /review (POST) | |
| | đăng ký QR mới | | gửi đánh giá | |
| +------------------+ +------------------+ |
| Rate limiting · CORS · Request logging |
+------------------------------------------------------------------+

+------------------+------------------+
▼ ▼
+------------------------+ +----------------------------------+
| Lớp 3: Dịch vụ nội bộ | | Lớp 3: Dịch vụ bên ngoài |
| +----------------------+| | +------------------------------+ |
| | AnToan Score Service || | | Google Maps SDK | |
| | Tính S_l = f(H,T,W,F)|| | | Bản đồ + Geocoding | |
| +----------------------+| | +------------------------------+ |
| +----------------------+| | | Firebase Cloud Messaging | |
| | Geo-filter Service || | | Push notification | |
| | Lọc users trong r=5km|| | +------------------------------+ |
| +----------------------+| | | Chi cục ATSP Webhook | |
| +----------------------+| | | Dữ liệu kiểm địch chính thức| |
| | Alert Ingestion Svc || | +------------------------------+ |
| | Nhận & xác minh vụ || | | Bộ Y tế API (tùy chọn) | |
| +----------------------+| | | Dữ liệu ngộ độc chính thức | |
| +----------------------+| | +------------------------------+ |
| | Weather Service || | | Open-Meteo API (miễn phí) | |
| | Lấy T + Độ ẩm → W_l || | | Điều kiện thời tiết địa phương| |
| +----------------------+| | +------------------------------+ |
| +----------------------+| | | QR Code Generator (lib) | |
| | Review Aggregation || | | Sinh mã QR per-place | |
| | Cập nhật T_l realtime|| | +------------------------------+ |
| +----------------------+| | | Bộ Y tế / Chi cục ATSP | |
| +----------------------+| | | Nguồn xác minh vụ ngộ độc | |
| | B2B Dashboard API || | +------------------------------+ |
| | Quản lý doanh nghiệp || | | B2G Portal (Gov) | |
| +----------------------+| | | Dashboard cho cơ quan | |
| +----------------------+| | +------------------------------+ |
+------------------------+ +----------------------------------+


+------------------------------------------------------------------+
| Lớp 4: Cơ sở dữ liệu |
| +-----------------------------+ +-------------------------------+ |
| | PostgreSQL (chính) | | Redis | |
| | - places table | | - Cache S_l (TTL 5 min) | |
| | - inspections table | | - Session tokens | |
| | - reviews table | | - Geo-index (GEOADD/GEORADIUS)| |
| | - alerts table | | - Rate limiting | |
| | - users table | +-------------------------------+ |
| | - PostGIS (spatial index) | | InfluxDB (optional) | |
| | - users_trusted (for B2G) | | - Analytics & metrics | |
| +-----------------------------+ +-------------------------------+ |
+------------------------------------------------------------------+

Trách nhiệm từng thành phần:

  • Client (Flutter hoặc React Native): Giao diện quét QR, bản đồ xếp hạng, cảnh báo, đánh giá cộng đồng. Giao tiếp với API qua HTTPS.
  • API Gateway (Node.js/Express): Route requests, rate limiting, xác thực JWT, gọi services tương ứng.
  • AnToan Score Service: Tính điểm SlS_l theo công thức ATS. Chạy batch mỗi khi có inspection record mới hoặc trust score thay đổi.
  • Geo-filter Service: Dùng Redis GEO commands (GEOADD/GEORADIUS) để lọc nhanh người dùng trong bán kính 5 km từ tọa độ vụ việc.
  • Alert Ingestion Service: Nhận webhook từ Chi cục ATSP và Bộ Y tế, xác minh nguồn, ghi vào alerts table, trigger push notification.
  • Weather Service: Lấy dữ liệu thời tiết từ Open-Meteo API (miễn phí) cho vị trí của địa điểm, tính hệ số WlW_l.
  • Review Aggregation Service: Cập nhật trust score TlT_l real-time dựa trên đánh giá cộng đồng.
  • PostgreSQL: Lưu trữ master data (places, inspections, reviews, alerts). Đánh chỉ mục không gian (PostGIS) cho truy vấn theo vị trí.
  • Redis: Cache điểm SlS_l, session tokens, geo-index cho filtering nhanh, rate limiting.

Trường hợp sử dụng

Trường hợp sử dụng 1: Quét QR tại quán ăn — phát hiện mức rủi ro cao

Các tác viên: Người đi làm (công nhân, nhân viên văn phòng) Tiên điều kiện: Người dùng đã cài đặt app AnToan, đã bật quyền truy cập vị trí, đang ở gần một quán ăn. Kích hoạt: Người dùng mở app và nhấn nút "Quét QR" hoặc camera tự động nhận diện QR code. Các bước:

  1. App mở camera viewfinder, nhận diện QR code tại quán.
  2. App gửi mã QR + tọa độ GPS hiện tại đến API Gateway.
  3. API tra cứu place_id, tính điểm SlS_l từ lịch sử kiểm địch HlH_l, trust score TlT_l, và hệ số thời tiết WlW_l.
  4. App hiển thị bottom sheet với điểm an toàn (thang 0–100), biểu tượng màu (xanh/vàng/đỏ), và 3 lần kiểm địch gần nhất (ngày, kết quả, cơ quan), trust score từ cộng đồng.
  5. Người dùng quyết định ở lại ăn hoặc chọn quán khác. Sau điều kiện: Hành động của người dùng (ở lại/chuyển quán) được ghi log ẩn danh để cải thiện thuật toán. Kết quả mong đợi: Người dùng có đầy đủ thông tin để đưa ra quyết định an toàn trong vòng 5 giây từ lúc quét.

Trường hợp sử dụng 2: Cảnh báo ngộ độc hàng loạt — ngăn chặn lan rộng

Các tác viên: Người dùng đã đăng ký nhận cảnh báo, Chi cục ATSP (với tư cách nguồn dữ liệu) Tiên điều kiện: Người dùng đã bật thông báo đẩy và cung cấp vị trí. Một vụ ngộ độc đã được xác nhận bởi cơ quan chức năng. Kích hoạt: Chi cục ATSP gửi webhook xác nhận vụ ngộ độc mới với tọa độ (latp,lonp)(lat_p, lon_p). Các bước:

  1. Alert Ingestion Service nhận webhook, xác minh nguồn, ghi sự kiện vào alerts table.
  2. Geo-filter Service truy vấn Redis GEO tìm tất cả users đã đăng ký trong bán kính 5 km từ (latp,lonp)(lat_p, lon_p).
  3. Notification Service gửi push notification đến danh sách users: "⚠️ Cảnh báo: Vụ ngộ độc thực phẩm được ghi nhận tại [khu vực]. Cách vị trí của bạn [X] km. Xem chi tiết."
  4. Người dùng nhấn notification → mở app → xem chi tiết vụ việc (số người bị ảnh hưởng, địa điểm, ngày, nguồn xác nhận, món ăn liên quan).
  5. Nếu vụ việc liên quan đến địa điểm cụ thể, điểm SlS_lTlT_l của địa điểm đó được cập nhật ngay lập tức. Sau điều kiện: Người dùng có thể báo cáo nếu nghi ngờ bản thân bị ảnh hưởng. Kết quả mong đợi: Người dùng trong vùng ảnh hưởng nhận thông báo trong vòng 30 phút kể từ khi vụ việc được xác nhận. Độ bao phủ ≥ 90% người dùng đã bật thông báo trong vùng.

Trường hợp sử dụng 3: Cảnh báo cộng đồng — người dùng phát hiện trước

Các tác viên: Người dùng đã ăn tại địa điểm Tiên điều kiện: Người dùng đã ăn tại một quán và cảm thấy có vấn đề (đau bụng, tiêu chảy, các triệu chứng ngộ độc). Kích hoạt: Người dùng mở app, tìm địa điểm đã ăn, bấm "Báo cáo vấn đề". Các bước:

  1. Người dùng chọn địa điểm đã ăn, chọn mức độ: "An toàn" / "Có vấn đề nhẹ" / "Nghi ngờ ngộ độc".
  2. App gửi đánh giá → API → cập nhật trust score TlT_l.
  3. Nếu ≥ 3 báo cáo "Có vấn đề" trong 24 giờ tại cùng địa điểm: hệ thống tự động gửi cảnh báo cộng đồng đến users trong bán kính 5 km.
  4. Điểm SlS_l được điều chỉnh giảm tương ứng. Sau điều kiện: Quán nhận thông báo về điểm trust score giảm, có động lực cải thiện. Kết quả mong đợi: Người dùng tiếp theo trong khu vực nhận cảnh báo trước khi xảy ra vụ ngộ độc lan rộng.

Trường hợp sử dụng 4: Nhà hàng đăng ký hiển thị chứng nhận an toàn

Các tác viên: Chủ nhà hàng/quán ăn Tiên điều kiện: Nhà hàng đã được Chi cục ATSP kiểm địch và có kết quả pass gần nhất trong 90 ngày. Kích hoạt: Chủ nhà hàng đăng nhập app AnToan (tài khoản doanh nghiệp), chọn "Đăng ký hiển thị chứng nhận." Các bước:

  1. Nhà hàng xác nhận thông tin địa điểm và QR code hiện tại.
  2. Hệ thống đối sánh với dữ liệu kiểm địch từ Chi cục ATSP để xác minh.
  3. Nhà hàng chọn gói dịch vụ: Free (hiển thị thông tin cơ bản) hoặc Premium (logo chứng nhận, highlight trên bản đồ, báo cáo chi tiết người dùng).
  4. Thanh toán qua ví điện tử hoặc thẻ — gói Premium khả dụng ngay lập tức.
  5. QR code được cấp bản in (PDF) để đặt tại quầy. Sau điều kiện: Địa điểm hiển thị badge chứng nhận "AnToan Verified" trên bản đồ và trang tra cứu. Kết quả mong đợi: Nhà hàng Premium hiển thị badge và được đẩy lên đầu danh sách xếp hạng trong bán kính 2 km.

Mô hình kinh doanh

Mô hình doanh thu ba nguồn

Rmathrmtotal=RmathrmB2C+RmathrmB2B+RmathrmB2GR_{mathrm{total}} = R_{mathrm{B2C}} + R_{mathrm{B2B}} + R_{mathrm{B2G}}

B2C — Freemium: RmathrmB2C=uUmathrmpremiumpmathrmpremiumCmathrmacq(Umathrmpremium)R_{mathrm{B2C}} = \sum_{u \in U_{mathrm{premium}}} p_{mathrm{premium}} - C_{mathrm{acq}}(U_{mathrm{premium}})

  • Free: Tra cứu QR, xem điểm SlS_l và lịch sử kiểm địch, nhận cảnh báo cơ bản
  • Premium (pmathrmpremiump_{mathrm{premium}} = 50.000 VND/tháng): Báo cáo chi tiết theo chất liệu (đậu phộng, hải sản, gluten), lọc theo dị ứng, bỏ quảng cáo, chế độ Family Safety (5 thành viên)

B2B — Nhà hàng trả phí: RmathrmB2B=rRmathrmrestaurants(pr×qr)CmathrmopsR_{mathrm{B2B}} = \sum_{r \in R_{mathrm{restaurants}}} (p_r \times q_r) - C_{mathrm{ops}}

  • Gói Basic (miễn phí): Hiển thị thông tin cơ bản, QR code cơ bản
  • Gói Premium (500.000 VND/tháng): Badge "AnToan Verified", highlight trên bản đồ, báo cáo lượt tra cứu, phân tích xu hướng người dùng
  • Gói Enterprise (2.000.000 VND/tháng): API tích hợp riêng, dashboard theo dõi, hỗ trợ ưu tiên

B2G — Hợp đồng chính phủ: RmathrmB2G=gGpgCmathrmgov_complianceR_{mathrm{B2G}} = \sum_{g \in G} p_g - C_{mathrm{gov\_compliance}}

  • Chi cục ATSP các tỉnh/thành trả phí để công khai dữ liệu kiểm địch trên nền tảng AnToan, tăng tính minh bạch và giảm chi phí truyền thông khi có vụ ngộ độc

Cấu trúc chi phí (MVP năm đầu)

Loại chi phíMô tảSố tiền (VND/năm)
Hạ tầng cloud (AWS/GCP)PostgreSQL, Redis, API servers, CDN150.000.000
Phát triển team (3 dev MVP)Thiết kế, phát triển, kiểm thử600.000.000
Tích hợp dữ liệu chính phủKết nối webhook Chi cục ATSP các tỉnh50.000.000
Marketing & growthChạy thử nghiệm tại 3 khu công nghiệp TP.HCM100.000.000
Pháp lý & complianceTư vấn pháp lý, bảo mật dữ liệu người dùng30.000.000
Tổng chi phí năm đầu930.000.000

Phân tích điểm hòa vốn

\text{So khach B2B premium} = \frac{C_{mathrm{fixed}}}{p_{mathrm{premium}} - c_{mathrm{unit}}}} = \frac{930.000.000}{500.000 - 50.000} \approx 2.067 \text{ nha hang/thang}

Nghĩa là cần khoảng 2.067 nhà hàng đăng ký gói Premium (p=500.000p = 500.000 VND/tháng, chi phí biến đổi cmathrmunit=50.000c_{mathrm{unit}} = 50.000 VND/nhà hàng/tháng) để hòa vốn chi phí năm đầu. Với tỷ lệ chuyển đổi mục tiêu 5% từ 10.000 địa điểm đăng ký trong 6 tháng đầu → 500 nhà hàng premium → chi phí hòa vốn dự kiến ở tháng thứ 8–9 nếu tốc độ tăng trưởng B2B ổn định. Mô hình B2C premium và B2G là doanh thu tăng thêm sau khi đã hòa vốn.


Kế hoạch MVP

Giai đoạn 1: Hạ tầng cốt lõi (Tuần 1–4)

  • Thiết kế database schema (places, inspections, reviews, alerts) trên PostgreSQL với PostGIS extension
  • Xây dựng API Gateway (Node.js) với các endpoint: /place?qr=, /place/register, /review, /alerts
  • Triển khai AnToan Score Service — tính điểm SlS_l theo công thức ATS, cache Redis với TTL 5 phút
  • Tích hợp Google Maps SDK cho bản đồ xếp hạng
  • Xây dựng màn hình quét QR (camera + viewfinder)
  • Đăng ký 50 địa điểm thí điểm tại Quận 7, TP.HCM (50 QR code đầu tiên)
  • Tích hợp Open-Meteo API cho hệ số thời tiết WlW_l

Tiêu chí kết thúc: Người dùng thử nghiệm có thể quét QR, xem điểm SlS_l, lịch sử kiểm địch, trust score, xem bản đồ xếp hạng trong bán kính 2 km, và gửi đánh giá cộng đồng.

Giai đoạn 2: Cảnh báo & Cộng đồng (Tuần 5–8)

  • Triển khai Firebase Cloud Messaging cho push notification
  • Xây dựng Geo-filter Service — dùng Redis GEO để lọc người dùng trong bán kính 5 km
  • Xây dựng Alert Ingestion Service — nhận webhook từ nguồn chính phủ, ghi alerts table
  • Review Aggregation Service — cập nhật TlT_l real-time, kích hoạt cảnh báo cộng đồng khi ≥ 3 báo cáo tiêu cực/24h
  • Màn hình cảnh báo: danh sách vụ việc gần đây, thông báo đẩy khi có vụ mới
  • Tích hợp dữ liệu từ Chi cục ATSP TP.HCM (batch import 500+ bản ghi kiểm địch đầu tiên)
  • Form đánh giá cộng đồng (điểm 1–5 + bình luận)

Tiêu chí kết thúc: Thông báo đẩy đến người dùng trong vòng 30 phút kể từ khi vụ việc được ghi nhận. Điểm SlS_lTlT_l được cập nhật tự động khi có kiểm địch mới hoặc đánh giá cộng đồng.

Giai đoạn 3: B2B, B2G & Ra mắt (Tuần 9–12)

  • Mở rộng đăng ký lên 500 địa điểm tại TP.HCM (khu công nghiệp, trường học, khu đô thị)
  • Mô hình B2B: chức năng đăng ký tài khoản doanh nghiệp + thanh toán
  • Mô hình B2G: ký MOU với Chi cục ATSP TP.HCM, kết nối webhook dữ liệu kiểm địch
  • Chế độ Family Safety (B2C premium): phụ huynh nhận cảnh báo riêng khi con em ăn tại trường
  • Phát hành Beta TestFlight (iOS) + Internal Testing (Android) — thu thập phản hồi từ 200 người dùng thử nghiệm
  • Đo lường: tỷ lệ người dùng quét ≥ 1 lần/tuần ≥ 60%, hệ số tương quan ρ0.75\rho \geq 0.75, latency p95 ≤ 3s
  • Ra mắt chính thức (App Store + Google Play) tại TP.HCM

Tiêu chí kết thúc: Ứng dụng có mặt trên App Store và Google Play, ≥ 500 địa điểm đăng ký, ≥ 2.000 người dùng active (MAU), MOU B2G đã ký.


Claims

Claim 1: ACIL giảm thời gian phát hiện ngộ độc thực phẩm từ 48-72 giờ xuống dưới 30 phút thông qua hệ thống cảnh báo theo vị trí tự động gửi đến người dùng trong bán kính 5 km khi có vụ việc được xác nhận.

Claim 2: ACIL tăng tỷ lệ người dùng xác minh an toàn thực phẩm trước khi ăn lên ≥60% thông qua quét mã QR tại địa điểm, tra cứu điểm an toàn tổng hợp và lịch sử kiểm địch trong vòng 3 giây.

Claim 3: ACIL giảm số vụ ngộ độc thực phẩm lan rộng thông qua cơ chế cảnh báo cộng đồng khi phát hiện ≥3 báo cáo tiêu cực trong 24 giờ tại cùng một địa điểm, giúp người dùng trong khu vực nhận thông báo phòng ngừa.

Claim 4: ACIL tạo lớp thông tin an toàn thực phẩm tổng hợp bằng kết hợp dữ liệu kiểm địch chính thức từ Chi cục ATSP (trọng số 40%) và trust score cộng đồng (trọng số 25%), với độ tin cậy tương quan Pearson ρ ≥ 0.75 so với kết quả kiểm tra thực tế.


Quyền sở hữu & Bản quyền

© 2026 Alpha Chain Ltd. Tất cả quyền được bảo lưu.

Tài liệu này là tài sản độc quyền của Alpha Chain Ltd. Việc sao chép, phân phối lại, hoặc tạo sản phẩm phái sinh đều yêu cầu sự đồng ý bằng văn bản từ Alpha Chain Ltd.


Lịch sử thay đổi

Phiên bảnNgàyTác giảThay đổi
1.02026-04-16Alpha Chain Ltd.Tạo ban đầu — ý tưởng SafeMeal từ bài viết vnexpress ngộ độc thực phẩm tăng vọt
2.02026-04-16Alpha Chain Ltd.Gộp ACIL-2026-001 (SafeMeal v1.0) và ACIL-2026-002 (AnToan v1.0) thành một tài liệu hợp nhất. Giữ kiểm địch chính thức từ Chi cục ATSP + trust score cộng đồng + yếu tố thời tiết. Loại bỏ bảng "Trùng lặp ý tưởng" vì đã gộp.