feat: improve network topology — LLDP-authoritative, manual links, orphan handling (v0.11.6 Beta)
- Backend: 7-step pipeline — per-neighbor best-protocol dedup, bidirectional LLDP pair merging, LLDP-covered set suppression of noisy CDP/MNDP links, shared-segment heuristic limited to genuinely unresolved non-LLDP links - Backend: manual_topology_links table + POST/DELETE endpoints for user-drawn connections - Frontend: ManualEdge custom edge type (purple dashed + × delete button) - Frontend: Connect Mode toggle — blue crosshair handles, onConnect creates DB-persisted link - Frontend: orphan nodes in dedicated bottom row with orange warning banner - Frontend: legend updated, canvas height increased Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
624c9bc1cc
commit
63a7f4d785
@@ -400,8 +400,15 @@ export const topologyApi = {
|
||||
devices: Device[];
|
||||
links: import('../types').TopologyLink[];
|
||||
externalNodes: import('../types').ExternalTopologyNode[];
|
||||
segConns: { src: string; dst: string; port: string }[];
|
||||
manualLinkIds: { id: number; from_device_id: number; to_device_id: number }[];
|
||||
}>('/topology'),
|
||||
discover: () => api.post('/topology/discover'),
|
||||
createManualLink: (from_device_id: number, to_device_id: number, label?: string) =>
|
||||
api.post<{ id: number; from_device_id: number; to_device_id: number; label: string | null }>(
|
||||
'/topology/manual-links', { from_device_id, to_device_id, label }
|
||||
),
|
||||
deleteManualLink: (id: number) => api.delete(`/topology/manual-links/${id}`),
|
||||
};
|
||||
|
||||
// ─── Search ──────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user