diff --git a/backend/routes/vclMultiVertical.js b/backend/routes/vclMultiVertical.js index 607a09d..0a006e8 100644 --- a/backend/routes/vclMultiVertical.js +++ b/backend/routes/vclMultiVertical.js @@ -144,7 +144,8 @@ async function persistMultiVerticalUpload({ items, summary, reportDate, filename // Use summary data for accurate totals (compliance_items only has non-compliant devices). // IMPORTANT: Only use "ALL:" rollup rows to avoid double-counting. Each Summary sheet // has sub-team rows AND a rollup row per metric — the rollup already includes sub-teams. - const currentMonth = new Date().toISOString().slice(0, 7); + // Use the file's report_date month for the snapshot so historical uploads land in the correct bucket. + const snapshotMonth = reportDate ? reportDate.slice(0, 7) : new Date().toISOString().slice(0, 7); let totalDevices = 0, snapshotCompliant = 0, snapshotNonCompliant = 0; if (summary && summary.entries && summary.entries.length > 0) { @@ -165,7 +166,7 @@ async function persistMultiVerticalUpload({ items, summary, reportDate, filename VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (snapshot_month, vertical) DO UPDATE SET total_devices = $3, compliant = $4, non_compliant = $5, compliance_pct = $6`, - [currentMonth, vertical, totalDevices, snapshotCompliant, snapshotNonCompliant, compPct] + [snapshotMonth, vertical, totalDevices, snapshotCompliant, snapshotNonCompliant, compPct] ); return { uploadId, newCount, recurringCount, resolvedCount }; @@ -1195,10 +1196,10 @@ function createVCLMultiVerticalRouter(upload) { await client.query(`DELETE FROM vcl_multi_vertical_summary WHERE upload_id = $1`, [uploadId]); await client.query(`DELETE FROM compliance_uploads WHERE id = $1`, [uploadId]); - const currentMonth = new Date().toISOString().slice(0, 7); + const rollbackMonth = upload.report_date ? upload.report_date.slice(0, 7) : new Date().toISOString().slice(0, 7); await client.query( `DELETE FROM compliance_snapshots WHERE vertical = $1 AND snapshot_month = $2`, - [upload.vertical, currentMonth] + [upload.vertical, rollbackMonth] ); await client.query('COMMIT'); diff --git a/frontend/src/components/pages/CCPMetricsPage.js b/frontend/src/components/pages/CCPMetricsPage.js index 0fbc16a..eb0b633 100644 --- a/frontend/src/components/pages/CCPMetricsPage.js +++ b/frontend/src/components/pages/CCPMetricsPage.js @@ -1486,16 +1486,6 @@ function ForecastBurndownChart({ metricId }) { label={{ value: 'Forecast →', position: 'top', style: { fontSize: 9, fill: PURPLE } }} /> )} - +