'존재하지 않는 URI 또는 데이터입니다.', // 404 일반 'tenant_id' => '활성 테넌트가 없습니다.', // 400 (Service::tenantId() 미설정) 'unauthenticated' => '인증에 실패했습니다.', // 401 'forbidden' => '요청에 대한 권한이 없습니다.', // 403 'bad_request' => '잘못된 요청입니다.', // 400 (검증 외 일반 케이스) // 검증/파라미터 'validation_failed' => '요청 데이터 검증에 실패했습니다.', // 422 'missing_parameter' => '필수 파라미터가 누락되었습니다.', // 400 // 리소스별 (선택: :resource 자리표시자 사용) 'not_found_resource' => ':resource 정보를 찾을 수 없습니다.', // 예: __('error.not_found_resource', ['resource' => '제품']) // 비즈니스 규칙 'duplicate' => '중복된 데이터가 존재합니다.', 'conflict' => '요청이 현재 상태와 충돌합니다.', // 409 'state_invalid' => '현재 상태에서는 처리할 수 없습니다.', // 409/400 // 서버 오류 'server_error' => '서버 처리 중 오류가 발생했습니다.', // 5xx 일반 // 견적 관련 에러 'estimate' => [ 'cannot_delete_sent_or_approved' => '발송되었거나 승인된 견적은 삭제할 수 없습니다.', 'invalid_status_transition' => '현재 상태에서는 변경할 수 없습니다.', ], // BOM 템플릿 관련 'bom_template' => [ 'not_found' => '적용 가능한 BOM 템플릿을 찾을 수 없습니다.', ], // 모델셋 관련 'modelset' => [ 'has_dependencies' => '연관된 제품 또는 하위 카테고리가 있어 삭제할 수 없습니다.', ], // 설정 관리 관련 'settings' => [ 'field_not_found' => '해당 필드 설정을 찾을 수 없습니다.', 'option_group_not_found' => '해당 옵션 그룹을 찾을 수 없습니다.', 'common_code_duplicate' => '중복된 공통 코드가 존재합니다.', 'invalid_field_type' => '유효하지 않은 필드 타입입니다.', ], // 자재 관리 관련 'materials' => [ 'not_found' => '자재 정보를 찾을 수 없습니다.', 'duplicate_code' => '중복된 자재 코드입니다.', 'in_use_cannot_delete' => '사용 중인 자재는 삭제할 수 없습니다.', ], // 파일 관리 관련 'file' => [ 'not_found' => '파일을 찾을 수 없습니다.', 'upload_failed' => '파일 업로드에 실패했습니다.', 'invalid_file_type' => '허용되지 않는 파일 형식입니다.', 'file_too_large' => '파일 크기가 너무 큽니다.', ], // 가격 관리 관련 'price_not_found' => ':item_type ID :item_id 항목의 :date 기준 매출단가를 찾을 수 없습니다.', ];