diff --git a/direct_extract_test.go b/direct_extract_test.go index b7ac3d0..de6d3a5 100644 --- a/direct_extract_test.go +++ b/direct_extract_test.go @@ -271,9 +271,9 @@ func TestMultiAccountInheritsExtractor(t *testing.T) { // 機器層有 Extractor+GeminiAPIKey;帳號層 AccountConfig 無這些欄位(正是 t108 場景) cfg := &DirectConfig{ - Manifest: filepath.Join(t.TempDir(), "m.json"), - Library: "kb", - Extractor: "gemma", ExtractorExplicit: true, + Manifest: filepath.Join(t.TempDir(), "m.json"), + Library: "kb", + Extractor: "gemma", ExtractorExplicit: true, GeminiAPIKey: "k-test", CardIngestWF: "rag_ingest_card", IngestWF: "rag_ingest_direct", @@ -329,7 +329,7 @@ func TestExtractorEmptyBlocksNonTextDirect(t *testing.T) { // t182:明示「使用者選過、但沒有可用引擎」=真正的無萃取器狀態。 // (不能只寫 Extractor:""——那現在會被正規化成 workers-ai,測不到這條防禦閘。) Extractor: "gemma", ExtractorExplicit: true, GeminiAPIKey: "", - IngestWF: "rag_ingest_direct", + IngestWF: "rag_ingest_direct", RemovedWF: "rag_takedown_direct", MaxRemoved: DefaultMaxRemovedRatio, } @@ -353,9 +353,11 @@ func TestExtractorEmptyBlocksNonTextDirect(t *testing.T) { // ── t181:預設一律走 Workers AI(免金鑰)────────────────────────────────────── // // leo 2026-08-04 特別交代(這是本測存在的理由): -// 「default 用 Workers AI,你要用 Gemini 要**特別去選取**,**不管你現在是否有填金鑰**」 -// 「只要更新版本,就已經 default workers AI 了,除非去一個地方切換你指定的 AI 來源」 -// 「不然我會有很多質疑,**花在解釋為什麼 Gemini 不管用上**」 +// +// 「default 用 Workers AI,你要用 Gemini 要**特別去選取**,**不管你現在是否有填金鑰**」 +// 「只要更新版本,就已經 default workers AI 了,除非去一個地方切換你指定的 AI 來源」 +// 「不然我會有很多質疑,**花在解釋為什麼 Gemini 不管用上**」 +// // ⇒ 判準是 ExtractorExplicit(使用者主動選過),**不是**「有沒有金鑰」。 func TestT181DefaultsToWorkersAI(t *testing.T) { cases := []struct { diff --git a/tidy_test.go b/tidy_test.go index c7e842d..2791f90 100644 --- a/tidy_test.go +++ b/tidy_test.go @@ -34,7 +34,7 @@ func TestTidy_RenamesLegacyCardsOnly(t *testing.T) { // 使用者自己的東西(絕對不准動) mine := map[string]string{ "journals/2026_08_10.md": "我的日記", - "pages/讀書筆記.md": "我的筆記", + "pages/讀書筆記.md": "我的筆記", } for rel, body := range mine { p := filepath.Join(root, filepath.FromSlash(rel)) diff --git a/vault_footprint_test.go b/vault_footprint_test.go index 24020f2..fbb47a8 100644 --- a/vault_footprint_test.go +++ b/vault_footprint_test.go @@ -18,7 +18,8 @@ // · 之後任何人新增第 N 個寫檔點——沒有任何機制會提醒他要帶標記 // // ⇒ 這正是「規則寫了、卻沒有機制驗證有沒有照做」的同款(頂層 CLAUDE.md 記過 -// history-first/KBDB-first/stage-first 三個同形狀的事故)。 +// +// history-first/KBDB-first/stage-first 三個同形狀的事故)。 // // ══════════════════════════════════════════════════════════════════════════ // 所以這一批補的是「足跡測試」,不是再多一支點測 @@ -120,8 +121,10 @@ func snapshotTree(t *testing.T, root string) map[string]footprintEntry { return out } -// sortedKeys 讓 t.Log 印出來的清單順序穩定(人要拿它當實測輸出貼進 issue)。 -func sortedKeys(m map[string]footprintEntry) []string { +// sortedFootprintKeys 讓 t.Log 印出來的清單順序穩定(人要拿它當實測輸出貼進 issue)。 +// 名字不叫 sortedKeys:convert_table.go 已經有一支同名的(吃 map[string][]byte), +// 同一個 package 裡不能重名。 +func sortedFootprintKeys(m map[string]footprintEntry) []string { ks := make([]string, 0, len(m)) for k := range m { ks = append(ks, k) @@ -133,7 +136,7 @@ func sortedKeys(m map[string]footprintEntry) []string { func logTree(t *testing.T, title string, snap map[string]footprintEntry) { t.Helper() t.Logf("──── %s(%d 個檔案)────", title, len(snap)) - for _, k := range sortedKeys(snap) { + for _, k := range sortedFootprintKeys(snap) { t.Logf(" %s", k) } } @@ -151,9 +154,9 @@ func newVaultWithRealJournals(t *testing.T) (root string, preexisting map[string mustMkdir(t, filepath.Join(root, "journals")) preexisting = map[string]string{ - "logseq/config.edn": "{:default-home {:page \"contents\"}}", - "pages/contents.md": "- 我的目錄頁", - "pages/讀書筆記.md": "- leo 自己寫的讀書筆記", + "logseq/config.edn": "{:default-home {:page \"contents\"}}", + "pages/contents.md": "- 我的目錄頁", + "pages/讀書筆記.md": "- leo 自己寫的讀書筆記", "journals/2026_08_10.md": "- 今天想到的事,這是我自己寫的日記", "journals/2026_08_11.md": "- 昨天的日記", }