jiantw83
|
9942cf2506
|
fix(migrate-wiki): 候選鍵兼收條列與表格兩種目錄頁形狀
搬頁時蒐集候選鍵的那一段,原本只讀目錄頁表格的存取庫、主機、帳號、工具、
期間五欄。現在改成 H2 區塊底下的「- {欄位名}:{值}」也照樣讀,表格的欄位
維持原樣收下,兩種形狀都認得。
目錄頁已經改成條列,還沒轉檔的線上舊頁卻仍是表格,同一輪搬頁會同時遇到
兩種。只讀表格的話,條列頁一個候選鍵都收不到,那些頁的舊頁名就對不到新
頁名,搬頁會把它們當成沒有對應而漏掉。
讀取改成逐行判斷:碰到「## 」就把上一個區塊收掉並開新的一筆,區塊內的
條列按欄位名對照收值。欄位值各自算一個候選鍵,再依固定欄位順序串一個組合
鍵,跟表格那一路的產出規則完全一致。條列的冒號正本寫全形,半形也一併收,
舊頁手寫的那幾條才不會整條漏掉。
功能範圍:目錄頁版面改版的搬頁相容。
|
2026-09-02 17:22:24 +08:00 |
|
jiantw83
|
b53cfeaf34
|
fix(migrate-wiki): 正推比對涵蓋兩代頁名規則
What:候選鍵的舊 HASH 改成兩種都算——第一代只取 SHA-1 前 8 碼大寫,第二代在其上
把首碼落在 0-9ABC 的改寫成 H 加前 7 碼。兩種都進對照表,任一種配得上就算配對成功。
Why:原本只算第二代,所以第一代那些首碼落在 0-9ABC 的頁一律配不到,被誤判成孤兒
留在原地。實測同一個鍵在第一代是 1C516D85、第二代是 H1C516D8,兩張頁至今並存,
只算第二代就會漏掉第一代那一張。
How:實地重跑對照表,可搬頁數從 35 增為 48,孤兒從 14 減為 2。剩下兩頁一頁是更早的
{型別}_{日期}_{HASH} 命名、頁名不符任何已知樣式,一頁反推不到候選鍵,兩頁都照原則
只列不猜。首碼落在 D、E、F 的鍵兩代同值,只印一行,不會重複。
Who:jsc-gitea
|
2026-09-02 12:16:44 +08:00 |
|
jiantw83
|
c40b561589
|
feat(wiki): 目錄頁專用存取庫、HASH 去除截短與 H 前綴
What:CONTENTS 成為第 15 種頁面類型,解析鏈為 JSC_WIKI_REPO_CONTENTS 到
JSC_WIKI_REPO,刻意不退回型別變數。hash-id 拿掉 8 碼截短與 H 前綴改寫,只留大寫
轉換,輸出完整 40 碼;空輸入改成用法錯誤。新增 page-name.sh、wiki-contents.sh、
migrate-wiki.sh 與 wiki-delete 子命令。
Why:H 前綴會命中 16 個首碼裡的 13 個,還丟掉第 8 碼,把有效熵壓到 28 位元,而且
全庫查不到任何理由紀錄。目錄頁的整列 upsert 原本 14 處只有一處寫成程式,同一段判斷
做 14 次,錯一次就少一筆紀錄。
How:頁名樣式仍收 H 加 7 碼的舊頁,遷移期間讀得到舊頁。wiki-contents.sh 建新頁時
剝掉範本的示範列,否則每個目錄頁第一次建立都會留一列佔位死連結。migrate-wiki.sh
預設只印對照表,--apply 先寫新頁、確認寫成、才刪舊頁;孤兒頁只列不猜,因為 SHA-1
不可逆,新頁名只能靠候選鍵正推。
Who:jsc-gitea
|
2026-09-02 11:02:07 +08:00 |
|