fix: 空白地图创建失败 — dimensions默认四层空结构+review NULL容错

This commit is contained in:
Hermes CI Fix
2026-08-17 09:49:21 +08:00
parent 32fb8d9b06
commit 58e8a9f5b3
+13
View File
@@ -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()