Skip to content

Commit 9941e68

Browse files
chaxusclaude
andcommitted
docs: corpus campaign day 1 -- non-ASCII filenames break the v9 open conversion
The full 25-file real-document matrix failed 25/25 with the same signature (isDocumentLoadComplete never true, spinner forever, asc_onError -82 in headed mode), and the discriminating experiment nails it: the identical bytes load in 2.1s when the fileName is ASCII and hang forever when it is the original Chinese name. Every passing synthetic fixture was ASCII-named, which is how this survived the whole E2E suite. Also logged: a real CSV misdetected as HTML by SheetJS, and the never-terminating loadmask on conversion failure. Fix direction and the campaign defect list are recorded; the fix itself is the next step. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent e5f1b14 commit 9941e68

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# 语料战役第 1 天:中文文件名打断 v9 打开转换(P0 根因锁定)
2+
3+
日期:2026-08-15
4+
前情:用户实测判定 v9 稳定性不如 v7([规划方向零](../superpowers/plans/2026-08-15-next-phase-roadmap.md)),
5+
提供 ~/Documents 作为真实语料(25 个 Office 文件,仅本地测试不入库)。
6+
7+
## 全量矩阵结果:25/25 全灭,且同一死法
8+
9+
corpus 跑道(test/e2e/corpus.spec.ts)首轮全量:**每一个文件**都停在
10+
`isDocumentLoadComplete` 永假(180s 上限),UI 永久转圈
11+
"Loading spreadsheet/presentation",部分状态栏出现
12+
"Connection is restored"。有头模式同样复现(排除无头工件),且捕获到
13+
**`asc_onError: id=-82`(打开转换失败)**——错误发生了但 UI 不终止
14+
转圈,用户看到的是永久加载。
15+
16+
## 判别实验(一锤定音)
17+
18+
| 变量 | 结果 |
19+
| ------------------------------------------- | --------------------------- |
20+
| `公司工作作息时间.xlsx`(208KB,中文名) | 卡死 180s+,asc_onError -82 |
21+
| **同一字节流**,fileName 改 `schedule.xlsx` | **2.1 秒加载成功** |
22+
23+
回看全部证据完全自洽:语料 25 个文件全是中文/空格/括号文件名 → 全灭;
24+
所有通过的合成 E2E 文件名全 ASCII;我交互式复跑 EMP deck 时手滑用了
25+
`EMP.pptx`(ASCII)→ 50 秒加载成功——当时误判为"间歇性",实为
26+
**文件名决定论**。
27+
28+
**结论:非 ASCII 文件名使 v9 编辑器内部 docx/xlsx/pptx → bin 打开转换
29+
失败(-82),且失败后加载遮罩不终止,表现为永久转圈。**
30+
31+
这也大概率解释用户对 v9 的整体负面评价:真实用户的文件几乎都是中文名。
32+
(用户手动会话中该 deck 曾加载成功过一次,与本地 25/25 全灭存在一处
33+
未解释的不一致,修复时一并查清打开链路里文件名的传递路径。)
34+
35+
## 附带发现
36+
37+
- `addresses.csv`(真实 CSV)打开报
38+
"Failed to convert CSV to XLSX: Invalid HTML: could not find table"
39+
——SheetJS `XLSX.read(csvText, {type:'string'})` 把该文件误判成 HTML
40+
解析了。converter 的 CSV 解析选项需要显式声明(战役缺陷清单 #2)。
41+
- 用户报告的 PPT 编辑致命弹窗在当前构建未复现;嫌疑其一是用户浏览器
42+
SW 缓存的旧构建(图片管线修复前),已请用户硬刷新重测。
43+
44+
## 修复方向(下一步,未动手)
45+
46+
打开链路中文件名的消费点:`createPersonalEditorInstance` 的
47+
`document.title` / `fileType`,以及 vendor 内部转换对 title 的使用
48+
(x2t_helper `sanitizeFileName` 只管保存路径,打开路径疑似有别的
49+
消费点)。修复原则:**内部转换用 sanitize 后的 ASCII 名,UI 标题保留
50+
原始名**;修复必须配 corpus 级 E2E(中文名真实文件打开+保存往返)。
51+
52+
## 战役缺陷清单(截至第 1 天)
53+
54+
| # | 缺陷 | 级别 | 状态 |
55+
| --- | ----------------------------------------------- | ---- | ------------------------------- |
56+
| 1 | 非 ASCII 文件名 → 打开转换 -82 + 永久转圈 | P0 | 根因锁定,待修 |
57+
| 2 | 特定 CSV 被 SheetJS 误判为 HTML | P1 | 已定位方向 |
58+
| 3 | 打开失败(-82)时加载遮罩不终止、无用户可见错误 | P1 | 待修(错误 toast 已有管道可挂) |
59+
| 4 | 用户报告的 PPT 编辑致命弹窗 | P0? | 未复现,等用户清 SW 后反馈 |

0 commit comments

Comments
 (0)