- HTTP method + request body: GET/POST/PUT/PATCH/DELETE/HEAD selector and body textarea for http/health checks; stored in http_method/http_body columns; monitorService sends correct axios method+data - Alert escalation: incidents open longer than escalation_hours get forwarded to fallback_webhook and marked escalated=1; hourly cron in scheduler - Baseline-relative slow alerts: effectiveThreshold = response_time_threshold || (baseline * 2) — adaptive threshold without manual config - Notification grouping: pendingAlerts collected per check cycle; ≥2 alerts flush as one grouped email+webhook; individual in-app entries still saved per resource - Rate limiting: in-memory per-IP limiter (20/min heartbeat, 60/min status-page); no external package - App.js split: Dashboard.js (monitors list + modals) and ResourceDetail.js extracted; App.js reduced from ~1987 to ~80 lines - formatDuration moved to utils/timeUtils.js; imported by both new components - DB migrations: http_method, http_body, incidents.escalated columns - 18 passing API/unit tests (node:test, zero dependencies) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
15 lines
517 B
JSON
15 lines
517 B
JSON
{
|
|
"files": {
|
|
"main.css": "/static/css/main.40bbff16.css",
|
|
"main.js": "/static/js/main.a387bcf0.js",
|
|
"static/js/453.d456ce70.chunk.js": "/static/js/453.d456ce70.chunk.js",
|
|
"index.html": "/index.html",
|
|
"main.40bbff16.css.map": "/static/css/main.40bbff16.css.map",
|
|
"main.a387bcf0.js.map": "/static/js/main.a387bcf0.js.map",
|
|
"453.d456ce70.chunk.js.map": "/static/js/453.d456ce70.chunk.js.map"
|
|
},
|
|
"entrypoints": [
|
|
"static/css/main.40bbff16.css",
|
|
"static/js/main.a387bcf0.js"
|
|
]
|
|
} |