feat(t73): Excel/CSV 抽取器——企業用很多(leo)
leo 兩句定調:
①「要思考 Excel 和 csv 的問題,因為企業用很多」
②「企業的 excel 通常不會是 1 萬行,人工做不出這麼多,但你可以轉結構資料丟進去」
→ 修正我先前「CSV 會變數字牆、先不加」的判斷——那是拿機器產生的百萬列當前提。
實測 60列x6欄 ≈ 2,200 token,對 LLM 完全不是問題。
統一中間格式=Markdown(leo 提 n8n 對照後定調):
n8n 一切轉 JSON 是對的,因為它下游是程式(.欄位 取值);
我們下游是 LLM ⇒ Markdown 表格更好。實測同一份表格
JSON 6,872 字元 vs Markdown 3,341=JSON 多花 2.1 倍 token(每列重複寫欄位名)。
測試 8/8,用 openpyxl 產的真 Excel 檔(非自捏 XML):
⭐ 測試抓到兩個真 bug(讀原始碼看不出來):
① rels 的 Target 是絕對路徑 /xl/... 我卻又補 xl/ 前綴 → 變 xl/xl/...
② r:id 帶 namespace,寫 xml:"id,attr" 抓不到,要用完整 namespace URI
修好後分頁名從 ## sheet1 變成 ## 維修紀錄(企業分頁名本身就是語意)
CSV:去 BOM(Excel 另存必帶)/引號內逗號不拆欄/| 跳脫/欄數不齊不整份失敗
XLSX:多工作表全讀(只取第一頁會漏)/sharedStrings 索引/壞檔報錯
防呆:超過 500 列截斷並明說截斷了(不靜默丟資料);單格超 500 字截斷。
This commit is contained in:
@@ -17,7 +17,11 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// 先只認 .md 與常見文件檔(transform/其他格式是之後的 task)。
|
||||
// 收檔白名單。**注意這只是「收不收」,能不能讀由 convert.go 的 extractors 決定**——
|
||||
// 兩者要一起看(2026-07-27 t73:`.pdf` 早就在這裡,但 ingest 端擋著=檔案上了 R2 卻進不了
|
||||
// 知識庫,使用者看到的是「丟檔進去沒反應」)。
|
||||
//
|
||||
// .csv/.xlsx 於 2026-07-27 加入——leo:「要思考 Excel 和 csv 的問題,**因為企業用很多**」。
|
||||
var allowedExt = map[string]bool{
|
||||
".md": true,
|
||||
".markdown": true,
|
||||
@@ -25,6 +29,8 @@ var allowedExt = map[string]bool{
|
||||
".docx": true,
|
||||
".pptx": true,
|
||||
".pdf": true,
|
||||
".csv": true,
|
||||
".xlsx": true,
|
||||
}
|
||||
|
||||
// ---- 輸出 payload(對應 schemas/collector-trigger.v1.schema.json)----
|
||||
|
||||
Reference in New Issue
Block a user