Add period and cross-task interface compare for port traffic wall.

Compare by interface target_id with optional mapped baseline (same window or time-shifted), keep chart samples on target_row_id, and unify UI wording to interface.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-07-31 22:53:26 +08:00
parent 0d85b87be7
commit 653baa1b9f
16 changed files with 1185 additions and 129 deletions

View file

@ -81,28 +81,47 @@ const en = {
delete: "Delete",
step1: "Params",
step2: "NEs",
step3: "Ports",
step3: "Interfaces",
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",
portsRequired: "Select at least one interface",
interval: "Interval (sec)",
retention: "Retention (days)",
retentionHintWizard: "Use ≥8 days for week-over-week compare",
concurrency: "Concurrency",
startNow: "Start after create",
neKeywordPh: "Name / IP / vendor",
selectedNe: "{{count}} NE(s) selected",
selectedPorts: "{{count}} port(s) selected",
selectedPorts: "{{count}} interface(s) selected",
pickNeFirst: "Select NEs in the previous step first",
discover: "Discover ports",
discover: "Discover interfaces",
confirmCreate: "Create task",
wallTask: "Task",
wallPort: "Interface",
wallDevice: "Device",
pickPort: "Select interface",
range: "Range",
compare: "Compare",
compareOff: "Off",
compareDay: "Yesterday (same TOD)",
compareWeek: "Last week (same weekday)",
compareShift: "Previous window",
compareCustom: "Custom offset",
offsetHours: "Offset (hours)",
baseline: "Baseline",
baselineAt: "Baseline time",
seriesCurrentIn: "Current In",
seriesCurrentOut: "Current Out",
seriesBaselineIn: "Baseline In",
seriesBaselineOut: "Baseline Out",
mapBaselinePort: "Mapped baseline interface",
mapBaselineTask: "Mapped baseline task",
mapBaselineNone: "None",
retentionHint: "Week compare needs retention_days ≥ 8 or the baseline may be empty.",
collectNow: "Collect now",
collectStarted: "Collect triggered",
collectBusy: "Collect already running",
@ -114,17 +133,16 @@ const en = {
latestAt: "Latest sample",
hoverPoint: "Cursor",
wallLiveTitle: "Live traffic",
wallDevice: "Device",
kpi: {
tasks: "Tasks",
running: "Running",
ports: "Ports",
ports: "Interfaces",
samples24h: "Samples 24h",
},
col: {
title: "Task",
status: "Status",
ports: "Ports",
ports: "Interfaces",
interval: "Interval",
last: "Last collect",
actions: "Actions",

View file

@ -81,28 +81,47 @@ const zh = {
delete: "删除",
step1: "参数",
step2: "选网元",
step3: "选端口",
step3: "选接口",
step4: "确认",
prev: "上一步",
next: "下一步",
fieldTitle: "任务名称",
titlePh: "例如:接入侧上联",
titleRequired: "请填写任务名称",
portsRequired: "请至少选择一个端口",
portsRequired: "请至少选择一个接口",
interval: "周期(秒)",
retention: "保留(天)",
retentionHintWizard: "若需上周同日对比,建议 ≥8 天",
concurrency: "并发",
startNow: "创建后立即启动",
neKeywordPh: "名称 / IP / 厂商",
selectedNe: "已选 {{count}} 台网元",
selectedPorts: "已选 {{count}} 个端口",
selectedPorts: "已选 {{count}} 个接口",
pickNeFirst: "请先在上一步选择网元",
discover: "拉取端口",
discover: "拉取接口",
confirmCreate: "创建任务",
wallTask: "任务",
wallPort: "接口",
wallDevice: "网元",
pickPort: "选择接口",
range: "时间范围",
compare: "周期对比",
compareOff: "关闭",
compareDay: "昨日同时刻",
compareWeek: "上周同日",
compareShift: "前一窗",
compareCustom: "自定义偏移",
offsetHours: "偏移(小时)",
baseline: "基线",
baselineAt: "基线原时刻",
seriesCurrentIn: "当前 In",
seriesCurrentOut: "当前 Out",
seriesBaselineIn: "基线 In",
seriesBaselineOut: "基线 Out",
mapBaselinePort: "映射基线接口",
mapBaselineTask: "映射基线任务",
mapBaselineNone: "不映射",
retentionHint: "周对比建议任务保留天数 ≥ 8;否则基线可能无数据。",
collectNow: "立即采集",
collectStarted: "已触发采集",
collectBusy: "采集进行中",
@ -114,17 +133,16 @@ const zh = {
latestAt: "最新样点",
hoverPoint: "光标位置",
wallLiveTitle: "实时流量",
wallDevice: "设备",
kpi: {
tasks: "任务数",
running: "运行中",
ports: "监控端口",
ports: "监控接口",
samples24h: "24h 样点",
},
col: {
title: "任务",
status: "状态",
ports: "端口",
ports: "接口",
interval: "周期",
last: "最近采集",
actions: "操作",