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

@ -29,11 +29,11 @@ import type {
ConfigSyncTask,
NeConfigSnapshotDetail,
NeConfigSnapshotMeta,
PortTrafficCompare,
PortTrafficDashboard,
PortTrafficDiscoverResponse,
PortTrafficSamples,
PortTrafficTarget,
PortTrafficTargetIn,
PortTrafficTask,
} from "../types";
@ -847,3 +847,21 @@ export const fetchPortTrafficSamples = (params: {
if (params.to) p.set("to", params.to);
return apiGet<PortTrafficSamples>(`/v1/port-traffic/samples?${p.toString()}`);
};
export const fetchPortTrafficCompare = (params: {
targetId: string;
rangeHours: number;
baseline: string;
offsetHours?: number;
baselineTargetId?: string;
to?: string;
}) => {
const p = new URLSearchParams();
p.set("target_id", params.targetId);
p.set("range_hours", String(params.rangeHours));
p.set("baseline", params.baseline);
if (params.offsetHours != null) p.set("offset_hours", String(params.offsetHours));
if (params.baselineTargetId) p.set("baseline_target_id", params.baselineTargetId);
if (params.to) p.set("to", params.to);
return apiGet<PortTrafficCompare>(`/v1/port-traffic/compare?${p.toString()}`);
};