From d1ed374acffc8c3e1b8776ccd7d5f0a9a1879116 Mon Sep 17 00:00:00 2001 From: kent Date: Mon, 29 Dec 2025 15:34:42 +0900 Subject: [PATCH] =?UTF-8?q?fix(SAM/API):=20=EB=8D=94=EB=AF=B8=20=EC=8B=9C?= =?UTF-8?q?=EB=8D=94=20=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=20?= =?UTF-8?q?=EB=A7=A4=EC=B9=AD=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DummySaleSeeder: 클라이언트 이름 매칭 실패 시 기존 클라이언트 랜덤 선택 - DummyPurchaseSeeder: 동일한 fallback 로직 추가 - 거래처 없을 경우 조기 반환 처리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../seeders/Dummy/DummyPurchaseSeeder.php | 20 ++++++++++++++++--- database/seeders/Dummy/DummySaleSeeder.php | 20 ++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/database/seeders/Dummy/DummyPurchaseSeeder.php b/database/seeders/Dummy/DummyPurchaseSeeder.php index 2b7fb22..ae3ef62 100644 --- a/database/seeders/Dummy/DummyPurchaseSeeder.php +++ b/database/seeders/Dummy/DummyPurchaseSeeder.php @@ -24,8 +24,15 @@ public function run(): void // 거래처 매핑 (PURCHASE, BOTH만) $clients = Client::where('tenant_id', $tenantId) ->whereIn('client_type', ['PURCHASE', 'BOTH']) - ->get() - ->keyBy('name'); + ->get(); + + if ($clients->isEmpty()) { + $this->command->warn(' ⚠ purchases: 매입 거래처 없음 (스킵)'); + return; + } + + $clientsByName = $clients->keyBy('name'); + $clientIds = $clients->pluck('id')->toArray(); $clientNames = [ '한화솔루션', '포스코', '롯데케미칼', 'GS칼텍스', '대한항공', @@ -53,7 +60,14 @@ public function run(): void $day = max(1, min($day, $daysInMonth)); $clientName = $clientNames[($count) % count($clientNames)]; - $client = $clients->get($clientName); + $client = $clientsByName->get($clientName); + + // 이름 매칭 실패 시 기존 클라이언트 중 랜덤 선택 + if (!$client) { + $clientId = $clientIds[array_rand($clientIds)]; + $client = $clients->firstWhere('id', $clientId); + $clientName = $client->name; + } $rand = rand(1, 100); if ($rand <= 30) { diff --git a/database/seeders/Dummy/DummySaleSeeder.php b/database/seeders/Dummy/DummySaleSeeder.php index 64806db..1eab371 100644 --- a/database/seeders/Dummy/DummySaleSeeder.php +++ b/database/seeders/Dummy/DummySaleSeeder.php @@ -24,8 +24,15 @@ public function run(): void // 거래처 매핑 (SALES, BOTH만) $clients = Client::where('tenant_id', $tenantId) ->whereIn('client_type', ['SALES', 'BOTH']) - ->get() - ->keyBy('name'); + ->get(); + + if ($clients->isEmpty()) { + $this->command->warn(' ⚠ sales: 매출 거래처 없음 (스킵)'); + return; + } + + $clientsByName = $clients->keyBy('name'); + $clientIds = $clients->pluck('id')->toArray(); $clientNames = [ '삼성전자', 'LG전자', 'SK하이닉스', '현대자동차', '네이버', @@ -54,7 +61,14 @@ public function run(): void $day = max(1, min($day, $daysInMonth)); $clientName = $clientNames[($count) % count($clientNames)]; - $client = $clients->get($clientName); + $client = $clientsByName->get($clientName); + + // 이름 매칭 실패 시 기존 클라이언트 중 랜덤 선택 + if (!$client) { + $clientId = $clientIds[array_rand($clientIds)]; + $client = $clients->firstWhere('id', $clientId); + $clientName = $client->name; + } // 금액 결정 $rand = rand(1, 100);