From 4d970f72a5cd81852d41fe84a196ee685cb0924d Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期二, 08 九月 2026 18:05:44 +0800
Subject: [PATCH] 刷新旧拼接报表时过滤已移除来源的实验覆盖

---
 battery-business/src/main/java/com/battery/business/report/SpliceReportService.java |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java b/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
index c1280a3..6791ab7 100644
--- a/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
+++ b/battery-business/src/main/java/com/battery/business/report/SpliceReportService.java
@@ -163,10 +163,13 @@
   var settings = settings(snapshot.getJSONObject("settings"), false);
   // 主动更新才启用独立来源详情;旧版本读取和普通编辑不隐式迁移。
   if (!settings.containsKey("sourceDetailOverrides")) {
-   // 旧版实验已按来源保存,可直接保留;旧字段人工值仍留在原报表字段,不按名称改绑共享身份。
+   // 旧页面移除来源时可能残留实验键;只迁移当前来源,旧版本与原报表字段人工值仍保持不变。
    Map<String,Object> details = new LinkedHashMap<>();
    var experiments = JSON.parseObject(JSON.toJSONString(settings.getOrDefault("sourceExperimentNames", Map.of())));
-   experiments.forEach((key, value) -> details.put(key, Map.of("experimentName", value)));
+   for (var selection : selections) {
+    String key = selection.testId() + "|" + selection.testBatteryId();
+    if (experiments.containsKey(key)) details.put(key, Map.of("experimentName", experiments.get(key)));
+   }
    settings.put("sourceDetailOverrides", details);
   }
   Matrix matrix = freeze(preview(selections), fields(settings));

--
Gitblit v1.7.1