diff --git a/app/Services/FlowTester/VariableBinder.php b/app/Services/FlowTester/VariableBinder.php index e54f65b5..6d756906 100644 --- a/app/Services/FlowTester/VariableBinder.php +++ b/app/Services/FlowTester/VariableBinder.php @@ -258,6 +258,15 @@ private function generateFakerValue(string $type, string $params): string 'unit' => $faker->randomElement(['EA', 'SET', 'BOX', 'KG', 'M', 'L', 'PCS']), 'category' => $faker->randomElement(['원자재', '부품', '반제품', '완제품', '소모품']), + // HR 관련 (별칭 포함) + 'koreanName' => $faker->name(), // ko_KR locale이므로 한글 이름 생성 + 'employeeCode' => $this->fakerEmployeeCode($paramList), + 'departmentName' => $faker->randomElement(['개발팀', '영업팀', '인사팀', '재무팀', '마케팅팀', '기획팀']), + 'positionName' => $faker->randomElement(['사원', '대리', '과장', '차장', '부장', '이사']), + + // 날짜 범위 지원 + 'dateRange' => $this->fakerDateRange($faker, $paramList), + default => "{{faker.{$type}}}", }; } @@ -323,6 +332,38 @@ private function fakerProductName(FakerGenerator $faker): string .$faker->numberBetween(100, 999); } + /** + * 사원코드 생성 (PREFIX-XXXXXX 형식) + * + * 사용법: {{$faker.employeeCode}} → EMP-123456 + * {{$faker.employeeCode:STAFF}} → STAFF-123456 + * {{$faker.employeeCode:EMP:8}} → EMP-12345678 + */ + private function fakerEmployeeCode(array $params): string + { + $prefix = $params[0] ?? 'EMP'; + $length = isset($params[1]) ? (int) $params[1] : 6; + + $digits = str_pad((string) random_int(0, (int) pow(10, $length) - 1), $length, '0', STR_PAD_LEFT); + + return $prefix.'-'.$digits; + } + + /** + * 날짜 범위 내 랜덤 날짜 생성 + * + * 사용법: {{$faker.dateRange:2024-01-01:2024-12-31}} + * {{$faker.dateRange:2024-01-01}} → 2024-01-01 ~ 오늘 + * {{$faker.dateRange}} → 최근 1년 내 + */ + private function fakerDateRange(FakerGenerator $faker, array $params): string + { + $startDate = $params[0] ?? date('Y-m-d', strtotime('-1 year')); + $endDate = $params[1] ?? date('Y-m-d'); + + return $faker->dateTimeBetween($startDate, $endDate)->format('Y-m-d'); + } + /** * 현재 로그인 사용자의 API 토큰 조회 */