From 7db42ffdac133cfc56ebf1fc2128fe233414d1b7 Mon Sep 17 00:00:00 2001 From: OG T Date: Mon, 23 Mar 2026 21:20:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(web):=20Y=E6=8C=89=E9=88=95=E7=B0=BD?= =?UTF-8?q?=E6=A0=B8=E5=9B=9E=E6=87=89=E8=A7=A3=E6=9E=90=E9=8C=AF=E8=AA=A4?= =?UTF-8?q?=20-=20result.status=20=E2=86=92=20result.approval.status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: API 回傳 {approval: {status: 'approved'}} 但前端誤檢查 result.status 修復: - dual-state-incident-card.tsx: 正確解析 result.approval.status - api-client.ts: 更新回傳型別與後端對齊 Co-Authored-By: Claude Opus 4.5 --- .../incident/dual-state-incident-card.tsx | 8 ++++++-- apps/web/src/lib/api-client.ts | 13 +++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) 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) },