fix: 空白地图创建失败 — dimensions默认四层空结构+review NULL容错
This commit is contained in:
@@ -66,6 +66,16 @@ def list_maps(db: Session = Depends(get_db)):
|
||||
|
||||
@router.post("")
|
||||
def create_map(data: dict, db: Session = Depends(get_db)):
|
||||
# 空白地图默认四层空结构(避免dimensions=NULL导致加载报错)
|
||||
if "dimensions" not in data or data.get("dimensions") is None:
|
||||
data = {**data, "dimensions": [
|
||||
{"key": "finance", "name": "财务层", "icon": "💰", "color": "#F56C6C", "objectives": []},
|
||||
{"key": "customer", "name": "客户层", "icon": "👥", "color": "#409EFF", "objectives": []},
|
||||
{"key": "process", "name": "流程层", "icon": "⚙️", "color": "#67C23A", "objectives": []},
|
||||
{"key": "learning", "name": "学习层", "icon": "📚", "color": "#E6A23C", "objectives": []},
|
||||
]}
|
||||
if "canvas_data" not in data or data.get("canvas_data") is None:
|
||||
data = {**data, "canvas_data": {"connections": []}}
|
||||
m = StrategicMap(**data)
|
||||
db.add(m)
|
||||
db.commit()
|
||||
@@ -283,6 +293,7 @@ def _sync_map_objectives(m, db):
|
||||
dims = m.dimensions
|
||||
if isinstance(dims, str):
|
||||
dims = json.loads(dims)
|
||||
dims = dims or []
|
||||
for dim in dims:
|
||||
for i, obj in enumerate(dim.get("objectives", [])):
|
||||
mo = MapObjective(
|
||||
@@ -306,6 +317,7 @@ def _merge_map_objectives(m, db):
|
||||
dims = m.dimensions
|
||||
if isinstance(dims, str):
|
||||
dims = json.loads(dims)
|
||||
dims = dims or []
|
||||
# 按dimension_key分组
|
||||
from collections import defaultdict
|
||||
grouped = defaultdict(list)
|
||||
@@ -347,6 +359,7 @@ def get_map_review(map_id: int, level: Optional[str] = None, db: Session = Depen
|
||||
dims = m.dimensions
|
||||
if isinstance(dims, str):
|
||||
dims = json.loads(dims)
|
||||
dims = dims or [] # NULL容错
|
||||
|
||||
# 收集所有KPI code
|
||||
all_kpi_codes = set()
|
||||
|
||||
Reference in New Issue
Block a user