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,