Switch CLI parsing to TextFSM and polish topology/workbench UX.

Use custom cli_templates plus community ntc-templates for LLDP and port traffic across ZTE/Huawei/Cisco/H3C/Juniper/Nokia, drop regex parsers, and surface Admin/Phy/Prot on port discover. Also batch-add topology NEs and tighten workbench branding.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-02 23:06:40 +08:00
parent 60186a12e3
commit 393fd0e0b4
41 changed files with 1771 additions and 1075 deletions

View file

@ -14,6 +14,9 @@ const en = {
},
workbench: {
title: "Workbench",
modules: "Modules",
sections: "Sections",
moduleCount: "{{count}} modules",
backToWorkbench: "Back to Workbench",
openInNewTab: "Open in new tab",
openModule: "Open or switch to this module tab",
@ -254,6 +257,13 @@ const en = {
source: "Source",
name: "Device",
vendor: "Vendor",
ifname: "Interface",
bw: "BW",
upDown: "Admin / Phy / Prot",
admin: "Admin",
phy: "Phy",
prot: "Prot",
description: "Description",
},
},
lldpLinks: {
@ -416,13 +426,16 @@ const en = {
navUme: "UME",
netxApi: "netx api",
oclawBridge: "oclaw WSS",
activeTasks: "Active {{count}}",
activeTasksHint: "Open Audit · Task overview",
language: "Language",
switchLanguage: "Switch language / 切换语言",
moreMenu: "More",
langZh: "中文",
langEn: "English",
},
auth: {
loginTitle: "Sign in to NetX",
loginTitle: "Sign in to NETX",
loginHint: "Use a local account to access the ops platform",
username: "Username",
password: "Password",
@ -1278,7 +1291,12 @@ const en = {
deleteMapConfirm: "Delete map \"{{name}}\"? Nodes and edges will be removed.",
emptyMaps: "No regions yet. Create a region first.",
palette: "NE library",
paletteHint: "Click or drag onto the canvas",
paletteHint: "Select multiple to add in batch, or drag one onto the canvas",
paletteDragHint: "Drag onto canvas to add",
selectAllVisible: "Select all visible",
addSelected: "Add selected ({{count}})",
addSelectedDone: "Added {{count}} NE(s)",
addingNe: "Adding…",
filterPh: "Type to filter: name / IP / vendor",
save: "Save",
saveDirty: "Save *",

View file

@ -14,6 +14,9 @@ const zh = {
},
workbench: {
title: "工作台",
modules: "可用模块",
sections: "功能分区",
moduleCount: "{{count}} 个模块",
backToWorkbench: "返回工作台",
openInNewTab: "在新标签页中打开",
openModule: "打开或切换到该模块页签",
@ -251,6 +254,13 @@ const zh = {
source: "来源",
name: "设备",
vendor: "厂商",
ifname: "接口",
bw: "带宽",
upDown: "Admin / Phy / Prot",
admin: "Admin",
phy: "Phy",
prot: "Prot",
description: "描述",
},
},
lldpLinks: {
@ -413,13 +423,16 @@ const zh = {
navUme: "UME 对接",
netxApi: "netx api",
oclawBridge: "oclaw WSS",
activeTasks: "活跃任务 {{count}}",
activeTasksHint: "打开操作审计 · 任务概览",
language: "语言",
switchLanguage: "切换语言 / Switch language",
moreMenu: "更多",
langZh: "中文",
langEn: "English",
},
auth: {
loginTitle: "登录 NetX",
loginTitle: "登录 NETX",
loginHint: "使用本地账号访问运维平台",
username: "用户名",
password: "密码",
@ -1272,7 +1285,12 @@ const zh = {
deleteMapConfirm: "删除拓扑图「{{name}}」?节点与链路会一并删除。",
emptyMaps: "还没有区域,先点「新建区域」。",
palette: "网元库",
paletteHint: "点击或拖到画布添加",
paletteHint: "勾选后批量添加;也可拖到画布添加单台",
paletteDragHint: "拖到画布添加",
selectAllVisible: "全选当前列表",
addSelected: "添加选中({{count}})",
addSelectedDone: "已添加 {{count}} 台网元",
addingNe: "添加中…",
filterPh: "输入即筛:名称 / IP / 厂商",
save: "保存",
saveDirty: "保存 *",