fix: 계약관리 API 응답 파싱 오류 수정

- Laravel ApiResponse 래퍼 구조 반영 ({ success, data })
- getContractList: response.data.data로 페이지네이션 데이터 접근
- getContractStats: response.data로 통계 데이터 접근
- getContractStageCounts: response.data로 단계별 건수 접근
- getContract/getContractDetail: response.data로 단건 데이터 접근
- createContract/updateContract: response.data로 생성/수정 결과 접근
This commit is contained in:
2026-01-20 09:27:37 +09:00
parent 8c8d76b6c3
commit 29c257c9f8

View File

@@ -215,23 +215,27 @@ export async function getContractList(filter?: ContractFilter): Promise<{
}
const response = await apiClient.get<{
data: ApiContract[];
current_page: number;
per_page: number;
total: number;
last_page: number;
success: boolean;
data: {
data: ApiContract[];
current_page: number;
per_page: number;
total: number;
last_page: number;
};
}>('/construction/contracts', { params: queryParams });
const items = (response.data || []).map(transformContract);
const paginatedData = response.data;
const items = (paginatedData.data || []).map(transformContract);
return {
success: true,
data: {
items,
total: response.total || 0,
page: response.current_page || 1,
size: response.per_page || 20,
totalPages: response.last_page || 1,
total: paginatedData.total || 0,
page: paginatedData.current_page || 1,
size: paginatedData.per_page || 20,
totalPages: paginatedData.last_page || 1,
},
};
} catch (error) {
@@ -250,14 +254,18 @@ export async function getContractStats(): Promise<{
error?: string;
}> {
try {
const response = await apiClient.get<ApiContractStats>('/construction/contracts/stats');
const response = await apiClient.get<{
success: boolean;
data: ApiContractStats;
}>('/construction/contracts/stats');
const statsData = response.data;
return {
success: true,
data: {
total: response.total_count || 0,
pending: response.pending_count || 0,
completed: response.completed_count || 0,
total: statsData.total_count || 0,
pending: statsData.pending_count || 0,
completed: statsData.completed_count || 0,
},
};
} catch (error) {
@@ -276,17 +284,21 @@ export async function getContractStageCounts(): Promise<{
error?: string;
}> {
try {
const response = await apiClient.get<ApiContractStageCount>('/construction/contracts/stage-counts');
const response = await apiClient.get<{
success: boolean;
data: ApiContractStageCount;
}>('/construction/contracts/stage-counts');
const stageData = response.data;
return {
success: true,
data: {
estimateSelected: response.estimate_selected || 0,
estimateProgress: response.estimate_progress || 0,
delivery: response.delivery || 0,
installation: response.installation || 0,
inspection: response.inspection || 0,
other: response.other || 0,
estimateSelected: stageData.estimate_selected || 0,
estimateProgress: stageData.estimate_progress || 0,
delivery: stageData.delivery || 0,
installation: stageData.installation || 0,
inspection: stageData.inspection || 0,
other: stageData.other || 0,
},
};
} catch (error) {
@@ -305,8 +317,10 @@ export async function getContract(id: string): Promise<{
error?: string;
}> {
try {
const response = await apiClient.get<ApiContract>(`/construction/contracts/${id}`);
return { success: true, data: transformContract(response) };
const response = await apiClient.get<{ success: boolean; data: ApiContract }>(
`/construction/contracts/${id}`
);
return { success: true, data: transformContract(response.data) };
} catch (error) {
console.error('계약 조회 오류:', error);
return { success: false, error: '계약 정보를 찾을 수 없습니다.' };
@@ -323,8 +337,10 @@ export async function getContractDetail(id: string): Promise<{
error?: string;
}> {
try {
const response = await apiClient.get<ApiContract>(`/construction/contracts/${id}`);
return { success: true, data: transformContractDetail(response) };
const response = await apiClient.get<{ success: boolean; data: ApiContract }>(
`/construction/contracts/${id}`
);
return { success: true, data: transformContractDetail(response.data) };
} catch (error) {
console.error('계약 상세 조회 오류:', error);
return { success: false, error: '계약 상세 정보를 불러오는데 실패했습니다.' };
@@ -342,8 +358,11 @@ export async function createContract(data: ContractFormData): Promise<{
}> {
try {
const apiData = transformToApiRequest(data);
const response = await apiClient.post<ApiContract>('/construction/contracts', apiData);
return { success: true, data: transformContract(response) };
const response = await apiClient.post<{ success: boolean; data: ApiContract }>(
'/construction/contracts',
apiData
);
return { success: true, data: transformContract(response.data) };
} catch (error) {
console.error('계약 등록 오류:', error);
return { success: false, error: '계약 등록에 실패했습니다.' };
@@ -364,8 +383,11 @@ export async function updateContract(
}> {
try {
const apiData = transformToApiRequest(data);
const response = await apiClient.put<ApiContract>(`/construction/contracts/${id}`, apiData);
return { success: true, data: transformContract(response) };
const response = await apiClient.put<{ success: boolean; data: ApiContract }>(
`/construction/contracts/${id}`,
apiData
);
return { success: true, data: transformContract(response.data) };
} catch (error) {
console.error('계약 수정 오류:', error);
return { success: false, error: '계약 수정에 실패했습니다.' };