diff --git a/apps/api/src/services/approval_db.py b/apps/api/src/services/approval_db.py index b7a22c71..11cec470 100644 --- a/apps/api/src/services/approval_db.py +++ b/apps/api/src/services/approval_db.py @@ -682,9 +682,11 @@ class ApprovalDBService: if status is not None: query = query.where(ApprovalRecord.status == status) - # Incident ID 篩選 (從 extra_metadata JSON 欄位) - # NOTE: 這是基於 JSON 欄位查詢,效能可能受影響 - # 若有效能問題,考慮新增 incident_id 欄位到 ApprovalRecord + # 2026-04-09 Claude Sonnet 4.6: 修復 incident_id 篩選 — 直接用 DB 欄位 + # 舊版在應用層查 a.metadata.get("incident_id") 但 ApprovalRecord.incident_id + # 是直接欄位,不在 extra_metadata JSON 裡,導致 telegram_approval_not_found_by_incident + if incident_id: + query = query.where(ApprovalRecord.incident_id == incident_id) query = query.order_by(ApprovalRecord.created_at.desc()) query = query.offset(offset).limit(limit) @@ -694,13 +696,6 @@ class ApprovalDBService: approvals = [approval_record_to_request(r) for r in records] - # 若有 incident_id 篩選,在應用層過濾 - if incident_id: - approvals = [ - a for a in approvals - if a.metadata and a.metadata.get("incident_id") == incident_id - ] - return approvals