当前位置: 首页 > news >正文

NVisual 设备双面建模

NVisual 设备双面建模:一套功能,让设备的两面都"看得见"

目录

  • 一、一句话说清楚这个功能
  • 二、三种使用场景
  • 三、功能一:标注端口和槽位属于正面还是背面
  • 四、功能二:上传背面背景图,建模视角切换
  • 五、功能三:创建实例时自动继承,无需手动操作
  • 六、功能四:连线自动归属正确的面
  • 七、功能五:双面机柜的正面/背面出线区分
  • 八、功能六:面感知的全景视图渲染
  • 九、跨面连接的智能校验
  • 十、老数据完全兼容,零迁移成本
  • 十一、改造涉及范围一览

一、一句话说清楚这个功能

设备建模从"正反面挤在同一张图"升级为"正面/背面两套独立视图"——端口和槽位标记属于哪一面,线缆自动出现在正确的出线面。

升级前后对比

对比项升级前升级后
建模视图只有一张视图,正反面端口全部堆在上面正面/背面两套独立视图,右上角可切换
背景图只有一张正面面板图正面 + 背面各一张面板图
端口布局正反面端口混在一起,空间拥挤正面端口在正面视图,背面端口在背面视图
出线方向线缆统一从一个方向出线,拓扑失真正面线缆从正面出,背面线缆从背面出

举例:一台 48 口交换机,正面 48 个 GE 口,背面还有电源模块和风扇。升级前这 50+ 个点位全部挤在一张图上,升级后正面视图只展示 48 个 GE 口,切换到背面视图才看到电源和风扇。


二、三种使用场景

场景说明典型设备
端口分面显示设备正面板和背面板各有端口,分别在两面视图展示交换机、路由器、防火墙
板卡分面插槽线卡插在正面槽位,业务板插在背面,两面独立管理高端路由器、OLT
机柜正背面出线设备上架后,正面端口线缆从正面容器出,背面端口线从背面容器出标准 42U 机柜

三、功能一:标注端口和槽位属于正面还是背面

在设备型号建模页面,为每个端口和槽位新增了一个"面"属性。

操作方式:在端口/槽位的属性面板中,选择正面(face=1)背面(face=2)

// 创建端口时传入 face{"name":"GE0/0/1","x":100.0,"y":200.0,"face":1// 1=正面, 2=背面}

效果

  • 同一设备上有正面端口和背面端口时,两边的点位图互不重叠
  • 前端根据 face 在对应视图下显示/隐藏端口

四、功能二:正面/背面独立视图 + 各自背景图

升级前,设备建模只有一张图,所有端口全部放在上面——正面 GE 口、背面电源口、管理口……点位多了根本分不清谁在哪。

升级后,右上角新增切换按钮2D 正面 | 2D 背面 | 3D,两点改变:

  1. 两张独立背景图:正面视图显示正面面板图,背面视图显示背面面板图
  2. 端口按面显隐:切换到背面时正面端口自动隐藏,只显示背面端口

操作方式:在型号管理页面上传背景图时,指定flat=2(背面):

PUT /wapi/v1/node_types/{nodeTypeId}/set_background_image?flat=2
flat 值含义说明
1正面背景默认值,原有行为不变
2背面背景新增,上传背面设备面板图

