Files
assist/templates/monitor-contents.md
T
jiantw83 e7e9b8ce18 feat(templates): 新增監控頁的目錄頁與內容頁範本
What:
- 新增 templates/monitor-contents.md 與 templates/monitor-page.md。
- README 的「參考與工具」表補上這兩份範本,說明欄寫出兩者相反的寫入語意。
- 三份 manifest 的版本一起提升。

Why:
- 監控頁是助理巡檢結果的落點。沒有範本,每次巡檢寫出來的格式都不一樣,累積久了看不出趨勢,也對不起來。
- 兩份範本的寫入語意剛好相反,必須各自寫明白。目錄頁是共用的,一列代表一台機器,整頁覆蓋會刪掉別台機器的紀錄;內容頁只屬於一台機器,記的是歷次巡檢的軌跡,所以附加不覆寫。

How:
- 目錄頁範本帶欄位說明與寫入規則:比對主機與帳號兩欄,只更新自己那一列,讀不到舊內容就中止,不硬寫。
- 內容頁範本一次巡檢附加一節,節標題帶時間戳,涵蓋心跳與閘門、使用統計、hook 錯誤、版本落差、階段鎖與工作包鎖、待辦簿到期與逾期六類結果。
- 連續失敗的項目一定要標「已連續失敗 N 次」。待辦簿的項目失敗不會自動暫停,會每輪重試,不標出來就是一個壞掉的項目一直重試而沒人知道。
- 內容以圖表優先,流程用 mermaid、結果用表格,純文字每節最多三句。

Who:
技能助理落地帶出來的頁型別需求,四個存放庫同一批改。
2026-09-01 12:11:26 +08:00

2.6 KiB

助理巡檢目錄

由 jsc-assist 維護。這是目錄頁 MONITOR_CONTENTS。 一列代表一台機器。雜湊來源是 {主機名}/{登入帳號},所以一台機器一列、一頁,換一支 CLI 不另開列。 MONITOR_{HASH} 的 {HASH} 交給 jsc-gitea/tools/hash-id 產生,雜湊來源見 jsc-meta 的 references/guidelines.md「Wiki 頁命名總表」。

監控頁 主機 帳號 心跳 最後巡檢 待辦筆數 連續失敗項
MONITOR_{HASH} {主機名} {登入帳號} {新鮮、過期、不存在 三選一} {yyyy-MM-dd HH:mm} {n} {n}

欄位說明

欄位 內容 為什麼留這一欄
監控頁 指向 MONITOR_{HASH} 的同 wiki 連結 少了連結就要人自己算雜湊才翻得到內容頁
主機 這台機器的主機名,與雜湊第一段相同 比對用的兩欄之一,決定要更新哪一列
帳號 助理執行時的登入帳號,與雜湊第二段相同 比對用的兩欄之一。同一台機器換帳號就是另一個巡檢對象
心跳 巡檢當下的心跳判定,判準只看 ts 距現在是否不到 300 秒 一眼看出這台機器的助理還在不在跑,不必逐頁翻
最後巡檢 該頁最新一節的時間戳 心跳新鮮而這一欄很舊,代表助理活著卻沒在巡
待辦筆數 待辦簿現有筆數 心跳新鮮而筆數為 0,代表助理空轉,沒有東西可跑
連續失敗項 該頁最新一節裡 fail_count 大於 0 的筆數 待辦簿的項目失敗不會自動暫停,每輪都重試。這一欄讓壞掉的項目在目錄頁就現形

寫入規則

這一頁是共用目錄,別台機器的列一律原樣保留。

flowchart TD
  A[整頁讀回來] --> B{讀得到舊內容}
  B -- 否 --> C[中止:不新增列,也不寫入]
  B -- 是 --> D{主機與帳號兩欄都對得上}
  D -- 是 --> E[只覆寫那一列的其餘欄位]
  D -- 否 --> F[新增一列]
  E --> G[其他機器的列原樣送回]
  F --> G
  • 先整頁讀回來,再比對主機與帳號兩欄。
  • 兩欄都相同就更新那一列,其餘欄位覆寫成本次巡檢結果。
  • 找不到兩欄都相同的列,才新增一列。
  • 只動自己那一列,別台機器的列一個字都不改。
  • 禁止整頁覆蓋。整頁覆蓋等於刪掉別台機器的紀錄。
  • 讀不到舊內容就中止,不新增列,也不寫入。
  • 內容頁 MONITOR_{HASH} 的寫入語意相反,那頁只附加一節、不覆寫,兩者不要混用。