Files
ElyOffice/tasks/reviews/C08.1-r1.md
T

20 lines
5.0 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-ui/src/shell/root.rs:61:document_root 聚焦 Root 自己的句柄,带文档的渲染树实际注册的是 Docs 与 LokView 的句柄,初始焦点无法路由文件动作。真实 ElyDoc 窗口加载完成后,快捷键 New 与菜单 New 均未打开模板对话框;探针记录 `docs_focus=false`、`startup_new_dialog=false`、`startup_menu_dialog=false`,聚焦 Docs 后相同快捷键得到 `docs_focused_new_dialog=true`。修复方向:文档根节点聚焦实际渲染的文档焦点范围,验证启动后直接使用快捷键和原生菜单的实际动作结果。
apps/ely-doc/src/actions.rs:188、apps/ely-doc/src/docs.rs:254:保存与关闭直接读取内核和回调更新后的 dirty 状态,遗漏 LokView 已接收、仍在异步输入队列中的编辑。真实 LOK 探针先调用 replace_text_in_range 提交 `PendingText`,随后立即调用 write_as,重新打开保存的 DOCX 并转为 FODT 后内容缺少该文本;同样顺序下调用 request_close 会直接把标签数从 1 降到 0,跳过未保存询问,违反 FILE-01、FILE-08。现有 type_into 总是等待 dirty,保存断言主要检查 ZIP 头,覆盖不到这条失败路径。修复方向:保存快照与关闭判定等待先前输入完成,待处理编辑立即进入未保存状态,并用实际保存内容和连续输入/关闭顺序建立回归。
crates/ely-files/src/save.rs:304:save_as 直接进入 write_ticketed,跳过普通保存的 external_changed 检查。探针新建并保存 own.docx,修改文档,再由外部写入 `EXTERNAL REVISION`,随后 write_as 到 own.docx;外部内容被 DOCX 覆盖,违反 FILE-05。修复方向:目标与当前会话文件相同时执行外部修改检查,覆盖必须经过明确的冲突处理,并覆盖路径别名场景。
crates/ely-files/src/save.rs:318:另存独立文件复用了原会话 begin_save 的未解决冲突守卫,阻断 FILE-05 要求的保留本地副本。探针修改已保存文档,由外部改变源文件,再执行普通保存使状态进入 ExternalModified;随后 write_as 到全新的 local-copy.docx,被 Refused(ExternalModified) 拒绝,目标始终不存在。界面冲突分支也只显示 toast。修复方向:冲突后提供可执行的处理入口,使写入独立目标能够保留本地版本,同时保持源文件的冲突保护。
apps/ely-doc/src/actions.rs:249:格式取自用户所选路径的扩展名,目标写入时解析符号链接;对当前会话原文件缺少转换保护。探针先保存 source.odt,再创建 alias.docx 指向 source.odt,随后 write_as(alias.docx);source.odt 被 DOCX 内容替换,会话路径仍成为 source.odt,后续普通保存又按 ODT 写入,违反 §8.1 格式规则及 §8.3 转换另存新文件的要求。修复方向:按实际目标身份判定是否覆盖原文件,格式转换要求独立目标,并让保存后的路径与格式一致。
apps/ely-doc/src/docs.rs:225:打开流程统一创建 Session::load 并提供可编辑 LokView,遗漏 §8.3 的宏文件只读或风险状态。用固定 LOK 实际生成 macro.docm 后经 open_file 打开,探针得到 SaveState::Saved,文档进入普通编辑路径;应用中也没有对应风险状态或提示。修复方向:加载时识别无法保证往返保存的输入,进入可见的只读或风险状态,转换操作写入独立 DOCX/ODT,并验证风险文件的打开和保存流程。
apps/ely-doc/src/docs.rs:335:ElyDoc 的 Shell 只接入标签与中央画布,left、right 始终为空,遗漏 §8.1 的左侧大纲/搜索/页面导航区域和右侧上下文属性区域。实际启动 ElyDoc 并等待文档加载后的窗口截图只有标题、标签和页面,两侧均为画布背景;shell.sh 验证的是 gallery 的布局。修复方向:按 §8.1 在应用壳接入左右区域,并针对真实 ElyDoc 验证布局。
apps/ely-doc/src/docs.rs:305:界面把所有会话状态压成 EditorTab::dirty 的布尔标记,Shell 没有接入保存状态显示;加载任务完成前也没有 Loading 会话或加载反馈。打开较大的文件时,界面继续显示旧文档或“没有打开的文档”;外部冲突、保存失败只留下相同的 dirty 标记与短暂 toast,用户无法持续识别 FILE-02 指定的状态。修复方向:把加载和保存生命周期接入可见的会话状态,分别显示加载、保存、外部修改、只读和失败,并验证状态转换的真实界面结果。
apps/ely-doc/src/actions.rs:231、apps/ely-doc/src/actions.rs:83:原生路径面板错误被当作取消。save_as 的 chosen.await 仅处理 Ok(Ok(Some(path))),平台 Err 与接收通道 Err 均直接成功返回;pick_file 的平台错误只写日志,通道错误直接丢弃。具体场景:系统面板创建或路径选择返回错误时,用户点击打开/保存后没有任何失败提示;关闭流程中的保存面板错误也会无反馈地中断后续关闭。修复方向:分别处理用户取消、平台失败和通道失败,将失败通过现有 toast 暴露并保留文档状态。