Files
ElyOffice/tasks/reviews/C06.4-r1.md
T

8 lines
2.1 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
crates/ely-files/src/policy.rs:102 — 保存完成只接收 `ok: bool`,成功时无条件清除最新编辑的计时,丢失保存期间新增修订的自动保存任务。复现:已有路径的 Mark 文件在 t=100 编辑 revision 1,t=101 返回 `SaveDue` 并取得保存票据;t=101.2 编辑 revision 2;随后 revision 1 落盘,`Session::finish_save` 正确保留 `Dirty`,但 `PolicyEngine::save_finished(true)` 清空计时,t=102.2 及之后持续返回 `Nothing`,磁盘停留在 revision 1。临时测试结合 `Session` 与 `save_atomic` 实测失败,违反 §6.2 的停输入 1 秒自动保存要求。修复方向:保存完成关联提交时的修订或编辑代次,仅清除该任务已经持久化的编辑;保留较新编辑的截止时间,并加入保存期间继续输入的回归测试。
crates/ely-files/src/policy.rs:64 — 无路径期间的编辑被直接丢弃,首次保存成功后 `set_has_path()` 也没有恢复待保存编辑的计时。复现:新建 Mark 文件,revision 1 开始首次显式保存;保存期间输入 revision 2,`edit()` 因 `has_path=false` 跳过记录;revision 1 落盘后设置路径,此时会话仍为 `Dirty`,后续 `tick()` 永远返回 `Nothing`。临时落盘测试实测失败;即使上一项修复为保留较新的计时,此处仍没有可保留的记录。修复方向:无路径期间也记录最新编辑和修订,仅阻止自动提交;首次保存取得路径后,为尚未持久化的编辑继续调度,并覆盖首次保存期间输入的测试。
crates/ely-files/src/policy.rs:74 — 防抖使用可回拨的 `SystemTime`,且把负时间差静默替换为零,导致 Mark 的 1 秒自动保存被系统校时推迟。复现:`edit(UNIX_EPOCH + 100s)` 后系统时钟回拨 60 秒,实际已经停止输入 1 秒时调用 `tick(UNIX_EPOCH + 41s)`,实测返回 `Nothing`;直到墙上时间追到 101 秒才返回 `SaveDue`,实际等待约 61 秒。修复方向:用 `Instant` 或可注入的单调时钟计算防抖期限,移除吞掉时间错误的默认值,并增加校时场景的回归覆盖。