Files
ElyOffice/tasks/reviews/C07.4-r3.md
T

1.6 KiB
Raw Blame History

FAIL

crates/ely-lok/src/worker/input.rs:125 — Check::History 用文档级 UndoCount/RedoCount 检查 Calc 单元格编辑中的局部历史,导致命令可用性与执行结果错误,违反 LOK-02、LOK-05。实测载入现有 FODS,A1="Hello 世界",F2 后键入 Z,run("edit.undo") 报 .uno:UndoCount is 0,文本保持 "Hello 世界Z";同一 worker 的 Cmd+Z 随即恢复 "Hello 世界"。若先执行 format.bold 留下一条文档历史,再 F2 键入 Z,run("edit.undo") 已把编辑文本恢复,却报 UndoCount went 1 to 1;随后 run("edit.redo") 报 RedoCount is 0。现有即时撤销回归只覆盖 Writer。修复方向:使用与 UNO 实际作用的编辑上下文一致的同步历史/结果确认,加入 Calc F2 编辑内的撤销、重做以及同时存在文档历史的回归。

crates/ely-lok/src/commands.rs:123 — 0.05 步长校验的 1e-6 容差放行 18.05000001,原始值继续派发;内核以 18.05 执行后,Reports 比较报错,worker/input.rs:155 的 Undo 回滚破坏了用户已有的重做历史。通过公开 Worker API 实测:打开 FODT、键入 a 并撤销,保留可重做的输入;全选后 run("format.size", &["18.05000001"]) 返回 Err;再 run("edit.redo") 返回 Ok,保存文本仍为 "Hello 世界",字号变成约 18.05pt,原本应恢复的 a 已丢失。现有精度测试只拒绝 18.01,覆盖不到步长容差边界和失败前已有 redo 的情形。修复方向:在 client/view 排队前及 worker 派发前严格拒绝内核无法原样表示的字号,加入接近 0.05 格点的输入及已有 redo 时失败请求保持历史的回归。