效果

  • 设备建模详情页支持切换正面/背面视图(右上角新增切换按钮:2D 正面 | 2D 背面 | 3D
  • 切换到背面视图时,显示背面背景图,正面端口自动隐藏,背面端口显示

五、功能三:创建实例时自动继承,无需手动操作

这是本功能最核心的设计:用户在型号上标注好正反面后,创建实例时系统自动处理。

自动发生了什么

设备型号建模 创建设备实例 ┌──────────────┐ ┌──────────────┐ │ port GE0/0/1 │ face=1 │ port GE0/0/1 │ face 自动=1 │ port GE0/0/48│ face=1 │ port GE0/0/48│ face 自动=1 │ port PSU1 │ face=2 ──→│ port PSU1 │ face 自动=2 │ slot 1 │ face=1 │ slot 1 │ face 自动=1 └──────────────┘ └──────────────┘

用户不用做

  • 不用在实例上再次标注端口面
  • 不用手动同步 vis_node 的 face
  • 不用关心存储过程或 Java 代码

这一切,创建实例的那一刻就自动完成了。


六、功能四:连线自动归属正确的面

创建设备间连线时,vis_link 自动带上面属性。

行为

连线场景vis_link.face说明
正面端口 ↔ 正面端口fromFace=1, toFace=1线缆在正面视图展示
背面端口 ↔ 背面端口fromFace=2, toFace=2线缆在背面视图展示
正面端口 ↔ 背面端口(不同设备)fromFace=1, toFace=2两端分别在两面展示

效果:前端根据fromFacetoFace决定线缆从哪个面出线。用户创建连线时不需要手动选择面——系统根据端口自动判定。


七、功能五:双面机柜的正面/背面出线区分

这是正反面建模在机柜视图下的延伸。

场景:双面机柜有两个容器——正面容器(f)和背面容器(b)。设备物理上架到正面容器,但它背面的端口连出的线缆,应该从背面容器出线。

效果

  • 机柜正面容器:展示设备正面 + 正面端口线缆
  • 机柜背面容器:展示"虚拟设备"(只展示位置和背面端口) + 背面端口线缆

Diagram 接口新增字段backMountedNodesData,告诉前端设备在背面容器中的对应位置:

{"mountedNodesData":{"containerChildId":866,// 正面容器"rackPosition":42},"backMountedNodesData":{"containerChildId":867,// 背面容器 ← 新增"rackPosition":42}}

前端据此在背面容器渲染一个"影子设备",位置与正面一致。


八、功能六:全景视图渲染——前端按面过滤

Diagram 详情接口现在返回完整的面信息,前端据此实现按面过滤——升级前所有节点和线缆一并渲染,升级后正面/背面两套视图各显各的。

接口响应新增

字段路径用途
vis_nodes[].face每个 vis_node 属于哪一面
vis_links[].fromFacevis_links[].toFace每条线缆两端各属哪一面
node_type_diagram.background2背面背景图文件名
_ports[].face_slots[].face型号建模页端口/槽位的面

前端渲染策略

正面视图:显示 face=1 和 face=NULL 的节点/线缆 + 正面背景图 背面视图:显示 face=2 的节点/线缆 + 背面背景图

face=NULL(老数据)只在正面显示,确保历史数据不丢。


九、跨面连接的智能校验

系统自动检测不合理的连接并阻止。

规则

场景行为
同一设备内,正面端口连背面端口报错800439 Cross-face connection within device not allowed
不同设备间,正面端口连背面端口允许(正常场景,比如交换机正面连服务器背面)

效果:用户不会无意中在同一设备内部创建跨面回路,减少数据错误。


十、老数据完全兼容,升级零冲击

功能上线后,历史数据的行为与升级前完全一致——所有老数据只有正面视图,没有背面。

老数据情况行为
ports/slots face = NULL默认只在正面视图展示
vis_nodes face = NULL默认只在正面视图展示
node_types background2 = NULL只有正面背景,不显示背面视图切换
已有链路按老规则展示在正面,不影响

用户可以在需要时逐步为设备型号补充背面信息,不用的就维持现状。即:不填补面信息的老设备,表现和升级前完全一样——还是一张视图,正面模式。


十一、改造涉及范围一览

层级涉及内容
设备型号建模端口/槽位新增 face 属性;上传背面背景图
设备实例化创建实例时 vis_node 自动继承 face;模板应用同步 face
连线创建vis_link 自动带 fromFace/toFace;同设备内跨面阻止
Diagram 视图返回 vis_nodes.face、vis_links.fromFace/toFace、background2、backMountedNodesData
机柜视图背面容器渲染虚拟设备;线缆按 fromFace/toFace 分面出线
数据库5 张表新增 face/background2 字段,3 个索引
接口10 个接口增改,请求/响应新增 face 相关字段

项目:NVisual Lite 网络资源可视化管理系统
技术栈:Spring Boot 2.2.5 + PostgreSQL 13 + PostGIS / Vue 2 + HT for Web
文档版本:v1.0 | 2026-07-31

http://www.jsqmd.com/news/1306219/

相关文章:

  • 微信公众号如何发起图片视频投票|2026海投票免费投票小程序教程 - 微信投票小程序
  • 佛山黄金变现指南:2026实时金价公示+正规门店甄选技巧 - 一日一测评
  • 流量入口之变:电商行业在AI搜索时代的营销重构
  • 终极指南:Blender3mfFormat插件如何让3D打印工作流效率翻倍
  • Android MaterialCardView自定义边框:从原理到实战的完整指南
  • 英特尔CPU命名规则全解析:从i7到KS后缀,看懂型号选对处理器
  • SPSS卡方检验结果解读全攻略:从p值、效应量到残差分析
  • 2026晋城全域外墙漏水维修|筑宅安16区上门勘查施工 - 筑宅安
  • 2026年邢台LV包包回收指南:(185-3117-2838)赵掌柜二奢襄都区实体店合规变现注意事项 - 赵掌柜二奢
  • 关于write和read函数里面的传参类型说明(sizeof和strlen的区分)
  • WarcraftHelper:5个技巧让魔兽争霸3在现代电脑上流畅运行
  • 工业缺陷检测实战——铝型材表面瑕疵分类
  • 让旧款Mac重获新生:OpenCore Legacy Patcher的技术重生计划
  • 高校人工智能实训室建设找哪家公司?一份选型对比参考
  • Java面试高频考点解析与实战技巧
  • Python贪吃蛇游戏开发:从零到一掌握Pygame与游戏编程核心
  • 飞利浦智能茶吧机评测:下置水桶设计与智能温控技术解析
  • 无意义标题的语义解析与内容重构策略
  • pytest xfail标记详解:管理预期失败的自动化测试用例
  • 微信商城小程序哪个平台好?右以云、有赞、微盟差异化选型指南
  • 工业缺陷检测实战——KTH-TIPS纹理图像识别分类系统
  • 合肥整装公司怎么选 2026 五家高口碑企业深度解析 - 装修大知识
  • 嵌入式系统开发全解析:从MCU到Linux,从C语言到AI部署
  • 安达发|紧固件业产能飞升的秘密,藏aps计划排产排程排单软件里!
  • Agent Skill开发:5大核心设计模式解析与实践
  • 2026年口碑好的防静电地坪工程公司甄选参考:技术实力与服务体系深度解析 - 优质品牌商家
  • HART协议详解:07 HART故障诊断与维修工程
  • TCP三次握手与四次挥手原理及实战调优
  • Claude Code多智能体协同编程实践与优化指南
  • AI全栈开发新范式:peaks-loop实战!