Files
ElyOffice/tasks/reviews/C08.1-r2.md
T

14 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,并验证内核写出失败后的状态与重试恢复。