更新版本號至 0.2.0 並補強 code-review-resolve 盤點規則 #35

Merged
admin merged 2 commits from develop into master 2026-07-11 12:10:22 +00:00
Showing only changes of commit 707e0a5f2f - Show all commits
+10 -5
View File
@@ -12,7 +12,7 @@ argument-hint: "[--findings <findings.json 路徑>] [--target <目標分支>] [-
| --- | --- | | --- | --- |
| A. Git 同步 | `git fetch` → 當前分支不在遠端則切換 develop(再退而 master)→ `git pull`/必要時解衝突 → 只有來源分支與 PR 目標分支相同時才建立新工作分支 | | A. Git 同步 | `git fetch` → 當前分支不在遠端則切換 develop(再退而 master)→ `git pull`/必要時解衝突 → 只有來源分支與 PR 目標分支相同時才建立新工作分支 |
| B. 解決問題 | 讀 `findings.json` / `exclusions.json` → 依等級 🔴→🟠→🟡→🔵 逐條修復或判斷誤報 → 已解決者自 `findings.json` 移除,誤報寫入 `exclusions.json` 後也可移除;**無待處理問題則跳到階段 D** | | B. 解決問題 | 讀 `findings.json` / `exclusions.json` → 依等級 🔴→🟠→🟡→🔵 逐條修復或判斷誤報 → 已解決者自 `findings.json` 移除,誤報寫入 `exclusions.json` 後也可移除;**無待處理問題則跳到階段 D** |
| C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含 findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit | | C. 分類提交 | 必須分析並涵蓋工作區所有變更(已修改/新增/刪除/改名,含已暫存與未暫存、未追蹤檔、findings/exclusions 更新)→ 依 feat/fix/docs/style/refactor/perf/test/chore/revert 分組 → 各組一個 commit |
| D. Push 當前分支 | 認證管理器 → 失敗改 token → 再失敗詢問使用者;**無 commit 可 push 則跳到階段 E** | | D. Push 當前分支 | 認證管理器 → 失敗改 token → 再失敗詢問使用者;**無 commit 可 push 則跳到階段 E** |
| E. 發出 PR | 確定目標分支(不明必問)→ 選 PR 描述(完整/簡單/自訂)→ token 呼叫 Gitea API 建 PR → 通知並清除內文 | | E. 發出 PR | 確定目標分支(不明必問)→ 選 PR 描述(完整/簡單/自訂)→ token 呼叫 Gitea API 建 PR → 通知並清除內文 |
@@ -237,16 +237,17 @@ canonical 等級為 `critical` / `warning` / `info`;其他寫法容錯對應
### C1. 盤點工作區變更 ### C1. 盤點工作區變更
```bash ```bash
git status --porcelain git status --porcelain=v1 -uall
git diff # 已追蹤檔的未暫存變更 git diff # 已追蹤檔的未暫存變更
git diff --staged # 已暫存變更 git diff --staged # 已暫存變更
git ls-files --others --exclude-standard # 未追蹤檔
``` ```
涵蓋**所有**變更:已修改、新增未追蹤)、刪除、改名。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。 盤點時必須以 `git status --porcelain=v1 -uall` 為主,不可只看 `git diff`,因為那會漏掉未追蹤檔。盤點範圍必須包含**所有**變更:已修改、新增檔(`??` 未追蹤)、刪除、改名檔,以及已暫存與未暫存變更。`git diff`、`git diff --staged`、`git ls-files --others --exclude-standard` 只作為輔助核對。**無任何變更** → 回報「工作區無變更可提交」,跳過提交直接進入階段 D(D 會因無 commit 可 push 而跳到階段 E)。
### C2. 依異動內容歸類 conventional commit 類型 ### C2. 依異動內容歸類 conventional commit 類型
逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一: 逐一檢視每個變更檔的**實際異動內容**(不只看路徑),歸入下列其一**所有 `??` 未追蹤檔都必須納入分類**,不能因為它們不在 `git diff` 裡就漏掉
| type | 適用情境 | | type | 適用情境 |
| --- | --- | | --- | --- |
@@ -262,10 +263,11 @@ git diff --staged # 已暫存變更
- **同一檔案橫跨多型** → 以該檔**主要異動性質**歸類;難以拆分時就近歸入影響最大的一類,並在總結註記。 - **同一檔案橫跨多型** → 以該檔**主要異動性質**歸類;難以拆分時就近歸入影響最大的一類,並在總結註記。
- **階段 B 修復產生的變更**:依其性質歸類(修 bug→`fix`、補功能→`feat`、改文件→`docs`…)。`findings.json` / `exclusions.json` 的問題狀態更新歸 `chore`。 - **階段 B 修復產生的變更**:依其性質歸類(修 bug→`fix`、補功能→`feat`、改文件→`docs`…)。`findings.json` / `exclusions.json` 的問題狀態更新歸 `chore`。
- **未追蹤新檔**:必須照實際內容歸入對應 type,必要時在提交前明確 `git add -- <path>`,不可因為是新檔就略過。
### C3. 產出提交計畫 ### C3. 產出提交計畫
把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;除非使用者要求確認或分組有不可忽略的取捨,否則直接提交: 把變更檔依 type 分組,**每個 type 一個 commit**,輸出提交計畫;**所有變更項目都必須被追蹤並納入計畫,不能遺漏任何 `??` 未追蹤檔**。除非使用者要求確認或分組有不可忽略的取捨,否則直接提交:
| 順序 | type(範圍) | commit 訊息 | 納入檔案 | | 順序 | type(範圍) | commit 訊息 | 納入檔案 |
| --- | --- | --- | --- | | --- | --- | --- | --- |
@@ -280,6 +282,7 @@ git diff --staged # 已暫存變更
- `一句總結`:把這個 commit 內所有異動**總結成一句**繁體中文(簡短、聚焦做了什麼)。 - `一句總結`:把這個 commit 內所有異動**總結成一句**繁體中文(簡短、聚焦做了什麼)。
- 範例:`feat(使用者登入): 新增帳密登入與 token 簽發`、`fix(結帳流程): 修正空購物車導致的結帳例外`、`perf(物件查詢): 改用批次查詢降低 DB 往返`、`docs(README): 補上安裝與呼叫方式說明`、`chore(ai-review 狀態): 更新 findings.json 與 exclusions.json`。 - 範例:`feat(使用者登入): 新增帳密登入與 token 簽發`、`fix(結帳流程): 修正空購物車導致的結帳例外`、`perf(物件查詢): 改用批次查詢降低 DB 往返`、`docs(README): 補上安裝與呼叫方式說明`、`chore(ai-review 狀態): 更新 findings.json 與 exclusions.json`。
- **提交順序建議**`fix`/`feat` 等核心異動在前,`docs`/`style`/`chore` 在後(純屬建議,可依相依性調整)。 - **提交順序建議**`fix`/`feat` 等核心異動在前,`docs`/`style`/`chore` 在後(純屬建議,可依相依性調整)。
- **盤點要求**:提交計畫必須完整對應 C1 盤點出的所有變更項目,若有新檔或未追蹤檔,必須明確列入對應 commit,不能只根據 `git diff` 下結論。
### C4. 執行分類提交 ### C4. 執行分類提交
@@ -292,6 +295,8 @@ git commit -m "type(範圍): 一句總結" # 範圍=實際異動的功能/
- **逐組 addcommit**,確保每個 commit 只含該類異動;不要一次 `git add -A` 再混在一起。 - **逐組 addcommit**,確保每個 commit 只含該類異動;不要一次 `git add -A` 再混在一起。
- 改名/刪除檔一併納入對應組的 `git add``git add -A -- <路徑>` 或明確列出)。 - 改名/刪除檔一併納入對應組的 `git add``git add -A -- <路徑>` 或明確列出)。
- **所有 `??` 未追蹤檔都必須納入提交**;若是新檔,必要時要明確執行 `git add -- <path>`,不可漏掉。
- **不可只根據 `git diff` 判斷變更**;C1 盤點出的所有異動都必須反映到分類與提交,否則視為提交計畫不完整。
- commit 完成後進入階段 Dpush)。`--no-commit` 時不進入後續階段;若工作區無變更而沒有產生任何新 commit,仍進入階段 D,由 D 判斷無 commit 可 push 後跳到階段 E。 - commit 完成後進入階段 Dpush)。`--no-commit` 時不進入後續階段;若工作區無變更而沒有產生任何新 commit,仍進入階段 D,由 D 判斷無 commit 可 push 後跳到階段 E。
--- ---