Files
OJ2/apps/web
yuetsh d10172f017 fix(流程图): 节点名里带一个双引号,生成的 mermaid 就是坏的
节点和连线的标签是学生自己敲的任意文字,而转换器是直接把它塞进 `"..."` 里:

    ${nodeId}(("${label}"))

出现一个双引号就把语法撑破了。后果不只是图渲染不出来 —— 这段坏掉的代码会**原样
提交给 AI 打分**,学生完全不知道自己被扣分是因为一个引号。把 `说"你好"` 当节点名
是很自然的写法。

改用 mermaid 的实体转义。`#` 必须先转,否则标签里本来就有的 `#quot;` 之类会被当
成实体解释;换行转成 `<br/>`,不然会截断整条语句。

实测:`说"你好" #1` 现在生成 `说#quot;你好#quot; #35;1`,渲染出来仍然显示
`说"你好" #1`;未转义的那版渲染报语法错误、一个 svg 都出不来。

顺带补上 `edges` 的空值保护 —— `nodes` 有,`edges` 一直没有,拿到 undefined 直接抛。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 06:26:45 -06:00
..
2026-08-26 09:09:26 -06:00
2026-08-26 09:09:26 -06:00