Problem
拿一份真實 Microsoft Office Word 產生的 .docx(docProps/app.xml 的 Application = Microsoft Office Word、AppVersion = 14.0000,即 Word 2010)跑 swiftify,得到:
$ macdoc word reverse Assignment.docx --to-mdocx Assignment.mdocx.swift --coverage
word/document.xml raw 24932 B DSL 0.0%
--- Aggregate: 0.0% DSL (0 / 93316 XML bytes across 14 parts) ---
這份文件零表格、25 個段落——按 SKILL.md 的說明應該是 DSL 升級最理想的輸入。實際落 raw,原因是:
w14:paraId 數量: 0
表格 <w:tbl> 數量: 0
段落 <w:p> 數量: 25
w14:paraId 一個都沒有。
byte-equal 重播驗證通過,所以工具本身沒壞。問題是產物的價值:22 行 / 105 KB,全部是 escape 過的單行 XML,不可讀、無 diff 價值,而且因為零 paraId,slot 也用不了(raw channel 的 slot 靠 paraId 定位)。
也就是說,對這一整類文件,swiftify 能給的只有「一份通過驗證但無法閱讀、無法填答、相對於原 .docx 沒有增加任何可回復資訊的封存腳本」。
Type
bug
Expected
需要先裁定一件事:「無 w14:paraId 的第三方 Word 文件」是不是一個要支援的輸入類別?
如果是,缺的是一條補救路徑,例如:
macdoc word normalize --add-para-ids <in.docx> —— 為缺 paraId 的段落補上,讓文件取得 DSL 升級與 slot 的資格
- 或至少在
--coverage 輸出裡明講「本文件零 paraId,slot 不可用;補救方式是 X」
如果不是,該在 SKILL.md 把「哪些文件用 swiftify 只會得到不可讀封存」講得比現在更前面——目前 SKILL.md 說 raw 的兩個常見原因是「含任一表格」與「段落沒有 paraId(legacy 文件、部分工具產出)」,而**「Word 2010 產物」不會被讀成 legacy**。
Actual
- 無任何補救指令
--coverage 只報 DSL 0.0%,不說明「因為零 paraId」也不說明「slot 因此不可用」
- 使用者要自己
unzip -p ... | grep w14:paraId 才知道原因
Impact
w14:paraId 缺席不是冷僻邊緣案例——它就是這個 Word 版本的產物長相,而學術界、行政單位至今大量表單與講義出自該版本或其轉檔。對這些文件,SKILL.md 承諾的兩個能力(可讀 DSL、slot 定點填寫)都拿不到,而使用者要跑完整條 reverse 才知道。
與既有 issue 的區別
- #160 講的是 macdoc 自產的 docx 不帶 paraId(狀態顯示已於 v0.7.0 前修好,現在會 stamp)。本 issue 是第三方輸入,macdoc 無法控制其產生端。
- #171(已關)為 raw channel 加了 slot 支援,但那條路徑靠 paraId 定位;零 paraId 的文件仍然拿不到 slot,而這個組合未見於文件。
- #131 是讓真實 Word 文件升級 DSL channel(format alignment)——方向相關,但本 issue 要的是更小的東西:一條讓零-paraId 文件取得 slot 資格的補救路徑,不需要完整 DSL 升級。
環境
- macdoc 0.7.0
- 輸入為 Word
AppVersion 14.0000 產物(未附原檔:內含第三方作者與機構 metadata)
Problem
拿一份真實 Microsoft Office Word 產生的
.docx(docProps/app.xml的Application = Microsoft Office Word、AppVersion = 14.0000,即 Word 2010)跑 swiftify,得到:這份文件零表格、25 個段落——按 SKILL.md 的說明應該是 DSL 升級最理想的輸入。實際落 raw,原因是:
w14:paraId一個都沒有。byte-equal 重播驗證通過,所以工具本身沒壞。問題是產物的價值:22 行 / 105 KB,全部是 escape 過的單行 XML,不可讀、無 diff 價值,而且因為零 paraId,slot 也用不了(raw channel 的 slot 靠 paraId 定位)。
也就是說,對這一整類文件,swiftify 能給的只有「一份通過驗證但無法閱讀、無法填答、相對於原
.docx沒有增加任何可回復資訊的封存腳本」。Type
bug
Expected
需要先裁定一件事:「無
w14:paraId的第三方 Word 文件」是不是一個要支援的輸入類別?如果是,缺的是一條補救路徑,例如:
macdoc word normalize --add-para-ids <in.docx>—— 為缺 paraId 的段落補上,讓文件取得 DSL 升級與 slot 的資格--coverage輸出裡明講「本文件零 paraId,slot 不可用;補救方式是 X」如果不是,該在 SKILL.md 把「哪些文件用 swiftify 只會得到不可讀封存」講得比現在更前面——目前 SKILL.md 說 raw 的兩個常見原因是「含任一表格」與「段落沒有 paraId(legacy 文件、部分工具產出)」,而**「Word 2010 產物」不會被讀成 legacy**。
Actual
--coverage只報DSL 0.0%,不說明「因為零 paraId」也不說明「slot 因此不可用」unzip -p ... | grep w14:paraId才知道原因Impact
w14:paraId缺席不是冷僻邊緣案例——它就是這個 Word 版本的產物長相,而學術界、行政單位至今大量表單與講義出自該版本或其轉檔。對這些文件,SKILL.md 承諾的兩個能力(可讀 DSL、slot 定點填寫)都拿不到,而使用者要跑完整條 reverse 才知道。與既有 issue 的區別
環境
AppVersion 14.0000產物(未附原檔:內含第三方作者與機構 metadata)