Add ZTE-first port traffic monitoring with task wizard and ops wall.

Collect interface bit/s via CLI on a schedule, store samples in Postgres, and chart trends with uPlot.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-07-31 14:56:50 +08:00
parent a95c6598bb
commit efe8f58cd2
25 changed files with 2880 additions and 36 deletions

View file

@ -60,12 +60,65 @@ const en = {
placeholder: {
title: "Coming soon",
body: "This capability is not available yet.",
portTrafficTitle: "Port traffic monitoring",
portTrafficBody: "Planned: collect per-port traffic on a schedule and show trends. Suggested path:",
portTrafficStep1: "Task definition: NE/port scope, interval, retention",
portTrafficStep2: "Collection: prefer CLI (display/show interface); SNMP later at scale",
portTrafficStep3: "Storage: time series or hourly rollups (in/out bps, errors)",
portTrafficStep4: "UI: task list + per-port trend charts",
},
},
portTraffic: {
title: "Port traffic",
create: "New task",
backList: "Back to list",
created: "Task created",
createFailed: "Create failed",
started: "Started",
paused: "Paused",
stopped: "Stopped",
deleted: "Deleted",
confirmDelete: "Delete this task and its samples?",
empty: "No monitoring tasks yet. Create one to start.",
wall: "Ops wall",
start: "Start",
pause: "Pause",
stop: "Stop",
delete: "Delete",
step1: "Params",
step2: "NEs",
step3: "Ports",
step4: "Confirm",
prev: "Back",
next: "Next",
fieldTitle: "Task name",
titlePh: "e.g. Access uplinks",
titleRequired: "Task name is required",
portsRequired: "Select at least one port",
interval: "Interval (sec)",
retention: "Retention (days)",
concurrency: "Concurrency",
startNow: "Start after create",
neKeywordPh: "Name / IP / vendor",
selectedNe: "{{count}} NE(s) selected",
selectedPorts: "{{count}} port(s) selected",
pickNeFirst: "Select NEs in the previous step first",
discover: "Discover ports",
confirmCreate: "Create task",
wallTask: "Task",
wallPort: "Interface",
pickPort: "Select interface",
range: "Range",
kpi: {
tasks: "Tasks",
running: "Running",
ports: "Ports",
samples24h: "Samples 24h",
},
col: {
title: "Task",
status: "Status",
ports: "Ports",
interval: "Interval",
last: "Last collect",
actions: "Actions",
source: "Source",
name: "Device",
vendor: "Vendor",
},
},
configSync: {