3.4 KiB
FAIL
apps/ely-doc/src/save.rs:205:Keep Mine 绕过输入完成屏障,直接保存旧内核内容,并把包含待处理输入的 edits 计数记为已保存。复现:保存 mine.docx,外部修改后触发冲突,向 LokView 提交仍在队列中的 PendingKeepMine,立即执行 keep_mine(id, Some(After::Tab));标签关闭,重新打开实际 DOCX 后缺少该文本,违反 FILE-01、FILE-08。修复方向:Keep Mine 等待先前输入完成,再取得保存修订与内容;回归断言重新打开后的文本及关闭结果。
apps/ely-doc/src/save.rs:136、apps/ely-doc/src/docs.rs:329:待处理保存任务被逐个独立派发,首个任务关闭标签后,后续 write_as 对已关闭标签执行 expect 并崩溃。复现:提交尚未完成的输入,连续调用 write_as(one.docx, Some(After::Tab)) 和 write_as(two.docx, None);输入完成后第一个任务保存并关闭,第二个任务 panic the tab is open。close_tab 清理 waiting 时,这两个任务已经移出 waiting。修复方向:异步保存回调执行前重新确认标签仍存在,并取消关闭标签的已派发保存任务;覆盖重复保存与关闭的交错顺序。
crates/ely-lok/src/view/input.rs:58、apps/ely-doc/src/docs.rs:49:键盘选择操作永久增加 edits,输入应用后仍用这个计数判定未保存。复现:新建空白文档,仅按 Cmd+A,等待队列完成且内核 ModifiedStatus 为 false,Tab::dirty 仍为 true;真实窗口出现脏标记与 Edited,关闭会询问保存。现有键入回归覆盖不到选择操作。修复方向:区分待处理的可能编辑与内核确认的内容修改,选择操作完成后保持原保存状态,同时保留待处理真实编辑的关闭保护。
apps/ely-doc/src/files.rs:74:macro_risk 扫描正文中的任意字节,把普通文本误判为宏文件。复现:打开内容为 The archive path is Basic/Standard/Module1.xml 的 notes.txt,实际 LOK 加载成功,应用 risk 为 true;普通 Save 因风险分支要求另存 DOCX/ODT,破坏 §8.1 已有文件保留原格式的规则。修复方向:按文件格式检查宏结构或容器条目,正文中的同名字符串保持普通文档语义;增加普通正文与真实宏文件的区分回归。
apps/ely-doc/src/docs.rs:268:本地模板副本统一设置 risk=false,跳过打开普通文件时的宏风险识别。复现:用包含嵌入 Basic 库的真实 FODT 经 new_from_file 新建,macro_risk 对源文件返回 true,复制后的标签却处于普通状态;同一文件经 open_file 会进入风险状态。DOC-01 的本地模板路径遗漏 §8.3 要求的可识别风险提示。修复方向:加载本地模板副本时执行相同的宏风险识别,保留模板原件保护,并验证复制后的可见风险状态。
apps/ely-doc/src/save.rs:271:内核序列化或目标解析在 ely_files 保存票据建立前失败时,report 只显示短暂 toast,Session 保持原状态,遗漏 FILE-02 的持续保存失败状态,第 1 轮第 8 项仍部分存在。复现:输入 RetainedText,将该标签的 scratch 目录替换为普通文件后另存 failure.docx;内核 saveAs 实际失败,目标文件不存在,单测 Session 仍为 Saved,真实窗口状态栏显示 Edited。修复方向:把整个保存流程的失败接入会话状态,持续显示 Save failed,并验证内核写出失败后的状态与重试恢复。