Add topology classify inventory, fabric lifecycle, and broader collect targets.

Treat Fabric as an inventory sheet for role/region tagging and slices; detach fabric links on managed/UME delete instead of cascading map deletes. Extend collection to all managed and UME NEs, show NE source in management, and refine canvas vendor icon tones.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-02 11:09:58 +08:00
parent 90dff56e48
commit a5a3a4f156
30 changed files with 5986 additions and 495 deletions

View file

@ -52,6 +52,7 @@ const zh = {
devices: "设备列表",
topology: "拓扑信息",
lldpLinks: "LLDP 链路",
topoClassify: "分类与切片",
alarms: "告警信息",
configs: "配置信息",
webcrt: "WebCRT",
@ -472,8 +473,8 @@ const zh = {
selectedCount: "共 {{count}} 台",
clearSelected: "清空已选",
remove: "移除",
pickTitle: "可选网元(连通性已通过)",
pickHint: "仅展示 connect_status=pass 的网元。请先在「网元管理」完成连通性测试。",
pickTitle: "可选网元",
pickHint: "可选网元管理与 UME 清单中的全部网元(不限连通性状态)。UME 使用 CLI 连接模板凭据。",
pickEmpty: "没有匹配的网元。",
filterKeyword: "筛选",
filterKeywordPh: "名称 / IP / 厂商 / 设备类型",
@ -487,9 +488,9 @@ const zh = {
meta: "已选 {{ne}} 台网元 · {{cmd}} 条命令",
},
eligible: {
title: "可选网元(连通性已通过)",
hint: "仅展示 connect_status=pass 的网元。请先在「网元管理」完成连通性测试。",
empty: "暂无已通过连通性测试的网元。",
title: "可选网元",
hint: "可选网元管理与 UME 清单中的全部网元(不限连通性状态)。",
empty: "暂无网元。",
},
form: {
title: "采集配置",
@ -589,6 +590,7 @@ const zh = {
name: "名称",
vendor: "厂商",
deviceType: "设备类型",
source: "来源",
ip: "管理地址",
port: "端口",
protocol: "协议",
@ -600,6 +602,12 @@ const zh = {
testedAt: "测试时间",
actions: "操作",
},
source: {
manual: "手工",
ume_sync: "UME 同步",
webcrt: "WebCRT",
lldp: "LLDP 占位",
},
connect: {
run: "连通性测试",
running: "测试中…",
@ -1182,6 +1190,43 @@ const zh = {
topology: {
title: "拓扑管理",
maps: "拓扑图",
tree: "拓扑树",
treeLoading: "加载拓扑树…",
treeHint: "区域下为物理拓扑与自定义图;点图打开设备画布。",
rootName: "区域",
selectRegion: "请选择区域",
openMap: "打开本图",
kindPhysical: "物理拓扑",
kindCustom: "自定义图",
regionNodeHint: "{{count}} 张图",
layerNodeHint: "{{count}} 个网元",
layerNodeEmpty: "点击创建并打开",
rootCanvasHint: "从左侧选择区域进入目录。",
regionCanvasHint: "点击图打开设备画布,或新建自定义图。",
regionBrowseHint: "区域目录:物理拓扑 + 自定义图。点击打开。",
browserTitle: "拓扑目录",
browserRegionSub: "共 {{count}} 张拓扑图",
browserEmptyMaps: "此区域还没有拓扑图。",
addNe: "添加网元",
backUp: "返回区域",
newRegion: "新建区域",
newRegionName: "新区域",
newRegionPrompt: "区域名称",
regionCreated: "区域已创建",
regionDeleted: "区域已删除",
deleteRegion: "删除区域",
deleteRegionConfirm: "删除区域「{{name}}」?其下物理拓扑与自定义图将一并删除。",
renameRegion: "重命名区域",
renameRegionPrompt: "区域名称",
regionRenamed: "区域已重命名",
collapseRegion: "折叠区域",
expandRegion: "展开区域",
newCustom: "自定义图",
newCustomName: "自定义拓扑",
newCustomPrompt: "自定义拓扑图名称",
folderHint: "区域用于分组。每区有一张物理拓扑,可再加自定义图。",
folderHintShort: "区域目录",
outsidePeers: "图外对端 {{count}} 个(有链路未上图)",
newMap: "新建",
newMapName: "新拓扑图",
rename: "重命名",
@ -1190,7 +1235,7 @@ const zh = {
renamed: "拓扑图已重命名",
deleteMap: "删除图",
deleteMapConfirm: "删除拓扑图「{{name}}」?节点与链路会一并删除。",
emptyMaps: "还没有拓扑图,先新建一张。",
emptyMaps: "还没有区域,先点「新建区域」。",
palette: "网元库",
paletteHint: "点击或拖到画布添加",
filterPh: "输入即筛:名称 / IP / 厂商",
@ -1211,7 +1256,7 @@ const zh = {
sourcePort: "本端端口",
targetPort: "对端端口",
canvasHint:
"从网元库上图,拖拽后保存坐标;LLDP 发现写入全局 Fabric。蓝虚线=发现链路,红虚线=stale。",
"左侧为区域目录(物理拓扑 + 自定义图);打开本图后进入设备画布,用「添加网元」上图并保存。",
selected: "已选节点",
selectedEdge: "已选链路",
selectedCount: "已选 {{count}}",
@ -1333,6 +1378,66 @@ const zh = {
staleRemoved: "已删除 {{count}} 条未发现链路",
connectHint: "连线模式:依次点击源节点 → 目标节点(Esc 或切回选择退出)",
},
topoClassify: {
title: "分类与切片",
openTopo: "拓扑画布",
inventory: "网元清单",
keywordPh: "关键字筛选名称/IP",
filterRoleAll: "全部角色",
filterRegionAll: "全部区域",
filterUnmatchedOff: "不过滤未分类",
kindAny: "角色或区域未填",
kindRole: "角色未填",
kindRegion: "区域未填",
filterLinkAll: "全部关联",
filterLinkLinked: "已关联库存",
filterLinkOrphaned: "已解绑",
colLink: "关联",
linkManaged: "Managed",
linkUme: "UME",
linkBoth: "Managed+UME",
linkOrphaned: "已解绑",
regexTitle: "正则查找",
patternPh: "正则,如 ^CORE- 或 -BJ-",
fieldName: "名称",
fieldNameIp: "名称+IP",
findMatches: "查找匹配",
matchOk: "匹配 {{count}} 条,已勾选",
matchHint: "当前匹配 {{count}} 条",
assignRole: "只改角色",
assignRegion: "只改区域",
assignBoth: "角色+区域",
clearRegion: "清空区域",
confirmAssign: "确认写入",
bulkConfirm: "将给已选/匹配的 {{count}} 条网元写入分类,确定?",
bulkOk: "已更新 {{count}} 条",
selectedCount: "已选 {{count}}",
selectPage: "全选本页",
colNe: "网元",
colRole: "角色",
colRegion: "区域",
colActions: "操作",
edit: "编辑",
save: "保存",
cancel: "取消",
rowSaved: "已保存",
loading: "加载中…",
empty: "没有网元。",
showSlices: "展开切片建图",
hideSlices: "收起切片建图",
slices: "切片建图",
pickRegion: "选择区域",
tplCore: "仅 Core",
tplCoreAgg: "Core + 邻接 Agg",
tplAggAcc: "Agg + 邻接 Access",
seedPhysical: "同时给物理总览上 Core",
slicePreview: "预览切片",
sliceApply: "生成切片图",
sliceConfirm: "将创建自定义拓扑图并上图冻结,确定?",
sliceOk: "已创建 {{count}} 张切片图",
sliceStats: "计划 {{maps}} 张图,重复上图网元 {{overlap}} 个",
nodeCount: "{{count}} 个网元",
},
};
export default zh;