修正 wp-gate.sh check-deps 的 awk 欄位切析錯誤,讓相依關卡能正確攔下未合併相依的工作包 #62

Merged
admin merged 1 commits from fix/wp-gate-check-deps-field-index into develop 2026-09-08 02:12:27 +00:00
Member

摘要

  • 需求描述:tools/wp-gate.sh 的 check-deps 子指令,靠 awk -F'|' 切析分析頁的 WBS markdown 表格列來讀「相依」「PR」「狀態」三個欄位,藉此判斷候選工作包能不能挑。原本有三個問題:(1)相依欄位寫死在第 6 個 awk 欄位,但因每列開頭多一個空欄,相依欄實際落在第 7 欄,原本讀到的其實是幾乎都是 - 的「交付型別」欄,導致每個候選工作包都被誤判成「沒有相依,可以挑」,相依關卡完全沒在把關;(2)WBS 表格分兩種欄位數(層 0 比層 1 到 4 多一欄「工作證」),原本用寫死的欄號讀 PR 與狀態,兩種表格對不齊;(3)有一列描述文字裡含跳脫過的字面 |(合法的 markdown 跳脫語法),awk -F'|' 不懂跳脫語法會多切一欄,害該列後面欄位全部錯位。此修正一次解決以上三個問題,讓相依關卡能正確攔下相依未合併的候選工作包。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/wp-gate.sh 修正 check-deps 的 awk 欄位切析:相依欄改為讀取正確的第 7 欄;PR 欄與狀態欄改成從整列結尾往回數(倒數第一格為狀態、倒數第二格為 PR),不再依賴寫死欄號,讓層 0 與層 1 到 4 兩種欄位數的表格都能對齊;讀入分析頁內容後先將跳脫字面 | 換成控制字元再交給 `awk -F'

設計重點

  • 相依欄位改用實際觀察到的欄位序號(第 7 欄),修正原本誤讀「交付型別」欄的錯誤,讓相依關卡真正生效。
  • PR 欄與狀態欄改為「從列尾往回數」的相對定位,取代寫死欄號,使同一段 awk 邏輯能同時正確處理層 0(多一欄工作證)與層 1 到 4 兩種欄位數不同的表格。
  • 在切欄前先把跳脫過的字面 \| 置換成控制字元,避開 awk -F'|' 不理解 markdown 跳脫語法的限制,切完欄位後再視需要還原,防止單一列的跳脫符號拖累後續所有欄位錯位。

測試結果

  • 使用真實的 55 個工作包分析頁驗證:修好前所有候選工作包都被誤判成 ready;修好後正確分出 ready 與 blocked(例如某個相依未合併的候選被正確擋下,某個相依已合併的候選被正確放行)。
  • bash -n tools/wp-gate.sh:語法檢查通過。
  • comment-scope 掃描:通過,未發現文件追蹤資訊殘留於註解中。

前置 Push Request

  • 無
## 摘要 - 需求描述:`tools/wp-gate.sh` 的 `check-deps` 子指令,靠 `awk -F'|'` 切析分析頁的 WBS markdown 表格列來讀「相依」「PR」「狀態」三個欄位,藉此判斷候選工作包能不能挑。原本有三個問題:(1)相依欄位寫死在第 6 個 awk 欄位,但因每列開頭多一個空欄,相依欄實際落在第 7 欄,原本讀到的其實是幾乎都是 `-` 的「交付型別」欄,導致每個候選工作包都被誤判成「沒有相依,可以挑」,相依關卡完全沒在把關;(2)WBS 表格分兩種欄位數(層 0 比層 1 到 4 多一欄「工作證」),原本用寫死的欄號讀 PR 與狀態,兩種表格對不齊;(3)有一列描述文字裡含跳脫過的字面 `|`(合法的 markdown 跳脫語法),`awk -F'|'` 不懂跳脫語法會多切一欄,害該列後面欄位全部錯位。此修正一次解決以上三個問題,讓相依關卡能正確攔下相依未合併的候選工作包。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/wp-gate.sh` | 修正 `check-deps` 的 awk 欄位切析:相依欄改為讀取正確的第 7 欄;PR 欄與狀態欄改成從整列結尾往回數(倒數第一格為狀態、倒數第二格為 PR),不再依賴寫死欄號,讓層 0 與層 1 到 4 兩種欄位數的表格都能對齊;讀入分析頁內容後先將跳脫字面 `\|` 換成控制字元再交給 `awk -F'|'` 切欄,避免跳脫的 `|` 被誤判為欄位分隔符造成錯位。 | ## 設計重點 - 相依欄位改用實際觀察到的欄位序號(第 7 欄),修正原本誤讀「交付型別」欄的錯誤,讓相依關卡真正生效。 - PR 欄與狀態欄改為「從列尾往回數」的相對定位,取代寫死欄號,使同一段 awk 邏輯能同時正確處理層 0(多一欄工作證)與層 1 到 4 兩種欄位數不同的表格。 - 在切欄前先把跳脫過的字面 `\|` 置換成控制字元,避開 `awk -F'|'` 不理解 markdown 跳脫語法的限制,切完欄位後再視需要還原,防止單一列的跳脫符號拖累後續所有欄位錯位。 ## 測試結果 - 使用真實的 55 個工作包分析頁驗證:修好前所有候選工作包都被誤判成 ready;修好後正確分出 ready 與 blocked(例如某個相依未合併的候選被正確擋下,某個相依已合併的候選被正確放行)。 - `bash -n tools/wp-gate.sh`:語法檢查通過。 - comment-scope 掃描:通過,未發現文件追蹤資訊殘留於註解中。 ## 前置 Push Request - 無
jiantw83 added 1 commit 2026-09-08 02:09:31 +00:00
原本 awk -F'|' 固定用第 6 欄當相依欄,但表格每列開頭多一個空欄,實際相依欄是第 7 欄,
導致每個候選工作包都被誤判成無相依可直接挑選,相依關卡形同虛設。同時 PR/狀態欄改用
從結尾往回數,避免層 0 多一欄「工作證」時與層 1 到 4 的表格欄位對不齊;並在切欄前先
處理儲存格內跳脫的字面 |,避免該列後續欄位整批錯位。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
admin merged commit b6aa8e09a2 into develop 2026-09-08 02:12:27 +00:00
admin deleted branch fix/wp-gate-check-deps-field-index 2026-09-08 02:12:27 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/sdlc#62