feat: per-BU trend lines in counts history chart
- Create ivanti_counts_history_by_bu table (bu_ownership, state, count per sync) - Sync writes per-BU snapshot alongside global history on each sync - Seed table with current counts for immediate first data point - GET /counts/history accepts ?teams param — queries per-BU table when filtered - IvantiCountsChart accepts teamsParam prop, re-fetches on scope change - ReportingPage passes getActiveTeamsParam() to the chart - Historical per-BU data accumulates from this point forward - Global history (no filter) still uses the original aggregate table
This commit is contained in:
@@ -1156,6 +1156,20 @@ app.get('/api/stats', requireAuth(), async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Serve frontend build (for testing/production — serves React SPA)
|
||||
const frontendBuild = path.join(__dirname, '..', 'frontend', 'build');
|
||||
if (fs.existsSync(frontendBuild)) {
|
||||
app.use(express.static(frontendBuild));
|
||||
// SPA fallback — serve index.html for any non-API route
|
||||
app.use((req, res, next) => {
|
||||
if (!req.path.startsWith('/api/') && !req.path.startsWith('/uploads/')) {
|
||||
res.sendFile(path.join(frontendBuild, 'index.html'));
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Start server
|
||||
app.listen(PORT, () => {
|
||||
console.log(`CVE API server running on http://${API_HOST}:${PORT}`);
|
||||
|
||||
Reference in New Issue
Block a user