worklog-target.sh 新增 week 子命令,依週五所在月份輸出 yyyy-MM-Wn 工作週編號 #38

Merged
admin merged 1 commits from feat/worklog-target-week into develop 2026-09-08 03:15:10 +00:00
Member

摘要

  • 需求描述:tools/worklog-target.sh 新增 week 子命令:worklog-target.sh week [基準日期 yyyy-MM-dd],印出該工作週的 yyyy-MM-Wn 格式(例:2026-08-31 與 2026-09-06 都印出 2026-09-W1,2026-09-11 印出 2026-09-W2)。判斷規則是「以週五那天的月份為準、算當月第幾個週五」,不是 ISO 週次,也不看週一在哪個月,因為 worklog 頁內容照週五整理,跨月的那一週不該被算進週一那個月。
  • 計畫名稱:jsc 技能組待辦總表 2026-09-07(沒有對應的 PLAN 頁,本輪裁示直接以 TODO.md 為計畫來源)
  • 計畫頁:無
  • 分析頁:https://gitea.jsc.idv.tw/knowledges/ANALYZE/wiki/ANALYZE_0F1898406BE708ADBBD6DF66AFB16F3D0D8ACA0C#wp-03-工作週判定

變更內容

檔案 為什麼改
tools/worklog-target.sh 新增 week 子命令,重用既有 friday 邏輯(呼叫 report-range.sh weekly 取週一、加四天算週五)推算當月第幾個週五並組成 yyyy-MM-Wn 輸出;同時把 friday/week 兩分支各自重複的基準日期格式檢查收進 friday_of_week() 函式內部以消除重複程式碼,補齊函式註解的層級標記、步驟條列與範例值,並補上 usage() 說明裡原本漏掉的 week 那一行

設計重點

  • 週次判定以「週五所在月份」為準、算當月第幾個週五,不採 ISO 週次也不看週一所在月份,因為 worklog 頁內容照週五整理,跨月的那一週不該歸給週一所在的月份。
  • 重用既有 friday 邏輯(report-range.sh weekly 取週一、加四天算週五)取得週五日期,避免另寫一套日期運算。
  • 把 friday/week 兩分支重複的基準日期格式檢查收斂進 friday_of_week() 函式內部,消除重複程式碼。

測試結果

  • TDD 驗證跨月週:2026-08-31 與 2026-09-06 皆輸出 2026-09-W1,通過。
  • TDD 驗證本週遞增:2026-09-04 輸出 2026-09-W1、2026-09-11 輸出 2026-09-W2,通過。
  • bash -n tools/worklog-target.sh 語法檢查通過。
  • comment-scope.sh sweep 掃描通過,無殘留追蹤資訊註解。
  • jsc-review:code-review 六組壞味道審查兩輪:第一輪抓到三則中嚴重度(三處註解缺層級標記與步驟條列)與兩則低嚴重度(friday/week 重複的格式檢查邏輯、缺輸入輸出範例),全部修正後第二輪覆核 PASS(過程中另補上 usage() 說明漏掉 week 一行)。
  • jsc-review:api-doc 以 swagger-detect.sh 判定 plugins/log 不支援 Swagger(結束碼 1),已跳過。

前置 Push Request

  • 無
## 摘要 - 需求描述:`tools/worklog-target.sh` 新增 `week` 子命令:`worklog-target.sh week [基準日期 yyyy-MM-dd]`,印出該工作週的 `yyyy-MM-Wn` 格式(例:`2026-08-31` 與 `2026-09-06` 都印出 `2026-09-W1`,`2026-09-11` 印出 `2026-09-W2`)。判斷規則是「以週五那天的月份為準、算當月第幾個週五」,不是 ISO 週次,也不看週一在哪個月,因為 worklog 頁內容照週五整理,跨月的那一週不該被算進週一那個月。 - 計畫名稱:jsc 技能組待辦總表 2026-09-07(沒有對應的 PLAN 頁,本輪裁示直接以 TODO.md 為計畫來源) - 計畫頁:無 - 分析頁:https://gitea.jsc.idv.tw/knowledges/ANALYZE/wiki/ANALYZE_0F1898406BE708ADBBD6DF66AFB16F3D0D8ACA0C#wp-03-工作週判定 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/worklog-target.sh` | 新增 `week` 子命令,重用既有 `friday` 邏輯(呼叫 report-range.sh weekly 取週一、加四天算週五)推算當月第幾個週五並組成 `yyyy-MM-Wn` 輸出;同時把 `friday`/`week` 兩分支各自重複的基準日期格式檢查收進 `friday_of_week()` 函式內部以消除重複程式碼,補齊函式註解的層級標記、步驟條列與範例值,並補上 `usage()` 說明裡原本漏掉的 week 那一行 | ## 設計重點 - 週次判定以「週五所在月份」為準、算當月第幾個週五,不採 ISO 週次也不看週一所在月份,因為 worklog 頁內容照週五整理,跨月的那一週不該歸給週一所在的月份。 - 重用既有 `friday` 邏輯(report-range.sh weekly 取週一、加四天算週五)取得週五日期,避免另寫一套日期運算。 - 把 `friday`/`week` 兩分支重複的基準日期格式檢查收斂進 `friday_of_week()` 函式內部,消除重複程式碼。 ## 測試結果 - TDD 驗證跨月週:`2026-08-31` 與 `2026-09-06` 皆輸出 `2026-09-W1`,通過。 - TDD 驗證本週遞增:`2026-09-04` 輸出 `2026-09-W1`、`2026-09-11` 輸出 `2026-09-W2`,通過。 - `bash -n tools/worklog-target.sh` 語法檢查通過。 - `comment-scope.sh sweep` 掃描通過,無殘留追蹤資訊註解。 - `jsc-review:code-review` 六組壞味道審查兩輪:第一輪抓到三則中嚴重度(三處註解缺層級標記與步驟條列)與兩則低嚴重度(friday/week 重複的格式檢查邏輯、缺輸入輸出範例),全部修正後第二輪覆核 PASS(過程中另補上 usage() 說明漏掉 week 一行)。 - `jsc-review:api-doc` 以 `swagger-detect.sh` 判定 `plugins/log` 不支援 Swagger(結束碼 1),已跳過。 ## 前置 Push Request - 無
jiantw83 added 1 commit 2026-09-08 03:05:15 +00:00
因為 worklog 頁面內容是照週五整理的,需要一個能直接算出「這是當月第幾個工作週」
的指令,判斷基準是週五落在哪個月、當月第幾個週五,而不是 ISO 週次或週一所在月份。

新增 `worklog-target.sh week [基準日期 yyyy-MM-dd]`,重用既有 `friday`(週一加四天)
的邏輯算出週五日期,再往前推算當月第幾個週五,組成 `yyyy-MM-Wn` 格式輸出;同時把
`friday`/`week` 兩分支原本各自重複的基準日期格式檢查收進 `friday_of_week()` 內部,
消除重複程式碼,並補齊函式註解的層級標記、步驟條列與範例值,以及 usage() 說明中
原本漏掉的 week 用法。

已用 TDD 驗證跨月週與本週遞增兩種情境、跑過語法檢查與註解掃描,並經兩輪 code
review(六組壞味道)確認無殘留問題。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
admin merged commit 628dfc76bb into develop 2026-09-08 03:15:10 +00:00
admin deleted branch feat/worklog-target-week 2026-09-08 03:15:11 +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/log#38