fix: 空白地图创建失败 — dimensions默认四层空结构+review NULL容错
This commit is contained in:
@@ -66,6 +66,16 @@ def list_maps(db: Session = Depends(get_db)):
|
|||||||
|
|
||||||
@router.post("")
|
@router.post("")
|
||||||
def create_map(data: dict, db: Session = Depends(get_db)):
|
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)
|
m = StrategicMap(**data)
|
||||||
db.add(m)
|
db.add(m)
|
||||||
db.commit()
|
db.commit()
|
||||||
@@ -283,6 +293,7 @@ def _sync_map_objectives(m, db):
|
|||||||
dims = m.dimensions
|
dims = m.dimensions
|
||||||
if isinstance(dims, str):
|
if isinstance(dims, str):
|
||||||
dims = json.loads(dims)
|
dims = json.loads(dims)
|
||||||
|
dims = dims or []
|
||||||
for dim in dims:
|
for dim in dims:
|
||||||
for i, obj in enumerate(dim.get("objectives", [])):
|
for i, obj in enumerate(dim.get("objectives", [])):
|
||||||
mo = MapObjective(
|
mo = MapObjective(
|
||||||
@@ -306,6 +317,7 @@ def _merge_map_objectives(m, db):
|
|||||||
dims = m.dimensions
|
dims = m.dimensions
|
||||||
if isinstance(dims, str):
|
if isinstance(dims, str):
|
||||||
dims = json.loads(dims)
|
dims = json.loads(dims)
|
||||||
|
dims = dims or []
|
||||||
# 按dimension_key分组
|
# 按dimension_key分组
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
grouped = defaultdict(list)
|
grouped = defaultdict(list)
|
||||||
@@ -347,6 +359,7 @@ def get_map_review(map_id: int, level: Optional[str] = None, db: Session = Depen
|
|||||||
dims = m.dimensions
|
dims = m.dimensions
|
||||||
if isinstance(dims, str):
|
if isinstance(dims, str):
|
||||||
dims = json.loads(dims)
|
dims = json.loads(dims)
|
||||||
|
dims = dims or [] # NULL容错
|
||||||
|
|
||||||
# 收集所有KPI code
|
# 收集所有KPI code
|
||||||
all_kpi_codes = set()
|
all_kpi_codes = set()
|
||||||
|
|||||||
Reference in New Issue
Block a user