4 Commits
Author SHA1 Message Date
jiantw83andClaude Sonnet 5 deddd448a6 feat(log): worklog-target.sh 新增 week 子命令,輸出 yyyy-MM-Wn 工作週編號
因為 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>
2026-09-08 11:03:45 +08:00
jiantw83 1bec87b047 feat(tools): 報表彙總與工作週週五都交給腳本算
- What:新增 tools/log-aggregate.sh,把日誌頁彙總成報表數字;
  tools/worklog-target.sh 新增 friday 子命令,印出該工作週的週五。
- Why:彙總與日期原本只寫在技能散文裡,每次跑都靠模型自己數。
  四個條目只有一個填了花費時間時,模型容易把它攤到每一筆,得出一個沒人做過的工時。
  週五同理,跨月、跨年那一週用手算就會差一天。規則寫進程式,每次跑才會一樣。
- How:log-aggregate.sh 讀日誌條目的固定版型,依條目標題的日期取範圍內的條目,
  印出條目數、存取庫、花費時間、各 CLI 的 token 用量與狀態計數。
  「無資料不估算」寫死在程式裡:沒填時間的條目不進總和,只進 ELAPSED_MISSING;
  整段期間都沒有時間就印「無資料」,不印 0,因為 0 會被讀成「花了 0 分鐘」。
  friday 的週界向 report-range.sh weekly 取得,這裡只做「週一加四天」,不自己定義週的起點。
- Who:report 技能的數字彙總,worklog 技能的日誌頁週次。
2026-08-31 11:07:16 +08:00
jiantw83 b1a0418211 refactor(worklog): worklog-target.sh 改為接收已算好的 hash
什麼:tools/worklog-target.sh 不再自行重算 SHA-1,改為直接接收呼叫端算好的 hash 參數;skills/worklog/SKILL.md、README.md 同步更新呼叫方式與工具說明;plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 版本號由 0.0.3 升至 0.0.4。

為什麼:原本 worklog-target.sh 重複實作了共享的 SHA-1 wiki-hash 演算法,與 jsc-gitea/tools/hash-id 的邏輯重複,違反單一事實來源原則,也和 learn 技能已採用的正確呼叫模式不一致。

如何:移除腳本內建的 sha1sum/shasum 計算與 hash 前綴修正邏輯,改為直接使用傳入的 hash 參數組出 LOG_{HASH}、LOG_CONTENTS;SKILL.md 改為先呼叫 jsc-gitea/tools/hash-id 算出 HASH 再傳給 worklog-target.sh;輸出行為與結果不變。

誰:jsc-meta:skill-check 例行合規稽核(worklog 技能)。
2026-08-24 14:47:26 +08:00
jiantw83 f81da60d02 fix(worklog): 下放 LOG 目標頁計算並統一 hash 2026-08-21 16:53:17 +00:00