fix(app): 前台图片模型 - 分辨率档位与各供应线路取并集,修掉只显示单档
capabilitySpecWithRoutePresets 原先只在「前台自身没有任何尺寸预设」时才与线路合并。但前台快照的预设往往来自单条线路(后续新增的供应线路还没同步进来),条件不成立后,其它线路的 2K/4K 预设永远补不进来,前台只显示 1K。 现在无论自身是否已有预设都与各线路取并集(mergeCapabilityImageSize 已包含前台自身的预设,并集不会丢档)。 线上数据可复现:image-2.0-1k 的前台规格 imageSize.presets 全部是 1k,而它四条线路分别是 none/none/1k/2k+4k。补了一条回归测试,反向验证确认旧逻辑下该测试精确报出 tier 2k missing。
This commit is contained in:
1 parent
da0531f6eb
commit
6a63442dcf
2 files changed
+48
-16
No files matched your search
@@ -280,23 +280,21 @@ func capabilitySpecWithRoutePresets(spec CapabilitySpec, routes []CapabilitySpec
|
||||
}
|
||||
result.Options[name] = OptionConstraint{Values: values}
|
||||
}
|
||||
if result.ImageSize == nil || result.ImageSize.Parameter == "" || len(result.ImageSize.Presets) == 0 {
|
||||
if merged := mergeCapabilityImageSize(append([]CapabilitySpec{spec}, routes...)); merged != nil {
|
||||
if result.ImageSize == nil {
|
||||
result.ImageSize = merged
|
||||
} else {
|
||||
restored := *result.ImageSize
|
||||
if restored.Parameter == "" {
|
||||
restored.Parameter = merged.Parameter
|
||||
}
|
||||
if !restored.AllowCustom {
|
||||
restored.AllowCustom = merged.AllowCustom
|
||||
}
|
||||
if len(restored.Presets) == 0 {
|
||||
restored.Presets = merged.Presets
|
||||
}
|
||||
result.ImageSize = &restored
|
||||
// 前台规格里的预设可能只来自单条线路的快照(后续新增的供应线路还没同步进来),
|
||||
// 因此不管自身是否已有预设都要与各线路取并集,否则多档会被压成单档。
|
||||
if merged := mergeCapabilityImageSize(append([]CapabilitySpec{spec}, routes...)); merged != nil {
|
||||
if result.ImageSize == nil {
|
||||
result.ImageSize = merged
|
||||
} else {
|
||||
restored := *result.ImageSize
|
||||
if restored.Parameter == "" {
|
||||
restored.Parameter = merged.Parameter
|
||||
}
|
||||
if !restored.AllowCustom {
|
||||
restored.AllowCustom = merged.AllowCustom
|
||||
}
|
||||
restored.Presets = merged.Presets
|
||||
result.ImageSize = &restored
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
||||
Reference in new issue
Block a user