Appearance
審批一個 issue
何時用這份文件 Argus 把一個 Issue 派給你審批,你想知道審批的標準作業 — 看什麼、問什麼、什麼情況該駁回。
前置條件
- 你的角色包含相應審批 role(多半是
projectOwner/workspaceDBA/ 自訂 reviewer role) - 你能讀懂 SQL(不理解 SQL 的審批 = 橡皮章 = 無意義)
60 秒快速審批清單
走完這 60 秒,多數 issue 已經能下決定。
- [ ] 目標環境是什麼?(dev / staging / prod 風險係數不同)
- [ ] 變更類型?(DDL / DML / SDL)
- [ ] Plan Check 結果?(全綠 / 有 warning / 有 error override)
- [ ] 影響範圍?(plan check 估算的 row 數 / 表)
- [ ] 變更內容是不是它聲稱要做的事?(SQL 與 title 一致)
- [ ] 有沒有回滾計畫?
任一項打勾不下去 → 不要批,回 Issue 留 comment 問。
詳細審視
1. 讀 Issue 描述
好的 Issue 描述包含:
- 背景(為什麼這個變更必須做)
- 影響範圍(哪些服務、預估時長、是否停機)
- 回滾計畫
- 驗證計畫
缺哪一項 → 在 comment 上要求補。
2. 讀 Plan SQL
點開 Plan → 看完整 SQL。確認:
| 問題 | 看什麼 |
|---|---|
| SQL 跟 title 一致嗎? | 例:title 說「加索引」,SQL 卻多了 drop column → 駁回 |
| 寫法是不是 production-safe? | 大表 → 有沒有 CONCURRENTLY、有沒有分批 |
| 有沒有顯而易見的錯誤? | typo、缺 WHERE、誤刪、誤 truncate |
| 命名規範? | snake_case、長度、是否含敏感字眼 |
| 影響 row 數合理嗎? | plan check 估算與你心中預期相差太大 → 問 |
3. 讀 Plan Check 結果
| 結果 | 你要做什麼 |
|---|---|
| 全綠 | 進下一步 |
| Warning | 逐項看;判斷可接受才繼續 |
| Error(已 override) | 強烈 仔細看 override 理由;不接受 → 駁回 |
4. 比對歷史
- 同個 DB 最近有沒有相似變更?是否衝突 / 重複?
- 提交者最近的變更歷史 — 是否常被駁回?是否最近有相關事故?
不是針對人,是看上下文。
5. 高風險判斷
任一條件成立 → 視同高風險:
- 目標 =
prod且為 DDL - 大表(>10M rows)動作
- 不可逆(drop / truncate)
- 跨服務 contract change
- 大促 / 凍結期間
→ 詳見 高風險變更的判斷準則 與 高風險變更窗口
動作
Approve
確認以上都沒問題 → 點 Approve。寫一句話說明你看了什麼、為何接受:
Approve. Reviewed SQL + plan check. DDL on prod.orders with CONCURRENTLY,
estimated 5 min, rollback by DROP INDEX. 安排在週四常規窗口執行。寫一句話的成本很低,但事後追溯時是黃金。
Reject
如果你決定駁回,必填具體理由:
Reject:
1. SQL 含 DROP COLUMN,但 issue title 只說「加索引」。
2. plan check error override 理由不足(只說「等不及」)。
3. 缺回滾計畫。
請拆成兩個 Plan、補 override 理由與回滾 SQL。不要寫「不行」「再想想」這種無資訊量回覆。
Request Change(comment)
如果只是需要小修 → 不必 Reject,留 comment 要求修改即可。提交者改完會自動觸發新的 plan check,你會被重新通知。
不要做的事
| 反模式 | 為什麼 |
|---|---|
| 沒看 SQL 就 approve | 橡皮章。一旦出事責任也是你(你簽的) |
| 把高風險變更壓進凍結期 | 違反 窗口政策,影響全公司 |
| 自核自己提的 Plan | workspace 預設 disallow_self_approval = true(Argus P0-1) |
| 看到 plan check error override 就批 | override 是技術債,逐次降低標準 = 整個審批機制空轉 |
| 為了趕時間,跳審批流程 | 沒有「就這一次」這種事 |
寫進 audit log
每個 approve / reject / comment 動作都會寫 audit log:
bb.issue.approve(含approval_step、你留的訊息)bb.issue.reject(含理由)bb.issue.comment
詳見 Audit Log。
相關
- 概念:審批流程、Plan Check
- 標準:高風險變更的判斷準則
- 窗口:高風險變更窗口
- 稽核:Audit Log