Skip to content

來源受理 #3:Excel .xlsx 靜默拒絕,應明確 unsupported 並給 remedy #98

Description

@CarlLee1983

來源受理面盤點(2026-08-16 grill)排序第 3 名。頻率高(實際 inbox 有,支付與遊戲串接的錯誤碼表與商戶參數常是另一份試算表),靜默度中等(被看見但講不出下一步)。

現況

.xlsx / .xls 不在 loop_apidoc/manifest/formats.py:8-19 的 _EXTENSION_FORMATS 裡,會落到 SourceFormat.UNKNOWN,manifest 標成 ProcessingStatus.UNSUPPORTED(scanner.py:142-144)。拒絕是對的,但 operator 只看到「格式不支援」,得不到 remedy。

決定(grill 定案)

不建轉檔器。試算表的合併儲存格、公式、多工作表會把「轉成 Markdown 表格」變成一連串判斷,每個判斷都是製造假 fact 的機會——html_snapshot.py 光是處理 colspan/rowspan 就寫成了 AGENTS.md 裡最長的一格說明,Excel 只會更糟。改由 operator 用外部工具另存為 CSV 或 Markdown 表格後放進 sources/,比照 legacy .doc 的處置。

但要明確列進副檔名表:新增 .xlsx / .xls 與一個像 word-legacy 那樣的專屬格式值,讓 manifest 與 score/evaluate.py:148-154 的 SOURCE_UNSUPPORTED remedy 能講出「另存為 CSV 或 Markdown 表格後重建 manifest」。

這正是 0.37.0 對 .doc 那次改動的全部價值(見 docs/RELEASE_NOTES_0.37.0.md:40-45):改動的意義不在支援了什麼,而在讓一個原本靜默失敗的路徑變成大聲失敗且說得出下一步。純粹落到 UNKNOWN 的最終結果一樣是拒絕,但拒絕時說不說得出下一步,決定了它在缺口排序裡的位置。

成本:formats.py 兩行加一個 enum 值。

注意

若試算表內容要進 pipeline,它走的是 #1 的次級佐證路徑(authority: supplementary),與正式文件不同級。

產出

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions