diff --git a/public/js/admin/audit-analytics.js b/public/js/admin/audit-analytics.js
index 5892a1ca..b725f0e6 100644
--- a/public/js/admin/audit-analytics.js
+++ b/public/js/admin/audit-analytics.js
@@ -138,6 +138,60 @@ function updateSummaryCards() {
document.getElementById('violations-count').textContent = violationsCount;
document.getElementById('services-count').textContent = servicesSet.size || 0;
+
+ // Environment distribution breakdown
+ updateEnvironmentDistribution();
+}
+
+// Update environment distribution display
+function updateEnvironmentDistribution() {
+ const environmentStats = {
+ development: 0,
+ production: 0,
+ unspecified: 0
+ };
+
+ auditData.forEach(d => {
+ if (d.environment === 'development') {
+ environmentStats.development++;
+ } else if (d.environment === 'production') {
+ environmentStats.production++;
+ } else {
+ environmentStats.unspecified++;
+ }
+ });
+
+ const total = auditData.length;
+ const statsEl = document.getElementById('environment-stats');
+
+ statsEl.innerHTML = `
+
+
Development
+
${environmentStats.development}
+
${total > 0 ? ((environmentStats.development / total) * 100).toFixed(1) : 0}%
+
+
Production
+
${environmentStats.production}
+
${total > 0 ? ((environmentStats.production / total) * 100).toFixed(1) : 0}%
+
+
Unspecified
+
${environmentStats.unspecified}
+
${total > 0 ? ((environmentStats.unspecified / total) * 100).toFixed(1) : 0}%
+
+ `;
+
+ // Show warning if there are unspecified records
+ if (environmentStats.unspecified > 0) {
+ const warningHTML = `
+
+ `;
+ statsEl.innerHTML += warningHTML;
+ }
}
// Render Business Intelligence