fix: OpenCode审查16条修复 — 战略地图隔离/安全/逻辑漏洞

安全:
- ⑦ update_map 字段白名单(禁entity_id篡改, status限值域)
- ⑧ objectives 全端点补entity校验(原括号错位导致隔离失效) + update白名单
- ⑨ strategic_map_versions 加entity_id列+回填, list/snapshot/rollback过滤
- ⑩ get_map_review KPI查询加entity(同编码跨企业混入)
- ⑪ _sync_map_objectives 强制继承地图entity

逻辑:
- ③ MapCanvas 自动保存 currentMap.value 解包(30s自动保存修复)
- ④ 乐观锁字段 version_num→version 对齐
- ⑤ 红黄绿灯: 越低越好型反向 + 负值修正 + 月目标优先
- ⑥ review 补 action_plan_summary 字段

验证: 跨企业写目标404✓ entity_id注入被拒✓ pytest 531 passed✓
This commit is contained in:
Hermes CI Fix
2026-08-26 23:25:44 +08:00
parent 95b73c9b90
commit 9b61c48051
5 changed files with 54 additions and 18 deletions
+2 -2
View File
@@ -784,7 +784,7 @@ async function saveCanvas(silent?: boolean) {
await mapApi.update(selectedMap.value, {
dimensions: mapData,
canvas_data: { connections: connections.value },
version_num: currentMap.value?.version_num,
version: currentMap.value?.version,
})
markClean()
if (!silent) ElMessage.success("已保存")
@@ -1017,7 +1017,7 @@ onMounted(async () => {
}
// 自动保存:每30秒自动保存草稿
autoSaveTimer = setInterval(() => {
if (currentMap?.status === 'draft') saveCanvas(true)
if (currentMap.value?.status === 'draft') saveCanvas(true)
}, 30000)
window.addEventListener('resize', triggerRecalc)
})