From c5e396536833fbf506dd5408713fd0548b0a0221 Mon Sep 17 00:00:00 2001 From: hskwon Date: Tue, 2 Dec 2025 21:43:45 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=EC=BD=94=EB=93=9C=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20PM=20?= =?UTF-8?q?=EC=9E=84=ED=8F=AC=ED=8A=B8=20=EC=97=90=EB=9F=AC=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ImportController 파일 끝 줄바꿈 추가 - VariableBinder Pint 포맷팅 적용 - PM 임포트 API 에러 응답 처리 강화 --- .../ProjectManagement/ImportController.php | 2 +- app/Services/FlowTester/VariableBinder.php | 14 +++++----- .../views/project-management/import.blade.php | 26 +++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Api/Admin/ProjectManagement/ImportController.php b/app/Http/Controllers/Api/Admin/ProjectManagement/ImportController.php index d22fe234..eec46488 100644 --- a/app/Http/Controllers/Api/Admin/ProjectManagement/ImportController.php +++ b/app/Http/Controllers/Api/Admin/ProjectManagement/ImportController.php @@ -107,4 +107,4 @@ public function template(): JsonResponse 'data' => $this->importService->getSampleTemplate(), ]); } -} \ No newline at end of file +} diff --git a/app/Services/FlowTester/VariableBinder.php b/app/Services/FlowTester/VariableBinder.php index 21af9631..ac8450ea 100644 --- a/app/Services/FlowTester/VariableBinder.php +++ b/app/Services/FlowTester/VariableBinder.php @@ -222,7 +222,7 @@ private function generateFakerValue(string $type, string $params): string // 코드 생성 'code' => $this->fakerCode($paramList), 'itemCode' => $this->fakerItemCode($paramList), - 'sku' => 'SKU-' . strtoupper($faker->bothify('??###')), + 'sku' => 'SKU-'.strtoupper($faker->bothify('??###')), 'barcode' => $faker->ean13(), // 기타 @@ -273,7 +273,7 @@ private function fakerCode(array $params): string $digits = str_pad((string) random_int(0, (int) pow(10, $length) - 1), $length, '0', STR_PAD_LEFT); - return $prefix . $digits; + return $prefix.$digits; } /** @@ -284,7 +284,7 @@ private function fakerItemCode(array $params): string $prefix = $params[0] ?? 'ITEM'; $digits = str_pad((string) random_int(0, 999999), 6, '0', STR_PAD_LEFT); - return $prefix . '-' . $digits; + return $prefix.'-'.$digits; } /** @@ -296,10 +296,10 @@ private function fakerProductName(FakerGenerator $faker): string $types = ['부품', '자재', '모듈', '키트', '세트', '패키지']; $models = ['A', 'B', 'C', 'X', 'Y', 'Z', 'Pro', 'Plus', 'Max']; - return $faker->randomElement($prefixes) . ' ' - . $faker->randomElement($types) . ' ' - . $faker->randomElement($models) . '-' - . $faker->numberBetween(100, 999); + return $faker->randomElement($prefixes).' ' + .$faker->randomElement($types).' ' + .$faker->randomElement($models).'-' + .$faker->numberBetween(100, 999); } /** diff --git a/resources/views/project-management/import.blade.php b/resources/views/project-management/import.blade.php index 7e3f76ba..b1dff301 100644 --- a/resources/views/project-management/import.blade.php +++ b/resources/views/project-management/import.blade.php @@ -330,11 +330,24 @@ function loadFile(event) { method: 'POST', headers: { 'Content-Type': 'application/json', + 'Accept': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content, }, body: JSON.stringify(data), }); + if (!response.ok) { + const text = await response.text(); + try { + const errorJson = JSON.parse(text); + showError('검증 실패: ' + (errorJson.message || '서버 오류')); + return; + } catch { + showError(`서버 오류 (${response.status}): ${text.substring(0, 200)}`); + return; + } + } + const result = await response.json(); if (result.success) { @@ -381,11 +394,24 @@ function loadFile(event) { method: 'POST', headers: { 'Content-Type': 'application/json', + 'Accept': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content, }, body: JSON.stringify(data), }); + if (!response.ok) { + const text = await response.text(); + try { + const errorJson = JSON.parse(text); + showError('Import 실패: ' + (errorJson.message || '서버 오류')); + return; + } catch { + showError(`서버 오류 (${response.status}): ${text.substring(0, 200)}`); + return; + } + } + const result = await response.json(); if (result.success) {