Commit graph

419 commits

Author SHA1 Message Date
5d705fa7bb Parse onsite UME TopoNode FDN names when nodeId is missing.
Live TopoNodes use MD=...;ME=<uuid> / SBN=<uuid> without nodeId; extract those uuids as stable PKs and parent refs so reconcile drops old name:hash rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 19:33:16 +08:00
cd7d1fc6e7 Wait indefinitely for UME topology dumps while the connection stays up.
Default topology read timeout to 0 (no deadline) and extend stale-running reap to 24h so long TopoNodes/TopologicalLinks pulls are not killed mid-stream.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 19:04:13 +08:00
6622d4ce7a Clarify topology schedule: next run is 24h after last real sync end.
Resume still skips the wait and runs immediately; after that job writes ended_at, the following cycle waits a full interval from that completion (ignoring stale_running cleanup rows).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:59:52 +08:00
3088136aae Fix topology resume so it actually interrupts wait and starts a sync.
Stop clearing the wake event at sleep entry, keep force-sync skip until consumed, and make pause loops wait on the resume event so UI start kicks topology immediately.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:54:38 +08:00
4bb1df8299 Make topology resume kick sync immediately and keep schedule across restarts.
Wire topology_auto_sync into resume/pause force-sync hints, ignore stale_running cleanup rows when computing the interval clock, and wait a full interval instead of pulling topology on every cold start.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:51:44 +08:00
4fcec36514 Fix UME topology sync stuck running and unique-key flush failures.
Use savepoint upserts with payload dedupe, finalize jobs on a fresh sibling session, serialize concurrent topology syncs, and reap stale running rows so the scheduler does not keep spawning orphans.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:42:02 +08:00
fe483f51cc Add UME TopoNodes/TopologicalLinks daily sync into local tables.
Phase-1 docks both topology APIs without writing Fabric; expose a 24h topology_auto_sync task and domain=topology manual sync for later LLDP alignment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 18:17:45 +08:00
db8c77a2e5 Treat UME stream handshake 500 as a lost subscription.
Stop infinite reconnect loops when ZTE returns HTML 500 for a dead stream id and surface re-establish in the UI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 16:19:14 +08:00
c91d1571a2 Fix more UME split regressions for sync and alarm WSS.
Restore sql_text and alarm-apply imports, slim WSS handshake headers to accessToken only, and treat 404/503 handshakes as lost subscriptions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:59:02 +08:00
4054f55988 Map OClaw bridge connect failures to readable fwd status codes.
Replace cryptic WinError 10061 flashes with i18n hints when the gateway is down or auth fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:34:43 +08:00
e356dffc86 Fix missing imports after UME router split.
Restore sqlalchemy.func and runtime helpers so alarms_current upsert and pause/resume no longer raise NameError 500s.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:29:36 +08:00
6eeaa457b8 Default UME TLS verify off for lab self-signed certs.
Restore ume_verify_tls=false so onsite UME login works without a .env override; production should set NETX_UME_VERIFY_TLS=true or pin a CA.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:15:48 +08:00
0ebf137776 Clarify lab UME TLS verify after default flipped to true.
Point .env.example at NETX_UME_VERIFY_TLS=false for self-signed UME and surface the same hint on certificate verify login failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 15:11:21 +08:00
20c2fcd496 Harden auth with revocable sessions, cookies, and single-login default.
Issue short-lived access JWTs backed by AuthSession rows, HttpOnly cookies with refresh rotation, idle timeout, session management UI, WebCRT ownership caps, and optional Redis login rate limits; new logins revoke other sessions by default.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 14:13:37 +08:00
ba33ab5c4f Fix WebCRT copy/paste on HTTP LAN by falling back off Clipboard API.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 11:02:10 +08:00
4ea3b737f2 Close only this WebCRT window's sessions on leave; require manual reconnect.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 10:20:08 +08:00
938cd39c06 Show netx database used size on the workbench storage gauge.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-06 09:36:17 +08:00
155cb4e921 Defer manual canvas edges to Save and restore center-anchor connect.
Keep connect/delete/move as dirty local edits until Save, use straight edges again, and drop Visio side handles so lines attach at the NE center like discovered links.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 23:48:27 +08:00
b4f0e468cb Make neighbor projection save-deferred and Visio-style connect.
Project-neighbors supports dry_run for local dirty canvas; Save flushes adds. Connect mode uses drag-from side anchors with smoothstep elbows instead of click-click.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 23:11:13 +08:00
a746a84d01 Fix placeholder toggle to hide only the TOPO/LLDP badge.
Keep placeholder NEs on the canvas; Display menu controls the corner badge only (off by default).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:55:58 +08:00
73cd2704eb Hide TOPO/LLDP placeholder NEs on the canvas by default.
Add a Display toggle to show placeholders; hide their incident edges and skip them in canvas find while hidden.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:52:10 +08:00
6e2c8517cf Defer canvas edge deletes to Save and cascade orphan Fabric on NE detach.
Queue fabric edge deletes until Save with undo-safe pending state; hard-delete topology/LLDP placeholders from the canvas; purge fully orphaned fabric nodes after inventory detach, with a periodic reconcile GC.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:43:03 +08:00
2aafb72676 Fix topology truncate false positives and reduce graph/discover load.
Batch ManagedNE lookups, correct project-neighbors truncation/frozen signals, page discover polls, and delete both nodes and edges when multi-selected.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 21:48:08 +08:00
03ef9eb39a Project discover neighbors from scanned seeds only.
Accept optional seed ids on project-neighbors; canvas discover passes scanned fabric nodes and places new peers near them.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 21:34:20 +08:00
7cd89aaae9 Localize LLDP and topology classify English leftovers.
Translate job status/trigger/scope, item result, edge labels, and classify role/source option text in zh/en.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 21:28:17 +08:00
617d4245b0 Harden topology canvas edge delete, discover cancel, and map UX.
Persist Fabric edge deletes, stop LLDP jobs from the canvas, surface truncation/placeholders/stale edges, and fix LLDP job deep-links.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 21:23:00 +08:00
5e567408e7 Darken the topology canvas LLDP discover progress panel.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 19:32:19 +08:00
84a4fc037a Open LLDP job detail when jumping from canvas discover.
Pass job_id in the LLDP page URL so the network module auto-opens the task detail modal.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 19:27:52 +08:00
fa8e3abcc7 Move LLDP collect policy auto-placeholder help into a title hint.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 19:21:44 +08:00
51f061032a Default discover auto-placeholder and canvas neighbor project on.
Sync the canvas auto-add toggle with the shared LLDP collect policy so topology collect and canvas discover stay consistent.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 19:09:09 +08:00
af91c09d80 Rename topology placeholder action label to New NE.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:43:45 +08:00
241093343e Add topology-canvas placeholder NE create (source=topology).
Toolbar and pane context menu create placeholders that follow the same setup path as LLDP in NE management and WebCRT.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:42:51 +08:00
71c5193ecd Open WebCRT New Session setup for LLDP placeholders.
Claim the existing placeholder in place and promote source to webcrt instead of prompting for password-only auth.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 17:20:26 +08:00
5821d08d63 Fit topology canvas after the pane has a real size.
Avoid the corner-only first paint on slow layouts by deferring fitView until the container is ready and re-fitting on resize.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 16:47:08 +08:00
6642f4b8b5 Add collect dashboard KPIs and create-job modal.
Align collection tasks with LLDP/config-sync chrome, and refresh active-task overview when jobs change.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 14:08:13 +08:00
0100fb8430 Show collect job run details in the shared ops modal.
Replace the inline expand row with the same detail dialog used by LLDP and config sync.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 11:34:22 +08:00
19e06e4a2d Darken WebCRT session tabs and action bar after login.
Match the right-side chrome (tab strip and toolbar) to the dark ops shell instead of the leftover light panels.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 10:14:52 +08:00
a54c642bd9 Shorten the UME AI alarm monitor card title.
Drop the OClaw WhatsApp parenthetical from the workbench-facing label.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 10:09:51 +08:00
b7a179d492 Unify ops detail dialogs and rename workbench monitoring section.
LLDP job detail, config-sync cycle tasks, and UME fold panels now use the shared modal layout; workbench section label is 系统对接.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 10:04:19 +08:00
5a77e36839 Show network config content in a dark modal dialog.
Move the inline config viewer into the shared modal chrome so viewing stays consistent with other network management dialogs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:50:39 +08:00
54747d9afb Fix UME alarm WSS startup NameError for SessionLocal.
Import SessionLocal in ume_alarm_ws_subscription so load_persisted_subscription works at process boot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:41:36 +08:00
00926196f0 Widen the topology Display panel into a two-column card.
Lay out toggles and color pickers side by side with a viewport-capped height so the menu no longer runs off-screen.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:36:14 +08:00
a412ca7cbc Preserve NE icon white textures when applying vendor tint colors.
Layer the original PNG under a color blend tint so luminosity highlights stay visible while brand hues remain editable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:34:29 +08:00
65afe8f29f Add topology display pickers for label, edge-number, and vendor icon colors.
Persist choices in localStorage, apply via canvas CSS variables, and tint router icons with mask fills so each vendor color is editable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:29:02 +08:00
4a0918ab44 Hide white React Flow edge-label backgrounds on the topology canvas.
Disable labelShowBg for straight edges and suppress the default SVG textbg so link numbers render as text only.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:21:55 +08:00
83acb5eef1 Move integration health into active tasks and fix dark topology labels.
Drop header netx-api/oclaw pills, restore UME/OClaw runtime rows in ops tasks, and raise node/edge label contrast on the dark canvas.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 09:16:52 +08:00
4dd121b42f Darken topology classify section dividers to match the ops shell.
Replace the light section border and help-control colors so the bottom slice block no longer shows a white hairline.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 00:33:59 +08:00
8a856fa2ac Darken collect-task and network monitoring chrome leftovers.
Unify chips, filters, previews, toasts, and related task-page controls with the dark ops shell.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 00:31:52 +08:00
2a650ca09b Switch topology canvas and left chrome to a dark theme.
Align the default canvas background, region list, and canvas name styles with the dark ops shell, and migrate the old light canvas default.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 00:16:20 +08:00
2de8786f85 Finish replacing CDN font stacks with local system fonts.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-04 23:57:52 +08:00