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) {