Add reliability enhancements, reachability pre-check, and AT presets

High-impact reliability:
- SQLite job persistence (rv50x.db) — job history and AT sessions survive restarts
- Extract _login_and_open_modal() — eliminates ~40 lines of duplicated Playwright login logic
- Separate NocoDB view IDs per group via NOCODB_VIEW_ID_ELECTRIC / NOCODB_VIEW_ID_GW env vars
- Excel cache TTL (1h) + size cap (20 files) with eviction helpers
- In-memory job store pruning (MAX_JOBS_MEMORY, default 200)

Functionality:
- TCP reachability pre-check before launching Playwright — fails fast on unreachable devices
- AT command presets — save/load/delete named command sequences, stored in at_presets.json

Ops:
- Bind-mount rv50x.db and at_presets.json in docker-compose so data survives rebuilds
- Add NOCODB_VIEW_ID_ELECTRIC, NOCODB_VIEW_ID_GW, REACH_TIMEOUT env vars to compose
- Ignore runtime files (rv50x.db, at_presets.json, template dirs) in .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
D Stephenson
2026-04-23 20:37:17 +00:00
parent 6c21525b79
commit cd819002b4
4 changed files with 398 additions and 93 deletions
+5 -1
View File
@@ -35,6 +35,8 @@ services:
- /opt/rv50x-manager/template_uploads:/data/template_uploads
- /opt/rv50x-manager/xml_templates:/data/xml_templates
- /opt/rv50x-manager/certs:/certs:ro # SSL certificates (read-only)
- /opt/rv50x-manager/rv50x.db:/app/rv50x.db # job history (SQLite)
- /opt/rv50x-manager/at_presets.json:/app/at_presets.json # AT presets
environment:
# ── NocoDB connection ──────────────────────────────────────────────
# To use the built-in NocoDB from this stack, set NOCODB_URL to:
@@ -44,7 +46,9 @@ services:
NOCODB_TOKEN: ${NOCODB_TOKEN}
NOCODB_BASE_ID: ${NOCODB_BASE_ID}
NOCODB_TABLE_ID: ${NOCODB_TABLE_ID}
NOCODB_VIEW_ID: ${NOCODB_VIEW_ID}
NOCODB_VIEW_ID: ${NOCODB_VIEW_ID}
NOCODB_VIEW_ID_ELECTRIC: ${NOCODB_VIEW_ID_ELECTRIC:-}
NOCODB_VIEW_ID_GW: ${NOCODB_VIEW_ID_GW:-}
# ── SSL certificate paths (inside the container) ───────────────────
SSL_CERT: /certs/cert.pem
SSL_KEY: /certs/key.pem