fix(t108 🔴🔴): 逐帳號同步遺失萃取設定→原文直送——三層修+契約保險絲
事故(leo 機 07-28 17:3x 總管現場抓到):t104 config 重寫吃掉機器層 extractor/key、 per-account DirectConfig 不繼承 ⇒ extractor 空 ⇒ 6 筆走 rag_ingest_direct 原文出機。 修:①config 讀改寫全程保留既有欄位(帶測試)②帳號層無值垂直繼承機器層 extractor/claude_bin/gemini_api_key/llm_model/CardIngestWF/RemovedWF(帶 fake server 測試: 必須收到 rag_ingest_card 非 direct)③契約保險絲:extractor 空時非 .md/.txt 禁直送、 標 failed「萃取器未設定,已跳過(不直送原文)」——同類 bug 永不再成外洩。 三模組 go test 全綠(總管親跑)。(實作=子 CC;驗證+commit=總管)
This commit is contained in:
@@ -648,6 +648,15 @@ func runDirectOnceRoot(cfg *DirectConfig, root string, dryRun bool) ([]DirectRes
|
||||
results = append(results, res)
|
||||
continue
|
||||
}
|
||||
// t108 防禦閘:extractor 未設定時,非 .md/.txt 檔禁止直送原文(原文外洩保險絲)。
|
||||
// 讓同類 bug 永遠不再變成內容外洩,而是明確的 failed 狀態。
|
||||
if ext := strings.ToLower(filepath.Ext(ev.Path)); ext != ".md" && ext != ".txt" {
|
||||
res.Status = "failed"
|
||||
res.Error = "萃取器未設定,已跳過(不直送原文)"
|
||||
results = append(results, res)
|
||||
exit = 1
|
||||
continue
|
||||
}
|
||||
status, _, perr := cfg.postJSON(cfg.triggerURL(cfg.IngestWF), map[string]any{
|
||||
"page_name": pageNameOf(ev.Path),
|
||||
"path": ev.Path,
|
||||
|
||||
Reference in New Issue
Block a user