fix: 9b9ff5b 引發的 NoneAttr bug — incident_id 上移到 Base
bug: 'ApprovalRequestCreate' object has no attribute 'incident_id'
Live-fire #6 整個 webhook 500 fail。
根因: 9b9ff5b 在 approval_db 寫 request.incident_id,
但 ApprovalRequestCreate 繼承 Base 沒這 field(只在 ApprovalRequest 才有)。
修復: 把 incident_id 上移到 ApprovalRequestBase
- ApprovalRequestCreate 自動繼承 → webhook 可建帶 incident_id 的 request
- ApprovalRequest 不重複定義
- 786/786 回歸測試全過
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -140,6 +140,9 @@ class ApprovalRequestBase(BaseModel):
|
||||
requested_by: str = Field(..., description="請求發起者")
|
||||
expires_at: datetime | None = Field(default=None, description="到期時間")
|
||||
metadata: dict | None = Field(default=None, description="額外元資料")
|
||||
# 2026-04-14 Claude Sonnet 4.6: 上移 incident_id 到 Base,
|
||||
# 讓 ApprovalRequestCreate 也能攜帶(修 9b9ff5b 的 NoneAttr bug)
|
||||
incident_id: str | None = Field(default=None, description="關聯的 Incident ID")
|
||||
|
||||
|
||||
class ApprovalRequestCreate(ApprovalRequestBase):
|
||||
@@ -161,8 +164,7 @@ class ApprovalRequest(ApprovalRequestBase):
|
||||
fingerprint: str | None = Field(default=None, description="告警指紋 Hash")
|
||||
hit_count: int = Field(default=1, description="聚合觸發次數")
|
||||
last_seen_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc), description="最後觸發時間")
|
||||
# 2026-04-06 ogt: 關聯 Incident — 萃取 Playbook 與 KM 寫入必須知道 incident_id
|
||||
incident_id: str | None = Field(default=None, description="關聯的 Incident ID")
|
||||
# 2026-04-14 Claude Sonnet 4.6: incident_id 已移至 Base(避免 ApprovalRequestCreate 缺欄位)
|
||||
|
||||
@property
|
||||
def current_signatures(self) -> int:
|
||||
|
||||
Reference in New Issue
Block a user