From e1d0681f5545b8848c537d1e0c76b150ed31dfbb Mon Sep 17 00:00:00 2001 From: kent Date: Tue, 30 Dec 2025 15:06:52 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B2=B0=EC=9E=AC=EC=84=A0=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=20=EA=B2=B0=EC=9E=AC=EC=9E=90=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - createApprovalSteps()에서 동일한 결재자가 여러 번 추가된 경우 첫 번째만 저장 - 에러 발생 대신 자동으로 중복 필터링하여 처리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- app/Services/ApprovalService.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Services/ApprovalService.php b/app/Services/ApprovalService.php index 29df180..4cadce7 100644 --- a/app/Services/ApprovalService.php +++ b/app/Services/ApprovalService.php @@ -1011,10 +1011,13 @@ private function generateDocumentNumber(int $tenantId): string /** * 결재 단계 생성 * 프론트엔드 호환성: step_type/approver_id 또는 type/user_id 지원 + * 중복 결재자 자동 제거 */ private function createApprovalSteps(Approval $approval, array $steps): void { $order = 1; + $processedApprovers = []; // 중복 체크용 + foreach ($steps as $step) { // 필드명 호환성: step_type 또는 type $stepType = $step['step_type'] ?? $step['type'] ?? null; @@ -1024,6 +1027,12 @@ private function createApprovalSteps(Approval $approval, array $steps): void $stepOrder = $step['step_order'] ?? $order++; if ($stepType && $approverId) { + // 동일 결재자 중복 건너뛰기 + if (in_array($approverId, $processedApprovers, true)) { + continue; + } + $processedApprovers[] = $approverId; + ApprovalStep::create([ 'approval_id' => $approval->id, 'step_order' => $stepOrder,