--- name: pre-commit-check description: commit 前執行格式化檢查與靜態分析,自動修復可修的錯誤 --- 先讀 [AI 檢核與人工審核共用流程](../../docs/ai-human-review-workflow.md),依當前客戶端可用工具執行;先完成適用檢核與修訂,再交人審核決策。 # Pre-Commit Check commit 前的品質檢查。發現錯誤時先嘗試自動修復,修不了的再報告給使用者。 先確認 staged 範圍與相關未提交差異;只修本次授權檔案,格式工具會改其他檔案時改用可限制路徑的方式。驗證後 diff 有改變就重跑受影響檢查,不把舊版本結果當新版本通過。 ## 步驟 0:判斷指令入口(依 repo 而異) - 有 `Makefile`(daodao-ai-backend、daodao-admin-ui)→ 用 `make check` / `make format` / `make lint` - pnpm/npm 專案(daodao-f2e、daodao-server、daodao-worker 等)→ 用 package.json scripts: `pnpm format:check` / `pnpm format` / `pnpm lint` / `pnpm typecheck`(以該 repo 實際存在的 script 為準,先 `rg '"scripts"' -A 15 package.json` 確認) - monorepo root(無 Makefile)→ 只跑 `pnpm vitest run bin/`(如有變更 bin/) ## 步驟 1:執行格式化檢查 1. 執行格式檢查(`make check` 或 `pnpm format:check`) 2. 如果有錯誤,執行自動修復(`make format` 或 `pnpm format`) 3. 再次執行檢查確認 4. 仍有錯誤 → 讀取錯誤訊息,手動修復對應檔案 ## 步驟 2:執行靜態分析 1. 執行 lint(`make lint` 或 `pnpm lint`;TS 專案加跑 `pnpm typecheck`) 2. 如果有錯誤 → 讀取錯誤訊息,逐一修復 3. 修復後重新執行確認 ## 步驟 3:執行變更對應的驗證(依類型對照,沒跑過不准 commit) format/lint 過了 ≠ 行為對了。依 staged 變更的類型跑對應驗證: | 變更類型 | 必跑驗證 | |---|---| | 有對應測試的程式碼(`__tests__/`、`*.test.*` 存在或同 PR 新增) | 跑該測試套件(如 `pnpm vitest run