fix: _merge_map_objectives保留O+KR额外字段
This commit is contained in:
+12
-1
@@ -308,7 +308,18 @@ def _merge_map_objectives(m, db):
|
|||||||
for dim in dims:
|
for dim in dims:
|
||||||
key = dim.get("key", "")
|
key = dim.get("key", "")
|
||||||
if key in grouped:
|
if key in grouped:
|
||||||
dim["objectives"] = [{"name": o.name, "description": o.description or "", "icon": o.icon or "target", "kpis": o.kpis or []} for o in grouped[key]]
|
merged = []
|
||||||
|
for i, o in enumerate(grouped[key]):
|
||||||
|
# 保留原有JSON中的额外字段(targetValue/krs等)
|
||||||
|
existing = dim["objectives"][i] if i < len(dim["objectives"]) else {}
|
||||||
|
merged.append({
|
||||||
|
"name": o.name,
|
||||||
|
"description": o.description or existing.get("description", ""),
|
||||||
|
"icon": o.icon or existing.get("icon", "target"),
|
||||||
|
"kpis": o.kpis or existing.get("kpis", []),
|
||||||
|
**{k: existing[k] for k in existing if k not in ("name", "description", "icon", "kpis")},
|
||||||
|
})
|
||||||
|
dim["objectives"] = merged
|
||||||
m.dimensions = dims
|
m.dimensions = dims
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user