fix(web): Y按鈕簽核回應解析錯誤 - result.status → result.approval.status

根因: API 回傳 {approval: {status: 'approved'}} 但前端誤檢查 result.status

修復:
- dual-state-incident-card.tsx: 正確解析 result.approval.status
- api-client.ts: 更新回傳型別與後端對齊

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-23 21:20:41 +08:00
parent 4c41a6728f
commit 7db42ffdac
2 changed files with 15 additions and 6 deletions

View File

@@ -141,13 +141,17 @@ export const DualStateIncidentCard: React.FC<DualStateIncidentCardProps> = ({
timeoutRef.current = null
}
if (result.status === 'approved' || result.status === 'APPROVED') {
// 🔧 Fix: 正確檢查 result.approval.status (非 result.status)
const approvalStatus = result.approval?.status?.toLowerCase()
if (approvalStatus === 'approved') {
setButtonState('approved')
console.log('🎯 授權成功,觸發 onApprovalChange')
onApprovalChange?.(approvalId, 'approved')
} else {
// Multi-sig: 還需要更多簽核
console.log('🔐 Multi-sig 等待中,目前簽核:', result.current_signatures, '/', result.required_signatures)
const current = result.approval?.current_signatures ?? result.current_signatures ?? 0
const required = result.approval?.required_signatures ?? result.required_signatures ?? 1
console.log('🔐 Multi-sig 等待中,目前簽核:', current, '/', required)
setButtonState('idle')
}
} catch (error) {

View File

@@ -124,12 +124,17 @@ export const apiClient = {
comment: comment,
}),
})
// 🔧 Fix: 回傳型別與後端實際結構對齊
return handleResponse<{
approval_id: string
status: string
current_signatures: number
required_signatures: number
success: boolean
message: string
approval: ApprovalResponse
execution_triggered: boolean
// 向下相容舊欄位 (deprecated)
approval_id?: string
status?: string
current_signatures?: number
required_signatures?: number
}>(res)
},