diff --git a/apps/web/src/components/incident/dual-state-incident-card.tsx b/apps/web/src/components/incident/dual-state-incident-card.tsx index 2a2450b3..26854139 100644 --- a/apps/web/src/components/incident/dual-state-incident-card.tsx +++ b/apps/web/src/components/incident/dual-state-incident-card.tsx @@ -141,13 +141,17 @@ export const DualStateIncidentCard: React.FC = ({ 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) { diff --git a/apps/web/src/lib/api-client.ts b/apps/web/src/lib/api-client.ts index 817994a0..5305b41b 100644 --- a/apps/web/src/lib/api-client.ts +++ b/apps/web/src/lib/api-client.ts @@ -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) },