diff --git a/packages/dashboard/index.html b/packages/dashboard/index.html index bb12052..f5d50c1 100644 --- a/packages/dashboard/index.html +++ b/packages/dashboard/index.html @@ -832,6 +832,12 @@
+ +
+
Data Verification Status
+
+
+
Vector Collections
@@ -1883,6 +1889,31 @@ async function loadOverview() { animateValue(el('ov-switches'), h.database.stats.switch_count, 600); animateValue(el('ov-standards'), h.database.stats.standard_count, 700); animateValue(el('ov-news'), h.database.stats.news_count, 900); + + // Verification status section + if (h.verification) { + var v = h.verification; + var total = v.total || 1; + var items = [ + { label: 'Price Verified', count: v.price_verified, pct: v.price_coverage_pct || Math.round(v.price_verified / total * 100), color: '#22c55e' }, + { label: 'Image Verified', count: v.image_verified, pct: Math.round(v.image_verified / total * 100), color: '#3b82f6' }, + { label: 'Details Verified', count: v.details_verified, pct: Math.round(v.details_verified / total * 100), color: '#a855f7' }, + { label: 'Fully Verified', count: v.fully_verified, pct: v.fully_verified_pct || Math.round(v.fully_verified / total * 100), color: '#f97316' }, + ]; + buildDOM(el('verification-overview'), items.map(function(item) { + return '
' + + '
' + + '' + item.label + '' + + '' + (item.count || 0).toLocaleString() + '' + + '
' + + '
' + + '
' + + '
' + + '
' + (item.pct || 0) + '% of ' + total.toLocaleString() + '
' + + '
'; + }).join('')); + } + el('version-label').textContent = 'v' + h.version; el('api-status').className = 'dot ' + (h.success ? 'dot-ok' : 'dot-err'); el('db-status').className = 'dot ' + (h.database.connected ? 'dot-ok' : 'dot-err');