影响图增强:脏标签净化(A) + 节点上限(B) · 2026-07-31

影响图增强:脏标签净化(A) + 节点上限(B) · 2026-07-31

用户指令

"A, B" —— A:给影响图标签加脏数据净化(避免 [object Object]/{is_null});B:给 analyze 加节点上限,让产品级大对象也能安全出图。

A · 标签净化(前端)

  • src/views/AiWorkbench.vue:新增 safeLabel(n),在 tryImpactAnalysis 构建 nodes 时替换原 item_number||name||id 直取逻辑。规则:优先干净 item_number(剔除 [object Object]/{is_null}/{#text 等对象串)→ 退回 name → 退回截断的 id(>10 字符截前 10+…)→ 未知编号
  • src/components/ImpactChart.vue:新增 safeLabel() 防御层(对象 → #text/keyed_name 提取 → 未知编号),即使脏数据绕过前端也能兜底。
  • summaryjson.truncated 时追加"(已聚合展示前 N 个关联对象,完整数据请在 SCSAI 查看)"。

B · 后端节点上限(server/routes/change.js)

  • analyzeChangeImpact 的 collector 区域新增 MAX_IMPACT_NODES = 300checkLimit(),对 product/part 分支的 models/parts/parents 循环加 if (!checkLimit()) break; 提前终止。
  • 响应体新增 truncated 字段(达到上限为 true)。
  • 改动极小、仅加早退,不破坏既有逻辑;未提交。

验证(真实接口实测,非 mock)

  • 产品级(智能控制器产品 350CB71A…):改动前 60s 超时;改动后 16.9s 返回,truncated=true,节点 300 封顶,不再卡死服务/爆图。
  • 零件级(0460-2536 922B8F1B…):1.5s,31 含 16 唯一节点,truncated=false,稳。
  • 脏标签净化:对产品级 300 节点跑 safeLabel脏标签数 0(原 [object Object]/{is_null} 全部净化为 _MTP-1784425208364/0460-2536/0403 等干净编号)。
  • 前端 npm run build ✓ built in 25.70s,AiWorkbench + ImpactChart 均编译进 bundle。

服务状态

  • server 已重启(pid 13380,端口 3006,/api/health 200)以使后端上限生效。

改动清单(均未提交,遵守 no-commit 约束)

  • M server/routes/change.js(B:节点上限)
  • M src/views/AiWorkbench.vue(A:safeLabel + truncated 提示)
  • ?? src/components/ImpactChart.vue(A:safeLabel 兜底)
  • 注:git status 还显示 M server/utils/SCSAI-client.js 与 M server/data/unified-messages.json,均为本会话之前的遗留改动,非本次引入。

演示推荐

  • 主演示:查询 0460-2536 的影响范围(1.5s,16 节点放射图,稳)。
  • 要炸裂效果:查询 智能控制器产品 的影响范围(16.9s,300 节点大图,truncated 提示,安全)。
  • P-1001 留作浅层对照。
← 返回案例列表
分享:
🤖 Try Now →
🤖
🎁