Skip to content

審批一個 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橡皮章。一旦出事責任也是你(你簽的)
把高風險變更壓進凍結期違反 窗口政策,影響全公司
自核自己提的 Planworkspace 預設 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

相關

Argus — 公司內部資料庫變更審計平台