Files
ElyOffice/tasks/reviews/C09.3-r2.md
T

3.2 KiB
Raw Blame History

FAIL

apps/ely-table/src/data.rs:355 — 选择性粘贴仅以纯文字相等判断复制来源,相同显示值会让另一工作簿的复制通过检查。复现:A 的 E2 为 =B2*2、显示 6,复制 E2;B 的 A1 为 =2+4、同样显示 6,复制 A1;返回 A,在 F2 执行“粘贴为公式”。实际选择性粘贴处理器的隔离探针保存 FODS 后公式数从 1 增到 2,写入 A 保留的旧内核剪贴板公式;当前约定要求拒绝 B 的复制。修复方向:跟踪系统剪贴板的复制身份与变更版本,将其关联到持有内核单元格剪贴板的视图,覆盖相同文字的跨工作簿与外部复制场景。

apps/ely-table/src/rules.rs:143 — 打开数据验证仍在界面处理器中获取 worker 锁并同步读取内核,违反 PRD PERF-02 和 2026-10-05 的界面线程约束。复现:另一后台操作持有 worker 锁 300 毫秒时打开数据验证,隔离探针测得处理器阻塞 304.7 毫秒。同类同步路径仍位于 rules.rs:332、data.rs:174、data.rs:371、rules/aids.rs:37、format.rs:184;crates/ely-office/src/find.rs:225 在查找期间收到编辑回报时同步读取撤销历史。修复方向:将这些读取放入后台,在回调中核对发起文档与读取版本,并补充 worker 延迟时界面处理器及时返回的回归。

apps/ely-doc/src/review.rs:115 — 切换文档时立即替换 shown,同时保留上一文档的修订、批注与线程列表,后台读取期间这些旧内容仍可操作。复现:A、B 各有一条修订,面板显示 A 的 TrackedAlpha;将 B 的读取延迟 300 毫秒后切到 B,面板仍显示 A 的修订,此时点击“全部拒绝”。隔离探针确认 B 的修订数从 1 变为 0。修复方向:文档切换时清除旧列表或阻止其操作,让显示内容、操作目标和异步读取版本保持一致,并覆盖延迟读取期间切换与操作的场景。

apps/ely-table/src/rules.rs:261 — 规则读取失败后仍无条件调用 follow_rule,失败路径保持缓存缺失,随即重新提交相同后台读取;book.rs:197 的工作表与几何读取存在相同循环。复现:规则缓存需要刷新时终止该测试的 worker,200 次调度产生 66 条引擎错误反馈,读取任务持续自行重排,造成错误提示与日志刷屏。修复方向:记录失败对应的读取状态并结束当前请求链,后续重试由新的状态变化或明确恢复操作触发;增加 worker 崩溃后请求及反馈次数有界的回归。

crates/ely-lok/src/view.rs:415 — 任意被接纳的图块都会结束 edit_at,计时与对应输入落地、编辑后的图块版本及实际显示脱节。复现:已有旧图块结果等待界面接收,此时提交新文本,再接收旧图块;隔离探针确认 edit_pending() 仍为 true,计时已被清除。tests/scripts/lag.sh:42 用这些记录计算“edit to tile”分位数,旧画面可以贡献很短的样本,当前结果无法证明所声明的按键到新画面延迟。修复方向:将计时关联到输入序号及其编辑后的图块版本,在对应可见画面到达时记录,并覆盖旧图块先到、连续输入与滚动图块交错的场景。