Add description keyword matching alongside notificationId rules, require
per-rule labels, and improve the AI monitor form layout and clear-on-push UX.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove hop columns from the import template and stop applying hop settings during import; use Batch add proxy instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow creating/importing NEs without target password for bastion-managed workflows, and support optional hop_* columns in bulk import templates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Support composite-username bastion login for automated connect-test and exec, with bastion-managed or manual target credential modes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Change Linux default web port to 8505, add NODE_CMD/NPM_CMD support with version check, and declare Node 20.19+ in web/package.json engines.
Co-authored-by: Cursor <cursoragent@cursor.com>
Persist full connect test logs (connect_detail) with NE UI detail modal.
Add Huawei/Cisco jump CLI templates and generic CLI hop session path.
Probe Cisco hostname via show configuration | include hostname (60s timeout).
Co-authored-by: Cursor <cursoragent@cursor.com>
Support hop_vendor=linux via Paramiko direct-tcpip tunnel; ZTE CLI hop unchanged. UI hop type selector and distinct list badges.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add POST /v1/managed-ne/batch-hop, shared HopProxyFields form, and toolbar button next to connectivity test.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add hop fields and encrypted credentials, unified Netmiko session factory with ZTE ssh/telnet CLI templates and secondary auth, wire connect/collect paths, and NE management UI with auto-suggested jump commands.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat timezone-less ISO timestamps from connect_tested_at as UTC before formatting so NE test time renders correctly in the user's system timezone.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default the UME NE list and current alarms sections to collapsed state and add explicit expand/collapse toggles for cleaner initial layout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid false running-state conflicts when starting draft jobs, block overlapping NE runs across jobs, and default the create panel to collapsed for cleaner task-first operation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow selecting multiple eligible NEs and adding them into the selected list in one action, while keeping single-item add for precise control.
Co-authored-by: Cursor <cursoragent@cursor.com>
Create collection jobs without auto-running; add /start for first run and re-run. Merge create form with filterable NE picker and selected list.
Co-authored-by: Cursor <cursoragent@cursor.com>
Defer collection scheduling to BackgroundTasks after commit; claim pending runs atomically with retries. Only handle focus-module broadcasts for the matching moduleId so opening one module does not rewrite other tabs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fix pending mislabeled as fail due to timezone and queue stale checks, show full error details, sync live progress counts, and add retry-failed endpoint for failed NEs only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose GET /v1/managed-ne/import/template and a workbench button to download xlsx/csv templates listing supported Netmiko device types.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce workbench operations for multi-vendor NE CRUD/connect-test and Netmiko batch collection with job lifecycle controls, log downloads, and paginated run filters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show inventory/alarms schedulers as running with DB last_run_at during debounce; English interval labels; subscription help on ? click.
Co-authored-by: Cursor <cursoragent@cursor.com>
Detect missing UME subscriptions from WSS/DELETE errors, stop stale reconnects, and prompt to clear local state before re-establishing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use DELETE delete-subscription, refresh token before cancel, recover orphan subs on establish, and keep local state when UME delete fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid stale last_run_at when sync_alarms_current runs longer than interval; clarifying tooltip on UME page.
Co-authored-by: Cursor <cursoragent@cursor.com>
- keepalive: call renew when has_token and (expires_in<=0 or below renew_before) so 0s stuck state self-heals\n- alarms/inventory auto loops: set last_error while pulling so table is not stuck at init with no hint\n- UmePage: warn pills for connected+需续期, spinners on token actions, toast ok/err from App, invalidate sync status after token ops
Co-authored-by: Cursor <cursoragent@cursor.com>
GET /v1/ume/alarms accepts host_name (contains on inventory); ne_id query kept for API clients. Web uses host_name field and link on host column.
Co-authored-by: Cursor <cursoragent@cursor.com>
API GET /v1/ume/sync/status exposes deleted only (sum of inventory NE + current-alarm reconcile counts from details_json). UI one column.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop ume_inventory_equipment_holder on startup; remove ORM model and sync/reconcile paths. Sync status API/UI no longer expose deleted_inventory_holders. Nested holder data remains in ne raw_json if UME returns it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Parse UmeSyncJob.details_json in GET /v1/ume/sync/status for deleted_inventory_ne, deleted_inventory_holders, deleted_stale_current_alarms. Add table columns on UmePage and types.
Co-authored-by: Cursor <cursoragent@cursor.com>