fix(t89 🔴🔴): 純中文資料夾名不再靜默併進 kb 庫——slug 空改生路徑穩定雜湊鍵
leo 07-28 實測:「官方總圖」被顯示成「知識庫」=slug 後為空退到 kb; 兩個純中文資料夾會塌縮同庫(靜默混庫,B5 分庫隔離形同虛設)。 修:libraryFor 第三優先從退 c.Library/kb 改為 lib_+sha256(絕對路徑)前6hex—— 路徑穩定故鍵穩定、不同路徑必不同鍵;後端庫名鍵限 A-Za-z0-9_- 相容。 測試(t52_library_test.go):純中文→lib_雜湊非kb/兩中文夾不同鍵/同夾重跑鍵穩定/ ASCII 行為不變/明列對映仍最優先。collector go test 全綠(總管親跑)。 (實作=子 CC headless;審查+commit=總管)
This commit is contained in:
@@ -61,7 +61,7 @@ type DirectConfig struct {
|
||||
}
|
||||
|
||||
// librarySlug 把資料夾名轉成合法庫名(A-Za-z0-9_-;中文等非 ASCII 轉為底線分段)。
|
||||
// 空結果(如純中文名)回 "",交由 libraryFor 退回後備值——不硬造出無意義的庫名。
|
||||
// 空結果(如純中文名)回 "",由 libraryFor 改生路徑穩定雜湊鍵(t89)。
|
||||
func librarySlug(folder string) string {
|
||||
base := filepath.Base(strings.TrimRight(folder, string(filepath.Separator)))
|
||||
var b strings.Builder
|
||||
@@ -85,7 +85,12 @@ func librarySlug(folder string) string {
|
||||
}
|
||||
|
||||
// libraryFor 決定某個看守資料夾的資料該蓋哪個庫章(t52)。
|
||||
// 優先序:config.Libraries 明列 > 資料夾名 slug > config.Library(後備,預設 kb)。
|
||||
// 優先序:config.Libraries 明列 > 資料夾名 slug > 路徑穩定雜湊鍵(t89)。
|
||||
//
|
||||
// t89(leo 2026-07-28 實測):純中文資料夾名(如「官方總圖」)slug 後為空字串,
|
||||
// 若退到 c.Library/"kb",兩個不同純中文資料夾會塌縮進同一個庫(靜默混庫)。
|
||||
// 後端庫名鍵限 A-Za-z0-9_-(Arcrun KBDB 約束),故改生 lib_+sha256(絕對路徑) 前 6 hex——
|
||||
// 路徑穩定所以鍵穩定;兩個不同路徑必然不同鍵。
|
||||
func (c *DirectConfig) libraryFor(absRoot string) string {
|
||||
if c.Libraries != nil {
|
||||
if lib, ok := c.Libraries[absRoot]; ok && strings.TrimSpace(lib) != "" {
|
||||
@@ -95,10 +100,8 @@ func (c *DirectConfig) libraryFor(absRoot string) string {
|
||||
if slug := librarySlug(absRoot); slug != "" {
|
||||
return slug
|
||||
}
|
||||
if c.Library != "" {
|
||||
return c.Library
|
||||
}
|
||||
return "kb"
|
||||
sum := sha256.Sum256([]byte(absRoot))
|
||||
return "lib_" + hex.EncodeToString(sum[:3])
|
||||
}
|
||||
|
||||
// expandHome 把開頭的 `~/`(或單獨的 `~`)展開成使用者家目錄的絕對路徑。
|
||||
|
||||
Reference in New Issue
Block a user