feat(web): Phase 6.5c implement [Y/n] execution wiring
DualStateIncidentCard:
- Add proposalId prop for approval actions
- Add onApprovalChange callback for status updates
- Implement handleApprove() calling POST /api/v1/approvals/{id}/sign
- Implement handleReject() calling POST /api/v1/approvals/{id}/reject
- Add ButtonState management (idle/loading/approved/rejected/error)
- Loading spinner during API call
- Success state: green "已授權" / red "已拒絕"
- Error state: orange "錯誤" with auto-recovery
API Client:
- Fix endpoint mismatch: rename approveApproval to signApproval
- Use correct endpoint /sign instead of /approve
- Add signer parameter for multi-sig support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -114,13 +114,19 @@ export const apiClient = {
|
||||
}>(res)
|
||||
},
|
||||
|
||||
async approveApproval(approvalId: string, reason?: string) {
|
||||
const res = await fetch(`${API_BASE_URL}/approvals/${approvalId}/approve`, {
|
||||
async signApproval(approvalId: string, signer: string = 'commander', reason?: string) {
|
||||
const res = await fetch(`${API_BASE_URL}/approvals/${approvalId}/sign`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ reason }),
|
||||
body: JSON.stringify({ signer, reason }),
|
||||
})
|
||||
return handleResponse<{ id: string; status: string }>(res)
|
||||
return handleResponse<{
|
||||
approval_id: string
|
||||
status: string
|
||||
current_signatures: number
|
||||
required_signatures: number
|
||||
message: string
|
||||
}>(res)
|
||||
},
|
||||
|
||||
async rejectApproval(approvalId: string, reason?: string) {
|
||||
|
||||
Reference in New Issue
Block a user