9e41855610b96921d21320f4fb9944988773f8a8
## 两个开关同时打开会做出一个空 tab 后端在 `allowFlowchart` 为真时把 `mermaidCode` 置成 null(不能把标准答案下发给 正要自己画图的学生,见 routes/problem.ts)。而前端 `tabOptions` 只看 `showFlowchart` 就把 "flowchart" 加进选项,面板那边却要求 `showFlowchart && mermaidCode` —— 两个开关都打开时,选项存在、面板不存在, URL 里带 `?tab=flowchart` 就会选中一个渲染不出任何东西的页签。 三个断点条件还各不相同(两处要求两者都有,第三处只看 showFlowchart,那处会拿 null 去渲染 ProblemFlowchart)。统一成一个 `canShowFlowchart`。 后台那边把「显示标准流程图」在允许提交流程图时置灰并说明原因,再补一个 watch 把存量数据里两个都开着的情况纠正掉 —— 它们本来就是互斥的。 ## 「渲染成功」只进不出 保存前的校验靠 `mermaidRenderSuccess`,而 MermaidEditor 只在成功时 emit、 这个 ref 也就只会从 false 变 true,永不复位。**先写对、再改坏,照样能存进库。** 改成上报渲染结果本身(`render-state`),并在 modelValue 一变就立刻打回 「未验证」,等防抖后的渲染真跑完再报结论 —— 只挂防抖那一支的话,改完 300ms 内 点保存读到的还是上一次的结论,刚改坏的代码会被当成校验通过。宁可让出题人多等 一下,也不能放脏数据进库。 实测:改动后 50ms 读到 false(此时保存会被拦),渲染完成后回到 true; 贴一段坏语法则一直是 false。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
Languages
TypeScript
58.5%
Vue
39.6%
Shell
1.3%
Dockerfile
0.5%