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

22 lines
5.3 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-table/src/rules.rs:96 — 等待输入落地后重新调用 `ask_rule`,它重新读取活动工作簿,丢失发起工作簿的身份;`data.rs:288` 的分列和本文件 `428` 的条件格式列表使用同一重入方式。复现:工作簿 A 排队跳到 A2,立即打开数据验证,再切到 B;等待结束后 `Dialog::Validation.tab` 为 B,确认将修改 B。隔离探针得到 `Some(1)`,期望 `Some(0)`。修复方向:等待回调捕获发起的 tab id,后续读取、对话框和提交全程使用该 id,并为三条等待路径补回归。
crates/ely-lok/src/view/clip.rs:89 — 内核剪贴板的可用性绑定到目标视图的 `copied`,跨工作簿粘贴公式会进入纯文本分支并丢失公式。复现:A 的 B1 为 `=A1*3`、显示 6,复制 B1;切到从未复制过的 B,在 C1 执行“粘贴为公式”;保存 FODS 后 C1 是数值 6,公式数保持 1,期望新增公式后为 2。同视图现有回归通过,跨工作簿探针失败。修复方向:在共用 worker 的剪贴板状态中记录复制来源,验证系统剪贴板仍对应该来源后,允许目标工作簿使用内核的公式粘贴;增加跨工作簿保存结果断言。
crates/ely-lok/src/view/clip.rs:92 — 外部剪贴板分支对两个选择性粘贴操作均调用普通文本粘贴,“粘贴为值”会执行以 `=` 开头的文本。复现:系统剪贴板写入 `=1+2`,在空格执行“粘贴为值”;保存 FODS 后出现新增的 `table:formula`,实际公式数 2,期望保持 1。修复方向:根据粘贴操作设置内核的导入与选择性粘贴方式,使值模式保留值或字面文本,并用保存文件检查公式属性。
apps/ely-table/src/rules.rs:240 — 验证规则缓存仅以地址判定是否重读,同格应用或撤销规则后继续使用旧规则,同地址切换工作表也会复用它。复现:停在 E2,初始缓存为 `any`,应用带下拉列表和输入提示的 `list` 规则;等待队列落地后内核返回 `list`,界面缓存仍为 `any`,`cell_aids` 因此继续隐藏下拉按钮和提示。修复方向:缓存键包含工作表身份与规则变更状态,在应用、清除、撤销和切表后重读,并验证当前格的缓存及可见控件。
apps/ely-table/src/rules.rs:31 — “清除数据验证”用 `Validation::default()` 构造 `any`,序列化得到空 `operator` 和 `errorStyle`;补丁第 455 行校验这两项后拒绝执行。复现:E2 已有 `list` 验证,发送菜单生成的清除参数,worker 返回 `rules.validation: the undo history did not move`,原验证规则保留。修复方向:为清除发送合法的 `any` 参数,并在内核按该模式处理无关字段;增加从实际菜单参数到规则消失的回归。
crates/ely-lok/src/sheet/data.rs:157 — `type == "any"` 时直接返回默认字段,丢弃已存在的输入提示;`apps/ely-table/src/rules.rs:126` 又将此类规则重建为默认配置。复现:数据验证选择“任何值”,开启输入提示并填写 `Enter an identifier`;内核实际返回 `showInput:true` 和完整消息,解析结果却为 `show_input:false`、空消息,重新选择该格或重开验证对话框后提示消失。修复方向:区分“没有规则”和“已有 unrestricted 规则”,完整保留后者的提示字段,并覆盖应用、重读及再次编辑。
apps/ely-table/src/format.rs:132 — 数字格式缓存键只有地址与编辑计数,工作表切换保持同地址时跳过重读。复现:第一表 A1 为百分比,第二表 A1 为货币;面板显示第二表后切回第一表,内核返回 `percent`,面板仍为 `currency`。隔离探针确认该不一致。修复方向:将工作表身份加入缓存键,在切表完成后刷新格式类别和代码,并增加同地址切表回归。
crates/ely-lok/src/events.rs:263 — 将完整 `Request::Invalid` 以 Debug 写入日志,包含文档自定义的验证标题和消息;`apps/ely-table/src/rules.rs:223` 还把同一消息交给会记录全文的 `Tabs::toast`。复现:验证消息为 `PrivateWorkbookMessage`,触发无效输入;捕获的日志含 `Invalid { title: "PrivateTitle", message: "PrivateWorkbookMessage", ... }`,违反 agents.md 规则 4 和 PRD §18.2 的日志约束。修复方向:日志仅记录请求种类、样式和接受状态,消息内容留在界面反馈通路;对日志中用户文档内容缺失作断言。
crates/ely-lok/src/client/tests/rules.rs:118 — 边框验收只检查 `worker.run` 成功,无法发现已撤销记录掩盖的实际格式缺失。复现:在隔离副本中把边框命令的全部 `Arg::Line(..., true)` 改为 `false`,构建独立 mutant worker;现有 `number_formats_alignment_and_fills_apply` 仍通过,而保存 FODS 的探针确认所选 B2:B5 的边框样式缺失。同一保存探针在原 worker 下通过。修复方向:分别验证全部、外框和清除操作后所选单元格实际保存的外边框与内边框属性,使该变异触发失败。
patches/libreoffice/0016-lok-calc-formats-data-rules.patch:501 — 文件共 919 行,超过 agents.md 规则 5 的 500 行上限。复现:`wc -l` 返回 919。修复方向:按格式、数据整理和规则拆分补丁,使每份符合行数限制,并同步构建脚本中的补丁顺序与重复应用检查。