Files
ElyOffice/tasks/reviews/C08.1-r3.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-lok/src/view/input.rs:238、crates/ely-lok/src/view/input.rs:266、apps/ely-doc/src/docs.rs:47:输入请求完成就清除 edit_pending,修改状态经另一条事件轮询到达,两者之间丢失关闭保护。复现:新建空白文档,等待初始 ModifiedStatus=false,提交 JustLanded,仅等待 view.settled;此时 Session=Saved、缓存 ModifiedStatus=false、edit_pending=false,实际内核导出的 FODT 已包含 JustLanded。立即 request_close 会移除标签并跳过未保存询问,违反 FILE-01、FILE-08。修复方向:输入完成与其权威修改状态确认保持一致,在确认前保留关闭保护;回归覆盖输入已应用、状态回调尚未到达的顺序,同时保留 Cmd+A 的干净状态。
crates/ely-files/src/session.rs:322:save_failed 把 ReadOnly 改为 SaveFailed,而保存守卫仅通过当前状态识别只读,失败处理因此解除写入保护。复现:对内容为 ORIGINAL 的文件建立 Session::read_only,调用 save_failed,再调用 ely_files::save 写入 OVERWRITTEN;保存成功,原文件实际变为 OVERWRITTEN。应用 report 会对 Refused 错误调用这个新方法。修复方向:保存失败处理保留会话访问权限和加载生命周期守卫,验证只读会话在失败与重试后持续拒绝写入。
apps/ely-doc/src/files.rs:73:原始字节中的固定 XML 前缀仍被当作宏结构,第 2 轮第 4 项的误判问题部分存在,同时遗漏合法命名空间别名。复现一:打开正文含 `<ooo:library-embedded ooo:name="Standard">` 的 xml-example.txt,实际 LOK 加载成功,risk=true,普通 Save 被导向 DOCX/ODT 转换,破坏 §8.1 原格式保存。复现二:将真实宏 FODT 的库元素及属性改用绑定同一命名空间的 basic 前缀,LOK 加载与往返导出仍保留 library-embedded,应用 risk=false,遗漏 §8.3 风险状态。修复方向:按输入格式解析实际 XML 元素,以命名空间 URI 和元素名识别嵌入库;普通 TXT 保留普通保存语义,并覆盖正文标签字符串与合法前缀别名。