[object Object]

← back to Zendesk Chat Analyzer

Auto-refresh data.json on boot(if stale)+every 6h so deployed dashboard stays current

83d1c2f8d993ea20fdbfef9f8a684b4f27338a7f · 2026-08-11 08:54:55 -0700 · Steve

Files touched

Diff

commit 83d1c2f8d993ea20fdbfef9f8a684b4f27338a7f
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Aug 11 08:54:55 2026 -0700

    Auto-refresh data.json on boot(if stale)+every 6h so deployed dashboard stays current
---
 server.js | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/server.js b/server.js
index 04b0bae..0f3606f 100644
--- a/server.js
+++ b/server.js
@@ -37,3 +37,17 @@ http.createServer((req, res) => {
     res.end(buf);
   });
 }).listen(PORT, () => console.log('DW Chat Analyzer → http://localhost:' + PORT));
+
+// Keep the dashboard data fresh: refresh data.json on boot (if stale) + every REFRESH_HOURS.
+const REFRESH_HOURS = Number(process.env.REFRESH_HOURS || 6);
+function refreshData(reason) {
+  execFile('/usr/bin/python3', [path.join(__dirname, 'pull.py')],
+    { env: { ...process.env, START: '1760000000', MAX_PAGES: '80' }, maxBuffer: 32 * 1024 * 1024 },
+    (err, so) => console.log(`[auto-refresh ${reason}] ` + (err ? 'FAILED: ' + err : (so || '').trim())));
+}
+try {
+  const dj = path.join(ROOT, 'data.json');
+  const stale = !fs.existsSync(dj) || (Date.now() - fs.statSync(dj).mtimeMs) > REFRESH_HOURS * 3600e3;
+  if (stale) setTimeout(() => refreshData('boot'), 4000);
+} catch (e) {}
+setInterval(() => refreshData('interval'), REFRESH_HOURS * 3600 * 1000);

← fd2c68c Token reads from env var (pm2) for Kamatera deploy  ·  back to Zendesk Chat Analyzer  ·  SECURITY: bind app to 127.0.0.1 (localhost-only) so nginx Ba b6d80b4 →