| | |
| | | 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)); |