What:準則的環境變數表與命名總表加入 JSC_WIKI_REPO_CONTENTS 與目錄頁專用存取庫 一節,HASH 規則改為完整 40 碼。skill-check 的 Group 3 先讀上一輪決議,建議表加上 決議與決議日期兩欄,新增步驟 8 把稽核結果寫進 SKILLSET 頁。新增 check-page-name.sh 與兩份 SKILLSET 範本。 Why:優化建議原本每輪產出後就散掉,決議為延後的項目下一輪會重新掃、重新問一次, 正是 skill-check 自己第三個面向點名的毛病。SKILLSET_CONTENTS 是 14 個目錄頁裡 唯一沒有範本的,四支技能都被要求寫它,卻沒有欄位定義可套。 How:Group 1 補進三支現成但沒人呼叫的檢查腳本——ste100-lint.sh、check-wiki-rules.sh 與新增的 check-page-name.sh。讀不到上一輪決議時只停掉 Group 3,不再中止整輪:那兩組 完全不碰 wiki,金鑰失效就會鎖死整組技能唯一的稽核路徑。另外四支 meta 技能原本把目錄頁 寫進 SKILLSET 存取庫,一併改走 CONTENTS。
2.9 KiB
2.9 KiB
技能組異動目錄
由
jsc-meta的skill-new、skill-update、skill-delete、skillset-update、skill-check共同維護。這是目錄頁SKILLSET_CONTENTS。 一列代表一個 domain 存取庫。技能組有幾個 domain 被改過,就有幾列。 本頁落在JSC_WIKI_REPO_CONTENTS解出來的存取庫,不是內容頁那一個。解析鏈是JSC_WIKI_REPO_CONTENTS→JSC_WIKI_REPO→ exit 3,中間不退回JSC_WIKI_REPO_SKILLSET。 寫入一律用jsc-gitea/tools/wiki-contents.sh upsert SKILLSET 2 "{owner}/{repo}" {列檔} templates/skillset-contents.md:<TYPE>填SKILLSET,鍵欄填數字2,也就是「存取庫」那一欄。 它讀回整頁、換掉鍵欄相符的那一列、找不到才附加,最後整頁寫回。不得手工改目錄頁。SKILLSET_{HASH}的{HASH}交給jsc-gitea/tools/hash-id產生,雜湊來源見jsc-meta/references/guidelines.md的「Wiki 頁命名總表」。
| 異動頁 | 存取庫 | 最近異動 | 異動次數 | 最後更新 |
|---|---|---|---|---|
| SKILLSET_{HASH} | {owner}/{repo} | {一句話寫這一次改了什麼} | {n} | {yyyy-MM-dd HH:mm} |
欄位說明
| 欄位 | 內容 |
|---|---|
| 異動頁 | 指向 SKILLSET_{HASH} 的絕對網址,格式 {GITEA_HOST}/{owner}/{repo}/wiki/SKILLSET_{HASH}。{owner}/{repo} 是內容頁那一個存取庫 |
| 存取庫 | 被改動的 domain 存取庫 {owner}/{repo},也就是這一頁的雜湊來源 |
| 最近異動 | 最後一次異動的一句話摘要,與內容頁最新一節的「異動需求」同一句 |
| 異動次數 | 該內容頁累積的節數。內容頁只附加不覆蓋,所以這個數字只會往上加 |
| 最後更新 | 最後一次寫入內容頁的時間,與那一節的日期一致 |
為什麼連結要用絕對網址
目錄頁與內容頁分屬不同存取庫。[[SKILLSET_{HASH}]] 這種同 wiki 連結解到的是目錄頁自己那個存取庫,那裡沒有這一頁,點下去是 404。
更麻煩的是它看起來像「頁沒寫成功」,實際上頁好好的,只是連結指錯地方,查的人會回去重寫一次已經寫好的頁。
寫入規則
- 一律走
jsc-gitea/tools/wiki-contents.sh upsert,鍵欄是第 2 欄「存取庫」,鍵值是{owner}/{repo}。 - 那支腳本先整頁讀回來,再比對「存取庫」欄。
- 該欄相同就更新那一列,其餘欄位覆寫成本次結果。
- 找不到相同的一列,才新增一列。
- 只動自己那一列,別人的列原樣保留。
- 禁止整頁覆蓋。這一頁是全部 domain 共用的索引,覆蓋等於刪掉別的 domain 的紀錄。
- 讀不到舊內容就中止,不新增列,也不寫入。
- 先寫內容頁,成功了才回來更新這一列。目錄列指向一個寫失敗的頁,比缺一列更難查。