feat(CEODashboard): Phase 4 - 카드/가지급금 관리 섹션 카드 API 연동
카드/가지급금 관리 섹션의 4개 카드(cm1~cm4)를 실제 API 데이터로 연동: - cm1: 카드 사용액 - CardTransaction API (기존) - cm2: 가지급금 - LoanDashboard API (신규 연동) - cm3: 법인세 예상 가중 - TaxSimulation API (신규 연동) - cm4: 대표자 종합세 예상 가중 - TaxSimulation API (신규 연동) 변경 사항: - transformCardManagementResponse: LoanDashboard, TaxSimulation 파라미터 추가 - useCEODashboard: 3개 API 병렬 호출 (Promise.all) - useCardManagement: 동일하게 다중 API 호출 적용 - 각 API 실패 시 fallback 데이터 사용 (graceful degradation)
This commit is contained in:
@@ -23,8 +23,15 @@ import type {
|
||||
WelfareApiResponse,
|
||||
WelfareDetailApiResponse,
|
||||
ExpectedExpenseDashboardDetailApiResponse,
|
||||
LoanDashboardApiResponse,
|
||||
TaxSimulationApiResponse,
|
||||
} from '@/lib/api/dashboard/types';
|
||||
|
||||
import {
|
||||
fetchLoanDashboard,
|
||||
fetchTaxSimulation,
|
||||
} from '@/lib/api/dashboard/endpoints';
|
||||
|
||||
import {
|
||||
transformDailyReportResponse,
|
||||
transformReceivableResponse,
|
||||
@@ -226,8 +233,18 @@ export function useCardManagement(fallbackData?: CardManagementData) {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
|
||||
const apiData = await fetchApi<CardTransactionApiResponse>('card-transactions/summary');
|
||||
const transformed = transformCardManagementResponse(apiData, fallbackData);
|
||||
// 3개 API 병렬 호출: 카드거래, 가지급금, 세금 시뮬레이션
|
||||
const [cardApiData, loanResponse, taxResponse] = await Promise.all([
|
||||
fetchApi<CardTransactionApiResponse>('card-transactions/summary'),
|
||||
fetchLoanDashboard(),
|
||||
fetchTaxSimulation(),
|
||||
]);
|
||||
|
||||
// LoanDashboard와 TaxSimulation은 ApiResponse wrapper가 있으므로 data 추출
|
||||
const loanData = loanResponse.success ? loanResponse.data : null;
|
||||
const taxData = taxResponse.success ? taxResponse.data : null;
|
||||
|
||||
const transformed = transformCardManagementResponse(cardApiData, loanData, taxData, fallbackData);
|
||||
setData(transformed);
|
||||
|
||||
} catch (err) {
|
||||
@@ -1028,8 +1045,21 @@ export function useCEODashboard(options: UseCEODashboardOptions = {}): CEODashbo
|
||||
try {
|
||||
setCardManagementLoading(true);
|
||||
setCardManagementError(null);
|
||||
const apiData = await fetchApi<CardTransactionApiResponse>('card-transactions/summary');
|
||||
setCardManagementData(transformCardManagementResponse(apiData, cardManagementFallback));
|
||||
|
||||
// 3개 API 병렬 호출: 카드거래, 가지급금, 세금 시뮬레이션
|
||||
const [cardApiData, loanResponse, taxResponse] = await Promise.all([
|
||||
fetchApi<CardTransactionApiResponse>('card-transactions/summary'),
|
||||
fetchLoanDashboard(),
|
||||
fetchTaxSimulation(),
|
||||
]);
|
||||
|
||||
// LoanDashboard와 TaxSimulation은 ApiResponse wrapper가 있으므로 data 추출
|
||||
const loanData = loanResponse.success ? loanResponse.data : null;
|
||||
const taxData = taxResponse.success ? taxResponse.data : null;
|
||||
|
||||
setCardManagementData(
|
||||
transformCardManagementResponse(cardApiData, loanData, taxData, cardManagementFallback)
|
||||
);
|
||||
} catch (err) {
|
||||
setCardManagementError(err instanceof Error ? err.message : '데이터 로딩 실패');
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user