Files
log/templates/learn-contents.md
T
jiantw83 aee17e45c7 feat(wiki): 三個目錄頁改走專用存取庫,比對鍵改用裸 HASH
What:LOG_CONTENTS、LEARN_CONTENTS、REPORT_CONTENTS 改由 wiki-repo CONTENTS
解析並透過 wiki-contents.sh upsert 寫入,內容頁仍各走自己的型別。LOG 與 REPORT
的目錄頁新增一欄裸 HASH 當比對鍵。

Why:比對鍵原本是含網址的儲存格,換主機、換存取庫或 URL 編碼有差就比對不到,
upsert 會走附加分支,同一頁多出第二列而舊列永遠不再更新。REPORT 更脆:存取庫一換,
雜湊與網址同時變,四個期間的列會一次全部重複。

How:worklog-pending.sh 的 valid_hash 放寬成 40 碼、8 碼與 H 加 7 碼三種形狀。
放寬的是長度不是字元集——先剝字元再比長度的順序保留,路徑穿越與換行注入照樣擋下。
年報不得沿用日誌存取庫那條規則收斂到內容頁,目錄頁同住一庫是另一回事。

Who:jsc-log
2026-09-02 11:02:21 +08:00

1.2 KiB

教訓目錄

由 jsc-log:learn 維護。這是教訓目錄頁 LEARN_CONTENTS。每個存取庫一列;LEARN_{HASH} 的 {HASH} 依共用 wiki hash 規則產生:取 {owner}/{repo} 的完整 SHA-1 四十碼,a-f 轉大寫,不截短、不加前綴。 本頁落在 JSC_WIKI_REPO_CONTENTS 解出的專用存取庫,教訓頁 LEARN_{HASH} 落在 JSC_WIKI_REPO_LEARN 的存取庫,兩者分屬不同 wiki。 所以指向教訓頁的連結一律用 gitea.sh wiki-url 取得的絕對網址。[[LEARN_{HASH}]] 只在同一個 wiki 內解得開,寫在這裡就是死連結。 寫入語意:一列代表一個存取庫。一律用 jsc-gitea/tools/wiki-contents.sh upsert LEARN 1 {owner}/{repo} {列檔} {本範本} 單列整頁寫回——它讀整頁、找得到該存取庫既有的那一列就換掉那一列,找不到才附加。 鍵取第 1 欄的存取庫名稱,不取第 2 欄的連結。存取庫名稱每一輪都一樣,連結會隨主機名與頁名編碼變動。 禁止整頁覆蓋,也不得改動別人的列。

存取庫名稱 教訓紀錄 最後更新時間
{owner}/{repo} LEARN_{HASH} {yyyy-MM-dd HH:mm}