diff --git a/prompts/sdlc-report.md b/prompts/sdlc-report.md new file mode 100644 index 0000000..e2a9fca --- /dev/null +++ b/prompts/sdlc-report.md @@ -0,0 +1,91 @@ +name: sdlc-report +description: 僅由 /sdlc-report 指令叫用。產出本週、指定月份或指定年份的工時報表,只印在終端。 + +# sdlc-report + +把 Gitea 上的碼錶紀錄整理成一份可以直接在週會上使用的工時報表。 + +這份檔案是流程正本。各平台的轉接檔只是指回這裡,不要把規則抄過去。 + +## 輸入 + +- **repo** — `owner/name`。沒給就問,不要猜。 +- **期間** — 三選一,沒給就是本週: + - `--week` 本週一至今日(預設) + - `--month YYYY-MM` 指定月份,含 W1–W5 分段小計 + - `--year YYYY` 指定年份,以月份分段小計 + +## 步驟 + +### 1. 取數字 + +``` +node scripts/report.js --repo [--week | --month YYYY-MM | --year YYYY] +``` + +腳本回傳一行 JSON,裡面已經算好總計、分段小計與逐議題明細,**時分格式也一併算好了** +(`實際工時`、`落差工時`)。直接取用那些字串,不要自己再乘一次三千六百 —— 報表上的數字 +自己算錯,比沒有報表更糟。 + +要回頭補印過去的某一週,加 `--today YYYY-MM-DD` 指定「今天」是哪一天。 + +### 2. 套模板印出 + +套用 `templates/report.md`,佔位對應如下: + +- `{{期間}}` 期間標籤(`期間.標籤`) +- `{{範圍}}` 一行說明這份報表涵蓋哪個 repo、哪段日期、以幾小時當一人天 +- `{{實際工時}}`、`{{估算人天}}`、`{{已估實際}}`、`{{落差}}` 取自 `總計` +- `{{分段}}` 每個分段一列表格列;**週報沒有分段,連同「分段小計」標題整段不印**—— + markdown 表格只留表頭不留資料列,在終端上看起來像壞掉,不像「本來就沒有」 +- `{{議題}}` 每顆議題一列表格列,議題欄寫成指回該議題的連結 +- `{{附註}}` 見下方「怎麼讀落差」;沒有要提醒的就填「無」 + +報表**只印在終端**。不要張貼到議題、PR、聊天室或任何其他管道——這份要給誰看,是使用者的 +決定,不是這個流程的。 + +### 3. 回報 + +印完就結束。不要順手去改議題、不要替使用者補登漏掉的工時。 + +## 期間怎麼切 + +三句話,沒有例外: + +1. **一週為週一至週日。** +2. **跨月的那一週依「該週週五所屬月份」歸屬。** 一筆工時因此只會落在一個月裡, + 不會被前後兩個月各算一次。 +3. **W1–W5 指該週五是當月第幾個週五。** 當月有幾個週五就有幾段,有五個就排到 W5。 + +舉例:2026-01 的第一個週五是 01-02,所以 2025-12-29(週一)那天的工時算在 2026 年 1 月的 +W1;2026-02-01(週日)那天的工時,它那一週的週五是 01-30,所以算在 2026 年 1 月的 W5, +而不是 2 月。 + +年報同理:跨年的那一週也依週五歸屬,2025-12-29 的工時會出現在 2026 年的報表裡。 + +## 怎麼讀落差 + +落差 = 實際工時 − 估算。**正數代表超出估算,負數代表還有餘裕。** + +**總計的落差只涵蓋有估算的議題。** 分子是 `已估實際秒`(那些議題的實際工時)而不是 `實際秒` +(全部)——拿全部實際去比只有部分議題的估算,沒估算的工時會整批變成「超出估算」,落差就永遠 +是灌水的正數。報表上把 `實際工時` 與 `已估實際` 並排印出來,兩者差多少就是沒估算的部分有多大。 + +估算讀的是議題「關聯」段落裡的「估算人天」那一行。換算時一人天預設為 8 小時,團隊若不是 +這樣算,用 `--day-hours` 換掉。 + +有三件事要在 `{{附註}}` 裡講清楚,否則落差會被讀錯: + +- **沒寫估算的議題,落差是空的,不是零。** 輸出裡是 `null`;一顆估算都沒有時,總計的落差也是 + `null`,不要印成 0。 +- **工作包還沒做完時,落差本來就會是負的。** 估算是整顆工作包的,實際卻只是這段期間內的 + 那一部分;只有工作包在這段期間內收掉,兩者才真的可以比。 +- **`略過` 不為零時要說出來。** 那是查不到議題資訊的工時筆數,它們沒有被算進任何數字裡。 + +## 邊界 + +- 不張貼。報表只印在終端。 +- 不寫入 Gitea:不改議題、不補登工時、不動碼錶。腳本唯一的非 GET,是四層前置檢查打在不存在的 + 議題 0 上那支寫入權探針,它不改動任何東西。 +- 不替使用者決定跳過哪些日子。腳本只算實際記錄到的工時,不扣假日、不補上沒按碼錶的時間。 +- 不跨 repo 彙總。一次一個 repo,要看別的就再跑一次。 diff --git a/templates/report.md b/templates/report.md new file mode 100644 index 0000000..24229a4 --- /dev/null +++ b/templates/report.md @@ -0,0 +1,25 @@ +# 工時報表 {{期間}} + +{{範圍}} + +## 總計 + +| 實際工時 | 估算人天 | 已估實際 | 落差 | +| --- | --- | --- | --- | +| {{實際工時}} | {{估算人天}} | {{已估實際}} | {{落差}} | + +## 分段小計 + +| 段 | 起迄 | 實際工時 | +| --- | --- | --- | +{{分段}} + +## 逐議題 + +| 議題 | 標題 | 實際工時 | 估算人天 | 落差 | +| --- | --- | --- | --- | --- | +{{議題}} + +## 附註 + +{{附註}}