Files
ElyOffice/tasks/reviews/C11.2-r1.md
T

18 lines
4.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
crates/ely-pdf-engine/shim/ely_pages.c:450 — 提取在原文档 journal 上建立临时删除步骤,覆盖已有重做分支;worker 的 Doc::sync 仍保留旧位置的编辑 ID,导致历史标记与内容错配(PDF-02、FILE-03)。复现:三页 PDF 旋转第一页、保存、撤销、提取第一页、重做;真实 worker 和应用探针均得到一页未旋转的文档,应用却显示已保存(pages=1, dirty=false),关闭可直接丢掉这个状态。方向:在独立副本中提取,完整保留源文档的撤销、重做及编辑 ID 绑定;增加保存后撤销再提取、拆分的回归测试。
apps/ely-pdf/src/edits.rs:101 — 结构编辑只过滤 picked,anchor 仍指向旧页号(PDF-02)。复现:三页文档点选第三页、删除、Shift 点选第一页,chosen_pages 得到 [0,1,2],此时页数为 2;选择 Insert Blank Page 在 organize.rs:138 越界 panic。隔离应用测试复现,macOS 真窗口同样以 abort 退出。方向:结构编辑后清理或重新映射选择锚点及页身份,保证所有选择都属于当前页集;修正锚点的副本通过相同探针。
apps/ely-pdf/src/edits.rs:78 — 编辑失败只发送 Failed 与 notify,外壳等待队列由 Reported 才释放(FILE-02、FILE-04)。复现:发起超过页面尺寸的裁剪,在其落地前保存;裁剪已报错且 view.settled() 为 true,core.waiting 仍有一条保存,保存一直挂起。应用探针得到 waiting=1;失败分支补发落定通知后同一探针得到 waiting=0。方向:成功、拒绝与失败均发布队列落定状态,使保存、关闭、提取等等待操作得到完成或明确失败。
crates/ely-office/src/close.rs:150 — 窗口关闭回调通过 dirty_now 同步读取历史,close_tab:176 又在界面线程持 worker 锁关闭文档,违反 PERF-02 与 agents.md 的界面线程约束。复现:干净 PDF 的后台渲染或导出占用 worker 锁时点击窗口关闭;隔离测试模拟后台持锁 500 ms,should_close 在界面线程耗时 514–522 ms。方向:将历史检查与引擎关闭排入后台,回到窗口时核对标签身份并完成关闭,界面回调即时返回。
crates/ely-pdf-engine/shim/ely_pages.c:385 — 从文件插入仅调用 pdf_graft_mapped_page,源页的链接、批注、字段等页面引用随合并被静默丢弃(PDF-02)。复现:向三页 PDF 末尾插入另一份三页 PDF,源文件第一页含指向源第二页的 /Link;保存的六页文件中 /Link 数量由源文件的 1 变为 0。方向:嫁接页面时同时迁移相关对象,并通过源页到目标页的映射重绑引用;测试读取合并后保存文件的链接目标及字段。
crates/ely-pdf-engine/shim/ely_pages.c:124 — 删除字段仅按 widget 的 /P 判定归属;省略可选 /P 的 widget 即使由已删页的 /Annots 持有,也被保留(PDF-02,R-02 的字段移除声明)。复现:第二页 /Annots 引用一个 /FT /Tx widget,AcroForm/Fields 引用同一对象,widget 无 /P;删除第二页并紧缩保存后,gone-field 及其值 value-on-deleted-page 仍在 AcroForm 与文件中。真实 worker 探针确认。方向:从被删页的 /Annots 收集 widget 身份,再清理字段树及相关引用;覆盖省略 /P 与共享字段的样本。
apps/ely-pdf/src/ask.rs:66 — 裁剪的上右下左边距直接发送给内核,忽略当前视图的显示旋转,裁剪方向与所见页面错位(PDF-02、agents.md 的按所见裁剪声明)。复现:Letter 页面用 View 菜单旋转显示 90°,裁剪顶部 25.4 mm;实际内核尺寸为 612×720 pt,所见顶部裁剪应得到 540×792 pt 的内核尺寸。应用探针失败;按显示旋转换算边距的副本通过相同探针。方向:将所见边距转换到页面自身的方向,并覆盖显示旋转与页面 /Rotate 叠加的测试。
crates/ely-pdf-engine/shim/ely_pages.c:318 — 裁剪将物理 point 边距直接减到 PDF 用户坐标,忽略 /UserUnit,毫米裁剪量随文件比例变化(PDF-02)。复现:MediaBox 为 612×792、UserUnit=2 的页面,真实 worker 初始边界为 1224×1584 pt;裁剪顶部 72 pt(25.4 mm)后高度变成 1440 pt,实际裁掉 144 pt,正确高度为 1512 pt。方向:按每页 UserUnit 将物理边距转换为用户坐标,验证保存、重开和撤销后的实际尺寸。