From 0662a0bdd7c7c541551ca0288d6db5fb26b53309 Mon Sep 17 00:00:00 2001 From: kent Date: Sun, 21 Dec 2025 03:14:23 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[flow-tester]=20VariableBinder=EC=97=90?= =?UTF-8?q?=20HR=20=EA=B4=80=EB=A0=A8=20Faker=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - koreanName: 한글 이름 생성 (ko_KR locale 활용) - employeeCode: 사원코드 생성 (EMP-XXXXXX 형식) - departmentName: 부서명 랜덤 생성 - positionName: 직급명 랜덤 생성 - dateRange: 날짜 범위 내 랜덤 날짜 생성 HR Employees CRUD 테스트에서 지원하지 않는 Faker 타입으로 인한 422 오류 및 연쇄적인 405 오류 해결 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- app/Services/FlowTester/VariableBinder.php | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) 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 토큰 조회 */