refactor(patrol): 監控頁改成固定三塊
巡檢產出與監控頁範本改成固定三塊:本頁基本資料、最新一輪、近 24 輪摘要。 舊寫法是一輪附加一節。十五分鐘跑一輪,一天就疊出九十六節,那樣的頁沒 有人讀得完,也就沒有人會發現助理壞在哪一輪。軌跡留著卻沒人看,等於沒 有留。 基本資料建頁時寫一次就不動。最新一輪每輪整塊換掉,只留最新那一輪的完 整內容。摘要表一輪一列,最新的在最上面,超過 24 列就丟掉最舊的那一列, 一列只有四欄:巡檢時間、本輪判定、四項成敗、待人處理筆數,一眼看得出 是從哪一輪開始壞的。collect 的輸出鍵位跟著換,section_file 不再產出, 改印 latest_file、summary_file 與 summary_row_file,另外多印本輪待人處 理的筆數。範本連帶把流程圖與寫入規則改成先讀回舊頁、再三塊重組整頁寫 回,並寫明舊格式的頁第一次重組要怎麼收。 順手把腳本內部找別的 domain 工具的順序改成 current 連結優先,理由跟排 程那支一樣:技能與權限規則都以 current 為準,腳本自己去挑另一個版本就 會跑到混版的工具,而那種不一致查起來沒有線索。功能範圍是一輪巡檢的收 攏與監控頁產出。
This commit is contained in:
+33
-18
@@ -1,20 +1,23 @@
|
||||
# 助理巡檢 — {主機名}/{登入帳號}
|
||||
|
||||
> 由 `jsc-assist` 維護。這是監控頁 `MONITOR_{HASH}`。
|
||||
> 這頁是這台機器的巡檢軌跡:一次巡檢附加一節,節標題帶時間戳,舊的節一個字都不動。
|
||||
> 附加是刻意的。助理的寫入是背景行為,覆寫錯了沒人在現場,軌跡被抹掉也看不出斷在哪一輪。
|
||||
> 目錄頁 `MONITOR_CONTENTS` 只更新自己那一列,寫入語意與這頁不同,不要混用。
|
||||
> 這頁固定三塊:本頁基本資料、最新一輪、近 24 輪摘要。
|
||||
> 最新一輪每輪整塊換掉;摘要表一輪一列往上疊,只留 24 列;基本資料建頁時寫一次就不動。
|
||||
> 完整內容只留最新一輪,頁面才讀得完;軌跡留在摘要表,看得出是從哪一輪開始壞的。
|
||||
> 目錄頁 `MONITOR_CONTENTS` 只更新自己那一列,別台機器的列一個字都不動。
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[巡檢一輪] --> B[收攏各類結果]
|
||||
B --> C[附加一節,節標題帶時間戳]
|
||||
C --> D[既有的節原樣保留]
|
||||
D --> E[回頭更新 MONITOR_CONTENTS 自己那一列]
|
||||
E --> F[最後才寫心跳]
|
||||
A[巡檢一輪] --> B[收攏四項結果]
|
||||
B --> C[讀回舊頁]
|
||||
C --> D[換掉最新一輪那一塊]
|
||||
D --> E[本輪摘要列插到表格最上面,截到 24 列]
|
||||
E --> F[整頁寫回]
|
||||
F --> G[更新 MONITOR_CONTENTS 自己那一列]
|
||||
G --> H[最後才寫心跳]
|
||||
```
|
||||
|
||||
心跳排在最後一步,不能提前。心跳新鮮的意思就是「上一輪跑到這一步了」:這一節沒寫上來,心跳就不寫,讓它自己過期。那是巡檢在空轉的唯一訊號。
|
||||
心跳排在最後一步,不能提前。心跳新鮮的意思就是「上一輪跑到這一步了」:這一輪沒寫上來,心跳就不寫,讓它自己過期。那是巡檢在空轉的唯一訊號。
|
||||
|
||||
## 本頁基本資料
|
||||
|
||||
@@ -27,9 +30,11 @@ flowchart LR
|
||||
| 雜湊來源 | `{主機名}/{登入帳號}` |
|
||||
| 狀態檔根目錄 | `$JSC_HOME/assistant/`(`$JSC_HOME` 未設定就退回 `~/.jsc`) |
|
||||
|
||||
## 巡檢 {yyyy-MM-dd HH:mm}
|
||||
## 最新一輪
|
||||
|
||||
一輪巡檢就是這樣一節,最新的一節放在最下面。六個子節固定都寫;某個來源讀不到,就在那個子節寫明是哪個路徑讀不到,不要整節略過。還沒實作的子節也照寫,寫明「這一輪不做這一項」——空表格會被讀成「查過了,沒問題」。
|
||||
這一塊每輪整塊換掉,只留最新那一輪的完整內容。再往前的軌跡看下面的摘要表。
|
||||
|
||||
六個子節固定都寫;某個來源讀不到,就在那個子節寫明是哪個路徑讀不到,不要整節略過。還沒實作的子節也照寫,寫明「這一輪不做這一項」——空表格會被讀成「查過了,沒問題」。
|
||||
|
||||
| 項目 | 內容 |
|
||||
| --- | --- |
|
||||
@@ -49,9 +54,9 @@ flowchart LR
|
||||
| session | {工作階段代號} |
|
||||
| pid | {數字}。只給要找行程的人參考,不參與判定 |
|
||||
|
||||
這一欄讀到的是**上一輪**巡檢寫的心跳:心跳由巡檢寫,本輪那一次要等這一節寫上來之後才寫。
|
||||
這一欄讀到的是**上一輪**巡檢寫的心跳:心跳由巡檢寫,本輪那一次要等這一頁寫成之後才寫。
|
||||
|
||||
心跳的判準只看 `ts` 距現在有沒有超過門檻,預設 300 秒。不看 pid 存活:五支 CLI 與容器裡的行程互相看不到彼此的 pid。閘門的判定留在 hook,助理只維持心跳。心跳新鮮代表上一輪巡檢跑完了,不代表那一輪四項都成功——那要看本節上面的「本輪判定」。
|
||||
心跳的判準只看 `ts` 距現在有沒有超過門檻,預設 300 秒。不看 pid 存活:五支 CLI 與容器裡的行程互相看不到彼此的 pid。閘門的判定留在 hook,助理只維持心跳。心跳新鮮代表上一輪巡檢跑完了,不代表那一輪四項都成功——那要看這一塊上面的「本輪判定」。
|
||||
|
||||
### 技能與呼叫鏈使用統計
|
||||
|
||||
@@ -111,11 +116,21 @@ flowchart LR
|
||||
| --- | --- | --- |
|
||||
| {一句話講完要處理什麼} | {上面六個子節之一} | {技能名或指令} |
|
||||
|
||||
## 近 24 輪摘要
|
||||
|
||||
一輪一列,最新的在最上面,超過 24 列就丟掉最舊的那一列。
|
||||
|
||||
| 巡檢時間 | 本輪判定 | 四項成敗 | 待人處理 |
|
||||
| --- | --- | --- | ---: |
|
||||
| {yyyy-MM-dd HH:mm} | {正常、警示、異常 三選一} | {成功項數}/{總項數} | {待人處理筆數} |
|
||||
|
||||
## 寫入規則
|
||||
|
||||
- 一次巡檢附加一節,節標題帶時間戳,節名不重複。
|
||||
- 既有的節原樣保留,一個字都不改。
|
||||
- 禁止整頁覆寫。覆寫等於把這台機器的巡檢軌跡刪掉。
|
||||
- 讀不到舊內容就中止,不附加,也不寫入。
|
||||
- 附加成功之後,才回頭更新 `MONITOR_CONTENTS` 自己那一列。
|
||||
- 讀不到舊頁就中止,不重組,也不寫入。舊頁讀不回來就沒有摘要表可以接下去。
|
||||
- 本頁基本資料原樣保留,一個字都不改。
|
||||
- 最新一輪整塊換掉,只留這一輪的完整內容。
|
||||
- 本輪的摘要列插到摘要表最上面,舊的列往下移,超過 24 列就丟掉最舊的那一列。
|
||||
- 三塊重組成一整頁再整頁寫回。除了這三塊,頁上沒有別的東西。
|
||||
- 舊格式的頁(一輪一節疊起來的那種)第一次重組時,基本資料留著,那些節收掉,摘要表從本輪這一列開始,並在回報裡說明。
|
||||
- 整頁寫成之後,才回頭更新 `MONITOR_CONTENTS` 自己那一列,別台機器的列一個字都不動。
|
||||
- 兩頁都寫成之後,才寫這一輪的心跳。任一頁沒寫成就不寫心跳,讓它過期。
|
||||
|
||||
Reference in New Issue
Block a user