- add local-folder OnlyOffice sign/callback writeback and edit-tab handling - align main resource tabs, attachment edit menu, slash isolation, and filetree context behavior - record Sidex/Hermes gap reviews and Reasonix task checklists
50 lines
2.1 KiB
Markdown
50 lines
2.1 KiB
Markdown
# Checklist: Office Chinese Docx Upload Open Freeze
|
||
|
||
## 目标
|
||
|
||
上传并打开中文文件名 docx 时,浏览器不应卡死;Office 打开失败时必须是可见、非阻塞错误。
|
||
|
||
指定测试文件:
|
||
|
||
`/home/lix/Downloads/重庆发展特殊化妆品可行性报告_政府汇报版.docx`
|
||
|
||
## 允许修改
|
||
|
||
- `rust/crates/mnote-web/src/routes/local_folder_source.rs`
|
||
- `rust/crates/mnote-web/src/routes/onlyoffice.rs`
|
||
- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
|
||
- 相关 browser smoke
|
||
|
||
## 禁止事项
|
||
|
||
- 不引入新外部服务。
|
||
- 不把 docx 只做下载兜底。
|
||
- 不清理用户真实下载文件。
|
||
|
||
## 待办
|
||
|
||
- [x] 用真实中文 docx 复现上传、插入附件、点击打开、OnlyOffice iframe 内错误。
|
||
- [x] 记录 console/network/iframe src/页面响应性。
|
||
- [x] 区分 DocumentServer `errorCode=-18` 与浏览器主页面卡死。
|
||
- [x] 上传完成后不得等待非关键 Office 初始化;上传链路必须释放 UI。
|
||
- [x] 对中文文件名/URL 编码和 OnlyOffice document key 安全化补测试。
|
||
- [x] 增加 Reasonix clean browser 测试流程,并用截图交叉验证。
|
||
|
||
## 验收命令
|
||
|
||
```bash
|
||
cd /mnt/Data1T/mnote/rust
|
||
cargo test -p mnote-web -- --test-threads=1
|
||
node scripts/task463-onlyoffice-resolver-smoke.js
|
||
```
|
||
|
||
## 验证记录
|
||
|
||
- `cargo test -p mnote-web onlyoffice -- --test-threads=1`:12 passed。
|
||
- `cargo test -p mnote-web -- --test-threads=1`:482 passed。
|
||
- Reasonix clean browser 测试输出:`/mnt/Data1T/mnote/tmp/reasonix-office-upload-open-clean-2026-05-21/result.json`,结论 `pass`。
|
||
- Reasonix 最终截图:`/mnt/Data1T/mnote/tmp/reasonix-office-upload-open-clean-2026-05-21/04-final-state.png`,可见 OnlyOffice 文档正文。
|
||
- Codex 自测输出:`/mnt/Data1T/mnote/tmp/codex-office-upload-open-clean-2026-05-21/result.json`。
|
||
- Codex 最终截图:`/mnt/Data1T/mnote/tmp/codex-office-upload-open-clean-2026-05-21/codex-office-final.png`,可见 OnlyOffice 文档正文。
|
||
- 已确认 WebSocket URL 使用安全 doc key,例如 `mnote_1258170954_1240121036`,不含 `/`、`:` 或中文字符;未出现 `errorCode=-18`。
|