Skip to content

tree-backed 視圖經 typed 序列化會丟失既有 <w:drawing>(27 份真實文件 13 份中招;appendParagraph fallback 與 insertParagraph(at:) 皆觸發) #129

Description

@kiki830621

Problem

DocxReader.read(…, wireTreeBackedViews: true) 開啟的文件,任何觸發 markTypedDirty("word/document.xml") 的操作(本例 insertImage(at: nil) 走 3.6.0 的 typed fallback;v3.5.0 上 insertParagraph(_:at: 0) 亦同)會讓 typed 重新序列化丟掉文件既有<w:drawing>:27 份含 media 的真實 docx 中 13 份低於預期(171→3、36→1、14→1)。

歸因

底層缺陷既有(tree-backed 視圖 + typed 序列化 = 丟 drawing),3.6.0 的 #128 未製造它,但把 append-image 從 op 快路徑改道進這條路徑,該情境的失敗從「丟 1 張新圖」變成「丟 N 張舊圖」。

可達性

che-word-mcp 全樹零 wireTreeBackedViews(一律預設 false)→ MCP 不受影響。production 中使用 tree-backed 的 word-builder-swift LensDocument / docx-workflow-swift / macdoc word reverse / SyncOrchestrator 今天都不呼叫 appendParagraphinsertImage,故無已知觸發路徑;但 appendParagraph 是 public API。

建議

  1. 找出 tree-backed → typed 序列化丟 drawing 的根因(Paragraph.runs getter 對 tree-backed 回 text-only stub 是首要嫌疑);
  2. 在修好前,Issue175AppendImageTests 補一個 tree-backed + 既有圖片的 RED 案例並於 3.6.0 release note 明寫限制(此兩項由 #175 fix round 處理)。

Source: surfaced during /idd-verify PsychQuant/macdoc#175 (Step 5b follow-up triage). Verify report: PsychQuant/macdoc#175 (comment)
Refs PsychQuant/macdoc#175

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions