diff --git a/backend/app/api/maps.py b/backend/app/api/maps.py index 1ee4f19c..2f62d784 100644 --- a/backend/app/api/maps.py +++ b/backend/app/api/maps.py @@ -308,7 +308,18 @@ def _merge_map_objectives(m, db): for dim in dims: key = dim.get("key", "") 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