Redesign workbench FLEET into aligned donuts and a clickable sched dartboard.

Drop fabric reconcile as redundant with topology, open the traffic wall from the sched card, and surface scheduler tick ages in metrics types.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-09-12 16:55:09 +08:00
parent c4526e36d8
commit cd6e1f1069
5 changed files with 1879 additions and 724 deletions

View file

@ -28,7 +28,7 @@ const en = {
backToWorkbench: "Back to Workbench",
openInNewTab: "Open in new tab",
openModule: "Open or switch to this module tab",
monitoring: "System integration",
monitoring: "Integration",
operations: "Operations",
system: "System",
welcomeEyebrow: "Workbench",
@ -39,11 +39,52 @@ const en = {
uptime: "API uptime",
health: "System health",
tasks: "Active tasks",
healthOk: "Schedulers healthy",
healthWarn: "Check schedulers",
healthUnknown: "Metrics unavailable",
healthOk: "OK",
healthWarn: "CHECK",
healthUnknown: "N/A",
},
statusTitle: "Runtime status",
hostHealth: "HOST",
platformCapacity: "Platform capacity",
channels: "CHANNELS",
fleet: "FLEET",
fleetNe: "NE",
fleetNeUnit: "units",
fleetNeKnown: "Known",
fleetNePass: "Pass",
fleetNeFail: "Fail",
fleetNeTesting: "Testing",
fleetNeUnknown: "Untested",
fleetNeNoTag: "No tag",
fleetNeTags: "Top tags",
fleetTopo: "Topology",
fleetTopoNodes: "nodes",
fleetTopoEdges: "edges",
fleetTopoOther: "Other regions",
fleetTopoUnassigned: "Unassigned",
fleetTopoNoRegion: "No regions",
fleetTopoDiscover: "Last discover",
fleetTopoUpdated: "Summary updated",
fleetSched: "Schedulers",
fleetSchedConfig: "Config sync",
fleetSchedLldp: "LLDP",
fleetSchedPort: "Port traffic",
fleetSchedNeCollect: "NE collect",
fleetSchedFabric: "Fabric reconcile",
fleetSchedOn: "ON",
fleetSchedOff: "OFF",
fleetSchedMode: "Mode",
fleetSchedHeartbeat: "Heartbeat",
fleetSchedFresh: "Fresh",
fleetSchedStale: "Stale",
sidePanel: "Console side panel",
consoleId: "OPS CONSOLE",
refreshedAt: "Updated {{time}}",
taskRail: "ACTIVE TASKS",
taskRailAll: "ALL",
taskRailEmpty: "No active tasks",
taskTotal: "POOL {{count}}",
announceTitle: "Announcements",
recentTitle: "Recent operations",
recentMore: "View all",

View file

@ -31,7 +31,7 @@ const zh = {
monitoring: "系统对接",
operations: "运维",
system: "系统管理",
welcomeEyebrow: "工作台",
welcomeEyebrow: "Workbench",
welcomeTitle: "欢迎回来,{{name}}",
welcomeSub: "在此总览同步、拓扑与后台任务状态。",
today: "今天 · {{date}}",
@ -39,11 +39,52 @@ const zh = {
uptime: "API 运行时长",
health: "系统健康",
tasks: "进行中任务",
healthOk: "调度正常",
healthWarn: "请检查调度",
healthUnknown: "指标暂不可用",
healthOk: "OK",
healthWarn: "CHECK",
healthUnknown: "N/A",
},
statusTitle: "运行状态",
hostHealth: "HOST",
platformCapacity: "平台容量",
channels: "CHANNELS",
fleet: "FLEET",
fleetNe: "网元",
fleetNeUnit: "台",
fleetNeKnown: "已知",
fleetNePass: "已连通",
fleetNeFail: "失败",
fleetNeTesting: "测试中",
fleetNeUnknown: "未测试",
fleetNeNoTag: "无标签",
fleetNeTags: "热门标签",
fleetTopo: "拓扑",
fleetTopoNodes: "节点",
fleetTopoEdges: "边",
fleetTopoOther: "其他区域",
fleetTopoUnassigned: "未分区",
fleetTopoNoRegion: "暂无区域",
fleetTopoDiscover: "最近发现",
fleetTopoUpdated: "摘要更新",
fleetSched: "调度",
fleetSchedConfig: "配置同步",
fleetSchedLldp: "LLDP",
fleetSchedPort: "端口流量",
fleetSchedNeCollect: "网元采集",
fleetSchedFabric: "拓扑对账",
fleetSchedOn: "ON",
fleetSchedOff: "OFF",
fleetSchedMode: "模式",
fleetSchedHeartbeat: "心跳",
fleetSchedFresh: "新鲜",
fleetSchedStale: "过期",
sidePanel: "控制台侧栏",
consoleId: "OPS CONSOLE",
refreshedAt: "更新于 {{time}}",
taskRail: "ACTIVE TASKS",
taskRailAll: "ALL",
taskRailEmpty: "No active tasks",
taskTotal: "POOL {{count}}",
announceTitle: "系统公告",
recentTitle: "最近操作",
recentMore: "查看全部",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -342,9 +342,15 @@ export type RuntimeMetrics = {
port_traffic?: { running?: boolean };
device_schedulers?: {
stale?: boolean;
config_sync?: { running?: boolean };
lldp_collect?: { running?: boolean };
port_traffic?: { running?: boolean };
mode?: string;
source?: string;
age_sec?: number | null;
hint?: string | null;
config_sync?: { running?: boolean; last_tick_age_sec?: number | null };
lldp_collect?: { running?: boolean; last_tick_age_sec?: number | null };
ne_collect?: { running?: boolean; last_tick_age_sec?: number | null };
port_traffic?: { running?: boolean; last_tick_age_sec?: number | null };
fabric_reconcile?: { running?: boolean; last_run_age_sec?: number | null };
};
[key: string]: unknown;
};