1. Thu thập đa nguồn
Hệ thống crawl nhiều nguồn độc lập (website chính thức, aggregate, scrape) mỗi 1–5 phút trong giờ giao dịch. Mỗi bản ghi lưu riêng theo source + product + region — không ghi đè lẫn nhau.
2. Consensus thông minh
Với cùng một nhóm (ví dụ SJC miếng · Hà Nội):
- Tính median giá mua và bán từ tất cả nguồn hợp lệ.
- Nguồn nào lệch hơn 3,5% so với median (mua hoặc bán) được coi là bất thường và không dùng để hiển thị.
- Trong cụm còn lại, ưu tiên nguồn tin cậy hơn (official > aggregate) và mới cập nhật hơn.
Khi chỉ có một nguồn, giá đó được dùng trực tiếp. Khi thị trường biến động mạnh nhưng đồng loạt, median tự điều chỉnh — không cần sửa ngưỡng thủ công.
3. Kiểm tra cơ bản (không phải ngưỡng giá)
- Giá bán phải ≥ giá mua.
- Sửa lỗi đơn vị phổ biến (ví dụ thiếu ×1000 ở cột bán).
- Bản ghi lỗi đơn vị bị xóa; nguồn lệch median được đánh dấu
conflict.
4. Schema API chuẩn
Endpoint GET /api/v1/prices/quotes trả về JSON gv.price-quote.v1 gồm giá, nguồn được chọn, median và danh sách nguồn bị loại (nếu có). Endpoint /api/v1/prices/current giữ tương thích ngược — cùng logic consensus.
5. Minh bạch
Trang Trạng thái dữ liệu liệt kê nguồn lệch median, lỗi đơn vị và mapping chờ duyệt. Live feed ghi rõ thời điểm nguồn cập nhật và thời điểm xác minh.