diff --git a/.gitignore b/.gitignore index d326915..b2d5fbb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,10 @@ Thumbs.db .env .env.* !.env.example + +# Local Android/ADB state +.android-adb/ +.tools/ + +# Local Docker Flutter caches +.docker-cache/ diff --git a/README.md b/README.md index 83d967d..af7ed97 100644 --- a/README.md +++ b/README.md @@ -63,5 +63,13 @@ Docker로 Flutter를 실행하는 경우: ## 주요 문서 -- [신규 앱 개발 판단 문서](docs/tdc114plus-development-decision-brief-2026-07-01.md) -- [개발환경 구성 작업순서](docs/tdc114plus-development-environment-setup-plan-2026-07-02.md) +- [신규 앱 개발 판단 문서](docs/guide_tdc114plus_development_decision_brief_2026-07-01.md) +- [개발환경 구성 작업순서](docs/dev_env_tdc114plus_setup_plan_2026-07-02.md) +- [TDC114PLUS auth broker redirect flow](docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md) +- [tdc114plus-auth 저장소 운영 정책](docs/00_policy_tdc114plus_auth_repo_2026-07-15.md) +- [tdc114plus-auth 운영/커밋 정책](docs/00_policy_tdc114plus_auth_operations_2026-07-15.md) + +## 관련 저장소 + +- `tdc114plus` 앱 저장소: `https://gitea.hmac.kr/kevin/tdc114plus.git` +- `tdc114plus-auth` 공식 중계서버 저장소: `https://gitea.hmac.kr/kevin/tdc114plus-auth.git` diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml index 5891aec..00c887f 100644 --- a/app/android/app/src/main/AndroidManifest.xml +++ b/app/android/app/src/main/AndroidManifest.xml @@ -2,7 +2,8 @@ + android:icon="@mipmap/ic_launcher" + android:usesCleartextTraffic="true"> main() async { WidgetsFlutterBinding.ensureInitialized(); - runApp(const ProviderScope(child: Tdc114PlusApp())); + runApp(const _BootstrapApp()); } + +class _BootstrapApp extends StatefulWidget { + const _BootstrapApp(); + + @override + State<_BootstrapApp> createState() => _BootstrapAppState(); +} + +class _BootstrapAppState extends State<_BootstrapApp> { + late final Future _bootstrapFuture; + + @override + void initState() { + super.initState(); + _bootstrapFuture = _seedSmokeSessionIfConfigured(); + } + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: _bootstrapFuture, + builder: (context, snapshot) { + if (snapshot.connectionState != ConnectionState.done) { + return MaterialApp( + debugShowCheckedModeBanner: false, + home: Scaffold( + body: SafeArea( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: const [ + CircularProgressIndicator(), + SizedBox(height: 16), + Text('앱을 준비하고 있습니다...'), + ], + ), + ), + ), + ), + ); + } + + if (snapshot.hasError) { + return MaterialApp( + debugShowCheckedModeBanner: false, + home: Scaffold( + body: SafeArea( + child: Center( + child: Padding( + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Text('앱 시작 중 문제가 발생했습니다.'), + const SizedBox(height: 12), + Text('${snapshot.error}', textAlign: TextAlign.center), + ], + ), + ), + ), + ), + ), + ); + } + + return ProviderScope( + overrides: useSmokeMockDirectory + ? [smokeDirectoryOverride, smokeOrganizationOverride] + : const [], + child: const Tdc114PlusApp(), + ); + }, + ); + } +} + +Future _seedSmokeSessionIfConfigured() async { + if (_preauthToken.isEmpty || + _preauthExpiresAt.isEmpty || + _preauthUserId.isEmpty || + _preauthUserName.isEmpty || + _preauthUserPhone.isEmpty || + _preauthTenantId.isEmpty || + _preauthTenantName.isEmpty || + _preauthTenantSlug.isEmpty) { + return; + } + + final expiresAt = DateTime.tryParse(_preauthExpiresAt); + if (expiresAt == null) { + return; + } + + await const AuthSessionStore().save( + PhoneLoginResponse( + status: 'ok', + token: _preauthToken, + expiresAt: expiresAt, + user: LoginUser( + id: _preauthUserId, + name: _preauthUserName, + phoneNumber: _preauthUserPhone, + tenantId: _preauthTenantId, + tenantName: _preauthTenantName, + tenantSlug: _preauthTenantSlug, + department: _valueOrNull(_preauthDepartment), + grade: _valueOrNull(_preauthGrade), + position: _valueOrNull(_preauthPosition), + jobTitle: _valueOrNull(_preauthJobTitle), + ), + ), + ); +} + +String? _valueOrNull(String value) => value.trim().isEmpty ? null : value; diff --git a/app/lib/src/app.dart b/app/lib/src/app.dart index 6022863..e6efcd6 100644 --- a/app/lib/src/app.dart +++ b/app/lib/src/app.dart @@ -14,7 +14,7 @@ class Tdc114PlusApp extends StatelessWidget { colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF006D77)), useMaterial3: true, ), - routerConfig: appRouter, + routerConfig: createAppRouter(), ); } } diff --git a/app/lib/src/core/actions/contact_launcher.dart b/app/lib/src/core/actions/contact_launcher.dart new file mode 100644 index 0000000..096ea96 --- /dev/null +++ b/app/lib/src/core/actions/contact_launcher.dart @@ -0,0 +1,60 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:url_launcher/url_launcher.dart'; + +abstract class ContactLauncher { + const ContactLauncher(); + + Future call(String phoneNumber); + + Future sms(String phoneNumber); +} + +class UrlLauncherContactLauncher implements ContactLauncher { + const UrlLauncherContactLauncher(); + + @override + Future call(String phoneNumber) async { + final uri = buildCallUri(phoneNumber); + if (uri == null) { + return false; + } + return launchUrl(uri); + } + + @override + Future sms(String phoneNumber) async { + final uri = buildSmsUri(phoneNumber); + if (uri == null) { + return false; + } + return launchUrl(uri); + } +} + +Uri? buildCallUri(String phoneNumber) { + final normalized = _normalizePhoneNumber(phoneNumber); + if (normalized == null) { + return null; + } + return Uri(scheme: 'tel', path: normalized); +} + +Uri? buildSmsUri(String phoneNumber) { + final normalized = _normalizePhoneNumber(phoneNumber); + if (normalized == null) { + return null; + } + return Uri(scheme: 'sms', path: normalized); +} + +String? _normalizePhoneNumber(String value) { + final normalized = value.replaceAll(RegExp(r'[^0-9+]'), ''); + if (normalized.isEmpty) { + return null; + } + return normalized; +} + +final contactLauncherProvider = Provider((ref) { + return const UrlLauncherContactLauncher(); +}); diff --git a/app/lib/src/core/config/app_environment.dart b/app/lib/src/core/config/app_environment.dart index 524bec8..6191cfd 100644 --- a/app/lib/src/core/config/app_environment.dart +++ b/app/lib/src/core/config/app_environment.dart @@ -1,22 +1,97 @@ class AppEnvironment { const AppEnvironment({ required this.ssoBaseUrl, - required this.orgFrontBaseUrl, + required this.apiBaseUrl, + required this.authApiBaseUrl, + required this.directoryApiBaseUrl, + required this.organizationApiBaseUrl, + required this.orgContextApiBaseUrl, + required this.orgContextTenantSlug, + required this.baronKeyId, + required this.baronKeySecret, + required this.appVersion, + required this.buildTimestamp, }); factory AppEnvironment.fromDartDefine() { - return const AppEnvironment( - ssoBaseUrl: String.fromEnvironment( - 'SSO_BASE_URL', - defaultValue: 'https://sso.example.invalid', + const fallbackBaseUrl = 'https://sso.example.invalid'; + const ssoBaseUrl = String.fromEnvironment( + 'SSO_BASE_URL', + defaultValue: 'https://sso.hmac.kr', + ); + const sharedApiBaseUrl = String.fromEnvironment( + 'TDC114_API_BASE', + defaultValue: fallbackBaseUrl, + ); + const authApiBaseOverride = String.fromEnvironment( + 'TDC114_AUTH_API_BASE', + defaultValue: '', + ); + const directoryApiBaseOverride = String.fromEnvironment( + 'TDC114_DIRECTORY_API_BASE', + defaultValue: '', + ); + const organizationApiBaseOverride = String.fromEnvironment( + 'TDC114_ORGANIZATION_API_BASE', + defaultValue: '', + ); + const orgContextApiBaseOverride = String.fromEnvironment( + 'TDC114_ORG_CONTEXT_API_BASE', + defaultValue: '', + ); + const orgContextTenantSlug = String.fromEnvironment( + 'TDC114_ORG_CONTEXT_TENANT_SLUG', + defaultValue: 'hanmac-family', + ); + const baronKeyId = String.fromEnvironment( + 'TDC114_BARON_KEY_ID', + defaultValue: '', + ); + const baronKeySecret = String.fromEnvironment( + 'TDC114_BARON_KEY_SECRET', + defaultValue: '', + ); + + return AppEnvironment( + ssoBaseUrl: ssoBaseUrl, + apiBaseUrl: sharedApiBaseUrl, + authApiBaseUrl: authApiBaseOverride.isEmpty + ? sharedApiBaseUrl + : authApiBaseOverride, + directoryApiBaseUrl: directoryApiBaseOverride.isEmpty + ? sharedApiBaseUrl + : directoryApiBaseOverride, + organizationApiBaseUrl: organizationApiBaseOverride.isEmpty + ? sharedApiBaseUrl + : organizationApiBaseOverride, + orgContextApiBaseUrl: orgContextApiBaseOverride.isEmpty + ? (organizationApiBaseOverride.isEmpty + ? sharedApiBaseUrl + : organizationApiBaseOverride) + : orgContextApiBaseOverride, + orgContextTenantSlug: orgContextTenantSlug, + baronKeyId: baronKeyId, + baronKeySecret: baronKeySecret, + appVersion: const String.fromEnvironment( + 'APP_VERSION', + defaultValue: '0.1.0', ), - orgFrontBaseUrl: String.fromEnvironment( - 'ORGFRONT_BASE_URL', - defaultValue: 'https://orgfront.example.invalid', + buildTimestamp: const String.fromEnvironment( + 'TDC114_BUILD_TIME', + defaultValue: '', ), ); } final String ssoBaseUrl; - final String orgFrontBaseUrl; + final String apiBaseUrl; + final String authApiBaseUrl; + final String directoryApiBaseUrl; + final String organizationApiBaseUrl; + final String orgContextApiBaseUrl; + final String orgContextTenantSlug; + final String baronKeyId; + final String baronKeySecret; + final String appVersion; + final String buildTimestamp; } diff --git a/app/lib/src/core/config/app_environment_provider.dart b/app/lib/src/core/config/app_environment_provider.dart new file mode 100644 index 0000000..8d57207 --- /dev/null +++ b/app/lib/src/core/config/app_environment_provider.dart @@ -0,0 +1,7 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import 'app_environment.dart'; + +final appEnvironmentProvider = Provider((ref) { + return AppEnvironment.fromDartDefine(); +}); diff --git a/app/lib/src/core/network/api_error.dart b/app/lib/src/core/network/api_error.dart index 1ba2b9f..e86801a 100644 --- a/app/lib/src/core/network/api_error.dart +++ b/app/lib/src/core/network/api_error.dart @@ -21,3 +21,18 @@ class ApiError { return {'error': error, 'code': code, 'details': details}; } } + +class ApiException implements Exception { + const ApiException({required this.statusCode, required this.apiError}); + + final int statusCode; + final ApiError apiError; + + String get code => apiError.code; + String get message => apiError.error; + + @override + String toString() { + return 'ApiException($statusCode, $code, $message)'; + } +} diff --git a/app/lib/src/core/network/http_client_provider.dart b/app/lib/src/core/network/http_client_provider.dart new file mode 100644 index 0000000..619d5ef --- /dev/null +++ b/app/lib/src/core/network/http_client_provider.dart @@ -0,0 +1,8 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart' as http; + +final httpClientProvider = Provider((ref) { + final client = http.Client(); + ref.onDispose(client.close); + return client; +}); diff --git a/app/lib/src/core/router/app_router.dart b/app/lib/src/core/router/app_router.dart index a85d93f..c694c8a 100644 --- a/app/lib/src/core/router/app_router.dart +++ b/app/lib/src/core/router/app_router.dart @@ -1,18 +1,25 @@ import 'package:go_router/go_router.dart'; +import '../../features/auth/presentation/auth_gate_screen.dart'; import '../../features/auth/presentation/login_screen.dart'; import '../../features/directory/presentation/directory_screen.dart'; -final appRouter = GoRouter( - initialLocation: LoginScreen.routePath, - routes: [ - GoRoute( - path: LoginScreen.routePath, - builder: (context, state) => const LoginScreen(), - ), - GoRoute( - path: DirectoryScreen.routePath, - builder: (context, state) => const DirectoryScreen(), - ), - ], -); +GoRouter createAppRouter() { + return GoRouter( + initialLocation: AuthGateScreen.routePath, + routes: [ + GoRoute( + path: AuthGateScreen.routePath, + builder: (context, state) => const AuthGateScreen(), + ), + GoRoute( + path: LoginScreen.routePath, + builder: (context, state) => const LoginScreen(), + ), + GoRoute( + path: DirectoryScreen.routePath, + builder: (context, state) => const DirectoryScreen(), + ), + ], + ); +} diff --git a/app/lib/src/features/auth/data/auth_api_client.dart b/app/lib/src/features/auth/data/auth_api_client.dart new file mode 100644 index 0000000..ca329b4 --- /dev/null +++ b/app/lib/src/features/auth/data/auth_api_client.dart @@ -0,0 +1,104 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:http/http.dart' as http; + +import '../../../core/network/api_error.dart'; +import '../domain/auth_models.dart'; + +class AuthApiClient { + const AuthApiClient({ + required this.httpClient, + required this.baseUri, + this.timeout = const Duration(seconds: 10), + }); + + final http.Client httpClient; + final Uri baseUri; + final Duration timeout; + + Future phoneLogin(PhoneLoginRequest request) async { + final response = await httpClient + .post( + _resolve('/api/v1/tdc114plus/auth/phone-login'), + headers: const { + 'accept': 'application/json', + 'content-type': 'application/json', + }, + body: jsonEncode(request.toJson()), + ) + .timeout(timeout); + + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return PhoneLoginResponse.fromJson(decoded); + } + + Future requestPhoneLoginLink( + PhoneLoginLinkInitRequest request, + ) async { + final response = await httpClient + .post( + _resolve('/api/v1/auth/link/init'), + headers: const { + 'accept': 'application/json', + 'content-type': 'application/json', + }, + body: jsonEncode(request.toJson()), + ) + .timeout(timeout); + + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return PhoneLoginLinkInitResponse.fromJson(decoded); + } + + Future pollPhoneLoginLink( + PhoneLoginLinkPollRequest request, + ) async { + final response = await httpClient + .post( + _resolve('/api/v1/auth/link/poll'), + headers: const { + 'accept': 'application/json', + 'content-type': 'application/json', + }, + body: jsonEncode(request.toJson()), + ) + .timeout(timeout); + + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return PhoneLoginLinkPollResponse.fromJson(decoded); + } + + Uri _resolve(String path) { + final normalizedBase = baseUri.path.endsWith('/') + ? baseUri + : baseUri.replace(path: '${baseUri.path}/'); + return normalizedBase.resolve(path.replaceFirst(RegExp(r'^/'), '')); + } + + Map _decodeObject(String body) { + final decoded = jsonDecode(body); + if (decoded is Map) { + return decoded; + } + throw const FormatException('Expected JSON object response'); + } +} diff --git a/app/lib/src/features/auth/data/auth_repository.dart b/app/lib/src/features/auth/data/auth_repository.dart new file mode 100644 index 0000000..28b1e2c --- /dev/null +++ b/app/lib/src/features/auth/data/auth_repository.dart @@ -0,0 +1,196 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/api_error.dart'; +import '../../../core/network/http_client_provider.dart'; +import '../domain/auth_models.dart'; +import 'auth_api_client.dart'; +import 'auth_session_store.dart'; + +abstract class AuthRepository { + const AuthRepository(); + + Future requestPhoneLoginLink(String phoneNumber); + + Future pollPhoneLoginLink(String pendingRef); + + Future loadPendingPhoneLoginLink(); + + Future clearPendingPhoneLoginLink(); + + Future loadSession(); + + Future logout(); +} + +abstract class LegacyPhoneLoginRepository { + const LegacyPhoneLoginRepository(); + + Future phoneLogin(String phoneNumber); +} + +class RemoteAuthRepository + implements AuthRepository, LegacyPhoneLoginRepository { + const RemoteAuthRepository({ + required this.apiClient, + required this.sessionStore, + required this.appVersion, + }); + + final AuthApiClient apiClient; + final AuthSessionStore sessionStore; + final String appVersion; + + @override + Future phoneLogin(String phoneNumber) async { + final normalizedPhone = _normalizePhoneNumber(phoneNumber); + if (normalizedPhone.length < 9) { + throw _invalidPhoneNumber(); + } + + final response = await apiClient.phoneLogin( + PhoneLoginRequest( + phoneNumber: normalizedPhone, + device: LoginDeviceInfo( + platform: _platformName(), + appVersion: appVersion, + deviceName: _deviceName(), + ), + ), + ); + await sessionStore.save(response); + return response; + } + + @override + Future requestPhoneLoginLink( + String phoneNumber, + ) async { + final normalizedPhone = _normalizePhoneNumber(phoneNumber); + if (normalizedPhone.length < 9) { + throw _invalidPhoneNumber(); + } + + final response = await apiClient.requestPhoneLoginLink( + PhoneLoginLinkInitRequest( + phoneNumber: normalizedPhone, + device: LoginDeviceInfo( + platform: _platformName(), + appVersion: appVersion, + deviceName: _deviceName(), + ), + ), + ); + await sessionStore.savePendingLink(response); + return response; + } + + @override + Future pollPhoneLoginLink( + String pendingRef, + ) async { + final response = await apiClient.pollPhoneLoginLink( + PhoneLoginLinkPollRequest(pendingRef: pendingRef), + ); + final session = response.session; + debugPrint( + 'RemoteAuthRepository.pollPhoneLoginLink status=${response.status} hasSession=${session != null} token=${session?.token ?? ''} expiresAt=${session?.expiresAt.toUtc().toIso8601String() ?? ''}', + ); + if (session != null) { + await sessionStore.save(session); + await sessionStore.clearPendingLink(); + } else if (response.isExpired) { + await sessionStore.clearPendingLink(); + } + return response; + } + + @override + Future loadPendingPhoneLoginLink() { + return sessionStore.loadPendingLink(); + } + + @override + Future clearPendingPhoneLoginLink() { + return sessionStore.clearPendingLink(); + } + + @override + Future loadSession() => sessionStore.load(); + + @override + Future logout() => sessionStore.clear(); + + String _normalizePhoneNumber(String value) { + return value.replaceAll(RegExp(r'[^0-9+]'), ''); + } + + ApiException _invalidPhoneNumber() { + return const ApiException( + statusCode: 400, + apiError: ApiError( + error: '전화번호 형식을 확인해 주세요.', + code: 'invalid_phone_number', + details: {}, + ), + ); + } + + String _platformName() { + if (kIsWeb) { + return 'web'; + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return 'android'; + case TargetPlatform.iOS: + return 'ios'; + case TargetPlatform.macOS: + return 'macos'; + case TargetPlatform.windows: + return 'windows'; + case TargetPlatform.linux: + return 'linux'; + case TargetPlatform.fuchsia: + return 'fuchsia'; + } + } + + String _deviceName() { + if (kIsWeb) { + return 'flutter-web'; + } + return _platformName(); + } +} + +final authApiClientProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return AuthApiClient( + httpClient: ref.watch(httpClientProvider), + baseUri: Uri.parse(environment.authApiBaseUrl), + ); +}); + +final authRepositoryProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return RemoteAuthRepository( + apiClient: ref.watch(authApiClientProvider), + sessionStore: ref.watch(authSessionStoreProvider), + appVersion: environment.appVersion, + ); +}); + +final legacyPhoneLoginRepositoryProvider = Provider( + (ref) { + final environment = ref.watch(appEnvironmentProvider); + return RemoteAuthRepository( + apiClient: ref.watch(authApiClientProvider), + sessionStore: ref.watch(authSessionStoreProvider), + appVersion: environment.appVersion, + ); + }, +); diff --git a/app/lib/src/features/auth/data/auth_session_store.dart b/app/lib/src/features/auth/data/auth_session_store.dart new file mode 100644 index 0000000..62b84f3 --- /dev/null +++ b/app/lib/src/features/auth/data/auth_session_store.dart @@ -0,0 +1,178 @@ +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../domain/auth_models.dart'; + +class AuthSessionStore { + const AuthSessionStore(); + + static const _tokenKey = 'tdc114plus.auth.token'; + static const _expiresAtKey = 'tdc114plus.auth.expiresAt'; + static const _userKey = 'tdc114plus.auth.user'; + static const _orgContextCredentialKey = + 'tdc114plus.auth.orgContextCredential'; + static const _pendingRefKey = 'tdc114plus.auth.pending.ref'; + static const _pendingExpiresAtKey = 'tdc114plus.auth.pending.expiresAt'; + static const _pendingResendAfterAtKey = + 'tdc114plus.auth.pending.resendAfterAt'; + static const _pendingPollIntervalKey = + 'tdc114plus.auth.pending.pollInterval'; + static const _pendingProviderKey = 'tdc114plus.auth.pending.provider'; + + Future save(PhoneLoginResponse response) async { + final prefs = await SharedPreferences.getInstance(); + await prefs.setString(_tokenKey, response.token); + await prefs.setString( + _expiresAtKey, + response.expiresAt.toUtc().toIso8601String(), + ); + await prefs.setString(_userKey, jsonEncode(response.user.toJson())); + final orgContextCredential = response.orgContextCredential; + if (orgContextCredential == null) { + await prefs.remove(_orgContextCredentialKey); + } else { + await prefs.setString( + _orgContextCredentialKey, + jsonEncode(orgContextCredential.toJson()), + ); + } + debugPrint( + 'AuthSessionStore.save token=${response.token} tokenLength=${response.token.length} expiresAt=${response.expiresAt.toUtc().toIso8601String()} orgContextCredential=${orgContextCredential != null}', + ); + } + + Future savePendingLink(PhoneLoginLinkInitResponse response) async { + final prefs = await SharedPreferences.getInstance(); + final now = DateTime.now().toUtc(); + await prefs.setString(_pendingRefKey, response.pendingRef); + await prefs.setString( + _pendingExpiresAtKey, + now.add(Duration(seconds: response.expiresIn)).toIso8601String(), + ); + await prefs.setString( + _pendingResendAfterAtKey, + now.add(Duration(seconds: response.resendAfter)).toIso8601String(), + ); + await prefs.setInt(_pendingPollIntervalKey, response.interval); + final provider = response.provider; + if (provider == null || provider.trim().isEmpty) { + await prefs.remove(_pendingProviderKey); + } else { + await prefs.setString(_pendingProviderKey, provider); + } + } + + Future loadPendingLink() async { + final prefs = await SharedPreferences.getInstance(); + final pendingRef = prefs.getString(_pendingRefKey); + final expiresAtValue = prefs.getString(_pendingExpiresAtKey); + if (pendingRef == null || + pendingRef.trim().isEmpty || + expiresAtValue == null) { + return null; + } + + final now = DateTime.now().toUtc(); + final expiresAt = DateTime.tryParse(expiresAtValue)?.toUtc(); + if (expiresAt == null || !expiresAt.isAfter(now)) { + await clearPendingLink(); + return null; + } + + final resendAfterAt = DateTime.tryParse( + prefs.getString(_pendingResendAfterAtKey) ?? '', + )?.toUtc(); + final expiresIn = expiresAt.difference(now).inSeconds; + final resendAfter = resendAfterAt == null || !resendAfterAt.isAfter(now) + ? 0 + : resendAfterAt.difference(now).inSeconds; + return PhoneLoginLinkInitResponse( + status: 'pending', + pendingRef: pendingRef, + expiresIn: expiresIn, + interval: prefs.getInt(_pendingPollIntervalKey) ?? 3, + resendAfter: resendAfter, + provider: prefs.getString(_pendingProviderKey), + ); + } + + Future clearPendingLink() async { + final prefs = await SharedPreferences.getInstance(); + await prefs.remove(_pendingRefKey); + await prefs.remove(_pendingExpiresAtKey); + await prefs.remove(_pendingResendAfterAtKey); + await prefs.remove(_pendingPollIntervalKey); + await prefs.remove(_pendingProviderKey); + } + + Future load() async { + final prefs = await SharedPreferences.getInstance(); + final token = prefs.getString(_tokenKey); + final expiresAtValue = prefs.getString(_expiresAtKey); + final userValue = prefs.getString(_userKey); + final orgContextCredentialValue = prefs.getString(_orgContextCredentialKey); + if (token == null || expiresAtValue == null || userValue == null) { + debugPrint( + 'AuthSessionStore.load missing token=${token != null} expiresAt=${expiresAtValue != null} user=${userValue != null}', + ); + return null; + } + final session = StoredAuthSession( + token: token, + expiresAt: DateTime.parse(expiresAtValue), + user: LoginUser.fromJson(jsonDecode(userValue) as Map), + orgContextCredential: _decodeOrgContextCredential( + orgContextCredentialValue, + ), + ); + debugPrint( + 'AuthSessionStore.load token=${session.token} tokenLength=${session.token.length} expiresAt=${session.expiresAt.toUtc().toIso8601String()} expired=${session.isExpired} orgContextCredential=${session.orgContextCredential != null}', + ); + return session; + } + + Future clear() async { + final prefs = await SharedPreferences.getInstance(); + await prefs.remove(_tokenKey); + await prefs.remove(_expiresAtKey); + await prefs.remove(_userKey); + await prefs.remove(_orgContextCredentialKey); + await clearPendingLink(); + debugPrint('AuthSessionStore.clear'); + } + + OrgContextCredential? _decodeOrgContextCredential(String? value) { + if (value == null || value.trim().isEmpty) { + return null; + } + try { + return OrgContextCredential.fromJsonOrNull(jsonDecode(value)); + } catch (_) { + return null; + } + } + +} + +class StoredAuthSession { + const StoredAuthSession({ + required this.token, + required this.expiresAt, + required this.user, + this.orgContextCredential, + }); + + final String token; + final DateTime expiresAt; + final LoginUser user; + final OrgContextCredential? orgContextCredential; + + bool get isExpired => !expiresAt.isAfter(DateTime.now().toUtc()); +} + +final authSessionStoreProvider = Provider((ref) { + return const AuthSessionStore(); +}); diff --git a/app/lib/src/features/auth/domain/auth_models.dart b/app/lib/src/features/auth/domain/auth_models.dart index 40f20af..a5ca0f0 100644 --- a/app/lib/src/features/auth/domain/auth_models.dart +++ b/app/lib/src/features/auth/domain/auth_models.dart @@ -101,19 +101,24 @@ class PhoneLoginResponse { required this.token, required this.expiresAt, required this.user, + this.orgContextCredential, }); final String status; final String token; final DateTime expiresAt; final LoginUser user; + final OrgContextCredential? orgContextCredential; factory PhoneLoginResponse.fromJson(Map json) { return PhoneLoginResponse( status: json['status'] as String? ?? '', - token: json['token'] as String? ?? '', + token: json['token'] as String? ?? json['accessToken'] as String? ?? '', expiresAt: DateTime.parse(json['expiresAt'] as String), user: LoginUser.fromJson(json['user'] as Map? ?? {}), + orgContextCredential: OrgContextCredential.fromJsonOrNull( + json['orgContextCredential'] ?? json['org_context'], + ), ); } @@ -123,10 +128,176 @@ class PhoneLoginResponse { 'token': token, 'expiresAt': expiresAt.toUtc().toIso8601String(), 'user': user.toJson(), + if (orgContextCredential != null) + 'orgContextCredential': orgContextCredential!.toJson(), }; } } +class OrgContextCredential { + const OrgContextCredential({ + required this.baseUrl, + required this.tenantSlug, + required this.keyId, + required this.keySecret, + this.expiresAt, + }); + + final String baseUrl; + final String tenantSlug; + final String keyId; + final String keySecret; + final DateTime? expiresAt; + + bool get isUsable { + return baseUrl.trim().isNotEmpty && + tenantSlug.trim().isNotEmpty && + keyId.trim().isNotEmpty && + keySecret.trim().isNotEmpty && + (expiresAt == null || expiresAt!.isAfter(DateTime.now().toUtc())); + } + + factory OrgContextCredential.fromJson(Map json) { + return OrgContextCredential( + baseUrl: _readString(json, const ['baseUrl', 'base_url']), + tenantSlug: _readString(json, const ['tenantSlug', 'tenant_slug']), + keyId: _readString(json, const ['keyId', 'key_id']), + keySecret: _readString(json, const ['keySecret', 'key_secret']), + expiresAt: _readDate(json['expiresAt'] ?? json['expires_at']), + ); + } + + static OrgContextCredential? fromJsonOrNull(Object? value) { + if (value is! Map) { + return null; + } + final credential = OrgContextCredential.fromJson( + Map.from(value), + ); + return credential.isUsable ? credential : null; + } + + Map toJson() { + return { + 'baseUrl': baseUrl, + 'tenantSlug': tenantSlug, + 'keyId': keyId, + 'keySecret': keySecret, + if (expiresAt != null) 'expiresAt': expiresAt!.toUtc().toIso8601String(), + }; + } + + static String _readString(Map json, List keys) { + for (final key in keys) { + final value = json[key]; + if (value is String && value.trim().isNotEmpty) { + return value.trim(); + } + } + return ''; + } + + static DateTime? _readDate(Object? value) { + if (value is! String || value.trim().isEmpty) { + return null; + } + return DateTime.tryParse(value)?.toUtc(); + } +} + +class PhoneLoginLinkInitRequest { + const PhoneLoginLinkInitRequest({ + required this.phoneNumber, + required this.device, + }); + + final String phoneNumber; + final LoginDeviceInfo device; + + Map toJson() { + return {'phoneNumber': phoneNumber, 'device': device.toJson()}; + } +} + +class PhoneLoginLinkInitResponse { + const PhoneLoginLinkInitResponse({ + required this.status, + required this.pendingRef, + required this.expiresIn, + required this.interval, + required this.resendAfter, + this.provider, + }); + + final String status; + final String pendingRef; + final int expiresIn; + final int interval; + final int resendAfter; + final String? provider; + + factory PhoneLoginLinkInitResponse.fromJson(Map json) { + return PhoneLoginLinkInitResponse( + status: json['status'] as String? ?? '', + pendingRef: json['pendingRef'] as String? ?? '', + expiresIn: json['expiresIn'] as int? ?? 180, + interval: json['interval'] as int? ?? json['pollInterval'] as int? ?? 3, + resendAfter: json['resendAfter'] as int? ?? 30, + provider: json['provider'] as String?, + ); + } +} + +class PhoneLoginLinkPollRequest { + const PhoneLoginLinkPollRequest({required this.pendingRef}); + + final String pendingRef; + + Map toJson() { + return {'pendingRef': pendingRef}; + } +} + +class PhoneLoginLinkPollResponse { + const PhoneLoginLinkPollResponse({ + required this.status, + this.code, + this.interval, + this.session, + }); + + final String status; + final String? code; + final int? interval; + final PhoneLoginResponse? session; + + bool get isPending => + status == 'pending' || + code == 'authorization_pending' || + code == 'slow_down'; + + bool get isExpired => code == 'expired_token'; + + factory PhoneLoginLinkPollResponse.fromJson(Map json) { + PhoneLoginResponse? session; + if (json['session'] is Map) { + session = PhoneLoginResponse.fromJson( + json['session'] as Map, + ); + } else if ((json['token'] != null || json['accessToken'] != null) && + json['expiresAt'] != null) { + session = PhoneLoginResponse.fromJson(json); + } + + return PhoneLoginLinkPollResponse( + status: json['status'] as String? ?? '', + code: json['code'] as String?, + interval: json['interval'] as int? ?? json['pollInterval'] as int?, + session: session, + ); + } +} + class UserPermissions { const UserPermissions({ required this.directory, diff --git a/app/lib/src/features/auth/presentation/auth_gate_screen.dart b/app/lib/src/features/auth/presentation/auth_gate_screen.dart new file mode 100644 index 0000000..c382f54 --- /dev/null +++ b/app/lib/src/features/auth/presentation/auth_gate_screen.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../data/auth_repository.dart'; +import '../data/auth_session_store.dart'; +import 'login_screen.dart'; +import '../../directory/presentation/directory_screen.dart'; + +class AuthGateScreen extends ConsumerStatefulWidget { + const AuthGateScreen({super.key}); + + static const routePath = '/'; + + @override + ConsumerState createState() => _AuthGateScreenState(); +} + +class _AuthGateScreenState extends ConsumerState { + var _resolved = false; + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: ref.read(authRepositoryProvider).loadSession(), + builder: (context, snapshot) { + if (!_resolved && snapshot.connectionState == ConnectionState.done) { + _resolved = true; + final router = GoRouter.of(context); + WidgetsBinding.instance.addPostFrameCallback((_) async { + final session = snapshot.data; + if (session == null || session.isExpired) { + if (session != null) { + await ref.read(authRepositoryProvider).logout(); + } + if (mounted) { + router.go(LoginScreen.routePath); + } + return; + } + if (mounted) { + router.go(DirectoryScreen.routePath); + } + }); + } + + return const Scaffold( + body: SafeArea(child: Center(child: CircularProgressIndicator())), + ); + }, + ); + } +} diff --git a/app/lib/src/features/auth/presentation/login_screen.dart b/app/lib/src/features/auth/presentation/login_screen.dart index 252f8fe..3523038 100644 --- a/app/lib/src/features/auth/presentation/login_screen.dart +++ b/app/lib/src/features/auth/presentation/login_screen.dart @@ -1,72 +1,705 @@ -import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; +import 'dart:async'; +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:flutter/services.dart'; +import 'package:http/http.dart' as http; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/api_error.dart'; +import '../data/auth_repository.dart'; +import '../domain/auth_models.dart'; import '../../directory/presentation/directory_screen.dart'; -class LoginScreen extends StatefulWidget { +class LoginScreen extends ConsumerStatefulWidget { const LoginScreen({super.key}); static const routePath = '/login'; @override - State createState() => _LoginScreenState(); + ConsumerState createState() => _LoginScreenState(); } -class _LoginScreenState extends State { +class _LoginScreenState extends ConsumerState + with WidgetsBindingObserver { final _phoneController = TextEditingController(); + Timer? _pollTimer; + Timer? _countdownTimer; + + var _isSubmitting = false; + var _pollInFlight = false; + String? _errorMessage; + String? _statusMessage; + PhoneLoginLinkInitResponse? _pendingLink; + var _secondsUntilExpiry = 0; + var _secondsUntilResend = 0; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + unawaited(_restorePendingLink()); + } + @override void dispose() { + WidgetsBinding.instance.removeObserver(this); + _pollTimer?.cancel(); + _countdownTimer?.cancel(); _phoneController.dispose(); super.dispose(); } - void _submit() { - if (_phoneController.text.trim().isEmpty) { + bool get _hasPendingLink => _pendingLink != null; + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state != AppLifecycleState.resumed || !_hasPendingLink) { return; } - context.go(DirectoryScreen.routePath); + _ensurePolling(); + unawaited(_pollPendingLink()); + } + + Future _submit() async { + final phoneNumber = _phoneController.text.trim(); + if (phoneNumber.isEmpty) { + setState(() { + _statusMessage = null; + _errorMessage = '전화번호를 입력해 주세요.'; + }); + return; + } + + setState(() { + _isSubmitting = true; + _pendingLink = null; + _secondsUntilExpiry = 0; + _secondsUntilResend = 0; + _errorMessage = null; + _statusMessage = '로그인 링크를 요청하고 있습니다.'; + }); + + try { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + await ref.read(authRepositoryProvider).clearPendingPhoneLoginLink(); + + final response = await ref + .read(authRepositoryProvider) + .requestPhoneLoginLink(phoneNumber); + if (!mounted) { + return; + } + + _startPendingLinkFlow(response); + setState(() { + _statusMessage = '문자 링크를 누른 뒤 TDC114PLUS 앱으로 돌아오세요.'; + }); + } catch (error) { + if (!mounted) { + return; + } + setState(() { + _statusMessage = null; + _errorMessage = '로그인 링크 요청 실패: ${_messageForError(error)}'; + }); + } finally { + if (mounted) { + setState(() => _isSubmitting = false); + } + } + } + + Future _restorePendingLink() async { + final pendingLink = await ref + .read(authRepositoryProvider) + .loadPendingPhoneLoginLink(); + if (!mounted || pendingLink == null) { + return; + } + setState(() { + _pendingLink = pendingLink; + _secondsUntilExpiry = pendingLink.expiresIn; + _secondsUntilResend = pendingLink.resendAfter; + _statusMessage = '이전 로그인 승인 상태를 확인하고 있습니다.'; + _errorMessage = null; + }); + _startPendingTimers(pendingLink); + unawaited(_pollPendingLink()); + } + + void _startPendingLinkFlow(PhoneLoginLinkInitResponse response) { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + + setState(() { + _pendingLink = response; + _secondsUntilExpiry = response.expiresIn; + _secondsUntilResend = response.resendAfter; + }); + + _startPendingTimers(response); + } + + void _startPendingTimers(PhoneLoginLinkInitResponse response) { + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (_) { + if (!mounted) { + return; + } + final nextExpiry = _secondsUntilExpiry > 0 ? _secondsUntilExpiry - 1 : 0; + final nextResend = _secondsUntilResend > 0 ? _secondsUntilResend - 1 : 0; + setState(() { + _secondsUntilExpiry = nextExpiry; + _secondsUntilResend = nextResend; + }); + if (nextExpiry == 0) { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + setState(() { + _pendingLink = null; + _statusMessage = null; + _errorMessage = '로그인 링크 유효시간이 지났습니다. 다시 요청해 주세요.'; + }); + unawaited( + ref.read(authRepositoryProvider).clearPendingPhoneLoginLink(), + ); + } + }); + + _ensurePolling(); + unawaited(_pollPendingLink()); + } + + void _ensurePolling() { + final pendingLink = _pendingLink; + if (pendingLink == null || _pollTimer?.isActive == true) { + return; + } + _pollTimer = Timer.periodic( + Duration(seconds: pendingLink.interval.clamp(1, 30)), + (_) => _pollPendingLink(), + ); + } + + Future _pollPendingLink() async { + final pendingRef = _pendingLink?.pendingRef; + if (pendingRef == null || _pollInFlight) { + return; + } + + _pollInFlight = true; + try { + final response = await ref + .read(authRepositoryProvider) + .pollPhoneLoginLink(pendingRef); + if (!mounted) { + return; + } + + if (response.session != null) { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + setState(() { + _pendingLink = null; + _statusMessage = '로그인이 완료되었습니다. 앱 화면으로 이동합니다.'; + _errorMessage = null; + }); + if (mounted) { + context.go(DirectoryScreen.routePath); + } + return; + } + + if (response.isExpired) { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + setState(() { + _pendingLink = null; + _statusMessage = null; + _errorMessage = '로그인 링크 유효시간이 지났습니다. 다시 요청해 주세요.'; + }); + unawaited( + ref.read(authRepositoryProvider).clearPendingPhoneLoginLink(), + ); + return; + } + + if (mounted) { + setState(() { + _errorMessage = null; + _statusMessage = '문자 링크를 누른 뒤 TDC114PLUS 앱으로 돌아오세요.'; + }); + } + + final nextInterval = response.interval; + if (nextInterval != null && + _pendingLink != null && + nextInterval != _pendingLink!.interval) { + _pollTimer?.cancel(); + _pollTimer = Timer.periodic( + Duration(seconds: nextInterval.clamp(1, 30)), + (_) => _pollPendingLink(), + ); + setState(() { + _pendingLink = PhoneLoginLinkInitResponse( + status: _pendingLink!.status, + pendingRef: _pendingLink!.pendingRef, + expiresIn: _secondsUntilExpiry, + interval: nextInterval, + resendAfter: _secondsUntilResend, + provider: _pendingLink!.provider, + ); + }); + } + } catch (error) { + if (!mounted) { + return; + } + if (error is ApiException && + (error.code == 'pending_ref_not_found' || + error.code == 'pending_ref_expired')) { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + unawaited( + ref.read(authRepositoryProvider).clearPendingPhoneLoginLink(), + ); + setState(() { + _pendingLink = null; + _secondsUntilExpiry = 0; + _secondsUntilResend = 0; + _statusMessage = null; + _errorMessage = '이전 로그인 요청이 만료되었습니다. 다시 보내기를 눌러 주세요.'; + }); + return; + } + setState(() { + _errorMessage = '승인 상태 확인 실패: ${_messageForError(error)}'; + }); + } finally { + _pollInFlight = false; + } + } + + void _resetPendingState() { + _pollTimer?.cancel(); + _countdownTimer?.cancel(); + unawaited(ref.read(authRepositoryProvider).clearPendingPhoneLoginLink()); + setState(() { + _pendingLink = null; + _secondsUntilExpiry = 0; + _secondsUntilResend = 0; + _statusMessage = null; + _errorMessage = null; + }); + } + + String _messageForError(Object error) { + if (error is ApiException) { + final message = error.apiError.error.trim(); + if (message.isNotEmpty) { + return message; + } + if (error.code.isNotEmpty) { + return error.code; + } + return '서버 응답 오류(${error.statusCode})'; + } + if (error is TimeoutException) { + return '서버 응답 시간이 초과되었습니다.'; + } + if (error is SocketException || error is http.ClientException) { + return '인증 서버에 연결하지 못했습니다.'; + } + if (error is Exception && + error.toString().contains('invalid_phone_number')) { + return '전화번호 형식을 확인해 주세요.'; + } + return '로그인 링크를 처리하지 못했습니다. 잠시 후 다시 시도해 주세요.'; } @override Widget build(BuildContext context) { + final environment = ref.watch(appEnvironmentProvider); + final buildTimestamp = environment.buildTimestamp.trim(); + final canResend = !_isSubmitting && _secondsUntilResend == 0; + final keyboardInset = MediaQuery.viewInsetsOf(context).bottom; + final keyboardVisible = keyboardInset > 0; + const background = Color(0xFF030616); + const surface = Color(0xFF10182A); + const surfaceBorder = Color(0xFF1D2A44); + const primary = Color(0xFFA8DEFF); + const onDark = Color(0xFFE8F2FF); + const muted = Color(0xFFA8B4C7); + return Scaffold( - appBar: AppBar(title: const Text('tdc114plus')), + backgroundColor: background, + appBar: AppBar( + backgroundColor: const Color(0xFF0E1729), + foregroundColor: onDark, + title: const Text('Baron SW 포털'), + actions: const [ + Padding( + padding: EdgeInsets.only(right: 16), + child: Icon(Icons.dark_mode_outlined), + ), + ], + ), + bottomNavigationBar: keyboardVisible + ? AnimatedPadding( + duration: const Duration(milliseconds: 160), + curve: Curves.easeOut, + padding: EdgeInsets.only(bottom: keyboardInset), + child: SafeArea( + top: false, + child: Container( + color: background, + padding: const EdgeInsets.fromLTRB(24, 10, 24, 12), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 520), + child: _buildLoginLinkButton(canResend: canResend), + ), + ), + ), + ) + : null, body: SafeArea( - child: ListView( - padding: const EdgeInsets.all(24), - children: [ - const SizedBox(height: 32), - Text( - 'Baron SSO 로그인', - style: Theme.of(context).textTheme.headlineSmall, - ), - const SizedBox(height: 8), - Text( - 'Baron SSO에 등록된 전화번호를 입력하세요.', - style: Theme.of(context).textTheme.bodyMedium, - ), - const SizedBox(height: 24), - TextField( - controller: _phoneController, - keyboardType: TextInputType.phone, - textInputAction: TextInputAction.done, - decoration: const InputDecoration( - border: OutlineInputBorder(), - labelText: '전화번호', - prefixIcon: Icon(Icons.phone_android), + child: Center( + child: SingleChildScrollView( + padding: EdgeInsets.fromLTRB(24, 24, 24, keyboardVisible ? 96 : 24), + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 520), + child: DecoratedBox( + decoration: BoxDecoration( + color: surface, + border: Border.all(color: surfaceBorder), + borderRadius: BorderRadius.circular(24), + boxShadow: const [ + BoxShadow( + color: Color(0x66000000), + blurRadius: 24, + offset: Offset(0, 16), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.fromLTRB(24, 28, 24, 24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + const Text( + 'TDC114PLUS', + textAlign: TextAlign.center, + style: TextStyle( + color: Colors.white, + fontSize: 28, + fontWeight: FontWeight.w900, + letterSpacing: 0, + ), + ), + const SizedBox(height: 6), + const Text( + 'Baron SSO Login', + textAlign: TextAlign.center, + style: TextStyle( + color: muted, + fontSize: 13, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 24), + const CircleAvatar( + radius: 42, + backgroundColor: Color(0xFF26334C), + child: Icon(Icons.person, color: primary, size: 44), + ), + const SizedBox(height: 24), + Text( + '로그인 링크 발송', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.headlineSmall + ?.copyWith( + color: primary, + fontWeight: FontWeight.w800, + ), + ), + const SizedBox(height: 12), + const Text( + '문자 승인 후 앱으로 돌아오면 자동 로그인됩니다.', + textAlign: TextAlign.center, + style: TextStyle(color: muted, height: 1.5), + ), + if (buildTimestamp.isNotEmpty) ...[ + const SizedBox(height: 8), + Text( + '빌드 시각: $buildTimestamp', + textAlign: TextAlign.center, + style: const TextStyle( + color: Color(0x99FFFFFF), + fontSize: 12, + fontWeight: FontWeight.w600, + ), + ), + ], + const SizedBox(height: 24), + DecoratedBox( + decoration: BoxDecoration( + color: const Color(0xFF0A5D43), + borderRadius: BorderRadius.circular(18), + border: Border.all(color: const Color(0xFF2FA977)), + boxShadow: const [ + BoxShadow( + color: Color(0x553CD694), + blurRadius: 22, + offset: Offset(0, 10), + ), + ], + ), + child: Padding( + padding: const EdgeInsets.fromLTRB(18, 14, 18, 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Row( + children: [ + const Icon( + Icons.phone_android, + color: Colors.white, + size: 44, + ), + const SizedBox(width: 14), + Expanded( + child: TextField( + controller: _phoneController, + enabled: + !_hasPendingLink && !_isSubmitting, + keyboardType: TextInputType.phone, + inputFormatters: const [ + _PhoneNumberTextInputFormatter(), + ], + style: const TextStyle( + color: Colors.white, + fontSize: 24, + fontWeight: FontWeight.w800, + letterSpacing: 0, + ), + cursorColor: Colors.white, + decoration: const InputDecoration( + border: InputBorder.none, + isDense: true, + counterText: '', + hintText: '010-0000-0000', + hintStyle: TextStyle( + color: Color(0x66FFFFFF), + fontSize: 24, + fontWeight: FontWeight.w800, + letterSpacing: 0, + ), + ), + ), + ), + ], + ), + const SizedBox(height: 8), + const Divider( + height: 1, + thickness: 3, + indent: 72, + endIndent: 12, + color: Color(0x553CD694), + ), + const SizedBox(height: 10), + const Text( + '문자 수신 가능한 전화번호를 입력하세요.', + textAlign: TextAlign.center, + style: TextStyle( + color: Color(0xCCFFFFFF), + fontSize: 13, + ), + ), + ], + ), + ), + ), + if (_statusMessage != null) ...[ + const SizedBox(height: 18), + Text( + _statusMessage!, + textAlign: TextAlign.center, + style: const TextStyle(color: primary, height: 1.5), + ), + ], + if (_errorMessage != null) ...[ + const SizedBox(height: 12), + Text( + _errorMessage!, + textAlign: TextAlign.center, + style: const TextStyle( + color: Color(0xFFFF9CA3), + height: 1.5, + ), + ), + ], + if (_hasPendingLink) ...[ + const SizedBox(height: 20), + _PendingLinkStatus( + expiresIn: _secondsUntilExpiry, + resendAfter: _secondsUntilResend, + provider: _pendingLink?.provider, + ), + ], + if (!keyboardVisible) ...[ + const SizedBox(height: 24), + _buildLoginLinkButton(canResend: canResend), + if (_hasPendingLink) ...[ + const SizedBox(height: 10), + OutlinedButton( + style: OutlinedButton.styleFrom( + foregroundColor: onDark, + side: const BorderSide(color: Color(0xFF34425C)), + minimumSize: const Size.fromHeight(48), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + ), + onPressed: _resetPendingState, + child: const Text('다른 번호 입력'), + ), + ], + ], + ], + ), + ), ), - onSubmitted: (_) => _submit(), ), - const SizedBox(height: 16), - FilledButton.icon( - onPressed: _submit, - icon: const Icon(Icons.login), - label: const Text('로그인'), - ), - ], + ), ), ), ); } + + Widget _buildLoginLinkButton({required bool canResend}) { + const primary = Color(0xFFA8DEFF); + return FilledButton.icon( + style: FilledButton.styleFrom( + backgroundColor: primary, + foregroundColor: const Color(0xFF07101F), + disabledBackgroundColor: const Color(0xFF314158), + disabledForegroundColor: const Color(0xFF91A0B6), + minimumSize: const Size.fromHeight(54), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)), + ), + onPressed: _isSubmitting || (_hasPendingLink && !canResend) + ? null + : _submit, + icon: _isSubmitting + ? const SizedBox.square( + dimension: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : Icon(_hasPendingLink ? Icons.refresh : Icons.link), + label: Text( + _isSubmitting + ? '로그인 링크 요청 중' + : _hasPendingLink + ? '로그인 링크 다시 보내기' + : '로그인 링크 보내기', + ), + ); + } +} + +class _PhoneNumberTextInputFormatter extends TextInputFormatter { + const _PhoneNumberTextInputFormatter(); + + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, + TextEditingValue newValue, + ) { + final digits = newValue.text.replaceAll(RegExp(r'[^0-9]'), ''); + final limited = digits.length > 11 ? digits.substring(0, 11) : digits; + final formatted = _formatPhoneDigits(limited); + return TextEditingValue( + text: formatted, + selection: TextSelection.collapsed(offset: formatted.length), + ); + } + + String _formatPhoneDigits(String digits) { + if (digits.length <= 3) { + return digits; + } + if (digits.length <= 7) { + return '${digits.substring(0, 3)}-${digits.substring(3)}'; + } + return '${digits.substring(0, 3)}-${digits.substring(3, 7)}-${digits.substring(7)}'; + } +} + +class _PendingLinkStatus extends StatelessWidget { + const _PendingLinkStatus({ + required this.expiresIn, + required this.resendAfter, + required this.provider, + }); + + final int expiresIn; + final int resendAfter; + final String? provider; + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: const Color(0xFF07101F), + border: Border.all(color: const Color(0xFF263653)), + borderRadius: BorderRadius.circular(14), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + '승인 대기 중', + style: TextStyle( + color: Color(0xFFA8DEFF), + fontSize: 16, + fontWeight: FontWeight.w700, + ), + ), + const SizedBox(height: 8), + const Text( + '문자 링크를 승인한 뒤 이 앱으로 돌아오면 자동으로 로그인됩니다.', + style: TextStyle(color: Color(0xFFE8F2FF), height: 1.45), + ), + const SizedBox(height: 8), + Text( + '남은 유효시간: ${_formatDuration(expiresIn)}', + style: const TextStyle(color: Color(0xFFA8B4C7)), + ), + Text( + '재전송 가능까지: ${_formatDuration(resendAfter)}', + style: const TextStyle(color: Color(0xFFA8B4C7)), + ), + if (provider != null && provider!.trim().isNotEmpty) + Text( + '인증 공급자: $provider', + style: const TextStyle(color: Color(0xFFA8B4C7)), + ), + ], + ), + ); + } + + static String _formatDuration(int seconds) { + final safeSeconds = seconds < 0 ? 0 : seconds; + final minutes = safeSeconds ~/ 60; + final remainingSeconds = safeSeconds % 60; + return '${minutes.toString().padLeft(2, '0')}:${remainingSeconds.toString().padLeft(2, '0')}'; + } } diff --git a/app/lib/src/features/directory/data/directory_api_client.dart b/app/lib/src/features/directory/data/directory_api_client.dart new file mode 100644 index 0000000..38efad2 --- /dev/null +++ b/app/lib/src/features/directory/data/directory_api_client.dart @@ -0,0 +1,115 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart' as http; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/api_error.dart'; +import '../../../core/network/http_client_provider.dart'; +import '../../auth/data/auth_session_store.dart'; +import '../domain/employee.dart'; + +class DirectoryApiClient { + const DirectoryApiClient({ + required this.httpClient, + required this.baseUri, + required this.sessionStore, + this.timeout = const Duration(seconds: 10), + }); + + final http.Client httpClient; + final Uri baseUri; + final AuthSessionStore sessionStore; + final Duration timeout; + + Future listEmployees({ + String? query, + String? tenantId, + String? tenantSlug, + String? department, + int limit = 50, + int offset = 0, + String? cursor, + }) async { + final response = await httpClient + .get( + _resolve( + '/api/v1/tdc114plus/directory/employees', + queryParameters: { + 'q': query, + 'tenantId': tenantId, + 'tenantSlug': tenantSlug, + 'department': department, + 'limit': '$limit', + 'offset': '$offset', + 'cursor': cursor, + }, + ), + headers: await _headers(), + ) + .timeout(timeout); + return EmployeeListResponse.fromJson(_decodeOk(response)); + } + + Future getEmployee(String employeeId) async { + final response = await httpClient + .get( + _resolve('/api/v1/tdc114plus/directory/employees/$employeeId'), + headers: await _headers(), + ) + .timeout(timeout); + return EmployeeDetail.fromJson(_decodeOk(response)); + } + + Future> _headers() async { + final session = await sessionStore.load(); + return { + 'accept': 'application/json', + if (session?.token != null) 'authorization': 'Bearer ${session!.token}', + }; + } + + Map _decodeOk(http.Response response) { + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return decoded; + } + + Uri _resolve(String path, {Map queryParameters = const {}}) { + final normalizedBase = baseUri.path.endsWith('/') + ? baseUri + : baseUri.replace(path: '${baseUri.path}/'); + final uri = normalizedBase.resolve(path.replaceFirst(RegExp(r'^/'), '')); + final filteredQuery = Map.fromEntries( + queryParameters.entries + .where((entry) { + return entry.value != null && entry.value!.trim().isNotEmpty; + }) + .map((entry) => MapEntry(entry.key, entry.value!)), + ); + return uri.replace(queryParameters: filteredQuery); + } + + Map _decodeObject(String body) { + final decoded = jsonDecode(body); + if (decoded is Map) { + return decoded; + } + throw const FormatException('Expected JSON object response'); + } +} + +final directoryApiClientProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return DirectoryApiClient( + httpClient: ref.watch(httpClientProvider), + baseUri: Uri.parse(environment.directoryApiBaseUrl), + sessionStore: ref.watch(authSessionStoreProvider), + ); +}); diff --git a/app/lib/src/features/directory/data/directory_repository.dart b/app/lib/src/features/directory/data/directory_repository.dart new file mode 100644 index 0000000..9ccbdfa --- /dev/null +++ b/app/lib/src/features/directory/data/directory_repository.dart @@ -0,0 +1,227 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../../organization/data/org_context_api_client.dart'; +import 'directory_api_client.dart'; +import '../domain/employee.dart'; + +class DirectoryQuery { + const DirectoryQuery({ + required this.query, + required this.tenantSlug, + this.department, + this.tenantSlugs = const [], + }); + + final String query; + final String tenantSlug; + final String? department; + final List tenantSlugs; + + String? get apiQuery => query.trim().isEmpty ? null : query.trim(); + String? get apiTenantSlug => tenantSlug == 'all' ? null : tenantSlug; + List? get apiTenantSlugs { + if (tenantSlugs.isNotEmpty) { + return tenantSlugs; + } + final slug = apiTenantSlug; + return slug == null ? null : [slug]; + } + + String? get apiDepartment { + if (department == null) { + return null; + } + final normalized = department!.trim(); + return normalized.isEmpty ? null : normalized; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + other is DirectoryQuery && + other.query == query && + other.tenantSlug == tenantSlug && + other.department == department && + listEquals(other.tenantSlugs, tenantSlugs); + } + + @override + int get hashCode => + Object.hash(query, tenantSlug, department, Object.hashAll(tenantSlugs)); +} + +abstract class DirectoryRepository { + const DirectoryRepository(); + + Future> loadEmployees(DirectoryQuery query); +} + +abstract class EmployeeDetailRepository { + const EmployeeDetailRepository(); + + Future loadEmployeeDetail(String employeeId); +} + +class RemoteDirectoryRepository implements DirectoryRepository { + const RemoteDirectoryRepository({required this.orgContextApiClient}); + + final OrgContextApiClient orgContextApiClient; + + @override + Future> loadEmployees(DirectoryQuery query) async { + final snapshot = await orgContextApiClient.fetchOrgContext( + tenantSlug: query.apiTenantSlug, + ); + final employees = snapshot.employees.where((employee) { + return _matchesTenant(employee, query.apiTenantSlugs) && + _matchesDepartment(employee, query.apiDepartment) && + _matchesQuery(employee, query.apiQuery); + }).toList(); + + employees.sort(_compareEmployees); + return employees; + } + + bool _matchesTenant(Employee employee, List? tenantSlugs) { + return tenantSlugs == null || tenantSlugs.contains(employee.tenantSlug); + } + + bool _matchesDepartment(Employee employee, String? department) { + if (department == null) { + return true; + } + return employee.department == department || + employee.tenantName == department; + } + + bool _matchesQuery(Employee employee, String? query) { + if (query == null) { + return true; + } + final normalizedQuery = query.toLowerCase(); + final queryDigits = query.replaceAll(RegExp(r'[^0-9]'), ''); + final fields = [ + employee.name, + employee.phoneNumber, + employee.phoneDisplay, + employee.email, + employee.tenantName, + employee.department, + employee.grade, + employee.position, + employee.jobTitle, + ].whereType(); + + return fields.any((field) { + final normalizedField = field.toLowerCase(); + if (normalizedField.contains(normalizedQuery)) { + return true; + } + if (queryDigits.isEmpty) { + return false; + } + final fieldDigits = field.replaceAll(RegExp(r'[^0-9]'), ''); + return fieldDigits.contains(queryDigits); + }); + } +} + +class RemoteEmployeeDetailRepository implements EmployeeDetailRepository { + const RemoteEmployeeDetailRepository({required this.directoryApiClient}); + + final DirectoryApiClient directoryApiClient; + + @override + Future loadEmployeeDetail(String employeeId) { + return directoryApiClient.getEmployee(employeeId); + } +} + +int _compareEmployees(Employee left, Employee right) { + final tenantCompare = left.tenantName.compareTo(right.tenantName); + if (tenantCompare != 0) { + return tenantCompare; + } + + final departmentCompare = (left.department ?? '').compareTo( + right.department ?? '', + ); + if (departmentCompare != 0) { + return departmentCompare; + } + + final leaderCompare = _leaderPriority(left).compareTo( + _leaderPriority(right), + ); + if (leaderCompare != 0) { + return leaderCompare; + } + + final rankCompare = _rankPriority(left).compareTo(_rankPriority(right)); + if (rankCompare != 0) { + return rankCompare; + } + + final nameCompare = left.name.compareTo(right.name); + if (nameCompare != 0) { + return nameCompare; + } + + return (left.sortOrder ?? 1 << 30).compareTo(right.sortOrder ?? 1 << 30); +} + +int _leaderPriority(Employee employee) { + if (employee.isManager) { + return 0; + } + final position = employee.position?.trim() ?? ''; + return position.contains('팀장') ? 0 : 1; +} + +int _rankPriority(Employee employee) { + const priorityByToken = { + '사장': 0, + '부사장': 1, + '수석': 2, + '전무': 3, + '상무': 4, + '이사': 5, + '책임': 6, + '부장': 7, + '선임': 8, + '과장': 9, + '대리': 10, + '사원': 11, + }; + final values = [ + employee.grade?.trim() ?? '', + employee.position?.trim() ?? '', + employee.jobTitle?.trim() ?? '', + ]; + for (final value in values) { + for (final entry in priorityByToken.entries) { + if (value.contains(entry.key)) { + return entry.value; + } + } + } + return priorityByToken.length + 1; +} + +final directoryRepositoryProvider = Provider((ref) { + return RemoteDirectoryRepository( + orgContextApiClient: ref.watch(orgContextApiClientProvider), + ); +}); + +final employeeDetailRepositoryProvider = Provider((ref) { + return RemoteEmployeeDetailRepository( + directoryApiClient: ref.watch(directoryApiClientProvider), + ); +}); + +final directoryEmployeesProvider = FutureProvider.autoDispose + .family, DirectoryQuery>((ref, query) { + return ref.watch(directoryRepositoryProvider).loadEmployees(query); + }); diff --git a/app/lib/src/features/directory/data/profile_image_api_client.dart b/app/lib/src/features/directory/data/profile_image_api_client.dart new file mode 100644 index 0000000..329199d --- /dev/null +++ b/app/lib/src/features/directory/data/profile_image_api_client.dart @@ -0,0 +1,216 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart' as http; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/http_client_provider.dart'; +import '../../auth/data/auth_session_store.dart'; +import '../domain/employee.dart'; + +class ProfileImageApiClient { + ProfileImageApiClient({ + required this.httpClient, + required this.baseUri, + required this.sessionStore, + this.timeout = const Duration(seconds: 5), + this.cacheTtl = const Duration(minutes: 10), + }); + + static final Map _cache = {}; + static final RegExp _uuidPattern = RegExp( + r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', + caseSensitive: false, + ); + + final http.Client httpClient; + final Uri baseUri; + final AuthSessionStore sessionStore; + final Duration timeout; + final Duration cacheTtl; + + Future resolveImageUrl(Employee employee) async { + final explicitUrl = employee.profileImageUrl?.trim() ?? ''; + if (explicitUrl.isNotEmpty) { + return explicitUrl; + } + + final uuidFallbackUrl = _uuidFallbackUrl(employee.id); + + final email = employee.email?.trim().toLowerCase() ?? ''; + if (email.isEmpty) { + _debug( + 'skip auth lookup: employee=${employee.name}, id=${employee.id}, email missing, uuidFallback=${uuidFallbackUrl != null}', + ); + return uuidFallbackUrl; + } + + final session = await sessionStore.load(); + if (session == null || session.isExpired || session.token.trim().isEmpty) { + _debug( + 'skip auth lookup: employee=${employee.name}, email=$email, session unavailable, uuidFallback=${uuidFallbackUrl != null}', + ); + return uuidFallbackUrl; + } + + final companyCode = _resolveCompanyCode(employee, email: email); + final cacheKey = '${companyCode ?? ''}|$email'; + final now = DateTime.now().toUtc(); + final cached = _cache[cacheKey]; + if (cached != null && cached.expiresAt.isAfter(now)) { + final resolved = await cached.future; + return resolved ?? uuidFallbackUrl; + } + + final future = _fetchImageUrl( + companyCode: companyCode, + email: email, + accessToken: session.token.trim(), + ); + _cache[cacheKey] = _ProfileImageCacheEntry( + future: future, + expiresAt: now.add(cacheTtl), + ); + try { + final resolved = await future; + if (resolved == null && uuidFallbackUrl != null) { + _debug( + 'auth lookup empty: employee=${employee.name}, email=$email, fallback to uuid url', + ); + } + return resolved ?? uuidFallbackUrl; + } catch (_) { + if (identical(_cache[cacheKey]?.future, future)) { + _cache.remove(cacheKey); + } + if (uuidFallbackUrl != null) { + _debug( + 'auth lookup failed: employee=${employee.name}, email=$email, fallback to uuid url', + ); + } + return uuidFallbackUrl; + } + } + + Future _fetchImageUrl({ + required String? companyCode, + required String email, + required String accessToken, + }) async { + final appSessionToken = accessToken.trim(); + final queryParameters = {'email': email}; + if (companyCode != null && companyCode.isNotEmpty) { + queryParameters['comp'] = companyCode; + } + + _debug( + 'request profile image: email=$email, comp=${companyCode ?? ''}, base=${baseUri.toString()}', + ); + + final response = await httpClient + .get( + _resolve('/api/v1/profile-image', queryParameters: queryParameters), + headers: { + 'accept': 'application/json', + if (appSessionToken.isNotEmpty) + 'Authorization': 'Bearer $appSessionToken', + if (appSessionToken.isNotEmpty) 'X-App-Session': appSessionToken, + }, + ) + .timeout(timeout); + + if (response.statusCode < 200 || response.statusCode >= 300) { + _debug( + 'profile image response not ok: email=$email, status=${response.statusCode}', + ); + return null; + } + + final decoded = jsonDecode(response.body); + if (decoded is! Map) { + return null; + } + + final found = decoded['found'] as bool? ?? false; + final imageUrl = decoded['imageUrl'] as String? ?? ''; + if (!found || imageUrl.trim().isEmpty) { + _debug('profile image not found: email=$email'); + return null; + } + _debug('profile image resolved: email=$email, url=${imageUrl.trim()}'); + return imageUrl.trim(); + } + + Uri _resolve( + String path, { + Map queryParameters = const {}, + }) { + final normalizedBase = baseUri.path.endsWith('/') + ? baseUri + : baseUri.replace(path: '${baseUri.path}/'); + final resolved = normalizedBase.resolve(path.replaceFirst(RegExp(r'^/'), '')); + return resolved.replace(queryParameters: queryParameters); + } + + String? _uuidFallbackUrl(String employeeId) { + final normalized = employeeId.trim(); + if (!_uuidPattern.hasMatch(normalized)) { + return null; + } + return 'https://baroncs.co.kr/employee_img/$normalized.jpg'; + } + + static void _debug(String message) { + if (kDebugMode) { + debugPrint('[ProfileImageApiClient] $message'); + } + } +} + +String? _resolveCompanyCode(Employee employee, {required String email}) { + final tenantSlug = employee.tenantSlug.trim().toLowerCase(); + final tenantName = employee.tenantName.trim().toLowerCase(); + + if (tenantSlug.contains('saman') || tenantName.contains('삼안')) { + return 'SAMAN'; + } + if (tenantSlug.contains('hanmac') || tenantName.contains('한맥')) { + return 'HANMAC'; + } + if (tenantSlug == 'ptc' || tenantName == 'ptc') { + return 'PTC'; + } + if (tenantSlug == 'tdc' || tenantName == 'tdc') { + return 'TDC'; + } + + if (email.endsWith('@samaneng.com')) { + return 'SAMAN'; + } + if (email.endsWith('@hanmaceng.co.kr')) { + return 'HANMAC'; + } + + return null; +} + +class _ProfileImageCacheEntry { + const _ProfileImageCacheEntry({ + required this.future, + required this.expiresAt, + }); + + final Future future; + final DateTime expiresAt; +} + +final profileImageApiClientProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return ProfileImageApiClient( + httpClient: ref.watch(httpClientProvider), + baseUri: Uri.parse(environment.authApiBaseUrl), + sessionStore: ref.watch(authSessionStoreProvider), + ); +}); diff --git a/app/lib/src/features/directory/domain/employee.dart b/app/lib/src/features/directory/domain/employee.dart index a48ca82..7baeaf1 100644 --- a/app/lib/src/features/directory/domain/employee.dart +++ b/app/lib/src/features/directory/domain/employee.dart @@ -15,6 +15,7 @@ class Employee { this.status, this.profileImageUrl, this.sortOrder, + this.isManager = false, }); final String id; @@ -32,6 +33,7 @@ class Employee { final String? status; final String? profileImageUrl; final int? sortOrder; + final bool isManager; factory Employee.fromJson(Map json) { return Employee( @@ -50,6 +52,7 @@ class Employee { status: json['status'] as String?, profileImageUrl: json['profileImageUrl'] as String?, sortOrder: json['sortOrder'] as int?, + isManager: json['isManager'] as bool? ?? false, ); } @@ -70,6 +73,7 @@ class Employee { 'status': status, 'profileImageUrl': profileImageUrl, 'sortOrder': sortOrder, + 'isManager': isManager, }; } } @@ -151,6 +155,7 @@ class EmployeeDetail extends Employee { super.status, super.profileImageUrl, super.sortOrder, + super.isManager, required this.joinedTenants, required this.actions, }); @@ -175,6 +180,7 @@ class EmployeeDetail extends Employee { status: json['status'] as String?, profileImageUrl: json['profileImageUrl'] as String?, sortOrder: json['sortOrder'] as int?, + isManager: json['isManager'] as bool? ?? false, joinedTenants: (json['joinedTenants'] as List? ?? []) .map((item) => TenantRef.fromJson(item as Map)) .toList(), diff --git a/app/lib/src/features/directory/presentation/directory_navigation.dart b/app/lib/src/features/directory/presentation/directory_navigation.dart new file mode 100644 index 0000000..11ba63e --- /dev/null +++ b/app/lib/src/features/directory/presentation/directory_navigation.dart @@ -0,0 +1,228 @@ +import '../../organization/domain/organization_models.dart'; + +class TenantNavigationModel { + const TenantNavigationModel({ + required this.selectedTenant, + required this.selectedCompanyTenant, + required this.pinnedTenant, + required this.companyTenants, + required this.breadcrumbTenants, + required this.visibleChips, + required this.childTenants, + required this.selectedTenantSubtreeSlugs, + }); + + final TenantSummary? selectedTenant; + final TenantSummary? selectedCompanyTenant; + final TenantSummary? pinnedTenant; + final List companyTenants; + final List breadcrumbTenants; + final List visibleChips; + final List childTenants; + final List selectedTenantSubtreeSlugs; + + bool get showsCompanyDirectory => selectedTenant == null; + bool get hasChildren => childTenants.isNotEmpty; +} + +TenantNavigationModel buildTenantNavigationModel({ + required List tenants, + required String selectedTenantSlug, + required String pinnedTenantSlug, +}) { + final selectedTenant = _findTenantBySlug(tenants, selectedTenantSlug); + final pinnedTenant = _findTenantBySlug(tenants, pinnedTenantSlug); + final companyTenants = [ + for (final tenant in tenants) + if (tenant.type == 'COMPANY') tenant, + ]; + final breadcrumbTenants = selectedTenant == null + ? const [] + : _buildBreadcrumbTenants(tenants, selectedTenant); + final selectedCompanyTenant = _resolveSelectedCompanyTenant( + selectedTenant: selectedTenant, + breadcrumbTenants: breadcrumbTenants, + ); + final childTenants = selectedTenant == null + ? companyTenants + : [ + for (final tenant in tenants) + if (tenant.parentId == selectedTenant.id) tenant, + ]; + final selectedTenantSubtreeSlugs = selectedTenant == null + ? const [] + : buildTenantSubtreeSlugs(tenants: tenants, rootTenant: selectedTenant); + + final visibleChips = []; + final seenSlugs = {}; + + void addChip(TenantSummary tenant) { + if (tenant.slug.trim().isEmpty || !seenSlugs.add(tenant.slug)) { + return; + } + visibleChips.add(tenant); + } + + for (final tenant in companyTenants) { + addChip(tenant); + } + + if (pinnedTenant != null && pinnedTenant.type != 'COMPANY') { + addChip(pinnedTenant); + } + + for (final tenant in breadcrumbTenants) { + if (tenant.type != 'COMPANY') { + addChip(tenant); + } + } + + return TenantNavigationModel( + selectedTenant: selectedTenant, + selectedCompanyTenant: selectedCompanyTenant, + pinnedTenant: pinnedTenant, + companyTenants: companyTenants, + breadcrumbTenants: breadcrumbTenants, + visibleChips: visibleChips, + childTenants: childTenants, + selectedTenantSubtreeSlugs: selectedTenantSubtreeSlugs, + ); +} + +List buildTenantSubtreeSlugs({ + required List tenants, + required TenantSummary rootTenant, +}) { + final tenantsByParentId = >{}; + for (final tenant in tenants) { + final parentId = tenant.parentId; + if (parentId == null || parentId.trim().isEmpty) { + continue; + } + tenantsByParentId + .putIfAbsent(parentId, () => []) + .add(tenant); + } + + final slugs = []; + final queue = [rootTenant]; + final visitedIds = {}; + while (queue.isNotEmpty) { + final current = queue.removeAt(0); + if (!visitedIds.add(current.id)) { + continue; + } + if (current.slug.trim().isNotEmpty) { + slugs.add(current.slug); + } + queue.addAll(tenantsByParentId[current.id] ?? const []); + } + return slugs; +} + +String resolvePinnedTenantSlug({ + required List tenants, + required String companySlug, + required String? departmentName, +}) { + final normalizedDepartment = departmentName?.trim(); + if (normalizedDepartment == null || normalizedDepartment.isEmpty) { + return companySlug; + } + + final companyTenant = _findTenantBySlug(tenants, companySlug); + if (companyTenant == null) { + return companySlug; + } + + final match = _findDescendantTenantByName( + tenants: tenants, + rootTenantId: companyTenant.id, + tenantName: normalizedDepartment, + ); + return match?.slug ?? companySlug; +} + +List _buildBreadcrumbTenants( + List tenants, + TenantSummary selectedTenant, +) { + final tenantsById = {for (final tenant in tenants) tenant.id: tenant}; + final reversed = [selectedTenant]; + var current = selectedTenant; + while (current.parentId != null && current.parentId!.trim().isNotEmpty) { + final parent = tenantsById[current.parentId!]; + if (parent == null) { + break; + } + reversed.add(parent); + current = parent; + } + return reversed.reversed.toList(growable: false); +} + +TenantSummary? _findTenantBySlug(List tenants, String slug) { + for (final tenant in tenants) { + if (tenant.slug == slug) { + return tenant; + } + } + return null; +} + +TenantSummary? _resolveSelectedCompanyTenant({ + required TenantSummary? selectedTenant, + required List breadcrumbTenants, +}) { + if (selectedTenant == null) { + return null; + } + if (selectedTenant.type == 'COMPANY') { + return selectedTenant; + } + for (final tenant in breadcrumbTenants) { + if (tenant.type == 'COMPANY') { + return tenant; + } + } + return null; +} + +TenantSummary? _findDescendantTenantByName({ + required List tenants, + required String rootTenantId, + required String tenantName, +}) { + final normalizedName = tenantName.trim().toLowerCase(); + if (normalizedName.isEmpty) { + return null; + } + + final tenantsByParentId = >{}; + for (final tenant in tenants) { + final parentId = tenant.parentId; + if (parentId == null || parentId.trim().isEmpty) { + continue; + } + tenantsByParentId + .putIfAbsent(parentId, () => []) + .add(tenant); + } + + final queue = [rootTenantId]; + final visited = {}; + while (queue.isNotEmpty) { + final currentId = queue.removeAt(0); + if (!visited.add(currentId)) { + continue; + } + for (final tenant + in tenantsByParentId[currentId] ?? const []) { + if (tenant.name.trim().toLowerCase() == normalizedName) { + return tenant; + } + queue.add(tenant.id); + } + } + return null; +} diff --git a/app/lib/src/features/directory/presentation/directory_screen.dart b/app/lib/src/features/directory/presentation/directory_screen.dart index 3630adc..c09b66c 100644 --- a/app/lib/src/features/directory/presentation/directory_screen.dart +++ b/app/lib/src/features/directory/presentation/directory_screen.dart @@ -1,263 +1,793 @@ import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; -import '../data/mock_directory_data.dart'; +import '../../../core/actions/contact_launcher.dart'; +import '../../../core/network/api_error.dart'; +import '../../auth/data/auth_repository.dart'; +import '../../auth/domain/auth_models.dart'; +import '../../auth/presentation/login_screen.dart'; +import '../../favorites/data/favorites_repository.dart'; +import '../../organization/data/organization_api_client.dart'; +import '../../organization/domain/organization_models.dart'; +import '../data/directory_repository.dart'; +import '../data/profile_image_api_client.dart'; import '../domain/employee.dart'; +import 'directory_navigation.dart'; -class DirectoryScreen extends StatefulWidget { +class DirectoryScreen extends ConsumerStatefulWidget { const DirectoryScreen({super.key}); static const routePath = '/directory'; @override - State createState() => _DirectoryScreenState(); + ConsumerState createState() => _DirectoryScreenState(); } enum _DirectoryView { employees, organization, favorites } -class _DirectoryScreenState extends State { +const _syntheticPinnedDepartmentSlug = '__pinned_department__'; + +class _InitialDirectoryContext { + const _InitialDirectoryContext({ + required this.companySlug, + required this.departmentName, + }); + + final String companySlug; + final String? departmentName; +} + +final initialDirectoryContextProvider = + FutureProvider.autoDispose<_InitialDirectoryContext>((ref) async { + final session = await ref.watch(authRepositoryProvider).loadSession(); + if (session == null) { + return const _InitialDirectoryContext( + companySlug: 'all', + departmentName: null, + ); + } + + final companySlug = session.user.tenantSlug.trim(); + if (companySlug.isEmpty) { + return _resolveInitialDirectoryContextFromOrgChart( + ref, + fallback: _InitialDirectoryContext( + companySlug: 'all', + departmentName: session.user.department, + ), + user: session.user, + ); + } + final context = _InitialDirectoryContext( + companySlug: companySlug, + departmentName: session.user.department, + ); + if (_normalizedDepartmentName(context.departmentName) != null) { + return context; + } + return _resolveInitialDirectoryContextFromOrgChart( + ref, + fallback: context, + user: session.user, + ); + }); + +Future<_InitialDirectoryContext> _resolveInitialDirectoryContextFromOrgChart( + Ref ref, { + required _InitialDirectoryContext fallback, + required LoginUser user, +}) async { + try { + final snapshot = await ref + .watch(organizationRepositoryProvider) + .getOrgChart(); + final employee = _findCurrentEmployee(snapshot.employees, user); + if (employee == null) { + return fallback; + } + + final employeeTenantSlug = employee.tenantSlug.trim(); + final employeeDepartment = _normalizedDepartmentName(employee.department); + final employeeTenantName = _normalizedDepartmentName(employee.tenantName); + return _InitialDirectoryContext( + companySlug: employeeTenantSlug.isEmpty + ? fallback.companySlug + : employeeTenantSlug, + departmentName: + employeeDepartment ?? employeeTenantName ?? fallback.departmentName, + ); + } catch (_) { + return fallback; + } +} + +Employee? _findCurrentEmployee(List employees, LoginUser user) { + final userId = user.id.trim(); + if (userId.isNotEmpty) { + for (final employee in employees) { + if (employee.id.trim() == userId) { + return employee; + } + } + } + + final userPhone = _normalizedPhone(user.phoneNumber); + if (userPhone.isNotEmpty) { + for (final employee in employees) { + if (_phonesMatch(_normalizedPhone(employee.phoneNumber), userPhone) || + _phonesMatch(_normalizedPhone(employee.phoneDisplay), userPhone)) { + return employee; + } + } + } + + final userName = user.name.trim(); + if (userName.isEmpty) { + return null; + } + final matches = [ + for (final employee in employees) + if (employee.name.trim() == userName) employee, + ]; + return matches.length == 1 ? matches.single : null; +} + +String _normalizedPhone(String? value) { + var digits = (value ?? '').replaceAll(RegExp(r'[^0-9]'), ''); + if (digits.startsWith('82') && digits.length >= 11) { + digits = '0${digits.substring(2)}'; + } + return digits; +} + +bool _phonesMatch(String employeePhone, String userPhone) { + if (employeePhone.isEmpty || userPhone.isEmpty) { + return false; + } + if (employeePhone == userPhone) { + return true; + } + if (employeePhone.length >= 8 && userPhone.length >= 8) { + return employeePhone.substring(employeePhone.length - 8) == + userPhone.substring(userPhone.length - 8); + } + return false; +} + +class _DirectoryScreenState extends ConsumerState { final _searchController = TextEditingController(); - final _favoriteIds = {'user-001'}; + final _tenantChipScrollController = ScrollController(); var _view = _DirectoryView.employees; - var _selectedTenantSlug = 'all'; + String? _selectedTenantSlugOverride; + var _hierarchyMode = false; var _query = ''; @override void dispose() { _searchController.dispose(); + _tenantChipScrollController.dispose(); super.dispose(); } - List get _filteredEmployees { - final normalizedQuery = _query.replaceAll('-', '').toLowerCase(); - return mockEmployees.where((employee) { - final matchesTenant = - _selectedTenantSlug == 'all' || - employee.tenantSlug == _selectedTenantSlug; - final phone = employee.phoneNumber.replaceAll(RegExp(r'[^0-9]'), ''); - final phoneDisplay = employee.phoneDisplay?.replaceAll('-', '') ?? ''; - final searchable = [ - employee.name, - employee.phoneNumber, - employee.phoneDisplay ?? '', - employee.email ?? '', - employee.tenantName, - employee.department ?? '', - employee.grade ?? '', - employee.position ?? '', - employee.jobTitle ?? '', - phone, - phoneDisplay, - ].join(' ').toLowerCase(); - final matchesQuery = - normalizedQuery.isEmpty || searchable.contains(normalizedQuery); - final matchesFavorite = - _view != _DirectoryView.favorites || - _favoriteIds.contains(employee.id); - return matchesTenant && matchesQuery && matchesFavorite; - }).toList()..sort((a, b) => (a.sortOrder ?? 0).compareTo(b.sortOrder ?? 0)); - } - @override Widget build(BuildContext context) { - final employees = _filteredEmployees; + final initialContext = ref.watch(initialDirectoryContextProvider); return Scaffold( - appBar: AppBar(title: const Text('직원검색')), + appBar: AppBar( + title: const Text('직원검색'), + actions: [ + IconButton( + tooltip: '로그아웃', + icon: const Icon(Icons.logout), + onPressed: _logout, + ), + ], + ), body: SafeArea( - child: ListView( - padding: const EdgeInsets.all(16), - children: [ - _SearchField( - controller: _searchController, - onChanged: (value) => setState(() => _query = value), + child: initialContext.when( + loading: () => const _LoadingState(), + error: (_, _) => _buildDirectoryContent( + const _InitialDirectoryContext( + companySlug: 'all', + departmentName: null, ), - const SizedBox(height: 12), - _TenantFilterBar( - selectedTenantSlug: _selectedTenantSlug, - onSelected: (slug) => setState(() => _selectedTenantSlug = slug), - ), - const SizedBox(height: 12), - _ViewSelector( - selected: _view, - onSelected: (value) => setState(() => _view = value), - ), - const SizedBox(height: 16), - _SummaryRow( - count: employees.length, - favoritesCount: _favoriteIds.length, - ), - const SizedBox(height: 8), - if (_view == _DirectoryView.organization) - _OrganizationSection( - employees: employees, - favoriteIds: _favoriteIds, - onFavoriteToggle: _toggleFavorite, - onEmployeeTap: _showEmployeeDetail, - ) - else if (employees.isEmpty) - const _EmptyState() - else - for (final employee in employees) - _EmployeeTile( - employee: employee, - isFavorite: _favoriteIds.contains(employee.id), - onFavoriteToggle: () => _toggleFavorite(employee.id), - onTap: () => _showEmployeeDetail(employee), - ), - ], + ), + data: _buildDirectoryContent, ), ), ); } - void _toggleFavorite(String employeeId) { + Widget _buildDirectoryContent(_InitialDirectoryContext initialContext) { + final initialTenantSlug = initialContext.companySlug; + final effectiveQuery = _effectiveSearchQuery(_query); + final searchHelperText = _searchHelperText(_query); + final pinnedDepartmentName = _normalizedDepartmentName( + initialContext.departmentName, + ); + final tenantsAsync = ref.watch(tenantListProvider); + final tenants = tenantsAsync.asData?.value; + final pinnedTenantSlug = tenants == null + ? initialTenantSlug + : resolvePinnedTenantSlug( + tenants: tenants, + companySlug: initialTenantSlug, + departmentName: initialContext.departmentName, + ); + final showSyntheticPinnedDepartmentChip = + pinnedDepartmentName != null && pinnedTenantSlug == initialTenantSlug; + final defaultSelectedTenantSlug = showSyntheticPinnedDepartmentChip + ? _syntheticPinnedDepartmentSlug + : pinnedTenantSlug == initialTenantSlug + ? initialTenantSlug + : pinnedTenantSlug; + final selectedTenantSlug = + _selectedTenantSlugOverride ?? defaultSelectedTenantSlug; + final navigation = tenants == null + ? null + : buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: selectedTenantSlug, + pinnedTenantSlug: pinnedTenantSlug, + ); + final directoryQuery = _buildDirectoryQuery( + query: effectiveQuery, + selectedTenantSlug: selectedTenantSlug, + initialTenantSlug: initialTenantSlug, + navigation: navigation, + pinnedDepartmentName: pinnedDepartmentName, + ); + final showsHierarchy = + tenants != null && + _view == _DirectoryView.organization && + directoryQuery.query.trim().isEmpty && + _hierarchyMode && + navigation != null && + navigation.hasChildren; + final shouldLoadEmployees = + tenants != null && + (!showsHierarchy || navigation.selectedTenant != null); + final employeesAsync = shouldLoadEmployees + ? ref.watch(directoryEmployeesProvider(directoryQuery)) + : const AsyncValue>.data([]); + final favoriteIds = ref.watch(favoriteEmployeeIdsProvider).value ?? {}; + return Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _SearchField( + controller: _searchController, + helperText: searchHelperText, + onChanged: (value) => setState(() => _query = value), + ), + const SizedBox(height: 12), + Expanded( + child: _buildAsyncDirectorySection( + directoryQuery: directoryQuery, + effectiveQuery: effectiveQuery, + employeesAsync: employeesAsync, + tenantsAsync: tenantsAsync, + favoriteIds: favoriteIds, + initialTenantSlug: initialTenantSlug, + selectedTenantSlug: selectedTenantSlug, + pinnedTenantSlug: pinnedTenantSlug, + pinnedDepartmentName: pinnedDepartmentName, + showSyntheticPinnedDepartmentChip: + showSyntheticPinnedDepartmentChip, + navigation: navigation, + ), + ), + ], + ), + ); + } + + Widget _buildAsyncDirectorySection({ + required DirectoryQuery directoryQuery, + required String effectiveQuery, + required AsyncValue> employeesAsync, + required AsyncValue> tenantsAsync, + required Set favoriteIds, + required String initialTenantSlug, + required String selectedTenantSlug, + required String pinnedTenantSlug, + required String? pinnedDepartmentName, + required bool showSyntheticPinnedDepartmentChip, + required TenantNavigationModel? navigation, + }) { + final employees = employeesAsync.asData?.value; + final tenants = tenantsAsync.asData?.value; + final firstError = + employeesAsync.whenOrNull(error: (error, _) => error) ?? + tenantsAsync.whenOrNull(error: (error, _) => error); + + if (firstError != null) { + return _ErrorState( + message: _errorMessage(firstError), + onRetry: () { + ref.invalidate(directoryEmployeesProvider(directoryQuery)); + ref.invalidate(tenantListProvider); + }, + onRelogin: _requiresRelogin(firstError) ? _relogin : null, + ); + } + + if (employees == null || tenants == null) { + return const _LoadingState(); + } + + final visibleEmployees = _visibleEmployees( + employees, + favoriteIds, + effectiveQuery, + ); + final resolvedNavigation = + navigation ?? + buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: selectedTenantSlug, + pinnedTenantSlug: pinnedTenantSlug, + ); + final showsHierarchy = + _view == _DirectoryView.organization && + directoryQuery.query.trim().isEmpty && + _hierarchyMode && + resolvedNavigation.hasChildren; + final directHierarchyEmployees = showsHierarchy + ? _directEmployeesForSelectedTenant( + visibleEmployees, + resolvedNavigation.selectedTenant, + ) + : const []; + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + _TenantNavigationBar( + scrollController: _tenantChipScrollController, + navigation: resolvedNavigation, + selectedTenantSlug: selectedTenantSlug, + pinnedDepartmentName: pinnedDepartmentName, + showSyntheticPinnedDepartmentChip: showSyntheticPinnedDepartmentChip, + onSelected: (slug) => _onTenantSelected( + slug: slug, + initialTenantSlug: initialTenantSlug, + enterHierarchy: + slug == 'all' || slug != initialTenantSlug || _hierarchyMode, + ), + ), + if (resolvedNavigation.breadcrumbTenants.isNotEmpty) ...[ + const SizedBox(height: 8), + const Divider(height: 1), + const SizedBox(height: 8), + _BreadcrumbBar( + breadcrumbs: resolvedNavigation.breadcrumbTenants, + selectedTenantSlug: selectedTenantSlug, + onSelected: (slug) => _onTenantSelected( + slug: slug, + initialTenantSlug: initialTenantSlug, + enterHierarchy: true, + ), + ), + ], + const SizedBox(height: 8), + const _SectionDividerMarker(), + const SizedBox(height: 12), + _ViewSelector( + selected: _view, + onSelected: (value) => setState(() { + _view = value; + if (value != _DirectoryView.organization) { + _hierarchyMode = false; + } + }), + ), + const SizedBox(height: 16), + _SummaryRow( + summaryText: showsHierarchy + ? _hierarchySummaryText( + resolvedNavigation, + directEmployeeCount: directHierarchyEmployees.length, + ) + : '검색 결과 ${visibleEmployees.length}명', + favoritesCount: favoriteIds.length, + ), + const SizedBox(height: 8), + Expanded( + child: _DirectoryResultList( + employees: visibleEmployees, + directEmployees: directHierarchyEmployees, + directSectionTitle: resolvedNavigation.selectedTenant == null + ? null + : '${resolvedNavigation.selectedTenant!.name} 조직 관리자', + favoriteIds: favoriteIds, + showsHierarchy: showsHierarchy, + childTenants: resolvedNavigation.childTenants, + view: _view, + onTenantSelected: (slug) => _onTenantSelected( + slug: slug, + initialTenantSlug: initialTenantSlug, + enterHierarchy: true, + ), + onFavoriteToggle: _toggleFavorite, + onEmployeeTap: (employee) => + _showEmployeeDetail(employee, favoriteIds), + ), + ), + ], + ); + } + + List _visibleEmployees( + List employees, + Set favoriteIds, + String effectiveQuery, + ) { + final visible = employees.where((employee) { + final matchesFavorites = + _view != _DirectoryView.favorites || + favoriteIds.contains(employee.id); + final matchesQuery = + effectiveQuery.trim().isEmpty || + _matchesEmployeeSearch(employee, effectiveQuery); + return matchesFavorites && matchesQuery; + }).toList(); + visible.sort(_compareEmployeesForOrganization); + return visible; + } + + List _directEmployeesForSelectedTenant( + List employees, + TenantSummary? selectedTenant, + ) { + if (selectedTenant == null) { + return const []; + } + final employeeIdsWithOtherMemberships = employees + .where((employee) => employee.tenantSlug != selectedTenant.slug) + .map((employee) => employee.id) + .where((id) => id.trim().isNotEmpty) + .toSet(); + final directEmployees = employees.where((employee) { + if (employee.tenantSlug != selectedTenant.slug) { + return false; + } + if (employeeIdsWithOtherMemberships.contains(employee.id)) { + return false; + } + final department = employee.department?.trim(); + return department == null || + department.isEmpty || + department == selectedTenant.name; + }).toList(); + directEmployees.sort(_compareEmployeesForOrganization); + return directEmployees; + } + + Future _toggleFavorite(String employeeId) async { + final messenger = ScaffoldMessenger.of(context); + try { + await ref.read(favoritesRepositoryProvider).toggleFavorite(employeeId); + ref.invalidate(favoriteEmployeeIdsProvider); + } catch (_) { + if (!mounted) { + return; + } + messenger.showSnackBar( + const SnackBar(content: Text('즐겨찾기를 저장할 수 없습니다.')), + ); + } + } + + bool _requiresRelogin(Object error) { + return error is ApiException && + (error.statusCode == 401 || error.statusCode == 403); + } + + String _errorMessage(Object error) { + if (_requiresRelogin(error)) { + return '로그인이 만료되었거나 권한을 확인할 수 없습니다.'; + } + return '직원 정보를 불러오지 못했습니다.'; + } + + Future _relogin() async { + await ref.read(authRepositoryProvider).logout(); + if (!mounted) { + return; + } + context.go(LoginScreen.routePath); + } + + Future _logout() async { + await ref.read(authRepositoryProvider).logout(); + if (!mounted) { + return; + } + context.go(LoginScreen.routePath); + } + + void _showEmployeeDetail(Employee employee, Set favoriteIds) { + showModalBottomSheet( + context: context, + showDragHandle: true, + builder: (context) => _EmployeeDetailSheet( + employee: employee, + favoriteIds: favoriteIds, + onFavoriteToggle: _toggleFavorite, + onContactAction: _launchContactAction, + ), + ); + } + + Future _launchContactAction( + BuildContext context, + Future action, + ) async { + final messenger = ScaffoldMessenger.of(context); + final launched = await action; + if (!mounted || launched) { + return; + } + messenger.showSnackBar(const SnackBar(content: Text('연락 기능을 실행할 수 없습니다.'))); + } + + void _onTenantSelected({ + required String slug, + required String initialTenantSlug, + required bool enterHierarchy, + }) { setState(() { - if (_favoriteIds.contains(employeeId)) { - _favoriteIds.remove(employeeId); + _selectedTenantSlugOverride = slug; + if (slug == 'all') { + _hierarchyMode = true; + } else if (slug == _syntheticPinnedDepartmentSlug) { + _hierarchyMode = false; } else { - _favoriteIds.add(employeeId); + _hierarchyMode = enterHierarchy; } }); } - void _showEmployeeDetail(Employee employee) { - showModalBottomSheet( - context: context, - showDragHandle: true, - builder: (context) { - final hasPhone = employee.phoneNumber.trim().isNotEmpty; - return SafeArea( - child: Padding( - padding: const EdgeInsets.fromLTRB(20, 8, 20, 24), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - CircleAvatar(child: Text(employee.name.characters.first)), - const SizedBox(width: 12), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - employee.name, - style: Theme.of(context).textTheme.titleLarge, - ), - Text( - '${employee.tenantName} · ${employee.department ?? '-'}', - style: Theme.of(context).textTheme.bodyMedium, - ), - ], - ), - ), - IconButton( - tooltip: _favoriteIds.contains(employee.id) - ? '즐겨찾기 해제' - : '즐겨찾기 추가', - onPressed: () { - _toggleFavorite(employee.id); - Navigator.of(context).pop(); - }, - icon: Icon( - _favoriteIds.contains(employee.id) - ? Icons.star - : Icons.star_border, - ), - ), - ], - ), - const SizedBox(height: 16), - _DetailLine(label: '전화번호', value: employee.phoneDisplay ?? '-'), - _DetailLine(label: '이메일', value: employee.email ?? '-'), - _DetailLine(label: '직급/직위', value: _roleText(employee)), - _DetailLine(label: '직무', value: employee.jobTitle ?? '-'), - const SizedBox(height: 16), - Row( - children: [ - Expanded( - child: FilledButton.icon( - onPressed: hasPhone ? () {} : null, - icon: const Icon(Icons.call), - label: const Text('전화'), - ), - ), - const SizedBox(width: 8), - Expanded( - child: OutlinedButton.icon( - onPressed: hasPhone ? () {} : null, - icon: const Icon(Icons.sms), - label: const Text('문자'), - ), - ), - ], - ), - ], - ), - ), - ); - }, - ); + DirectoryQuery _buildDirectoryQuery({ + required String query, + required String selectedTenantSlug, + required String initialTenantSlug, + required TenantNavigationModel? navigation, + required String? pinnedDepartmentName, + }) { + if (selectedTenantSlug == _syntheticPinnedDepartmentSlug) { + return DirectoryQuery( + query: query, + tenantSlug: initialTenantSlug, + department: pinnedDepartmentName, + ); + } + final selectedTenant = navigation?.selectedTenant; + if (selectedTenant == null && + selectedTenantSlug != 'all' && + pinnedDepartmentName != null) { + return DirectoryQuery( + query: query, + tenantSlug: initialTenantSlug, + department: pinnedDepartmentName, + ); + } + if (selectedTenant != null) { + return DirectoryQuery( + query: query, + tenantSlug: selectedTenant.slug, + tenantSlugs: + navigation?.selectedTenantSubtreeSlugs ?? [selectedTenant.slug], + ); + } + return DirectoryQuery(query: query, tenantSlug: selectedTenantSlug); } } +String? _normalizedDepartmentName(String? value) { + final normalized = value?.trim() ?? ''; + return normalized.isEmpty ? null : normalized; +} + +String _hierarchySummaryText( + TenantNavigationModel navigation, { + required int directEmployeeCount, +}) { + final directText = directEmployeeCount > 0 + ? ' · 조직 관리자 $directEmployeeCount명' + : ''; + if (navigation.selectedTenant == null) { + return '가족사 ${navigation.childTenants.length}개$directText'; + } + return '하위 조직 ${navigation.childTenants.length}개$directText'; +} + class _SearchField extends StatelessWidget { - const _SearchField({required this.controller, required this.onChanged}); + const _SearchField({ + required this.controller, + required this.onChanged, + this.helperText, + }); final TextEditingController controller; final ValueChanged onChanged; + final String? helperText; @override Widget build(BuildContext context) { return TextField( controller: controller, onChanged: onChanged, - decoration: const InputDecoration( + keyboardType: TextInputType.text, + textInputAction: TextInputAction.search, + autocorrect: false, + enableSuggestions: false, + smartDashesType: SmartDashesType.disabled, + smartQuotesType: SmartQuotesType.disabled, + decoration: InputDecoration( border: OutlineInputBorder(), hintText: '직원명 또는 전화번호 검색', - prefixIcon: Icon(Icons.search), + helperText: helperText, + prefixIcon: const Icon(Icons.search), ), ); } } -class _TenantFilterBar extends StatelessWidget { - const _TenantFilterBar({ +class _TenantNavigationBar extends StatelessWidget { + const _TenantNavigationBar({ + required this.scrollController, + required this.navigation, + required this.selectedTenantSlug, + required this.pinnedDepartmentName, + required this.showSyntheticPinnedDepartmentChip, + required this.onSelected, + }); + + final ScrollController scrollController; + final TenantNavigationModel navigation; + final String selectedTenantSlug; + final String? pinnedDepartmentName; + final bool showSyntheticPinnedDepartmentChip; + final ValueChanged onSelected; + + @override + Widget build(BuildContext context) { + final remainingChips = [ + for (final tenant in navigation.visibleChips) + if (tenant.slug != navigation.pinnedTenant?.slug) tenant, + ]; + final syntheticPinnedLabel = showSyntheticPinnedDepartmentChip + ? pinnedDepartmentName + : null; + final showPinnedTenantChip = + navigation.pinnedTenant != null && + navigation.pinnedTenant!.type != 'COMPANY' && + _normalizedChipLabel(navigation.pinnedTenant!.name) != + _normalizedChipLabel(syntheticPinnedLabel); + return Scrollbar( + controller: scrollController, + thumbVisibility: true, + scrollbarOrientation: ScrollbarOrientation.bottom, + child: SingleChildScrollView( + controller: scrollController, + scrollDirection: Axis.horizontal, + child: Row( + children: [ + if (showPinnedTenantChip) + _buildNavigationChip( + context, + label: navigation.pinnedTenant!.name, + selected: + navigation.selectedTenant?.slug == + navigation.pinnedTenant!.slug, + onTap: () => onSelected(navigation.pinnedTenant!.slug), + ), + if (syntheticPinnedLabel != null) + _buildNavigationChip( + context, + label: syntheticPinnedLabel, + selected: selectedTenantSlug == _syntheticPinnedDepartmentSlug, + onTap: () => onSelected(_syntheticPinnedDepartmentSlug), + ), + _buildNavigationChip( + context, + label: '전체', + selected: + navigation.selectedTenant == null && + selectedTenantSlug != _syntheticPinnedDepartmentSlug, + onTap: () => onSelected('all'), + ), + for (final tenant in remainingChips) + _buildNavigationChip( + context, + label: tenant.name, + selected: navigation.selectedTenant?.slug == tenant.slug, + onTap: () => onSelected(tenant.slug), + ), + ], + ), + ), + ); + } + + Widget _buildNavigationChip( + BuildContext context, { + required String label, + required bool selected, + required VoidCallback onTap, + }) { + final colorScheme = Theme.of(context).colorScheme; + return Padding( + padding: const EdgeInsets.only(right: 8, bottom: 8), + child: FilterChip( + showCheckmark: false, + label: Text( + label, + style: TextStyle( + color: selected ? colorScheme.onPrimaryContainer : null, + fontWeight: selected ? FontWeight.w700 : FontWeight.w500, + ), + ), + selected: selected, + selectedColor: colorScheme.primaryContainer, + backgroundColor: colorScheme.surface, + side: BorderSide( + color: selected ? colorScheme.primary : colorScheme.outlineVariant, + width: selected ? 1.5 : 1, + ), + onSelected: (_) => onTap(), + ), + ); + } +} + +String _normalizedChipLabel(String? value) { + return (value ?? '').trim().toLowerCase(); +} + +class _BreadcrumbBar extends StatelessWidget { + const _BreadcrumbBar({ + required this.breadcrumbs, required this.selectedTenantSlug, required this.onSelected, }); + final List breadcrumbs; final String selectedTenantSlug; final ValueChanged onSelected; @override Widget build(BuildContext context) { - final companyTenants = mockTenants.where( - (tenant) => tenant.type == 'COMPANY', - ); - return SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: [ - Padding( - padding: const EdgeInsets.only(right: 8), - child: FilterChip( - label: const Text('전체'), - selected: selectedTenantSlug == 'all', - onSelected: (_) => onSelected('all'), + return Wrap( + spacing: 8, + runSpacing: 8, + children: [ + for (final tenant in breadcrumbs) + FilterChip( + showCheckmark: false, + avatar: Icon( + tenant.slug == selectedTenantSlug + ? Icons.check_circle + : Icons.chevron_right, + size: 18, + color: tenant.slug == selectedTenantSlug + ? Theme.of(context).colorScheme.primary + : null, ), + label: Text(tenant.name), + selected: tenant.slug == selectedTenantSlug, + selectedColor: Theme.of(context).colorScheme.primaryContainer, + side: BorderSide( + color: tenant.slug == selectedTenantSlug + ? Theme.of(context).colorScheme.primary + : Theme.of(context).colorScheme.outlineVariant, + ), + onSelected: (_) => onSelected(tenant.slug), ), - for (final tenant in companyTenants) - Padding( - padding: const EdgeInsets.only(right: 8), - child: FilterChip( - label: Text(tenant.name), - selected: selectedTenantSlug == tenant.slug, - onSelected: (_) => onSelected(tenant.slug), - ), - ), - ], - ), + ], ); } } @@ -294,17 +824,27 @@ class _ViewSelector extends StatelessWidget { } } -class _SummaryRow extends StatelessWidget { - const _SummaryRow({required this.count, required this.favoritesCount}); +class _SectionDividerMarker extends StatelessWidget { + const _SectionDividerMarker(); - final int count; + @override + Widget build(BuildContext context) { + final colorScheme = Theme.of(context).colorScheme; + return Divider(height: 1, thickness: 1, color: colorScheme.outlineVariant); + } +} + +class _SummaryRow extends StatelessWidget { + const _SummaryRow({required this.summaryText, required this.favoritesCount}); + + final String summaryText; final int favoritesCount; @override Widget build(BuildContext context) { return Row( children: [ - Expanded(child: Text('검색 결과 $count명')), + Expanded(child: Text(summaryText)), Icon( Icons.star, size: 18, @@ -317,6 +857,167 @@ class _SummaryRow extends StatelessWidget { } } +class _DirectoryResultList extends StatelessWidget { + const _DirectoryResultList({ + required this.employees, + required this.directEmployees, + required this.directSectionTitle, + required this.favoriteIds, + required this.showsHierarchy, + required this.childTenants, + required this.view, + required this.onTenantSelected, + required this.onFavoriteToggle, + required this.onEmployeeTap, + }); + + final List employees; + final List directEmployees; + final String? directSectionTitle; + final Set favoriteIds; + final bool showsHierarchy; + final List childTenants; + final _DirectoryView view; + final ValueChanged onTenantSelected; + final ValueChanged onFavoriteToggle; + final ValueChanged onEmployeeTap; + + @override + Widget build(BuildContext context) { + if (showsHierarchy) { + return ListView( + padding: const EdgeInsets.only(bottom: 16), + children: [ + if (directEmployees.isNotEmpty) ...[ + _DirectEmployeeSection( + employees: directEmployees, + title: directSectionTitle ?? '조직 관리자', + favoriteIds: favoriteIds, + onFavoriteToggle: onFavoriteToggle, + onEmployeeTap: onEmployeeTap, + ), + const SizedBox(height: 12), + ], + _HierarchySection( + tenants: childTenants, + onSelected: onTenantSelected, + ), + ], + ); + } + + if (view == _DirectoryView.organization) { + return ListView( + padding: const EdgeInsets.only(bottom: 16), + children: [ + _OrganizationSection( + employees: employees, + favoriteIds: favoriteIds, + onFavoriteToggle: onFavoriteToggle, + onEmployeeTap: onEmployeeTap, + ), + ], + ); + } + + if (employees.isEmpty) { + return const _EmptyState(); + } + + return ListView.builder( + padding: const EdgeInsets.only(bottom: 16), + itemCount: employees.length, + itemBuilder: (context, index) { + final employee = employees[index]; + return _EmployeeTile( + employee: employee, + isFavorite: favoriteIds.contains(employee.id), + onFavoriteToggle: () => onFavoriteToggle(employee.id), + onTap: () => onEmployeeTap(employee), + ); + }, + ); + } +} + +class _DirectEmployeeSection extends StatelessWidget { + const _DirectEmployeeSection({ + required this.employees, + required this.title, + required this.favoriteIds, + required this.onFavoriteToggle, + required this.onEmployeeTap, + }); + + final List employees; + final String title; + final Set favoriteIds; + final ValueChanged onFavoriteToggle; + final ValueChanged onEmployeeTap; + + @override + Widget build(BuildContext context) { + return Card( + child: ExpansionTile( + initiallyExpanded: true, + leading: const Icon(Icons.badge_outlined), + title: Text(title), + subtitle: Text('${employees.length}명'), + children: [ + for (final employee in employees) + ListTile( + leading: _EmployeeAvatar(employee: employee, radius: 16), + title: Text(employee.name), + subtitle: Text(_employeeTileSubtitle(employee)), + trailing: IconButton( + tooltip: favoriteIds.contains(employee.id) + ? '즐겨찾기 해제' + : '즐겨찾기 추가', + onPressed: () => onFavoriteToggle(employee.id), + icon: Icon( + favoriteIds.contains(employee.id) + ? Icons.star + : Icons.star_border, + ), + ), + onTap: () => onEmployeeTap(employee), + ), + ], + ), + ); + } +} + +class _HierarchySection extends StatelessWidget { + const _HierarchySection({required this.tenants, required this.onSelected}); + + final List tenants; + final ValueChanged onSelected; + + @override + Widget build(BuildContext context) { + if (tenants.isEmpty) { + return const _EmptyState(); + } + return Column( + children: [ + for (final tenant in tenants) + Card( + child: ListTile( + leading: Icon( + tenant.type == 'COMPANY' ? Icons.business : Icons.folder_open, + ), + title: Text(tenant.name), + subtitle: Text('${tenant.totalMemberCount}명'), + trailing: const Icon(Icons.chevron_right), + onTap: () => onSelected(tenant.slug), + ), + ), + ], + ); + } +} + class _EmployeeTile extends StatelessWidget { const _EmployeeTile({ required this.employee, @@ -334,16 +1035,9 @@ class _EmployeeTile extends StatelessWidget { Widget build(BuildContext context) { return Card( child: ListTile( - leading: CircleAvatar(child: Text(employee.name.characters.first)), + leading: _EmployeeAvatar(employee: employee), title: Text(employee.name), - subtitle: Text( - [ - employee.tenantName, - employee.department, - employee.position, - employee.phoneDisplay, - ].whereType().where((value) => value.isNotEmpty).join(' · '), - ), + subtitle: Text(_employeeTileSubtitle(employee)), trailing: IconButton( tooltip: isFavorite ? '즐겨찾기 해제' : '즐겨찾기 추가', onPressed: onFavoriteToggle, @@ -355,6 +1049,29 @@ class _EmployeeTile extends StatelessWidget { } } +String _employeeAffiliationText(Employee employee) { + final department = employee.department?.trim(); + if (department == null || department.isEmpty) { + return employee.tenantName; + } + if (department == employee.tenantName.trim()) { + return employee.tenantName; + } + return '${employee.tenantName} · $department'; +} + +String _employeeTileSubtitle(Employee employee) { + final parts = [ + _employeeAffiliationText(employee), + if (employee.position != null && employee.position!.trim().isNotEmpty) + employee.position!.trim(), + if (employee.phoneDisplay != null && + employee.phoneDisplay!.trim().isNotEmpty) + employee.phoneDisplay!.trim(), + ]; + return parts.join(' · '); +} + class _OrganizationSection extends StatelessWidget { const _OrganizationSection({ required this.employees, @@ -370,9 +1087,9 @@ class _OrganizationSection extends StatelessWidget { @override Widget build(BuildContext context) { - final tenantNames = employees - .map((employee) => employee.tenantName) - .toSet(); + final tenantNames = + employees.map((employee) => employee.tenantName).toSet().toList() + ..sort(); if (employees.isEmpty) { return const _EmptyState(); } @@ -412,7 +1129,8 @@ class _OrganizationGroup extends StatelessWidget { Widget build(BuildContext context) { final departments = employees .map((employee) => employee.department ?? '미지정') - .toSet(); + .toSet() + .toList(); return Card( child: ExpansionTile( initiallyExpanded: true, @@ -420,15 +1138,17 @@ class _OrganizationGroup extends StatelessWidget { title: Text(tenantName), subtitle: Text('${employees.length}명'), children: [ - for (final department in departments) + for (final department in _sortDepartments(departments)) ExpansionTile( + initiallyExpanded: true, title: Text(department), children: [ - for (final employee in employees.where( - (employee) => (employee.department ?? '미지정') == department, + for (final employee in _sortedEmployeesForDepartment( + employees, + department, )) ListTile( - leading: const Icon(Icons.person), + leading: _EmployeeAvatar(employee: employee, radius: 16), title: Text(employee.name), subtitle: Text(_roleText(employee)), trailing: IconButton( @@ -452,6 +1172,214 @@ class _OrganizationGroup extends StatelessWidget { } } +class _EmployeeAvatar extends ConsumerStatefulWidget { + const _EmployeeAvatar({required this.employee, this.radius = 20}); + + final Employee employee; + final double radius; + + @override + ConsumerState<_EmployeeAvatar> createState() => _EmployeeAvatarState(); +} + +class _EmployeeAvatarState extends ConsumerState<_EmployeeAvatar> { + late Future _imageUrlFuture; + + @override + void initState() { + super.initState(); + _imageUrlFuture = _resolveImageUrl(); + } + + @override + void didUpdateWidget(covariant _EmployeeAvatar oldWidget) { + super.didUpdateWidget(oldWidget); + if (_avatarIdentity(oldWidget.employee) != _avatarIdentity(widget.employee)) { + _imageUrlFuture = _resolveImageUrl(); + } + } + + Future _resolveImageUrl() { + return ref.read(profileImageApiClientProvider).resolveImageUrl(widget.employee); + } + + String _avatarIdentity(Employee employee) { + return [ + employee.id, + employee.email ?? '', + employee.tenantSlug, + employee.tenantName, + employee.profileImageUrl ?? '', + ].join('|'); + } + + @override + Widget build(BuildContext context) { + final fallbackText = widget.employee.name.trim().isEmpty + ? '?' + : widget.employee.name.characters.first; + + return FutureBuilder( + future: _imageUrlFuture, + builder: (context, snapshot) { + final imageUrl = snapshot.data?.trim() ?? ''; + return CircleAvatar( + radius: widget.radius, + foregroundImage: imageUrl.isEmpty ? null : NetworkImage(imageUrl), + child: Text(fallbackText), + ); + }, + ); + } +} + +class _EmployeeDetailSheet extends ConsumerStatefulWidget { + const _EmployeeDetailSheet({ + required this.employee, + required this.favoriteIds, + required this.onFavoriteToggle, + required this.onContactAction, + }); + + final Employee employee; + final Set favoriteIds; + final ValueChanged onFavoriteToggle; + final Future Function(BuildContext context, Future action) + onContactAction; + + @override + ConsumerState<_EmployeeDetailSheet> createState() => + _EmployeeDetailSheetState(); +} + +class _EmployeeDetailSheetState extends ConsumerState<_EmployeeDetailSheet> { + late Future _detailFuture; + + @override + void initState() { + super.initState(); + _detailFuture = _loadDetail(); + } + + Future _loadDetail() { + return ref + .read(employeeDetailRepositoryProvider) + .loadEmployeeDetail(widget.employee.id); + } + + @override + Widget build(BuildContext context) { + final launcher = ref.read(contactLauncherProvider); + return FutureBuilder( + future: _detailFuture, + builder: (context, snapshot) { + final detail = snapshot.data; + final employee = detail ?? widget.employee; + final hasPhone = employee.phoneNumber.trim().isNotEmpty; + final canCall = hasPhone && (detail?.actions.call ?? true); + final canSms = hasPhone && (detail?.actions.sms ?? true); + final joinedTenants = detail == null + ? '' + : detail.joinedTenants + .map((tenant) => tenant.name.trim()) + .where((name) => name.isNotEmpty) + .toSet() + .join(', '); + + return SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.fromLTRB(20, 8, 20, 24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + _EmployeeAvatar(employee: employee, radius: 22), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + employee.name, + style: Theme.of(context).textTheme.titleLarge, + ), + Text( + _employeeAffiliationText(employee), + style: Theme.of(context).textTheme.bodyMedium, + ), + ], + ), + ), + IconButton( + tooltip: widget.favoriteIds.contains(employee.id) + ? '즐겨찾기 해제' + : '즐겨찾기 추가', + onPressed: () { + Navigator.of(context).pop(); + widget.onFavoriteToggle(employee.id); + }, + icon: Icon( + widget.favoriteIds.contains(employee.id) + ? Icons.star + : Icons.star_border, + ), + ), + ], + ), + if (snapshot.connectionState == ConnectionState.waiting) ...[ + const SizedBox(height: 12), + const LinearProgressIndicator(), + ], + const SizedBox(height: 16), + _DetailLine(label: '전화번호', value: employee.phoneDisplay ?? '-'), + _DetailLine(label: '이메일', value: employee.email ?? '-'), + _DetailLine(label: '직급/직위', value: _roleText(employee)), + _DetailLine(label: '직무', value: employee.jobTitle ?? '-'), + if (joinedTenants.isNotEmpty) + _DetailLine(label: '소속', value: joinedTenants), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: FilledButton.icon( + onPressed: canCall + ? () => widget.onContactAction( + context, + launcher.call(employee.phoneNumber), + ) + : null, + icon: const Icon(Icons.call), + label: const Text('전화'), + ), + ), + const SizedBox(width: 8), + Expanded( + child: OutlinedButton.icon( + onPressed: canSms + ? () => widget.onContactAction( + context, + launcher.sms(employee.phoneNumber), + ) + : null, + icon: const Icon(Icons.sms), + label: const Text('문자'), + ), + ), + ], + ), + ], + ), + ), + ), + ); + }, + ); + } +} + class _DetailLine extends StatelessWidget { const _DetailLine({required this.label, required this.value}); @@ -487,6 +1415,57 @@ class _EmptyState extends StatelessWidget { } } +class _LoadingState extends StatelessWidget { + const _LoadingState(); + + @override + Widget build(BuildContext context) { + return const Padding( + padding: EdgeInsets.symmetric(vertical: 48), + child: Center(child: CircularProgressIndicator()), + ); + } +} + +class _ErrorState extends StatelessWidget { + const _ErrorState({ + required this.message, + required this.onRetry, + this.onRelogin, + }); + + final String message; + final VoidCallback onRetry; + final Future Function()? onRelogin; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 48), + child: Center( + child: Column( + children: [ + Text(message), + const SizedBox(height: 12), + if (onRelogin != null) + FilledButton.icon( + onPressed: onRelogin, + icon: const Icon(Icons.login), + label: const Text('다시 로그인'), + ) + else + OutlinedButton.icon( + onPressed: onRetry, + icon: const Icon(Icons.refresh), + label: const Text('다시 시도'), + ), + ], + ), + ), + ); + } +} + String _roleText(Employee employee) { return [ employee.grade, @@ -494,3 +1473,173 @@ String _roleText(Employee employee) { employee.jobTitle, ].whereType().where((value) => value.isNotEmpty).join(' · '); } + +List _sortDepartments(List departments) { + final sorted = [...departments]; + sorted.sort((left, right) { + if (left == '미지정' && right != '미지정') { + return -1; + } + if (left != '미지정' && right == '미지정') { + return 1; + } + return left.compareTo(right); + }); + return sorted; +} + +List _sortedEmployeesForDepartment( + List employees, + String department, +) { + final sorted = employees + .where((employee) => (employee.department ?? '미지정') == department) + .toList(); + sorted.sort(_compareEmployeesForOrganization); + return sorted; +} + +int _compareEmployeesForOrganization(Employee left, Employee right) { + final leaderCompare = _leaderPriority(left).compareTo(_leaderPriority(right)); + if (leaderCompare != 0) { + return leaderCompare; + } + + final rankCompare = _rankPriority(left).compareTo(_rankPriority(right)); + if (rankCompare != 0) { + return rankCompare; + } + + final nameCompare = left.name.compareTo(right.name); + if (nameCompare != 0) { + return nameCompare; + } + + return (left.sortOrder ?? 1 << 30).compareTo(right.sortOrder ?? 1 << 30); +} + +int _leaderPriority(Employee employee) { + if (employee.isManager) { + return 0; + } + final position = employee.position?.trim() ?? ''; + return position.contains('팀장') ? 0 : 1; +} + +int _rankPriority(Employee employee) { + const priorityByToken = { + '사장': 0, + '부사장': 1, + '수석': 2, + '전무': 3, + '상무': 4, + '이사': 5, + '책임': 6, + '부장': 7, + '선임': 8, + '과장': 9, + '대리': 10, + '사원': 11, + }; + final values = [ + employee.grade?.trim() ?? '', + employee.position?.trim() ?? '', + employee.jobTitle?.trim() ?? '', + ]; + for (final value in values) { + for (final entry in priorityByToken.entries) { + if (value.contains(entry.key)) { + return entry.value; + } + } + } + return priorityByToken.length + 1; +} + +String _effectiveSearchQuery(String rawQuery) { + final trimmed = rawQuery.trim(); + if (trimmed.isEmpty) { + return ''; + } + + final hasHangul = RegExp(r'[가-힣]').hasMatch(trimmed); + if (hasHangul) { + return trimmed; + } + + final digitOnly = RegExp(r'^[0-9\s-]+$').hasMatch(trimmed); + if (digitOnly) { + final digits = trimmed.replaceAll(RegExp(r'[^0-9]'), ''); + final normalizedDigits = digits.startsWith('010') + ? digits.substring(3) + : digits; + return normalizedDigits.length >= 2 ? trimmed : ''; + } + + return trimmed.length >= 2 ? trimmed : ''; +} + +bool _matchesEmployeeSearch(Employee employee, String query) { + final trimmed = query.trim(); + if (trimmed.isEmpty) { + return true; + } + + final digitOnly = RegExp(r'^[0-9\s-]+$').hasMatch(trimmed); + if (digitOnly) { + final normalizedQuery = _normalizedSearchDigits(trimmed); + if (normalizedQuery.isEmpty) { + return true; + } + + final phoneCandidates = { + _normalizedSearchDigits(employee.phoneNumber), + _normalizedSearchDigits(employee.phoneDisplay ?? ''), + }..removeWhere((value) => value.isEmpty); + + return phoneCandidates.any((value) => value.contains(normalizedQuery)); + } + + final normalizedQuery = trimmed.toLowerCase(); + return employee.name.toLowerCase().contains(normalizedQuery); +} + +String _normalizedSearchDigits(String value) { + final digits = value.replaceAll(RegExp(r'[^0-9]'), ''); + if (digits.startsWith('8210')) { + return digits.substring(4); + } + if (digits.startsWith('010')) { + return digits.substring(3); + } + return digits; +} + +String? _searchHelperText(String rawQuery) { + final trimmed = rawQuery.trim(); + if (trimmed.isEmpty) { + return null; + } + + final hasHangul = RegExp(r'[가-힣]').hasMatch(trimmed); + if (hasHangul) { + return null; + } + + final digitOnly = RegExp(r'^[0-9\s-]+$').hasMatch(trimmed); + if (digitOnly) { + final digits = trimmed.replaceAll(RegExp(r'[^0-9]'), ''); + final normalizedDigits = digits.startsWith('010') + ? digits.substring(3) + : digits; + if (normalizedDigits.length < 2) { + return '전화번호는 010 제외 2자리 이상 입력'; + } + return null; + } + + if (trimmed.length < 2) { + return '직원명 1자 이상 또는 전화번호(010 제외) 2자리 이상 입력'; + } + return null; +} diff --git a/app/lib/src/features/favorites/data/favorites_repository.dart b/app/lib/src/features/favorites/data/favorites_repository.dart new file mode 100644 index 0000000..0dc3b5b --- /dev/null +++ b/app/lib/src/features/favorites/data/favorites_repository.dart @@ -0,0 +1,100 @@ +import 'dart:convert'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import '../domain/favorite_employee.dart'; + +abstract class FavoritesRepository { + const FavoritesRepository(); + + Future> loadFavorites(); + + Future toggleFavorite(String employeeId); +} + +class SharedPreferencesFavoritesRepository implements FavoritesRepository { + SharedPreferencesFavoritesRepository({ + required SharedPreferencesAsync preferences, + }) : this.withStore(SharedPreferencesFavoritesStore(preferences)); + + const SharedPreferencesFavoritesRepository.withStore(this.store); + + static const _storageKey = 'tdc114plus.favoriteEmployees'; + + final FavoritesKeyValueStore store; + + @override + Future> loadFavorites() async { + final encoded = await store.getString(_storageKey); + if (encoded == null || encoded.isEmpty) { + return const []; + } + + final decoded = jsonDecode(encoded) as List; + return decoded + .map((item) => FavoriteEmployee.fromJson(item as Map)) + .where((favorite) => favorite.employeeId.isNotEmpty) + .toList(); + } + + @override + Future toggleFavorite(String employeeId) async { + final normalizedId = employeeId.trim(); + if (normalizedId.isEmpty) { + return; + } + + final favorites = await loadFavorites(); + final nextFavorites = favorites + .where((favorite) => favorite.employeeId != normalizedId) + .toList(); + if (nextFavorites.length == favorites.length) { + nextFavorites.add( + FavoriteEmployee(employeeId: normalizedId, createdAt: DateTime.now()), + ); + } + + await store.setString( + _storageKey, + jsonEncode(nextFavorites.map((favorite) => favorite.toJson()).toList()), + ); + } +} + +abstract class FavoritesKeyValueStore { + const FavoritesKeyValueStore(); + + Future getString(String key); + + Future setString(String key, String value); +} + +class SharedPreferencesFavoritesStore implements FavoritesKeyValueStore { + const SharedPreferencesFavoritesStore(this._preferences); + + final SharedPreferencesAsync _preferences; + + @override + Future getString(String key) { + return _preferences.getString(key); + } + + @override + Future setString(String key, String value) { + return _preferences.setString(key, value); + } +} + +final favoritesRepositoryProvider = Provider((ref) { + return SharedPreferencesFavoritesRepository( + preferences: SharedPreferencesAsync(), + ); +}); + +final favoriteEmployeeIdsProvider = FutureProvider>((ref) async { + final favorites = await ref + .watch(favoritesRepositoryProvider) + .loadFavorites(); + return favorites.map((favorite) => favorite.employeeId).toSet(); +}); diff --git a/app/lib/src/features/organization/data/org_context_api_client.dart b/app/lib/src/features/organization/data/org_context_api_client.dart new file mode 100644 index 0000000..e6da590 --- /dev/null +++ b/app/lib/src/features/organization/data/org_context_api_client.dart @@ -0,0 +1,503 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart' as http; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/api_error.dart'; +import '../../../core/network/http_client_provider.dart'; +import '../../directory/domain/employee.dart'; +import '../../auth/data/auth_session_store.dart'; +import '../domain/organization_models.dart'; + +class OrgContextApiClient { + const OrgContextApiClient({ + required this.httpClient, + required this.baseUri, + required this.keyId, + required this.keySecret, + required this.tenantSlug, + this.sessionStore, + this.timeout = const Duration(seconds: 15), + this.cacheTtl = const Duration(minutes: 5), + }); + + static final Map _cache = {}; + + final http.Client httpClient; + final Uri baseUri; + final String keyId; + final String keySecret; + final String tenantSlug; + final AuthSessionStore? sessionStore; + final Duration timeout; + final Duration cacheTtl; + + Future fetchOrgContext({ + bool forceRefresh = false, + String? tenantSlug, + }) async { + final credential = await _activeCredential(tenantSlug: tenantSlug); + final cacheKey = credential.cacheKey; + final now = DateTime.now().toUtc(); + final cached = _cache[cacheKey]; + if (!forceRefresh && cached != null && cached.expiresAt.isAfter(now)) { + return cached.future; + } + + final future = _fetchOrgContext(credential); + _cache[cacheKey] = _OrgContextCacheEntry( + future: future, + expiresAt: now.add(cacheTtl), + ); + try { + return await future; + } catch (_) { + if (identical(_cache[cacheKey]?.future, future)) { + _cache.remove(cacheKey); + } + rethrow; + } + } + + static void clearCacheForTesting() { + _cache.clear(); + } + + Future _fetchOrgContext( + _OrgContextCredentialSnapshot credential, + ) async { + final response = await httpClient + .get( + _resolve( + credential.baseUri, + '/api/v1/integrations/org-context', + queryParameters: { + 'tenantSlug': credential.tenantSlug, + 'includeUsers': 'true', + 'includeUserIds': 'true', + }, + ), + headers: _headers(credential), + ) + .timeout(timeout); + + return _toSnapshot(_decodeOk(response)); + } + + Future<_OrgContextCredentialSnapshot> _activeCredential({ + String? tenantSlug, + }) async { + final session = await _session(); + final sessionCredential = session?.orgContextCredential; + final requestedTenantSlug = tenantSlug?.trim(); + if (sessionCredential != null && sessionCredential.isUsable) { + return _OrgContextCredentialSnapshot( + baseUri: Uri.parse(sessionCredential.baseUrl), + tenantSlug: requestedTenantSlug == null || requestedTenantSlug.isEmpty + ? sessionCredential.tenantSlug + : requestedTenantSlug, + keyId: sessionCredential.keyId, + keySecret: sessionCredential.keySecret, + appSessionToken: session?.token ?? '', + ); + } + + return _OrgContextCredentialSnapshot( + baseUri: baseUri, + tenantSlug: requestedTenantSlug == null || requestedTenantSlug.isEmpty + ? this.tenantSlug + : requestedTenantSlug, + keyId: keyId, + keySecret: keySecret, + appSessionToken: session?.token ?? '', + ); + } + + Future _session() async { + final store = sessionStore; + if (store == null) { + debugPrint('OrgContextApiClient._session no sessionStore'); + return null; + } + final session = await store.load(); + if (session == null || session.isExpired) { + debugPrint( + 'OrgContextApiClient._session unavailable session=${session != null} expired=${session?.isExpired ?? true}', + ); + return null; + } + debugPrint( + 'OrgContextApiClient._session tokenLength=${session.token.length} expiresAt=${session.expiresAt.toUtc().toIso8601String()}', + ); + return session; + } + + Map _headers(_OrgContextCredentialSnapshot credential) { + final appSessionToken = credential.appSessionToken.trim(); + final headers = { + 'accept': 'application/json', + if (appSessionToken.isNotEmpty) 'Authorization': 'Bearer $appSessionToken', + if (appSessionToken.isNotEmpty) 'X-App-Session': appSessionToken, + if (credential.keyId.trim().isNotEmpty) + 'X-Baron-Key-ID': credential.keyId.trim(), + if (credential.keySecret.trim().isNotEmpty) + 'X-Baron-Key-Secret': credential.keySecret.trim(), + }; + debugPrint( + 'OrgContextApiClient._headers headers=$headers tenantSlug=${credential.tenantSlug} base=${credential.baseUri}', + ); + return headers; + } + + Map _decodeOk(http.Response response) { + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return decoded; + } + + Uri _resolve( + Uri baseUri, + String path, { + Map queryParameters = const {}, + }) { + final normalizedBase = baseUri.path.endsWith('/') + ? baseUri + : baseUri.replace(path: '${baseUri.path}/'); + final uri = normalizedBase.resolve(path.replaceFirst(RegExp(r'^/'), '')); + final filteredQuery = Map.fromEntries( + queryParameters.entries + .where((entry) { + return entry.value != null && entry.value!.trim().isNotEmpty; + }) + .map((entry) => MapEntry(entry.key, entry.value!)), + ); + return uri.replace(queryParameters: filteredQuery); + } + + Map _decodeObject(String body) { + final decoded = jsonDecode(body); + if (decoded is Map) { + return decoded; + } + throw const FormatException('Expected JSON object response'); + } + + OrgChartSnapshot _toSnapshot(Map json) { + final issuedAt = _parseDate(json['issuedAt']) ?? DateTime.now().toUtc(); + final tenantById = {}; + final ownMemberCountByTenantId = {}; + + final tree = json['tree']; + if (tree is Map) { + _collectTenantTree(tree, tenantById); + } + + final tenantItems = >[]; + for (final item in json['tenants'] as List? ?? const []) { + if (item is! Map) { + continue; + } + tenantItems.add(item); + final tenant = _tenantFromJson(item); + if (tenant.id.isNotEmpty) { + tenantById[tenant.id] = tenant; + ownMemberCountByTenantId[tenant.id] = _memberList(item).length; + } + } + + final employeesByMembership = {}; + for (final item in tenantItems) { + final tenant = _tenantFromJson(item); + if (tenant.id.isNotEmpty) { + tenantById[tenant.id] = tenant; + } + for (final employee in _employeesFromTenant(item, tenant)) { + if (employee.id.isNotEmpty) { + employeesByMembership['${tenant.id}:${employee.id}'] = employee; + } + } + } + + final countedTenantById = _recountTenantMemberCounts( + tenantById: tenantById, + ownMemberCountByTenantId: ownMemberCountByTenantId, + ); + final tenants = countedTenantById.values.toList() + ..sort((a, b) { + final parentCompare = (a.parentId ?? '').compareTo(b.parentId ?? ''); + if (parentCompare != 0) { + return parentCompare; + } + return a.name.compareTo(b.name); + }); + + final employees = employeesByMembership.values.toList(); + return OrgChartSnapshot( + tenants: tenants, + employees: employees, + generatedAt: issuedAt.toUtc(), + cache: const OrgChartCacheInfo(source: 'baron-org-context', hit: false), + ); + } + + Map _recountTenantMemberCounts({ + required Map tenantById, + required Map ownMemberCountByTenantId, + }) { + final childrenByParentId = >{}; + for (final tenant in tenantById.values) { + final parentId = tenant.parentId; + if (parentId == null || parentId.trim().isEmpty) { + continue; + } + childrenByParentId + .putIfAbsent(parentId, () => []) + .add(tenant); + } + + final totalCountByTenantId = {}; + + int totalFor(String tenantId) { + final cached = totalCountByTenantId[tenantId]; + if (cached != null) { + return cached; + } + + final ownCount = + ownMemberCountByTenantId[tenantId] ?? + tenantById[tenantId]?.memberCount ?? + 0; + final total = (childrenByParentId[tenantId] ?? const []) + .fold(ownCount, (sum, child) => sum + totalFor(child.id)); + totalCountByTenantId[tenantId] = total; + return total; + } + + return { + for (final entry in tenantById.entries) + entry.key: _copyTenantWithCounts( + entry.value, + memberCount: + ownMemberCountByTenantId[entry.key] ?? entry.value.memberCount, + totalMemberCount: totalFor(entry.key), + ), + }; + } + + TenantSummary _copyTenantWithCounts( + TenantSummary tenant, { + required int memberCount, + required int totalMemberCount, + }) { + return TenantSummary( + id: tenant.id, + name: tenant.name, + slug: tenant.slug, + type: tenant.type, + parentId: tenant.parentId, + memberCount: memberCount, + totalMemberCount: totalMemberCount, + ); + } + + void _collectTenantTree( + Map json, + Map tenantById, + ) { + final tenant = _tenantFromJson(json); + if (tenant.id.isNotEmpty) { + tenantById[tenant.id] = tenant; + } + + final children = json['children']; + if (children is List) { + for (final child in children) { + if (child is Map) { + _collectTenantTree(child, tenantById); + } + } + } + } + + TenantSummary _tenantFromJson(Map json) { + final memberCount = _readInt(json['memberCount']); + final totalMemberCount = _readInt(json['totalMemberCount']) ?? memberCount; + return TenantSummary( + id: _readString(json, ['id']), + name: _readString(json, ['name']), + slug: _readString(json, ['slug']), + type: _readString(json, ['type', 'orgUnitType']), + parentId: _nullableString(json['parentId']), + memberCount: memberCount ?? _memberList(json).length, + totalMemberCount: totalMemberCount ?? _memberList(json).length, + ); + } + + List _employeesFromTenant( + Map tenantJson, + TenantSummary tenant, + ) { + final members = _memberList(tenantJson); + return members.indexed.map((entry) { + final index = entry.$1; + final member = entry.$2; + final rawPhone = _readString(member, [ + 'phoneNumber', + 'phone', + 'mobile', + 'mobilePhone', + ]); + final email = _nullableString(member['email']); + final memberId = _readString(member, [ + 'id', + 'userId', + 'employeeId', + 'loginId', + ]); + final id = memberId.isNotEmpty + ? memberId + : [ + tenant.id, + email, + _readString(member, ['name']), + rawPhone, + ].whereType().where((value) => value.isNotEmpty).join(':'); + + return Employee( + id: id, + name: _readString(member, ['name']), + phoneNumber: rawPhone, + phoneDisplay: _formatPhone(rawPhone), + email: email, + tenantId: tenant.id, + tenantName: tenant.name, + tenantSlug: tenant.slug, + department: _nullableString(member['department']), + grade: _nullableString(member['grade']), + position: _nullableString(member['position']), + jobTitle: _nullableString(member['jobTitle']), + status: _nullableString(member['status']), + profileImageUrl: _nullableString(member['profileImageUrl']), + sortOrder: _readInt(member['sortOrder']) ?? index, + isManager: member['isManager'] as bool? ?? false, + ); + }).toList(); + } + + List> _memberList(Map json) { + final members = json['members']; + if (members is! List) { + return const []; + } + return members + .whereType() + .map((member) => Map.from(member)) + .toList(); + } + + DateTime? _parseDate(Object? value) { + if (value is! String || value.trim().isEmpty) { + return null; + } + return DateTime.tryParse(value); + } + + int? _readInt(Object? value) { + if (value is int) { + return value; + } + if (value is num) { + return value.toInt(); + } + if (value is String) { + return int.tryParse(value); + } + return null; + } + + String _readString(Map json, List keys) { + for (final key in keys) { + final value = _nullableString(json[key]); + if (value != null) { + return value; + } + } + return ''; + } + + String? _nullableString(Object? value) { + if (value is! String) { + return null; + } + final trimmed = value.trim(); + return trimmed.isEmpty ? null : trimmed; + } + + String? _formatPhone(String value) { + var digits = value.replaceAll(RegExp(r'[^0-9]'), ''); + if (digits.startsWith('82') && digits.length >= 11) { + digits = '0${digits.substring(2)}'; + } + if (digits.length == 11 && digits.startsWith('010')) { + return '${digits.substring(0, 3)}-${digits.substring(3, 7)}-${digits.substring(7)}'; + } + return value.trim().isEmpty ? null : value.trim(); + } +} + +final orgContextApiClientProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return OrgContextApiClient( + httpClient: ref.watch(httpClientProvider), + baseUri: Uri.parse(environment.orgContextApiBaseUrl), + keyId: environment.baronKeyId, + keySecret: environment.baronKeySecret, + tenantSlug: environment.orgContextTenantSlug, + sessionStore: ref.watch(authSessionStoreProvider), + ); +}); + +final orgContextSnapshotProvider = FutureProvider.autoDispose( + (ref) { + return ref.watch(orgContextApiClientProvider).fetchOrgContext(); + }, +); + +class _OrgContextCredentialSnapshot { + const _OrgContextCredentialSnapshot({ + required this.baseUri, + required this.tenantSlug, + required this.keyId, + required this.keySecret, + required this.appSessionToken, + }); + + final Uri baseUri; + final String tenantSlug; + final String keyId; + final String keySecret; + final String appSessionToken; + + String get cacheKey { + return [ + baseUri.toString(), + tenantSlug, + appSessionToken.isEmpty ? keyId : appSessionToken, + ].join('|'); + } +} + +class _OrgContextCacheEntry { + const _OrgContextCacheEntry({required this.future, required this.expiresAt}); + + final Future future; + final DateTime expiresAt; +} diff --git a/app/lib/src/features/organization/data/organization_api_client.dart b/app/lib/src/features/organization/data/organization_api_client.dart new file mode 100644 index 0000000..25a4ed0 --- /dev/null +++ b/app/lib/src/features/organization/data/organization_api_client.dart @@ -0,0 +1,195 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:http/http.dart' as http; + +import '../../../core/config/app_environment_provider.dart'; +import '../../../core/network/api_error.dart'; +import '../../../core/network/http_client_provider.dart'; +import '../../auth/data/auth_session_store.dart'; +import '../domain/organization_models.dart'; +import 'org_context_api_client.dart'; + +abstract class OrganizationRepository { + const OrganizationRepository(); + + Future listTenants(); + + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }); +} + +class OrganizationApiClient { + const OrganizationApiClient({ + required this.httpClient, + required this.baseUri, + required this.sessionStore, + this.timeout = const Duration(seconds: 10), + }); + + final http.Client httpClient; + final Uri baseUri; + final AuthSessionStore sessionStore; + final Duration timeout; + + Future listTenants() async { + final response = await httpClient + .get( + _resolve('/api/v1/tdc114plus/organization/tenants'), + headers: await _headers(), + ) + .timeout(timeout); + return TenantListResponse.fromJson(_decodeOk(response)); + } + + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }) async { + final response = await httpClient + .get( + _resolve( + '/api/v1/tdc114plus/organization/orgchart', + queryParameters: { + 'tenantId': tenantId, + if (refresh) 'refresh': 'true', + }, + ), + headers: await _headers(), + ) + .timeout(timeout); + return OrgChartSnapshot.fromJson(_decodeOk(response)); + } + + Future> _headers() async { + final session = await sessionStore.load(); + return { + 'accept': 'application/json', + if (session?.token != null) 'authorization': 'Bearer ${session!.token}', + }; + } + + Map _decodeOk(http.Response response) { + final decoded = _decodeObject(response.body); + if (response.statusCode < 200 || response.statusCode >= 300) { + throw ApiException( + statusCode: response.statusCode, + apiError: ApiError.fromJson(decoded), + ); + } + return decoded; + } + + Uri _resolve(String path, {Map queryParameters = const {}}) { + final normalizedBase = baseUri.path.endsWith('/') + ? baseUri + : baseUri.replace(path: '${baseUri.path}/'); + final uri = normalizedBase.resolve(path.replaceFirst(RegExp(r'^/'), '')); + final filteredQuery = Map.fromEntries( + queryParameters.entries + .where((entry) { + return entry.value != null && entry.value!.trim().isNotEmpty; + }) + .map((entry) => MapEntry(entry.key, entry.value!)), + ); + return uri.replace(queryParameters: filteredQuery); + } + + Map _decodeObject(String body) { + final decoded = jsonDecode(body); + if (decoded is Map) { + return decoded; + } + throw const FormatException('Expected JSON object response'); + } +} + +class RemoteOrganizationRepository implements OrganizationRepository { + const RemoteOrganizationRepository({required this.apiClient}); + + final OrganizationApiClient apiClient; + + @override + Future listTenants() => apiClient.listTenants(); + + @override + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }) { + return apiClient.getOrgChart(tenantId: tenantId, refresh: refresh); + } +} + +class OrgContextOrganizationRepository implements OrganizationRepository { + const OrgContextOrganizationRepository({required this.orgContextApiClient}); + + final OrgContextApiClient orgContextApiClient; + + @override + Future listTenants() async { + final snapshot = await orgContextApiClient.fetchOrgContext(); + return TenantListResponse( + items: snapshot.tenants, + generatedAt: snapshot.generatedAt, + ); + } + + @override + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }) async { + final snapshot = await orgContextApiClient.fetchOrgContext(); + if (tenantId == null || tenantId.trim().isEmpty) { + return snapshot; + } + + return OrgChartSnapshot( + tenants: snapshot.tenants + .where( + (tenant) => tenant.id == tenantId || tenant.parentId == tenantId, + ) + .toList(), + employees: snapshot.employees + .where((employee) => employee.tenantId == tenantId) + .toList(), + generatedAt: snapshot.generatedAt, + cache: snapshot.cache, + ); + } +} + +final organizationApiClientProvider = Provider((ref) { + final environment = ref.watch(appEnvironmentProvider); + return OrganizationApiClient( + httpClient: ref.watch(httpClientProvider), + baseUri: Uri.parse(environment.organizationApiBaseUrl), + sessionStore: ref.watch(authSessionStoreProvider), + ); +}); + +final organizationRepositoryProvider = Provider((ref) { + return OrgContextOrganizationRepository( + orgContextApiClient: ref.watch(orgContextApiClientProvider), + ); +}); + +final tenantListProvider = FutureProvider.autoDispose>(( + ref, +) async { + final response = await ref + .watch(organizationRepositoryProvider) + .listTenants(); + return response.items; +}); + +final orgChartProvider = FutureProvider.autoDispose + .family((ref, tenantId) async { + return ref + .watch(organizationRepositoryProvider) + .getOrgChart(tenantId: tenantId); + }); diff --git a/app/lib/src/smoke/smoke_overrides.dart b/app/lib/src/smoke/smoke_overrides.dart new file mode 100644 index 0000000..bd9190d --- /dev/null +++ b/app/lib/src/smoke/smoke_overrides.dart @@ -0,0 +1,95 @@ +import '../features/directory/data/directory_repository.dart'; +import '../features/directory/data/mock_directory_data.dart'; +import '../features/directory/domain/employee.dart'; +import '../features/organization/data/organization_api_client.dart'; +import '../features/organization/domain/organization_models.dart'; + +const useSmokeMockDirectory = bool.fromEnvironment( + 'TDC114_SMOKE_USE_MOCK_DIRECTORY', +); + +final smokeDirectoryOverride = directoryRepositoryProvider.overrideWithValue( + const _SmokeDirectoryRepository(), +); + +final smokeOrganizationOverride = organizationRepositoryProvider + .overrideWithValue(const _SmokeOrganizationRepository()); + +class _SmokeDirectoryRepository implements DirectoryRepository { + const _SmokeDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + final normalizedQuery = query.query.trim(); + final normalizedDigits = _digitsOnly(normalizedQuery); + final selectedTenant = _findTenantBySlug(query.apiTenantSlug); + + return mockEmployees.where((employee) { + final matchesTenant = + query.apiTenantSlug == null || + employee.tenantSlug == query.apiTenantSlug || + (selectedTenant != null && + selectedTenant.type != 'COMPANY' && + (employee.department ?? '') == selectedTenant.name); + final matchesDepartment = + query.apiDepartment == null || + (employee.department ?? '') == query.apiDepartment; + if (!matchesTenant) { + return false; + } + if (!matchesDepartment) { + return false; + } + + if (normalizedQuery.isEmpty) { + return true; + } + + final matchesName = employee.name.contains(normalizedQuery); + final matchesDepartmentQuery = (employee.department ?? '').contains( + normalizedQuery, + ); + final matchesPhone = + normalizedDigits.isNotEmpty && + (_digitsOnly(employee.phoneNumber).contains(normalizedDigits) || + _digitsOnly( + employee.phoneDisplay ?? '', + ).contains(normalizedDigits)); + return matchesName || matchesDepartmentQuery || matchesPhone; + }).toList(); + } + + String _digitsOnly(String value) => value.replaceAll(RegExp(r'[^0-9]'), ''); + + TenantSummary? _findTenantBySlug(String? slug) { + if (slug == null || slug.trim().isEmpty) { + return null; + } + for (final tenant in mockTenants) { + if (tenant.slug == slug) { + return tenant; + } + } + return null; + } +} + +class _SmokeOrganizationRepository implements OrganizationRepository { + const _SmokeOrganizationRepository(); + + @override + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }) { + throw UnimplementedError(); + } + + @override + Future listTenants() async { + return TenantListResponse( + items: mockTenants, + generatedAt: DateTime.parse('2026-07-02T00:00:00Z'), + ); + } +} diff --git a/app/pubspec.lock b/app/pubspec.lock index 1405856..7dfde61 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -90,7 +90,7 @@ packages: source: hosted version: "1.15.1" crypto: - dependency: transitive + dependency: "direct main" description: name: crypto sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf @@ -158,6 +158,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" flutter_lints: dependency: "direct dev" description: @@ -197,6 +202,11 @@ packages: url: "https://pub.dev" source: hosted version: "4.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" glob: dependency: transitive description: @@ -237,6 +247,11 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" intl: dependency: transitive description: @@ -397,6 +412,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.5.2" + process: + dependency: transitive + description: + name: process + sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 + url: "https://pub.dev" + source: hosted + version: "5.0.5" pub_semver: dependency: transitive description: @@ -562,6 +585,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" term_glyph: dependency: transitive description: @@ -722,6 +753,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade" + url: "https://pub.dev" + source: hosted + version: "3.1.0" webkit_inspection_protocol: dependency: transitive description: diff --git a/app/pubspec.yaml b/app/pubspec.yaml index edee3da..b3fdba3 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -34,6 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 + crypto: ^3.0.6 easy_localization: ^3.0.7 flutter_riverpod: ^3.0.3 go_router: ^17.0.1 @@ -45,6 +46,8 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + integration_test: + sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is diff --git a/app/test/auth/auth_api_client_test.dart b/app/test/auth/auth_api_client_test.dart new file mode 100644 index 0000000..8bf3381 --- /dev/null +++ b/app/test/auth/auth_api_client_test.dart @@ -0,0 +1,205 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:tdc114plus/src/core/network/api_error.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_api_client.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; + +void main() { + test('posts phone login request to tdc114plus namespace', () async { + final client = AuthApiClient( + httpClient: MockClient((request) async { + expect( + request.url.toString(), + 'https://sso.example.test/api/v1/tdc114plus/auth/phone-login', + ); + expect(request.method, 'POST'); + expect(request.headers['content-type'], 'application/json'); + expect(jsonDecode(request.body)['phoneNumber'], '01012345678'); + return http.Response( + jsonEncode({ + 'status': 'ok', + 'token': 'session-token', + 'expiresAt': '2026-07-02T12:00:00Z', + 'user': { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ); + + final response = await client.phoneLogin( + const PhoneLoginRequest( + phoneNumber: '01012345678', + device: LoginDeviceInfo( + platform: 'android', + appVersion: '0.1.0', + deviceName: 'Pixel 8', + ), + ), + ); + + expect(response.token, 'session-token'); + expect(response.user.tenantSlug, 'hanmac'); + }); + + test('throws ApiException when login fails', () async { + final client = AuthApiClient( + httpClient: MockClient((request) async { + return http.Response( + jsonEncode({ + 'error': 'login failed', + 'code': 'login_failed', + 'details': {}, + }), + 401, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ); + + expect( + () => client.phoneLogin( + const PhoneLoginRequest( + phoneNumber: '01012345678', + device: LoginDeviceInfo( + platform: 'android', + appVersion: '0.1.0', + deviceName: 'Pixel 8', + ), + ), + ), + throwsA( + isA() + .having((error) => error.statusCode, 'statusCode', 401) + .having((error) => error.code, 'code', 'login_failed'), + ), + ); + }); + + test('requests phone link from auth server namespace', () async { + final client = AuthApiClient( + httpClient: MockClient((request) async { + expect( + request.url.toString(), + 'https://sso.example.test/api/v1/auth/link/init', + ); + expect(request.method, 'POST'); + expect(jsonDecode(request.body)['phoneNumber'], '01012345678'); + return http.Response( + jsonEncode({ + 'status': 'pending', + 'pendingRef': 'pending-ref', + 'expiresIn': 180, + 'pollInterval': 3, + 'resendAfter': 30, + 'provider': 'Ory (Kratos/Hydra)', + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ); + + final response = await client.requestPhoneLoginLink( + const PhoneLoginLinkInitRequest( + phoneNumber: '01012345678', + device: LoginDeviceInfo( + platform: 'android', + appVersion: '0.1.0', + deviceName: 'Pixel 8', + ), + ), + ); + + expect(response.pendingRef, 'pending-ref'); + expect(response.interval, 3); + }); + + test('polls headless phone link and parses completed session', () async { + final client = AuthApiClient( + httpClient: MockClient((request) async { + expect( + request.url.toString(), + 'https://sso.example.test/api/v1/auth/link/poll', + ); + expect(jsonDecode(request.body)['pendingRef'], 'pending-ref'); + return http.Response( + jsonEncode({ + 'status': 'ok', + 'session': { + 'status': 'ok', + 'accessToken': 'session-token', + 'expiresAt': '2026-07-02T12:00:00Z', + 'user': { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + }, + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ); + + final response = await client.pollPhoneLoginLink( + const PhoneLoginLinkPollRequest(pendingRef: 'pending-ref'), + ); + + expect(response.session?.token, 'session-token'); + expect(response.session?.user.tenantSlug, 'hanmac'); + }); + + test('parses completed auth-server poll response with top-level accessToken', () async { + final client = AuthApiClient( + httpClient: MockClient((request) async { + expect( + request.url.toString(), + 'https://auth.example.test/api/v1/auth/link/poll', + ); + return http.Response( + jsonEncode({ + 'status': 'ok', + 'accessToken': 'app-session-jwt', + 'expiresAt': '2026-07-13T16:32:56+09:00', + 'user': { + 'id': 'baron-user', + 'name': 'Baron User', + 'phoneNumber': '01091365338', + }, + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://auth.example.test'), + ); + + final response = await client.pollPhoneLoginLink( + const PhoneLoginLinkPollRequest(pendingRef: 'pending-ref'), + ); + + expect(response.status, 'ok'); + expect(response.session?.token, 'app-session-jwt'); + expect(response.session?.user.phoneNumber, '01091365338'); + }); +} diff --git a/app/test/auth/auth_repository_test.dart b/app/test/auth/auth_repository_test.dart new file mode 100644 index 0000000..f87d2b4 --- /dev/null +++ b/app/test/auth/auth_repository_test.dart @@ -0,0 +1,141 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tdc114plus/src/core/network/api_error.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_api_client.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_repository.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; + +void main() { + setUp(() { + SharedPreferences.setMockInitialValues({}); + }); + + test('normalizes phone number and stores successful session', () async { + final repository = RemoteAuthRepository( + apiClient: AuthApiClient( + httpClient: MockClient((request) async { + expect(jsonDecode(request.body)['phoneNumber'], '01012345678'); + return http.Response( + jsonEncode({ + 'status': 'ok', + 'token': 'session-token', + 'expiresAt': '2026-07-02T12:00:00Z', + 'user': { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + }), + 200, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ), + sessionStore: const AuthSessionStore(), + appVersion: '0.1.0', + ); + + await repository.phoneLogin('010-1234-5678'); + final session = await repository.loadSession(); + + expect(session?.token, 'session-token'); + expect(session?.user.id, 'user-uuid'); + }); + + test('rejects invalid phone number before calling API', () async { + var called = false; + final repository = RemoteAuthRepository( + apiClient: AuthApiClient( + httpClient: MockClient((request) async { + called = true; + return http.Response('{}', 200); + }), + baseUri: Uri.parse('https://sso.example.test'), + ), + sessionStore: const AuthSessionStore(), + appVersion: '0.1.0', + ); + + expect( + () => repository.phoneLogin('123'), + throwsA( + isA().having( + (error) => error.code, + 'code', + 'invalid_phone_number', + ), + ), + ); + expect(called, isFalse); + }); + + test('normalizes phone number before requesting login link', () async { + final repository = RemoteAuthRepository( + apiClient: AuthApiClient( + httpClient: MockClient((request) async { + expect(request.url.path, '/api/v1/auth/link/init'); + expect(jsonDecode(request.body)['phoneNumber'], '01012345678'); + return http.Response( + jsonEncode({ + 'status': 'pending', + 'pendingRef': 'pending-ref', + 'expiresIn': 180, + 'pollInterval': 3, + 'resendAfter': 30, + }), + 200, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ), + sessionStore: const AuthSessionStore(), + appVersion: '0.1.0', + ); + + final response = await repository.requestPhoneLoginLink('010-1234-5678'); + + expect(response.pendingRef, 'pending-ref'); + }); + + test('stores session when login link polling completes', () async { + final repository = RemoteAuthRepository( + apiClient: AuthApiClient( + httpClient: MockClient((request) async { + expect(request.url.path, '/api/v1/auth/link/poll'); + return http.Response( + jsonEncode({ + 'status': 'ok', + 'accessToken': 'session-token', + 'expiresAt': '2026-07-02T12:00:00Z', + 'user': { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + }), + 200, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + ), + sessionStore: const AuthSessionStore(), + appVersion: '0.1.0', + ); + + final response = await repository.pollPhoneLoginLink('pending-ref'); + final session = await repository.loadSession(); + + expect(response.session?.token, 'session-token'); + expect(session?.token, 'session-token'); + }); +} diff --git a/app/test/auth/auth_session_store_test.dart b/app/test/auth/auth_session_store_test.dart new file mode 100644 index 0000000..0f47c77 --- /dev/null +++ b/app/test/auth/auth_session_store_test.dart @@ -0,0 +1,45 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; + +void main() { + setUp(() { + SharedPreferences.setMockInitialValues({}); + }); + + test('saves loads and clears login session', () async { + const store = AuthSessionStore(); + final response = PhoneLoginResponse( + status: 'ok', + token: 'session-token', + expiresAt: DateTime.parse('2026-07-02T12:00:00Z'), + user: const LoginUser( + id: 'user-uuid', + name: 'User One', + phoneNumber: '+821012345678', + tenantId: 'tenant-uuid', + tenantName: 'Hanmac', + tenantSlug: 'hanmac', + ), + orgContextCredential: OrgContextCredential( + baseUrl: 'https://sadmin.hmac.kr', + tenantSlug: 'hanmac-family', + keyId: 'session-key-id', + keySecret: 'session-key-secret', + expiresAt: DateTime.parse('2099-07-02T13:00:00Z'), + ), + ); + + await store.save(response); + final loaded = await store.load(); + + expect(loaded?.token, 'session-token'); + expect(loaded?.user.name, 'User One'); + expect(loaded?.orgContextCredential?.keyId, 'session-key-id'); + expect(loaded?.orgContextCredential?.keySecret, 'session-key-secret'); + + await store.clear(); + expect(await store.load(), isNull); + }); +} diff --git a/app/test/directory/contact_launcher_test.dart b/app/test/directory/contact_launcher_test.dart new file mode 100644 index 0000000..a63053d --- /dev/null +++ b/app/test/directory/contact_launcher_test.dart @@ -0,0 +1,18 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:tdc114plus/src/core/actions/contact_launcher.dart'; + +void main() { + test('buildCallUri normalizes separators and keeps country code', () { + final uri = buildCallUri('+82 10-1234-5678'); + + expect(uri, isNotNull); + expect(uri.toString(), 'tel:+821012345678'); + }); + + test('buildSmsUri returns null for empty phone number', () { + final uri = buildSmsUri(' - '); + + expect(uri, isNull); + }); +} diff --git a/app/test/directory/directory_api_client_test.dart b/app/test/directory/directory_api_client_test.dart new file mode 100644 index 0000000..26a3f90 --- /dev/null +++ b/app/test/directory/directory_api_client_test.dart @@ -0,0 +1,72 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; +import 'package:tdc114plus/src/features/directory/data/directory_api_client.dart'; + +void main() { + setUp(() async { + SharedPreferences.setMockInitialValues({}); + await const AuthSessionStore().save( + PhoneLoginResponse( + status: 'ok', + token: 'session-token', + expiresAt: DateTime.parse('2026-07-02T12:00:00Z'), + user: const LoginUser( + id: 'user-uuid', + name: 'User One', + phoneNumber: '+821012345678', + tenantId: 'tenant-uuid', + tenantName: 'Hanmac', + tenantSlug: 'hanmac', + ), + ), + ); + }); + + test('lists employees with bearer token and query filters', () async { + final client = DirectoryApiClient( + httpClient: MockClient((request) async { + expect(request.headers['authorization'], 'Bearer session-token'); + expect(request.url.path, '/api/v1/tdc114plus/directory/employees'); + expect(request.url.queryParameters['q'], 'kim'); + expect(request.url.queryParameters['tenantSlug'], 'hanmac'); + return http.Response( + jsonEncode({ + 'items': [ + { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'phoneDisplay': '010-1234-5678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + 'status': 'active', + }, + ], + 'limit': 50, + 'offset': 0, + 'total': 1, + 'nextCursor': '', + }), + 200, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + sessionStore: const AuthSessionStore(), + ); + + final response = await client.listEmployees( + query: 'kim', + tenantSlug: 'hanmac', + ); + + expect(response.total, 1); + expect(response.items.single.phoneDisplay, '010-1234-5678'); + }); +} diff --git a/app/test/directory/directory_filters_test.dart b/app/test/directory/directory_filters_test.dart new file mode 100644 index 0000000..87467e1 --- /dev/null +++ b/app/test/directory/directory_filters_test.dart @@ -0,0 +1,114 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:tdc114plus/src/features/directory/presentation/directory_navigation.dart'; +import 'package:tdc114plus/src/features/organization/domain/organization_models.dart'; + +void main() { + const tenants = [ + TenantSummary( + id: 'company-a', + name: '총괄기획실/기술', + slug: 'hq-tech', + type: 'COMPANY', + memberCount: 10, + totalMemberCount: 50, + ), + TenantSummary( + id: 'company-b', + name: '바른컨설턴트', + slug: 'consulting', + type: 'COMPANY', + memberCount: 5, + totalMemberCount: 20, + ), + TenantSummary( + id: 'team-is3', + name: 'IS3', + slug: 'is3', + type: 'ORGANIZATION', + parentId: 'company-a', + memberCount: 3, + totalMemberCount: 3, + ), + TenantSummary( + id: 'team-ptc', + name: 'PTC', + slug: 'ptc', + type: 'ORGANIZATION', + parentId: 'company-a', + memberCount: 2, + totalMemberCount: 2, + ), + ]; + + test('shows pinned team chip for selected company', () { + final layout = buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: 'hq-tech', + pinnedTenantSlug: 'is3', + ); + + expect(layout.companyTenants.map((tenant) => tenant.slug), [ + 'hq-tech', + 'consulting', + ]); + expect(layout.visibleChips.map((tenant) => tenant.slug), [ + 'hq-tech', + 'consulting', + 'is3', + ]); + }); + + test('builds breadcrumb and child tenants for selected child team', () { + final layout = buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: 'is3', + pinnedTenantSlug: 'is3', + ); + + expect(layout.selectedTenant?.slug, 'is3'); + expect(layout.breadcrumbTenants.map((tenant) => tenant.slug), [ + 'hq-tech', + 'is3', + ]); + expect(layout.childTenants, isEmpty); + }); + + test('shows company drilldown for all selection', () { + final layout = buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: 'all', + pinnedTenantSlug: 'is3', + ); + + expect(layout.selectedTenant, isNull); + expect(layout.childTenants.map((tenant) => tenant.slug), [ + 'hq-tech', + 'consulting', + ]); + expect(layout.visibleChips.map((tenant) => tenant.slug), [ + 'hq-tech', + 'consulting', + 'is3', + ]); + }); + + test('builds selected tenant subtree slugs for scoped search', () { + final layout = buildTenantNavigationModel( + tenants: tenants, + selectedTenantSlug: 'hq-tech', + pinnedTenantSlug: 'is3', + ); + + expect(layout.selectedTenantSubtreeSlugs, ['hq-tech', 'is3', 'ptc']); + }); + + test('resolves pinned team slug from company and department name', () { + final slug = resolvePinnedTenantSlug( + tenants: tenants, + companySlug: 'hq-tech', + departmentName: 'IS3', + ); + + expect(slug, 'is3'); + }); +} diff --git a/app/test/directory/directory_repository_test.dart b/app/test/directory/directory_repository_test.dart new file mode 100644 index 0000000..796f21d --- /dev/null +++ b/app/test/directory/directory_repository_test.dart @@ -0,0 +1,36 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:tdc114plus/src/features/directory/data/directory_repository.dart'; +import 'package:tdc114plus/src/features/directory/domain/employee.dart'; + +void main() { + test('DirectoryQuery maps all tenant filter to nullable API parameters', () { + const query = DirectoryQuery(query: ' 김하늘 ', tenantSlug: 'all'); + + expect(query.apiQuery, '김하늘'); + expect(query.apiTenantSlug, isNull); + }); + + test('DirectoryQuery keeps selected tenant slug for API requests', () { + const query = DirectoryQuery(query: '', tenantSlug: 'hanmac'); + + expect(query.apiQuery, isNull); + expect(query.apiTenantSlug, 'hanmac'); + }); + + test('DirectoryRepository now focuses on employee lists only', () { + const employees = [ + Employee( + id: 'user-001', + name: '김하늘', + phoneNumber: '+821012345678', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + ), + ]; + + expect(employees.single.name, '김하늘'); + expect(employees.single.tenantSlug, 'hanmac'); + }); +} diff --git a/app/test/directory/profile_image_api_client_test.dart b/app/test/directory/profile_image_api_client_test.dart new file mode 100644 index 0000000..bf838d5 --- /dev/null +++ b/app/test/directory/profile_image_api_client_test.dart @@ -0,0 +1,297 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; +import 'package:tdc114plus/src/features/directory/data/profile_image_api_client.dart'; +import 'package:tdc114plus/src/features/directory/domain/employee.dart'; + +void main() { + setUp(() { + SharedPreferences.setMockInitialValues({}); + }); + + test('keeps explicit profileImageUrl without auth lookup', () async { + var requestCount = 0; + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + requestCount += 1; + return http.Response('{}', 500); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: const AuthSessionStore(), + ); + + const employee = Employee( + id: 'user-1', + name: '강경훈', + phoneNumber: '01012345678', + email: 'khkang@samaneng.com', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + profileImageUrl: 'https://cdn.example.test/khkang.jpg', + ); + + final imageUrl = await client.resolveImageUrl(employee); + + expect(imageUrl, 'https://cdn.example.test/khkang.jpg'); + expect(requestCount, 0); + }); + + test('uses auth profile-image endpoint when explicit profile image is absent', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'app-session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-1', + name: '강경훈', + phoneNumber: '01012345678', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ), + ), + ); + + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + expect(request.url.host, '114-auth.hmac.kr'); + expect(request.url.path, '/api/v1/profile-image'); + expect(request.url.queryParameters['comp'], 'SAMAN'); + expect(request.url.queryParameters['email'], 'khkang@samaneng.com'); + expect(request.headers['Authorization'], 'Bearer app-session-token'); + return http.Response( + jsonEncode({ + 'found': true, + 'source': 'BARON_UUID_R2', + 'imageUrl': + 'https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg', + }), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: store, + ); + + const employee = Employee( + id: 'bebb832c-052e-493d-b5a9-732518d67685', + name: '강경훈', + phoneNumber: '01012345678', + email: 'khkang@samaneng.com', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ); + + final imageUrl = await client.resolveImageUrl(employee); + + expect( + imageUrl, + 'https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg', + ); + }); + + test('returns null when employee email is missing', () async { + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + fail('auth lookup should not be sent without email'); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: const AuthSessionStore(), + ); + + const employee = Employee( + id: 'user-2', + name: '직원', + phoneNumber: '01000000000', + tenantId: 'tenant-2', + tenantName: '한맥', + tenantSlug: 'hanmac', + ); + + expect(await client.resolveImageUrl(employee), isNull); + }); + + test('falls back to public uuid image when employee email is missing', () async { + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + fail('auth lookup should not be sent without email'); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: const AuthSessionStore(), + ); + + const employee = Employee( + id: 'bebb832c-052e-493d-b5a9-732518d67685', + name: '강경훈', + phoneNumber: '01012345678', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ); + + expect( + await client.resolveImageUrl(employee), + 'https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg', + ); + }); + + test('allows auth lookup without company code when tenant mapping is unknown', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'app-session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-3', + name: '직원', + phoneNumber: '01011112222', + tenantId: 'tenant-3', + tenantName: 'Unknown', + tenantSlug: 'unknown', + ), + ), + ); + + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + expect(request.url.queryParameters['comp'], isNull); + expect(request.url.queryParameters['email'], 'person@example.com'); + return http.Response( + jsonEncode({'found': false, 'source': 'DEFAULT'}), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: store, + ); + + const employee = Employee( + id: 'user-3', + name: '직원', + phoneNumber: '01011112222', + email: 'person@example.com', + tenantId: 'tenant-3', + tenantName: 'Unknown', + tenantSlug: 'unknown', + ); + + expect(await client.resolveImageUrl(employee), isNull); + }); + + test('falls back to public uuid image when auth lookup returns not found', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'app-session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-4', + name: '강경훈', + phoneNumber: '01012345678', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ), + ), + ); + + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + return http.Response( + jsonEncode({'found': false, 'source': 'DEFAULT'}), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: store, + ); + + const employee = Employee( + id: 'bebb832c-052e-493d-b5a9-732518d67685', + name: '강경훈', + phoneNumber: '01012345678', + email: 'khkang@samaneng.com', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ); + + expect( + await client.resolveImageUrl(employee), + 'https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg', + ); + }); + + test('uses uuid fallback even when auth not-found result is cached', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'app-session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-5', + name: '직원', + phoneNumber: '01012345678', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ), + ), + ); + + var requestCount = 0; + final client = ProfileImageApiClient( + httpClient: MockClient((request) async { + requestCount += 1; + return http.Response( + jsonEncode({'found': false, 'source': 'DEFAULT'}), + 200, + headers: {'content-type': 'application/json'}, + ); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + sessionStore: store, + ); + + const firstEmployee = Employee( + id: 'legacy-user-id', + name: '직원', + phoneNumber: '01012345678', + email: 'cached-null@example.com', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ); + const secondEmployee = Employee( + id: 'bebb832c-052e-493d-b5a9-732518d67685', + name: '직원', + phoneNumber: '01012345678', + email: 'cached-null@example.com', + tenantId: 'tenant-1', + tenantName: '삼안', + tenantSlug: 'saman', + ); + + expect(await client.resolveImageUrl(firstEmployee), isNull); + expect( + await client.resolveImageUrl(secondEmployee), + 'https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg', + ); + expect(requestCount, 1); + }); +} diff --git a/app/test/favorites/favorites_repository_test.dart b/app/test/favorites/favorites_repository_test.dart new file mode 100644 index 0000000..68dfc82 --- /dev/null +++ b/app/test/favorites/favorites_repository_test.dart @@ -0,0 +1,45 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:tdc114plus/src/features/favorites/data/favorites_repository.dart'; + +void main() { + test('loads empty favorites when storage is empty', () async { + final repository = SharedPreferencesFavoritesRepository.withStore( + _MemoryFavoritesStore(), + ); + + final favorites = await repository.loadFavorites(); + + expect(favorites, isEmpty); + }); + + test('toggles favorites in local storage', () async { + final repository = SharedPreferencesFavoritesRepository.withStore( + _MemoryFavoritesStore(), + ); + + await repository.toggleFavorite('user-001'); + final added = await repository.loadFavorites(); + + expect(added.map((favorite) => favorite.employeeId), ['user-001']); + + await repository.toggleFavorite('user-001'); + final removed = await repository.loadFavorites(); + + expect(removed, isEmpty); + }); +} + +class _MemoryFavoritesStore implements FavoritesKeyValueStore { + final _values = {}; + + @override + Future getString(String key) async { + return _values[key]; + } + + @override + Future setString(String key, String value) async { + _values[key] = value; + } +} diff --git a/app/test/models/auth_models_test.dart b/app/test/models/auth_models_test.dart index f4937c1..0384782 100644 --- a/app/test/models/auth_models_test.dart +++ b/app/test/models/auth_models_test.dart @@ -50,6 +50,54 @@ void main() { expect(response.user.tenantSlug, 'hanmac'); }); + test('PhoneLoginLinkInitResponse parses pending auth response', () { + final response = PhoneLoginLinkInitResponse.fromJson({ + 'status': 'pending', + 'pendingRef': 'pending-ref', + 'expiresIn': 180, + 'interval': 3, + 'resendAfter': 30, + 'provider': 'Ory (Kratos/Hydra)', + }); + + expect(response.pendingRef, 'pending-ref'); + expect(response.interval, 3); + expect(response.provider, 'Ory (Kratos/Hydra)'); + }); + + test('PhoneLoginLinkPollResponse parses completed session', () { + final response = PhoneLoginLinkPollResponse.fromJson({ + 'status': 'ok', + 'session': { + 'status': 'ok', + 'token': 'baron-sso-session-token', + 'expiresAt': '2026-07-02T12:00:00Z', + 'user': { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + }, + }); + + expect(response.session?.token, 'baron-sso-session-token'); + expect(response.isPending, isFalse); + }); + + test('PhoneLoginLinkPollResponse detects pending response', () { + final response = PhoneLoginLinkPollResponse.fromJson({ + 'status': 'pending', + 'code': 'authorization_pending', + 'interval': 5, + }); + + expect(response.isPending, isTrue); + expect(response.interval, 5); + }); + test('CurrentUser parses permissions and can map to employee', () { final user = CurrentUser.fromJson({ 'id': 'user-uuid', diff --git a/app/test/organization/org_context_api_client_test.dart b/app/test/organization/org_context_api_client_test.dart new file mode 100644 index 0000000..bd0cdb7 --- /dev/null +++ b/app/test/organization/org_context_api_client_test.dart @@ -0,0 +1,371 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:tdc114plus/src/features/directory/data/directory_repository.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; +import 'package:tdc114plus/src/features/organization/data/org_context_api_client.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +void main() { + setUp(() { + SharedPreferences.setMockInitialValues({}); + OrgContextApiClient.clearCacheForTesting(); + }); + + test('maps Baron org-context response to app org chart snapshot', () async { + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.path, '/api/v1/integrations/org-context'); + expect(request.url.queryParameters['tenantSlug'], 'hanmac-family'); + expect(request.url.queryParameters['includeUsers'], 'true'); + expect(request.url.queryParameters['includeUserIds'], 'true'); + expect(request.headers['X-Baron-Key-ID'], 'key-id'); + expect(request.headers['X-Baron-Key-Secret'], 'key-secret'); + + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://sadmin.hmac.kr'), + keyId: 'key-id', + keySecret: 'key-secret', + tenantSlug: 'hanmac-family', + ); + + final snapshot = await client.fetchOrgContext(); + + expect(snapshot.tenants.map((tenant) => tenant.slug), contains('is3')); + expect(snapshot.employees, hasLength(4)); + expect(snapshot.employees.first.tenantName, 'IS3'); + expect(snapshot.employees.first.phoneDisplay, '010-3189-1514'); + + final center = snapshot.tenants.singleWhere( + (tenant) => tenant.slug == 'center', + ); + final is3 = snapshot.tenants.singleWhere((tenant) => tenant.slug == 'is3'); + expect(center.totalMemberCount, 4); + expect(is3.memberCount, 2); + expect(is3.totalMemberCount, 2); + }); + + test('uses session org-context credential before env fallback', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-id', + name: 'User', + phoneNumber: '', + tenantId: '', + tenantName: '', + tenantSlug: '', + ), + orgContextCredential: const OrgContextCredential( + baseUrl: 'https://session.example.test', + tenantSlug: 'session-family', + keyId: 'session-key-id', + keySecret: 'session-key-secret', + ), + ), + ); + + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.host, 'session.example.test'); + expect(request.url.queryParameters['tenantSlug'], 'session-family'); + expect(request.headers['Authorization'], 'Bearer session-token'); + expect(request.headers['X-Baron-Key-ID'], 'session-key-id'); + expect(request.headers['X-Baron-Key-Secret'], 'session-key-secret'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://env.example.test'), + keyId: 'env-key-id', + keySecret: 'env-key-secret', + tenantSlug: 'env-family', + sessionStore: store, + ); + + await client.fetchOrgContext(); + }); + + test('uses requested tenant slug for scoped org-context reads', () async { + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.queryParameters['tenantSlug'], 'is3'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://sadmin.hmac.kr'), + keyId: 'key-id', + keySecret: 'key-secret', + tenantSlug: 'hanmac-family', + ); + + await client.fetchOrgContext(tenantSlug: 'is3'); + }); + + test('caches org-context response by requested tenant slug', () async { + final requestedTenantSlugs = []; + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + requestedTenantSlugs.add(request.url.queryParameters['tenantSlug']!); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + keyId: '', + keySecret: '', + tenantSlug: 'hanmac-family', + ); + + await client.fetchOrgContext(tenantSlug: 'is3'); + await client.fetchOrgContext(tenantSlug: 'is3'); + await client.fetchOrgContext(tenantSlug: 'samahn'); + + expect(requestedTenantSlugs, ['is3', 'samahn']); + }); + + test('uses app session bearer token for auth-server org-context proxy', () async { + const store = AuthSessionStore(); + await store.save( + PhoneLoginResponse( + status: 'ok', + token: 'app-session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: const LoginUser( + id: 'user-id', + name: 'User', + phoneNumber: '', + tenantId: '', + tenantName: '', + tenantSlug: '', + ), + ), + ); + + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.host, '114-auth.hmac.kr'); + expect(request.url.path, '/api/v1/integrations/org-context'); + expect(request.headers['Authorization'], 'Bearer app-session-token'); + expect(request.headers.containsKey('X-Baron-Key-ID'), isFalse); + expect(request.headers.containsKey('X-Baron-Key-Secret'), isFalse); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + keyId: '', + keySecret: '', + tenantSlug: 'hanmac-family', + sessionStore: store, + ); + + await client.fetchOrgContext(); + }); + + test('caches org-context response for repeated badge navigation reads', () async { + var requestCount = 0; + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + requestCount += 1; + expect(request.url.path, '/api/v1/integrations/org-context'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://114-auth.hmac.kr'), + keyId: '', + keySecret: '', + tenantSlug: 'hanmac-family', + ); + + await client.fetchOrgContext(); + await client.fetchOrgContext(); + + expect(requestCount, 1); + }); + + test( + 'falls back to env org-context credential without session credential', + () async { + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.host, 'env.example.test'); + expect(request.url.queryParameters['tenantSlug'], 'env-family'); + expect(request.headers['X-Baron-Key-ID'], 'env-key-id'); + expect(request.headers['X-Baron-Key-Secret'], 'env-key-secret'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://env.example.test'), + keyId: 'env-key-id', + keySecret: 'env-key-secret', + tenantSlug: 'env-family', + sessionStore: const AuthSessionStore(), + ); + + await client.fetchOrgContext(); + }, + ); + + test( + 'remote directory repository filters org-context employees locally', + () async { + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.queryParameters['tenantSlug'], 'is3'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://sadmin.hmac.kr'), + keyId: 'key-id', + keySecret: 'key-secret', + tenantSlug: 'hanmac-family', + ); + final repository = RemoteDirectoryRepository(orgContextApiClient: client); + + final employees = await repository.loadEmployees( + const DirectoryQuery(query: '한', tenantSlug: 'is3'), + ); + + expect(employees.map((employee) => employee.name), ['한승민']); + }, + ); + + test( + 'remote directory repository searches selected tenant subtree', + () async { + final client = OrgContextApiClient( + httpClient: MockClient((request) async { + expect(request.url.queryParameters['tenantSlug'], 'center'); + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://sadmin.hmac.kr'), + keyId: 'key-id', + keySecret: 'key-secret', + tenantSlug: 'hanmac-family', + ); + final repository = RemoteDirectoryRepository(orgContextApiClient: client); + + final employees = await repository.loadEmployees( + const DirectoryQuery( + query: '박', + tenantSlug: 'center', + tenantSlugs: ['center', 'is3', 'is2'], + ), + ); + + expect(employees.map((employee) => employee.name), ['박주한']); + }, + ); + + test( + 'remote directory repository preserves department memberships for duplicate users', + () async { + final client = OrgContextApiClient( + httpClient: MockClient((_) async { + return _jsonResponse(_orgContextResponse()); + }), + baseUri: Uri.parse('https://sadmin.hmac.kr'), + keyId: 'key-id', + keySecret: 'key-secret', + tenantSlug: 'hanmac-family', + ); + final repository = RemoteDirectoryRepository(orgContextApiClient: client); + + final employees = await repository.loadEmployees( + const DirectoryQuery(query: '', tenantSlug: 'all', department: 'IS3'), + ); + + expect(employees.map((employee) => employee.name), ['한승민', '김윤재']); + }, + ); +} + +Map _orgContextResponse() { + return { + 'schemaVersion': 'baron.org-context.v1', + 'issuedAt': '2026-07-08T10:07:07.182Z', + 'scope': {'tenantId': 'family-id', 'tenantSlug': 'hanmac-family'}, + 'tree': { + 'id': 'family-id', + 'type': 'COMPANY_GROUP', + 'name': '한맥가족', + 'slug': 'hanmac-family', + 'memberCount': 0, + 'children': [ + { + 'id': 'center-id', + 'type': 'DEPARTMENT', + 'name': '총괄기획&기술개발센터', + 'slug': 'center', + 'parentId': 'family-id', + 'memberCount': 0, + }, + ], + }, + 'tenants': [ + { + 'id': 'is3-id', + 'type': 'TEAM', + 'name': 'IS3', + 'slug': 'is3', + 'parentId': 'center-id', + 'memberCount': 0, + 'members': [ + { + 'id': 'user-han', + 'name': '한승민', + 'phone': '+821031891514', + 'email': 'han@example.com', + 'department': 'IS3', + 'position': '팀장', + 'status': 'active', + }, + { + 'id': 'user-kim', + 'name': '김윤재', + 'phone': '01097479838', + 'email': 'kim@example.com', + 'department': 'IS3', + 'position': '연구원', + 'status': 'active', + }, + ], + }, + { + 'id': 'is2-id', + 'type': 'TEAM', + 'name': 'IS2', + 'slug': 'is2', + 'parentId': 'center-id', + 'memberCount': 0, + 'members': [ + { + 'id': 'user-park', + 'name': '박주한', + 'phone': '01089553850', + 'email': 'park@example.com', + 'department': 'IS2', + 'position': '연구원', + 'status': 'active', + }, + { + 'id': 'user-han', + 'name': '한승민', + 'phone': '01031891514', + 'email': 'han@example.com', + 'department': 'IS2', + 'position': '팀장', + 'status': 'active', + }, + ], + }, + ], + }; +} + +http.Response _jsonResponse(Map body) { + return http.Response.bytes( + utf8.encode(jsonEncode(body)), + 200, + headers: {'content-type': 'application/json; charset=utf-8'}, + ); +} diff --git a/app/test/organization/organization_api_client_test.dart b/app/test/organization/organization_api_client_test.dart new file mode 100644 index 0000000..49ecad1 --- /dev/null +++ b/app/test/organization/organization_api_client_test.dart @@ -0,0 +1,73 @@ +import 'dart:convert'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; +import 'package:tdc114plus/src/features/organization/data/organization_api_client.dart'; + +void main() { + setUp(() async { + SharedPreferences.setMockInitialValues({}); + await const AuthSessionStore().save( + PhoneLoginResponse( + status: 'ok', + token: 'session-token', + expiresAt: DateTime.parse('2026-07-02T12:00:00Z'), + user: const LoginUser( + id: 'user-uuid', + name: 'User One', + phoneNumber: '+821012345678', + tenantId: 'tenant-uuid', + tenantName: 'Hanmac', + tenantSlug: 'hanmac', + ), + ), + ); + }); + + test('loads org chart with bearer token', () async { + final client = OrganizationApiClient( + httpClient: MockClient((request) async { + expect(request.headers['authorization'], 'Bearer session-token'); + expect(request.url.path, '/api/v1/tdc114plus/organization/orgchart'); + return http.Response( + jsonEncode({ + 'tenants': [ + { + 'id': 'tenant-uuid', + 'name': 'Hanmac', + 'slug': 'hanmac', + 'type': 'COMPANY', + 'memberCount': 1, + 'totalMemberCount': 1, + }, + ], + 'employees': [ + { + 'id': 'user-uuid', + 'name': 'User One', + 'phoneNumber': '+821012345678', + 'tenantId': 'tenant-uuid', + 'tenantName': 'Hanmac', + 'tenantSlug': 'hanmac', + }, + ], + 'generatedAt': '2026-07-02T12:00:00Z', + 'cache': {'source': 'db', 'hit': false, 'ttlSeconds': 0}, + }), + 200, + ); + }), + baseUri: Uri.parse('https://sso.example.test'), + sessionStore: const AuthSessionStore(), + ); + + final snapshot = await client.getOrgChart(); + + expect(snapshot.tenants.single.slug, 'hanmac'); + expect(snapshot.employees.single.name, 'User One'); + }); +} diff --git a/app/test/widget_test.dart b/app/test/widget_test.dart index 03ae25f..9cc9b64 100644 --- a/app/test/widget_test.dart +++ b/app/test/widget_test.dart @@ -3,27 +3,144 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:tdc114plus/src/app.dart'; +import 'package:tdc114plus/src/core/actions/contact_launcher.dart'; +import 'package:tdc114plus/src/core/network/api_error.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_repository.dart'; +import 'package:tdc114plus/src/features/auth/data/auth_session_store.dart'; +import 'package:tdc114plus/src/features/auth/domain/auth_models.dart'; +import 'package:tdc114plus/src/features/directory/data/directory_repository.dart'; +import 'package:tdc114plus/src/features/directory/data/mock_directory_data.dart'; +import 'package:tdc114plus/src/features/directory/domain/employee.dart'; +import 'package:tdc114plus/src/features/favorites/data/favorites_repository.dart'; +import 'package:tdc114plus/src/features/favorites/domain/favorite_employee.dart'; +import 'package:tdc114plus/src/features/organization/data/organization_api_client.dart'; +import 'package:tdc114plus/src/features/organization/domain/organization_models.dart'; void main() { - testWidgets('shows Baron SSO login screen', (WidgetTester tester) async { - await tester.pumpWidget(const ProviderScope(child: Tdc114PlusApp())); + testWidgets('shows link-based login screen', (WidgetTester tester) async { + await _pumpApp(tester); + await tester.pumpAndSettle(); - expect(find.text('Baron SSO 로그인'), findsOneWidget); - expect(find.byIcon(Icons.phone_android), findsOneWidget); + expect(find.text('로그인 링크 발송'), findsOneWidget); + expect(find.byType(TextField), findsOneWidget); + expect(find.text('로그인 링크 보내기'), findsOneWidget); }); - testWidgets('moves to directory screen after phone input', ( + testWidgets('restores saved session on app launch', ( WidgetTester tester, ) async { - await tester.pumpWidget(const ProviderScope(child: Tdc114PlusApp())); - - await tester.enterText(find.byType(TextField), '01012345678'); - await tester.tap(find.text('로그인')); + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + ); await tester.pumpAndSettle(); expect(find.text('직원검색'), findsWidgets); expect(find.text('김하늘'), findsOneWidget); - expect(find.text('검색 결과 5명'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('이도윤'), findsNothing); + expect(find.text('검색 결과 2명'), findsOneWidget); + }); + + testWidgets('shows link login guidance with phone input', ( + WidgetTester tester, + ) async { + await _pumpApp(tester); + + expect(find.byType(TextField), findsOneWidget); + expect( + find.textContaining('입력하신 전화번호로 바론SSO 로그인 링크가 발송됩니다.'), + findsNothing, + ); + expect(find.textContaining('문자 승인 후 앱으로 돌아오면 자동 로그인됩니다.'), findsOneWidget); + }); + + testWidgets('keeps login link button visible when keyboard is open', ( + WidgetTester tester, + ) async { + tester.view.physicalSize = const Size(750, 1334); + tester.view.devicePixelRatio = 1; + addTearDown(tester.view.resetPhysicalSize); + addTearDown(tester.view.resetDevicePixelRatio); + + await _pumpApp(tester); + + await tester.tap(find.byType(TextField)); + tester.view.viewInsets = const FakeViewPadding(bottom: 420); + addTearDown(tester.view.resetViewInsets); + await tester.pumpAndSettle(); + + expect(find.text('로그인 링크 보내기'), findsOneWidget); + expect(tester.getBottomLeft(find.text('로그인 링크 보내기')).dy, lessThan(914)); + }); + + testWidgets('requests login link and shows pending status', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(pollMode: _FakePollMode.pendingOnly), + ); + + await tester.enterText(find.byType(TextField), '010-1234-5678'); + await tester.tap(find.text('로그인 링크 보내기')); + await tester.pump(); + + expect( + find.textContaining('문자 링크를 누른 뒤 TDC114PLUS 앱으로 돌아오세요.'), + findsOneWidget, + ); + expect(find.text('승인 대기 중'), findsOneWidget); + expect(find.text('다른 번호 입력'), findsOneWidget); + }); + + testWidgets('restores pending login link and completes polling', ( + WidgetTester tester, + ) async { + final repository = _FakeAuthRepository( + initialPendingLink: const PhoneLoginLinkInitResponse( + status: 'pending', + pendingRef: 'restored-pending-ref', + expiresIn: 180, + interval: 1, + resendAfter: 0, + ), + ); + await _pumpApp(tester, repository: repository); + await tester.pumpAndSettle(); + + expect(repository.polledRefs, contains('restored-pending-ref')); + expect(find.text('직원검색'), findsWidgets); + }); + + testWidgets('defaults directory scope to logged-in user tenant', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('이도윤'), findsNothing); + expect(find.text('정수빈'), findsNothing); + }); + + testWidgets('keeps initial selection at logged-in pinned team scope', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + directoryRepository: const _OrganizationScopedDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + expect(find.text('Hanmac'), findsNothing); + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('검색 결과 2명'), findsOneWidget); }); testWidgets('filters employees by search query', (WidgetTester tester) async { @@ -32,11 +149,92 @@ void main() { await tester.enterText(find.byType(TextField), '서준'); await tester.pumpAndSettle(); + expect(find.text('박서준'), findsNothing); + expect(find.text('김하늘'), findsNothing); + expect(find.text('검색 결과 0명'), findsOneWidget); + }); + + testWidgets('allows one hangul character for employee search', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.enterText(find.byType(TextField), '김'); + await tester.pumpAndSettle(); + + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + }); + + testWidgets('searches employees inside selected company subtree', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + await tester.enterText(find.byType(TextField), '서준'); + await tester.pumpAndSettle(); + expect(find.text('박서준'), findsOneWidget); expect(find.text('김하늘'), findsNothing); expect(find.text('검색 결과 1명'), findsOneWidget); }); + testWidgets('applies local name filter even when API returns broad results', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository( + hasStoredSession: true, + department: '통합시스템', + ), + directoryRepository: const _BroadSearchDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + await tester.enterText(find.byType(TextField), '한'); + await tester.pumpAndSettle(); + + expect(find.text('한승민'), findsOneWidget); + expect(find.text('김윤재'), findsNothing); + expect(find.text('권오재'), findsNothing); + }); + + testWidgets('keeps current scope list when phone query is under minimum', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.enterText(find.byType(TextField), '010'); + await tester.pumpAndSettle(); + + expect(find.text('전화번호는 010 제외 2자리 이상 입력'), findsOneWidget); + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('검색 결과 2명'), findsOneWidget); + }); + + testWidgets('searches only within selected tenant scope', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('TDC')); + await tester.pumpAndSettle(); + await tester.enterText(find.byType(TextField), '김'); + await tester.pumpAndSettle(); + + expect(find.text('김하늘'), findsNothing); + expect(find.text('검색 결과 0명'), findsOneWidget); + }); + testWidgets('filters employees by tenant chip', (WidgetTester tester) async { await _openDirectory(tester); @@ -49,6 +247,352 @@ void main() { expect(find.text('검색 결과 2명'), findsOneWidget); }); + testWidgets('starts hierarchy drilldown from all chip', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + + expect(find.text('가족사 2개'), findsOneWidget); + expect(find.text('한맥'), findsWidgets); + expect(find.text('TDC'), findsWidgets); + expect(find.text('김하늘'), findsNothing); + }); + + testWidgets('does not load employees while showing child organizations', ( + WidgetTester tester, + ) async { + final directoryRepository = _CountingDirectoryRepository(); + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + directoryRepository: directoryRepository, + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + final callsBeforeHierarchy = directoryRepository.calls; + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + + expect(find.text('가족사 2개'), findsOneWidget); + expect(directoryRepository.calls, callsBeforeHierarchy); + }); + + testWidgets( + 'keeps pinned team chip visible after selecting another company', + (WidgetTester tester) async { + await _openDirectory(tester); + + expect(find.widgetWithText(FilterChip, '기술연구소'), findsWidgets); + + await tester.tap(find.text('TDC')); + await tester.pumpAndSettle(); + + expect(find.widgetWithText(FilterChip, '기술연구소'), findsWidgets); + expect(find.text('이도윤'), findsOneWidget); + expect(find.text('정수빈'), findsOneWidget); + }, + ); + + testWidgets('shows pinned team chip before all chip', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + final chips = tester + .widgetList(find.byType(FilterChip)) + .toList(); + final labels = chips + .map((chip) => (chip.label as Text).data ?? '') + .where((label) => label.isNotEmpty) + .toList(); + + final pinnedIndex = labels.indexOf('기술연구소'); + final allIndex = labels.indexOf('전체'); + + expect(pinnedIndex, isNonNegative); + expect(allIndex, isNonNegative); + expect(pinnedIndex, lessThan(allIndex)); + }); + + testWidgets('shows horizontal scrollbar for tenant chips', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + expect(find.byType(Scrollbar), findsOneWidget); + }); + + testWidgets('uses emphasized style for selected tenant chip', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + final chip = tester.widget( + find.widgetWithText(FilterChip, '기술연구소').first, + ); + + expect(chip.selected, isTrue); + expect(chip.showCheckmark, isFalse); + expect(chip.selectedColor, isNotNull); + }); + + testWidgets('selects pinned team chip on initial entry when available', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + final pinnedChip = tester.widget( + find.widgetWithText(FilterChip, '기술연구소').first, + ); + final companyChip = tester.widget( + find.widgetWithText(FilterChip, '한맥').first, + ); + + expect(pinnedChip.selected, isTrue); + expect(companyChip.selected, isFalse); + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('검색 결과 2명'), findsOneWidget); + }); + + testWidgets( + 'resolves initial team from org chart when session scope is empty', + (WidgetTester tester) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository( + hasStoredSession: true, + tenantSlug: '', + department: '', + ), + ); + await tester.pumpAndSettle(); + + final pinnedChip = tester.widget( + find.widgetWithText(FilterChip, '기술연구소').first, + ); + final allChip = tester.widget( + find.widgetWithText(FilterChip, '전체').first, + ); + + expect(pinnedChip.selected, isTrue); + expect(allChip.selected, isFalse); + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + expect(find.text('검색 결과 2명'), findsOneWidget); + }, + ); + + testWidgets( + 'shows synthetic pinned team chip before all chip when tenant node is missing', + (WidgetTester tester) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository( + hasStoredSession: true, + department: 'IS3', + ), + ); + await tester.pumpAndSettle(); + + final chips = tester + .widgetList(find.byType(FilterChip)) + .toList(); + final labels = chips + .map((chip) => (chip.label as Text).data ?? '') + .where((label) => label.isNotEmpty) + .toList(); + + final pinnedIndex = labels.indexOf('IS3'); + final allIndex = labels.indexOf('전체'); + + expect(pinnedIndex, isNonNegative); + expect(allIndex, isNonNegative); + expect(pinnedIndex, lessThan(allIndex)); + }, + ); + + testWidgets( + 'does not duplicate affiliation text when tenant and department match', + (WidgetTester tester) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository( + hasStoredSession: true, + department: 'IS3', + ), + directoryRepository: const _DuplicateAffiliationDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + expect(find.text('IS3 · +821012345678'), findsOneWidget); + expect(find.text('IS3 · IS3 · +821012345678'), findsNothing); + }, + ); + + testWidgets('drills down from all to company to department to employees', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + + expect(find.text('ICT사업부'), findsWidgets); + expect(find.text('기술연구소'), findsWidgets); + + await tester.tap(find.text('기술연구소').last); + await tester.pumpAndSettle(); + + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('박서준'), findsNothing); + }); + + testWidgets('shows direct employees for non-leaf organization separately', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + directoryRepository: const _DirectAffiliationDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + + expect(find.text('한맥 조직 관리자'), findsOneWidget); + expect(find.text('이영희'), findsOneWidget); + expect(find.text('김하늘'), findsNothing); + expect( + tester.getTopLeft(find.text('한맥 조직 관리자')).dy, + lessThan(tester.getTopLeft(find.text('ICT사업부').last).dy), + ); + }); + + testWidgets( + 'excludes root employees that also belong to child organizations from direct employees', + (WidgetTester tester) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + directoryRepository: const _OverlappingMembershipDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + + expect(find.text('한맥 조직 관리자'), findsOneWidget); + expect(find.text('이영희'), findsOneWidget); + expect(find.text('김하늘'), findsNothing); + expect(find.text('박서준'), findsNothing); + }, + ); + + testWidgets('shows divider between top chips and breadcrumb chips', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + + expect(find.byType(Divider), findsAtLeastNWidgets(1)); + }); + + testWidgets('shows emphasized icon on selected breadcrumb chip', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + await tester.tap(find.text('한맥').first); + await tester.pumpAndSettle(); + await tester.tap(find.text('기술연구소').last); + await tester.pumpAndSettle(); + + expect(find.byIcon(Icons.check_circle), findsOneWidget); + }); + + testWidgets('sorts organization employees by manager then grade then name', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + directoryRepository: const _OrganizationSortingDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('기술연구소').last); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + + expect(find.text('인프라 BIM3'), findsOneWidget); + expect(find.text('미지정'), findsOneWidget); + + final leaderY = tester.getTopLeft(find.text('김지영')).dy; + final directorY = tester.getTopLeft(find.text('박도현')).dy; + final principalY = tester.getTopLeft(find.text('김성엽')).dy; + final seniorY = tester.getTopLeft(find.text('한반석')).dy; + final staffY = tester.getTopLeft(find.text('유서진')).dy; + + expect(leaderY, lessThan(principalY)); + expect(principalY, lessThan(directorY)); + expect(directorY, lessThan(seniorY)); + expect(seniorY, lessThan(staffY)); + }); + + testWidgets('returns to employee list after switching organization then employees', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.tap(find.text('전체')); + await tester.pumpAndSettle(); + await tester.tap(find.text('조직도')); + await tester.pumpAndSettle(); + expect(find.text('가족사 2개'), findsOneWidget); + expect(find.text('한맥'), findsWidgets); + + await tester.tap(find.text('직원')); + await tester.pumpAndSettle(); + + expect(find.text('김하늘'), findsOneWidget); + expect(find.byType(Card), findsWidgets); + }); + testWidgets('shows favorite employees view', (WidgetTester tester) async { await _openDirectory(tester); @@ -60,6 +604,19 @@ void main() { expect(find.text('검색 결과 1명'), findsOneWidget); }); + testWidgets('toggles favorite employees', (WidgetTester tester) async { + await _openDirectory(tester); + + await tester.tap(find.byTooltip('즐겨찾기 추가').first); + await tester.pumpAndSettle(); + await tester.tap(find.text('즐겨찾기')); + await tester.pumpAndSettle(); + + expect(find.text('김하늘'), findsOneWidget); + expect(find.text('최민준'), findsOneWidget); + expect(find.text('검색 결과 2명'), findsOneWidget); + }); + testWidgets('opens employee detail bottom sheet', ( WidgetTester tester, ) async { @@ -72,17 +629,962 @@ void main() { expect(find.text('전화'), findsOneWidget); expect(find.text('문자'), findsOneWidget); }); + + testWidgets('loads enriched employee detail in bottom sheet', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + employeeDetailRepository: const _EnrichedEmployeeDetailRepository(), + ); + + await tester.tap(find.text('김하늘')); + await tester.pump(); + await tester.pumpAndSettle(); + + expect(find.text('kim.haneul@corp.example.com'), findsOneWidget); + expect(find.text('보안 아키텍트'), findsOneWidget); + expect(find.text('한맥, 기술연구소'), findsOneWidget); + }); + + testWidgets('falls back to list data when employee detail load fails', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + employeeDetailRepository: const _FailingEmployeeDetailRepository(), + ); + + await tester.tap(find.text('김하늘')); + await tester.pump(); + await tester.pumpAndSettle(); + + expect(find.text('haneul.kim@example.com'), findsOneWidget); + expect(find.text('Flutter 개발'), findsOneWidget); + }); + + testWidgets('disables contact actions when employee has no phone number', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.enterText(find.byType(TextField), '최민준'); + await tester.pumpAndSettle(); + await tester.tap(find.text('최민준').last); + await tester.pumpAndSettle(); + + expect( + tester + .widget(find.widgetWithText(FilledButton, '전화')) + .onPressed, + isNull, + ); + expect( + tester + .widget(find.widgetWithText(OutlinedButton, '문자')) + .onPressed, + isNull, + ); + }); + + testWidgets('honors employee detail action permissions', ( + WidgetTester tester, + ) async { + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + employeeDetailRepository: const _ActionRestrictedEmployeeDetailRepository(), + ); + + await tester.tap(find.text('김하늘')); + await tester.pump(); + await tester.pumpAndSettle(); + + expect( + tester + .widget(find.widgetWithText(FilledButton, '전화')) + .onPressed, + isNull, + ); + expect( + tester + .widget(find.widgetWithText(OutlinedButton, '문자')) + .onPressed, + isNotNull, + ); + }); + + testWidgets('toggles favorite from employee detail bottom sheet', ( + WidgetTester tester, + ) async { + await _openDirectory(tester); + + await tester.enterText(find.byType(TextField), '최민준'); + await tester.pumpAndSettle(); + await tester.tap(find.text('최민준').last); + await tester.pumpAndSettle(); + await tester.tap(find.byTooltip('즐겨찾기 추가').last); + await tester.pumpAndSettle(); + + await tester.tap(find.text('즐겨찾기')); + await tester.pumpAndSettle(); + + expect(find.text('최민준').last, findsOneWidget); + }); + + testWidgets('routes call and sms actions through contact launcher', ( + WidgetTester tester, + ) async { + final launcher = _FakeContactLauncher(); + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + launcher: launcher, + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('김하늘')); + await tester.pumpAndSettle(); + + await tester.tap(find.text('전화')); + await tester.pumpAndSettle(); + await tester.tap(find.text('문자')); + await tester.pumpAndSettle(); + + expect(launcher.calledNumbers, ['call:+821012345678', 'sms:+821012345678']); + }); + + testWidgets('returns to login when directory API requires relogin', ( + WidgetTester tester, + ) async { + final repository = _FakeAuthRepository(hasStoredSession: true); + await _pumpApp( + tester, + repository: repository, + directoryRepository: const _UnauthorizedDirectoryRepository(), + ); + await tester.pumpAndSettle(); + + expect(find.text('다시 로그인'), findsOneWidget); + + await tester.tap(find.text('다시 로그인')); + await tester.pumpAndSettle(); + + expect(repository.logoutCalled, isTrue); + expect(find.text('로그인 링크 발송'), findsOneWidget); + }); + + testWidgets('logs out from directory app bar', (WidgetTester tester) async { + final repository = _FakeAuthRepository(hasStoredSession: true); + await _pumpApp(tester, repository: repository); + await tester.pumpAndSettle(); + + await tester.tap(find.byTooltip('로그아웃')); + await tester.pumpAndSettle(); + + expect(repository.logoutCalled, isTrue); + expect(find.text('로그인 링크 발송'), findsOneWidget); + }); } Future _openDirectory(WidgetTester tester) async { - await tester.pumpWidget(const ProviderScope(child: Tdc114PlusApp())); + await _pumpApp( + tester, + repository: _FakeAuthRepository(hasStoredSession: true), + ); await tester.pumpAndSettle(); if (find.text('직원검색').evaluate().isNotEmpty) { return; } +} - await tester.enterText(find.byType(TextField), '01012345678'); - await tester.tap(find.text('로그인')); +Future _pumpApp( + WidgetTester tester, { + AuthRepository? repository, + DirectoryRepository? directoryRepository, + EmployeeDetailRepository? employeeDetailRepository, + OrganizationRepository? organizationRepository, + ContactLauncher? launcher, +}) async { + await tester.pumpWidget( + ProviderScope( + overrides: [ + authRepositoryProvider.overrideWithValue( + repository ?? _FakeAuthRepository(), + ), + directoryRepositoryProvider.overrideWithValue( + directoryRepository ?? const _FakeDirectoryRepository(), + ), + employeeDetailRepositoryProvider.overrideWithValue( + employeeDetailRepository ?? const _FakeEmployeeDetailRepository(), + ), + organizationRepositoryProvider.overrideWithValue( + organizationRepository ?? const _FakeOrganizationRepository(), + ), + favoritesRepositoryProvider.overrideWithValue( + _FakeFavoritesRepository(), + ), + contactLauncherProvider.overrideWithValue( + launcher ?? _FakeContactLauncher(), + ), + ], + child: const Tdc114PlusApp(), + ), + ); await tester.pumpAndSettle(); } + +class _FakeAuthRepository implements AuthRepository { + _FakeAuthRepository({ + this.hasStoredSession = false, + this.tenantSlug = 'hanmac', + this.department = '기술연구소', + this.pollMode = _FakePollMode.completeImmediately, + this.initialPendingLink, + }); + + final bool hasStoredSession; + final String tenantSlug; + final String department; + final _FakePollMode pollMode; + final PhoneLoginLinkInitResponse? initialPendingLink; + StoredAuthSession? _storedSession; + PhoneLoginLinkInitResponse? _pendingLink; + var _pendingCleared = false; + final List polledRefs = []; + var logoutCalled = false; + + Future phoneLogin(String phoneNumber) async { + final response = PhoneLoginResponse( + status: 'ok', + token: 'session-token', + expiresAt: DateTime.parse('2026-07-02T12:00:00Z'), + user: LoginUser( + id: 'user-uuid', + name: 'User One', + phoneNumber: '+821012345678', + tenantId: 'tenant-uuid', + tenantName: 'Hanmac', + tenantSlug: tenantSlug, + department: department, + ), + ); + _storedSession = StoredAuthSession( + token: response.token, + expiresAt: response.expiresAt, + user: response.user, + ); + return response; + } + + @override + Future requestPhoneLoginLink( + String phoneNumber, + ) async { + _pendingCleared = false; + _pendingLink = const PhoneLoginLinkInitResponse( + status: 'pending', + pendingRef: 'pending-ref', + expiresIn: 180, + interval: 1, + resendAfter: 30, + ); + return _pendingLink!; + } + + @override + Future pollPhoneLoginLink( + String pendingRef, + ) async { + polledRefs.add(pendingRef); + if (pollMode == _FakePollMode.pendingOnly) { + return const PhoneLoginLinkPollResponse( + status: 'pending', + code: 'authorization_pending', + interval: 1, + ); + } + return PhoneLoginLinkPollResponse( + status: 'ok', + session: await phoneLogin('01012345678'), + ); + } + + @override + Future loadPendingPhoneLoginLink() async { + if (_pendingCleared) { + return null; + } + return _pendingLink ?? initialPendingLink; + } + + @override + Future clearPendingPhoneLoginLink() async { + _pendingLink = null; + _pendingCleared = true; + } + + @override + Future loadSession() async { + if (_storedSession != null) { + return _storedSession; + } + if (!hasStoredSession) { + return null; + } + return StoredAuthSession( + token: 'session-token', + expiresAt: DateTime.now().toUtc().add(const Duration(hours: 1)), + user: LoginUser( + id: 'user-uuid', + name: 'User One', + phoneNumber: '+821012345678', + tenantId: 'tenant-uuid', + tenantName: 'Hanmac', + tenantSlug: tenantSlug, + department: department, + ), + ); + } + + @override + Future logout() async { + logoutCalled = true; + _pendingLink = null; + _pendingCleared = true; + } +} + +enum _FakePollMode { completeImmediately, pendingOnly } + +class _FakeDirectoryRepository implements DirectoryRepository { + const _FakeDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + return _filteredEmployees(query); + } + + List _filteredEmployees(DirectoryQuery query) { + final normalizedQuery = query.query.replaceAll('-', '').toLowerCase(); + final selectedTenant = _findTenantBySlug(query.tenantSlug); + final tenantSlugs = query.apiTenantSlugs; + return mockEmployees.where((employee) { + final matchesTenant = + tenantSlugs == null || + tenantSlugs.contains(employee.tenantSlug) || + (selectedTenant != null && + selectedTenant.type != 'COMPANY' && + (employee.department ?? '') == selectedTenant.name); + final matchesDepartment = + query.department == null || employee.department == query.department; + final phone = employee.phoneNumber.replaceAll(RegExp(r'[^0-9]'), ''); + final phoneDisplay = employee.phoneDisplay?.replaceAll('-', '') ?? ''; + final searchable = [ + employee.name, + employee.phoneNumber, + employee.phoneDisplay ?? '', + employee.email ?? '', + employee.tenantName, + employee.department ?? '', + employee.grade ?? '', + employee.position ?? '', + employee.jobTitle ?? '', + phone, + phoneDisplay, + ].join(' ').toLowerCase(); + final matchesQuery = + normalizedQuery.isEmpty || searchable.contains(normalizedQuery); + return matchesTenant && matchesDepartment && matchesQuery; + }).toList(); + } + + TenantSummary? _findTenantBySlug(String slug) { + for (final tenant in mockTenants) { + if (tenant.slug == slug) { + return tenant; + } + } + return null; + } +} + +class _FakeEmployeeDetailRepository implements EmployeeDetailRepository { + const _FakeEmployeeDetailRepository(); + + @override + Future loadEmployeeDetail(String employeeId) async { + final employee = mockEmployees.firstWhere((item) => item.id == employeeId); + return EmployeeDetail( + id: employee.id, + name: employee.name, + phoneNumber: employee.phoneNumber, + phoneDisplay: employee.phoneDisplay, + email: employee.email, + tenantId: employee.tenantId, + tenantName: employee.tenantName, + tenantSlug: employee.tenantSlug, + department: employee.department, + grade: employee.grade, + position: employee.position, + jobTitle: employee.jobTitle, + status: employee.status, + profileImageUrl: employee.profileImageUrl, + sortOrder: employee.sortOrder, + isManager: employee.isManager, + joinedTenants: [ + TenantRef( + id: employee.tenantId, + name: employee.tenantName, + slug: employee.tenantSlug, + type: 'COMPANY', + ), + ], + actions: const EmployeeActions(call: true, sms: true, email: true), + ); + } +} + +class _EnrichedEmployeeDetailRepository implements EmployeeDetailRepository { + const _EnrichedEmployeeDetailRepository(); + + @override + Future loadEmployeeDetail(String employeeId) async { + return const EmployeeDetail( + id: 'user-001', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'kim.haneul@corp.example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + department: '기술연구소', + grade: '책임', + position: '팀장', + jobTitle: '보안 아키텍트', + status: 'active', + joinedTenants: [ + TenantRef( + id: 'tenant-hanmac', + name: '한맥', + slug: 'hanmac', + type: 'COMPANY', + ), + TenantRef( + id: 'tenant-rnd', + name: '기술연구소', + slug: 'rnd', + type: 'ORGANIZATION', + parentId: 'tenant-hanmac', + ), + ], + actions: EmployeeActions(call: true, sms: true, email: true), + ); + } +} + +class _FailingEmployeeDetailRepository implements EmployeeDetailRepository { + const _FailingEmployeeDetailRepository(); + + @override + Future loadEmployeeDetail(String employeeId) async { + throw const ApiException( + statusCode: 500, + apiError: ApiError( + error: 'detail_failed', + code: 'detail_failed', + details: {}, + ), + ); + } +} + +class _ActionRestrictedEmployeeDetailRepository + implements EmployeeDetailRepository { + const _ActionRestrictedEmployeeDetailRepository(); + + @override + Future loadEmployeeDetail(String employeeId) async { + return const EmployeeDetail( + id: 'user-001', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'haneul.kim@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + department: '기술연구소', + grade: '책임', + position: '팀장', + jobTitle: 'Flutter 개발', + status: 'active', + joinedTenants: [], + actions: EmployeeActions(call: false, sms: true, email: true), + ); + } +} + +class _CountingDirectoryRepository implements DirectoryRepository { + var calls = 0; + + @override + Future> loadEmployees(DirectoryQuery query) async { + calls += 1; + return const _FakeDirectoryRepository().loadEmployees(query); + } +} + +class _FakeOrganizationRepository implements OrganizationRepository { + const _FakeOrganizationRepository(); + + @override + Future getOrgChart({ + String? tenantId, + bool refresh = false, + }) async { + return OrgChartSnapshot( + tenants: mockTenants, + employees: mockEmployees, + generatedAt: DateTime.parse('2026-07-02T00:00:00Z'), + ); + } + + @override + Future listTenants() async { + return TenantListResponse( + items: mockTenants, + generatedAt: DateTime.parse('2026-07-02T00:00:00Z'), + ); + } +} + +class _FakeFavoritesRepository implements FavoritesRepository { + _FakeFavoritesRepository() + : _favorites = [ + FavoriteEmployee( + employeeId: 'user-001', + createdAt: DateTime.parse('2026-07-02T00:00:00Z'), + ), + ]; + + final List _favorites; + + @override + Future> loadFavorites() async { + return List.unmodifiable(_favorites); + } + + @override + Future toggleFavorite(String employeeId) async { + final existingIndex = _favorites.indexWhere( + (favorite) => favorite.employeeId == employeeId, + ); + if (existingIndex >= 0) { + _favorites.removeAt(existingIndex); + return; + } + + _favorites.add( + FavoriteEmployee(employeeId: employeeId, createdAt: DateTime.now()), + ); + } +} + +class _UnauthorizedDirectoryRepository implements DirectoryRepository { + const _UnauthorizedDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + throw const ApiException( + statusCode: 401, + apiError: ApiError( + error: 'unauthorized', + code: 'unauthorized', + details: {}, + ), + ); + } +} + +class _DuplicateAffiliationDirectoryRepository implements DirectoryRepository { + const _DuplicateAffiliationDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + return const [ + Employee( + id: 'is3-user', + name: '송대일', + phoneNumber: '+821012345678', + phoneDisplay: '+821012345678', + tenantId: 'tenant-is3', + tenantName: 'IS3', + tenantSlug: 'is3', + department: 'IS3', + ), + ]; + } +} + +class _OrganizationScopedDirectoryRepository implements DirectoryRepository { + const _OrganizationScopedDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + if (query.tenantSlug == 'hanmac' && query.query == '+821012345678') { + return const [ + Employee( + id: 'user-002', + name: '박서준', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'seojun.park@example.com', + tenantId: 'tenant-ict', + tenantName: 'ICT사업부', + tenantSlug: 'ict', + department: 'ICT사업부', + position: '매니저', + ), + ]; + } + + if (query.tenantSlug == 'ict') { + return const [ + Employee( + id: 'user-002', + name: '박서준', + phoneNumber: '+821023456789', + phoneDisplay: '010-2345-6789', + email: 'seojun.park@example.com', + tenantId: 'tenant-ict', + tenantName: 'ICT사업부', + tenantSlug: 'ict', + department: 'ICT사업부', + grade: '선임', + position: '매니저', + ), + ]; + } + + if (query.tenantSlug == 'rnd') { + return const [ + Employee( + id: 'user-001', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'haneul.kim@example.com', + tenantId: 'tenant-rnd', + tenantName: '기술연구소', + tenantSlug: 'rnd', + department: '기술연구소', + grade: '책임', + position: '팀장', + ), + Employee( + id: 'user-005', + name: '최민준', + phoneNumber: '', + phoneDisplay: null, + email: 'minjun.choi@example.com', + tenantId: 'tenant-rnd', + tenantName: '기술연구소', + tenantSlug: 'rnd', + department: '기술연구소', + grade: '수석', + position: '연구원', + ), + ]; + } + + if (query.tenantSlug == 'ict' && query.query.isEmpty) { + return const [ + Employee( + id: 'user-002', + name: '박서준', + phoneNumber: '+821023456789', + phoneDisplay: '010-2345-6789', + email: 'seojun.park@example.com', + tenantId: 'tenant-ict', + tenantName: 'ICT사업부', + tenantSlug: 'ict', + department: 'ICT사업부', + grade: '선임', + position: '매니저', + jobTitle: 'API 연동', + status: 'active', + sortOrder: 20, + ), + ]; + } + + return const _FakeDirectoryRepository().loadEmployees(query); + } +} + +class _OrganizationSortingDirectoryRepository implements DirectoryRepository { + const _OrganizationSortingDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + if (query.tenantSlug != 'rnd') { + return const _FakeDirectoryRepository().loadEmployees(query); + } + return const [ + Employee( + id: 'user-b', + name: '유서진', + phoneNumber: '+821011111113', + phoneDisplay: '010-1111-1113', + email: 'user3@example.com', + tenantId: 'tenant-infra-bim3', + tenantName: '인프라 BIM3', + tenantSlug: 'rnd', + department: '미지정', + grade: '사원', + position: '연구원', + ), + Employee( + id: 'user-director', + name: '박도현', + phoneNumber: '+821011111115', + phoneDisplay: '010-1111-1115', + email: 'director@example.com', + tenantId: 'tenant-infra-bim3', + tenantName: '인프라 BIM3', + tenantSlug: 'rnd', + department: '미지정', + grade: '이사', + position: '임원', + ), + Employee( + id: 'user-a', + name: '김성엽', + phoneNumber: '+821011111112', + phoneDisplay: '010-1111-1112', + email: 'user2@example.com', + tenantId: 'tenant-infra-bim3', + tenantName: '인프라 BIM3', + tenantSlug: 'rnd', + department: '미지정', + grade: '수석연구원', + position: '연구원', + ), + Employee( + id: 'user-leader', + name: '김지영', + phoneNumber: '+821011111111', + phoneDisplay: '010-1111-1111', + email: 'leader@example.com', + tenantId: 'tenant-infra-bim3', + tenantName: '인프라 BIM3', + tenantSlug: 'rnd', + department: '미지정', + grade: '책임연구원', + position: '팀장', + isManager: true, + ), + Employee( + id: 'user-c', + name: '한반석', + phoneNumber: '+821011111114', + phoneDisplay: '010-1111-1114', + email: 'user4@example.com', + tenantId: 'tenant-infra-bim3', + tenantName: '인프라 BIM3', + tenantSlug: 'rnd', + department: '미지정', + grade: '선임연구원', + position: '연구원', + ), + ]; + } +} + +class _DirectAffiliationDirectoryRepository implements DirectoryRepository { + const _DirectAffiliationDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + if (query.tenantSlug != 'hanmac') { + return const _FakeDirectoryRepository().loadEmployees(query); + } + return const [ + Employee( + id: 'direct-manager', + name: '이영희', + phoneNumber: '+821011112222', + phoneDisplay: '010-1111-2222', + email: 'younghee.lee@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + grade: '이사', + position: '디비전장', + isManager: true, + ), + Employee( + id: 'child-member', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'haneul.kim@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + department: '기술연구소', + grade: '책임', + position: '팀장', + ), + ]; + } +} + +class _OverlappingMembershipDirectoryRepository implements DirectoryRepository { + const _OverlappingMembershipDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + if (query.tenantSlug != 'hanmac') { + return const _FakeDirectoryRepository().loadEmployees(query); + } + return const [ + Employee( + id: 'root-only-exec', + name: '이영희', + phoneNumber: '+821011112222', + phoneDisplay: '010-1111-2222', + email: 'younghee.lee@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + grade: '이사', + position: '디비전장', + isManager: true, + ), + Employee( + id: 'child-member-1', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'haneul.kim@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + grade: '책임', + position: '팀장', + ), + Employee( + id: 'child-member-1', + name: '김하늘', + phoneNumber: '+821012345678', + phoneDisplay: '010-1234-5678', + email: 'haneul.kim@example.com', + tenantId: 'tenant-rnd', + tenantName: '한맥', + tenantSlug: 'rnd', + department: '기술연구소', + grade: '책임', + position: '팀장', + ), + Employee( + id: 'child-member-2', + name: '박서준', + phoneNumber: '+821023456789', + phoneDisplay: '010-2345-6789', + email: 'seojun.park@example.com', + tenantId: 'tenant-hanmac', + tenantName: '한맥', + tenantSlug: 'hanmac', + grade: '선임', + position: '매니저', + ), + Employee( + id: 'child-member-2', + name: '박서준', + phoneNumber: '+821023456789', + phoneDisplay: '010-2345-6789', + email: 'seojun.park@example.com', + tenantId: 'tenant-ict', + tenantName: '한맥', + tenantSlug: 'ict', + department: 'ICT사업부', + grade: '선임', + position: '매니저', + ), + ]; + } +} + +class _BroadSearchDirectoryRepository implements DirectoryRepository { + const _BroadSearchDirectoryRepository(); + + @override + Future> loadEmployees(DirectoryQuery query) async { + if (query.tenantSlug != 'hanmac' && query.apiDepartment != '통합시스템') { + return const _FakeDirectoryRepository().loadEmployees(query); + } + + return const [ + Employee( + id: 'broad-001', + name: '김윤재', + phoneNumber: '+821097479838', + phoneDisplay: '010-9747-9838', + email: 'yoonjae.kim@example.com', + tenantId: 'tenant-hanmac', + tenantName: '총괄기획&기술개발센터', + tenantSlug: 'hanmac', + department: '통합시스템', + position: 'IS1', + ), + Employee( + id: 'broad-002', + name: '한승민', + phoneNumber: '+821031891514', + phoneDisplay: '010-3189-1514', + email: 'seungmin.han@example.com', + tenantId: 'tenant-hanmac', + tenantName: '총괄기획&기술개발센터', + tenantSlug: 'hanmac', + department: '통합시스템', + position: 'IS1', + ), + Employee( + id: 'broad-003', + name: '권오재', + phoneNumber: '+821091143943', + phoneDisplay: '010-9114-3943', + email: 'ojae.kwon@example.com', + tenantId: 'tenant-hanmac', + tenantName: '총괄기획&기술개발센터', + tenantSlug: 'hanmac', + department: '통합시스템', + position: 'IS2', + ), + ]; + } +} + +class _FakeContactLauncher implements ContactLauncher { + _FakeContactLauncher(); + + final List calledNumbers = []; + + @override + Future call(String phoneNumber) async { + calledNumbers.add('call:$phoneNumber'); + return true; + } + + @override + Future sms(String phoneNumber) async { + calledNumbers.add('sms:$phoneNumber'); + return true; + } +} diff --git a/app/test_driver/integration_driver.dart b/app/test_driver/integration_driver.dart new file mode 100644 index 0000000..b38629c --- /dev/null +++ b/app/test_driver/integration_driver.dart @@ -0,0 +1,3 @@ +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/docs/00_contract_tdc114plus_api_2026-07-02.md b/docs/00_contract_tdc114plus_api_2026-07-02.md new file mode 100644 index 0000000..9fa1faf --- /dev/null +++ b/docs/00_contract_tdc114plus_api_2026-07-02.md @@ -0,0 +1,229 @@ +# tdc114plus API 계약 + +작성일: 2026-07-02 +최종 개정일: 2026-07-10 +상태: v3.3 + +목적: `tdc114plus` Flutter 앱이 공식 인터페이스 기준으로 설계·개발될 수 있도록 1차 API 계약 원칙과 우선 사용 흐름을 정리한다. + +상위 기준 문서: + +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` +- `docs/00_policy_tdc114plus_development_2026-07-02.md` + +공식 인터페이스 기준: + +- Swagger/API Docs: `https://sadmin.hmac.kr/api/docs#/` +- 사용자 확인 추가 기준: `tdc114plus 앱 전용 API는 없고`, Swagger에 공개된 Baron API를 앱이 직접 소비한다. + +## 1. 전제 + +- `tdc114plus` 신규 앱은 Baron SSO에 등록되는 별도 `RP(Relying Party)`다. +- 앱 인증은 Baron SSO의 RP 로그인 절차 일부로 본다. +- 앱은 Baron SSO 내부 구현이 아니라 공식 API 계약을 기준으로 설계한다. +- 실제 backend 구현 상태와 무관하게 Flutter 앱은 이 계약을 바탕으로 mock/real 병행 개발이 가능해야 한다. +- 현재 저장소 코드에 남아 있는 `/api/v1/tdc114plus/...` 가정은 확정 계약이 아니라 재검증 대상이다. +- 재검증 대상 경로는 기능이 유지되는지 확인하면서 단계적으로 교체 또는 제거한다. + +## 2. 핵심 원칙 + +- 신규 앱의 기본 로그인은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`로 진행한다. +- 앱은 Baron SSO 인증 URL을 열고, Baron SSO 로그인 화면에서 휴대폰번호 입력 및 문자/메일 링크 인증을 처리한다. +- 앱은 callback으로 받은 authorization code를 PKCE `code_verifier`로 token 교환한 뒤 앱 세션을 저장한다. +- 로그인 성공 후 Baron SSO가 조직도 API 호출에 필요한 연동 키 묶음을 내려주는 구조를 최종 목표로 둔다. +- 해당 Baron SSO 기능이 개발되기 전까지는 앱 개발/검증용으로 로컬 비추적 환경값에 설정한 staging `org-context` 키를 fallback으로 사용한다. +- 기존 `선진행 후확인` 방식은 신규 앱 기본 인증 정책으로 사용하지 않는다. +- 기존 `phone-login` 방식은 개발용 fallback 또는 제한적 호환 범위로만 둔다. +- 레거시 계약 제거는 `대체 path 반영 -> mock/real 테스트 통과 -> 실제 화면 확인 -> 제거` 순서를 지킨다. +- JSON field는 camelCase를 사용한다. +- 목록 응답은 가능하면 `items`, `limit`, `offset`, `total`, `nextCursor` 형식을 따른다. +- UI는 DTO와 repository interface만 의존하고, endpoint path나 header를 직접 다루지 않는다. + +## 3. 1차 범위 + +- Baron SSO Hosted Login 시작 +- App Link callback 수신 +- PKCE authorization code token 교환 +- 로그인 세션 저장 후 앱 진입 +- 직원검색 +- 가족사/조직 탐색 +- 조직도 +- 직원 상세 +- 즐겨찾기 로컬 저장 + +보류: + +- 공지사항 +- 전자결재 +- 수신전화식별 +- 수신팝업 +- 서버 기반 즐겨찾기 동기화 + +## 4. 인증 계약 + +주의: + +- `tdc114plus 앱 전용 API는 없다`는 사용자 확인이 들어왔으므로, 아래 계약은 Baron Swagger 기준으로 재정렬한다. +- Flutter 앱은 Baron headless API를 직접 호출하지 않는다. +- 휴대폰번호 입력과 링크 발송/승인은 Baron SSO Hosted Login 화면과 서버 내부 구현으로 둔다. +- legacy `/api/v1/tdc114plus/...` path는 예외 호환 또는 과거 흔적으로만 취급한다. + +### 4.1 로그인 시작 + +```http +GET https://sso.hmac.kr/oidc/oauth2/auth +``` + +의미: + +- 앱이 PKCE `code_verifier`, `code_challenge`, `state`, `nonce`를 생성한다. +- 앱이 Baron SSO authorization endpoint를 브라우저/커스텀탭으로 연다. +- 사용자는 Baron SSO Hosted Login 화면에서 휴대폰번호 입력과 문자/메일 링크 인증을 진행한다. + +예시 query: + +```http +client_id=39d6190d-72f6-4a58-a84f-cdc5ece3e8af +redirect_uri=https://114.hmac.kr/auth/callback +response_type=code +scope=openid profile email tenants +state={random-state} +nonce={random-nonce} +code_challenge={S256-code-challenge} +code_challenge_method=S256 +``` + +### 4.2 callback 수신 + +```http +GET https://114.hmac.kr/auth/callback?code={authorization-code}&state={state} +``` + +의미: + +- `https://114.hmac.kr/auth/callback`은 Android App Link로 앱에 연결한다. +- 앱은 callback의 `state`가 저장된 PKCE transaction의 `state`와 같은지 검증한다. +- `state`가 다르면 token 교환을 중단한다. + +### 4.3 token 교환 + +```http +POST https://sso.hmac.kr/oidc/oauth2/token +``` + +의미: + +- 앱은 authorization code와 저장된 `code_verifier`를 사용해 token endpoint를 호출한다. +- PKCE 공개 앱이므로 Client Secret을 보내지 않는다. + +예시 요청: + +```http +grant_type=authorization_code +client_id=39d6190d-72f6-4a58-a84f-cdc5ece3e8af +code={authorization-code} +code_verifier={stored-code-verifier} +redirect_uri=https://114.hmac.kr/auth/callback +``` + +완료 응답 예시: + +```json +{ + "access_token": "access-token", + "token_type": "Bearer", + "expires_in": 3600, + "id_token": "id-token", + "org_context": { + "base_url": "https://sadmin.hmac.kr", + "tenant_slug": "hanmac-family", + "key_id": "org-context-key-id", + "key_secret": "org-context-key-secret", + "expires_at": "2026-07-10T12:00:00Z" + } +} +``` + +`org_context`는 향후 Baron SSO가 제공할 예정인 확장 필드 예시다. 현재 staging 서버 기능이 미개발이면 응답에 없을 수 있으며, 앱은 이 필드가 없을 때 로컬 비추적 환경값의 staging 고정 키를 사용한다. + +### 4.4 headless API 직접 호출 제외 + +```http +POST /api/v1/auth/headless/phone-login +POST /api/v1/auth/headless/link/poll +``` + +- 위 API는 Baron SSO 내부 구현 또는 confidential client용 참고 계약으로 본다. +- 현재 Flutter 앱은 공개 PKCE 앱이므로 `client_assertion`, `private_key_jwt`, RP 개인키를 APK에 넣지 않는다. +- 따라서 위 API는 신규 앱 기본 로그인 구현에서 직접 호출하지 않는다. + +### 4.5 레거시/개발용 즉시 로그인 + +```http +POST /api/v1/tdc114plus/auth/phone-login +``` + +- 이 경로는 개발용 fallback 또는 제한적 호환 범위로만 본다. +- 신규 앱 기본 로그인 UX로 간주하지 않는다. + +## 5. 세션 및 사용자 정보 + +### 5.1 세션 저장 기준 + +- token 교환 성공 시 반환된 access token과 만료시간을 앱 저장소에 저장한다. +- 사용자 정보는 `id_token` claim 또는 후속 `userinfo` 응답에서 가져온다. +- 조직도 API 호출용 연동 키가 token 응답, userinfo, 또는 별도 session endpoint로 전달되면 앱 세션의 선택적 `orgContextCredential`로 저장한다. +- `orgContextCredential`이 있으면 `integrations/org-context` 호출 시 이 값을 우선 사용하고, 없으면 개발/검증용 비추적 환경값 fallback을 사용한다. +- 연동 키는 로그에 출력하지 않고, 운영 배포 전에는 안전 저장소 적용 여부를 별도 검토한다. +- 앱 재실행 시 저장 세션이 유효하면 로그인 화면을 건너뛴다. +- API 호출 중 `401/403`이 발생하면 세션 정리 후 재로그인 흐름으로 돌린다. + +### 5.2 사용자 기본 정보 + +로그인 완료 후 앱이 기대하는 최소 사용자 정보: + +```json +{ + "id": "user-uuid", + "name": "홍길동", + "phoneNumber": "+821012345678", + "tenantId": "tenant-uuid", + "tenantName": "한맥", + "tenantSlug": "hanmac", + "department": "기술연구소", + "grade": "책임", + "position": "팀장", + "jobTitle": "개발" +} +``` + +## 6. 조직/직원 데이터 계약 원칙 + +- 직원검색과 조직도는 공식 인터페이스가 제공하는 조직/직원 endpoint를 기준으로 설계한다. +- 실제 배포 전까지 조직/직원 API 기준은 staging Swagger(`https://sadmin.hmac.kr/api/docs#/Integrations/get_api_v1_integrations_org_context`)와 staging `org-context` endpoint를 따른다. +- 가족사/조직 탐색은 `tenant` 계층과 `tenantSlug`를 기준으로 진행한다. +- 로그인 직후 기본 범위는 사용자의 회사급 `tenantSlug`를 우선 기준으로 한다. +- 화면 정책상 필요한 drilldown 구조는 repository 계층에서 정리하고 UI는 결과 모델만 소비한다. +- 현재 `/api/v1/tdc114plus/organization/*`, `/api/v1/tdc114plus/directory/*` 같은 path는 확정 계약이 아니라 placeholder 성격일 수 있으므로, Swagger의 실제 공개 path인 `integrations/org-context`, `public/orgchart` 기준으로 교체한다. +- 교체 전까지는 mock과 실제 화면이 같은 결과를 내는지 확인해 기능 공백 없이 전환한다. + +### 6.1 subtree 계약 보강 필요사항 + +- 회사 선택 후 `부서 -> 팀 -> 개인` drilldown을 구현하려면 조직 subtree 조회 계약이 필요하다. +- 현재 API가 최상위 tenant 위주 응답만 제공하는 경우, 앱은 fallback으로 회사 단위 직원 목록과 본인팀 synthetic chip만 유지한다. +- Swagger의 `public/orgchart`처럼 `tenants[]`, `users[]` 중심 응답을 사용할 경우에도, 최종 목표 계약은 해당 배열만으로 특정 tenant 기준 자식 조직 subtree와 leaf 판단 정보를 복원할 수 있는 형태다. +- 해당 보강 요청은 `docs/00_guide_baron_sso_subtree_api_issue_request_2026-07-07.md` 초안 기준으로 Baron SSO 이슈로 병행 관리한다. + +## 7. Flutter 구현 해석 + +- `auth` feature는 Hosted Login authorization URL 생성, PKCE transaction 저장, callback token 교환, 세션 저장 흐름을 우선 구현한다. +- `directory`, `organization` feature는 `org-context` 중심 Swagger DTO와 repository interface를 먼저 고정한다. +- mock repository는 실제 API 미구현 상태에서도 유지한다. +- 실제 API 경로와 mock 경로는 동일한 UI 흐름을 만족해야 한다. + +## 8. 문서 갱신 원칙 + +- Swagger 기준이 달라지면 이 문서를 먼저 갱신한다. +- 새 endpoint를 사용하기 시작하면 request/response 예시를 추가한다. +- 내부 추정이 아니라 공식 인터페이스에서 확인된 내용만 확정 표현으로 남긴다. +- 사용자 확인으로 뒤집힌 가정은 즉시 `가정` 또는 `재검증 대상`으로 강등한다. diff --git a/docs/00_guide_baron_sso_mobile_headless_contract_request_2026-07-09.md b/docs/00_guide_baron_sso_mobile_headless_contract_request_2026-07-09.md new file mode 100644 index 0000000..eca6dc9 --- /dev/null +++ b/docs/00_guide_baron_sso_mobile_headless_contract_request_2026-07-09.md @@ -0,0 +1,60 @@ +# Baron SSO PKCE 모바일 RP Headless 계약 확인 요청 + +## 이슈 제목 + +`[API Contract Request] PKCE 모바일 RP의 Headless 전화번호 로그인 지원 방식 확인 요청` + +## 배경 + +신규 Flutter 앱 `TDC114PLUS`를 Baron SSO의 PKCE 공개 클라이언트 RP로 등록했습니다. + +- Client ID: `39d6190d-72f6-4a58-a84f-cdc5ece3e8af` +- Redirect URI: `https://114.hmac.kr/auth/callback` +- Client Secret: 없음 +- OIDC issuer: `https://sso.hmac.kr/oidc` + +앱의 로그인 UX는 아래 순서를 사용합니다. + +1. 사용자가 앱에서 전화번호로 로그인을 요청 +2. Baron SSO가 문자 또는 메일로 승인 링크 발송 +3. 사용자가 링크 클릭 +4. 앱이 승인 상태를 확인 +5. OIDC authorization code + PKCE로 앱 세션 생성 + +## 확인된 계약 + +Swagger의 아래 API는 `client_assertion`을 필수로 요구합니다. + +- `POST /api/v1/auth/headless/phone-login` +- `POST /api/v1/auth/headless/link/poll` + +`client_assertion`은 `private_key_jwt`로 설명되어 있습니다. 그러나 TDC114PLUS는 Client Secret이나 개인키를 안전하게 보관할 수 없는 PKCE 공개 모바일 앱입니다. + +## 문제점 + +모바일 APK에 `private_key_jwt` 서명용 개인키를 포함하면 추출될 수 있으므로 공개 클라이언트 보안 모델에 맞지 않습니다. + +OIDC Discovery에서는 token endpoint 인증 방식 `none`과 PKCE S256을 지원하므로 authorization code 교환은 가능하지만, 그 앞의 headless API 호출 방법이 현재 계약만으로는 확정되지 않습니다. + +## 요청 사항 + +PKCE 공개 모바일 RP에서 아래 값을 획득하고 headless 로그인을 진행하는 공식 절차를 명세해 주시기 바랍니다. + +1. `login_challenge` 획득 절차 +2. `client_assertion` 생략 가능 여부 +3. 생략이 불가능한 경우 단기·1회성 assertion 발급 endpoint +4. assertion의 issuer, subject, audience, 만료시간, 서명 알고리즘 +5. `phone-login -> link/poll -> redirectTo -> callback -> token` 전체 순서 +6. 각 단계의 Request/Response 예시와 오류 코드 + +## 제안 가능한 방식 + +- 모바일 PKCE RP에 한해 headless API에서 assertion 대신 등록된 Client ID, PKCE transaction, 짧은 TTL의 서버 challenge를 검증 +- Baron SSO가 모바일 RP용 단기·1회성 assertion을 발급 +- confidential 중계 서버를 별도로 두고 해당 서버만 `private_key_jwt`를 생성 + +## 완료 기준 + +- 개인키를 APK에 저장하지 않고 headless API를 호출할 수 있음 +- 승인 완료 후 `https://114.hmac.kr/auth/callback`으로 authorization code가 전달됨 +- 앱이 PKCE verifier로 token endpoint에서 토큰을 교환할 수 있음 diff --git a/docs/00_guide_baron_sso_subtree_api_issue_request_2026-07-07.md b/docs/00_guide_baron_sso_subtree_api_issue_request_2026-07-07.md new file mode 100644 index 0000000..de8779c --- /dev/null +++ b/docs/00_guide_baron_sso_subtree_api_issue_request_2026-07-07.md @@ -0,0 +1,96 @@ +# Baron SSO 하위조직 Subtree API 보강 요청 초안 + +작성일: 2026-07-07 +상태: draft + +목적: Baron SSO 개발자에게 `tdc114plus` 신규 앱 기준 하위조직 subtree API 보강 필요사항을 Gitea 이슈 형식으로 전달하기 위한 등록용 초안이다. 현재 Swagger의 `GET /api/v1/public/orgchart?token=...` 형태를 참고해, 실제 수신 가능한 응답 구조 기준으로 요청 내용을 맞춘다. + +## 1. 이슈 제목 초안 + +`[Feature Request] tdc114plus 직원검색/조직도용 public orgchart subtree 응답 보강 필요` + +## 2. 이슈 본문 초안 + +```md +## 배경 +신규 앱 `tdc114plus`는 Baron SSO에 추가되는 별도 RP(Relying Party)로 개발 중이며, +직원검색/조직도 화면은 정의된 API 인터페이스를 통해 데이터를 조회하는 구조로 진행하고 있습니다. + +현재 Swagger상 공개 조직 조회 API는 아래 형태로 확인됩니다. + +- `GET /api/v1/public/orgchart?token=...` +- 응답 구조: `tenants[]`, `users[]`, `sharedWith` + +신규 앱에서는 이 응답을 기반으로 `전체 -> 회사 -> 부서 -> 팀 -> 개인` 단계 탐색이 가능해야 합니다. + +## 문제점 +현재 제공 중인 조직 관련 API 응답은 최상위 회사/법인 수준 정보 위주로 내려오고 있어, +특정 회사 하위의 부서/팀 subtree 구조를 충분히 구성할 수 없습니다. + +실제 확인 결과: +- `GET /api/v1/tdc114plus/organization/tenants` 응답은 최상위 tenant 위주 +- `GET /api/v1/tdc114plus/organization/orgchart`도 동일하게 하위 부서/팀 subtree 확인이 어려움 +- `tenantId`를 지정해도 회사 하위 조직 subtree가 아니라 동일한 최상위 목록 중심 응답으로 확인됨 +- 직원 상세의 joined tenant 정보도 회사급까지만 확인되어 세부 부서/팀 탐색 기준으로 사용하기 어렵습니다. +- `public/orgchart` 예시도 현재는 `tenants[]`, `users[]` 기본 구조만 보여서, 하위조직 경로 복원용 정보가 부족해 보입니다. + +## 재현 절차 +1. 신규 앱에서 직원검색/조직도 화면 진입 +2. 상단 회사 뱃지 선택 +3. 선택한 회사의 하위조직 탐색 시도 +4. 하위 부서/팀 단위 트리 확장에 필요한 subtree 데이터가 부족하여 화면 구성이 제한됨 + +## 현재 동작 +- 최상위 조직(회사/법인) 중심 데이터만 확인 가능 +- 회사 하위 부서/팀 subtree를 안정적으로 구성하기 어려움 +- leaf 조직 선택 후 해당 조직 기준 후속 조회 구현이 제한됨 + +## 기대 동작 +- `public/orgchart` 계열 응답만으로도 특정 회사 또는 조직 기준 하위 subtree 전체를 복원할 수 있어야 합니다. +- 각 tenant 항목에서 상위 조직 관계와 leaf 여부를 확인할 수 있어야 합니다. +- 각 user 항목은 어떤 tenant/조직에 속하는지 연결 가능해야 합니다. +- 프론트는 이 응답만으로 `전체 -> 회사 -> 부서 -> 팀 -> 개인` 탐색과 해당 조직 사용자 표시를 구현할 수 있어야 합니다. + +## 요청 사항 +현재 Swagger에 노출된 `GET /api/v1/public/orgchart?token=...`를 기준으로, +조직 subtree 복원이 가능하도록 응답 보강이 필요합니다. + +가능한 방향 예시: +- 기존 `public/orgchart` 응답에 조직 계층 복원용 필드 추가 +- 또는 +- `public/orgchart`와 유사한 응답 구조를 유지하면서 subtree 전용 API 추가 + +예를 들어 `tenants[]`에 아래 정보가 필요합니다. +- `id` +- `parentId` +- `slug` +- `name` +- `type` (`COMPANY`, `DEPARTMENT`, `TEAM` 등) +- `hasChildren` 또는 `isLeaf` +- `depth` 또는 경로 복원 가능 정보 + +예를 들어 `users[]`에는 아래 정보가 필요합니다. +- `id` +- `name` +- `position` +- `jobTitle` +- `companyCode` +- `tenantId` 또는 `tenantSlug` +- 필요 시 `department` + +즉, 프론트가 `tenants[]`와 `users[]`만으로 조직 계층 구성, leaf 조직 판별, 해당 조직 사용자 표시를 수행할 수 있어야 합니다. + +## 검토 포인트 +- `public/orgchart` 응답 확장으로 처리할지, subtree 전용 API를 분리할지 +- `tenants[]`, `users[]` 기준으로 조직-사용자 연결 식별자 통일 가능 여부 +- leaf 조직 판단 기준 제공 여부 +- 공유 token 기반 조회에서 subtree 범위 제한을 어떻게 둘지 +- 신규 앱 포함 타 RP에서 공통 활용 가능 여부 +``` + +## 3. 작성 메모 + +- 현재 Flutter 앱은 subtree API 부재 구간에서 `본인팀 synthetic chip + 회사 단위 직원 목록` fallback으로 동작하도록 정리했다. +- 즉, 앱 개발은 병행 가능하지만, 완전한 조직 drilldown UX는 해당 응답 보강이 필요하다. +- 현재 초안은 `신규 endpoint 생성 요구`보다 `기존 public orgchart 스타일 응답 보강 요청`에 더 가깝다. +- 등록 시에는 이 문서의 `## 2. 이슈 본문 초안` 블록만 그대로 사용하면 된다. diff --git a/docs/00_guide_tdc114plus_android_app_link_2026-07-09.md b/docs/00_guide_tdc114plus_android_app_link_2026-07-09.md new file mode 100644 index 0000000..62a8cf8 --- /dev/null +++ b/docs/00_guide_tdc114plus_android_app_link_2026-07-09.md @@ -0,0 +1,83 @@ +# TDC114PLUS Android App Link 설정 가이드 + +작성일: 2026-07-09 +상태: debug 공기계 callback 수신 검증 완료 + +## 1. 목적 + +Baron SSO가 인증 완료 후 아래 HTTPS 주소로 이동했을 때 Android의 TDC114PLUS 앱이 열리도록 설정한다. + +```text +https://114.hmac.kr/auth/callback +``` + +## 2. 앱 설정 + +| 항목 | 값 | +| --- | --- | +| Android package | `kr.co.baron.tdc114plus` | +| scheme | `https` | +| host | `114.hmac.kr` | +| path | `/auth/callback` | +| App Link 자동 검증 | 사용 | + +## 3. 서버 담당자 요청 사항 + +`docs/references/assetlinks.debug.json` 파일을 아래 공개 주소에 JSON 원문으로 배포한다. + +```text +https://114.hmac.kr/.well-known/assetlinks.json +``` + +배포 조건: + +- HTTP 상태코드 `200` +- 리다이렉트 없이 직접 응답 +- `Content-Type: application/json` +- 로그인이나 쿠키 요구 없음 +- 외부 네트워크와 테스트 공기계에서 접근 가능 + +## 4. 현재 테스트 APK 지문 + +```text +3A:2D:60:48:6F:E5:3A:84:0C:41:14:DC:3A:17:A4:3B:64:E7:DE:A5:10:4A:09:26:0E:DC:5F:49:88:44:71:76 +``` + +이 지문은 2026-07-09에 빌드한 debug APK용이다. 운영 APK는 운영 서명 인증서의 SHA-256 지문을 같은 배열에 추가해야 한다. + +## 5. 검증 순서 + +1. 서버에서 `assetlinks.json`을 배포한다. +2. 최신 APK를 공기계에 재설치한다. +3. Android가 도메인 소유권 검증을 완료하도록 잠시 기다린다. +4. 아래 주소를 공기계에서 연다. + +```text +https://114.hmac.kr/auth/callback?code=test-code&state=test-state +``` + +5. 브라우저나 앱 선택창이 아니라 TDC114PLUS의 `로그인 결과 확인` 화면이 열리는지 확인한다. +6. 실제 RP Client ID를 앱에 주입한 후 headless 승인부터 OIDC callback까지 E2E를 수행한다. + +## 6. 현재 확인 결과 + +- `http://172.16.8.198:8080/auth/callback`: 정상 +- `https://114.hmac.kr/auth/callback`: 브라우저 응답 정상 +- 최신 debug APK 공기계 설치: 정상 +- App Link 테스트: 앱 선택창 표시 +- `assetlinks.json` 임시 테스트 서버 배포: 정상 +- 외부 HTTPS JSON 응답: HTTP 200, `application/json` 확인 +- 구형 공기계 자동 연결 상태: `undefined` +- 공기계 테스트 기본 앱 지정 후 callback 실행: TDC114PLUS `.MainActivity` 직접 실행 성공 +- callback 화면에서 `code=test-code` 수신 확인 +- 판정: callback 수신 경로는 검증 완료. 실제 Client ID와 PKCE code 교환 구현이 남아 있음 + +## 7. RP Client ID + +```text +39d6190d-72f6-4a58-a84f-cdc5ece3e8af +``` + +- Client ID는 공개 식별자이므로 debug APK 기본 설정에 포함한다. +- Client Secret은 APK에 포함하지 않는다. +- 환경별 Client ID 변경은 `TDC114_OIDC_CLIENT_ID` Dart define을 사용한다. diff --git a/docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md b/docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md new file mode 100644 index 0000000..72cbec5 --- /dev/null +++ b/docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md @@ -0,0 +1,374 @@ +# TDC114PLUS / tdc114plus-auth / Baron SSO Redirect Flow + +작성일: 2026-07-15 + +## 결론 + +현재 우리가 진행 중인 방식에서는 TDC114PLUS 앱 RP의 아래 callback은 로그인 완료에 필수 아님이다. + +```text +https://114.hmac.kr/auth/callback +``` + +현재 필요한 것은 `tdc114plus-auth` 중계서버 RP에 등록한 redirect URI다. + +```text +https://114-auth.hmac.kr/api/v1/auth/oidc/callback +``` + +개발 로컬에서는 아래 URI를 사용한다. + +```text +http://172.16.8.198:5001/api/v1/auth/oidc/callback +http://127.0.0.1:5001/api/v1/auth/oidc/callback +``` + +다만 앱 소스에는 아직 예전/보조 구조인 아래 callback이 남아 있다. + +```text +https://114.hmac.kr/auth/callback +``` + +이 값은 Hosted Login + PKCE 방식으로 앱이 Baron SSO에 직접 붙던 구조의 흔적이다. + +## 역할 구분 + +### TDC114PLUS 앱 + +- 전화번호 입력 화면 제공 +- `tdc114plus-auth`에 링크 발송 요청 +- `pendingRef`를 받아 저장 +- 계속 poll +- poll 성공 시 받은 앱 세션 token 저장 +- 직원검색 화면 진입 + +### tdc114plus-auth + +- 앱 대신 Baron SSO headless API 호출 +- `client_assertion` 생성 +- `login_challenge` 확보 +- Baron SSO `link/init`, `link/poll` 호출 +- poll 성공 후 `redirectTo` 추적 +- consent 필요 시 자동 consent 처리 +- authorization code 수신 +- token exchange +- 앱용 session token 발급 +- 직원/조직 API 중계 + +### Baron SSO + +- 사용자/전화번호 검증 +- SMS 링크 발송 +- 사용자가 링크 클릭하면 승인 처리 +- OIDC authorization code 발급 +- token endpoint 제공 + +## 현재 실제 로그인 흐름 + +### 1. 앱 실행 + +```text +TDC114PLUS 앱 +``` + +### 2. 사용자가 전화번호 입력 후 로그인 링크 보내기 + +로컬 개발 기준: + +```http +POST http://127.0.0.1:5001/api/v1/auth/link/init +``` + +실서버/도메인 기준: + +```http +POST https://114-auth.hmac.kr/api/v1/auth/link/init +``` + +요청 예: + +```json +{ + "loginId": "01091365338" +} +``` + +### 3. tdc114plus-auth가 Baron SSO OIDC authorization 시작 + +```http +GET https://sso.hmac.kr/oidc/oauth2/auth +``` + +주요 값: + +```text +client_id=tdc114plus-auth RP client_id +redirect_uri=https://114-auth.hmac.kr/api/v1/auth/oidc/callback +response_type=code +scope=openid profile email tenants +state=... +``` + +### 4. Baron SSO가 login_challenge 발급 + +```http +302 Location: https://sso.hmac.kr/login?login_challenge=... +``` + +### 5. tdc114plus-auth가 Baron SSO headless link init 호출 + +```http +POST https://sso.hmac.kr/api/v1/auth/headless/link/init +``` + +요청 주요 값: + +```json +{ + "client_id": "tdc114plus-auth RP client_id", + "client_assertion": "tdc114plus-auth가 개인키로 서명한 JWT", + "loginId": "01091365338", + "login_challenge": "..." +} +``` + +### 6. Baron SSO 응답 + +```json +{ + "status": "pending", + "pendingRef": "...", + "interval": 2 +} +``` + +### 7. tdc114plus-auth가 앱에 pendingRef 반환 + +```json +{ + "status": "pending", + "pendingRef": "...", + "pollInterval": 2 +} +``` + +### 8. 앱이 poll 시작 + +```http +POST http://127.0.0.1:5001/api/v1/auth/link/poll +``` + +요청: + +```json +{ + "pendingRef": "..." +} +``` + +### 9. tdc114plus-auth가 Baron SSO poll 호출 + +```http +POST https://sso.hmac.kr/api/v1/auth/headless/link/poll +``` + +요청 주요 값: + +```json +{ + "client_id": "tdc114plus-auth RP client_id", + "client_assertion": "tdc114plus-auth가 개인키로 서명한 JWT", + "pendingRef": "..." +} +``` + +## 운영 점검 기준 추가 + +2026-07-20 기준 실제 점검에서 아래 사실을 확인했다. + +- 앱에서 `link/init` 요청이 로컬 `tdc114plus-auth:5001`에 정상 도달할 수 있다. +- `pendingRef` 생성과 `link/poll` 반복도 서버 로그에서 확인할 수 있다. +- 실기기 `adb reverse tcp:5001 tcp:5001`까지 정상이어도, 실제 사용자 휴대폰에 문자 링크가 도착하지 않을 수 있다. + +이 경우의 판단 기준은 아래와 같다. + +1. `link/init` 로그가 찍히고 `pendingRef`가 생성되면 앱 -> auth broker 구간은 우선 정상이다. +2. 이후 `link/poll`이 계속 pending인데 사용자 휴대폰에 문자가 오지 않으면, 우선 Baron SSO 문자 발송 또는 SMS 연계 구간을 의심해야 한다. +3. 즉 `pendingRef 생성 성공`은 `문자 실제 발송 성공`과 같은 뜻이 아니다. + +### 10. 사용자가 SMS 링크 클릭 + +```http +GET https://sso.hmac.kr/ko/verify-cc/... +``` + +또는 내부적으로: + +```http +POST https://sso.hmac.kr/api/v1/auth/magic-link/verify +``` + +### 11. Baron SSO는 브라우저에 승인 완료 화면 표시 + +```text +https://sso.hmac.kr/ko/verify-complete +``` + +여기서 앱으로 자동 이동하지 않는다. 현재 Baron SSO 정책상 정상이다. + +### 12. 앱의 poll이 성공 감지 + +Baron SSO에서 `tdc114plus-auth`로 내려오는 값: + +```json +{ + "status": "ok", + "redirectTo": "https://sso.hmac.kr/oidc/oauth2/auth?..." +} +``` + +### 13. tdc114plus-auth가 redirectTo 추적 + +```http +GET https://sso.hmac.kr/oidc/oauth2/auth?... +``` + +### 14. consent가 필요하면 consent 처리 + +```http +GET https://sso.hmac.kr/api/v1/auth/consent?consent_challenge=... +``` + +이후: + +```http +POST https://sso.hmac.kr/api/v1/auth/consent/accept +``` + +### 15. Baron SSO가 최종 callback으로 code 전달 + +```http +GET https://114-auth.hmac.kr/api/v1/auth/oidc/callback?code=...&state=... +``` + +여기가 현재 필요한 redirect URI다. + +### 16. tdc114plus-auth가 token exchange + +```http +POST https://sso.hmac.kr/oidc/oauth2/token +``` + +주요 값: + +```text +grant_type=authorization_code +code=... +redirect_uri=https://114-auth.hmac.kr/api/v1/auth/oidc/callback +client_id=tdc114plus-auth RP client_id +client_assertion=... +``` + +### 17. Baron SSO token 응답 + +```json +{ + "access_token": "...", + "id_token": "...", + "token_type": "Bearer", + "expires_in": 3600 +} +``` + +### 18. tdc114plus-auth가 앱용 세션 발급 + +앱 poll 응답: + +```json +{ + "status": "ok", + "accessToken": "tdc114plus-auth 앱용 세션 JWT", + "user": { + "id": "...", + "name": "...", + "email": "..." + } +} +``` + +### 19. 앱이 직원검색/조직정보 호출 + +로컬 개발 기준: + +```http +GET http://127.0.0.1:5001/api/v1/integrations/org-context +Authorization: Bearer 앱용 세션 JWT +``` + +실서버 기준: + +```http +GET https://114-auth.hmac.kr/api/v1/integrations/org-context +Authorization: Bearer 앱용 세션 JWT +``` + +## 그럼 https://114.hmac.kr/auth/callback은 무엇인가 + +아래 구조에서 필요했던 URI다. + +```text +앱이 Baron SSO에 직접 OIDC 로그인 요청 +-> Baron SSO 로그인 +-> Baron SSO가 앱 App Link로 code 전달 +-> 앱이 직접 token exchange +``` + +그때 필요한 redirect URI가 아래 값이었다. + +```text +https://114.hmac.kr/auth/callback +``` + +하지만 지금 구조는 바뀌었다. + +```text +앱이 직접 Baron SSO OIDC callback을 받지 않음 +앱은 tdc114plus-auth에만 요청함 +OIDC callback은 tdc114plus-auth가 받음 +``` + +그래서 현재 필수 callback은 아래 값이다. + +```text +https://114-auth.hmac.kr/api/v1/auth/oidc/callback +``` + +## 정리 표 + +| 항목 | 현재 필요 여부 | 용도 | +| --- | --- | --- | +| `https://114.hmac.kr/auth/callback` | 필수 아님 | 예전 앱 직접 OIDC/PKCE App Link callback | +| `https://114-auth.hmac.kr/api/v1/auth/oidc/callback` | 필요 | `tdc114plus-auth`가 Baron SSO authorization code 받는 callback | +| `https://114-auth.hmac.kr/.well-known/jwks.json` | 필요 | Baron SSO가 `tdc114plus-auth` client_assertion 서명 검증 | +| `https://114-auth.hmac.kr/api/v1/auth/link/init` | 필요 | 앱이 중계서버에 링크 발송 요청 | +| `https://114-auth.hmac.kr/api/v1/auth/link/poll` | 필요 | 앱이 승인 상태 확인 | + +## 현재 판단 + +Baron SSO 쪽에 TDC114PLUS 앱 RP를 계속 유지할 필요는 현재 흐름 기준으로 낮다. + +정식 구조를 단순화하려면 `tdc114plus-auth` RP 하나만 남기는 방향이 맞다. + +2026-07-15 작업으로 앱 코드 안의 `/auth/callback` 직접 수신 흔적은 제거했다. + +제거한 항목: + +- AndroidManifest의 `https://114.hmac.kr/auth/callback` App Link intent-filter +- Flutter GoRouter의 `/auth/callback` route +- 앱 직접 OIDC/PKCE callback 화면 +- 앱 직접 OIDC/PKCE token exchange 코드 +- startup의 Windows App Link 테스트 서버 강제 확인 + +남겨둘 수 있는 항목: + +- 이 문서 안의 `https://114.hmac.kr/auth/callback` 언급은 과거 구조 설명과 혼선 방지를 위한 기록이다. diff --git a/docs/00_guide_tdc114plus_deployment_migration_matrix_2026-07-19.md b/docs/00_guide_tdc114plus_deployment_migration_matrix_2026-07-19.md new file mode 100644 index 0000000..16a241c --- /dev/null +++ b/docs/00_guide_tdc114plus_deployment_migration_matrix_2026-07-19.md @@ -0,0 +1,204 @@ +# tdc114plus 배포 구조 마이그레이션 표 + +작성일: 2026-07-19 +상태: v1.2 + +목적: `baron-sso-tdc114plus-api` 의존을 줄이고, 최종적으로 `tdc114plus` + `tdc114plus-auth` + Baron SSO 원본 `staging/prod` 구조로 전환하기 위해 현재 남아 있는 기능을 `배포 필수`, `개발 중 임시`, `제거 가능`으로 분류한다. + +관련 문서: + +- `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +- `docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md` +- `docs/00_policy_tdc114plus_auth_repo_2026-07-15.md` +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` + +## 1. 목표 구조 + +최종 배포 목표 구조는 아래와 같다. + +- 모바일 앱: `tdc114plus` +- 인증/중계 서버: `tdc114plus-auth` +- 인증/조직 원본: Baron SSO 원본 `staging` -> 안정화 후 `production` + +제거 목표: + +- 로컬 개발 전용 Baron worktree `baron-sso-tdc114plus-api`가 배포 시점의 필수 구성으로 남지 않도록 한다. + +## 2. 현재 확인 기준 + +2026-07-19 당시 auth 서버에 실제 등록된 route는 아래와 같았다. + +- `GET /health` +- `GET /.well-known/jwks.json` +- `GET /api/v1/auth/jwks.json` +- `POST /api/v1/auth/link/init` +- `POST /api/v1/auth/link/poll` +- `GET /api/v1/integrations/org-context` + +같은 날짜 기준 추가 확인: + +- 당시 실행 중이던 5001 서버는 `/api/v1/profile-image`에 `404`를 반환했다. +- 당시 체크아웃된 `tdc114plus-auth` 코드에도 `/api/v1/profile-image` route 등록이 없었다. +- 따라서 프로필 사진 1순위/2순위/3순위 실기기 검증은 `profile-image` endpoint 복구 또는 대체 경로 확정 전에는 완료 처리할 수 없다. + +2026-07-20 추가 확인: + +- 실기기와 로컬 `tdc114plus-auth:5001` 연결 자체는 정상이다. +- `adb reverse tcp:5001 tcp:5001` 정상 확인했다. +- 앱에서 `link/init` 호출 후 `pendingRef` 생성과 `link/poll` 반복도 서버 로그로 확인했다. +- 따라서 같은 날짜 기준 로그인 end-to-end 막힘의 주 blocker는 `앱/로컬 auth broker 연결`이 아니라 `Baron SSO 문자 링크 실제 발송 또는 SMS 연계 구간`이다. +- `tdc114plus-auth`에 `GET /api/v1/profile-image` route를 복구했고, 미인증 호출 기준 `401 unauthorized`가 반환되는 것을 확인했다. 즉 route 부재 `404` 상태는 해소됐다. +- 로그인 정상화 후 `NAVER_WORKS`와 `BARON_UUID_R2` source가 서버 로그와 실기기 화면에서 확인됐다. +- 네이버웍스 원본 `302 Location` URL은 앱에서 직접 열 수 없는 경우가 있어, `tdc114plus-auth`에 `GET /api/v1/profile-image/naver-photo` 프록시 route를 추가했다. +- 프록시 route는 네이버웍스 Access Token으로 실제 이미지 바이너리를 받아 앱에 `image/jpeg`로 내려준다. + +## 2-A. 현재 사용 API 목록 + +2026-07-20 기준 신규앱과 `tdc114plus-auth`가 실제 작업 기준으로 삼는 API는 아래와 같이 분류한다. + +| 구분 | Method | Path | 호출 주체 | 현재 판단 | 용도 | +| --- | --- | --- | --- | --- | --- | +| 앱 중계 로그인 시작 | `POST` | `/api/v1/auth/link/init` | `tdc114plus` -> `tdc114plus-auth` | 현재 사용 | 앱에서 전화번호 기준 로그인 링크 요청 | +| 앱 중계 로그인 확인 | `POST` | `/api/v1/auth/link/poll` | `tdc114plus` -> `tdc114plus-auth` | 현재 사용 | 문자 링크 승인 후 앱 세션 발급 확인 | +| 앱 세션 JWKS | `GET` | `/api/v1/auth/jwks.json` | Baron/RP 검증 또는 내부 검증 | 현재 사용 | 앱 세션/JWT 검증 키 제공 | +| 조직/직원 중계 | `GET` | `/api/v1/integrations/org-context` | `tdc114plus` -> `tdc114plus-auth` | 현재 핵심 사용 | 직원검색, 조직도, `members[].id` UUID 확보 | +| 프로필 사진 lookup | `GET` | `/api/v1/profile-image` | `tdc114plus` -> `tdc114plus-auth` | 현재 사용 | NAVER WORKS -> Baron UUID R2 -> DEFAULT 판단 | +| 네이버웍스 사진 프록시 | `GET` | `/api/v1/profile-image/naver-photo` | `tdc114plus` -> `tdc114plus-auth` | 현재 사용 | NAVER WORKS 원본 URL 직접 노출 없이 `image/jpeg` 제공 | +| 원본 조직/직원 API | `GET` | `https://sadmin.hmac.kr/api/v1/integrations/org-context` | `tdc114plus-auth` -> Baron SSO 원본 | 현재 핵심 원본 | 조직/직원 원본 데이터 조회, 앱에 key/secret 비노출 | +| Baron 링크 로그인 시작 원본 | `POST` | `https://sso.hmac.kr/api/v1/auth/headless/link/init` | `tdc114plus-auth` -> Baron SSO 원본 | 현재 사용 | 실제 문자 링크 생성/발송 요청 | +| Baron 링크 로그인 확인 원본 | `POST` | `https://sso.hmac.kr/api/v1/auth/headless/link/poll` | `tdc114plus-auth` -> Baron SSO 원본 | 현재 사용 | pendingRef 승인 상태 확인 | +| Baron 매직 링크 검증 | `POST` | `https://sso.hmac.kr/api/v1/auth/magic-link/verify` | 문자 링크/Baron SSO 원본 흐름 | 연동 참고 | 사용자가 문자 링크를 눌렀을 때 승인 처리 후보/참고 경로 | +| NAVER WORKS 사진 조회 | `GET` | `https://www.worksapis.com/v1.0/users/{userId}/photo` | `tdc114plus-auth` -> NAVER WORKS | 현재 사용 | 프로필 사진 1순위 조회, `302 Location` 및 프록시 바이너리 응답 기반 | + +현재 기준에서 직접 사용하지 않는 API는 아래처럼 둔다. + +| 구분 | Method | Path | 현재 판단 | 이유 | +| --- | --- | --- | --- | --- | +| 공개 조직도 | `GET` | `/api/v1/public/orgchart` | 참고 API | 공유 링크/공개 조회 성격이므로 신규앱 내부 기준 데이터는 `integrations/org-context`로 유지 | +| 레거시 직원목록 | `GET` | `/api/v1/tdc114plus/directory/employees` | 제거 대상 | `org-context` 기반 재구성으로 대체 | +| 레거시 직원상세 | `GET` | `/api/v1/tdc114plus/directory/employees/{employeeId}` | 제거 대상 | `org-context members[]` 또는 auth proxy 보강으로 대체 | +| 레거시 테넌트 목록 | `GET` | `/api/v1/tdc114plus/organization/tenants` | 제거 대상 | `org-context tenants/tree` 기준으로 대체 | +| 레거시 조직도 | `GET` | `/api/v1/tdc114plus/organization/orgchart` | 제거 대상 | `org-context tree` 기준으로 대체 | +| 레거시 전화번호 로그인 | `POST` | `/api/v1/tdc114plus/auth/phone-login` | 제거 대상 | 현재 기본 로그인은 `tdc114plus-auth link/init/link/poll` 중계 흐름 | + +## 3. 기능 분류표 + +| 기능/자산 | 현재 위치 | 현재 용도 | 분류 | 목표 방향 | 비고 | +| --- | --- | --- | --- | --- | --- | +| 앱 UI/상태관리 | `tdc114plus` | 모바일 앱 본체 | 배포 필수 | 유지 | 최종 배포 직접 대상 | +| 링크 로그인 진입 `link/init` | `tdc114plus-auth` | 앱 로그인 시작 | 배포 필수 | 유지 | Baron SSO headless/link upstream 호출 | +| 링크 로그인 완료 `link/poll` | `tdc114plus-auth` | 앱 세션 발급 | 배포 필수 | 유지 | 2026-07-19 기준 user 메타데이터 확장 반영 완료 | +| 앱 세션 JWT 발급/검증 | `tdc114plus-auth` | 앱 인증 유지 | 배포 필수 | 유지 | 앱 전용 세션 계층 | +| JWKS 제공 | `tdc114plus-auth` | Baron RP/JWKS 연계 | 배포 필수 | 유지 | 도메인 기준 배포 필요 | +| org-context proxy | `tdc114plus-auth` | 앱이 Baron key 없이 조직도 조회 | 배포 필수 | 유지 | staging/prod 원본 의존 | +| Baron OIDC authorization / token / consent 흐름 | Baron SSO 원본 | 인증 원본 | 배포 필수 | Baron 원본 의존 | 로컬 worktree 필수 아님 | +| Baron headless `link/init`, `link/poll` | Baron SSO 원본 | 문자 링크 승인 원본 | 배포 필수 | Baron 원본 의존 | auth 서버가 소비 | +| `GET /api/v1/integrations/org-context` 원본 | Baron SSO 원본 | 조직/직원 원본 데이터 | 배포 필수 | Baron 원본 의존 | 앱은 auth proxy 또는 직접 staging 기준 확인 | +| `/api/v1/tdc114plus/directory/employees` | `baron-sso-tdc114plus-api` | 과거 직원검색 경로 | 제거 가능 | `org-context` 중심으로 교체 | 레거시 흔적 | +| `/api/v1/tdc114plus/organization/tenants` | `baron-sso-tdc114plus-api` | 과거 테넌트 목록 경로 | 제거 가능 | `org-context` 중심으로 교체 | 레거시 흔적 | +| `/api/v1/tdc114plus/organization/orgchart` | `baron-sso-tdc114plus-api` | 과거 조직도 경로 | 제거 가능 | `org-context` 중심으로 교체 | 레거시 흔적 | +| `/api/v1/tdc114plus/auth/phone-login` | `baron-sso-tdc114plus-api` | 과거 예외 로그인 seed | 제거 가능 | 기본 로그인 경로에서 제외 | 테스트용 예외 경로만 검토 | +| 로컬 Baron compose runtime | `baron-sso-tdc114plus-api` | 로컬 재현/비교 | 개발 중 임시 | staging/prod 기준 검증으로 축소 | 배포 필수 구성 아님 | +| 프로필 사진 `/api/v1/profile-image` | `tdc114plus-auth` | NAVER WORKS -> UUID -> DEFAULT | 배포 필수 | auth 서버에 유지 | 2026-07-20 route 복구 및 실기기 확인 | +| 네이버웍스 사진 프록시 `/api/v1/profile-image/naver-photo` | `tdc114plus-auth` | NAVER WORKS 이미지 바이너리 프록시 | 배포 필수 | auth 서버에 유지 | 원본 Location 직접 노출 방지 | +| PostgreSQL 기반 프로필 매핑안 | `tdc114plus-auth` 과거 검토 | 사진 fallback 대안 | 제거 가능 | 운영 기본안에서 제외 | 보류 대안 | + +## 3-A. `baron-sso-tdc114plus-api` -> `tdc114plus-auth` 흡수 가능 기능 표 + +| 기능 | 현재 기준 | `tdc114plus-auth` 흡수 가능 여부 | 이유 | 현재 상태 | +| --- | --- | --- | --- | --- | +| 앱 로그인 시작/완료 | 이미 `tdc114plus-auth` 담당 | 완료 | 앱 전용 broker 책임과 일치 | 유지 | +| 앱 세션 JWT 발급/검증 | 이미 `tdc114plus-auth` 담당 | 완료 | 모바일 세션 경계는 auth 서버 책임 | 유지 | +| 로그인 user 메타데이터 반환 | `tdc114plus-auth` 담당 | 완료 | 앱이 초기 컨텍스트에 바로 사용 가능 | 2026-07-19 확장 반영 | +| Baron org-context key 은닉 proxy | 이미 `tdc114plus-auth` 담당 | 완료 | 앱에 key/secret 비노출 | 유지 | +| 직원/조직 초기 컨텍스트 계산 보조 | 일부 앱 fallback 혼재 | 가능 | auth 응답 메타데이터가 충분하면 앱 fallback 감소 | 후속 검증 필요 | +| 프로필 사진 lookup endpoint | `tdc114plus-auth` | 완료 | 사진 우선순위 정책은 auth 서버가 가장 자연스러움 | 2026-07-20 route 복구 및 실기기 확인 | +| 네이버웍스 사진 프록시 endpoint | `tdc114plus-auth` | 완료 | 네이버웍스 원본 URL을 앱이 직접 열 수 없는 케이스를 서버가 흡수 | 배포 필수 기능으로 유지 | +| `/api/v1/tdc114plus/directory/*` 레거시 API | `baron-sso-tdc114plus-api` | 불필요 | org-context 중심 구조와 중복 | 제거 대상 | +| `/api/v1/tdc114plus/organization/*` 레거시 API | `baron-sso-tdc114plus-api` | 불필요 | org-context 중심 구조와 중복 | 제거 대상 | +| 로컬 Baron compose runtime | `baron-sso-tdc114plus-api` | 흡수 대상 아님 | 개발용 재현 자산이지 auth 기능이 아님 | 축소 대상 | +| Baron 원본 로그인/consent/token 발급 | Baron SSO 원본 | 흡수 불가 | 공식 인증 원본이므로 대체 대상 아님 | staging/prod 의존 유지 | + +## 3-B. 제거 마이그레이션 실행 표 + +아래 표는 `baron-sso-tdc114plus-api`에 남아 있는 흔적을 실제 작업 단위로 쪼갠 것이다. + +| 구분 | 현재 남은 흔적 | 실제 사용 주체 | 목표 처리 | 선행 조건 | 최종 판단 | +| --- | --- | --- | --- | --- | --- | +| 로그인 진입 | `/api/v1/tdc114plus/auth/phone-login` | 앱 구버전/초기 테스트 흔적 | 신규앱 경로에서 제거 | 현재 앱이 `link/init`, `link/poll`만 쓰는지 재확인 | 제거 가능 | +| 직원검색 목록 | `/api/v1/tdc114plus/directory/employees` | 앱 일부 코드/테스트 흔적 | `org-context` 재구성 결과로 완전 대체 | 목록/검색/상세가 `org-context` 기준으로 동일 동작 | 제거 가능 | +| 직원 상세 | `/api/v1/tdc114plus/directory/employees/:id` | 앱 일부 코드 흔적 | `org-context members[]` 기반 또는 auth proxy 보강으로 대체 | 현재 상세 화면 필요 필드 표 확정 | 제거 가능 | +| 회사/테넌트 목록 | `/api/v1/tdc114plus/organization/tenants` | 앱 일부 코드/테스트 흔적 | `org-context tenants[]`로 대체 | 현재 tenant chip/초기 선택 로직 안정화 | 제거 가능 | +| 조직도 트리 | `/api/v1/tdc114plus/organization/orgchart` | 앱 일부 코드/테스트 흔적 | `org-context tree + tenants[]`로 대체 | 조직도 화면 회귀 검증 | 제거 가능 | +| 조직도 credential 은닉 | Baron 전용 key/secret 직접 처리 필요성 | 신규앱 | `tdc114plus-auth /api/v1/integrations/org-context` 유지 | app session + proxy 정상 유지 | auth에 유지 | +| 앱 세션 발급 | Baron 원본에 없는 앱 전용 세션 계층 | 신규앱 | `tdc114plus-auth` 유지 | 현재 JWT 검증 안정화 | auth에 유지 | +| 프로필 이미지 lookup | `/api/v1/profile-image` auth 구현 | 신규앱 | auth에 유지 | 1순위/2순위 실기기 확인 완료, DEFAULT 확대 검증 | auth에 유지 | +| 로컬 Baron runtime | worktree 기동/비교 환경 | 개발자 로컬 | 배포 필수 구성에서 제외 | staging/prod 기준 검증 루틴 확보 | 개발 전용 유지 | + +## 3-C. 워크스페이스별 최종 역할 표 + +| 워크스페이스 | 오늘 기준 역할 | 배포 직접 관여 | 비고 | +| --- | --- | --- | --- | +| `tdc114plus` | 모바일 앱 UI, 상태관리, 사진 fallback, 직원검색/조직도 화면 | 예 | 최종 APK/앱 배포 대상 | +| `tdc114plus-auth` | 앱 전용 인증 broker, 앱 세션 JWT, org-context proxy, profile-image lookup/proxy | 예 | 신규앱 전용 중계서버 | +| `baron-sso-tdc114plus-api` | 과거 레거시 API 검증, 로컬 비교, 흔적 확인용 worktree | 아니오 | 제거/축소 대상 | +| Baron SSO staging/prod 원본 | 실제 OIDC, 문자 링크, org-context 원본 | 예 | 신규앱의 최종 외부 의존 원본 | + +## 4. 바로 이어서 손봐야 하는 항목 + +### 4.1 `tdc114plus-auth`에서 유지하되 보강이 필요한 것 + +1. `link/poll` 응답의 사용자 메타데이터 확장 + - 2026-07-19 기준 아래 항목을 응답과 앱 세션 JWT `user` 클레임에 함께 담도록 반영했다. + - `tenantSlug` + - `tenantId` + - `tenantName` + - `department` + - `grade` + - `position` + - `jobTitle` + - 남은 확인: + - 실기기 로그인 후 앱에서 이 값들이 실제로 저장/사용되는지 확인 + - 실제 Baron upstream 응답마다 중첩 구조 차이가 없는지 샘플 확대 확인 + +2. `/api/v1/profile-image` route 상태 재정렬 + - 2026-07-20 기준 `tdc114plus-auth`에 route를 복구했다. + - 미인증 호출 기준 `401 unauthorized`가 반환되어 route 등록은 확인했다. + - 네이버웍스 `302 Location` 원본 URL 직접 사용 시 `400 Authentication failed`가 발생할 수 있어 `/api/v1/profile-image/naver-photo` 프록시를 추가했다. + - 2026-07-20 기준 NAVER WORKS 1순위와 Baron UUID R2 2순위는 실기기 화면 및 서버 로그로 확인했다. + - 남은 확인은 DEFAULT 3순위와 직원 상세/조직도/즐겨찾기 화면 확대 검증이다. + +3. OIDC callback 실서버 기준 정합성 유지 + - 현재 문서 기준 redirect URI는 `https://114-auth.hmac.kr/api/v1/auth/oidc/callback` + - 실제 배포 기준 도메인/프록시와 일치하게 유지해야 한다. + +### 4.2 `baron-sso-tdc114plus-api`에서 빼야 하는 것 + +1. `/api/v1/tdc114plus/...` 전용 경로에 대한 앱 직접 의존 +2. 로컬 Baron compose가 항상 떠 있어야만 앱이 개발되는 구조 +3. 사진 fallback용 PostgreSQL 기본안 + +## 5. 마이그레이션 순서 제안 + +1. `tdc114plus-auth link/poll` 사용자 메타데이터 확장을 먼저 반영한다. 완료. +2. 실기기 로그인 후 저장된 user/session에서 `tenantSlug` 등 메타데이터가 실제로 유지되는지 확인한다. 진행 예정. +3. Baron SSO 문자 링크 실제 발송/SMS 연계 이슈 답변을 먼저 받는다. 진행 중. +4. `/api/v1/profile-image`를 현재 auth 코드 기준으로 복구한다. 완료. +5. 앱 코드에서 남아 있는 `/api/v1/tdc114plus/...` 직접 의존을 다시 표로 수집한다. 진행 예정. +6. 조직/직원 데이터는 `org-context` 기준으로만 유지되도록 경계를 정리한다. 진행 예정. +7. 로컬 Baron worktree 없이도 `staging` 기준 로그인 + 직원검색 + 조직도 + 사진 fallback이 되는지 검증한다. 진행 예정. +8. 그 다음에 `production` 승격 체크리스트를 만든다. 진행 예정. + +## 6. 현재 판단 + +2026-07-20 기준 현재 가장 중요한 사실은 아래 두 가지다. + +1. `baron-sso-tdc114plus-api`는 이미 최종 배포 직접 대상이라기보다 개발 중 임시 worktree로 보는 것이 맞다. +2. `profile-image`는 `tdc114plus-auth`에 유지할 배포 필수 기능으로 정리한다. 네이버웍스 원본 URL 직접 노출 문제는 auth 프록시로 처리한다. + +따라서 다음 실제 작업은 아래 순서가 가장 안전하다. + +1. DEFAULT 기본 아바타와 직원 상세/조직도/즐겨찾기 이미지 규칙 확대 검증 +2. auth 응답 메타데이터 실기기 반영 유지 확인 +3. 실기기 기능 재검증 +4. 레거시 경로 제거 diff --git a/docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md b/docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md new file mode 100644 index 0000000..bf79a19 --- /dev/null +++ b/docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md @@ -0,0 +1,194 @@ +# tdc114plus 외부 API 사용 및 앱 내 활용 정리 + +작성일: 2026-07-03 +최종 개정일: 2026-07-20 +상태: v3.4 + +목적: `tdc114plus` 앱이 Baron SSO가 이미 제공하는 API를 어떤 원칙으로 직접 소비해야 하는지, 그리고 어떤 인증값이 앱에 들어가면 안 되는지 정리한다. + +상위 기준 문서: + +- `docs/00_policy_tdc114plus_development_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` + +## 1. 한 줄 결론 + +- 신규 앱은 Baron SSO에 추가되는 별도 `RP`다. +- Baron SSO 원본에 신규앱 전용 `/api/v1/tdc114plus/...` API를 추가하지 않는다는 현재 기준을 따른다. +- 단, 앱 비밀값 보호와 모바일 세션 유지를 위해 `tdc114plus-auth` 중계서버는 별도 운영한다. +- 앱은 Baron SSO/조직도 사이트가 이미 제공하는 공식 API를 직접 소비하는 클라이언트다. +- 다만 앱에 넣으면 안 되는 운영 Key나 비밀값은 계속 서버/운영자 전용으로 본다. +- 현재 코드에 남아 있는 `tdc114plus` 전용 API 가정은 레거시 흔적으로 보고, 기능 보존 테스트를 동반해 점진 제거한다. + +## 2. 현재 API 계층 해석 + +2026-07-08 기준 현재 해석은 아래와 같다. + +| 계층 | 호출 주체 | 용도 | 비고 | +| --- | --- | --- | --- | +| Baron 공개/기존 API | Flutter 앱 | 조직도, 조직/사용자 데이터 조회 | Swagger에 노출된 endpoint 기준으로 재확인 필요 | +| Baron 로그인/웹 절차 | Flutter 앱 + 사용자 브라우저/링크 | RP 로그인, 승인 링크 처리 | Hosted Login + PKCE 원칙 | +| 운영 Key 기반 외부 연동 API | 운영 서버 또는 운영자 | 원본 데이터 조회 또는 관리자성 연동 | 모바일 앱 직접 탑재 금지 | + +정리하면, Flutter 앱은 Baron SSO 원본에 신규앱 전용 API를 새로 요구하지 않는다. 대신 앱에 노출되면 안 되는 key/secret, Baron SSO 링크 로그인 중계, 앱 세션 JWT, 프로필 이미지 lookup은 `tdc114plus-auth`가 맡는다. + +## 3. 신규 앱의 인증 해석 + +- `tdc114plus`는 Baron SSO에 추가되는 별도 `RP(Relying Party)`다. +- 앱 로그인은 Baron SSO의 RP 로그인 절차 일부다. +- 기본 인증 방식은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. +- 흐름은 `앱 -> Baron SSO 인증 URL 열기 -> Hosted Login 화면에서 휴대폰번호 입력 -> 문자/메일 링크 인증 -> App Link callback -> token 교환 -> 앱 로그인 완료`다. +- 앱은 승인 링크를 직접 만들지 않고, 휴대폰번호/인증정보도 직접 처리하지 않는다. +- Swagger의 `phone-login`, `headless`, `enchanted-link`, `sms`, `qr` 계열 Auth API는 Baron SSO Hosted Login 화면과 서버 내부 구현의 참고 대상이다. +- Flutter 앱 기본 구현은 위 Auth API를 직접 조합하지 않고, OIDC authorization endpoint와 token endpoint를 사용한다. +- 로그인 성공 후 Baron SSO가 조직도 API 호출에 필요한 연동 키 묶음을 전달하면 앱은 이를 선택적 세션 값으로 받아 사용할 준비를 한다. +- 해당 기능이 Baron SSO에 구현되기 전까지는 staging `org-context` 검증을 위해 로컬 비추적 env/Dart define의 고정 키 fallback을 사용한다. + +2026-07-20 현재 로컬 실기기 검증 흐름에서는 모바일 앱이 Baron SSO 원본을 직접 호출하지 않고 `tdc114plus-auth`의 아래 중계 API를 호출한다. + +```http +POST /api/v1/auth/link/init +POST /api/v1/auth/link/poll +GET /api/v1/integrations/org-context +GET /api/v1/profile-image +``` + +위 API는 Baron SSO 원본에 새로 추가한 신규앱 API가 아니라, 신규앱 전용 중계서버 `tdc114plus-auth`의 API다. + +## 4. 앱이 실제로 호출할 인증 API + +현재 저장소 코드에는 아래 레거시 경로 가정이 남아 있거나 제거 대상이다. + +```http +POST /api/v1/auth/headless/phone-login +POST /api/v1/auth/headless/link/poll +POST /api/v1/tdc114plus/auth/phone-login +``` + +하지만 2026-07-08 사용자 확인 기준으로 `tdc114plus 앱 전용 API는 없다`. + +따라서 위 경로들 중 legacy `POST /api/v1/tdc114plus/auth/phone-login`을 포함한 레거시 표기는 `확정 계약`이 아니라 `기존 로컬/가정 기반 경로`로 격하한다. + +처리 원칙: + +1. 먼저 Swagger에서 대응 endpoint를 찾는다. +2. 그 다음 앱 DTO/repository를 대체 계약으로 맞춘다. +3. mock/real 테스트와 실제 화면 검증이 끝난 뒤에만 옛 경로를 제거한다. + +현재 확정 사실: + +- 신규 앱의 기본 로그인 정책은 Hosted Login + PKCE다. +- 사용자가 링크를 클릭해야 앱 로그인이 완료된다는 정책은 유지한다. +- 다만 링크 발송/승인 처리는 앱이 직접 headless API로 수행하지 않고 Baron SSO Hosted Login 화면과 서버 내부 구현에 맡긴다. +- Swagger에 `POST /api/v1/auth/phone-login` 또는 `POST /api/v1/auth/headless/phone-login`이 보이더라도, 앱의 기본 로그인 버튼은 이 API를 직접 호출하지 않는다. + +## 5. 팀장 전달 외부 API 정보의 위치 + +현재 저장소 기준으로 팀장 전달 정보와 직접 연결되는 외부 연동 대상은 아래 API다. + +```http +GET https://sadmin.hmac.kr/api/v1/integrations/org-context +X-Baron-Key-ID: {KEY_ID} +X-Baron-Key-Secret: {KEY_SECRET} +``` + +참고: + +- Swagger UI: `https://sadmin.hmac.kr/api/docs#/Integrations/get_api_v1_integrations_org_context` +- OpenAPI: `https://sadmin.hmac.kr/api/openapi.yaml` +- 로컬 참고 문서: `docs/guide_baron_org_context_api_reference_2026-07-03.md` + +중요 해석: + +- 이 API는 앱 화면을 구성할 때 참고해야 하는 원본/공식 문서 계층이다. +- 장기적으로는 로그인 성공 후 Baron SSO가 내려주는 조직도 API 연동 키를 사용한다. +- 단기적으로는 Baron SSO의 키 전달 기능이 아직 미개발이므로, 개발/검증용 staging 고정 키를 로컬 비추적 env/Dart define에만 둔다. +- tracked 문서, tracked 소스, 운영 APK 기본값에는 `X-Baron-Key-ID`, `X-Baron-Key-Secret` 실제 값을 넣지 않는다. + +## 6. 앱이 실제로 호출하는 데이터 API + +현재 저장소 코드에는 아래 레거시 데이터 경로 가정이 남아 있다. + +```http +GET /api/v1/tdc114plus/directory/employees +GET /api/v1/tdc114plus/directory/employees/{employeeId} +GET /api/v1/tdc114plus/organization/tenants +GET /api/v1/tdc114plus/organization/orgchart +``` + +하지만 이 역시 `확정 계약`으로 보지 않는다. + +현재 확인된 근거: + +- `sadmin.hmac.kr`는 org-context 참고 host이지 `tdc114plus` 앱 route host는 아니다. +- `sorg.hmac.kr/login?returnTo=%2Fchart`는 웹 로그인 진입 주소이며 JSON API가 아니라 HTML 응답을 돌려준다. +- Swagger 화면에는 `Public /api/v1/public/orgchart` 같은 조직도 관련 공개 API 흔적이 보인다. + +따라서 앞으로의 기준은 아래와 같다. + +1. 조직도/가족사/사용자 조회는 Swagger에 실제로 존재하는 `integrations/org-context`, `public/orgchart` 기준으로 다시 잡는다. +2. 현재 코드의 `/api/v1/tdc114plus/...` 경로는 전면 재확정 대상이다. +3. 정확한 path, query, 응답 스키마가 확인되기 전에는 코드 경로를 확정 표현으로 문서화하지 않는다. +4. 레거시 경로 정리는 `유지`, `교체`, `제거` 분류표를 먼저 만든 뒤 순차적으로 수행한다. + +## 7. 원본 외부 API와 앱 기능의 연결 + +| 원본 정보 | 앱 또는 중간 가공 결과 | 앱 기능 | +| --- | --- | --- | +| 조직 트리 | `org-context` 또는 공개 `orgchart` 응답을 앱 내부 모델로 매핑 | 회사/조직 구조 표시 | +| 조직 목록 | 상단 칩용 tenant/company 모델 | 상단 필터 칩 | +| 조직 구성원 | 직원 목록/상세용 앱 모델 | 직원검색, 상세 | +| 사용자 전화번호 | `phoneNumber`, `phoneDisplay` | 전화/문자 실행 | +| 사용자 이메일/직급/직위/직무 | 동일 또는 유사 필드 | 상세 정보 표시 | + +즉, 앱은 Swagger에 드러나는 원본/공개 응답을 앱 화면용 모델로 직접 매핑하는 구조로 전환될 수 있다. + +## 8. 환경변수 및 보안 원칙 + +앱 측 런타임 값: + +- `SSO_BASE_URL` +- `TDC114_API_BASE` +- `APP_VERSION` + +서버 측 외부 API 연동 값 예시: + +```env +TDC114PLUS_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr +TDC114PLUS_ORG_CONTEXT_KEY_ID= +TDC114PLUS_ORG_CONTEXT_KEY_SECRET= +TDC114PLUS_ORG_CONTEXT_TENANT_SLUG=hanmac-family +TDC114PLUS_ORG_CONTEXT_INCLUDE_USERS=true +TDC114PLUS_ORG_CONTEXT_INCLUDE_USER_IDS=true +``` + +추가 메모: + +- 2026-07-10 기준 팀장 지시에 따라 원본 Baron API 기준 host는 `https://sadmin.hmac.kr/`를 사용한다. +- 팀장 전달 운영 키(`CLIENT ID`, `X-Baron-Key-Secret`)는 로컬 비추적 env에만 반영하고 tracked 문서에는 직접 기록하지 않는다. +- 실제 배포 전까지 신규앱에서 사용하는 Baron SSO API 참고 기준은 staging Swagger `https://sadmin.hmac.kr/api/docs#/`다. + +보안 원칙: + +- `X-Baron-Key-ID`, `X-Baron-Key-Secret` 실제 값은 tracked 앱 소스와 tracked 문서에 넣지 않는다. +- 개발/검증 중 Baron SSO가 키 전달 기능을 제공하기 전까지는 비추적 env/Dart define fallback으로만 제한 사용한다. +- 운영 APK에서는 로그인 성공 후 받은 세션 기반 연동 키 또는 별도 안전한 서버 중계 방식으로 전환한다. +- 앱에는 공개 가능한 RP Client ID, issuer, redirect URI 같은 공개 설정만 기본값으로 둔다. +- RP 비밀값, 승인 링크 생성용 내부 인증정보, 외부 API Key는 모두 서버 전용이다. +- 앱이 저장하는 세션 정보는 운영 전 안전한 저장소 적용 여부를 재검토한다. + +## 9. 팀 공유용 핵심 메시지 + +1. `tdc114plus`는 Baron SSO의 별도 RP다. +2. 로그인은 Baron SSO Hosted Login + PKCE 방식이며, Baron SSO 화면에서 휴대폰번호 입력 후 사용자가 문자/메일 링크를 클릭해야 앱 로그인이 완료된다. +3. 앱 전용 `tdc114plus` backend API는 없다는 현재 기준으로 재정렬한다. +4. 앱은 Baron이 이미 제공하는 Swagger 공개 API를 직접 소비하는 클라이언트 앱이다. +5. 운영 Key나 RP 비밀값은 모바일 앱과 저장소 tracked 파일에 두면 안 된다. + +## 10. 현재 기준 주의사항 + +- `phone-login`은 개발용 fallback 경로일 뿐 기본 UX가 아니다. +- 현재 코드에 남아 있는 `/api/v1/tdc114plus/...` path는 검증 전 가정일 수 있다. +- 해당 가정 path 제거는 기능이 유지되는지 테스트한 뒤 단계적으로만 진행한다. +- 실제 앱 구조는 `auth`, `directory`, `organization` feature별 repository 분리 기준으로 유지하되, endpoint는 Swagger 기준으로 다시 매핑해야 한다. +- 실제 응답 정합성 검증 중이라, 세부 필드명과 사용 범위는 Swagger 기준으로 계속 재확인해야 한다. diff --git a/docs/00_guide_tdc114plus_headless_pkce_contract_gap_2026-07-09.md b/docs/00_guide_tdc114plus_headless_pkce_contract_gap_2026-07-09.md new file mode 100644 index 0000000..00ae6b4 --- /dev/null +++ b/docs/00_guide_tdc114plus_headless_pkce_contract_gap_2026-07-09.md @@ -0,0 +1,57 @@ +# TDC114PLUS Headless/PKCE 계약 차이 검토 + +작성일: 2026-07-09 +상태: 정책 재정렬 완료, headless 직접 호출은 기본 흐름에서 제외 + +2026-07-09 결론: + +- TDC114PLUS 앱의 기본 로그인은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. +- 앱은 `/api/v1/auth/headless/...` API를 직접 호출하지 않는다. +- 이 문서는 headless 직접 호출을 검토하던 시점의 계약 차이를 보존하되, 현재 실행 기준으로는 `참고/레거시 검토 문서`로 본다. + +## 1. 확인된 RP 설정 + +- RP 유형: PKCE 공개 클라이언트 +- Client ID: `39d6190d-72f6-4a58-a84f-cdc5ece3e8af` +- Redirect URI: `https://114.hmac.kr/auth/callback` +- Client Secret: 없음 +- OIDC issuer: `https://sso.hmac.kr/oidc` + +## 2. 확인된 표준 OIDC 기능 + +Discovery 문서에서 아래 기능을 확인했다. + +- authorization code grant +- token endpoint 인증 방식 `none` +- PKCE `S256` +- authorization, token, userinfo endpoint + +따라서 공개 모바일 앱이 Client Secret 없이 PKCE verifier로 authorization code를 교환하는 표준 흐름은 지원된다. + +## 3. Headless API 계약 차이 + +공식 Swagger의 아래 API는 `client_assertion`을 필수로 요구한다. + +- `POST /api/v1/auth/headless/phone-login` +- `POST /api/v1/auth/headless/link/poll` + +Swagger는 `client_assertion`을 `private_key_jwt`라고 정의한다. 이를 모바일 앱이 직접 생성하려면 RP 개인키가 APK에 포함되어야 하므로 공개 PKCE 앱 보안 모델과 맞지 않는다. + +## 4. 적용 정책 + +- Client ID는 공개 식별자이므로 APK에 포함한다. +- Client Secret 또는 `private_key_jwt` 서명용 개인키는 APK에 포함하지 않는다. +- 표준 PKCE 생성, state 검증, authorization code 교환은 앱에 구현한다. +- 앱은 Baron SSO authorization endpoint를 열고, Baron SSO Hosted Login 화면이 휴대폰번호 입력과 문자/메일 링크 인증을 처리하게 한다. +- headless API 직접 호출은 현재 앱 기본 구현에서 제외한다. +- 추후 별도 신뢰 백엔드가 생기거나 Baron SSO가 모바일 공개 RP용 headless 계약을 제공하는 경우에만 별도 feature로 재검토한다. + +## 5. Baron SSO 확인 요청 + +아래 질문은 앱이 headless API를 직접 호출해야 한다는 전제가 다시 살아날 때만 유효하다. + +1. PKCE 공개 RP에서 `client_assertion` 생략이 가능한지 +2. 불가능하다면 단기 assertion 발급 endpoint가 있는지 +3. assertion의 issuer, subject, audience, 만료시간, 서명 알고리즘 +4. `login_challenge`를 모바일 앱이 얻는 공식 절차 +5. headless 승인 완료 후 `redirectTo`와 PKCE callback 연결 절차 diff --git a/docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md b/docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md new file mode 100644 index 0000000..8fac170 --- /dev/null +++ b/docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md @@ -0,0 +1,234 @@ +# tdc114plus org-context 응답 매핑 판단서 + +작성일: 2026-07-08 +상태: v1.0 + +목적: Baron Swagger의 `GET /api/v1/integrations/org-context` 설명과 예시 응답을 기준으로, 현재 `tdc114plus` 앱 화면 요소에 어떤 필드를 직접 매핑할 수 있는지와 어떤 부분은 추가 가공이 필요한지 판단한다. + +관련 문서: + +- `docs/00_contract_tdc114plus_api_2026-07-02.md` +- `docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md` +- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` + +## 1. 결론 + +- `org-context`는 현재 기준으로 `조직도/직원 데이터 원형 API`로 매우 유력하다. +- 특히 `tenantSlug` 기준 subtree, `tree`, `tenants`, `members` 구조는 `전체 > 회사 > 하위조직 > 개인` 탐색 정책과 잘 맞는다. +- 다만 이 API는 `Integrations` 영역이며 `API Key`가 필요하므로, 모바일 앱이 운영 Key를 직접 넣고 호출하는 구조는 기본안으로 채택하면 안 된다. +- 따라서 `데이터 구조 기준 API`로는 채택 가능하지만, `실기기 앱 직접 호출 방식`은 보안 검토가 끝나기 전까지 확정하지 않는다. + +## 2. Swagger에서 확인된 사실 + +대상 API: + +```http +GET /api/v1/integrations/org-context +``` + +특징: + +- 계정 세션 없이 `API Key`로 조회 +- `tenantSlug`가 없으면 기본 `hanmac-family` subtree 반환 +- `includeUsers=false`이면 tenant members는 빈 배열 +- `includeUserIds=true`이면 `members[].id`, `members[].phone` 추가 + +주요 응답 구조: + +- `scope.tenantId` +- `scope.tenantSlug` +- `tree` +- `tenants[]` +- `tenant.members[]` + +즉, 조직 트리와 조직별 직접 소속 구성원 목록을 함께 주는 구조다. +여기서 `tenant.members[]`와 `tenant.memberCount`는 해당 조직에 직접 붙어 있는 구성원 기준으로 해석한다. +화면의 하위조직 카드에 표시하는 인원 수는 직접 소속 수가 아니라, 해당 조직과 모든 descendant 조직의 직접 소속 인원을 합산한 `subtree 인원 수`로 앱에서 계산한다. + +## 3. 현재 앱 기능과의 적합도 판단 + +### 3.1 매우 잘 맞는 부분 + +1. 회사/가족사 칩 + - `tree.name`, `tree.slug`, `tenants[].name`, `tenants[].slug`, `parentId` + - 현재 상단 칩 구조와 직접 연결 가능 + +2. 하위조직 drilldown + - `tree.children[]` + - `tenant.parentId` + - 현재 정책의 `전체 > 회사 > 하위조직 > 개인` 탐색 구조와 잘 맞음 + +3. 조직별 소속 인원 표시 + - `tenant.members[]` + - leaf 조직에서 직원 목록으로 진입하는 정책과 맞음 + - 비-leaf 조직의 `members[]`는 직접 소속 인원이므로, 하위조직 목록과 한 화면에 섞어 표시하지 않는다 + +4. 직원 상세 기본 텍스트 + - `members[].name` + - `members[].email` + - `members[].department` + - `members[].grade` + - `members[].position` + - `members[].jobTitle` + +5. 조직도 정렬 힌트 + - `members[].isOwner` + - `members[].isLeader` + - `members[].isPrimary` + - 현재 `팀장 우선` 정렬 정책에 보조 신호로 활용 가능 + +### 3.2 조건부로 맞는 부분 + +1. 전화/문자 기능 + - `members[].phone` + - 하지만 Swagger 설명상 `includeUserIds=true`일 때만 포함 + - 즉, 전화/문자 기능까지 쓰려면 `includeUserIds=true`가 사실상 필요 + +2. 직원 식별자 기반 상세/즐겨찾기 + - `members[].id` + - 이것도 `includeUserIds=true`일 때만 포함 + - 즐겨찾기/상세/프로필 이미지 매핑 안정성을 높이려면 필요 + - 2026-07-15 실조회 기준 이 값은 실제 UUID 형식으로 내려오는 것을 확인했다 + +3. 초기 내 팀 뱃지 계산 + - `members[].department`와 `tenant.name` 매칭으로 어느 정도 가능 + - 다만 `department` 문자열과 tenant 이름이 항상 1:1 대응하는지 추가 확인 필요 + +### 3.3 그대로는 부족한 부분 + +1. 앱 현재 `Employee` 모델의 `tenantId`, `tenantName`, `tenantSlug` + - `OrgContextMember` 안에는 tenant 정보가 직접 들어있지 않음 + - 따라서 `tenant.members[]`를 순회하며 `상위 tenant 정보`를 멤버에 주입하는 앱 내부 flatten 가공이 필요 + +2. 현재 `EmployeeListResponse.items` 형태 + - `org-context`는 `items[]` 응답이 아니라 `tree + tenants[] + tenant.members[]` 구조 + - 즉, 직원검색용 평탄 목록은 앱 내부에서 별도 생성해야 함 + +3. 현재 `TenantListResponse.items` + - `org-context`는 `items[]` 래퍼가 아님 + - `tenants[]` 또는 `tree.children[]`를 `TenantSummary` 형태로 바꾸는 adapter 필요 + +4. `totalMemberCount` + - Swagger 예시에는 `memberCount`는 보이지만 `totalMemberCount`는 보장되지 않음 + - 현재 앱 모델의 `totalMemberCount`는 앱 내부에서 descendant 포함 합산 계산이 필요 + - 예: `CM본부` 자체 직접 소속이 0명이라도 하위 `CM사업부`에 511명이 있으면 `CM본부` 카드에는 511명으로 표시한다 + - 반대로 leaf 조직의 직접 소속이 0명이면 leaf 진입 시 `검색 결과 없음` 표시가 정상일 수 있다 + +5. 프로필 사진 URL + - `profileImageUrl` 필드는 없음 + - 사번/이미지 URL 직접 연결은 불가 + +## 4. 현재 Flutter 모델 기준 매핑 판단 + +### 4.1 `TenantSummary` + +현재 필드: + +- `id` +- `name` +- `slug` +- `type` +- `parentId` +- `memberCount` +- `totalMemberCount` + +매핑 판단: + +| 앱 필드 | org-context 소스 | 판단 | +| --- | --- | --- | +| `id` | `tenant.id` | 직접 가능 | +| `name` | `tenant.name` | 직접 가능 | +| `slug` | `tenant.slug` | 직접 가능 | +| `type` | `tenant.type` | 직접 가능 | +| `parentId` | `tenant.parentId` | 직접 가능 | +| `memberCount` | `tenant.memberCount` 또는 `tenant.members.length` | 직접 소속 수로 사용 | +| `totalMemberCount` | 없음 | 앱 내부에서 subtree 합산 계산 필요 | + +### 4.2 `Employee` + +현재 필드: + +- `id` +- `name` +- `phoneNumber` +- `email` +- `tenantId` +- `tenantName` +- `tenantSlug` +- `department` +- `grade` +- `position` +- `jobTitle` +- `status` +- `profileImageUrl` + +매핑 판단: + +| 앱 필드 | org-context 소스 | 판단 | +| --- | --- | --- | +| `id` | `member.id` | `includeUserIds=true` 필요 | +| `name` | `member.name` | 직접 가능 | +| `phoneNumber` | `member.phone` | `includeUserIds=true` 필요 | +| `email` | `member.email` | 직접 가능 | +| `tenantId` | 상위 `tenant.id` | 가공 필요 | +| `tenantName` | 상위 `tenant.name` | 가공 필요 | +| `tenantSlug` | 상위 `tenant.slug` | 가공 필요 | +| `department` | `member.department` | 직접 가능 | +| `grade` | `member.grade` | 직접 가능 | +| `position` | `member.position` | 직접 가능 | +| `jobTitle` | `member.jobTitle` | 직접 가능 | +| `status` | 없음 또는 tenant status와 혼동 가능 | 재정의 필요 | +| `profileImageUrl` | 없음 | 별도 정책 필요 | + +## 5. 화면 정책 기준 판단 + +### 5.1 바로 충족 가능한 정책 + +- 회사급 초기 범위 +- 전체 > 회사 > 하위조직 > 개인 drilldown +- breadcrumb 유지 +- leaf 조직 진입 후 직원 목록 표시 +- 하위조직 카드의 subtree 인원 수 표시 +- 조직도 그룹 내 리더 우선 정렬 보조 + +### 5.2 추가 가공 후 충족 가능한 정책 + +- 본인 팀 뱃지 고정 노출 +- 선택 scope 기준 직원검색 +- 즐겨찾기 로컬 저장 +- 상세 화면 tenant/부서/직급/직위 표시 +- 프로필 이미지 2순위 UUID 파일명 연결 + +### 5.3 현재 구조만으로는 바로 어려운 정책 + +- 프로필 사진 URL 표시 +- 안정적인 직원 상세 단건 조회 +- 서버 기반 즐겨찾기 동기화 + +## 6. 최종 판단 + +`org-context`는 다음 의미에서 채택 가치가 높다. + +1. 조직도와 직원검색의 데이터 원형으로 충분히 쓸 수 있다. +2. 현재 앱이 원하는 조직 탐색 UX와 구조적으로 잘 맞는다. +3. 현재 코드의 `tdc114plus 전용 DTO`는 상당 부분 이 응답을 flatten/adapter 한 결과로 재해석할 수 있다. + +하지만 아래 2가지는 분리해서 봐야 한다. + +1. `데이터 구조 기준으로 채택할 것인가` + - 예 +2. `모바일 앱이 운영 Key를 넣고 직접 호출할 것인가` + - 현재 기준으로는 보안 검토 전까지 아니오 + +### 6.1 2026-07-15 추가 확인 + +- 가족사 전체 `org-context` 응답과 기존 프로필 파일 CSV를 대조한 결과, 기존 `2457`건이 `members[].id`와 전건 매핑됐다. +- 따라서 현재 기준으로 `members[].id`는 프로필 이미지 2순위 식별자로 실사용 가능한 후보가 아니라, 사실상 채택 가능한 기준값으로 본다. + +## 7. 다음 작업 권장 순서 + +1. `org-context`를 기준 데이터 구조로 채택한다고 문서에 명시 +2. 현재 `Employee`, `TenantSummary`, `OrgChartSnapshot`를 `org-context adapter` 기준으로 재설계 +3. `includeUserIds=true`를 전제로 해야 하는 기능과 아닌 기능을 분리 +4. 운영 Key 보호 방식을 확정 +5. 그 다음 실제 코드 변경 diff --git a/docs/00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md b/docs/00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md new file mode 100644 index 0000000..bf8d0a3 --- /dev/null +++ b/docs/00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md @@ -0,0 +1,330 @@ +# tdc114plus 프로필 이미지 관리 정책 및 단계별 진행안 + +작성일: 2026-07-14 +최종 개정일: 2026-07-20 +상태: v2.2 +관련 Phase: `Phase 7-C` + +## 1. 목적 + +신규앱의 직원 프로필 이미지를 어떤 우선순위와 어떤 식별 기준으로 운영할지 고정한다. + +본 문서는 아래 사항을 최신 기준으로 정리한다. + +- 프로필 이미지 노출 우선순위 +- 네이버웍스와 Baron SSO 조직도 응답의 역할 +- R2 버킷 파일명 정책 +- 앱과 중계서버가 직접 하지 않아야 할 일 +- 현재까지 확인된 검증 결과 +- 다음 작업 순서 + +## 2. 현재 확정 정책 + +### 2-1. 이미지 노출 우선순위 + +신규앱의 프로필 이미지 우선순위는 아래처럼 고정한다. + +1. 네이버웍스 프로필 사진 +2. Baron SSO 조직도 `members[].id` 기준 UUID 파일명 이미지 +3. 신규앱 기본 아바타 + +즉, R2 버킷 이미지는 유지하되, 더 이상 이메일 또는 해시 매핑 DB를 기본 경로로 사용하지 않는다. + +### 2-2. 기본 식별자 정책 + +- 직원 프로필 이미지의 2순위 식별자는 Baron SSO 조직도 응답의 `members[].id`를 사용한다. +- 이 값은 `includeUsers=true`, `includeUserIds=true` 조건의 `org-context` 응답에서 확인되는 사용자 고정 식별자다. +- 신규앱은 `이메일 @앞부분.jpg`를 직접 만들지 않는다. +- 신규앱은 해시 파일명도 직접 계산하지 않는다. +- 신규앱은 직원별 Baron UUID를 확보한 뒤 `https://baroncs.co.kr/employee_img/{uuid}.jpg` 규칙으로만 2순위 이미지를 시도한다. + +### 2-3. DB 사용 정책 + +- 현재 운영 기본안에서는 프로필 이미지 전용 매핑 DB를 두지 않는다. +- `tdc114plus-auth` 내부 PostgreSQL 기반 fallback 구현은 검토/검증 결과물로만 남기고, 현재 채택안의 기본 경로로 사용하지 않는다. +- 추후 Baron SSO UUID를 안정적으로 받을 수 없는 별도 화면이나 별도 운영 요구가 생기면 그때 보조안으로만 재검토한다. + +## 3. 현재까지 확인된 사실 + +### 3-1. 네이버웍스 문서 및 실연동 검토 결과 + +2026-07-15 기준 네이버웍스 개발자 문서와 실제 서비스 계정 호출 기준으로 아래를 확인했다. + +- 구성원 프로필 조회 endpoint: `GET /users/{userId}` +- 구성원 사진 조회 endpoint: `GET /users/{userId}/photo` +- `userId`에는 구성원 ID, 메일, 리소스 ID, `externalKey:{externalKey}` 형식 사용 가능 +- 사진 조회 응답은 `HTTP 302`, `HTTP 400`, `HTTP 404` 규칙을 가진다 + +실제 1차 호출 결과: + +- 서비스 계정 토큰 발급: `HTTP 200` +- `GET /users/{userId}` 샘플 1 + - 입력: `khkang@samaneng.com` + - 결과: `HTTP 200` +- `GET /users/{userId}/photo` 샘플 1 + - 입력: `khkang@samaneng.com` + - 결과: `HTTP 404` +- `GET /users/{userId}` 샘플 2 + - 입력: `thlee3@samaneng.com` + - 결과: `HTTP 200` +- `GET /users/{userId}/photo` 샘플 2 + - 입력: `thlee3@samaneng.com` + - 결과: `HTTP 302` + - `Location` 헤더에 실제 이미지 접근 URL 반환 확인 + +현재 판단: + +- 네이버웍스 사진 연동은 1순위 경로로 실제 성립한다. +- 현재까지의 1차 검증 기준으로는 `사진 있음 -> 302`, `사진 없음 -> 404` 흐름이 확인됐다. + +### 3-2. R2 버킷과 공개 경로 + +현재 프로필 이미지 파일은 Cloudflare R2 Object Storage에 적재되어 있다. + +- 공개 도메인 prefix: `https://baroncs.co.kr/employee_img/` +- 현재부터는 UUID 파일명 기준으로 관리한다. +- 목표 URL 규칙: `https://baroncs.co.kr/employee_img/{uuid}.jpg` + +2026-07-15 기준 UUID 파일명 샘플 공개 URL 검증 결과: + +- `https://baroncs.co.kr/employee_img/bebb832c-052e-493d-b5a9-732518d67685.jpg` + - `HTTP 200` + - `content-type: image/jpeg` +- `https://baroncs.co.kr/employee_img/cc2db80c-5a18-4439-8026-22dd06d6452f.jpg` + - `HTTP 200` + - `content-type: image/jpeg` + +현재 판단: + +- UUID 파일명으로 변경된 2순위 이미지가 실제 공개 경로에서 응답하는 것을 확인했다. +- 따라서 2순위 경로는 문서상 계획이 아니라 실배치/실응답까지 확인된 상태로 본다. + +### 3-3. Baron SSO 조직도 UUID 실검증 결과 + +2026-07-15 기준 `org-context` 실조회로 아래 사실을 확인했다. + +- 조회 대상: `tenantSlug=hanmac-family` +- 옵션: `includeUsers=true`, `includeUserIds=true` +- `members[].id`가 실제 응답에 포함된다 +- 해당 값은 예시 문자열이 아니라 UUID 형식이다 +- 예: + - `c6ac492a-d4f3-4fff-8409-b50e317ca793` + - `73f80ef0-62ec-49b2-a8eb-1f4de52966b7` + - `bebb832c-052e-493d-b5a9-732518d67685` + +현재 판단: + +- `members[].id`는 2순위 프로필 이미지 파일명 기준으로 사용할 수 있다. +- 이메일 local-part보다 보안성과 변경 내성이 높다. + +### 3-4. 가족사 전인원 UUID 매핑 확인 결과 + +2026-07-15 기준 가족사 전체 `org-context` 응답과 기존 파일 매핑 CSV를 대조해 아래를 확인했다. + +- 기준 원본: `docs/references/file_rename_hash_results.csv` +- 기존 원본 행 수: `2457` +- `org-context` 고유 이메일 수: `2610` +- UUID 매핑 성공 행 수: `2457` +- 미매핑 행 수: `0` + +생성한 참고 산출물: + +- `docs/references/profile_image_uuid_rename_candidates.csv` + +이 CSV에는 아래 컬럼을 포함했다. + +- `comp` +- `employee_name` +- `employee_email` +- `employee_email_local_part` +- `legacy_photo_file_name` +- `hashed_photo_file_name` +- `baron_user_uuid` +- `target_uuid_file_name` +- `rename_ready` + +현재 판단: + +- 기존 사진 파일을 UUID 파일명으로 재정리하는 작업은 충분히 진행 가능하다. +- 현재 확보된 CSV만으로 `기존 파일명 -> UUID 파일명` 변경 작업 계획을 잡을 수 있다. + +## 4. 채택안 기준 연동 구조 + +### 4-1. 신규앱 기본 흐름 + +```text +직원 DTO 수신 +-> 앱이 직접 네이버웍스와 외부 이미지 서버를 각각 판단하지 않음 +-> 중계서버 /api/v1/profile-image 호출 +-> 중계서버가 네이버웍스 사진 조회 시도 +-> 실패 시 Baron UUID 기준 https://baroncs.co.kr/employee_img/{uuid}.jpg 판단 +-> 둘 다 없으면 found=false 반환 +-> 앱은 기본 아바타 표시 +``` + +현재 시점의 가장 효율적인 구현안은, 앱이 직접 1순위/2순위를 분기하지 않고 기존 `tdc114plus-auth`의 `GET /api/v1/profile-image` endpoint를 유지한 채 내부 우선순위만 `네이버웍스 -> UUID 이미지 -> 기본 미발견`으로 바꾸는 방식이다. + +2026-07-20 기준 네이버웍스 1순위 이미지는 외부 `Location` URL을 앱에 그대로 전달하지 않는다. + +이유: + +- 네이버웍스 `GET /users/{userId}/photo`는 사진이 있으면 `302 Location`을 반환한다. +- 일부 `Location` URL은 앱이나 일반 HTTP 클라이언트가 인증 없이 직접 열면 `400 Authentication failed`가 발생한다. +- 따라서 앱이 네이버웍스 원본 URL을 직접 표시하는 방식은 안정적이지 않다. + +현재 확정 처리: + +- `tdc114plus-auth`가 네이버웍스 사진 존재 여부를 확인한다. +- 네이버웍스 사진이 있으면 앱에는 `tdc114plus-auth`의 프록시 URL을 반환한다. +- 앱은 이 프록시 URL을 일반 이미지 URL처럼 표시한다. +- 프록시는 내부에서 네이버웍스 Access Token을 사용해 실제 이미지 바이너리를 받아 앱에 `image/jpeg`로 내려준다. +- 네이버웍스 사진이 없거나 프록시 확인이 실패하면 UUID 이미지 2순위로 내려간다. + +이 방식의 장점은 아래와 같다. + +- 앱 계약을 크게 흔들지 않는다. +- 네이버웍스 서비스 계정/토큰 처리 로직을 앱에 넣지 않아도 된다. +- 추후 우선순위가 바뀌어도 서버만 수정하면 된다. +- UUID 이미지 경로 변경, 캐시 정책, timeout 정책을 서버에서 통제할 수 있다. + +### 4-2. 신규앱이 직접 하지 않아야 하는 일 + +- `이메일 @앞부분.jpg` 직접 조합 +- 해시 파일명 직접 계산 +- 별도 프로필 이미지 매핑 DB 직접 조회 +- 버킷 내부 경로 추론 + +### 4-3. 중계서버 역할 + +현재 채택안 기준 중계서버의 역할은 아래처럼 정리한다. + +- Baron SSO 로그인/세션 유지 +- 필요 시 조직도 `org-context` proxy 제공 +- `GET /api/v1/profile-image` 단일 endpoint 제공 +- 네이버웍스 1순위 경로 처리 +- 네이버웍스 사진 원본 URL을 앱에 직접 노출하지 않고 `GET /api/v1/profile-image/naver-photo` 프록시로 이미지 바이너리 제공 +- Baron UUID 기준 2순위 이미지 경로 판단 +- 앱에는 최종 `found/source/imageUrl` 결과만 반환 + +현재 채택안 기준으로는 중계서버가 프로필 이미지 전용 매핑 DB를 운영 기본 구조로 갖지 않는다. 다만 기존 `tdc114plus-auth`의 `/api/v1/profile-image` endpoint는 유지하고, 내부 로직만 새 우선순위로 재정리하는 것이 가장 효율적이다. + +## 5. PostgreSQL 검토 결과 정리 + +2026-07-15 기준 `tdc114plus-auth`에 PostgreSQL 기반 fallback 검토를 이미 진행했다. + +확인된 내용: + +- 로컬 PostgreSQL 컨테이너 구성 +- `profile_image_mapping` 스키마 초안 작성 +- CSV `2457`건 적재 검증 +- `GET /api/v1/profile-image?comp=...&email=...` 샘플 검증 + +현재 정책 판단: + +- 위 결과는 기술 검증 자료로는 유효하다. +- 하지만 운영 기본안은 아니다. +- 현재 기준 주 경로는 `네이버웍스 -> UUID 파일명 이미지 -> 기본 아바타`다. +- 따라서 PostgreSQL 경로는 `보류된 대안`으로만 기록한다. +- 실제 구현은 기존 `tdc114plus-auth` endpoint를 재사용하되, PostgreSQL 분기는 기본 비활성 또는 최후 예비안으로만 남기는 편이 적절하다. + +## 6. 단계별 진행작업 타임테이블 + +| 단계 | 상태 | 작업 구분 | 작업 내용 | 완료 기준 | +| --- | --- | --- | --- | --- | +| Step 1 | 완료 | 문서/정책 | 프로필 이미지 우선순위와 기본 검토 구조를 정리했다 | 초기 문서 기준선 확보 | +| Step 2 | 완료 | 네이버웍스 문서 검토 | `GET /users/{userId}`, `GET /users/{userId}/photo`, scope, 302/404 구조를 확인했다 | 1순위 경로 성립 가능 조건 확인 | +| Step 3 | 완료 | R2 자산 점검 | 공개 prefix `https://baroncs.co.kr/employee_img/` 와 공개 응답을 확인했다 | 2순위 파일 배치 경로 확인 | +| Step 4 | 완료 | Baron UUID 실검증 | `org-context` 실응답에서 `members[].id`가 UUID 형식으로 내려오는 것을 확인했다 | 2순위 식별자 확정 | +| Step 5 | 완료 | 가족사 전인원 매핑 검증 | 기존 CSV `2457`건을 Baron UUID와 대조해 전건 매핑 성공을 확인했다 | `profile_image_uuid_rename_candidates.csv` 생성 | +| Step 6 | 완료 | 외부 파일 재배치 | 기존 사진 파일명을 `[uuid].jpg`로 변경하고 `employee_img/` 하위에 재배치했다 | 샘플 URL 2건 `HTTP 200 image/jpeg` 검증 완료 | +| Step 7 | 완료 | 앱 공통 resolver 정리 | 앱은 `GET /api/v1/profile-image`를 우선 호출하고, 응답 실패 또는 미발견 시에는 `profileImageUrl -> UUID 파일명 -> 기본 아바타` 순서의 보조 fallback을 사용하도록 정리했다 | 앱 공통 resolver와 보조 fallback 반영 완료 | +| Step 8 | 완료 | 네이버웍스 실연동 검증 | 개발자 계정 기준으로 사진 조회를 실제 호출해 `302`와 `404` 규칙을 확인했다 | 1순위 경로 실응답 규칙 1차 확정 | +| Step 9 | 완료 이력 | 서버 구현 및 실검증 | 2026-07-15 시점에는 `tdc114plus-auth GET /api/v1/profile-image`가 `NAVER WORKS -> Baron UUID 이미지 -> DEFAULT` 순서로 동작하는 구현과 샘플 응답을 확인했다 | 2026-07-15 기준 실검증 이력 | +| Step 10 | 완료 | 현재 기동 정합성 검증 | 2026-07-20 기준 `tdc114plus-auth`에 `/api/v1/profile-image`와 `/api/v1/profile-image/naver-photo` 프록시 route를 복구/보강했다 | `go test ./cmd/server` 통과, 5001 health 정상 | +| Step 11 | 완료 | 네이버웍스 프록시 검증 | 네이버웍스 302 Location을 앱에 직접 주지 않고 중계서버 프록시가 `image/jpeg` 바이너리로 내려주는 것을 확인했다 | `한치영`, `이태훈` 프록시 `200 OK image/jpeg` 확인 | +| Step 12 | 진행 중 | 실기기 화면 확대 검증 | 직원검색 목록에서 NAVER_WORKS와 BARON_UUID_R2가 동시에 정상 표시되는 것을 확인했다. DEFAULT 기본 아바타 케이스는 추가 샘플로 계속 확인한다 | 1순위/2순위 화면 확인 완료, 3순위 확대 검증 필요 | + +## 7. 다음 작업 순서 + +1. DEFAULT 기본 아바타 케이스를 명시 샘플로 추가 확인한다. +2. 직원 상세/조직도/즐겨찾기 화면에서도 동일 이미지 규칙이 유지되는지 확인한다. +3. 화면 전환 후 이미지 캐시가 잘못된 null 상태를 유지하지 않는지 확인한다. +4. `adb reverse 5001/5000`이 끊겼을 때 로그인 실패처럼 보일 수 있으므로, 실기기 검증 전 reverse 상태를 먼저 확인한다. +5. 검증 결과를 본 문서와 타임테이블 문서에 즉시 반영한다. + +## 8. 현재 시점 결론 + +- 프로필 이미지 1순위는 네이버웍스다. +- 2순위는 Baron SSO 조직도 `members[].id`를 파일명으로 사용하는 UUID 이미지다. +- 현재 운영 기본안에서는 프로필 이미지 전용 DB를 두지 않는다. +- 기존 PostgreSQL fallback 검토는 예비안으로만 남긴다. +- 2026-07-20 기준 `tdc114plus-auth`의 `/api/v1/profile-image` route와 네이버웍스 프록시 route는 복구/보강됐다. +- 네이버웍스 사진 원본 URL은 앱에 직접 주지 않고 `tdc114plus-auth` 프록시 URL로 제공한다. +- 현재 가장 중요한 다음 단계는 실기기 기준으로 `DEFAULT` 3순위와 직원 상세/조직도/즐겨찾기 화면의 동일 규칙 유지 여부를 확대 검증하는 것이다. + +## 9. 2026-07-20 검증 및 보강 메모 + +2026-07-20 기준 아래를 확인했다. + +- `tdc114plus-auth GET /api/v1/profile-image` route 복구 및 유지 +- `tdc114plus-auth GET /api/v1/profile-image/naver-photo` 프록시 route 추가 +- `cyhan@samaneng.com`, `thlee3@samaneng.com` 네이버웍스 사진 존재 확인 +- 네이버웍스 `Location` 원본 URL 직접 접근 시 `400 Authentication failed`가 발생할 수 있음 확인 +- 프록시 route에서 두 사용자 모두 `200 OK`, `Content-Type: image/jpeg` 확인 +- 실기기 직원검색 화면에서 기존에 기본 이니셜로 떨어지던 인원의 네이버웍스 사진 표시 정상화 확인 +- `BARON_UUID_R2` source 로그도 동시에 확인되어 2순위 경로가 유지됨을 확인 + +검증한 자동 테스트: + +- `tdc114plus-auth`: `GOCACHE=/tmp/go-build-cache go test ./cmd/server` +- `tdc114plus`: `./scripts/flutter-docker.sh test test/directory/profile_image_api_client_test.dart` + +주의: + +- 로컬 실기기 검증 중 `adb reverse tcp:5001 tcp:5001`, `adb reverse tcp:5000 tcp:5000`이 끊기면 앱 화면에는 `인증 서버에 연결하지 못했습니다`처럼 보일 수 있다. +- 이 경우 프로필 사진 코드 문제가 아니라 실기기와 로컬 중계서버 연결 문제일 수 있으므로, 먼저 `adb reverse --list`를 확인한다. + +## 10. 2026-07-15 실기기 확인 메모 + +2026-07-15 기준 Android 실기기 직원검색 화면에서 실제 프로필 사진 노출을 확인했다. + +확인 내용: + +- 로그인 후 직원검색 목록 진입 확인 +- 원형 기본 이니셜 아바타 대신 실제 사진 노출 확인 +- 확인 화면에는 여러 직원의 사진이 동시에 표시됐다 +- 현재 앱은 `tdc114plus-auth /api/v1/profile-image`를 우선 호출하고, 응답 실패 또는 미발견 시 UUID 공개 경로 fallback을 사용한다 + +현재 판단: + +- 정책 문서상 구조가 아니라, 실기기 화면 기준으로도 프로필 사진 표시가 동작하는 상태다 +- 다만 어떤 직원이 `NAVER_WORKS`로 해석됐는지, 어떤 직원이 `BARON_UUID_R2`로 해석됐는지는 추가 로그/샘플 검증으로 더 구분해 둘 필요가 있다 + +## 9. 2026-07-15 자격값 재검증 메모 + +2026-07-15 오후 기준, 갱신된 네이버웍스 서비스 계정 자격값을 다시 반영한 뒤 실제 호출을 재검증했다. + +확인 결과: + +- 서비스 계정 토큰 발급: `HTTP 200` +- 샘플 사용자 `thlee3@samaneng.com` 프로필 조회: `HTTP 200` +- 샘플 사용자 `thlee3@samaneng.com` 사진 조회: `HTTP 302` +- `Location` 헤더로 실제 이미지 접근 URL 반환 확인 + +현재 판단: + +- 최신 자격 세트는 유효하다. +- `tdc114plus-auth` 서버가 이 자격 세트를 사용해 1순위 경로를 실제 구현할 수 있는 준비가 됐다. +- 이후 로컬 auth 서버 실기동 검증에서도 아래를 확인했다. + - `GET /api/v1/profile-image?email=thlee3@samaneng.com` + - `found=true` + - `source=NAVER_WORKS` + - `GET /api/v1/profile-image?email=khkang@samaneng.com` + - `found=true` + - `source=BARON_UUID_R2` + +## 10. 관련 문서 + +- `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +- `docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` diff --git a/docs/00_guide_tdc114plus_swagger_feature_mapping_2026-07-07.md b/docs/00_guide_tdc114plus_swagger_feature_mapping_2026-07-07.md new file mode 100644 index 0000000..c05d17e --- /dev/null +++ b/docs/00_guide_tdc114plus_swagger_feature_mapping_2026-07-07.md @@ -0,0 +1,163 @@ +# tdc114plus Swagger API 목록 및 Feature 매핑 + +작성일: 2026-07-07 +상태: v1.2 + +목적: 타임테이블의 다음 작업인 `Swagger 기준 1차 사용 API 목록 고정`, `현재 Flutter feature 매핑`, `구조 차이점 정리`를 한 문서에 정리한다. + +상위 기준 문서: + +- `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` +- `docs/00_policy_tdc114plus_development_2026-07-02.md` + +주의: + +- 현재 기준은 Baron Swagger 문서와 앱 소스의 대조 결과를 합친 중간 정리본이다. +- 신규앱 전용 `/api/v1/tdc114plus/...` API는 공식 계약으로 간주하지 않는다. +- 옛 `/api/v1/tdc114plus/...` 경로는 과거 구현 흔적 또는 호환 경로이며, 기능이 무너지지 않게 테스트하면서 점진 제거한다. + +## 1. 1차 사용 API 목록 + +현재 Baron Swagger 기준 1차 사용 또는 즉시 검토 대상 API는 아래다. + +| 구분 | Method | Path | 현재 상태 | 앱 사용 목적 | +| --- | --- | --- | --- | --- | +| auth | `GET` | `https://sso.hmac.kr/oidc/oauth2/auth` | RP 설정 기준 | Baron SSO Hosted Login 시작 | +| auth | `POST` | `https://sso.hmac.kr/oidc/oauth2/token` | RP 설정 기준 | PKCE authorization code token 교환 | +| auth | `GET` | `https://sso.hmac.kr/oidc/userinfo` | RP 설정 기준 | 로그인 사용자 정보 조회 | +| auth reference | `POST` | `/api/v1/auth/phone-login` | 앱 직접 호출 제외 | Baron SSO Hosted Login 내부 전화번호 로그인 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/headless/phone-login` | 앱 직접 호출 제외 | Baron SSO Hosted Login 내부 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/headless/link/poll` | 앱 직접 호출 제외 | Baron SSO Hosted Login 내부 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/enchanted-link/init` | 앱 직접 호출 제외 | Baron SSO 링크 로그인 내부 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/enchanted-link/poll` | 앱 직접 호출 제외 | Baron SSO 링크 로그인 내부 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/sms`, `/api/v1/auth/verify-sms` | 앱 직접 호출 제외 | Baron SSO SMS 인증 내부 구현 참고 | +| auth reference | `POST` | `/api/v1/auth/qr/*` | 앱 직접 호출 제외 | Baron SSO QR 인증 내부 구현 참고 | +| organization | `GET` | `/api/v1/integrations/org-context` | 공식 계약 | 조직 subtree/구성원 조회 | +| organization | `GET` | `/api/v1/public/orgchart` | 공식 계약 | 공유용 조직도 조회 | +| legacy auth | `POST` | `/api/v1/tdc114plus/auth/phone-login` | 호환 흔적 | 테스트용 세션 seed 예외 경로 | +| legacy directory | `GET` | `/api/v1/tdc114plus/directory/employees` | 제거 대상 | 과거 직원검색 목록 가정 | +| legacy organization | `GET` | `/api/v1/tdc114plus/organization/tenants` | 제거 대상 | 과거 회사 필터 가정 | +| legacy organization | `GET` | `/api/v1/tdc114plus/organization/orgchart` | 제거 대상 | 과거 조직도 가정 | + +## 2. Feature별 현재 매핑 + +### 2.1 auth + +관련 코드: + +- `app/lib/src/features/auth/data/auth_api_client.dart` +- `app/lib/src/features/auth/data/auth_repository.dart` + +현재 매핑: + +| 기능 | 기준 API | 비고 | +| --- | --- | --- | +| 로그인 시작 | `GET https://sso.hmac.kr/oidc/oauth2/auth` | 기본 로그인 경로. 외부 Baron SSO Hosted Login 화면을 연다 | +| callback 처리 | `https://114.hmac.kr/auth/callback` | App Link로 앱 복귀 | +| token 교환 | `POST https://sso.hmac.kr/oidc/oauth2/token` | PKCE `code_verifier`로 authorization code 교환 | +| 사용자 정보 | `GET https://sso.hmac.kr/oidc/userinfo` | 후속 연결 대상 | +| fallback 로그인 | legacy `POST /api/v1/tdc114plus/auth/phone-login` | 예외 호환 경로만 유지 | +| 세션 저장 | API 아님 | `AuthSessionStore`에서 로컬 저장 | + +구조 메모: + +- `AuthRepository` 추상화는 이미 존재한다. +- 구현체 이름은 `RemoteAuthRepository`로 일반화했다. +- `OidcLoginRepository`는 Hosted Login authorization URL 생성, PKCE transaction 저장, callback token 교환을 담당한다. +- Swagger Auth 섹션에 표시되는 `phone-login`, `headless`, `enchanted-link`, `sms`, `qr` 계열 API는 Baron SSO Hosted Login 화면/서버 내부 구현 참고 대상으로 분류한다. +- 기존 headless/legacy phone login 계층은 테스트 호환 및 제거 대상 분류용으로만 유지한다. +- 로그인 성공 후 Baron SSO가 `org-context` 호출용 연동 키를 내려주면 앱 세션의 선택적 credential로 받아 사용한다. +- 해당 기능이 미개발인 동안은 staging `org-context` 고정 키를 비추적 env/Dart define fallback으로 사용한다. + +### 2.2 directory + +관련 코드: + +- `app/lib/src/features/directory/data/directory_api_client.dart` +- `app/lib/src/features/directory/data/directory_repository.dart` + +현재 매핑: + +| 기능 | 기준 API | 비고 | +| --- | --- | --- | +| 직원 목록/검색 | `GET /api/v1/integrations/org-context` 기반 재구성 | 메인 직원검색 진입점 | +| 직원 상세 | `org-context` member 필드 또는 후속 공식 API 확인 필요 | API 계약 재정렬 중 | + +구조 메모: + +- `DirectoryRepository` 추상화는 존재한다. +- 구현체 이름은 `RemoteDirectoryRepository`로 일반화했다. +- 현재는 directory repository를 `org-context` 기반 구조로 재정렬하는 단계다. + +### 2.3 organization + +관련 코드: + +- `app/lib/src/features/organization/data/organization_api_client.dart` + +현재 매핑: + +| 기능 | 기준 API | 비고 | +| --- | --- | --- | +| 테넌트/상위 조직 | `GET /api/v1/integrations/org-context` | 실제 화면 사용 높음 | +| 조직도/공유형 | `GET /api/v1/public/orgchart` | 공유/외부 링크 전용 | + +구조 메모: + +- organization 쪽은 repository 추상화가 추가됐다. +- `orgContextProvider`를 통해 subtree 조회를 별도 책임으로 분리한다. +- 1차 화면 재사용 범위는 `orgContextProvider`까지로 고정한다. +- `org-context` 전용 provider를 준비하되, 현재 직원검색 화면 연결은 점진 전환한다. + +## 3. 구조 차이점 및 정리 우선순위 + +### 3.1 우선순위 1 + +- Hosted Login + PKCE를 기본 로그인 계약으로 고정 +- 앱 내부 phone 입력/headless 직접 호출 UI와 API 의존 제거 +- callback `state` 검증, token 교환, userinfo 조회 연결 + +### 3.2 우선순위 2 + +- organization 상태 재사용 범위를 `org-context` 중심으로 먼저 고정 +- `org-context` 전용 provider를 준비하고, 실제 UI 연결은 후속 단계로 분리 +- directory 화면에서 subtree/member 비동기 조합 방식을 더 다듬을지 검토 + +### 3.3 우선순위 3 + +- 직원 상세 API를 화면에서 실제로 쓰는 범위를 확대할지 판단 +- orgchart client를 drilldown 화면에 실제 연결할지 판단 + +## 4. 현재 확인된 구조상 이슈 + +1. 일부 코드와 문서에 legacy `/api/v1/tdc114plus/...` 흔적이 남아 있다. +2. 실제 `org-context` 응답 필드 대조가 끝나기 전까지는 DTO 필드 확정 표현을 최소화해야 한다. +3. Baron SSO의 로그인 성공 응답 또는 후속 userinfo/session 응답에 조직도 API 연동 키가 아직 포함되지 않을 수 있다. +4. 따라서 앱은 `세션 credential 우선 -> 비추적 env fallback` 순서로 구현되어야 한다. + +## 5. 다음 코드 작업 제안 + +다음 코드 작업은 아래 순서를 권장한다. + +1. organization 상태 재사용은 `orgContextProvider` 우선으로 유지 +2. legacy `/api/v1/tdc114plus/...` 의존은 테스트를 곁들여 단계적으로 제거 +3. 실제 UI 연결 전 `org-context` 매핑과 member 검색 규칙을 먼저 고정 +4. auth session 모델에 선택적 `orgContextCredential` 수신/저장 구조를 추가 +5. `org-context` client는 session credential을 우선 사용하고 없으면 staging env fallback을 사용 + +## 6. 이 문서로 완료된 타임테이블 항목 + +이 문서로 아래 작업을 1차 수행했다. + +- Swagger 기준 1차 사용 API 목록 문서화 +- 현재 Flutter 코드의 auth/directory/organization feature 매핑 +- feature별 DTO/repository/mock 구조 차이점의 초안 정리 +- auth feature의 기본 로그인 경로와 fallback 경로 역할 분리 +- directory repository와 organization repository의 1차 책임 경계 분리 +- organization 상태 재사용 범위와 orgchart 연결 범위 1차 확정 +- orgchart 전용 provider 준비 완료, 실제 UI 연결은 후속 단계로 유지 +- auth/directory 구현체 명칭을 `Remote...Repository`로 일반화 +- auth/directory 구현체 명칭 일반화 후 관련 테스트 통과 + +다만 실제 Swagger UI 대조 확인은 후속 작업으로 남아 있다. diff --git a/docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md b/docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md new file mode 100644 index 0000000..e415347 --- /dev/null +++ b/docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md @@ -0,0 +1,367 @@ +# tdc114plus 작업진행 절차 및 타임테이블 + +작성일: 2026-07-02 +최종 개정일: 2026-07-20 +상태: v3.0 + +목적: `tdc114plus` 개발 작업을 새 분리형 API 전환 정책 기준으로 어떤 순서로 진행할지 고정하고, 현재 진행 상태를 최신 기준으로 유지한다. + +상위 기준 문서: + +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` +- `docs/00_policy_tdc114plus_development_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` + +## 1. 현재 기준 + +`tdc114plus`는 Baron SSO에 추가되는 별도 `RP(Relying Party)` 성격의 신규 앱이다. + +현재 구조는 `개발 중 임시 운영 구조`와 `최종 배포 목표 구조`를 구분해서 본다. + +- 개발 중 임시 운영 구조: + - 앱 저장소 `tdc114plus` + - 중계서버 저장소 `tdc114plus-auth` + - Baron SSO API 검증용 로컬 worktree `baron-sso-tdc114plus-api` +- 최종 배포 목표 구조: + - 신규앱은 `tdc114plus` + `tdc114plus-auth` 기준으로 배포 준비를 진행한다. + - 인증/조직 원본은 로컬 Baron worktree가 아니라 Baron SSO 원본 `staging`을 먼저 바라본다. + - 안정화 확인 후 Baron SSO 원본 `production`을 바라보는 구조로 전환한다. + - 따라서 `baron-sso-tdc114plus-api`는 현재 개발/검증용 임시 worktree로 보고, 최종 운영 필수 구성으로 간주하지 않는다. + +현재 1차 범위: + +- Baron SSO Hosted Login + PKCE 로그인 +- 직원검색 +- 가족사/조직 탐색 +- 조직도 +- 직원 상세 +- 전화걸기/문자보내기 +- 즐겨찾기 로컬 저장 + +1차 보류: + +- 공지사항 +- 전자결재 +- 수신전화식별 +- 수신팝업 +- 서버 기반 즐겨찾기 동기화 + +## 2. 작업진행 절차 + +| 순서 | 단계 | 상태 | 작업 내용 | 산출물 | +| --- | --- | --- | --- | --- | +| 1 | 저장소 및 앱 골격 준비 | 완료 | Flutter 프로젝트, 기본 문서, 기본 스크립트, 테스트 기반 구성 | `app/`, `docs/`, `scripts/` | +| 2 | Mock 기반 화면 구축 | 완료 | 직원검색/조직도/상세/즐겨찾기 화면을 mock 데이터로 우선 구현 | 동작 가능한 UI 및 widget test | +| 3 | API 연동 1차 구현 | 진행 중 | auth, directory, organization API client/repository 및 세션 저장 흐름 구현 | Flutter API 계층, 단위 테스트 | +| 4 | Hosted Login + PKCE 전환 | 진행 중 | Baron SSO 인증 URL 생성, App Link callback, state 검증, PKCE token 교환, 세션 저장 흐름을 기본 로그인으로 반영 | auth client/repository/UI | +| 5 | 분리형 API 정책 정리 | 완료 | RP, Swagger 중심 계약, mock/real 병행 개발 원칙 문서화 | 정책 문서 개정본 | +| 6 | Swagger 기준 계약 재정렬 | 진행 중 | 실제 사용 endpoint와 DTO를 Swagger 기준으로 재확정하고 1차 사용 API/feature 매핑 문서를 추가했다 | 계약 문서 및 feature별 매핑 | +| 7 | Repository/Mock 구조 정리 | 진행 중 | feature별 remote/mock 구현을 더 명확히 분리하기 위해 organization repository 추상화를 추가하고 directory의 직접 API client 의존을 한 단계 분리했다 | repository interface 및 mock 구현 | +| 8 | 실제 API 정합성 검증 | 완료 | 로그인, 직원검색, 조직/테넌트 응답의 실제 정합성 점검 | smoke/integration 결과 | +| 8-A | Android integration runtime 기준 정렬 | 완료 | 실제 API smoke 완료 후 Android target bridge 포트와 integration 실행 기준을 최신 정책값으로 정렬하고 재검증했다 | target/ADB 점검 결과 및 재실행 로그 | +| 9 | staging 반영 검토 준비 | 진행 중 | 승인 완료 E2E, 예외 케이스, 환경값/롤백 경로 정리와 함께 실제 API 공백은 Baron SSO 이슈 명세로 분리 정리 | 수동 점검 체크리스트, API 보강 요청 초안 | +| 9-A | 직원검색/조직도 UI 정렬 보정 | 진행 중 | 선택 칩 강조, 칩 overflow 스크롤 탐색, 조직도 인원 정렬 규칙을 정책과 코드에 반영 | 개정 정책 문서, widget test, emulator 확인 | +| 9-B | 직원검색 규칙/프로필 표현 보강 | 진행 중 | 검색 범위 정책, 한글/전화번호 최소 입력 규칙, 프로필 사진 노출 가능 조건을 정책과 코드에 반영 | 개정 정책 문서, widget test, emulator 확인 | +| 9-C | 프로필 사진 식별자 매핑 검토 | 진행 중 | 네이버웍스 우선, Baron SSO `members[].id` 기반 UUID 파일명 2순위, 앱 기본 아바타 3순위 구조로 정책을 재정렬하고 파일 재배치/앱 연동 기준을 정리 | 매핑 정책 문서, UUID 매핑 CSV, 샘플 URL 검증 | +| 9-D | 입력기/구분 표식 보정 | 진행 중 | 직원검색 입력기의 한글 입력 친화 설정과 상하 영역 구분 표식을 정책과 코드에 반영 | 개정 정책 문서, widget test, emulator 확인 | +| 9-E | 초기 선택 scope 재정렬 | 진행 중 | 앱 첫 진입 시 회사급이 아니라 본인 팀 뱃지가 실제 선택 상태가 되도록 정책과 코드에 반영하고, 중앙 구분 아이콘은 제거 | 개정 정책 문서, widget test, emulator 확인 | +| 9-F | 공기계 USB 테스트 전환 | 진행 중 | emulator 기반 수동 검증의 반복 장애를 줄이기 위해 공기계 USB 연결, `adb reverse`, 실기기 env/preflight를 추가하고 수동 점검부터 안정화 | 공기계 정책 문서, device env 예시, preflight 스크립트, 수동 실행 결과 | +| 9-G | 독립형 실기기 서버 연동 전환 | 진행 중 | USB reverse 기반 로컬 실행과 별도로, 공기계/실사용 폰이 USB 없이도 staging 또는 production Baron API에 직접 붙어 동작할 수 있도록 공개 base URL, 인증 흐름, APK 실행 조건을 정리 | 독립 실행 체크리스트, 환경값 표, 실서버 APK 검증 절차 | +| 9-H | 레거시 전용 API 흔적 단계적 제거 | 진행 중 | `/api/v1/tdc114plus/...` 가정 path와 Baron 전용 DTO 흔적을 실제 Swagger path 매핑 기준으로 `유지/교체/제거` 분류하고, 기능 보존 테스트를 동반해 순차 제거 | 레거시 분류표, 대체 path 매핑, 기능 보존 테스트 결과 | +| 9-I | Baron SSO RP/PKCE 연결 | 진행 중 | 등록된 PKCE RP의 issuer, callback, client ID를 앱 환경에 반영하고 Hosted Login 완료 후 OIDC 세션 연결을 검증 | RP 설정표, 앱 링크 설정, callback 수신 및 토큰 교환 테스트 | +| 9-J | Headless 직접 호출 계약 정리 | 진행 중 | headless API 직접 호출은 앱 기본 흐름에서 제외하고, Baron SSO Hosted Login 내부 구현 참고사항으로 격하 | 정책 개정, 레거시 코드 제거 계획 | +| 9-K | 로그인 후 org-context credential 수신 준비 | 진행 중 | Baron SSO가 로그인 성공 후 조직도 API 연동 키를 내려줄 예정이므로 세션 모델/저장소/API client에 선택적 credential 구조를 준비하고, 미개발 기간에는 staging env fallback을 유지 | AuthSession 확장, credential 우선순위, fallback 테스트 | +| 10 | 빌드/배포 준비 | 대기 | Android debug APK, README, 잔여 이슈 정리 | APK 및 배포 준비 문서 | + +## 3. 단계별 타임테이블 + +| 단계 | 상태 | 목표 | 주요 작업 | 완료 기준 | +| --- | --- | --- | --- | --- | +| Phase 0 | 완료 | 저장소와 개발환경 출발점 확보 | clone, 문서 이관, Flutter 실행 기반 구성 | 기본 프로젝트 동작 | +| Phase 1 | 완료 | Mock 기반 UI/상태 흐름 확보 | 로그인 화면, 직원검색, 조직도, 상세, 즐겨찾기 구성 | analyze/test 통과 | +| Phase 2 | 완료 | 초기 API 연동 골격 확보 | auth/directory/organization client, repository, session 저장 | 단위 테스트 통과 | +| Phase 3 | 진행 중 | 기본 로그인 흐름을 Hosted Login + PKCE 방식으로 전환 | authorization URL 생성, 외부 SSO 로그인, App Link callback, token 교환, 세션 저장 | PKCE 로그인 기본 흐름 코드 반영 | +| Phase 4 | 진행 중 | Swagger 기준 계약 재정렬 | 실제 사용 endpoint/DTO/에러 구조 재확정, 1차 사용 API/feature 매핑 문서화 | 계약 문서와 코드 구조 정렬 | +| Phase 5 | 진행 중 | feature별 분리형 구조 고정 | remote data source, repository interface, mock implementation 정리 | mock/real 전환 가능한 구조 확보 | +| Phase 6 | 완료 | 실제 API 응답 정합성 점검 | 로그인, directory, organization smoke 및 integration 확인 | 핵심 응답 필드 일치 확인 | +| Phase 7 | 진행 중 | staging 반영 검토 준비 | 승인 완료 E2E, 예외 케이스, 수동 체크리스트 정리, API 공백 이슈 분리 | staging 검토 가능 상태 및 API 보강 요청 초안 | +| Phase 7-A | 진행 중 | 직원검색/조직도 시인성 보정 | 선택 상태가 눈에 띄는 칩 표현, 스크롤 가능한 칩 탐색, 조직도 인원 정렬 규칙 반영 | 캡쳐 요청사항 반영 및 widget test | +| Phase 7-B | 진행 중 | 직원검색 규칙/프로필 표현 보강 | 검색 입력 최소 조건, 선택 범위 내 검색 원칙, 프로필 사진 노출 가능 구조 반영 | 정책 반영 및 emulator 확인 | +| Phase 7-C | 진행 중 | 프로필 사진 식별자 매핑 검토 | 네이버웍스 우선, Baron SSO `members[].id` 기반 UUID 파일명 이미지 2순위, 앱 기본 아바타 3순위 구조를 기준으로 실제 매핑 가능 조건과 파일 재배치/앱 연동 기준을 정리 | UUID 매핑 CSV, 샘플 URL 검증, 앱 공통 resolver 정리 | +| Phase 7-D | 진행 중 | 입력기/구분 표식 보정 | 직원검색 입력기의 한글 입력 친화 설정과 상하 영역 구분 표식 반영 | emulator 확인 및 사용성 점검 | +| Phase 7-E | 진행 중 | 초기 선택 scope 재정렬 | 첫 진입 시 본인 팀을 실제 선택 상태로 맞추고 불필요한 중앙 아이콘 제거 | emulator 확인 및 정책 일치 | +| Phase 7-F | 진행 중 | 공기계 USB 테스트 전환 | 실기기 연결 preflight, `adb reverse`, 실기기 env, 수동 실행 경로를 추가하고 emulator 경로는 fallback으로 보존 | 공기계에서 수동 post-login 점검 가능 | +| Phase 7-G | 진행 중 | USB 없는 독립형 실기기 테스트 전환 | 공기계/실폰이 로컬 PC 연결 없이도 staging 또는 production Baron API에 직접 붙도록 공개 API base URL, HTTPS, headless 승인 로그인, APK 실행값을 정리 | USB 분리 후에도 앱이 실서버 기준으로 로그인/직원검색 가능 | +| Phase 7-H | 진행 중 | 레거시 전용 API 흔적 단계적 제거 | 전용 API 가정 path와 Baron 종속 DTO를 `유지/교체/제거`로 분류하고, 각 단계마다 로그인/직원검색/조직도 기능 보존 테스트를 수행 | Swagger 기준 재매핑 후 기능 유지 상태 확보 | +| Phase 7-I | 진행 중 | 등록된 Baron SSO RP와 앱 연결 | PKCE 공개 클라이언트 설정, HTTPS callback 수신, state 검증, authorization code 교환을 Hosted Login callback에 연결 | 실기기에서 SSO 로그인 완료 후 앱 세션 생성 | +| Phase 7-J | 진행 중 | 로그인 후 조직도 API 키 수신 준비 | Baron SSO 로그인 성공 응답/후속 session 응답에서 org-context credential을 받을 수 있게 앱 모델을 확장하고, 미개발 동안 staging 고정 키 fallback을 유지 | session credential 우선, env fallback 보장 | +| Phase 8 | 대기 | 빌드/배포 준비 | APK, 실행 문서, 잔여 이슈 정리 | 배포 준비 산출물 확보 | + +## 4. 현재 진행 상태 + +완료된 핵심 항목: + +- Flutter 앱 기본 프로젝트 및 테스트 기반 구성 +- 직원검색/조직도/상세/즐겨찾기 mock 화면 구축 +- auth, directory, organization API client 및 repository 초안 구성 +- 세션 저장/복원 흐름 구현 +- Baron SSO Hosted Login + PKCE callback 수신 경로 반영 +- 분리형 API 전환 정책 문서 수립 +- 개발 정책, API 계약, 테스트 정책 개정 +- 1차 사용 API 및 auth/directory/organization feature 매핑 문서화 + +진행 중 핵심 항목: + +- Swagger 기준 실제 사용 API 목록 재정리 +- Hosted Login + PKCE 기준 실제 응답 정합성 점검 +- directory/organization 응답의 실제 데이터 정합성 검토 +- feature별 remote/mock 구조 정리 +- organization repository 추상화 추가 및 directory 직접 의존 완화 +- auth repository의 기본 경로와 fallback 경로 역할 분리 +- directory repository는 employees만, organization repository는 tenants만 담당하도록 1차 경계 분리 +- organization 상태 재사용은 `org-context` 중심으로 유지하고 공유 orgchart UI 연결은 후속 단계로 분리 +- `org-context` 전용 provider를 추가하고 실제 UI 연결은 후속 단계로 유지 +- auth/directory 구현체 명칭을 `Remote...Repository`로 일반화 +- 실제 API smoke와 Android emulator fallback integration smoke를 모두 통과했고, 당일 override 포트(`5561`) 기준 실행도 확인했다 +- Android integration 실행기는 현재 Flutter 버전 기준 `flutter drive` + `integration_test` driver 조합으로 정렬 완료했다 +- 조직 하위 subtree 응답 부재를 실제 API에서 확인했고, 앱 fallback 정책과 별도로 Baron SSO 보강 이슈를 문서화해 병행 진행한다 +- 직원검색/조직도 화면에 대해 선택 칩 시인성, overflow 스크롤, 조직도 인원 정렬 우선순위 보정 요청을 추가 반영 중이다 +- 직원검색 범위는 선택된 상단 뱃지 기준으로 유지하고, 최소 입력 규칙과 프로필 사진 표현 보강을 추가 반영 중이다 +- 프로필 사진은 현재 `profileImageUrl` 필드가 있으면 표현 가능하지만, 사번 기반 로컬/원격 이미지 매핑은 직원 DTO에 사번 식별자가 없어 추가 검토가 필요하다 +- 프로필 이미지 정책은 현재 `네이버웍스 우선 -> Baron SSO org-context UUID 파일명 이미지 -> 앱 기본 아바타` 기준으로 재정렬했다 +- 2026-07-20 기준 `tdc114plus-auth /api/v1/profile-image` route를 복구/보강하고, 네이버웍스 사진 원본 URL을 앱에 직접 주지 않도록 `/api/v1/profile-image/naver-photo` 프록시를 추가했다 +- 네이버웍스 `Location` 원본 URL은 앱이 직접 열 때 `400 Authentication failed`가 발생할 수 있으므로, 1순위 NAVER_WORKS 이미지는 중계서버 프록시를 통해 `image/jpeg` 바이너리로 제공한다 +- 2026-07-20 기준 실기기에서 기존에 기본 이니셜로 떨어지던 네이버웍스 사진 보유 인원의 이미지 표시가 정상화된 것을 확인했다 +- 같은 시점 서버 로그에서 `NAVER_WORKS`와 `BARON_UUID_R2` source가 모두 확인되어 1순위/2순위 분기 동작을 확인했다 +- 2026-07-15 기준 `org-context` 실응답에서 `members[].id`가 실제 UUID 형식으로 내려오는 것을 확인했다 +- 2026-07-15 기준 가족사 전체 `org-context`와 기존 CSV를 대조해 `2457/2457` 전건 UUID 매핑 성공을 확인했다 +- 관련 산출물로 `docs/references/profile_image_uuid_rename_candidates.csv`를 생성했다 +- 2026-07-15 기준 네이버웍스 서비스 계정 토큰 발급과 실제 User/Profile API 호출을 확인했다 +- 샘플 `khkang@samaneng.com`는 `GET /users/{userId}/photo` 결과 `HTTP 404`로 무사진 케이스를 확인했다 +- 샘플 `thlee3@samaneng.com`는 `GET /users/{userId}/photo` 결과 `HTTP 302`와 `Location` 헤더를 확인했다 +- 2026-07-15 기준 UUID 파일명 공개 URL 샘플 2건이 `HTTP 200 image/jpeg`로 응답하는 것을 확인했다 +- 기존 `tdc114plus-auth + PostgreSQL` profile-image fallback 경로는 기술 검증 자료로만 남기고, 현재 운영 기본안으로는 채택하지 않는다 +- 현재 Phase 7-C의 중심 작업은 `앱 공통 resolver를 새 우선순위로 정리`하고 `302 -> UUID -> 기본 아바타` fallback 분기를 연결하는 일이다 +- 2026-07-15 기준 Android 실기기 직원검색 화면에서 실제 프로필 사진 노출을 확인했다 +- 현재 앱은 `tdc114plus-auth /api/v1/profile-image`를 우선 호출하고, 응답 실패 또는 미발견 시 UUID 공개 경로 fallback을 사용하는 보조 안전장치를 함께 둔다 +- 2026-07-16 기준 실기기 로그인 후 직원검색이 다시 무너지는 핵심 원인은 `tdc114plus-auth` 5001 서버의 `org-context upstream self-recursion`이었다 +- 원인은 `scripts/start-auth-server.sh`가 `TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE`를 env 파일 `source` 전에 읽던 순서 문제였고, 이 때문에 실행 중 `BARON_ORG_CONTEXT_BASE_URL`이 `http://127.0.0.1:5001`로 잘못 설정되었다 +- 2026-07-16 기준 해당 스크립트 순서를 수정하고 5001 재기동 후 실행 중 프로세스 환경값이 `BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr`로 반영된 것을 확인했다 +- 위 복구 이후 실기기에서 `로그인 성공 -> 직원검색 목록 표시 성공`까지 다시 확인했다 +- 직원검색 한글 입력은 코드상 차단 요소를 제거한 상태로 정렬하고, 상하 영역 구분 표식을 추가 반영 중이다 +- 초기 진입 선택 상태는 본인 팀 뱃지가 실제 선택되도록 재정렬 중이며, 중앙 구분 아이콘은 제거 방향으로 반영 중이다 +- Android emulator의 물리 키보드/ADB/portproxy 반복 장애가 확인되어, 공기계 USB 연결을 기본 수동 테스트 경로로 전환하는 작업을 시작한다 +- 공기계 USB 연결 기준으로는 실데이터 화면까지 확인했지만, 현재 실행 모드는 `adb reverse + http://127.0.0.1:5000` 기반 로컬 Baron API 연결이므로 USB 분리 후 독립 동작은 아직 보장하지 않는다 +- USB 없이 동작하는 실서버 APK 테스트로 가려면 `TDC114_API_BASE`를 staging 또는 production 공개 URL로 전환하고, headless 승인 로그인과 HTTPS 경로를 그 환경에서 다시 검증해야 한다 +- 2026-07-08 기준 앱/스크립트는 `TDC114_AUTH_API_BASE`, `TDC114_DIRECTORY_API_BASE`, `TDC114_ORGANIZATION_API_BASE` 분리 주입을 지원하므로 `로그인은 staging`, `직원/조직 데이터는 production` 조합까지 실행 준비가 되어 있다 +- 2026-07-10 기준 조직/직원 원본 참고 host는 staging `https://sadmin.hmac.kr`로 되돌린다. `admin.brsw.kr` production host는 현재 앱 개발 기준에서 우선 사용하지 않는다 +- 2026-07-10 기준 Baron SSO 로그인 성공 시 조직도 API 호출용 ID/Secret을 함께 내려주는 기능은 아직 미개발로 보고, 앱은 해당 값을 받을 준비만 먼저 한다 +- 해당 기능이 완성되기 전까지 조직/직원 데이터는 staging `org-context` endpoint와 로컬 비추적 env/Dart define의 고정 키 fallback으로 검증한다 +- 따라서 USB 없는 독립형 실기기 최종 검증의 현재 외부 blocker는 `신규앱 public TDC114_API_BASE` 확정이다 +- 2026-07-08 사용자 확인 기준으로는 `신규앱 public TDC114_API_BASE` 자체를 별도 `tdc114plus 전용 API host`로 찾는 방향이 아니라, Swagger에 공개된 Baron 기존 API path를 앱 데이터 소스로 직접 쓰는 방향으로 재정렬해야 한다 +- 따라서 현재 진짜 blocker는 `별도 host 탐색`이 아니라 `Swagger 공개 path 중 무엇이 직원검색/조직도/로그인에 대응하는지 endpoint 단위로 재매핑`하는 일이다 +- 그에 따라 현재 코드와 문서에 남아 있는 `/api/v1/tdc114plus/...` 전용 API 흔적은 레거시로 분류하고, 기능이 무너지지 않도록 테스트를 동반해 단계적으로 제거하는 것을 기본 작업원칙으로 추가한다 +- 2026-07-19 기준 배포 관점의 기준 구조를 다시 정리한다 +- `tdc114plus-auth`는 최종 배포 단위로 유지한다 +- `baron-sso-tdc114plus-api`는 현재 로컬 개발/검증용 worktree로만 취급하고, 배포 시점의 직접 필수 구성으로 보지 않는다 +- 최종적으로 신규앱은 Baron SSO 원본 `staging` 연동을 먼저 안정화하고, 이후 Baron SSO 원본 `production` 연동으로 승격하는 순서를 기본 정책으로 삼는다 +- 따라서 지금부터의 정리 작업은 `무엇을 tdc114plus-auth에 남길지`, `무엇을 Baron SSO 원본에 의존할지`, `무엇을 로컬 전용 임시 자산으로 볼지`를 분리하는 방향으로 진행한다 + +대기 중 핵심 항목: + +- staging 승인 완료 E2E 검증 +- Android debug APK 빌드 및 실행 점검 +- 운영 전 저장소/보안 저장 방식 재검토 + +## 5. 다음 작업 + +다음 작업은 아래 순서로 진행한다. + +1. 앱 직원검색/조직도/상세 화면의 공통 resolver를 `네이버웍스 -> UUID 파일명 -> 기본 아바타` 순서로 정리한다. +2. 네이버웍스 `302`, `404` 실응답 규칙을 `tdc114plus-auth` 프록시와 UUID fallback 분기에 연결한 상태를 유지 검증한다. +3. 샘플 사용자 외에 `UUID 이미지 성공`, `UUID 이미지 없음`, `이메일 누락`, `DEFAULT 기본 아바타` 케이스를 추가 검증한다. +4. 먼저 5001 auth broker의 실행 중 upstream 값이 `https://sadmin.hmac.kr`로 유지되는지 재확인한다. +5. 실기기 검증 전 `adb reverse tcp:5001 tcp:5001`, `adb reverse tcp:5000 tcp:5000`이 유지되는지 확인한다. +6. 로그인 후 30초 이상 세션이 유지되는지 다시 확인한다. +7. 조직 하위 subtree API 보강 요청 이슈 초안을 정리하고 Baron SSO 개발자 검토용 명세를 확정한다. +8. Swagger 공개 path 중 직원검색/조직도/로그인에 대응하는 실제 endpoint를 표로 다시 정리한다. +9. 현재 코드의 `/api/v1/tdc114plus/...` 가정 path를 `유지`, `교체`, `폐기`로 분류한다. +10. `교체` 대상으로 분류된 path부터 대체 Swagger path/DTO를 코드와 mock에 반영한다. +11. 각 교체 단계마다 `로그인`, `직원검색`, `조직도`, `초기 선택 scope` 기능 보존 테스트를 수행한다. +12. `org-context` 응답을 기준으로 현재 앱 화면 요소와 모델 필드를 1:1 매핑한 판단서를 만든다. +13. staging 승인 완료 E2E와 예외 케이스 범위를 체크리스트로 구체화한다. +14. Hosted Login + PKCE 기준 수동 검증 절차를 Baron SSO RP 설정 기준으로 재정렬한다. +15. 검토 결과를 test log와 체크리스트에 반영한다. +16. USB reverse 기반 로컬 실행과 별도로, 실제 공개 path를 사용한 독립형 실기기 APK 검증 단계를 실행한다. +17. Baron SSO RP의 전체 Client ID를 `TDC114_OIDC_CLIENT_ID`로 주입하고 discovery 문서의 실제 endpoint와 일치하는지 확인한다. +18. `https://114.hmac.kr/auth/callback`이 앱으로 연결되는 HTTPS App Link 설정과 `assetlinks.json`을 검증한다. +19. callback의 `state`, authorization code, PKCE `code_verifier` 검증 및 token 교환을 구현한다. +20. AuthSession에 선택적 `orgContextCredential` 구조를 추가한다. +21. `org-context` API client가 `session credential -> staging env fallback` 순서로 인증값을 선택하도록 정리한다. +22. Baron SSO Hosted Login 시작부터 callback 수신, 세션 저장, 직원검색 진입까지 실기기 E2E를 수행한다. +23. 현재 `baron-sso-tdc114plus-api`에 남아 있는 기능을 `배포 필수`, `개발 중 임시`, `제거 가능`으로 분류한다. +24. `배포 필수` 기능 중 `tdc114plus-auth`로 흡수 가능한 항목과 Baron SSO 원본 `staging/prod` 의존으로 남겨야 할 항목을 구분한다. +25. 로컬 Baron worktree 없이도 신규앱이 배포 구조에서 동작할 수 있도록 최종 연동도와 점검표를 만든다. + +## 5-B. 2026-07-15 Phase 7-C 연속성 메모 + +다음 작업 재개 시 우선 확인할 기준점은 아래와 같다. + +- 2순위 프로필 이미지 식별자는 Baron SSO `org-context`의 `members[].id`다. +- 2026-07-15 기준 `members[].id`가 실제 UUID 형식으로 내려오는 것을 실조회로 확인했다. +- 공개 이미지 prefix는 `https://baroncs.co.kr/employee_img/` 다. +- 기존 매핑 원본은 `docs/references/file_rename_hash_results.csv` 다. +- UUID 리네임 작업용 산출물은 `docs/references/profile_image_uuid_rename_candidates.csv` 다. +- 2026-07-15 기준 기존 CSV `2457`건은 가족사 전체 `org-context` UUID와 전건 매핑 성공했다. +- 2026-07-15 기준 UUID 파일명 공개 URL 샘플 2건은 `HTTP 200 image/jpeg` 응답을 확인했다. +- 2026-07-15 기준 네이버웍스 사진 API는 `khkang@samaneng.com`에서 `404`, `thlee3@samaneng.com`에서 `302`를 확인했다. +- 현재 운영 기본안은 `네이버웍스 -> UUID 파일명 이미지 -> 기본 아바타` 다. +- 기존 `tdc114plus-auth + PostgreSQL` profile-image fallback 경로는 보류된 대안으로만 남긴다. +- 2026-07-20 기준 네이버웍스 1순위 사진은 앱이 원본 `Location` URL을 직접 열지 않고 `tdc114plus-auth` 프록시를 통해 표시한다. +- 2026-07-20 기준 `tdc114plus-auth`와 앱 테스트에서 1순위/2순위/3순위 fallback 및 NAVERWORKS 프록시 바이너리 응답을 검증했다. + +다음날 또는 네트워크 장애 후 재개 순서는 아래를 기본으로 한다. + +1. 5001 health와 `adb reverse 5001/5000`을 먼저 확인한다. +2. 실기기에서 `NAVER_WORKS`, `BARON_UUID_R2`, `DEFAULT` source별 화면 검증을 확대한다. +3. 직원 상세/조직도/즐겨찾기 화면에서도 동일 이미지 규칙이 유지되는지 확인한다. +4. 필요 시 샘플 사용자 추가로 `{uuid}.jpg` 공개 URL 응답을 더 점검한다. + +## 5-C. 2026-07-09 Baron SSO RP 확정값 + +| 항목 | 확정값/정책 | +| --- | --- | +| RP 유형 | PKCE 공개 클라이언트 | +| OIDC issuer | `https://sso.hmac.kr/oidc` | +| Discovery | `https://sso.hmac.kr/oidc/.well-known/openid-configuration` | +| Authorization endpoint | `https://sso.hmac.kr/oidc/oauth2/auth` | +| Token endpoint | `https://sso.hmac.kr/oidc/oauth2/token` | +| UserInfo endpoint | `https://sso.hmac.kr/oidc/userinfo` | +| Redirect URI | `https://114.hmac.kr/auth/callback` | +| Client ID | `39d6190d-72f6-4a58-a84f-cdc5ece3e8af`를 APK 기본 설정에 포함하고 환경별로 `TDC114_OIDC_CLIENT_ID` 재정의 가능 | +| Client Secret | 사용 금지. PKCE 앱에는 Client Secret이 없음 | + +현재 반영 상태: + +- Android callback host를 `114.hmac.kr`로 변경했다. +- callback 화면과 `/auth/callback` 앱 라우트는 수신 준비 상태다. +- OIDC issuer, redirect URI, Client ID 환경 주입 항목을 추가했다. +- authorization 요청 생성, PKCE verifier 보관, code 교환은 다음 구현 단계다. +- `114.hmac.kr` 서버의 Android App Link 위임 파일(`/.well-known/assetlinks.json`)이 준비되기 전에는 HTTPS 링크가 앱 대신 브라우저에서 열릴 수 있다. +- 2026-07-09 최신 debug APK를 공기계에 설치하고 callback URL을 실행했으며, Android 앱 선택창이 표시되는 것까지 확인했다. +- debug APK의 package/SHA-256 지문을 기준으로 `docs/references/assetlinks.debug.json`을 생성했다. +- `https://114.hmac.kr/.well-known/assetlinks.json` 배포는 임시 Windows 테스트 서버 방식으로 검증한다. +- 2026-07-09 임시 Windows 테스트 서버에서 `assetlinks.json`을 제공하고 외부 HTTPS HTTP 200/JSON 응답을 확인했다. +- 구형 공기계는 자동 App Link 상태가 `undefined`여서 테스트 기본 앱을 지정했으며, callback URL이 TDC114PLUS `.MainActivity`를 직접 열고 `test-code`를 수신하는 것까지 확인했다. +- RP 전체 Client ID를 APK 기본 설정에 반영했다. +- 다음 작업은 authorization 요청 생성과 PKCE code 교환 구현이다. +- 공식 headless API는 `private_key_jwt client_assertion`을 필수 요구하지만 등록 RP는 PKCE 공개 앱이므로, Flutter 앱의 기본 로그인 경로에서는 해당 API를 직접 호출하지 않는다. +- 표준 PKCE 생성, state 검증, token 교환 계층을 우선 구현한다. + +## 5-D. Phase 7-C 프로필 사진 식별자 매핑 검토 초안 + +현재 신규앱은 프로필 사진 파일을 자체 보관하지 않고, 외부 공개 경로의 이미지를 화면에 표시하는 방향을 기본 전제로 둔다. + +현재 채택안의 핵심은 아래와 같다. + +- 앱은 더 이상 `이메일 @앞부분.jpg` 파일명을 직접 만들지 않는다. +- 앱은 해시 파일명도 직접 계산하지 않는다. +- 2순위 프로필 이미지는 Baron SSO 조직도 `members[].id`를 파일명으로 사용하는 UUID 이미지다. +- 공개 경로는 `https://baroncs.co.kr/employee_img/{uuid}.jpg` 규칙으로 고정한다. +- 1순위는 네이버웍스, 3순위는 앱 기본 아바타다. + +### 1. 목표 + +- 내부 파일명 규칙을 앱과 URL에서 직접 노출하지 않는다. +- 기존 이미지 자산을 전면 재가공하지 않고도 단계적으로 재사용 가능하게 만든다. +- 직원검색, 조직도, 직원 상세 화면에서 동일한 규칙으로 프로필 이미지를 노출한다. +- 이미지가 없거나 매핑이 실패해도 기본 아바타로 안전하게 fallback 한다. + +### 2. 외부서버(테이블) 측 단계별 작업 초안 + +1. 기존 이미지 파일을 Baron UUID 기준 `[uuid].jpg` 로 변경한다. +2. 변경된 파일을 `employee_img/` 하위에 재배치한다. +3. 샘플 사용자 여러 건의 공개 URL 응답을 검증한다. +4. 네이버웍스 1순위 경로와 UUID 이미지 2순위 경로의 fallback 순서를 앱과 서버 역할에 맞게 반영한다. +5. 이메일 변경이나 인사 이동이 생겨도 UUID 기준 파일명 정책이 유지되는지 운영 절차를 정리한다. + +### 3. 신규앱 측 단계별 작업 초안 + +1. 현재 직원 DTO와 `org-context` 응답에서 `member.id`를 안정적으로 확보할 수 있는지 유지 확인한다. +2. 앱은 `member.id` 또는 그와 동등한 Baron UUID를 이용해 2순위 이미지 URL을 만든다. + 2026-07-15 기준 앱 공통 resolver에서 기존 `GET /api/v1/profile-image` fallback 의존을 제거하고, `profileImageUrl -> https://baroncs.co.kr/employee_img/{uuid}.jpg -> 기본 아바타` 규칙으로 정리했다. +3. 앱은 더 이상 이메일 기반 또는 해시 기반 파일명을 만들지 않는다. +4. 화면별 fallback 처리 + 이미지 조회 실패, key 누락, 외부서버 404, timeout 상황에서는 기본 아바타를 노출한다. + 프로필 사진 실패 때문에 직원검색/조직도 본문 데이터가 깨지거나 로딩이 멈추지 않도록 분리 처리한다. + +5. 캐시 및 placeholder 정책 반영 + 검색 결과 목록과 조직도는 동일 이미지가 반복 노출될 수 있으므로, 앱 이미지 캐시와 placeholder 표시 규칙을 함께 정리한다. + +6. 테스트 시나리오 추가 + 최소 검증 항목은 아래와 같다. + - 네이버웍스 사진이 있을 때 1순위 이미지 노출 + - UUID 이미지가 있을 때 2순위 이미지 노출 + - UUID 이미지가 없을 때 기본 이미지 노출 + - 응답 지연 또는 timeout 시 화면 본문 기능 유지 + - 잘못된 사용자 이미지가 다른 직원에게 매핑되지 않는지 확인 + +### 4. 현재 판단 기준 + +- `이메일 @앞부분.jpg` 직접 조합 방식은 더 이상 채택하지 않는다. +- 현재 기본안은 Baron SSO `members[].id` 기반 UUID 파일명 방식이다. +- 가족사 전체 매핑 검증 결과 `2457/2457` 전건 대응이 확인됐으므로, 파일 재배치만 완료되면 운영 기준으로 사용할 수 있다. +- 따라서 현재 Phase 7-C의 실질적 핵심은 `UUID 파일 실배치 완료`, `앱 공통 resolver 재정리`, 그리고 `tdc114plus-auth /api/v1/profile-image`를 `네이버웍스 -> UUID 이미지 -> 기본 아바타` 순서로 재정리한 뒤 실제 기동 검증까지 마무리하는 것이다. + +### 5. 후속 확인 필요 항목 + +- 네이버웍스 개발자 계정 기준 실제 `GET /users/{userId}/photo` 응답 규칙 +- UUID 파일 재배치 완료 후 공개 URL 반영 시점 +- 퇴사자/미등록자 이미지 처리 기준 +- Baron UUID가 장기적으로 변경되지 않는지 운영 측 확인 + +## 5-A. 공기계 USB 테스트 전환 작업 순서 + +공기계 전환은 아래 순서로 진행한다. 예상 소요는 정책/스크립트 보강 20~30분, 실제 단말 연결 검증 10~20분이다. + +1. 정책과 타임테이블에 공기계 USB 테스트 전환 단계를 먼저 반영한다. +2. 실기기 전용 env 예시(`scripts/android-device.env.example`)를 추가한다. +3. 실기기 preflight 스크립트(`scripts/check-android-device-env.sh`)를 추가한다. +4. Windows ADB server 공유 방식에서 물리 단말이 `device`로 보이는지 확인한다. +5. `adb reverse tcp:5000 tcp:5000`을 우선 적용하고, 실패하면 PC LAN IP 방식으로 fallback 한다. +6. `manual-postlogin-run.sh`로 수동 기능점검을 먼저 안정화한다. +7. 수동 점검이 통과하면 `integration_tests.sh`를 공기계 target으로 확장한다. +8. 검증 결과를 test log와 관련 정책 문서에 기록한다. + +## 5-B. USB 없는 독립형 실기기 테스트 전환 작업 순서 + +공기계에 앱이 설치되어 있어도, 현재처럼 `TDC114_API_BASE=http://127.0.0.1:5000`을 쓰는 실행 모드라면 USB를 뽑는 순간 로컬 Baron API 경로가 끊긴다. USB 없이도 동작하려면 아래 단계가 필요하다. 예상 소요는 환경 정리 20~30분, 실서버 APK 1차 검증 30~60분이다. + +1. 실행 모드를 둘로 분리해 문서에 고정한다. + - `로컬 개발 모드`: `adb reverse + http://127.0.0.1:5000` + - `독립 실행 모드`: `https://` +2. staging 또는 production 중 실제 실기기 검증에 사용할 Baron API base URL을 확정한다. +3. 해당 환경에서 `headless phone-login`, `link/poll`, `integrations/org-context`, `public/orgchart`가 모두 공개 HTTPS 경로에서 정상 동작하는지 확인한다. +4. 실기기 APK 전용 env 파일을 분리한다. + - 예: `scripts/.env.android-device.staging.local` + - 예: `scripts/.env.android-device.production.local` +5. 로그인과 데이터 host를 분리해야 하면 아래 override를 함께 준비한다. + - `TDC114_AUTH_API_BASE` + - `TDC114_DIRECTORY_API_BASE` + - `TDC114_ORGANIZATION_API_BASE` +6. `manual-postlogin-run.sh` 또는 별도 실행 스크립트에서 실서버 URL과 필요한 override를 주입해 APK를 다시 설치한다. +7. USB 연결 상태에서 1차 설치와 실행만 수행하고, 앱이 실행된 뒤 USB를 분리한다. +8. USB 분리 후에도 Wi-Fi만으로 로그인, 직원검색, 조직도 조회가 유지되는지 확인한다. +9. 실사용 폰 설치 전에는 아래를 추가 확인한다. + - 앱 아이콘/앱명/버전 표기 + - cleartext 미사용 여부 + - staging/production 혼선이 없는지 + - headless 승인 로그인 수신 채널(문자/메일) 실제 도달 여부 +10. 실사용 폰 테스트 단계에서는 APK 전달, 설치, 로그인 승인, 검색/조직도/전화/문자 동작까지 한 번의 시나리오로 점검한다. + +## 6. 작업 기록 원칙 + +- 새 작업이 생기면 본 문서의 `작업진행 절차` 또는 `다음 작업`에 반영한다. +- 완료된 작업은 상태를 갱신하고 산출물 위치를 기록한다. +- 중요 실행 결과는 `docs/test-logs/` 또는 `docs/daily-issues/`에 남긴다. +- 과거 세부 이력은 보존하되, 현재 실행 기준은 본 문서의 최신 Phase 상태를 따른다. diff --git a/docs/00_policy_tdc114plus_auth_repo_2026-07-15.md b/docs/00_policy_tdc114plus_auth_repo_2026-07-15.md index 87e6038..015cf26 100644 --- a/docs/00_policy_tdc114plus_auth_repo_2026-07-15.md +++ b/docs/00_policy_tdc114plus_auth_repo_2026-07-15.md @@ -1,7 +1,7 @@ # tdc114plus-auth 저장소 운영 정책 작성일: 2026-07-15 -상태: v1.0 +상태: v1.1 목적: `tdc114plus-auth` 중계서버의 공식 Gitea 저장소 위치와 저장소 경계 운영 기준을 고정한다. @@ -16,6 +16,9 @@ - `tdc114plus-auth`는 별도 Gitea 저장소로 관리한다. - `tdc114plus` 앱 저장소 안에 서버 본체 코드를 함께 두지 않는다. - `baron-sso` 저장소 안에도 흡수하지 않는다. +- 최종 배포 기준에서도 `tdc114plus-auth`는 독립 배포 단위로 유지한다. +- 다만 현재 로컬 개발에 쓰는 `baron-sso-tdc114plus-api` worktree는 최종 배포 필수 구성으로 보지 않는다. +- 최종 운영 구조는 Baron SSO 원본 `staging` 연동 안정화 후 Baron SSO 원본 `production` 연동으로 승격하는 방향을 기본값으로 삼는다. 공식 저장소: @@ -186,6 +189,25 @@ ops(staging): adjust auth broker env defaults 예를 들어 `scripts/start-auth-server.sh`는 `tdc114plus-auth` worktree 경로를 참조하는 보조 도구로 유지할 수 있지만, 서버 구현 본체는 별도 저장소에 있어야 한다. +## 8-A. 로컬 Baron worktree와의 관계 + +현재 개발 과정에서는 아래 세 축이 함께 보일 수 있다. + +- `tdc114plus` +- `tdc114plus-auth` +- `baron-sso-tdc114plus-api` + +하지만 이 중 최종 배포 직접 대상은 아래 두 축으로 본다. + +- `tdc114plus` +- `tdc114plus-auth` + +정리 원칙: + +- `baron-sso-tdc114plus-api`는 개발 중 API 확인, 임시 연동, 로컬 재현을 위한 worktree로 본다. +- 배포 직전에는 `tdc114plus-auth`가 어떤 기능을 계속 직접 수행해야 하는지와, 어떤 기능이 Baron SSO 원본 `staging/prod` 의존으로 남는지를 명확히 분리해야 한다. +- 로컬 Baron worktree가 꺼져도 배포 구조 자체에는 영향이 없도록 정리하는 것이 목표다. + ## 9. 최종 판단 - `tdc114plus-auth`는 별도 저장소가 필요한 독립 서비스다. diff --git a/docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md b/docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md new file mode 100644 index 0000000..63c5c12 --- /dev/null +++ b/docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md @@ -0,0 +1,192 @@ +# tdc114plus 분리형 API 전환 정책 + +작성일: 2026-07-07 +상태: v1.3 + +목적: `tdc114plus` Flutter 앱을 Baron SSO 백엔드 소스 직접 의존 방식에서 분리하고, 공식 API 인터페이스 중심 구조로 전환하기 위한 작업 원칙과 단계별 진행 순서를 고정한다. + +기준 인터페이스: + +- Swagger/API Docs: `https://sadmin.hmac.kr/api/docs#/` + +운영 전환 메모: + +- 2026-07-10 팀장 지시 기준으로 Baron SSO 원본 참고 API 기준은 production(`admin.brsw.kr`)이 아니라 staging(`sadmin.hmac.kr`)으로 다시 본다. +- 실제 배포 전까지 신규앱에서 사용하는 Baron SSO API 참고 기준은 staging Swagger(`https://sadmin.hmac.kr/api/docs#/`)다. +- 조직/직원 데이터 검증은 staging `GET https://sadmin.hmac.kr/api/v1/integrations/org-context`를 우선 사용한다. +- Baron SSO가 로그인 성공 후 조직도 API 연동 키를 내려주는 기능은 아직 미개발이므로, 앱은 받을 준비를 하되 현재 개발/검증은 로컬 비추적 env/Dart define의 staging 고정 키 fallback으로 진행한다. +- 운영 `CLIENT ID`, `X-Baron-Key-Secret` 실제 값은 tracked 문서나 tracked 앱 코드에 넣지 않고 로컬 비추적 `.env`에만 저장한다. + +관련 문서: + +- `docs/00_policy_tdc114plus_development_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` +- `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` + +## 1. 최우선 원칙 + +- 신규 앱은 Baron SSO에 추가되는 별도 `RP(Relying Party)`로 간주한다. +- 신규 앱은 Baron SSO 백엔드 소스를 직접 수정해서 맞추는 방식으로 개발하지 않는다. +- 앱은 Swagger에 정의된 공식 Request/Response 계약을 기준으로만 통신 계층을 설계한다. +- 백엔드 구현 완료 여부와 무관하게 Flutter 앱은 mock 데이터와 repository 추상화로 독립 개발 가능해야 한다. +- 기존 코드가 동작하더라도 Swagger 계약과 다르면 계약 기준으로 재정렬한다. +- Baron SSO 관련 명칭, 경로, DTO가 앱 내부에 과도하게 박혀 있으면 점진적으로 일반화한다. +- 인증 기본 원칙은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. +- Flutter 앱은 휴대폰번호/문자/메일 인증을 직접 처리하는 headless API 클라이언트가 아니라, Baron SSO 인증 URL을 열고 callback의 authorization code를 token으로 교환하는 공개 RP다. +- 휴대폰번호 입력과 링크 발송/승인 처리는 Baron SSO Hosted Login 화면과 서버 내부 구현으로 둔다. +- Swagger Auth 섹션의 `phone-login`, `headless`, `enchanted-link`, `sms`, `qr` 계열 API는 Baron SSO 화면/서버 내부 구현 참고사항으로 분류하고 앱 기본 로그인 구현에서 직접 조합하지 않는다. +- 기존 `선진행 후확인` 방식은 신규 앱의 기본 로그인 정책으로 채택하지 않는다. +- 현재 코드와 문서에 남아 있는 `/api/v1/tdc114plus/...` 전용 API 가정은 레거시 흔적으로 분류한다. +- 레거시 흔적 제거는 한 번에 삭제하지 않고 `실제 사용처 확인 -> 대체 Swagger path 매핑 -> mock/real 테스트 통과 -> 제거` 순서로 진행한다. +- 레거시 제거 과정에서 기능이 무너지지 않도록 기존 화면 동작, 로그인 흐름, 검색/조직 표시를 단계별로 검증한다. + +## 2. 판단 결론 + +- 개발환경은 새로 갈아엎지 않는다. +- 기존 Flutter 프로젝트 뼈대는 유지한다. +- 다만 API 계층, 모델 계층, 환경설정, 테스트 기준은 분리 아키텍처에 맞게 중간 규모로 재정비한다. + +즉, 이번 작업은 `재시작`이 아니라 `구조 개편형 마이그레이션`으로 본다. + +## 3. 작업 범위 + +포함: + +- Swagger 기준 API 목록 재정리 +- RP 관점의 인증 흐름 정리 +- Request/Response DTO 정리 +- API client/service/repository 계층 정리 +- mock 구현 및 테스트 데이터 정비 +- 화면이 repository interface만 의존하도록 연결 정리 +- 환경별 base URL 및 인증 헤더 주입 방식 정리 +- 문서/테스트/개발 순서 정리 + +제외: + +- Baron SSO 운영 백엔드 내부 로직 직접 수정 +- Swagger에 없는 비공식 응답 구조 전제 개발 +- 화면 요구사항과 무관한 대규모 UI 재설계 +- 1차 범위 밖 기능 추가 + +## 4. 단계별 진행 순서 + +### Phase 1. 계약 기준 고정 + +작업: + +- Swagger에서 신규 앱에 실제 필요한 endpoint만 1차 사용 목록으로 확정한다. +- 신규 앱 RP 등록/식별에 필요한 인증 전제와 로그인 시작점을 함께 정리한다. +- 각 endpoint별 method, path, request, response, error 형식을 앱 기준 표로 정리한다. +- 기존 내부 문서와 Swagger가 다르면 Swagger를 우선 기준으로 명시한다. + +완료 기준: + +- 앱에서 사용할 API 목록과 필수 필드가 문서로 고정되어 있다. + +### Phase 2. 앱 내부 의존성 분리 설계 + +작업: + +- feature별로 `remote data source -> repository interface -> UI` 흐름을 고정한다. +- 특정 백엔드 구현체 이름이 드러나는 타입명은 일반화 대상 목록으로 분류한다. +- 인증, 직원검색, 조직도, 즐겨찾기 중 실제 API 의존 기능과 로컬 기능을 분리한다. + +완료 기준: + +- 어떤 레이어가 Swagger 계약에 직접 의존하고, 어떤 레이어가 추상화에 의존하는지 구조가 정리되어 있다. + +### Phase 3. DTO 및 API 클라이언트 정렬 + +작업: + +- 현재 Dart 모델을 Swagger 응답 구조 기준으로 재검토한다. +- endpoint별 request/response DTO를 feature 단위로 정리한다. +- 공통 에러 모델, 타임아웃, 인증 헤더, base URL 처리 방식을 통일한다. + +완료 기준: + +- 각 feature의 API 호출 코드가 Swagger 계약과 1:1로 대응된다. + +### Phase 4. Repository 추상화 및 Mock 우선 개발 + +작업: + +- repository interface를 기준으로 remote/mock 구현체를 분리한다. +- 백엔드 미구현 또는 스펙 검증 전 단계에서는 mock repository로 화면 개발이 가능하도록 유지한다. +- widget test와 unit test가 실제 네트워크 없이도 핵심 흐름을 검증하도록 구성한다. + +완료 기준: + +- API가 불완전해도 화면 개발과 테스트가 계속 가능하다. + +### Phase 5. 실제 API 연결 + +작업: + +- 환경값으로 Swagger 대상 base URL을 주입한다. +- mock 구현을 유지한 채 remote 구현을 교체 가능하게 연결한다. +- 로그인, 직원검색, 조직도 등 우선 기능부터 실제 응답 정합성을 점검한다. +- 로그인은 `authorization URL 생성 -> 외부 Hosted Login 완료 -> App Link callback 수신 -> state 검증 -> PKCE token 교환 -> session 저장` 완료 기준으로 본다. + +완료 기준: + +- 동일한 UI가 mock/real repository 전환만으로 동작한다. + +### Phase 6. 정리 및 고정 + +작업: + +- Baron SSO 직접 의존 흔적, 임시 fallback, 오래된 계약 문구를 문서와 코드에서 정리한다. +- `/api/v1/tdc114plus/...`처럼 전용 API를 전제한 레거시 경로는 `유지`, `교체`, `제거`로 분류한 뒤 순차적으로 없앤다. +- 각 제거 단계마다 최소한 `로그인`, `직원검색`, `조직 탐색`, `조직도` 동작 확인을 먼저 수행한다. +- 테스트 기준과 수동 점검 순서를 갱신한다. +- 이후 신규 기능도 같은 패턴으로 추가하도록 개발 규칙을 고정한다. + +완료 기준: + +- 팀이 같은 방식으로 후속 기능을 이어서 개발할 수 있다. + +## 5. 실제 실행 우선순위 + +가장 먼저 할 일: + +1. Swagger 기준 1차 사용 API 목록 확정 +2. 현재 코드의 API/DTO/repository 구조와 Swagger 차이점 목록화 +3. 차이가 큰 feature부터 DTO와 repository interface 정리 +4. mock 구현 유지 상태에서 remote 구현 교체 +5. 실제 API smoke 및 화면 검증 + +## 6. 수정 방식 원칙 + +- 한 번에 전체 기능을 갈아엎지 않는다. +- feature 단위로 `계약 확인 -> DTO 정리 -> repository 정리 -> mock 유지 -> UI 연결` 순서로 바꾼다. +- 레거시 endpoint 제거는 `대체 endpoint 반영 -> 테스트 통과 -> 실제 화면 확인` 이후에만 진행한다. +- 화면 코드가 API 응답 JSON 구조를 직접 해석하는 형태는 금지한다. +- UI에서 HTTP, header, endpoint path를 직접 다루지 않는다. +- mock 데이터는 임시 코드가 아니라 공식 개발 수단으로 유지한다. + +## 7. 문서 반영 원칙 + +- Swagger 기준 변경사항이 생기면 문서와 코드 중 문서를 먼저 갱신한다. +- 새 endpoint를 쓰기 시작하면 request/response 예시와 필수 필드를 문서에 남긴다. +- 진행 상태가 바뀌면 `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md`를 함께 갱신한다. + +## 8. 이번 저장소에서의 즉시 적용 해석 + +현재 저장소는 아래 판단으로 진행한다. + +- Flutter 앱 기본 프로젝트와 테스트 기반은 유지한다. +- 기존 `auth`, `directory`, `organization`, `favorites` 구조는 재사용한다. +- `BaronSso...`처럼 구현체 이름에 종속된 부분은 점진적으로 일반화한다. +- 기존 Baron SSO 전용 계약 문서는 유지하되, 앞으로는 Swagger 기준 문서가 상위 실행 기준이 된다. +- 앞으로의 구현 순서는 이 문서의 Phase 순서를 따른다. + +## 9. 다음 작업 시작점 + +다음 작업은 아래 순서로 시작한다. + +1. Swagger 기준 1차 사용 API를 문서로 고정한다. +2. 현재 Flutter 코드에서 그 API를 쓰는 feature를 매핑한다. +3. feature별 차이점과 수정 우선순위를 정리한다. +4. 우선순위 1 feature부터 코드 개편을 시작한다. diff --git a/docs/00_policy_tdc114plus_development_2026-07-02.md b/docs/00_policy_tdc114plus_development_2026-07-02.md new file mode 100644 index 0000000..fec78e2 --- /dev/null +++ b/docs/00_policy_tdc114plus_development_2026-07-02.md @@ -0,0 +1,121 @@ +# tdc114plus 개발 정책 + +작성일: 2026-07-02 +최종 개정일: 2026-07-10 +상태: v2.2 + +목적: `tdc114plus` 개발 시 Baron SSO 연동 원칙, Flutter 앱 구조, 문서 우선순위, 테스트 및 협업 기준을 고정한다. + +상위 기준 문서: + +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` + +## 1. 서비스 및 인증 전제 + +- `tdc114plus` 신규 앱은 Baron SSO에 추가되는 별도 `RP(Relying Party)`다. +- 앱 인증은 Baron SSO가 제공하는 공식 인증 절차를 소비하는 방식으로 설계한다. +- 신규 앱의 기본 로그인 방식은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. +- 신규 앱은 Baron SSO에 등록된 `PKCE 공개 클라이언트 RP`이며 Client Secret을 앱 코드, APK, 환경 파일에 저장하지 않는다. +- `private_key_jwt` 서명용 개인키도 공개 모바일 APK에 포함하지 않는다. +- Flutter 앱은 Baron headless API(`/api/v1/auth/headless/...`)를 직접 호출하지 않는다. +- 휴대폰번호 입력, 문자/메일 링크 발송, 링크 승인 처리는 Baron SSO Hosted Login 화면과 Baron SSO 서버 내부 책임으로 본다. +- RP의 OIDC issuer는 `https://sso.hmac.kr/oidc`, 인증 callback은 `https://114.hmac.kr/auth/callback`을 기준으로 한다. +- 앱은 authorization 요청 전 PKCE `code_verifier`, `state`, `nonce`를 생성/보관하고, callback에서 `state` 검증 후 `code_verifier`로 authorization code를 교환한다. +- 전체 Client ID `39d6190d-72f6-4a58-a84f-cdc5ece3e8af`는 공개 RP 식별자이므로 APK 기본 설정에 포함한다. +- 환경별 RP가 달라질 경우 `TDC114_OIDC_CLIENT_ID` Dart define으로 기본값을 재정의할 수 있다. +- 기본 로그인 순서는 `앱 -> Baron SSO 인증 URL 열기 -> Hosted Login 화면에서 휴대폰번호 입력 -> 문자/메일 링크 인증 -> https://114.hmac.kr/auth/callback -> 앱 복귀 -> code를 token으로 교환`이다. +- 로그인 성공 후 Baron SSO가 조직도 API 호출에 필요한 연동 키 묶음을 전달하는 것을 최종 계약으로 준비한다. +- 해당 Baron SSO 기능이 미개발인 동안에는 staging `org-context` 검증을 위해 로컬 비추적 env/Dart define에만 고정 키를 둘 수 있다. +- 이 임시 고정 키는 tracked 문서, tracked 소스, 운영 APK 기본값에 넣지 않는다. +- 기존 Baron SSO의 `선진행 후확인` 방식은 신규 앱의 기본 로그인 정책으로 사용하지 않는다. +- 기존 `phone-login`이 남아 있더라도 개발용 fallback 또는 제한적 호환 경로로만 본다. + +## 2. Baron SSO 연동 원칙 + +- 신규 앱은 Baron SSO 백엔드 소스를 직접 수정해서 맞추는 방식으로 개발하지 않는다. +- 앱은 Swagger에 정의된 공식 Request/Response 계약을 기준으로만 통신 계층을 설계한다. +- 실제 배포 전까지 앱이 참고하고 검증할 Baron SSO API 문서는 staging `https://sadmin.hmac.kr/api/docs#/`를 기준으로 한다. +- 조직/직원 데이터 API는 staging `GET https://sadmin.hmac.kr/api/v1/integrations/org-context`를 우선 기준으로 검증한다. +- Baron SSO 내부 구현은 참고 대상일 뿐, 앱의 상위 기준은 공식 인터페이스 문서다. +- 기존 API 응답을 앱 요구사항에 맞게 임의로 바꾸는 것을 기본 전제로 삼지 않는다. +- Baron SSO 관련 명칭, 경로, DTO가 앱 코드에 과도하게 박혀 있으면 점진적으로 일반화한다. +- Baron SSO backend/orgFront 변경과 `tdc114plus` Flutter 앱 변경은 저장소와 커밋을 분리한다. + +## 3. 인터페이스 중심 개발 원칙 + +- 프론트엔드와 백엔드는 API 계약을 먼저 고정한 뒤 병행 개발한다. +- Flutter 앱은 `request/response DTO`, `API client`, `repository interface`, `UI`를 분리한다. +- UI는 repository interface만 의존해야 하며, HTTP 세부사항을 직접 다루지 않는다. +- 화면 코드가 JSON 응답 구조를 직접 해석하는 형태는 금지한다. +- 백엔드 구현이 완료되지 않았더라도 mock 데이터와 mock repository로 화면 개발이 가능해야 한다. +- API 계약이 바뀌면 문서, DTO, service, repository, test를 함께 갱신한다. + +## 4. Flutter 공통 구현 원칙 + +- 공통 Flutter 코드는 처음부터 Android/iOS 모두를 고려해 작성한다. +- 화면, 상태관리, API client, repository, model은 플랫폼 공통 코드로 우선 설계한다. +- 플랫폼별 차이가 있는 기능은 공통 interface를 먼저 만들고 Android/iOS 구현체를 분리한다. +- 인증 UI와 상태관리는 `SSO 로그인 시작 -> 외부 Hosted Login -> App Link callback -> state 검증 -> token 교환 -> 세션 저장` 흐름을 기준으로 설계한다. +- Flutter 앱은 승인 링크 자체를 생성하거나 RP 비밀값, `client_assertion`, 개인키를 보관하지 않는다. +- 화면 UX, 기본값, 조직 탐색 규칙은 `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md`를 기준으로 삼는다. +- 공지사항, 전자결재, 수신전화식별, 수신팝업은 1차 범위에서 보류한다. +- 1차 범위는 직원검색, 전화번호검색, 가족사 필터, 조직도, 직원목록, 전화걸기, 문자보내기, 즐겨찾기에 집중한다. + +## 5. 플랫폼별 구현 원칙 + +- 플랫폼별 네이티브 기능은 Android에서 먼저 PoC를 완성한 뒤 iOS로 확장한다. +- iOS를 지나치게 늦게 검증하지 않는다. +- 푸시, 생체 인증, 보안 저장소, bridge는 공통 인터페이스와 플랫폼 구현체를 분리한다. +- 운영 배포 전에는 Android/iOS 모두 동일한 보안 기준을 통과해야 한다. + +## 6. 개발 방식 + +- 작업은 `계약 확인 -> DTO 정리 -> repository 정리 -> mock 유지 -> UI 연결 -> 실제 API 검증` 순서로 진행한다. +- 한 번에 전체 기능을 갈아엎지 않고 feature 단위로 점진 개편한다. +- mock 데이터는 임시 코드가 아니라 병행 개발을 위한 공식 수단으로 유지한다. +- 실제 API 연결 전에도 widget test와 unit test가 가능한 구조를 우선 만든다. +- 구현체 이름이 강하게 박힌 타입명은 점진적으로 일반화한다. + +## 7. 검증 원칙 + +Flutter 앱 변경 시 최소 검증: + +```bash +./scripts/flutter-docker.sh analyze +./scripts/flutter-docker.sh test +``` + +상세 테스트 기준은 아래 문서를 따른다. + +- `docs/00_policy_tdc114plus_testing_2026-07-02.md` + +실제 API 연동 검증은 아래 기준을 따른다. + +- Swagger 계약과 DTO 필드 일치 확인 +- Hosted Login authorization URL 생성, App Link callback 수신, `state` 검증, PKCE token 교환, 세션 저장, 로그인 후 첫 화면 진입 확인 +- mock 경로와 real API 경로가 동일한 UI 흐름을 유지하는지 확인 + +## 8. 질문 및 확인 원칙 + +작업 진행 중 판단이 필요하면 아래 순서로 진행한다. + +1. 관련 정책 문서를 먼저 확인한다. +2. 문서 기준으로 처리 가능한 것은 바로 진행한다. +3. 정책 간 충돌, 해석 불명확, 보안 영향, 배포 영향이 있는 경우에만 질문한다. +4. 질문 시에는 확인한 문서, 판단 포인트, 선택지, 권장안을 함께 정리한다. +5. 새로운 결정이 내려지면 관련 문서와 타임테이블을 함께 갱신한다. + +## 9. 문서 우선순위 + +개발 중 판단 기준은 아래 순서로 적용한다. + +1. `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` +2. `docs/00_policy_tdc114plus_development_2026-07-02.md` +3. `docs/00_contract_tdc114plus_api_2026-07-02.md` +4. `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` +5. `docs/00_policy_tdc114plus_testing_2026-07-02.md` +6. `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +7. `docs/guide_baron_sso_reference_source_2026-07-02.md` +8. `docs/references/baron-safe-policies/` + +참고 문서는 배경자료이며, 직접 정책보다 우선하지 않는다. diff --git a/docs/00_policy_tdc114plus_screen_feature_2026-07-07.md b/docs/00_policy_tdc114plus_screen_feature_2026-07-07.md new file mode 100644 index 0000000..8a5532a --- /dev/null +++ b/docs/00_policy_tdc114plus_screen_feature_2026-07-07.md @@ -0,0 +1,250 @@ +# tdc114plus 화면별/기능별 정책 + +작성일: 2026-07-07 +상태: v1.3 + +목적: `tdc114plus` 앱의 주요 화면과 기능이 어떤 규칙으로 동작해야 하는지 화면 단위로 고정한다. 구현 변경 시 이 문서를 기준으로 화면 UX와 상태 규칙을 판단한다. + +운영 원칙: + +- 앱 화면/기능을 수정하기 전에는 반드시 이 문서를 먼저 확인한다. +- 수정 요청이 이 문서의 정책과 일치하는지 먼저 비교한다. +- 문서 정책과 충돌하는 작업이 필요하면, 충돌 항목과 변경 영향 범위를 사용자에게 상세히 설명하고 명시 허락을 받은 뒤 진행한다. +- 정책 변경이 확정된 뒤 구현을 바꾸는 경우, 정책 문서를 먼저 또는 같은 작업 단위 안에서 함께 갱신한다. +- APK 빌드/실기기 설치는 사용자의 명시 허락 후 진행한다. + +관련 문서: + +- `docs/00_policy_tdc114plus_development_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` +- `docs/policy_android_app_install_execution_2026-07-06.md` + +## 1. 공통 원칙 + +- Baron SSO 로그인/세션 결과를 임의로 변형하지 않는다. +- 가족사/조직 탐색은 Baron SSO `tenant` 계층을 기준으로 진행한다. +- 직원검색 기본 첫 화면은 `본인 회사급 범위`를 기준으로 한다. +- 사용자가 명시적으로 조직 탐색을 시작했을 때만 `전체 -> 회사 -> 하위조직 -> 개인` 단계형 탐색으로 전환한다. +- 실제 API가 화면 정책을 충족하지 못하는 경우, fallback 동작을 문서화하고 필요한 API 보강 이슈를 별도로 작성해 병행 진행한다. +- 화면 정책이 바뀌면 widget test와 정책 문서를 함께 갱신한다. + +## 2. AuthGate 화면 정책 + +대상: + +- 앱 첫 진입 +- 저장 세션 확인 + +규칙: + +- 저장된 유효 세션이 있으면 `직원검색`으로 이동한다. +- 저장 세션이 없으면 `Baron SSO 로그인` 화면으로 이동한다. +- smoke/manual 실행에서 preauth session seed가 있으면 해당 세션을 그대로 사용한다. + +## 3. 로그인 화면 정책 + +대상: + +- `Baron SSO 로그인` + +규칙: + +- 신규 앱 기본 로그인 UX는 `전화번호 입력 -> 바론SSO 로그인 링크 발송 -> 문자 링크 클릭 -> 승인 완료 -> 앱으로 복귀 -> 앱 진입`이다. +- 로그인 화면은 앱 내부에 전화번호 입력창을 제공한다. +- 로그인 화면은 Baron SSO 화면과 유사한 어두운 카드형 디자인을 사용한다. +- 로그인 화면 상단 중앙에는 `TDC114PLUS` 타이틀을 명확하게 노출한다. +- 전화번호 입력은 `010-0000-0000` 형식의 입력/표현을 기본으로 한다. +- 안내 문구는 짧고 명확하게 유지한다. +- 로그인 화면 본문에서는 `입력하신 전화번호로 바론SSO 로그인 링크가 발송됩니다.` 문구를 중복 노출하지 않는다. +- 로그인 화면은 문자 승인 후 앱으로 돌아오면 자동 로그인된다는 흐름을 우선 안내한다. +- 전화번호 입력 중 키보드가 열려도 `로그인 링크 보내기` 버튼은 사용자가 바로 누를 수 있도록 화면에 계속 노출한다. +- 앱은 링크 발송 후 pending 상태를 유지하며 poll로 승인 완료를 확인한다. +- Baron SSO 공식 정책상 `/api/v1/auth/headless/link/init`은 승인 완료 후 redirect URL 필드를 지원하지 않는다. +- Baron SSO 공식 정책상 문자 링크를 클릭한 모바일 브라우저는 verify-only approver로 동작하며, 승인 완료 후 `sso.hmac.kr/ko/verify-cc` 또는 승인 완료 화면에 머무른다. +- 따라서 앱 화면은 `문자 링크 승인 후 TDC114PLUS 앱으로 돌아오면 자동 로그인됩니다` 흐름을 명확히 안내한다. +- 사용자가 앱으로 돌아오면 앱은 저장된 pendingRef로 poll을 재개하고, 승인 완료가 확인되면 직원검색 화면으로 자동 이동해야 한다. +- 사용자가 문자 링크를 클릭했을 때 앱이 바로 열리려면 Baron SSO 승인 완료 페이지가 앱 링크 또는 callback URL로 redirect하는 별도 정책/기능을 추가해야 한다. +- Baron SSO가 `sso.hmac.kr/ko/verify-cc` 승인 완료 화면에 머무르는 경우, 앱 단독 코드만으로 Chrome을 자동으로 앱으로 전환할 수 없음을 정책상 명확히 둔다. +- OIDC PKCE Hosted Login은 현재 기본 운영 UX가 아니며, 다시 적용하려면 별도 정책 변경 승인이 필요하다. +- 로그인 실패 메시지는 사용자 존재 여부를 과도하게 노출하지 않는다. + +## 4. 직원검색 화면 정책 + +대상: + +- `직원검색` +- 상단 조직 칩 +- 직원/조직도/즐겨찾기 segment + +### 4.1 초기 기본값 + +- 초기 조회 범위는 로그인 사용자의 `회사급 tenantSlug` +- 단, 초기 선택 상태는 가능하면 로그인 사용자의 `본인 팀 뱃지`가 실제 선택되도록 맞춘다. +- 초기 화면은 직원 목록 중심으로 시작 +- 앱 최초 진입 시에는 조직 단계 표현에 필요한 상위 조직/내 팀 정보를 먼저 확보한다. +- 최초 직원 목록은 가족사 전체가 아니라 `내 팀` 또는 현재 초기 선택 scope에 필요한 인원만 조회한다. +- 초기 진입 또는 상단 뱃지 선택 시 직원 조회가 가족사 전체 조회로 새지 않도록 한다. +- 하위 조직을 표시해야 하는 단계에서는 기본 직원 목록 조회를 실행하지 않는다. 단, 선택 조직의 직접 소속 인원을 `직접 소속` 구역에 표시하기 위한 제한 조회는 허용한다. +- 자식 조직이 없는 leaf 조직 또는 검색 결과 표시가 필요한 상태에서만 직원 목록을 조회한다. +- 초기 진입 직후 phone/name 재조회로 개인 1명 또는 하위 팀 1개로 자동 축소하지 않음 +- 초기 상단 칩에는 로그인 사용자의 `본인 팀 뱃지`를 함께 고정 노출한다. +- 본인 팀 뱃지는 세션의 `department`와 tenant 계층의 조직명을 우선 매칭해 결정한다. +- tenant 계층에 본인 팀 노드가 없더라도, 세션의 `department` 문자열로 본인 팀 뱃지를 synthetic chip 형태로 유지한다. + +### 4.2 상단 칩 규칙 + +- 본인 소속 팀 칩이 있으면 상단 칩의 가장 앞에 노출한다. +- 항상 `전체` 칩이 존재한다. +- `전체` 칩은 본인팀 칩 다음 순서에 노출한다. +- 회사급 칩은 항상 노출한다. +- 본인 소속 팀 칩은 빠른 재선택용으로 유지한다. +- 다른 회사 칩을 선택한 뒤에도 본인 팀 칩은 사라지지 않는다. +- 현재 선택된 하위조직은 칩에서 사라지지 않아야 한다. +- 현재 선택된 칩은 비선택 칩보다 더 강한 배경색과 외곽 표현으로 즉시 구분 가능해야 한다. +- 상단 칩 수가 화면 폭을 넘으면 가로 스크롤로 계속 탐색 가능해야 한다. +- 상단 칩 overflow는 줄바꿈보다 `한 줄 가로 스크롤 + 스크롤 가능 인지성`을 우선한다. + +### 4.3 `<전체>` 클릭 규칙 + +`<전체>`를 클릭하면 단계형 조직 탐색 모드로 전환한다. + +진행 규칙: + +1. `전체` 선택 + - 가족사/회사 목록 표시 +2. 회사 선택 + - 해당 회사의 바로 아래 하위조직 목록 표시 +3. 하위조직 선택 + - 자식 조직이 있으면 그 다음 하위조직 목록 표시 + - 자식 조직이 없으면 해당 조직 소속 직원 목록 표시 + - leaf 조직이면 해당 조직 소속 직원 목록으로 진입 +4. breadcrumb + - `전체 > 회사 > 하위조직` 경로를 클릭 가능하게 유지 + +즉, 상단 칩은 단순 필터가 아니라 조직 탐색 진입점 역할을 겸한다. + +추가 표현 규칙: + +- 상단 회사/고정팀 칩 영역과 하위 경로 칩 영역 사이에는 시각적 구분선을 둔다. +- breadcrumb 영역과 segment 사이의 구분 표식은 선 중심으로 단순하게 유지하고, 중앙 강조 아이콘은 기본 표현으로 두지 않는다. +- breadcrumb에서 현재 선택 중인 하위조직 칩은 비선택 칩보다 더 눈에 띄는 아이콘과 색으로 구분한다. +- leaf 조직 선택 후 직원 목록 진입은 조직명 문자열 비교보다 `선택 tenantSlug` 기준 조회를 우선한다. +- 하위조직 카드의 인원 수는 API 원문의 `memberCount`만 그대로 쓰지 않고, 해당 하위조직 자신과 모든 descendant 조직에 소속된 인원을 합산한 `subtree 인원 수`로 표시한다. +- 선택한 조직 아래에 자식 조직이 하나라도 있으면 하위조직 목록을 우선 표시한다. +- 선택한 조직에 직접 소속 인원이 있으면 하위조직 목록과 섞지 않고 별도 구역으로 표시한다. +- 직접 소속 별도 구역의 제목은 사용자가 현재 선택한 조직을 알 수 있도록 `{선택 조직명} 조직 관리자` 형식으로 표시한다. +- 직접 소속 별도 구역은 하위조직 목록보다 위에 표시한다. +- `디비전장`, `센터장` 등 상위 조직에 직접 매핑되고 하위 팀/부서 소속값이 비어 있는 인원은 `직접 소속` 구역에서 누락 없이 노출한다. +- 자식 조직이 없는 leaf 조직에 도달했을 때만 해당 조직에 직접 소속된 직원 목록을 표시한다. +- 하위조직 목록을 표시하는 동안에는 하위조직 전체 직원 목록을 섞어 표시하지 않는다. 단, 선택 조직에 직접 매핑된 인원 확인을 위한 제한 조회는 허용한다. +- leaf 조직의 직접 소속 인원이 0명이면 `검색 결과 없음` 표시가 가능하다. 단, 이 경우 실제 Baron SSO 조직 데이터상 해당 leaf에 members가 없는지 확인해야 한다. +- 다만 실제 API가 하위 tenant subtree를 제공하지 않는 구간에서는, 회사 하위 상세 트리는 완전 복원하지 못할 수 있으며 이 경우 본인 팀 synthetic chip과 회사 단위 직원 목록을 fallback으로 유지한다. + +### 4.4 검색어 입력 규칙 + +- 검색어가 비어 있으면 조직 탐색 규칙을 우선 적용한다. +- 검색 범위는 항상 현재 선택된 상단 뱃지 scope를 기준으로 한다. +- 검색어가 있으면 현재 선택된 scope 안에서 직원 검색 결과를 우선 표시한다. +- 검색 중에는 drilldown 목록보다 검색 결과가 우선이다. +- 직원검색 입력창은 한글 IME 조합 입력을 막지 않는 일반 텍스트 입력으로 유지한다. +- 가족사 전인원 고정 검색은 기본 정책으로 사용하지 않는다. +- 한글 이름 검색은 한글 1자 이상 입력 시 조회 가능하다. +- 전화번호 검색은 숫자만 추출했을 때, 앞자리 `010`을 제외한 나머지가 2자리 이상일 때 조회 가능하다. +- 최소 입력 조건에 미달하면 조회 요청을 보내지 않고 현재 scope 기본 목록 또는 drilldown 상태를 유지한다. +- 최소 입력 조건 안내 문구를 사용자에게 짧게 노출할 수 있다. + +### 4.5 즐겨찾기 규칙 + +- `즐겨찾기` 뷰는 조직 drilldown보다 즐겨찾기 결과 표시를 우선한다. +- 현재 선택된 scope 안에서 즐겨찾기를 필터링할 수 있다. +- 즐겨찾기 추가/해제는 직원 상세/목록 어느 쪽에서도 동일하게 동작해야 한다. + +### 4.6 조직도 인원 정렬 규칙 + +- 조직도 그룹 내부 인원 정렬은 단순 API 수신 순서에 의존하지 않는다. +- 같은 조직/부서 내부에서는 `isManager == true` 인원을 최우선으로 노출한다. +- `isManager` 값이 없거나 false인 경우에 한해 `position`에 `팀장`이 포함된 인원을 보조적으로 장으로 판단할 수 있다. +- 그 다음 순서는 직급/직위 우선순위를 반영한다. +- 기본 우선순위는 `사장 > 부사장 > 수석(연구원) > 전무 > 상무 > 이사 > 책임(연구원) > 부장 > 선임(연구원) > 과장 > 대리 > 사원`으로 본다. +- 위 기준이 같은 경우 마지막은 이름 가나다순으로 정렬한다. +- `미지정` 부서 그룹이 있더라도 동일한 인원 정렬 규칙을 적용한다. + +### 4.7 직원 리스트 스크롤 규칙 + +- 검색창, 상단 뱃지, breadcrumb, segment 영역은 결과 인원 증가 때문에 함께 밀려 올라가면 안 된다. +- 하단 직원/조직 결과 영역만 독립적으로 세로 스크롤되어야 한다. +- 직원 리스트는 `Expanded` 영역 안의 `ListView` 계열로 구성한다. +- 인원이 많아도 상단 검색/뱃지/조직 탐색 영역은 같은 화면 안에서 유지되어야 한다. + +## 5. 조직도 화면 정책 + +대상: + +- `조직도` segment + +규칙: + +- 조직 drilldown 중 자식 조직이 있으면 하위조직 목록을 우선 보여준다. +- 하위조직 목록의 각 카드에는 해당 하위조직 subtree 기준 인원 수를 표시한다. +- leaf 조직에 도달하면 해당 leaf 조직에 직접 소속된 직원 목록/조직도 그룹 표시를 보여준다. +- 비-leaf 조직에 직접 소속된 인원이 있으면 하위조직 목록과 직원 목록을 한 화면에 섞지 않고 `직접 소속` 가상 그룹으로 구분해 표시한다. +- 조직도 화면은 직원검색 화면의 tenant navigation 상태를 공유한다. +- breadcrumb 영역과 직원/조직도/즐겨찾기 segment 사이에는 위아래 영역을 구분하는 시각 표식을 둔다. + +## 6. 직원 상세 기능 정책 + +대상: + +- bottom sheet 상세 +- 전화/문자 버튼 + +규칙: + +- 프로필 사진 URL이 있으면 직원 프로필 앞에 사진을 우선 노출한다. +- 프로필 사진 URL이 없으면 이니셜 또는 기본 아바타 fallback을 사용한다. +- 사번 기반 이미지 네이밍으로 사진을 연결하려면 직원 DTO에 사번 또는 사번으로 역매핑 가능한 안정 식별자가 있어야 한다. +- 이메일만으로 사번 이미지를 역매핑하는 방식은 별도 매핑 테이블이나 명명 규칙이 확정되기 전까지 기본 정책으로 채택하지 않는다. +- 전화번호가 없으면 전화/문자 버튼은 비활성화한다. +- 직원 상세는 tenantName, department, 직급/직위, 직무를 우선 노출한다. +- 즐겨찾기 토글은 상세에서도 가능해야 한다. + +## 7. 구현 시 금지사항 + +- APK 직접 설치만으로 기능 검증이 끝났다고 판단하지 않는다. +- 조직 탐색 정책과 초기 조회 범위를 같은 규칙으로 섞지 않는다. +- 본인 확인 로직 때문에 초기 scope를 개인 1명으로 자동 축소하지 않는다. +- 하위조직 칩 또는 본인팀 칩이 선택 전후로 사라지도록 두지 않는다. +- 다른 회사를 눌렀다는 이유만으로 본인팀 뱃지를 제거하지 않는다. +- 회사/팀 뱃지 선택 시 가족사 전체 직원 목록을 먼저 가져온 뒤 앱에서만 필터링하는 방식을 기본 구현으로 사용하지 않는다. +- 하위조직 목록을 보여주는 단계에서 직원 목록 조회를 동시에 실행하지 않는다. + +## 8. 변경 시 필수 검증 + +최소 검증: + +```bash +./scripts/flutter-docker.sh test test/widget_test.dart test/directory/directory_filters_test.dart +``` + +변경 후 확인할 항목: + +- 로그인 후 기본 범위가 회사급인지 +- 로그인 후 본인팀 칩이 기본 노출되는지 +- `<전체>` 클릭 시 가족사 목록으로 들어가는지 +- 회사 선택 후 하위조직 목록이 나오는지 +- leaf 조직 선택 후 직원 목록이 나오는지 +- 하위조직 카드의 인원 수가 해당 하위조직 subtree 기준으로 합산되는지 +- 자식 조직이 있는 비-leaf 조직에서는 직원 목록보다 하위조직 목록이 우선 표시되는지 +- leaf 조직의 직접 소속 인원이 0명일 때만 `검색 결과 없음`이 표시되는지 +- 본인팀 칩/선택 조직 칩이 사라지지 않는지 +- 선택된 칩이 비선택 칩보다 명확히 구분되는지 +- 현재 선택된 breadcrumb 칩이 아이콘과 색으로 명확히 구분되는지 +- 칩이 많을 때 가로 스크롤로 끝까지 탐색 가능한지 +- 이름 1자 검색과 전화번호 `010 제외 2자리` 검색 규칙이 맞는지 +- 최소 입력 미달 시 조회를 남발하지 않고 현재 scope가 유지되는지 +- 조직도 그룹 내에서 팀장/직급/이름 순 정렬이 맞는지 +- 직원 목록이 많을 때 하단 결과 영역만 스크롤되는지 +- 하위조직 목록 표시 중 하위조직 전체 직원 목록이 섞여 나오지 않는지 +- 상위 조직 직접 소속 인원이 있으면 `직접 소속` 구역에 누락 없이 표시되는지 +- 회사/팀 뱃지 선택 시 가족사 전체 직원 조회로 새지 않는지 +- 정렬 기준이 `isManager -> 직급표 -> 이름` 순서와 일치하는지 diff --git a/docs/00_policy_tdc114plus_testing_2026-07-02.md b/docs/00_policy_tdc114plus_testing_2026-07-02.md new file mode 100644 index 0000000..95e374d --- /dev/null +++ b/docs/00_policy_tdc114plus_testing_2026-07-02.md @@ -0,0 +1,194 @@ +# tdc114plus 테스트 정책 + +작성일: 2026-07-02 +최종 개정일: 2026-07-09 +상태: v2.1 + +목적: `tdc114plus` Flutter 앱의 mock 기반 개발, Swagger 계약 검증, 실제 API 연동 검증 기준을 단계별로 정의한다. + +상위 기준 문서: + +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` +- `docs/00_policy_tdc114plus_development_2026-07-02.md` +- `docs/00_contract_tdc114plus_api_2026-07-02.md` + +## 1. 적용 범위 + +본 정책은 아래 영역에 적용한다. + +- Flutter 앱 화면, 라우팅, 상태관리 +- API client, repository, provider +- API 계약 기반 model, DTO, JSON 변환 +- Baron SSO Hosted Login + PKCE 시작/callback/token 교환 흐름 +- 직원검색, 조직도, 직원 상세 +- 즐겨찾기 로컬 저장 +- 전화걸기, 문자보내기 등 플랫폼 액션 + +## 2. 기본 검증 게이트 + +Flutter 앱 코드를 변경한 모든 작업은 아래 검증을 통과해야 한다. + +```bash +./scripts/flutter-docker.sh analyze +./scripts/flutter-docker.sh test +``` + +필요 시 formatter를 적용한다. + +```bash +./scripts/format-dart.sh +``` + +검증 실패 상태의 코드는 `main` 브랜치에 반영하지 않는다. + +## 3. 테스트 레이어 + +### 3.1 Mock 레이어 + +목적: + +- 백엔드 미구현 상태에서도 화면과 상태 흐름을 개발 가능하게 유지한다. + +대상: + +- widget test +- fake/mock repository +- local mock data + +핵심 검증: + +- 로그인 화면 표시 +- Baron SSO 로그인 시작 버튼 렌더링 +- 앱 내부에서 휴대폰번호를 직접 입력받지 않는지 확인 +- callback token 교환 완료 후 첫 화면 진입 +- 직원검색, 조직 탐색, 즐겨찾기, 상세 화면 흐름 + +### 3.2 계약 레이어 + +목적: + +- Swagger 기준 request/response DTO와 앱 모델 간 불일치를 조기에 찾는다. + +대상: + +- `fromJson`, `toJson` +- API error parsing +- request body 생성 +- polling 상태값 파싱 + +핵심 검증: + +- OIDC authorization URL query 생성 +- PKCE `state`, `nonce`, `code_verifier` 저장/검증 +- token endpoint 응답 DTO +- 세션 저장 모델 +- directory/organization DTO +- 400/401/403/429/timeout 처리 + +### 3.3 실제 API 레이어 + +목적: + +- mock 구조가 실제 API와 동일한 사용자 흐름을 유지하는지 확인한다. + +대상: + +- smoke test +- integration test +- staging 또는 동등 환경 점검 + +핵심 검증: + +- Hosted Login authorization endpoint 진입 +- App Link callback 수신 +- PKCE token 교환 후 세션 저장 +- 로그인 후 직원검색 첫 화면 진입 +- directory/organization 실제 응답 정합성 + +## 4. 우선 테스트 대상 + +강한 단위 테스트가 필요한 영역: + +- API model `fromJson`, `toJson` +- API error parsing +- authorization URL 생성 규칙 +- 로그인 상태 전이 +- `state`, `nonce`, `code_verifier` 처리 +- 세션 저장/삭제/복원 +- 직원검색 query/filter 생성 +- 가족사/조직 필터 상태 +- 즐겨찾기 추가/삭제/조회 +- API 실패, 401, 403, 429, timeout 처리 + +화면 테스트가 필요한 영역: + +- 앱 실행 후 로그인 화면 표시 +- 앱 내부 전화번호 입력창 미노출 +- callback 처리 완료 후 직원검색 진입 +- 직원 검색어 입력과 결과 표시 +- 가족사 필터 선택/해제 +- 조직도 탐색 +- 직원 상세 표시 +- 전화걸기/문자보내기 액션 노출 +- 즐겨찾기 토글 + +## 5. 단계별 테스트 전략 + +### 5.1 Phase A: Mock 우선 개발 + +목표: + +- API 없이도 앱의 핵심 화면 흐름을 검증한다. + +완료 기준: + +- `flutter analyze` 통과 +- `flutter test` 통과 +- mock repository 기반 주요 widget test 존재 + +### 5.2 Phase B: 계약 정합성 검증 + +목표: + +- Swagger 기준 DTO와 앱 모델의 구조를 맞춘다. + +완료 기준: + +- DTO 파싱/직렬화 테스트 통과 +- 에러 응답 테스트 통과 +- 로그인 흐름 상태값 테스트 통과 + +### 5.3 Phase C: 실제 API 연동 + +목표: + +- Hosted Login + PKCE 흐름이 실제 Baron SSO RP 설정과 맞물리는지 확인한다. + +실행 원칙: + +- 실제 API smoke는 환경 준비 확인 후 실행한다. +- local, staging, 기타 검증 환경 중 어떤 환경을 쓰더라도 동일한 계약 기준을 적용한다. +- 실제 검증은 `authorization URL 열기 -> Baron SSO Hosted Login에서 인증 -> App Link callback -> state 검증 -> token 교환 -> 세션 저장 -> 첫 화면 진입` 흐름 완료를 기준으로 본다. +- `phone-login`, `link/poll`은 개발용 fallback 또는 Baron SSO 내부 구현 참고일 뿐, 신규 앱 기본 로그인 검증 완료로 간주하지 않는다. + +완료 기준: + +- authorization URL query 확인 +- callback 수신과 state 검증 확인 +- token 교환 후 세션 저장 확인 +- 로그인 후 첫 화면 진입 확인 +- directory/organization 응답 필드 정합성 확인 + +## 6. 수동 검증 원칙 + +- Android target 검증은 mock 검증과 별도로 본다. +- 로그인 완료 가정 세션 주입 경로는 post-login 기능 점검용으로만 사용한다. +- 실제 승인 완료 검증을 세션 bootstrap 경로로 대체하지 않는다. +- staging 반영 검토 전에는 승인 완료 end-to-end를 최소 1회 이상 확인하는 것을 목표로 한다. + +## 7. 문서 및 로그 반영 원칙 + +- 테스트 기준이 바뀌면 정책 문서를 먼저 갱신한다. +- 중요한 실행 결과는 `docs/test-logs/`에 기록한다. +- 실패 시에는 원인, 재현 조건, 후속 조치를 함께 남긴다. +- mock 기준 통과와 real API 기준 통과를 구분해서 기록한다. diff --git a/docs/checklist_android_device_startup_2026-07-09.md b/docs/checklist_android_device_startup_2026-07-09.md new file mode 100644 index 0000000..ce311ba --- /dev/null +++ b/docs/checklist_android_device_startup_2026-07-09.md @@ -0,0 +1,91 @@ +# 공기계 USB 테스트 시작 체크리스트 + +작성일: 2026-07-09 +상태: v1.0 + +목적: `tdc114plus` 신규앱을 공기계 USB 연결 기준으로 빠르게 기동하고 테스트를 시작하기 위한 최소 절차를 고정한다. + +## 1. 전제 + +- 오늘 기본 테스트 대상은 `공기계 1대`다. +- Android Studio는 필수가 아니다. +- 기본 연결 방식은 `Windows ADB server 공유 + WSL/Docker Flutter`다. + +## 2. 시작 순서 + +1. Windows에서 `일반 PowerShell`을 연다. +2. WSL에서 `VS Code`와 `tdc114plus` 워크스페이스를 연다. +3. 공기계를 USB로 연결한다. +4. 공기계에서 `USB 디버깅 허용` 팝업이 뜨면 허용한다. +5. 공기계 USB 용도는 `파일 전송`으로 둔다. + +## 3. Windows 확인 + +일반 PowerShell에서 실행: + +```powershell +& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" devices +``` + +기대 결과: + +- 공기계 1대가 `device` + +문제 시: + +- `unauthorized`: 폰 화면에서 허용 +- `offline`: 케이블 재연결, USB 모드 재확인, 다시 `adb devices` + +## 4. WSL startup + +WSL 터미널에서 실행: + +```bash +cd /home/ubuntu/workspace/tdc114plus +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --dry-run --wait=40 +``` + +dry-run 이상 없으면 실제 실행: + +```bash +cd /home/ubuntu/workspace/tdc114plus +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 +``` + +## 5. startup 통과 기준 + +- Android target preflight 통과 +- Baron runtime 기동 완료 +- `check-baron-api-env.sh` 통과 +- `api-smoke.sh` 통과 + +## 6. 공기계 로컬 개발모드 준비 + +Windows 일반 PowerShell에서 실행: + +```powershell +& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" -s reverse tcp:5000 tcp:5000 +``` + +``는 `adb devices`에 표시된 공기계 ID를 사용한다. + +## 7. 앱 실행 + +WSL 터미널에서 실행: + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 \ +TDC114_FLUTTER_DEVICE_ID= \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local \ +./scripts/manual-postlogin-run.sh +``` + +## 8. 오늘 테스트 시작점 + +앱이 공기계에 뜨면 아래부터 점검을 시작한다. + +- 로그인 흐름 +- 직원검색 +- 조직도 +- 즐겨찾기 +- 전화/문자 버튼 노출 diff --git a/docs/checklist_evening_shutdown_runtime_2026-07-06.md b/docs/checklist_evening_shutdown_runtime_2026-07-06.md new file mode 100644 index 0000000..d121b9c --- /dev/null +++ b/docs/checklist_evening_shutdown_runtime_2026-07-06.md @@ -0,0 +1,167 @@ +# 퇴근 전 기동 종료 및 정리 체크리스트 + +**작성일**: 2026-07-06 +**최종 업데이트**: 2026-07-08 + +## 목적 + +전날 퇴근하면서 VS Code, 터미널, Android target, Docker 컨테이너 등 개발에 사용한 런타임을 +안정적으로 종료하여 다음날 아침에 원활히 재기동할 수 있도록 준비한다. + +**핵심 정책**: 소스코드 변경을 요하지 않는 종료/정리 작업(컨테이너 중지, 권한 수정, 로그 수집, 임시파일 정리 등)은 사용자 승인 없이 자동으로 실행한다. + +--- + +## 적용 대상 + +- 작업 디렉터리: `/home/ubuntu/workspace/tdc114plus` +- Baron SSO API worktree: `/home/ubuntu/workspace/baron-sso-tdc114plus-api` +- Android target (실기기 우선, emulator fallback) + WSL/Docker 환경 +- 로컬 Docker 엔진 + +--- + +## 간단 체크리스트 (퇴근 5분 요약) + +1. 모든 작업 저장 및 커밋(필요시). +2. 통합 테스트/빌드가 실행 중이면 중지. +3. Android target 정리 및 필요 시 ADB 연결 해제. +4. Docker 앱/컨테이너 정상 종료(아래 상세 절차). +5. 로그/임시파일 수집 및 정리. +6. VS Code 종료. + +--- + +## 상세 종료 절차 (권장 순서) + +1) 열린 작업 저장 + +- 변경 중인 파일을 저장하고 로컬 커밋을 권장. 소스 변경은 수동 승인 항목이므로 자동 처리하지 않는다. + +2) 실행 중인 테스트/빌드 종료 + +```bash +# 통합/로컬 테스트나 빌드 프로세스가 있으면 종료 +# (예: integration_tests.sh 백그라운드 프로세스 종료) +pkill -f /home/ubuntu/workspace/tdc114plus/scripts/integration_tests.sh || true +pkill -f /home/ubuntu/workspace/tdc114plus/scripts/flutter-docker.sh || true +``` + +3) Android target 정리 + +- 실기기 우선 운영이면 USB 연결만 정리하고, emulator fallback을 썼다면 Windows에서 에뮬레이터를 끈다. +- 당일 `TDC114_ADB_CONNECT_ADDRESS`를 알고 있을 때만 WSL에서 연결을 끊는다. + +```bash +# WSL에서 ADB 연결 해제: 당일 실제 주소로만 실행 +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1: \ + adb disconnect 172.21.128.1: 2>/dev/null || true +``` + +- 주소를 모르면 ADB disconnect는 생략한다. 과거 포트(`5555`, `5559` 등)를 임의로 disconnect하지 않는다. +- 필요시 포트포워드/portproxy 정리(Windows 측에서 수행 필요) + +4) 로그 수집 + +- compose 로그는 `down` 전에 수집한다. 종료 후에는 컨테이너 로그가 사라질 수 있다. + +```bash +# 로그 저장(날짜별) +mkdir -p /home/ubuntu/workspace/tdc114plus/logs/$(date +%F) +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml logs --no-color > /home/ubuntu/workspace/tdc114plus/logs/$(date +%F)/baron-compose.log 2>&1 || true +``` + +5) Docker 컨테이너 및 스택 안전하게 중지 + +- Baron SSO 및 app 관련 스택을 정상적으로 내린다 (데이터베이스 유지 여부는 상황에 따름). + +```bash +# 권장: 모든 관련 compose 파일을 포함해 정상 중지 (데이터 유지) +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down + +# tdc114plus 앱 스택이 별도라면 종료 +cd /home/ubuntu/workspace/tdc114plus +# (예: 앱 관련 compose가 있다면) docker compose down +``` + +- 모든 관련 컨테이너 완전 제거(옵션, 재기동 시 네임 충돌 방지) + +```bash +# 선택적(정리 필요 시 실행) +docker ps -a --format '{{.Names}}' | grep -iE "baron|ory|tdc114" | xargs -r docker rm -f || true +``` + +6) 임시파일 정리 + +```bash +# 임시 파일 정리 (docker cache 등) +# (유지해야 하는 캐시는 삭제하지 않도록 주의) +``` + +7) 권한/생성된 파일 기본 정리 (자동) + +```bash +# config 디렉터리 권한이 root로 생긴 경우 사용자가 쓸 수 있게 복구 +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +chmod -R u+w config/.generated/ 2>/dev/null || true +chown -R $(id -u):$(id -g) config/.generated/ 2>/dev/null || true +``` + +8) VS Code 및 터미널 종료 + +- VS Code: 모든 변경 저장 후 종료. +- 터미널 세션: 열린 터미널을 종료. + +--- + +## 자동화 규칙 요약 + +- 자동 실행(승인 불필요): 대상 helper 프로세스 종료, 로그 수집, 컨테이너 중지, 임시파일 정리, 권한 복구, ADB 연결 해제 +- 수동 승인 필요: 소스코드 커밋/푸시, 설정 파일 수정, 환경 변수 변경, DB 마이그레이션 + +--- + +## 스크립트 사용법: `scripts/shutdown.sh` + +이 문서의 절차는 자동화 스크립트 `scripts/shutdown.sh`로 실행할 수 있습니다. 스크립트는 기본적으로 **안전 모드(dry-run)**로 동작하며, 실제 종료 작업과 선택적 파괴적 정리(컨테이너 강제 제거 등)는 `--auto` 옵션을 사용해야 수행됩니다. + +간단한 사용 예시: + +```bash +# 문법 검사 +bash -n scripts/shutdown.sh + +# Dry-run (권장): 실제로 파괴적 명령을 실행하지 않고 어떤 작업을 수행할지 확인합니다. +./scripts/shutdown.sh --dry-run + +# 실제 실행 (주의): --auto 플래그는 컨테이너 강제 제거 같은 파괴적 정리를 허용합니다. +./scripts/shutdown.sh --auto +``` + +스크립트는 실행 로그를 `/home/ubuntu/workspace/tdc114plus/logs//shutdown.log`에 기록합니다. 자동화된 종료를 CI나 cron에 등록할 경우 `--auto`를 사용하되, 로그 보관 정책과 백업을 확인하십시오. + + +## 체크아웃/확인 항목 (퇴근 직전) + +- [ ] 작업 내용 저장/커밋(또는 스태시) +- [ ] 대상 helper 프로세스 종료 확인 +- [ ] Android target 정리 및 필요 시 ADB 연결 해제 +- [ ] `docker compose down` 실행 완료 +- [ ] 주요 로그가 `/home/ubuntu/workspace/tdc114plus/logs/$(date +%F)`에 보관되었는지 확인 +- [ ] `config/.generated` 쓰기 권한이 정상인지 확인 +- [ ] VS Code 종료 + +--- + +## 복구 지침 요약 (다음날 재기동 관련) + +- 다음날 아침에는 `docs/checklist_morning_startup_runtime_2026-07-03.md`를 따라 재기동한다. +- 자동으로 중지된 항목(컨테이너 등)은 사용자의 승인 없이 재기동 스크립트가 처리한다. + +--- + +## 변경 이력 + +- v1.0 (2026-07-06): 초기 작성 diff --git a/docs/checklist_morning_startup_runtime_2026-07-03.md b/docs/checklist_morning_startup_runtime_2026-07-03.md new file mode 100644 index 0000000..27fff78 --- /dev/null +++ b/docs/checklist_morning_startup_runtime_2026-07-03.md @@ -0,0 +1,474 @@ +# 출근 후 기동 확인 및 복구 체크리스트 + +**작성일**: 2026-07-03 +**최종 업데이트**: 2026-07-19 +**버전**: 2.5 (개발용 로컬 Baron worktree와 최종 배포 목표 구조 구분 반영) + +## 목적 + +전날 퇴근하면서 VS Code, 터미널, Android target을 모두 종료한 뒤, 다음 출근 시 `tdc114plus` 작업을 빠르게 재개할 수 있도록 기동 확인과 복구 절차를 고정한다. + +**핵심 정책**: 소스코드 변경을 요하지 않는 자동 복구(컨테이너 재시작, 충돌 컨테이너 정리, 권한 수정, 디렉터리 정리 등)는 사용자 승인 없이 자동으로 진행한다. + +--- + +## 1. 적용 대상 + +- 앱 저장소: `/home/ubuntu/workspace/tdc114plus` +- Baron SSO API worktree: `/home/ubuntu/workspace/baron-sso-tdc114plus-api` +- auth 중계서버 저장소: `/home/ubuntu/workspace/tdc114plus-auth` +- Windows ADB 서버 공유 기반 Android target + WSL/Docker Flutter 조합 + +주의: + +- 이 체크리스트는 `현재 개발/검증용 업무시작 기동` 기준이다. +- 최종 배포 목표 구조에서는 로컬 `baron-sso-tdc114plus-api` 기동이 없어지는 방향을 목표로 한다. +- 다만 2026-07-19 현재는 아직 일부 로그인/조직 연동 검증이 로컬 Baron worktree에 의존하므로, 업무 시작 기동 대상에서 바로 제거하지 않는다. + +--- + +## 2. 출근 후 기본 순서 + +아래 순서를 기본값으로 사용한다. + +1. VS Code를 연다. +2. 작업 기준 문서를 먼저 연다. + - `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` + - `docs/daily-issues/YYYY-MM-DD.md` +3. Android target 선행 확인 +4. Baron SSO runtime 초기화 (아래 섹션 참고) +5. `tdc114plus-auth` broker 기동 및 health 확인 +6. 1차 상태 확인 명령 실행 +7. Integration test 실행 + +현재 해석: + +- `tdc114plus`와 `tdc114plus-auth`는 최종 배포 직접 대상이다. +- `baron-sso-tdc114plus-api`는 현재 개발 중 연동 검증용 보조 worktree다. +- Baron SSO 원본 `staging`/`production` 연동으로 완전히 전환되기 전까지는 이 보조 worktree 기동 여부가 앱 개발 중 동작에 직접 영향을 줄 수 있다. + +--- + +## 3. 런타임 초기화 및 1차 확인 + +### 3.0 Android target 선행 확인 + +`startup.sh`는 이제 **가장 먼저** Android target 상태를 확인한다. 실기기 또는 emulator가 `offline`, `unauthorized`, `connection refused` 중 하나면 Baron runtime 기동 전에 멈추고, Windows에서 무엇을 해야 하는지 단계별로 출력한다. + +기본 정책: + +- 기본 타깃은 실기기 1대다. emulator는 fallback일 때만 1대만 켠다. +- Windows `adb.exe devices`에서 대상 Android target이 `device` 상태인지 먼저 확인한다. +- 표준 연결 방식은 Windows ADB server 공유 방식인 `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037`을 사용한다. +- 직접 emulator port 연결인 `TDC114_ADB_CONNECT_ADDRESS=:`는 Docker local ADB가 꼭 필요한 예외 상황에만 사용한다. +- Windows 단독 `device` 상태가 확인되기 전에는 WSL/Docker Android 스크립트를 실행하지 않는다. + +권장 실행: + +```bash +# Android preflight + startup 계획 확인 +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --dry-run --wait=40 + +# 실제 기동 +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 +``` + +Android target preflight 실패 시 사용자가 로컬 PC에서 최소한으로 해야 하는 일: + +1. Windows에서 Android Studio를 연다. +2. 실기기면 USB 디버깅 연결을 확인하고, emulator fallback이면 Device Manager에서 1대만 켠다. +3. Windows PowerShell에서 `adb.exe devices`를 실행해 `device` 상태를 확인한다. +4. 여전히 `offline`이면 대상 기기 또는 emulator를 재시작한다. +5. Windows adb는 정상인데 WSL/Docker에서만 실패하면 우선 `5037 -> 127.0.0.1:5037` portproxy와 방화벽 rule을 확인한다. +6. `5037` 공유 방식은 정상인데 특정 integration test에서만 막히면 그때 ` -> 127.0.0.1:` 직접 연결 보조 경로를 검토한다. + +이 단계는 Codex가 대신 할 수 없다. + +Codex가 계속할 수 있는 작업: + +- WSL/Docker에서 Android target 재인식 확인 +- Baron runtime 기동 +- API smoke 확인 +- integration/manual Android 명령 실행 +- `tdc114plus-auth` broker 기동 확인 및 자동 실행 시도 + +### 3.05 앱 직접 App Link callback 제거 + +2026-07-15 기준 신규 앱은 Baron SSO OIDC callback을 직접 받지 않는다. + +기본 정책: + +- 앱은 `https://114.hmac.kr/auth/callback` App Link를 사용하지 않는다. +- 앱은 `tdc114plus-auth`의 `/api/v1/auth/link/init`, `/api/v1/auth/link/poll`만 호출한다. +- Baron SSO OIDC callback은 `tdc114plus-auth`가 받는다. +- 필요한 redirect URI는 `https://114-auth.hmac.kr/api/v1/auth/oidc/callback`이다. +- Windows 로컬 App Link 테스트 서버는 업무 시작 기동 대상이 아니다. + +참조 문서: + +```text +docs/00_guide_tdc114plus_auth_broker_redirect_flow_2026-07-15.md +``` + +### 3.1 Baron SSO 런타임 전체 초기화 + +**중요**: Baron SSO는 인프라(PostgreSQL, Redis, ClickHouse)와 Ory 인증(Kratos, Hydra, Keto) 서비스가 **모두 필수**다. + +단순히 `docker compose up -d`로는 불충분하다. **반드시 모든 compose 파일을 포함**해야 한다: + +```bash +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api + +# 모든 compose 파일 포함하여 안전 중지 후 재시작 +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d + +# compose up 실패 시(예: name conflict) 기존 관련 컨테이너 정리 후 1회 재시도 +docker ps -a --format '{{.Names}}' | grep -iE "baron|ory" | xargs -r docker rm -f +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d + +# 서비스 안정화 대기 (인지 마이그레이션/헬스체크 완료) +sleep 30 + +# tdc114plus로 돌아가기 +cd /home/ubuntu/workspace/tdc114plus +``` + +### 3.2 1차 상태 확인 명령 + +```bash +cd /home/ubuntu/workspace/tdc114plus + +# Baron runtime 상태 확인 (스크립트로 자동 실행 가능) +./scripts/check-baron-api-env.sh + +# API smoke 테스트 (스크립트로 자동 실행 가능) +./scripts/api-smoke.sh +``` + +**실행 방법 (권장)**: +- 수동: 위 명령을 복사해 실행 +- 자동(권장): `scripts/startup.sh`를 사용 + +**자동 실행 예 (dry-run 권장)**: +```bash +# Dry-run: Android preflight 포함, 어떤 작업을 할지 미리 확인 +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --dry-run + +# 실제 재기동(주의) +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 +``` + +**기대 결과**: +- `check-baron-api-env.sh`: `"RESULT ready-ish: 0 failure(s), 0 warning(s)"` +- `api-smoke.sh`: 성공 코드 0 +- `tdc114plus-auth` health: `{"jwks":"ok","provider":"baron","status":"ok"}` +- `scripts/startup.sh --auto`: Android preflight, Baron runtime, `tdc114plus-auth`, smoke 조건 중 하나라도 충족하지 못하면 비정상 종료(exit 1) + +--- + +## 4. 자동 복구 정책 및 규칙 + +### 4.1 자동 복구 대상 (사용자 승인 불필요) + +다음 사항들은 소스 변경을 요하지 않으므로 **자동으로 복구**한다: + +- **컨테이너 미실행**: 자동 재시작 또는 전체 재기동 +- **컨테이너 명 충돌**: 기존 컨테이너 강제 제거 후 1회 재시작 +- **권한 문제**: `chmod`, `chown` 자동 수정 +- **설정 디렉터리 부재**: 자동 생성 또는 복원 +- **헬스체크 실패 또는 warning**: 최대 6회 재시도 +- **서비스 안정화 대기**: 자동 진행 (최대 60초) + +### 4.2 수동 개입 필요 (사용자 승인 필요) + +다음 사항들은 설정 또는 소스 변경을 요하므로 **명시적 승인**을 받는다: + +- 소스코드 수정 +- 환경 변수 값 변경 +- 설정 파일 내용 수정 +- 데이터베이스 마이그레이션 또는 초기화 +- API 엔드포인트 주소 변경 + +--- + +## 5. 실패 시 복구 순서 + +### 5.1 `check-baron-api-env.sh` 실패 또는 warning 다수 + +Baron SSO runtime 상태 확인 및 복구: + +```bash +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +``` + +**자동 복구 절차** (순차 실행): + +```bash +# 1단계: 안전 중지 후 전체 재시작 +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d + +# 2단계: name conflict가 보이면 관련 컨테이너 정리 후 1회 재시작 +docker ps -a --format '{{.Names}}' | grep -iE "baron|ory" | xargs -r docker rm -f +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d + +# 3단계: 서비스 안정화 대기 +sleep 30 + +# 4단계: 재확인 +cd /home/ubuntu/workspace/tdc114plus +./scripts/check-baron-api-env.sh +``` + +**상태 확인 명령어**: + +```bash +docker ps --format '{{.Names}} {{.Status}}' | grep -E "baron_backend|baron_gateway|ory_kratos|ory_postgres" +``` + +**정상 기대 상태**: + +| 서비스 | 상태 | 설명 | +|--------|------|------| +| `baron_backend` | Up (healthy) | 메인 백엔드 서비스 | +| `baron_gateway` | Up | 리버스 프록시 | +| `baron_postgres` | Up (healthy) | 메인 데이터베이스 | +| `baron_redis` | Up | 캐시/세션 저장소 | +| `ory_postgres` | Up (healthy) | Ory 데이터베이스 | +| `ory_kratos` | Up | 사용자 관리/인증 | +| `ory_hydra` | Up | OAuth2/OIDC 제공자 | +| `ory_keto` | Up | 권한 관리 | + +--- + +### 5.2 `api-smoke.sh` 실패 (HTTP 502/503) + +#### 원인 분석 + +```bash +# Ory Kratos 로그 확인 (인증 서비스) +docker logs ory_kratos 2>&1 | tail -30 + +# Baron backend 로그 확인 +docker logs baron_backend 2>&1 | tail -30 + +# 전체 컨테이너 상태 +docker ps | grep -iE "baron|ory" +``` + +#### 자동 복구 + +Ory 또는 Baron 서비스가 준비 완료되지 않은 경우: + +```bash +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api + +# 전체 재시작 (가장 안전한 방법) +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d +sleep 40 + +# 재확인 +cd /home/ubuntu/workspace/tdc114plus +./scripts/api-smoke.sh +``` + +#### HTTP 401 (인증 오류) + +```bash +cat /home/ubuntu/workspace/tdc114plus/scripts/.env.smoke.local | grep -E "PHONE|PROVIDER" +``` + +전화번호, provider 설정이 올바른지 확인. 변경 필요시 사용자 승인 후 수정. + +--- + +## 6. Android target 확인 + +`startup.sh`가 이 단계를 먼저 수행하지만, 수동 재확인이 필요하면 아래 명령을 쓴다. + +실기기 우선이면 USB 디버깅 연결을 먼저 확인하고, emulator fallback이면 Windows에서 Android Studio emulator를 켠다. + +그 후 WSL/Docker 기준 확인: + +```bash +cd /home/ubuntu/workspace/tdc114plus +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices +``` + +**완료 기준**: + +- `emulator-` 또는 Android target이 표시된다. +- 직접 emulator port 연결은 표준 방식이 실패하거나 integration test 보조 경로가 필요할 때만 사용한다. + +### 6.1 Android device가 보이지 않을 때 + +우선 정책 문서를 참고한다: + +- `docs/policy_android_studio_wsl_adb_2026-07-03.md` +- `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` + +가장 흔한 확인 포인트: + +- Windows emulator가 실제로 켜져 있는가? +- Windows `adb.exe devices`에서 대상이 `device` 상태인가? +- 당일 emulator port에 맞는 portproxy가 살아 있는가? +- Docker local ADB가 `device` 상태를 보는가? + +--- + +## 7. Android SDK license 관련 + +현재 `scripts/flutter-docker.sh`에는 Android SDK license 선행 승인 로직이 들어 있다. + +다음과 같은 오류가 나면 먼저 cache 상태를 의심한다: + +- `ndk;28.2.13676358` license not accepted +- `CMake 3.22.1` license not accepted + +**확인 경로**: + +```bash +ls -la /home/ubuntu/workspace/tdc114plus/.docker-cache/flutter/android-sdk/licenses/ +``` + +이 디렉터리들이 비어 있지 않으면 재사용되는 것이 정상이다. + +--- + +## 8. 정상 기대 상태 + +정상 재개 기준: + +- ✅ `./scripts/check-baron-api-env.sh` 통과 (0 failures, 0 warnings) +- ✅ `./scripts/api-smoke.sh` 통과 (성공 코드 0) +- ✅ Android emulator device 인식 성공 +- ✅ integration test 통과 + +**Integration test에서 확인할 실제 홈화면 기대값**: + +로그인 후 홈화면에는 `문형석`의 조직 slug `is-3` 기준 팀 직원목록이 보여야 한다: + +- `직원검색` +- `검색 결과` +- `문형석` +- `IS3` + +--- + +## 9. 다음 조치 + +위 순서 중 어느 단계에서 실패했는지 `docs/daily-issues/YYYY-MM-DD.md`에 남긴다. + +기록할 최소 항목: + +- 실패 단계 (예: 3.2, 5.1, 5.2 등) +- 첫 번째 에러 메시지 +- 수행한 자동 복구 명령 +- 복구 성공 여부 +- 추가 수동 개입 필요 여부 및 사유 + +**기록 예시**: + +``` +## 2026-07-06 출근 재기동 + +### 진행 상황 +- [x] 3.1 Baron SSO 초기화: 성공 +- [x] 3.2 상태 확인: 초기 실패 (baron_backend not running) +- [x] 5.1 자동 복구: docker compose 재시작 → 성공 +- [x] 5.2 api-smoke 재확인: 통과 +- [ ] 6.0 Android emulator: 미진행 (시간 부족) + +### 실패 내역 +- Initial check-baron-api-env.sh: WARN baron_backend not running +- Resolved with: docker compose -f ... up -d +- No source code changes needed +``` + +--- + +## 부록: 명령 치트시트 + +### 빠른 전체 초기화 (추천) + +```bash +# 1. Baron SSO 전체 재시작 (권장) +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down 2>/dev/null || true +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d +sleep 30 + +# 2. tdc114plus 상태 확인 +cd /home/ubuntu/workspace/tdc114plus +./scripts/check-baron-api-env.sh && ./scripts/api-smoke.sh +``` + +### 컨테이너 상태 모니터링 + +```bash +# 실시간 로그 보기 +docker logs -f baron_backend # 백엔드 로그 +docker logs -f ory_kratos # 인증 로그 + +# 모든 baron/ory 컨테이너 상태 +docker ps | grep -iE "baron|ory" + +# 전체 상태 요약 +docker ps --format '{{.Names}} {{.Status}}' +``` + +### 긴급 초기화 (최후의 수단) + +```bash +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api + +# 모든 관련 컨테이너 강제 제거 +docker ps -a --format '{{.Names}}' | grep -iE "baron|ory|sso" | xargs -r docker rm -f + +# 전체 재시작 +docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d + +# 서비스 안정화 대기 +sleep 40 + +# 상태 확인 +docker ps | grep -iE "baron_backend|ory_kratos" +``` + +### 일반적인 문제 해결 + +```bash +# 권한 문제 수정 (config 디렉터리 쓰기 불가) +cd /home/ubuntu/workspace/baron-sso-tdc114plus-api +chmod -R u+w config/.generated/ 2>/dev/null || true + +# Ory 마이그레이션 재시도 +docker compose -f docker-compose.yaml -f compose.ory.yaml up kratos-migrate + +# 특정 컨테이너만 재시작 +docker restart baron_backend +docker restart ory_kratos + +# 로그 대량 확인 +docker logs baron_backend 2>&1 | grep -i error | tail -20 +``` + +--- + +## 변경 이력 + +### v2.0 (2026-07-06) + +- 자동 복구 정책 섹션 추가 (섹션 4) +- Ory 포함 필수 명시 (섹션 3.1) +- 컨테이너 정리 자동화 (섹션 5.1) +- 안정화 대기 시간 추가 (30~40초) +- 권한 문제 자동 처리 설명 추가 +- 명령 치트시트 부록 추가 +- 문제 기록 템플릿 추가 (섹션 9) + +### v1.0 (2026-07-03) + +초기 버전: 기본 기동 절차 및 복구 순서 diff --git a/docs/checklist_pre_staging_manual_2026-07-06.md b/docs/checklist_pre_staging_manual_2026-07-06.md new file mode 100644 index 0000000..1377afe --- /dev/null +++ b/docs/checklist_pre_staging_manual_2026-07-06.md @@ -0,0 +1,161 @@ +# pre-staging 수동 점검 체크리스트 + +작성일: 2026-07-06 +상태: v0.2 현재 상태 반영 + +목적: `tdc114plus` 신규 전화번호 승인 로그인 기능을 staging 반영 전에 로컬 runtime, Android target, 문서 기준으로 점검할 항목을 고정한다. + +## 1. 사용 시점 + +아래 상황에서 이 문서를 사용한다. + +- 팀장에게 staging 반영 검토를 요청하기 전 +- Android target 기준 수동 점검을 다시 수행할 때 +- local runtime과 staging runtime의 차이를 설명해야 할 때 + +## 2. 진행 순서 + +아래 순서로 점검한다. + +1. 로컬 구현 고정 상태 확인 +2. 자동화 테스트 재확인 +3. 로컬 API 계약 점검 +4. Android target UI 점검 +5. Android target 실사용 흐름 점검 +6. 예외 시나리오 점검 +7. staging 반영 직전 확인 + +## 3. 점검 항목 + +### 3.1 로컬 구현 고정 상태 + +- [x] 신규 로그인 흐름이 기존 원본 소스에 직접 덮어쓰지 않고 신규 API 경로 중심으로 분리되었는가 +- [x] 기존 직원검색, 조직도, 직원 상세, 즐겨찾기 흐름이 회귀하지 않았는가 +- [x] 변경 파일 목록과 영향 범위를 설명할 수 있는가 + +현재 판단: + +- 앱과 backend 모두 기존 `phone-login`을 직접 덮어쓰지 않고 headless 승인 계약 기준으로 재정렬하는 방식으로 진행했다. +- 회귀 여부는 Flutter test, backend test, Android target 기준 직원검색 진입 확인으로 1차 검증했다. + +### 3.2 자동화 테스트 재확인 + +- [x] Flutter unit test 통과 +- [x] Flutter widget test 통과 +- [x] backend handler/server test 통과 +- [x] `scripts/api-smoke.sh` 기본 검증 통과 +- [ ] Android integration test 재실행 결과 기록 완료 + +현재 판단: + +- 단위/위젯/backend/smoke 기준의 기본 자동화는 확보되었다. +- Android integration test 재실행은 시도했고, 결과도 로그에 남겼다. +- 다만 2026-07-06 재시도는 `172.21.128.1:5555 offline`으로 Android target 연결이 실패해 기능점검 통과로는 반영하지 못했다. + +### 3.3 로컬 API 계약 점검 + +- [x] headless 로그인 시작/승인조회 계약 존재 확인 +- [x] 레거시 경로와 신규 계약의 차이 설명 가능 +- [x] invalid 요청 기준 validation 응답 확인 +- [x] 임의 `pendingRef` 기준 expired 또는 pending 응답 확인 +- [x] local runtime에서 실제 승인 완료 E2E가 막히는 원인을 설명할 수 있는가 + +설명 기준: + +- local Baron SSO runtime 안에 테스트 번호의 identity/user mirror가 없으면, 번호가 운영 또는 다른 환경에 등록되어 있어도 local 승인 완료 검증은 끝까지 진행되지 않는다. + +### 3.4 Android target UI 점검 + +- [x] 로그인 화면이 정상 표시되는가 +- [x] 빈 전화번호 validation이 동작하는가 +- [x] `Baron SSO로 로그인` 버튼이 Hosted Login 화면을 여는가 +- [ ] 인증 대기 중 문구가 자연스럽게 표시되는가 +- [ ] 로딩 상태가 과도하게 길거나 멈춘 것처럼 보이지 않는가 +- [ ] 오류 메시지가 내부 시스템 상세를 노출하지 않는가 + +현재 판단: + +- 로그인 화면, 입력, 버튼 동작 자체는 확인했다. +- 승인 대기 중 문구와 장시간 polling 체감, generic 오류 문구는 현재 단계에서 다시 한 번 화면 기준 점검이 필요하다. + +### 3.5 Android target 실사용 흐름 점검 + +- [x] 로그인 성공 후 `직원검색` 첫 화면으로 진입하는가 +- [x] `검색 결과`와 기본 직원 목록이 표시되는가 +- [x] 직원 상세 화면 진입이 되는가 +- [x] 즐겨찾기 저장이 되는가 +- [x] 전화/문자 버튼이 노출되는가 +- [ ] 앱 재실행 후 세션 복원이 되는가 +- [ ] 인증 만료 시 재로그인 유도 흐름으로 돌아가는가 + +현재 판단: + +- 로그인 이후 핵심 탐색 흐름은 1차 확인했다. +- 세션 복원과 인증 만료 후 복귀 흐름은 실제 기기/에뮬레이터 기준으로 한 번 더 확인이 필요하다. + +로그인 완료 가정 점검 절차: + +1. 실기기 우선이면 `scripts/.env.android-device.local`, emulator fallback이면 `scripts/.env.android-emulator.local`에 API base와 테스트 번호가 준비되어 있는지 확인한다. +2. 필요 시 `TDC114_SMOKE_ASSUME_LOGGED_IN=1`을 사용해 테스트용 세션 bootstrap을 활성화한다. +3. `./scripts/integration_tests.sh`를 Android target 연결 상태에서 실행한다. +4. 앱이 로그인 화면이 아니라 `직원검색`으로 바로 진입하는지 확인한다. +5. 직원 목록, 즐겨찾기, 직원 상세, 전화/문자 버튼 노출까지 이어서 확인한다. + +보조 메모: + +- local runtime이 유효 세션을 내주지 못하면, 기능점검용으로 mock directory fallback을 사용한다. +- 이 경우에도 점검 목적은 "로그인 이후 앱 기능 확인"이며, 실제 승인 완료 검증을 대체하지는 않는다. + +2026-07-06 추가 메모: + +- local Baron SSO runtime에 테스트 번호 `010-9136-5338`용 identity/local user를 맞춘 뒤 host 기준 `./scripts/api-smoke.sh`는 다시 통과했다. +- 확인 완료: + - `phone-login` HTTP 200 + - headless 로그인 시작 HTTP 200 + - `link/poll` 첫 응답 `authorization_pending` +- 추가 완료: + - Windows emulator `emulator-5556 device` 복구 + - Windows `5557 -> 127.0.0.1:5557` portproxy 추가 + - `TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5557 ./scripts/integration_tests.sh` 통과 + +### 3.6 예외 시나리오 점검 + +- [ ] 미등록 번호 입력 시 generic 실패 안내가 보이는가 +- [x] 만료된 `pendingRef`에서 poll 종료 처리가 자연스러운가 +- [ ] polling 간격이 짧을 때 제한 또는 지연 안내가 되는가 +- [ ] 로그인 성공 직후 directory API 401 없이 첫 화면이 유지되는가 + +현재 판단: + +- 만료 `pendingRef`에 대한 backend 응답 자체는 확인했다. +- 다만 앱 화면에서 그 응답이 자연스럽게 보이는지, 미등록 번호와 polling 제한이 generic UX로 이어지는지는 아직 미완료다. + +### 3.7 staging 반영 직전 확인 + +- [ ] 정확한 staging `TDC114_API_BASE`를 확보했는가 +- [ ] staging에 headless 로그인 API와 `link/poll` API가 실제 반영되었는가 +- [ ] 테스트 번호로 실제 링크 수신이 가능한가 +- [ ] staging 로그 확인 위치와 담당자를 알고 있는가 +- [x] 실패 시 롤백 또는 회귀 확인 방법을 문서화했는가 + +현재 판단: + +- `https://sso.hmac.kr`는 현재 확인 기준으로 `tdc114plus` API base가 아니므로, 정확한 staging base는 아직 미확보다. +- staging 반영 실패 시 local 회귀 확인과 반영 전 점검 순서는 문서화되었지만, 실제 staging 담당자/로그 위치 확인은 남아 있다. + +## 4. 현재 상태 메모 + +2026-07-06 현재 기준 메모: + +- 앱과 backend의 기본 구현은 상당 부분 완료되었다. +- local runtime에서 API route와 기본 오류 응답은 확인했다. +- Android target 기준 로그인 화면과 직원검색 진입, 목록/상세/즐겨찾기/전화문자 버튼 노출은 1차 확인했다. +- local runtime에는 이제 테스트 번호 `010-9136-5338`의 identity/local user가 맞춰져 있어 최소 로그인 시작 단계 검증은 가능하다. +- 다만 실제 승인 완료 E2E는 여전히 staging 또는 동등 환경 검증이 필요하다. + +## 5. 결과 기록 위치 + +점검 결과는 아래 문서에 누적한다. + +- `docs/test-logs/2026-07-test-execution-log.md` +- 필요 시 `docs/daily-issues/YYYY-MM-DD.md` diff --git a/docs/checklist_wsl_maintenance_2026-07-16.md b/docs/checklist_wsl_maintenance_2026-07-16.md new file mode 100644 index 0000000..394f6fd --- /dev/null +++ b/docs/checklist_wsl_maintenance_2026-07-16.md @@ -0,0 +1,68 @@ +# WSL 2주 점검 체크리스트 + +작성일: 2026-07-16 + +목적: `WSL ext4.vhdx` 비대화로 인한 리로드/재연결 문제를 줄이기 위해, 업무시작 시 2주마다 점검 알림을 띄운다. + +## 기준 + +- 기준일: `2026-07-16` +- 주기: 14일 +- 업무시작 진입점: `scripts/startup.sh` +- 점검 스크립트: `scripts/check-wsl-maintenance.sh` + +## 동작 방식 + +`startup.sh`는 기동 초반에 `scripts/check-wsl-maintenance.sh status`를 실행한다. + +- 아직 기한이 아니면 다음 예정일과 남은 일수를 로그에 출력한다. +- 14일이 지났으면 일반 PowerShell / 관리자 PowerShell 작업 순서를 로그에 출력한다. +- 실제 점검을 마친 뒤에는 아래 명령으로 완료 날짜를 기록한다. + +```bash +./scripts/check-wsl-maintenance.sh record +``` + +## 사용 명령 + +상태 확인: + +```bash +./scripts/check-wsl-maintenance.sh status +``` + +오늘 완료 처리: + +```bash +./scripts/check-wsl-maintenance.sh record +``` + +기록 초기화: + +```bash +./scripts/check-wsl-maintenance.sh reset +``` + +## 실제 점검 절차 + +일반 PowerShell: + +```powershell +wsl --shutdown +``` + +관리자 PowerShell: + +```powershell +diskpart +``` + +`DISKPART>` 안에서: + +```text +select vdisk file="%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx" +attach vdisk readonly +compact vdisk +detach vdisk +exit +``` diff --git a/docs/daily-issues/2026-07-03.md b/docs/daily-issues/2026-07-03.md new file mode 100644 index 0000000..2ca8618 --- /dev/null +++ b/docs/daily-issues/2026-07-03.md @@ -0,0 +1,73 @@ +# 2026-07-03 작업 이슈 및 처리내역 + +## 목적 + +당일 작업 중 실제로 확인한 이슈, 처리 내용, 검증 결과, 남은 후속 작업을 기록한다. + +## 이슈 1. 외부 org-context 직원 필터의 회사 subtree 누락 + +- 현상: + - `GET /api/v1/tdc114plus/directory/employees?tenantSlug=hanmac` 호출 시 최초에는 1명만 반환됐다. +- 원인: + - 외부 `org-context` 기준 `tenantSlug` 필터가 회사 하위 조직 subtree가 아니라 direct match 위주로 처리되고 있었다. +- 처리: + - Baron backend `tdc114plus_handler.go`에서 외부 직원 필터를 ancestor/subtree 기준으로 보정했다. + - 관련 handler test를 추가/보강했다. +- 검증: + - backend rebuild 후 `tenantSlug=hanmac` 결과가 `total=339`로 증가한 것을 실제 API로 확인했다. +- 후속: + - 실제 앱 초기 범위와 체감 성능 기준으로 추가 정합성 확인이 남아 있다. + +## 이슈 2. 초기 범위를 회사보다 더 좁은 조직 slug로 축소 필요 + +- 현상: + - 일부 가족사는 직원 수가 1000명 이상일 수 있어 회사 단위 초기 조회도 무거울 수 있다. +- 판단: + - 조직도 예시의 `name`, `slug` 조합은 팀/부서 단위 조직 slug로 볼 수 있다. +- 처리: + - 앱에서 로그인 사용자 회사 범위 안에서 자기 전화번호/이름으로 본인을 다시 검색해 실제 조직 slug를 식별하도록 구현했다. +- 검증: + - 실제 smoke 로그인 사용자 `문형석 / +821091365338`는 `tenantSlug=hanmac` 범위 재검색 시 조직 slug `is-3`, 조직명 `IS3`으로 식별됐다. + - `tenantSlug=is-3` 기준 실제 직원목록은 총 6명으로 확인됐다. +- 후속: + - 초기 조직 slug 식별 실패 시 회사 slug fallback이 계속 적절한지 추가 확인이 필요하다. + +## 이슈 3. Android emulator integration test의 NDK/CMake license blocker + +- 현상: + - Android integration test 실행 시 `ndk;28.2.13676358` license 미승인으로 `assembleDebug`가 실패했다. +- 처리: + - `scripts/flutter-docker.sh`에 Android SDK license 선행 승인 로직을 추가했다. + - Docker cache 아래 Android SDK `licenses`, `ndk`, `cmake` 디렉터리가 유지되도록 재사용 경로를 활용했다. +- 검증: + - 재실행 시 NDK/CMake license가 승인되고 실제 설치가 완료됐다. + - 이후 Android emulator integration test가 끝까지 통과했다. +- 후속: + - 첫 Android 빌드 시간이 여전히 길어 추가 warm-up 또는 캐시 최적화 여지는 있다. + +## 이슈 4. 홈화면 직원목록 실제 노출 검증 + +- 목표: + - 전화번호 로그인 후 홈화면에 본인 팀 소속 직원목록이 실제로 표시되는지 확인한다. +- 처리: + - integration test에 실제 API 로그인 후 홈화면에서 `검색 결과`, `문형석`, `IS3` 노출을 확인하는 검증을 추가했다. +- 검증: + - Android emulator integration test에서 실제 API 로그인 후 `직원검색`, `검색 결과`, `문형석`, `IS3`가 노출되는 것을 확인했다. + - 결과적으로 홈화면 직원목록 노출 목표를 당일 기준 달성했다. +- 후속: + - 조직도 탭 표현과 정렬/요약 표시의 세부 UX 검토는 다음 작업 후보로 남는다. + +## 이슈 5. 다음 출근 시 기동 확인 및 복구 절차 필요 + +- 배경: + - 퇴근 시 VS Code, 터미널, Android emulator를 모두 종료하면 다음 출근 시 어떤 순서로 기동 확인과 복구를 해야 하는지 빠르게 참고할 문서가 필요하다. +- 처리: + - `docs/checklist_morning_startup_runtime_2026-07-03.md` 문서를 추가했다. +- 포함 내용: + - Baron runtime 확인 + - API smoke 확인 + - Android emulator/device 인식 확인 + - integration test 실행 + - 실패 시 복구 순서 +- 후속: + - 실제 다음 출근 시 이 문서로 재개하면서 부족한 부분이 있으면 보완한다. diff --git a/docs/daily-issues/2026-07-14_work_handoff.md b/docs/daily-issues/2026-07-14_work_handoff.md new file mode 100644 index 0000000..3ff6580 --- /dev/null +++ b/docs/daily-issues/2026-07-14_work_handoff.md @@ -0,0 +1,193 @@ +# 2026-07-14 업무 인계 메모 + +작성 시각: 2026-07-14 16:54 KST + +## 오늘 최종 상태 + +- 실기기 로그인 흐름은 Baron SSO 공식 정책에 맞춰 동작 확인했다. +- 사용자는 앱에서 전화번호 입력 후 문자 링크를 받는다. +- 문자 링크를 누르면 Chrome에서 Baron SSO 승인 완료 화면에 머문다. +- 사용자가 직접 TDC114PLUS 앱으로 돌아오면 앱이 저장된 pendingRef로 poll을 재개하고 직원검색 메인 화면에 진입한다. +- Baron SSO 정책상 문자 링크 클릭 후 Chrome이 자동으로 앱으로 돌아오는 기능은 현재 지원되지 않는다. +- 직원검색 화면의 직원/조직 정보 호출은 `tdc114plus-auth` 5001 서버의 `/api/v1/integrations/org-context`를 사용한다. +- 실기기에서 직원목록 표시 확인 완료: + - IS3 중복 뱃지 제거 확인 + - 전화번호 `010-0000-0000` 형식 표시 확인 + - 직원목록 표시 확인 + +## 오늘 발생한 주요 이슈 + +### 1. 로그인 승인 후 앱 복귀 UX + +현상: +- 문자 링크 클릭 후 Chrome의 `로그인 승인 완료` 화면에 머물렀다. +- 사용자가 `로그인 창으로 이동하기` 버튼을 누르면 Baron SSO 로그인창/대시보드 흐름으로 이동해 앱 메인 진입 흐름과 맞지 않았다. + +확인된 정책: +- Baron SSO 개발자 답변 기준, `/api/v1/auth/headless/link/init`에는 post-verify redirect 필드가 없다. +- SMS 링크를 누른 브라우저는 verify-only approver로 동작한다. +- 승인 완료 후 브라우저가 앱 callback/App Link로 자동 이동하는 정책은 없다. + +현재 대응: +- 앱 문구를 “문자 승인 후 앱으로 돌아오면 자동 로그인됩니다” 흐름으로 맞췄다. +- 앱 복귀 시 저장된 pendingRef로 poll을 재개하도록 처리했다. + +내일 확인할 것: +- 사용자가 앱 복귀 시 즉시 메인으로 들어가는지 반복 테스트한다. +- 자동 앱 복귀가 꼭 필요하면 Baron SSO 쪽 정책/기능 추가 요청 사안으로 분리한다. + +### 2. `auth_provider_unavailable` + +현상: +- 로그인 화면에서 `승인 상태 확인 실패: auth_provider_unavailable` 발생. + +원인: +- 5001 `tdc114plus-auth` 서버가 Baron SSO `link/poll` 완료 후 OIDC redirect/consent/token exchange를 처리하는 구간에서 실패할 수 있었다. +- 이후 서버를 최신 소스 기준으로 재기동하고 로그를 직접 확인했다. + +확인 로그: +- `link/init` 성공 +- `link/poll` pending 반복 +- `link/poll status=ok` +- `/consent` redirect 감지 +- consent accept 성공 +- callback URL에 code 포함 +- token exchange 성공 + +결론: +- 최신 `tdc114plus-auth` 소스와 올바른 환경값으로 실행하면 login -> poll -> consent -> token exchange는 정상 동작한다. + +### 3. 직원검색 화면 로딩 지속 + +현상: +- 직원검색 화면에 진입했지만 중앙 로딩만 표시되고 직원목록이 나오지 않았다. + +확인: +- 5001 서버 로그에 `GET /api/v1/integrations/org-context`가 여러 번 찍혔다. +- 즉 앱이 직원/조직 API를 호출하지 않은 것이 아니라, 호출은 하고 있었다. + +원인: +- 5001 auth 서버를 수동 재기동하면서 조직도 연동 키 환경값을 빠뜨렸다. +- 누락된 값: + - `BARON_ORG_CONTEXT_KEY_ID` + - `BARON_ORG_CONTEXT_KEY_SECRET` + +조치: +- `scripts/.env.android-device.local`에 있는 값을 기준으로 5001 서버를 기동하도록 자동화했다. +- 새 스크립트 추가: + - `scripts/start-auth-server.sh` +- `scripts/startup.sh`에서 업무시작 시 `start-auth-server.sh --restart`를 자동 호출하도록 연결했다. +- `scripts/shutdown.sh`에서 5001 auth 서버도 종료하도록 연결했다. +- `scripts/.env.android-device.local`, staging env 파일 권한을 `600`으로 조정했다. + +검증: + +```bash +./scripts/start-auth-server.sh --restart +curl -fsSL --max-time 5 http://127.0.0.1:5001/health +``` + +응답: + +```json +{"jwks":"ok","provider":"baron","status":"ok"} +``` + +실기기 화면: +- 직원검색 화면에서 직원목록 정상 표시 확인. + +## 내일 업무 시작 순서 + +1. Windows 관리자 PowerShell에서 ADB portproxy/방화벽 상태 확인이 필요하면 기존 절차대로 확인한다. +2. Windows 일반 PowerShell에서 실기기 ADB 연결 확인: + +```powershell +cd $env:LOCALAPPDATA\Android\Sdk\platform-tools +.\adb.exe devices +``` + +3. WSL에서 업무시작 기동: + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/startup.sh --auto --wait=40 +``` + +4. 5001 auth 서버 확인: + +```bash +curl -fsSL --max-time 5 http://127.0.0.1:5001/health +``` + +정상 기준: + +```json +{"jwks":"ok","provider":"baron","status":"ok"} +``` + +5. 실기기 reverse 확인: + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list +``` + +필수: + +```text +tcp:5000 tcp:5000 +tcp:5001 tcp:5001 +``` + +6. 앱 실행 후 확인: + - 로그인 세션이 남아 있으면 직원검색 화면 진입 + - 직원목록이 바로 표시되는지 확인 + - 로딩이 지속되면 5001 로그 확인 + +```bash +tail -n 120 logs/$(date +%F)/tdc114plus-auth.log +``` + +## 내일 우선 점검할 항목 + +- `startup.sh`가 `start-auth-server.sh --restart`를 정상 호출하는지 확인한다. +- 직원검색 화면 진입 시 `GET /api/v1/integrations/org-context`가 5001 로그에 찍히는지 확인한다. +- 직원목록 로딩이 다시 멈추면 가장 먼저 아래를 확인한다: + - 5001 health + - `scripts/.env.android-device.local` 존재 여부 + - `TDC114_BARON_KEY_ID`, `TDC114_BARON_KEY_SECRET` 값 누락 여부 + - adb reverse `tcp:5001 tcp:5001` + +## 오늘 변경된 주요 파일 + +- `scripts/start-auth-server.sh` + - 5001 `tdc114plus-auth` 로컬 서버 기동 스크립트. + - `scripts/.env.android-device.local`에서 조직도 키를 읽어 `BARON_ORG_CONTEXT_*`로 주입한다. + +- `scripts/startup.sh` + - 업무시작 기동 시 `tdc114plus-auth` 5001 서버를 자동 기동하도록 연결. + +- `scripts/shutdown.sh` + - 업무종료 시 5001 auth 서버도 종료하도록 연결. + +- `app/lib/src/features/auth/presentation/login_screen.dart` + - 문자 승인 후 앱 복귀 안내 문구 반영. + - pendingRef 복원/poll 오류 표시 개선. + +- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` + - Baron SSO 공식 verify-only 정책과 앱 복귀 방식 반영. + +## 주의 사항 + +- `scripts/.env.android-device.local`에는 실제 연동 키가 들어 있으므로 외부 공유 금지. +- 내일 APK를 다시 빌드할 때는 반드시 auth base define을 포함한다. + +```bash +./scripts/flutter-docker.sh build apk --debug \ + --dart-define=TDC114_API_BASE=http://127.0.0.1:5000 \ + --dart-define=TDC114_AUTH_API_BASE=http://127.0.0.1:5001 \ + --dart-define=TDC114_DIRECTORY_API_BASE=http://127.0.0.1:5000 \ + --dart-define=TDC114_ORGANIZATION_API_BASE=http://127.0.0.1:5000 \ + --dart-define=TDC114_ORG_CONTEXT_API_BASE=http://127.0.0.1:5001 +``` + +- 직원검색의 실제 직원/조직 조회는 현재 5001 auth broker를 통해 `/api/v1/integrations/org-context`로 간다. +- 5000의 예전 `/api/v1/tdc114plus/employees` 류 경로는 현재 직원검색의 주 경로가 아니다. diff --git a/docs/daily-issues/2026-07-15_work_handoff.md b/docs/daily-issues/2026-07-15_work_handoff.md new file mode 100644 index 0000000..a342ff9 --- /dev/null +++ b/docs/daily-issues/2026-07-15_work_handoff.md @@ -0,0 +1,189 @@ +# 2026-07-15 업무 인계 메모 + +작성 시각: 2026-07-15 KST + +## 오늘 최종 상태 + +- 실기기 직원검색 화면에서 실제 프로필 사진 노출을 확인했다. +- 현재 프로필 이미지 정책은 아래 순서로 정리된 상태다. + 1. 네이버웍스 프로필 사진 + 2. Baron SSO `members[].id` 기준 UUID 파일명 이미지 + 3. 앱 기본 아바타 +- `tdc114plus-auth`의 `GET /api/v1/profile-image`는 `NAVER_WORKS -> BARON_UUID_R2 -> DEFAULT` 순서로 동작하도록 정리했다. +- 앱은 `GET /api/v1/profile-image`를 우선 호출하고, 응답 실패 또는 미발견 시 `https://baroncs.co.kr/employee_img/{uuid}.jpg` 경로를 보조 fallback으로 사용하도록 보강했다. +- 실기기 캡처 기준으로 직원목록의 여러 사용자가 기본 이니셜 원이 아니라 실제 사진으로 표시되는 것을 확인했다. + +## 오늘 진행한 핵심 작업 + +### 1. 네이버웍스 1순위 경로 실검증 + +확인 내용: + +- 서비스 계정 자격값을 최신값으로 다시 반영했다. +- 토큰 발급이 실제로 성공하는지 재검증했다. +- `GET /users/{userId}` 와 `GET /users/{userId}/photo`를 실제 호출해 `302`, `404` 동작을 다시 확인했다. + +확인 결과: + +- `thlee3@samaneng.com` + - 프로필 조회 `HTTP 200` + - 사진 조회 `HTTP 302` +- `khkang@samaneng.com` + - 프로필 조회 `HTTP 200` + - 사진 조회 `HTTP 404` + +의미: + +- 네이버웍스 사진이 있는 사용자는 1순위 경로로 바로 쓸 수 있다. +- 네이버웍스 사진이 없는 사용자는 2순위 UUID 이미지로 내려가면 된다. + +### 2. Baron UUID 기반 2순위 경로 재확정 + +확인 내용: + +- `org-context` 실응답의 `members[].id`가 실제 UUID 형식인지 다시 확인했다. +- 기존 CSV와 가족사 전체 응답을 대조한 매핑 결과를 기준으로 UUID 파일명 정책을 유지하기로 정리했다. +- 외부 공개 경로는 `https://baroncs.co.kr/employee_img/{uuid}.jpg` 규칙으로 본다. + +현재 판단: + +- 2순위 식별자는 이메일 local-part나 해시명이 아니라 Baron UUID로 보는 것이 가장 안정적이다. +- 프로필 이미지 전용 DB는 운영 기본안으로 채택하지 않고 보류 대안으로만 남긴다. + +### 3. `tdc114plus-auth` 프로필 이미지 endpoint 보강 + +오늘 반영한 내용: + +- `GET /api/v1/profile-image`에 네이버웍스 1순위 조회를 연결했다. +- 네이버웍스에서 사진이 없으면 Baron UUID 기준 공개 이미지 경로를 2순위로 판단하게 정리했다. +- 기존 PostgreSQL 매핑 경로는 최후 예비안 수준으로만 남겼다. + +실검증 결과: + +- `GET /api/v1/profile-image?email=thlee3@samaneng.com` + - `found=true` + - `source=NAVER_WORKS` +- `GET /api/v1/profile-image?email=khkang@samaneng.com` + - `found=true` + - `source=BARON_UUID_R2` + +의미: + +- 서버 레벨에서는 1순위/2순위 fallback이 실제 응답으로 이미 확인된 상태다. + +### 4. 앱 프로필 이미지 resolver 보강 + +오늘 반영한 내용: + +- 앱은 다시 `tdc114plus-auth /api/v1/profile-image`를 우선 호출하도록 정리했다. +- 응답 실패, 미발견, 또는 세션 문제 상황에서는 UUID 형식 `employee.id`가 있으면 공개 UUID 이미지 경로를 직접 fallback 하도록 보강했다. +- 관련 단위 테스트를 추가하고 통과시켰다. + +테스트 결과: + +- `app/test/directory/profile_image_api_client_test.dart` + - auth endpoint 경유 성공 + - 이메일 없음 시 기본 null 처리 + - auth 미발견 시 UUID 공개 경로 fallback + - 테스트 통과 확인 + +### 5. 실기기 반영 및 화면 확인 + +실행 내용: + +- auth 서버 기동 상태 확인 +- APK 빌드 및 실기기 설치 +- 공기계에서 직원검색 화면 재진입 +- 실기기 화면 캡처로 실제 사진 표시 여부 확인 + +최종 확인: + +- 직원검색 목록에서 여러 사용자 사진이 실제로 표시됨 +- 오늘 목표였던 “실기기에서 사진 뜨는지 확인”은 완료 + +## 오늘 발생한 보조 이슈 + +### 1. 실기기 재실행 중 bootstrap 일시 실패 + +현상: + +- 일부 재실행 구간에서 `127.0.0.1:5000` bootstrap 연결 실패 메시지가 한 차례 있었다. + +현재 판단: + +- 이후 권한 포함 재실행에서는 정상 bootstrap 후 앱이 다시 올라왔다. +- 오늘 최종 결과는 실기기 사진 표시 성공으로 본다. + +### 2. Docker/ADB 권한 및 대기 시간 이슈 + +현상: + +- 일부 재실행 또는 조회 명령은 Docker 권한/ADB 응답 지연 때문에 중간 확인이 매끄럽지 않았다. + +현재 판단: + +- 기능 자체의 blocker는 아니었다. +- 최종적으로 실기기 캡처까지 확보했으므로 오늘 작업 결론에는 영향 없다. + +## 오늘 변경 및 반영한 주요 파일 + +- `app/lib/src/features/directory/data/profile_image_api_client.dart` + - auth endpoint 우선 호출 + - UUID 직접 fallback 추가 + - debug 로그 보강 + +- `app/test/directory/profile_image_api_client_test.dart` + - UUID fallback 관련 테스트 추가 + +- `scripts/start-auth-server.sh` + - 네이버웍스 env를 함께 읽어 auth 서버 기동 시 반영되도록 정리 + +- `docs/00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md` + - 오늘 실검증 결과와 실기기 성공 결과 반영 + +- `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` + - 오늘 진행 상태와 다음 검증 포인트 반영 + +## 내일 바로 이어서 볼 항목 + +1. 현재 화면에 뜬 각 프로필 사진이 `NAVER_WORKS`인지 `BARON_UUID_R2`인지 source별로 구분 검증한다. +2. 직원검색뿐 아니라 직원 상세/조직도 화면에서도 같은 규칙으로 사진이 표시되는지 확인한다. +3. `DEFAULT` 케이스도 샘플로 잡아 기본 아바타 fallback이 자연스러운지 확인한다. +4. 필요 시 프로필 이미지 관련 debug 로그를 더 짧게 정리하거나 제거한다. + +## 내일 업무 시작 순서 + +1. auth 서버 상태 확인 + +```bash +curl -fsSL --max-time 5 http://127.0.0.1:5001/health +``` + +2. 실기기 reverse 상태 확인 + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list +``` + +3. 필요 시 auth 서버 재기동 + +```bash +./scripts/start-auth-server.sh --restart --env-file=/home/ubuntu/workspace/tdc114plus/scripts/.env.android-device.local +``` + +4. 필요 시 실기기 앱 재실행 + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 TDC114_FLUTTER_DEVICE_ID=R5CT42QTCNX TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local ./scripts/manual-postlogin-run.sh +``` + +5. 첫 확인 포인트 + - 직원검색 목록 진입 + - 사진이 계속 노출되는지 확인 + - source별 구분 검증 대상으로 사용자 샘플 확보 + +## 오늘 결론 + +- 오늘 작업의 핵심 목표였던 “실기기에서 프로필 사진이 실제로 뜨는지 확인”은 완료했다. +- 현재 구조는 `네이버웍스 -> Baron UUID 이미지 -> 기본 아바타` 정책과 실제 코드/실기기 화면이 서로 맞물리는 상태다. +- 내일은 새로운 구현보다, 오늘 붙인 구조를 source별로 더 명확히 검증하고 화면 범위를 넓히는 단계로 이어가면 된다. diff --git a/docs/daily-issues/2026-07-16_morning_start_checklist.md b/docs/daily-issues/2026-07-16_morning_start_checklist.md new file mode 100644 index 0000000..1622c21 --- /dev/null +++ b/docs/daily-issues/2026-07-16_morning_start_checklist.md @@ -0,0 +1,83 @@ +# 2026-07-16 아침 시작 체크리스트 + +목적: 오늘 작업을 바로 이어가기 위해, 가장 먼저 확인할 항목만 짧게 정리한다. + +## 1. 먼저 볼 기준 + +- 현재 프로필 이미지 정책: + 1. 네이버웍스 + 2. Baron UUID 이미지 + 3. 기본 아바타 +- 전날 최종 상태: + - 실기기 직원검색 화면에서 실제 프로필 사진 노출 확인 완료 + - 앱은 `tdc114plus-auth /api/v1/profile-image` 우선 호출 + - 실패 또는 미발견 시 `https://baroncs.co.kr/employee_img/{uuid}.jpg` fallback 사용 + +## 2. 아침 시작 순서 + +### 1) auth 서버 상태 확인 + +```bash +curl -fsSL --max-time 5 http://127.0.0.1:5001/health +``` + +정상 기준: + +```json +{"jwks":"ok","provider":"baron","status":"ok"} +``` + +### 2) reverse 상태 확인 + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list +``` + +필수 확인: + +```text +tcp:5000 tcp:5000 +tcp:5001 tcp:5001 +``` + +### 3) 필요 시 auth 서버 재기동 + +```bash +./scripts/start-auth-server.sh --restart --env-file=/home/ubuntu/workspace/tdc114plus/scripts/.env.android-device.local +``` + +### 4) 필요 시 실기기 앱 재실행 + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 TDC114_FLUTTER_DEVICE_ID=R5CT42QTCNX TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local ./scripts/manual-postlogin-run.sh +``` + +## 3. 첫 확인 포인트 + +- 직원검색 목록 진입되는가 +- 사진이 계속 표시되는가 +- 어떤 사용자가 `NAVER_WORKS`인지, 어떤 사용자가 `BARON_UUID_R2`인지 샘플을 잡을 수 있는가 + +## 4. 오늘 바로 이어서 할 일 + +1. 실기기 기준 `NAVER_WORKS` 케이스 확인 +2. 실기기 기준 `BARON_UUID_R2` 케이스 확인 +3. `DEFAULT` 기본 아바타 케이스 확인 +4. 직원 상세/조직도 화면에서도 같은 규칙 유지 확인 + +## 5. 문제 생기면 먼저 볼 것 + +- `5001 health` 정상 여부 +- `adb reverse`에 `5000`, `5001` 둘 다 있는지 +- `scripts/.env.android-device.local` 경로와 값 누락 여부 +- 필요 시 auth 로그 확인 + +```bash +tail -n 120 logs/$(date +%F)/tdc114plus-auth.log +``` + +## 6. 참고 문서 + +- [2026-07-15_work_handoff.md](/home/ubuntu/workspace/tdc114plus/docs/daily-issues/2026-07-15_work_handoff.md) +- [00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md](/home/ubuntu/workspace/tdc114plus/docs/00_guide_tdc114plus_profile_image_identifier_mapping_2026-07-14.md) +- [00_guide_tdc114plus_work_progress_timetable_2026-07-02.md](/home/ubuntu/workspace/tdc114plus/docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md) diff --git a/docs/daily-issues/2026-07-16_work_handoff.md b/docs/daily-issues/2026-07-16_work_handoff.md new file mode 100644 index 0000000..8ca108b --- /dev/null +++ b/docs/daily-issues/2026-07-16_work_handoff.md @@ -0,0 +1,224 @@ +# 2026-07-16 업무 인계 메모 + +작성 시각: 2026-07-16 KST + +## 오늘 최종 상태 + +- 실기기 로그인은 다시 정상 진행됐다. +- 문자 링크 승인 후 앱 복귀 시 직원검색 목록이 다시 표시되는 것까지 확인했다. +- 오늘 최종 복구 기준은 `로그인 성공 -> 직원검색 목록 표시 성공`이다. +- 다만 프로필 사진 1순위/2순위/3순위 화면 검증은 아직 오늘 완료 범위에 포함하지 않는다. + +## 오늘 발생한 주요 이슈와 원인 + +### 1. 로그인 후 직원검색이 다시 무너지는 문제 + +현상: + +- 로그인 링크 발송은 되지만 앱 진입 후 직원검색 화면이 비거나 로딩만 지속됐다. +- 잠시 후 `로그인이 만료되었거나 권한을 확인할 수 없습니다.` 화면으로 떨어졌다. + +중간에 확인한 사실: + +- 앱 SharedPreferences 안에는 세션 토큰이 실제로 저장되고 있었다. +- 저장된 토큰은 Baron access token이 아니라 `tdc114plus-auth`가 발급한 app session token 형식이었다. +- 저장된 user 정보는 아래처럼 fallback 값이었다. + - `id = baron-user` + - `name = Baron User` + - `tenantSlug = ""` + +의미: + +- 세션 토큰이 전혀 저장되지 않는 문제는 아니었다. +- 다만 user 메타데이터는 충분하지 않았고, 동시에 org-context 중계 경로도 깨져 있었다. + +### 2. 핵심 장애 원인: 5001 auth broker의 org-context self-recursion + +현상: + +- `tdc114plus-auth` 로그에 `/api/v1/integrations/org-context` 요청이 들어온 뒤, + 같은 5001 서버가 다시 자기 자신의 `/api/v1/integrations/org-context`를 호출하는 패턴이 반복됐다. +- 내부 재호출 요청에는 `Authorization`, `X-App-Session` 헤더가 없어서 결국 unauthorized 흐름으로 무너졌다. + +실제 확인값: + +- 실행 중인 5001 프로세스 환경변수에서 아래를 직접 확인했다. + +```text +BARON_ORG_CONTEXT_BASE_URL=http://127.0.0.1:5001 +``` + +즉: + +- 원래 의도는 `https://sadmin.hmac.kr`를 upstream으로 호출해야 하는데, +- 실제 실행 중 프로세스는 자기 자신 `http://127.0.0.1:5001`을 upstream으로 잡고 있었다. + +근본 원인: + +- `scripts/start-auth-server.sh`가 + `TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE` 값을 env 파일 `source` 전에 먼저 읽고 있었다. +- 그래서 `scripts/.env.android-device.local` 안에 + `TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr` + 가 있어도 반영되지 않았다. +- 그 결과 fallback으로 `TDC114_ORG_CONTEXT_API_BASE=http://127.0.0.1:5001`를 사용하면서 self-recursion이 발생했다. + +### 3. 오늘 복구 조치 + +수정 파일: + +- `scripts/start-auth-server.sh` + +수정 내용: + +- `UPSTREAM_ORG_CONTEXT_BASE` 읽는 위치를 env 파일 `source` 뒤로 옮겼다. +- 이후 5001 auth broker를 재기동했다. + +재기동 후 직접 확인한 실행 환경: + +```text +PORT=5001 +APP_SESSION_SECRET=tdc114plus-dev-session +BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr +BARON_ORG_CONTEXT_TENANT_SLUG=hanmac-family +``` + +결과: + +- self-recursion 원인이 제거됐다. +- 다시 로그인 후 실기기 직원검색 목록이 정상 표시됐다. + +## 오늘 추가로 확인한 기술 메모 + +### 1. `baron-user / Baron User` 생성 위치 + +파일: + +- `/home/ubuntu/workspace/tdc114plus-auth/cmd/server/main.go` + +확인 내용: + +- `link/poll` 완료 후 `poll.User`에 값이 없을 때 fallback으로 아래 값이 채워진다. + - `baron-user` + - `Baron User` + +현재 판단: + +- 이 값은 오늘 새로 생긴 회귀가 아니라 기존 구조였다. +- 오늘의 실장애 원인은 이것 자체보다 `org-context upstream 오배선`이었다. + +### 2. `tenantSlug` 누락 구조는 후속 개선 대상 + +현재 확인 결과: + +- `tdc114plus-auth`의 `link/poll` 응답 user 모델에는 `tenantSlug`, `tenantId`, `tenantName`이 없다. +- 앱은 세션 user의 `tenantSlug`가 비어 있으면 후속 조직도/초기 선택 계산에서 fallback을 더 많이 타게 된다. + +중요 판단: + +- 오늘 직원검색이 완전히 무너진 직접 원인은 self-recursion이었다. +- 하지만 `tenantSlug` 누락 구조는 다음 작업에서 별도로 정리해야 한다. + +## 오늘 수정/추가한 파일 + +- `scripts/start-auth-server.sh` + - org-context upstream env 읽는 순서를 수정했다. + +- `app/lib/src/core/config/app_environment.dart` + - 빌드 시각 define 표시용 항목을 유지했다. + +- `app/lib/src/features/auth/presentation/login_screen.dart` + - 실기기에서 최신 APK 식별을 위해 빌드 시각 표시를 유지했다. + +## 확인 완료한 테스트 + +1. 5001 health 확인 + +```bash +curl -i --max-time 5 http://127.0.0.1:5001/health +``` + +결과: + +```json +{"jwks":"ok","provider":"baron","status":"ok"} +``` + +2. 실행 중 5001 프로세스 환경변수 확인 + +- `BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr` 반영 확인 + +3. 실기기 세션 저장 확인 + +- SharedPreferences 안에 app session token 저장 확인 +- user fallback 값 저장 확인 + +4. 실기기 재로그인 후 직원검색 확인 + +- 문자 링크 승인 성공 +- 앱 복귀 성공 +- 직원검색 목록 표시 성공 + +## 내일 업무 시작 순서 + +1. 전일 인계 문서 먼저 확인 + +- `docs/daily-issues/2026-07-16_work_handoff.md` + +2. 5001 auth broker health 확인 + +```bash +curl -fsSL --max-time 5 http://127.0.0.1:5001/health +``` + +3. 실행 중 5001 프로세스 upstream 값 확인 + +```bash +ss -ltnp '( sport = :5001 )' +tr '\0' '\n' < /proc//environ | rg 'BARON_ORG_CONTEXT_BASE_URL|BARON_ORG_CONTEXT_TENANT_SLUG' +``` + +정상 기준: + +```text +BARON_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr +BARON_ORG_CONTEXT_TENANT_SLUG=hanmac-family +``` + +4. 실기기 ADB 연결 및 reverse 확인 + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh adb -s R5CT42QTCNX reverse --list +``` + +5. 앱 재로그인 후 첫 확인 + +- 직원검색 목록이 바로 뜨는지 +- 30초 뒤에도 만료 화면으로 떨어지지 않는지 + +## 내일 우선 점검할 항목 + +1. `org-context` self-recursion이 정말 재발하지 않는지 먼저 확인한다. +2. `tenantSlug` 누락 구조를 `tdc114plus-auth` 응답 모델 기준으로 정리한다. +3. 프로필 사진 우선순위 검증을 아래 순서로 이어간다. + - NAVER_WORKS + - BARON_UUID_R2 + - DEFAULT +4. 직원검색 외에 조직도/상세/즐겨찾기 화면도 같은 세션 상태에서 유지되는지 확인한다. + +## 보안상 주의사항 + +- 아래 값들은 문서에 실제 값을 남기지 않는다. + - NAVER WORKS 서비스 계정 자격값 + - Baron org-context key id / secret + - private key 경로 및 원문 + +- `scripts/.env.android-device.local` +- `secrets/naver_works_service_account.local.env` + +위 두 파일은 계속 비공개 로컬 파일로만 유지한다. + +## 내일 첫 판단 기준 + +- 내일 첫 목표는 “또 고치는 것”이 아니라 “오늘 복구한 5001 upstream 상태가 유지되는지 먼저 검증”이다. +- 그 상태가 유지되면 사진 정책 검증으로 넘어가고, +- 유지되지 않으면 가장 먼저 `start-auth-server.sh`와 실행 중 프로세스 환경변수부터 다시 본다. diff --git a/docs/daily-issues/2026-07-20_work_handoff.md b/docs/daily-issues/2026-07-20_work_handoff.md new file mode 100644 index 0000000..adf7ca4 --- /dev/null +++ b/docs/daily-issues/2026-07-20_work_handoff.md @@ -0,0 +1,305 @@ +# 2026-07-20 업무 인계 메모 + +작성 시각: 2026-07-20 KST + +## 오늘 핵심 결론 + +- `tdc114plus` 앱과 로컬 `tdc114plus-auth:5001` 연결은 정상 확인했다. +- 실기기 `adb reverse tcp:5001 tcp:5001`도 정상 확인했다. +- 앱에서 `link/init` 호출 후 `pendingRef` 생성, 이후 `link/poll` 반복까지 서버 로그로 확인했다. +- 즉 오늘 로그인 막힘의 핵심은 `앱 <-> 로컬 중계서버` 구간이 아니라 `Baron SSO 문자 링크 실제 발송/SMS 연계 구간`으로 판단했다. + +## 오늘 확인한 최종 상태 + +### 1. 로컬 auth broker 상태 + +정상 확인값: + +```bash +curl -i --max-time 5 http://127.0.0.1:5001/health +``` + +응답: + +```json +{"jwks":"ok","provider":"baron","status":"ok"} +``` + +의미: + +- 로컬 `tdc114plus-auth` 5001은 떠 있었다. +- 최소한 health 기준으로는 죽어 있지 않았다. + +### 2. 실기기 reverse 상태 + +사용자 확인 결과: + +```text +adb reverse --list +UsbFfs tcp:5001 tcp:5001 +``` + +의미: + +- 실기기에서 `127.0.0.1:5001`로 가는 호출은 PC 로컬 5001로 붙는 상태였다. +- 따라서 실기기에서 auth broker 접속이 안 되는 상태는 아니었다. + +### 3. 앱이 실제로 5001에 요청을 보내는지 확인 + +서버 로그에서 아래를 직접 확인했다. + +```text +linkInit body={"phoneNumber":"01091365338","device":{"platform":"android","appVersion":"0.1.0","deviceName":"android"}} +``` + +그리고 이어서: + +```text +POST /api/v1/auth/link/init +POST /api/v1/auth/link/poll +``` + +반복 확인했다. + +의미: + +- 앱에서 로그인 버튼을 눌렀을 때 요청이 실제로 로컬 auth broker까지 도달했다. +- `pendingRef` 생성도 정상 진행됐다. + +### 4. 앱 내부 pending 상태 저장 확인 + +실기기 SharedPreferences에서 아래 항목을 직접 확인했다. + +- `flutter.tdc114plus.auth.pending.ref` +- `flutter.tdc114plus.auth.pending.expiresAt` + +의미: + +- 앱이 로그인 요청 직후 pending 상태를 저장하지 못하는 문제는 아니었다. +- 앱 내부 상태 저장까지는 정상으로 봐도 된다. + +## 오늘 발생한 실제 장애 + +현상: + +- 앱에서는 `승인 대기 중` 화면으로 넘어간다. +- 하지만 사용자 휴대폰에는 실제 문자 링크가 도착하지 않는다. +- 재전송 시도 후에도 동일하다. + +중요 판단: + +- 앱 요청 실패 아님 +- 로컬 auth broker 연결 실패 아님 +- `adb reverse` 누락 문제 아님 +- 현재 가장 의심되는 구간은 Baron SSO 쪽 `문자 링크 실제 발송 처리` 또는 그 뒤 SMS 연계 구간이다. + +## 오늘 중간에 있었던 혼선 정리 + +### 1. `auth_provider_unavailable` + +한 시점에는 앱에 아래 문구가 보였다. + +```text +로그인 링크 요청 실패: auth_provider_unavailable +``` + +이때 직접 확인한 사실: + +- 같은 시각 `sso.hmac.kr /oidc/oauth2/auth`가 `502 Bad Gateway`를 반환하던 구간이 있었다. +- 이후 재확인 시 다시 `302 Location: /login?login_challenge=...`로 정상 응답했다. + +의미: + +- Baron SSO upstream authorization 시작점이 한때 불안정했다. +- 하지만 이후 복구된 뒤에도 최종적으로는 `문자 미수신` 문제가 남았다. + +### 2. callback URL 혼선 + +아래 주소는 현재 직접 열면 `404 page not found`가 보인다. + +```text +https://114-auth.hmac.kr/api/v1/auth/oidc/callback +``` + +정리: + +- 이 URL은 브라우저에서 직접 여는 진입 URL이 아니라 OIDC 최종 code 수신용 callback 경로다. +- 현재 `문자 미수신` 문제의 직접 원인으로 확정한 상태는 아니다. +- 다만 라우트 정합성은 후속 점검 대상으로 계속 유지한다. + +## 오늘 외부 전달용 요약 + +Baron SSO 개발자에게 전달할 핵심은 아래였다. + +```text +- 신규앱 -> 로컬 tdc114plus-auth(5001) 요청 정상 +- adb reverse 정상 +- auth 서버 로그상 link/init, pendingRef 생성, link/poll 반복 정상 +- 그런데 실제 문자 링크가 사용자 휴대폰에 도착하지 않음 +- 따라서 Baron SSO 쪽 문자 링크 실제 발송 처리 또는 SMS 연계 구간 확인 필요 +``` + +## 오늘 기준 남아 있는 작업 + +### 1. 문자 미수신 이슈 답변 대기 + +- Baron SSO 개발자 확인 결과를 받아야 한다. +- 그 전까지는 앱/로컬 중계서버 쪽에서 더 고쳐도 문자 미수신 문제를 끝낼 수 없다. + +### 2. 프로필 사진 route 상태 정리 + +현재 확인 상태: + +- 앱은 `/api/v1/profile-image`를 먼저 시도한다. +- 하지만 현재 5001 서버는 해당 route에 `404`를 반환한다. + +의미: + +- 사진 1순위/2순위/3순위 실기기 검증은 아직 시작 조건이 완전히 갖춰지지 않았다. + +### 3. 로그인 화면 상태 문구 정리 + +관찰된 화면: + +- 실패 문구 +- 승인 대기 박스 +- 재전송 카운트 + +이 조합이 시점별로 다르게 보였다. + +후속 과제: + +- 요청 시작 시 이전 에러 문구를 항상 지우는지 +- pending 복원 시 에러 상태를 같이 끌고 오지 않는지 +- 문자 미수신과는 별개로 화면 상태 표현이 꼬이지 않는지 + +## 외부 답변 대기 중 내부 진행 순서 + +문자 발송 구간 답변이 오기 전에도 아래 순서로는 내부 작업을 진행할 수 있다. + +1. `tdc114plus-auth` 응답 메타데이터 정합성 재확인 + - `tenantSlug`, `tenantId`, `tenantName`, `department`, `grade`, `position`, `jobTitle` + - 앱이 실제로 어떤 필드를 저장하고 소비하는지 확인 + +2. 로그인 화면 상태 표현 정리 + - `실패 문구`와 `승인 대기 UI`가 동시에 남지 않도록 정리 + - pending 복원 시 문구 초기화 조건 확인 + +3. `/api/v1/profile-image` route 복구 준비 + - 현재 앱 호출 형식 고정 + - auth 서버 route 부재 상태 문서화 + - 복구 시 필요한 응답 형태 확정 + +4. 프로필 사진 검증 대상 사용자 표 준비 + - NAVER WORKS 1순위 예상 사용자 + - UUID 이미지 2순위 예상 사용자 + - DEFAULT 3순위 예상 사용자 + +5. `baron-sso-tdc114plus-api` 제거 마이그레이션 표 세분화 + - 남은 기능이 진짜 필요한지 + - `tdc114plus-auth`에 흡수할지 + - 완전히 제거할지 분류 + +## 2026-07-20 메타데이터 정합성 재확인 결과 + +확인 결과: + +- `tdc114plus-auth`가 내보내는 사용자 메타데이터 JSON 키와 +- `tdc114plus` 앱이 저장/사용하는 JSON 키는 현재 서로 맞는다. + +확인한 키: + +- `tenantId` +- `tenantName` +- `tenantSlug` +- `department` +- `grade` +- `position` +- `jobTitle` + +정리: + +1. 중계서버 출력 + - `tdc114plus-auth/cmd/server/main.go` + - `readUser(...)`가 위 항목들을 읽는다. + - `issueAppSessionToken(...)`가 같은 키명으로 JWT `user` 클레임에 넣는다. + +2. 앱 수신/저장 + - `app/lib/src/features/auth/domain/auth_models.dart` + - `LoginUser.fromJson(...)`가 같은 키명으로 파싱한다. + - `app/lib/src/features/auth/data/auth_session_store.dart` + - 세션 저장 시 `response.user.toJson()` 그대로 SharedPreferences에 저장한다. + +3. 앱 소비 위치 + - `app/lib/src/features/directory/presentation/directory_screen.dart` + - `tenantSlug`가 있으면 초기 회사 선택에 바로 사용한다. + - `tenantSlug`가 비어 있으면 조직도 조회 fallback으로 현재 사용자 소속을 다시 찾는다. + - `department`가 있으면 초기 부서 고정에도 바로 사용한다. + - `profile_image_api_client.dart`에서도 `tenantSlug`/`tenantName`를 회사코드 추정에 사용한다. + +현재 판단: + +- 구조적 키 mismatch 문제는 아니다. +- 진짜 남은 위험은 `Baron upstream 응답에서 값이 비어 들어오는 경우`다. +- 특히 `tenantSlug`가 비면 앱은 fallback으로 버티지만, 초기 선택과 사진 1차 lookup 정확도는 떨어질 수 있다. + +## 2026-07-20 프로필 사진 검증 대상 표 + +현재 문서와 과거 실검증 이력을 기준으로, source별 우선 확인 대상은 아래처럼 정리한다. + +| 우선순위 | 예상 source | 사용자 | 근거 | 현재 상태 | +| --- | --- | --- | --- | --- | +| 1순위 | `NAVER_WORKS` | `thlee3@samaneng.com` | 2026-07-15 네이버웍스 사진 조회 `HTTP 302` 확인 이력 | route 복구 후 실기기 재검증 필요 | +| 2순위 | `BARON_UUID_R2` | `khkang@samaneng.com` | 2026-07-15 네이버웍스 사진 조회 `HTTP 404`, UUID 공개 이미지 fallback 이력 | route 복구 후 실기기 재검증 필요 | +| 3순위 | `DEFAULT` | 미확정 | 실제 운영 사용자 중 `네이버웍스 없음 + UUID 이미지 없음` 샘플을 아직 확정하지 못함 | 샘플 대상 추가 선정 필요 | + +현재 판단: + +- 1순위와 2순위는 과거 실검증 이력이 있는 샘플이 이미 있다. +- 3순위는 억지로 추정하지 말고, route 복구 후 실제 미보유 샘플을 한 명 확정하는 것이 안전하다. + +## 2026-07-20 `/api/v1/profile-image` 복구 진행 결과 + +이번 복구에서 반영한 범위: + +- `tdc114plus-auth`에 `GET /api/v1/profile-image` route를 다시 등록했다. +- 현재 복구 로직은 아래 순서로 동작한다. + 1. `NAVER_WORKS` + 2. `BARON_UUID_R2` + 3. `DEFAULT` + +구체 복구 내용: + +- 네이버웍스 서비스 계정 env가 있으면 `GET /users/{email}/photo`의 `302/404` 규칙을 사용한다. +- 네이버웍스에서 사진이 없으면 `org-context`에서 email 기준 Baron UUID를 찾는다. +- UUID가 있으면 `https://baroncs.co.kr/employee_img/{uuid}.jpg` 공개 경로 존재 여부를 확인한다. +- 둘 다 없으면 `found=false`, `source=DEFAULT`를 반환한다. + +검증 결과: + +- `go test ./cmd/server` 통과 +- 로컬 5001 재기동 완료 +- 무인증 호출 기준 이전 `404 page not found`가 아니라 아래처럼 바뀐 것을 확인했다. + +```json +{"error":"unauthorized","message":"앱 세션을 확인하세요."} +``` + +현재 판단: + +- route 자체는 현재 기동 서버에 복구됐다. +- 즉 이전처럼 endpoint 자체가 없는 상태는 아니다. +- 다음 실제 확인은 `로그인된 앱 세션` 상태에서 1순위/2순위/3순위 화면 검증으로 넘어가면 된다. + +## 내일 또는 다음 작업 시작 시 우선 순서 + +1. `5001 health` 먼저 확인 +2. `adb reverse --list` 먼저 확인 +3. 앱에서 `link/init` 로그가 실제로 찍히는지 확인 +4. 문자 수신 여부를 먼저 확인 +5. 문자 미수신이면 앱 수정으로 우회하지 말고 Baron SSO 답변 상태부터 확인 +6. 문자 문제가 외부에서 정리되면 그 다음에 프로필 사진 검증으로 넘어간다 + +## 한 줄 요약 + +2026-07-20 기준 로그인 막힘의 핵심은 `앱이 요청을 못 보내는 문제`가 아니라 `요청은 정상인데 실제 문자 링크가 사용자에게 도착하지 않는 문제`다. diff --git a/docs/daily-issues/README.md b/docs/daily-issues/README.md new file mode 100644 index 0000000..6f48fdf --- /dev/null +++ b/docs/daily-issues/README.md @@ -0,0 +1,40 @@ +# Daily Handoff Policy + +## 목적 + +매일 업무 시작 시 전날 작업 흐름, 남은 이슈, 테스트 상태를 먼저 확인해서 같은 문제를 반복하지 않도록 한다. + +## 필수 규칙 + +1. 업무 시작 전 `docs/daily-issues/`의 최신 전일 작업 인계 MD 파일을 먼저 확인한다. +2. `scripts/startup.sh`는 런타임 기동 전에 최신 전일 인계 문서를 로그에 출력한다. +3. 전일 인계 문서가 없으면 기본적으로 startup을 중단한다. +4. 예외 복구 상황에서만 아래 환경값으로 강제 진행할 수 있다. + +```bash +TDC114_REQUIRE_DAILY_HANDOFF=false ./scripts/startup.sh --auto --wait=40 +``` + +## 작성 규칙 + +오늘 업무 종료 전에는 반드시 아래 내용을 포함한 MD 파일을 남긴다. + +- 오늘 최종 상태 +- 오늘 발생한 주요 이슈와 원인 +- 오늘 수정/추가한 파일 +- 확인 완료한 테스트 +- 내일 업무 시작 순서 +- 내일 우선 점검할 항목 +- 보안상 공유하면 안 되는 값 또는 주의사항 + +## 파일명 + +```text +YYYY-MM-DD_work_handoff.md +``` + +예: + +```text +2026-07-14_work_handoff.md +``` diff --git a/docs/tdc114plus-development-environment-setup-plan-2026-07-02.md b/docs/dev_env_tdc114plus_setup_plan_2026-07-02.md similarity index 85% rename from docs/tdc114plus-development-environment-setup-plan-2026-07-02.md rename to docs/dev_env_tdc114plus_setup_plan_2026-07-02.md index 102e717..1b62396 100644 --- a/docs/tdc114plus-development-environment-setup-plan-2026-07-02.md +++ b/docs/dev_env_tdc114plus_setup_plan_2026-07-02.md @@ -145,6 +145,21 @@ lib/ 6. Gitea Actions 또는 수동 빌드 절차를 정리한다. 7. 개발 중간 산출물 기준 APK 배포 방식을 결정한다. +### 3.8 Android emulator / WSL ADB 연동 기준 + +Windows Android Studio emulator를 WSL 또는 Docker 기반 Flutter CLI에서 사용할 때는 별도 ADB 연동 정책을 따른다. + +- 정책 문서: `docs/troubleshooting/policy_android_studio_wsl_adb_2026-07-03.md` +- 실행 기록: `docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md` +- 통합테스트 시나리오: `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` + +핵심 기준: + +- `adb -a -P 5037 nodaemon server`는 1차 시도만 한다. +- `10048` bind 실패가 재현되면 즉시 Windows `portproxy` 방식으로 전환한다. +- Android emulator에서 host API는 `127.0.0.1`이 아니라 `10.0.2.2`를 사용한다. +- Docker Flutter에서 Windows ADB를 사용할 때는 `ADB_SERVER_SOCKET=tcp::5037`을 명시한다. + ## 4. 작업 원칙 - 1차 개발은 전화번호부/조직도 기본 기능 완성에 집중한다. @@ -158,7 +173,7 @@ lib/ `tdc114plus` 저장소 골격이 갖춰지면 아래 문서를 복사 이관한다. -- `docs/tdc114plus-development-decision-brief-2026-07-01.md` -- `docs/tdc114plus-development-environment-setup-plan-2026-07-02.md` +- `docs/guide_tdc114plus_development_decision_brief_2026-07-01.md` +- `docs/dev_env_tdc114plus_setup_plan_2026-07-02.md` 이관 후 Baron SSO 저장소의 문서는 회의 및 초기 검토 기록으로 보존한다. diff --git a/docs/guide_baron_org_context_api_reference_2026-07-03.md b/docs/guide_baron_org_context_api_reference_2026-07-03.md new file mode 100644 index 0000000..f996dc8 --- /dev/null +++ b/docs/guide_baron_org_context_api_reference_2026-07-03.md @@ -0,0 +1,238 @@ +# Baron Org Context API 연동 참고 + +작성일: 2026-07-03 + +목적: `tdc114plus` 개발 중 Baron SSO 계열 조직/사용자 데이터를 어떤 API로 조회하는지, 인증 방식은 무엇인지, 실제 호출 예시와 응답 구조는 어떠한지 빠르게 참고할 수 있도록 정리한다. + +## 1. 결론 + +`tdc114plus`에서 참고할 Baron 조직도 API는 아래 둘 중 하나처럼 보일 수 있다. + +- 공개 공유링크 방식: `GET /api/v1/public/orgchart?token=...` +- API Key 방식: `GET /api/v1/integrations/org-context` + +실제 확인 결과, 팀에서 전달받은 값은 `public/orgchart`용 `token`이 아니라 `integrations/org-context`용 `X-Baron-Key-ID`, `X-Baron-Key-Secret` 조합이다. + +즉 현재 기준의 실제 연동 대상은 아래 API다. + +```http +GET https://sadmin.hmac.kr/api/v1/integrations/org-context +X-Baron-Key-ID: {key id} +X-Baron-Key-Secret: {key secret} +``` + +2026-07-10 기준: + +- 실제 배포 전까지 Baron SSO API 참고 기준은 staging `https://sadmin.hmac.kr/api/docs#/`다. +- Baron SSO가 로그인 성공 후 조직도 API 호출용 ID/Secret을 내려주는 기능은 아직 미개발이다. +- 앱은 향후 이 값을 받을 준비를 하되, 현재 개발/검증은 로컬 비추적 env/Dart define에 설정한 staging 고정 키 fallback으로 진행한다. + +## 2. 확인 결과 + +실제 테스트 결과: + +- `GET /api/v1/public/orgchart?token={ID}`: `401 Unauthorized` +- `GET /api/v1/public/orgchart?token={SECRET}`: `401 Unauthorized` +- 응답 body: + +```json +{ + "error": "invalid or expired share link", + "code": "invalid_session" +} +``` + +- `GET /api/v1/integrations/org-context`에 `X-Baron-Key-ID`, `X-Baron-Key-Secret` header 사용: `200 OK` + +따라서 현재 `tdc114plus`는 공유 링크 token 방식이 아니라 API Key 방식의 `org-context`를 원본 조직/사용자 데이터 소스로 본다. + +## 3. Swagger 문서 위치 + +Swagger UI: + +```text +https://sadmin.hmac.kr/api/docs#/Integrations/get_api_v1_integrations_org_context +``` + +OpenAPI YAML: + +```text +https://sadmin.hmac.kr/api/openapi.yaml +``` + +Swagger에서 직접 확인할 때는 우측 상단 `Authorize`에 아래 값을 입력한다. + +- `X-Baron-Key-ID` +- `X-Baron-Key-Secret` + +## 4. 호출 방식 + +기본 호출 예시: + +```bash +curl "https://sadmin.hmac.kr/api/v1/integrations/org-context?tenantSlug=hanmac-family&includeUsers=true&includeUserIds=true" \ + -H "X-Baron-Key-ID: {KEY_ID}" \ + -H "X-Baron-Key-Secret: {KEY_SECRET}" +``` + +주요 query parameter: + +| 이름 | 필수 | 기본값 | 설명 | +| --- | --- | --- | --- | +| `tenantSlug` | N | `hanmac-family` | 조회할 subtree root tenant slug | +| `includeUsers` | N | `true` | `false`이면 사용자 목록 없이 조직만 반환 | +| `includeUserIds` | N | `false` | `true`이면 사용자 `id`, `phone` 포함 | + +## 5. 응답 구조 + +응답 최상위 구조: + +```json +{ + "schemaVersion": "baron.org-context.v1", + "issuedAt": "2026-07-03T02:31:37Z", + "scope": { + "tenantId": "tenant-uuid", + "tenantSlug": "hanmac-family" + }, + "tree": { + "id": "tenant-uuid", + "type": "COMPANY_GROUP", + "name": "한맥가족", + "slug": "hanmac-family", + "members": [], + "children": [] + }, + "tenants": [ + { + "id": "tenant-uuid", + "type": "ORGANIZATION", + "name": "플랫폼팀", + "slug": "platform-team", + "parentId": "root-uuid", + "status": "active", + "memberCount": 3, + "members": [] + } + ] +} +``` + +사용자 필드 예시: + +```json +{ + "id": "user-uuid", + "email": "user@example.com", + "name": "홍길동", + "phone": "+821012345678", + "department": "플랫폼팀", + "grade": "책임", + "position": "팀장", + "jobTitle": "개발", + "isOwner": false, + "isLeader": true, + "isPrimary": true +} +``` + +핵심 해석: + +- `tree`: 실제 조직 트리 구조 +- `tenants`: flatten된 조직 목록 +- `members`: 각 조직에 직접 소속된 사용자 목록 +- `memberCount`: 각 조직의 직접 소속 인원 수로 해석 +- `totalMemberCount`: 응답에서 보장되는 값이 아니므로 앱에서 descendant를 포함해 계산 +- `scope.tenantSlug`: 이번 조회의 기준 루트 slug + +화면 표시 규칙: + +- 하위조직 카드의 `n명`은 `memberCount`가 아니라 앱이 계산한 `totalMemberCount`를 사용한다. +- `totalMemberCount`는 해당 조직 직접 소속 인원과 모든 하위조직 직접 소속 인원을 합산한다. +- 자식 조직이 있는 비-leaf 조직에서는 직원 목록보다 하위조직 목록을 우선 표시한다. +- 자식 조직이 없는 leaf 조직에 도달했을 때만 해당 leaf의 직접 소속 직원 목록을 표시한다. +- leaf 조직의 직접 소속 인원이 0명이면 `검색 결과 없음`이 정상일 수 있다. + +## 6. 보안 및 저장 위치 + +이 API는 query parameter가 아니라 header 인증을 사용한다. + +```http +X-Baron-Key-ID +X-Baron-Key-Secret +``` + +따라서 다음 원칙을 지킨다. + +- tracked 모바일 Flutter 앱 소스와 tracked 문서에 실제 키를 넣지 않는다. +- 브라우저 주소창 query string으로 시크릿을 넣지 않는다. +- Baron SSO backend, 별도 서버, 또는 개발자 로컬 비추적 env/Dart define에만 저장한다. +- 실제 키 값은 저장소 tracked 파일에 커밋하지 않는다. +- 운영 배포 전에는 로그인 성공 후 받은 session credential 또는 안전한 서버 중계 구조로 전환한다. + +현재 로컬 Baron SSO worktree에서는 아래 환경변수 이름으로 정리했다. + +```env +TDC114PLUS_ORG_CONTEXT_BASE_URL=https://sadmin.hmac.kr +TDC114PLUS_ORG_CONTEXT_KEY_ID= +TDC114PLUS_ORG_CONTEXT_KEY_SECRET= +TDC114PLUS_ORG_CONTEXT_TENANT_SLUG=hanmac-family +TDC114PLUS_ORG_CONTEXT_INCLUDE_USERS=true +TDC114PLUS_ORG_CONTEXT_INCLUDE_USER_IDS=true +``` + +로컬 반영 위치: + +- Baron SSO API worktree: `/home/ubuntu/workspace/baron-sso-tdc114plus-api/.env` + +## 7. tdc114plus 반영 상태 + +2026-07-03 기준 반영 상태: + +- 이 문서의 기준 API는 Baron 원본 `org-context`다. +- 앱 코드와 문서에 남아 있는 `tdc114plus` 전용 endpoint 가정은 레거시 흔적이며, 신규 정책의 공식 기준이 아니다. + +현재 구현 동작: + +- 외부 `org-context` 호출 성공 시: 외부 조직/사용자 응답을 앱 내부 DTO로 매핑 +- 환경변수 미설정 시: 기존 로컬 fallback 동작이 남아 있을 수 있으므로 단계적 제거 대상이다 + +현재 매핑 결과: + +- `tenants`는 `org-context`의 tenant 목록 기준 +- `employees`는 각 tenant `members` 기준 +- 중복 사용자는 `id`, `email`, `phone`, `name` 순으로 dedupe +- `cache.source`는 외부 연동일 때 `org-context` + +## 8. 브라우저 확인 방법 + +브라우저 주소창만으로는 header를 넣을 수 없으므로 직접 호출은 불가능하다. + +확인 방법: + +1. Swagger UI에서 `Authorize` 사용 +2. 브라우저 개발자도구 console에서 `fetch` 사용 +3. 터미널에서 `curl` 사용 + +예시 `fetch`: + +```js +fetch("https://sadmin.hmac.kr/api/v1/integrations/org-context?tenantSlug=hanmac-family&includeUsers=true&includeUserIds=true", { + headers: { + "X-Baron-Key-ID": "YOUR_KEY_ID", + "X-Baron-Key-Secret": "YOUR_KEY_SECRET" + } +}).then(r => r.json()).then(console.log) +``` + +## 10. 운영 전환 메모 + +- 2026-07-10부터 팀장 지시에 따라 신규 앱 개발 시 Baron 원본 참고 API는 production host가 아니라 staging host `https://sadmin.hmac.kr/` 기준으로 다시 본다. +- 운영 키(`CLIENT ID`, `X-Baron-Key-Secret`)는 회전될 수 있으므로 tracked 문서에 박아두지 않고 로컬 비추적 `.env`에만 보관한다. + +## 9. 후속 작업 메모 + +- 앱 내부 직원검색 모델 +- 앱 내부 직원상세 모델 + +현재 이 두 경로는 기존 로컬 DB 기반이며, 조직도와 동일한 외부 `org-context` 소스로 완전히 통일할지는 후속 판단이 필요하다. diff --git a/docs/guide_baron_sso_org_context_mirror_recovery_request_2026-07-03.md b/docs/guide_baron_sso_org_context_mirror_recovery_request_2026-07-03.md new file mode 100644 index 0000000..498dc90 --- /dev/null +++ b/docs/guide_baron_sso_org_context_mirror_recovery_request_2026-07-03.md @@ -0,0 +1,153 @@ +# Baron SSO org-context identity mirror 복구 요청 문서 + +작성일: 2026-07-03 + +목적: `tdc114plus` 앱의 직원검색/조직도 API가 외부 Baron SSO `org-context` 사용자 데이터를 정상적으로 조회할 수 있도록, Baron SSO 담당 개발자에게 현재 장애 상태와 필요한 조치 사항을 명확히 전달하기 위한 요청 문서다. + +## 1. 요청 요약 + +현재 `tdc114plus` 연동 경로에서 Baron SSO 외부 `org-context` API의 조직 트리 조회는 가능하지만, 사용자 포함 조회가 아래 오류로 실패하고 있다. + +```json +{"error":"identity mirror is not ready","code":"internal_error"} +``` + +따라서 Baron SSO 원본 서비스 `sadmin.hmac.kr` 측에서 `org-context` 사용자 조회에 필요한 identity mirror를 `ready` 상태로 복구하거나 재구성해 주는 조치가 필요하다. + +## 2. 요청 목적 + +이번 요청의 목적은 아래와 같다. + +- `tdc114plus`가 Baron backend를 통해 한맥가족 전체 직원 데이터를 정상 조회할 수 있도록 함 +- 앱의 직원검색/조직도 데이터 소스를 `org-context` 기준으로 안정화 + +즉 외부 `org-context` 원본 사용자 데이터를 기준으로 앱 내부 데이터 구성이 가능하도록 복구함 + +## 3. 현재 확인된 사실 + +### 3-1. 인증 정보 자체는 정상 + +- 팀에서 전달받은 값은 `public/orgchart?token=...`용 token이 아니라 `GET /api/v1/integrations/org-context`용 API Key이다. +- 로컬 Baron SSO API worktree `.env`에는 아래 값이 반영되어 있다. + - `TDC114PLUS_ORG_CONTEXT_BASE_URL` + - `TDC114PLUS_ORG_CONTEXT_KEY_ID` + - `TDC114PLUS_ORG_CONTEXT_KEY_SECRET` + - `TDC114PLUS_ORG_CONTEXT_TENANT_SLUG=hanmac-family` + - `TDC114PLUS_ORG_CONTEXT_INCLUDE_USERS=true` + - `TDC114PLUS_ORG_CONTEXT_INCLUDE_USER_IDS=true` + +### 3-2. 로컬 Baron backend 최신 코드/환경 반영은 확인 + +- `tdc114plus` 연동 handler는 외부 `org-context`를 우선 사용하도록 이미 반영했다. +- `baron_backend` 컨테이너 rebuild/recreate 후 실행 중 env에도 `TDC114PLUS_ORG_CONTEXT_*` 값이 주입된 것을 확인했다. + +### 3-3. 현재 실제 장애 양상 + +외부 API를 직접 확인한 결과는 아래와 같다. + +1. `includeUsers=false` + +- 요청: + - `GET /api/v1/integrations/org-context?tenantSlug=hanmac-family&includeUsers=false&includeUserIds=false` +- 결과: + - `200 OK` +- 해석: + - 조직 트리/tenant 구조 자체는 조회 가능 + +2. `includeUsers=true` + +- 요청: + - `GET /api/v1/integrations/org-context?tenantSlug=hanmac-family&includeUsers=true&includeUserIds=true` +- 결과: + - `500 Internal Server Error` +- 응답: + +```json +{"error":"identity mirror is not ready","code":"internal_error"} +``` + +- 해석: + - 사용자 포함 `org-context` 조회 시 Baron SSO 원본 서비스 쪽 identity mirror가 준비되지 않아 실패 + +### 3-4. tdc114plus에서 보이는 영향 + +- `baron_backend` 최신 코드 반영 후 앱 연동 직원조회 경로는 `503 dependency_unavailable`로 실패 +- backend 로그: + +```text +[Tdc114Plus] external org-context employee load failed error="org-context status 500" +``` + +- 즉, 현재 `tdc114plus`는 외부 사용자 org-context를 쓰려 하지만 원본 서비스가 `500`을 반환해 앱에서 전체 직원 정보를 검증할 수 없는 상태다. + +## 4. Baron SSO 담당 개발자에게 요청할 내용 + +아래 내용을 요청한다. + +1. `sadmin.hmac.kr`의 `GET /api/v1/integrations/org-context`에서 `includeUsers=true` 요청이 정상적으로 동작하도록 복구해 달라. +2. 현재 `identity mirror is not ready`가 발생하는 원인을 확인해 달라. +3. 필요한 경우 Kratos 기준 identity mirror warmup/full rebuild/recovery/reconciliation 작업을 수행해 달라. +4. 복구 후 아래 조건으로 재검증해 달라. + - `tenantSlug=hanmac-family` + - `includeUsers=true` + - `includeUserIds=true` +5. 복구 완료 후 응답이 `200 OK`로 내려오고, `tenants[].members`에 실제 사용자 데이터가 포함되는지 확인해 달라. + +## 5. Baron SSO 쪽에서 필요한 처리 방향 + +현재 코드/운영 정책 문서 기준으로 예상되는 처리 방향은 아래와 같다. + +1. `sadmin.hmac.kr` 원본 backend 로그에서 identity mirror warmup 실패 여부 확인 +2. Redis identity mirror 상태 확인 + - `identity:mirror:state` +3. Kratos Admin 연결/조회 가능 상태 확인 +4. identity mirror warmup 또는 full rebuild 수행 +5. 필요 시 repair / reconciliation / drift report 수행 +6. 복구 후 `includeUsers=true` org-context 재검증 + +코드상 참고 포인트: + +- 서버 시작 시 identity mirror warmup 수행 경로: + - `backend/cmd/server/main.go` +- identity mirror rebuild 경로: + - `backend/internal/handler/user_handler.go` +- org-context member export가 identity mirror 상태를 사용한다는 점: + - `backend/internal/handler/tenant_handler.go` + +## 6. 이 요청이 처리되면 바로 이어서 가능한 작업 + +Baron SSO 쪽 복구가 완료되면 `tdc114plus` 쪽에서는 아래 작업을 바로 이어서 진행할 수 있다. + +1. 앱 연동 조직도 데이터가 `cache.source=org-context`로 전환됐는지 확인 +2. 앱 연동 직원검색 데이터가 한맥가족 전체 직원 데이터를 반환하는지 검증 +3. 앱 연동 직원상세 데이터가 외부 사용자 id 기준으로 정상 조회되는지 검증 +4. 중복 사용자, 다중 소속, tenant 없는 사용자 처리 정책 재점검 +5. Flutter 앱에서 직원검색/조직도 실데이터 진입 검증 + +## 7. 요청 결과가 성공일 때의 완료 기준 + +아래 조건이 만족되면 이번 요청이 해결된 것으로 본다. + +- `GET /api/v1/integrations/org-context?tenantSlug=hanmac-family&includeUsers=true&includeUserIds=true` + - `200 OK` +- 응답 body에 `tenants[].members[]` 실제 사용자 데이터가 포함됨 +- `tdc114plus` 앱 연동 데이터가 `org-context` 기준으로 정상 구성됨 + +## 8. 전달용 짧은 요청 문안 + +아래 문안을 Baron SSO 담당 개발자에게 전달하면 된다. + +```text +tdc114plus 연동 중 Baron org-context 사용자 포함 조회가 실패하고 있습니다. + +- tenantSlug=hanmac-family +- includeUsers=false: 200 OK +- includeUsers=true: 500 {"error":"identity mirror is not ready","code":"internal_error"} + +로컬 Baron backend 최신 코드와 org-context env 반영까지는 확인했습니다. +현재는 sadmin.hmac.kr 원본 org-context의 identity mirror가 ready가 아니어서 +tdc114plus의 직원검색/조직도 사용자 조회가 막혀 있습니다. + +org-context 사용자 조회에 필요한 identity mirror warmup / rebuild / recovery를 확인해 주시고, +복구 후 includeUsers=true 요청이 200으로 내려오도록 조치 부탁드립니다. +``` diff --git a/docs/baron-sso-reference-source-policy-2026-07-02.md b/docs/guide_baron_sso_reference_source_2026-07-02.md similarity index 100% rename from docs/baron-sso-reference-source-policy-2026-07-02.md rename to docs/guide_baron_sso_reference_source_2026-07-02.md diff --git a/docs/guide_new_app_baron_sso_easy_explanation_2026-07-08.md b/docs/guide_new_app_baron_sso_easy_explanation_2026-07-08.md new file mode 100644 index 0000000..0a1fed3 --- /dev/null +++ b/docs/guide_new_app_baron_sso_easy_explanation_2026-07-08.md @@ -0,0 +1,411 @@ +# 신규앱과 Baron SSO 연동 쉬운 설명 + +작성일: 2026-07-08 +상태: 초안 v1 + +목적: 신규앱과 Baron SSO의 관계, 데이터 연동 방식, Hosted Login + PKCE 로그인, 모바일 배포 형태를 다른 팀원도 쉽게 이해할 수 있게 설명한다. + +관련 근거: + +- `docs/00_contract_tdc114plus_api_2026-07-02.md` +- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` +- `docs/scenario_staging_baron_sso_login_verification_2026-07-06.md` +- `docs/policy_android_app_install_execution_2026-07-06.md` +- `app/lib/src/features/auth/data/auth_api_client.dart` +- `app/lib/src/features/auth/domain/auth_models.dart` +- `app/lib/src/features/auth/data/auth_repository.dart` + +## 1. 한 줄 요약 + +`tdc114plus` 신규앱은 Baron SSO 자체가 아니라, Baron SSO를 로그인/사용자정보/조직정보 제공자로 사용하는 별도의 모바일 앱이다. + +쉽게 말하면: + +- 신규앱 = 사용자가 설치해서 실행하는 앱 +- Baron SSO = 로그인과 사용자/조직 데이터를 제공하는 서버 +- 두 시스템은 API로 데이터를 주고받는다 + +## 2. 신규앱과 Baron SSO의 관계 + +### 2.1 무엇이 누구인가 + +- 신규앱은 Flutter로 만든 Android/iOS 공통 모바일 앱이다. +- Baron SSO는 사용자 인증과 조직/직원 데이터를 관리하는 서버 쪽 시스템이다. +- 신규앱은 Baron SSO에 등록되는 별도 `RP(Relying Party)`로 본다. + +여기서 `RP`는 쉽게 말하면: + +- "SSO를 믿고 로그인 기능을 맡기는 서비스" +- 즉, 로그인 자체를 새로 만들지 않고 Baron SSO를 통해 인증받는 앱 + +그래서 신규앱은 Baron SSO의 일부 화면이 아니라, Baron SSO를 사용하는 별도 서비스라고 이해하면 된다. + +## 3. 설치되는 앱 실행파일은 무엇인가 + +### 3.1 Android + +Android에서 실제 기기에 설치되는 파일은 보통 아래 둘 중 하나다. + +- `APK` +- `AAB`에서 스토어가 기기별로 풀어 배포한 설치 패키지 + +개발/테스트 단계에서는 보통: + +- `flutter run` +- debug `APK` + +를 사용한다. + +운영 배포 관점에서는 보통: + +- 사내 직접 배포면 `APK` +- Play Store 배포면 `AAB` + +형태를 생각하면 된다. + +현재 저장소 문맥상 Android 테스트에서는 debug APK를 직접 깔 수도 있지만, 기능 검증은 `flutter run` 중심으로 하도록 정책이 잡혀 있다. 이유는 이 앱이 실행 시점에 `TDC114_API_BASE` 같은 환경값을 함께 받아야 하기 때문이다. + +### 3.2 iOS + +iOS에서 실제 설치/배포에 쓰이는 것은 보통: + +- 개발기기 설치용 app bundle +- TestFlight/App Store 배포용 `IPA` + +라고 보면 된다. + +즉 정리하면: + +- Android는 주로 `APK` 또는 스토어용 `AAB` +- iOS는 주로 `IPA` 또는 TestFlight/App Store 배포 + +다. + +## 4. 앱 실행파일 자체가 RP인가 + +이 질문은 자주 헷갈릴 수 있는데, 가장 쉬운 답은 아래와 같다. + +- "앱 실행파일 그 자체"를 좁게 보면 그냥 설치 패키지다. +- 하지만 "그 앱 서비스 전체"를 넓게 보면 Baron SSO 입장에서는 하나의 `RP`다. + +즉: + +- `APK`, `IPA`는 설치물이다. +- 그 설치물을 통해 동작하는 `tdc114plus` 앱 서비스가 Baron SSO에 연동되는 `RP`다. + +따라서 팀 내 설명에서는 아래처럼 말하면 가장 덜 헷갈린다. + +`tdc114plus` 모바일 앱은 Baron SSO에 등록된 별도 RP이며, 사용자는 Android/iOS 기기에 그 RP의 클라이언트 앱을 설치해 사용한다. + +## 5. 앱이 설치된 뒤 실제로 어떻게 동작하는가 + +네, 큰 흐름은 아래 이해가 맞다. + +1. 사용자가 각 모바일 디바이스에 신규앱을 설치한다. +2. 사용자가 앱을 실행한다. +3. 앱은 Baron SSO authorization endpoint를 브라우저/커스텀탭으로 연다. +4. Baron SSO Hosted Login 화면에서 휴대폰번호 입력과 문자/메일 링크 인증을 처리한다. +5. 인증 완료 후 Baron SSO가 `https://114.hmac.kr/auth/callback`으로 authorization code를 돌려준다. +6. 앱은 PKCE `code_verifier`로 token을 교환하고 세션을 저장한다. +7. 앱은 그 세션으로 직원검색, 조직도, 사용자 표시 정보를 다시 조회한다. +8. 앱 화면은 Baron SSO가 준 로그인 결과와 조직/직원 데이터를 사용자에게 보여준다. + +즉, "설치된 실행파일이 Baron SSO와 데이터를 주고받으면서 로그인과 표시 내용을 가져온다"는 이해는 맞다. + +다만 더 정확히 말하면: + +- 로그인 결과 일부는 앱 내부에 저장된다 +- 이후 필요한 화면 데이터는 Baron SSO 연동 API를 다시 호출해서 가져온다 + +## 6. 어떤 데이터들을 주고받는가 + +## 6.1 로그인 시작 시 앱 -> Baron SSO + +신규앱은 로그인 시작 시 headless API를 직접 호출하지 않는다. +앱은 PKCE 값을 만든 뒤 Baron SSO Hosted Login 화면을 연다. + +```http +GET https://sso.hmac.kr/oidc/oauth2/auth +``` + +주요 query: + +```text +client_id=tdc114plus-rp-client-id +redirect_uri=https://114.hmac.kr/auth/callback +response_type=code +scope=openid profile email tenants +state=random-state +nonce=random-nonce +code_challenge=S256-code-challenge +code_challenge_method=S256 +``` + +의미: + +- `client_id`: Baron SSO에 등록된 TDC114PLUS RP 식별자 +- `redirect_uri`: 인증 후 앱으로 돌아오기 위한 App Link 주소 +- `state`: callback 위조를 막기 위한 임시 검증값 +- `code_challenge`: 앱이 가진 `code_verifier`를 해시한 PKCE 값 + +즉 앱은 "로그인 화면을 직접 만들지 않고", Baron SSO가 제공하는 로그인 화면으로 사용자를 보낸다. + +## 6.2 Baron SSO Hosted Login 화면 + +휴대폰번호 입력, 문자/메일 링크 발송, 링크 승인 여부 확인은 Baron SSO 화면과 서버가 처리한다. + +앱은 아래 정보를 직접 다루지 않는다. + +- 휴대폰번호 인증 UI +- 승인 링크 생성 +- `client_assertion` +- RP 개인키 또는 client secret +- headless `pendingRef` polling + +이렇게 해야 공개 모바일 앱에 비밀키를 넣지 않는 PKCE 보안 모델과 맞다. + +## 6.3 인증 완료 callback + +인증이 끝나면 Baron SSO는 등록된 redirect URI로 이동한다. + +```http +GET https://114.hmac.kr/auth/callback?code={authorization-code}&state={state} +``` + +앱은 Android App Link 또는 iOS Universal Link 설정을 통해 이 URL을 받아야 한다. + +앱에서 확인할 것: + +- callback의 `state`가 앱이 저장한 값과 같은지 +- `code`가 존재하는지 +- 오류 파라미터가 있으면 token 교환을 중단할지 + +## 6.4 token 교환 + +앱은 callback으로 받은 authorization code를 token endpoint에 보낸다. + +```http +POST https://sso.hmac.kr/oidc/oauth2/token +``` + +요청 핵심: + +```text +grant_type=authorization_code +client_id=tdc114plus-rp-client-id +code={authorization-code} +code_verifier={stored-code-verifier} +redirect_uri=https://114.hmac.kr/auth/callback +``` + +중요: + +- PKCE 공개 앱이므로 client secret을 보내지 않는다. +- 앱이 처음 만든 `code_verifier`가 있어야 token 교환이 성공한다. +- token 교환 성공 후 앱은 access token, 만료시간, 사용자 기본 정보를 저장한다. + +## 6.5 로그인 완료 후 앱 세션 + +token 교환이 성공하면 앱은 아래 정보를 세션으로 보관한다. + +- access token +- 만료시간 +- id token 또는 userinfo에서 얻은 사용자 기본 정보 + +이 사용자 정보는 아래처럼 쓰인다. + +- `name`: 화면에 보여줄 사용자명 +- `tenantName`, `tenantSlug`: 어느 회사/테넌트 소속인지 +- `department`: 본인 부서 +- `grade`, `position`, `jobTitle`: 직급/직위/직무 + +## 6.6 로그인 후 조회하는 업무 데이터 + +로그인 후에는 아래 같은 업무 데이터를 Baron SSO 연동 API에서 조회한다. + +- 직원 목록 +- 조직/가족사 목록 +- 조직도 +- 직원 상세 정보 + +현재 기준 원본 조회 API 메모: + +- `GET /api/v1/integrations/org-context` +- `GET /api/v1/public/orgchart` + +레거시 `/api/v1/tdc114plus/...` 데이터 경로는 과거 흔적으로만 보고 단계적으로 제거한다. + +문서 기준 주요 데이터 API는 아래와 같다. + +- `GET /api/v1/integrations/org-context` +- `GET /api/v1/public/orgchart` + +즉 Baron SSO는 로그인만 해주는 것이 아니라, 앱이 필요한 직원/조직 데이터도 함께 제공하는 역할을 한다. + +## 7. 데이터 형식은 무엇인가 + +기본 형식은 HTTP + JSON 이다. + +조금 더 풀면: + +- 통신 방식: 모바일 앱이 HTTPS API 호출 +- 요청 본문 형식: JSON +- 응답 본문 형식: JSON +- 헤더: 보통 `Content-Type: application/json`, `Accept: application/json` + +즉 이 앱은 웹페이지를 긁어오는 방식이 아니라, 구조화된 JSON API를 호출해서 데이터를 받는다. + +## 8. 세션은 앱 안에 어떻게 저장되는가 + +코드상 현재 앱은 로그인 성공 시 아래 정보를 저장한다. + +- `token` +- `expiresAt` +- `user` + +저장 위치는 앱 내부 저장소(`SharedPreferences`)다. + +그래서 앱을 다시 켰을 때: + +- 저장된 세션이 아직 유효하면 로그인 화면을 건너뛴다 +- 세션이 없거나 만료되면 다시 Baron SSO 로그인으로 보낸다 + +즉 앱은 매 화면마다 처음부터 새 로그인하는 것이 아니라, 받은 세션을 보관했다가 재사용한다. + +## 9. 헤드리스 로그인(headless login)은 무엇이고, 왜 기본 방식이 아닌가 + +가장 쉬운 설명부터 하면: + +헤드리스 로그인은 "앱 안에 Baron SSO의 로그인 웹화면을 직접 띄우지 않고, 앱이 API로 로그인 절차를 진행하는 방식"이다. + +`headless`를 직역하면 "머리/화면이 없는" 느낌인데, 여기서는: + +- 로그인용 별도 웹페이지 중심이 아니라 +- 백그라운드 API 호출 중심으로 로그인 절차를 진행한다 + +는 뜻으로 이해하면 된다. + +다만 현재 TDC114PLUS 기본 로그인 방식은 headless가 아니다. +현재 기준은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. + +이유는 간단하다. + +- Flutter 모바일 앱은 공개 클라이언트라서 비밀키를 안전하게 숨길 수 없다. +- Baron Swagger의 headless API는 `client_assertion` 같은 confidential client 성격의 값을 요구한다. +- 앱이 headless API를 직접 호출하려면 APK 안에 비밀값 또는 개인키를 넣는 위험한 구조가 될 수 있다. +- Hosted Login + PKCE는 모바일 앱 표준 보안 모델과 더 잘 맞는다. + +## 10. 이번 신규앱 로그인은 왜 특별한가 + +이번 신규앱 기본 로그인은 단순한 "전화번호 넣고 바로 로그인"이 아니다. + +흐름은 아래와 같다. + +1. 앱이 Baron SSO Hosted Login 화면을 브라우저/커스텀탭으로 연다. +2. 사용자가 Baron SSO 화면에서 휴대폰번호를 입력한다. +3. Baron SSO가 문자 또는 메일로 승인 링크를 발송한다. +4. 사용자가 그 링크를 열어 승인한다. +5. Baron SSO가 `https://114.hmac.kr/auth/callback`으로 authorization code를 돌려준다. +6. 앱이 PKCE 방식으로 token을 교환한다. +7. 앱이 세션 저장 후 첫 화면으로 진입한다. + +즉 핵심은: + +- 앱은 로그인 화면을 직접 구현하지 않는다. +- 휴대폰번호 입력과 링크 승인은 Baron SSO가 맡는다. +- 앱은 callback code를 받아 PKCE token 교환만 수행한다. + +이다. + +## 11. 왜 굳이 Hosted Login + PKCE로 하나 + +장점은 아래처럼 설명할 수 있다. + +- 앱이 비밀번호, 휴대폰번호 인증 로직, 승인 링크를 직접 만지지 않는다. +- Baron SSO가 인증 UI와 인증 절차를 책임진다. +- 앱에는 client secret이나 개인키를 넣지 않아도 된다. +- Android/iOS 모두 표준 OIDC + PKCE 방식으로 확장하기 쉽다. +- 로그인 정책이 바뀌어도 Baron SSO Hosted Login 쪽을 중심으로 바꾸면 된다. + +하지만 주의할 점도 있다. + +- 앱 코드만 있다고 로그인 검증이 끝나지 않는다. +- Baron SSO RP 등록, redirect URI, App Link, PKCE token endpoint가 모두 맞아야 한다. +- staging/운영 환경에서 실제 테스트 번호와 링크 수신 경로가 맞아야 end-to-end 검증이 된다. + +## 12. Hosted Login + PKCE와 headless 방식 차이 + +Hosted Login + PKCE: + +1. 로그인 페이지로 이동 +2. Baron SSO 화면에서 인증수단 입력 +3. 문자/메일 링크 승인 +4. App Link callback으로 앱 복귀 +5. PKCE token 교환 +6. 로그인 완료 + +headless 직접 호출: + +1. 앱 화면에서 전화번호 입력 +2. 앱이 API 호출 +3. 사용자는 외부로 받은 링크를 열어 승인 +4. 앱은 API로 상태를 확인 +5. 완료되면 앱이 세션을 저장 + +현재 앱 기본 정책은 첫 번째, 즉 Hosted Login + PKCE다. +headless 직접 호출은 별도 신뢰 백엔드가 생기거나 Baron SSO가 모바일 공개 RP용 계약을 제공할 때만 재검토한다. + +## 13. "전화번호만 넣으면 바로 로그인"과 같은가 + +아니다. 이번 기본 흐름은 그것과 다르다. + +이번 기본 흐름은: + +- Baron SSO 로그인 화면 진입 +- 전화번호 입력 +- 링크 발송 +- 사용자 승인 +- App Link callback +- PKCE token 교환 후 세션 발급 + +이다. + +즉 전화번호 입력만으로 즉시 로그인시키는 구조가 아니라, 승인 단계를 끼운 비동기 로그인 구조다. + +## 14. 팀원들이 가장 헷갈리지 않게 설명하는 표현 + +아래 표현을 권장한다. + +`tdc114plus`는 Baron SSO에 등록된 별도 모바일 RP 앱이다. 사용자는 Android나 iPhone에 앱을 설치하고, 앱은 Baron SSO Hosted Login 화면을 브라우저/커스텀탭으로 열어 로그인한다. 전화번호 입력과 문자/메일 링크 승인은 Baron SSO 화면과 서버가 처리하며, 인증 완료 뒤 `https://114.hmac.kr/auth/callback` App Link로 앱에 돌아온다. 앱은 callback의 authorization code를 PKCE 방식으로 token 교환한 뒤 직원검색/조직도 같은 데이터를 Baron SSO 연동 API에서 조회해 화면에 표시한다. + +## 15. 자주 나오는 질문에 대한 짧은 답 + +### Q1. 신규앱은 Baron SSO 안에 들어가는가 + +아니라기보다, Baron SSO를 사용하는 별도 앱이다. + +### Q2. 앱 실행파일 자체가 RP인가 + +설치파일 자체보다는, 그 설치파일로 동작하는 앱 서비스 전체를 RP라고 보는 것이 더 정확하다. + +### Q3. Android는 APK로 배포하는가 + +개발/사내 배포는 APK가 가능하고, 스토어 배포는 보통 AAB를 사용한다. + +### Q4. iOS는 APK처럼 설치하는가 + +아니다. 보통 IPA 또는 TestFlight/App Store 방식이다. + +### Q5. 앱이 설치된 뒤 Baron SSO와 계속 통신하는가 + +그렇다. 로그인할 때도 통신하고, 로그인 후 직원/조직 데이터를 가져올 때도 통신한다. + +### Q6. 헤드리스 로그인은 화면이 아예 없다는 뜻인가 + +아니다. 사용자 화면은 있을 수 있다. 다만 현재 TDC114PLUS 기본 방식은 headless가 아니라 Baron SSO Hosted Login 화면을 브라우저/커스텀탭으로 여는 방식이다. + +## 16. 결론 + +이번 신규앱은 단말에 설치되는 일반 모바일 앱이지만, 인증과 주요 사용자/조직 데이터는 Baron SSO와의 API 연동에 의존한다. 따라서 이 앱은 "독립 실행은 되지만 독립 인증은 하지 않는 RP 앱"이라고 이해하면 가장 정확하다. + +또한 이번 로그인은 단순 즉시 로그인 방식이 아니라 `Hosted Login -> 문자/메일 링크 인증 -> App Link callback -> PKCE token 교환 -> 세션 저장` 흐름이다. 그래서 앱 실행파일만 설치되었다고 끝나는 것이 아니라, Baron SSO RP 설정, callback 도메인, App Link, token 교환이 함께 정상 동작해야 비로소 로그인과 첫 화면 진입이 완성된다. diff --git a/docs/guide_new_app_dashboard_project_plan_2026-07-14.md b/docs/guide_new_app_dashboard_project_plan_2026-07-14.md new file mode 100644 index 0000000..02a57f3 --- /dev/null +++ b/docs/guide_new_app_dashboard_project_plan_2026-07-14.md @@ -0,0 +1,571 @@ +# 신규어플 부서 대시보드 입력용 프로젝트/업무계획 정리 + +작성일: 2026-07-14 +용도: 부서 대시보드의 `기본정보`, `업무 계획`, `업무 관리`, `로드맵`, `변경사항` 입력용 초안 + +## 0. 캡처 화면 기준 빠른 입력 매칭표 + +캡처에 보이는 입력 항목명을 기준으로 바로 매칭했다. + +### 0.1 기본정보 화면 + +| 캡처상 입력 항목명 | 넣을 내용 | +| --- | --- | +| 프로젝트명 | `TDC114 신규앱 구축` | +| 프로젝트 시작일 | `2026-07-02` | +| 프로젝트 종료일 | `2026-08-28` | +| 분야 | `시스템화` | +| 관리상태 | `정상` | +| 수행팀 | `IS 3팀` | +| PM / 대표 | `-` 또는 실제 PM명 | +| 업무수행자 | `문형석 외 2명` | +| 협업팀 | `기술개발센터, Baron SSO 연계부서` | +| 프로젝트 설명 | `Baron SSO 연계 기반의 TDC114 신규 모바일 앱을 구축하여 직원검색, 전화번호검색, 조직도, 즐겨찾기 등 핵심 기능을 통합 제공하고 Android/iOS 공통 운영 기반과 iOS 대응 구조를 마련한다.` | +| 기대 성과 | `사내 직원검색 및 조직도 조회 업무를 모바일에서 일원화하고, Android/iOS 공통 신규앱 기반의 인증 및 운영 체계를 확보하여 사용자 접근성과 유지보수 효율을 높인다.` | +| 상시업무 | `미체크 권장` | +| 핵심 추진 프로젝트 | `체크 권장` | + +### 0.2 업무 계획 화면 + +#### 목표 1 + +| 캡처상 입력 항목명 | 넣을 내용 | +| --- | --- | +| 목표명 | `신규앱 인증/접속 기반 구축` | +| 업무성격 | `자료조사` 또는 `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-02 ~ 2026-07-17` | +| 수행기간 | `2026-07-02 ~ 2026-07-17` | +| 예상 M/H | `24.0h` | +| 실제 M/H | `진행 후 입력` | + +##### 목표 1의 업무 항목 + +| 업무명 | 업무성격 | 업무수행자 | 계획기간 | 수행기간 | 비고 | +| --- | --- | --- | --- | --- | --- | +| Baron SSO 로그인 연계 설계 | 기능구현 | 문형석 | 2026-07-02 ~ 2026-07-08 | 2026-07-02 ~ 2026-07-08 | Hosted Login, PKCE, Callback 반영 | +| 앱 환경설정 및 실행 구조 정비 | 기능구현 | 문형석 | 2026-07-06 ~ 2026-07-13 | 2026-07-06 ~ 2026-07-13 | 환경값, 빌드 설정, 실행 경로 정리 | +| 로그인 기본 동작 검증 | 내용정리 | 문형석 | 2026-07-14 ~ 2026-07-17 | 2026-07-14 ~ 2026-07-17 | 실기기/테스트 환경 기준 검증 | + +##### 목표 1의 세부업무 항목 + +| 상위 업무명 | 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | --- | +| Baron SSO 로그인 연계 설계 | OIDC/PKCE 인증 흐름 정의 | 2026-07-02 ~ 2026-07-04 | 2026-07-02 ~ 2026-07-04 | 인증 URL, state, code verifier 흐름 정리 | +| Baron SSO 로그인 연계 설계 | Callback 처리 정책 정리 | 2026-07-05 ~ 2026-07-08 | 2026-07-05 ~ 2026-07-08 | callback URL, 예외 응답, 세션 연결 기준 정리 | +| 앱 환경설정 및 실행 구조 정비 | 환경변수 및 빌드 설정 정리 | 2026-07-06 ~ 2026-07-09 | 2026-07-06 ~ 2026-07-09 | 실행 환경값, 빌드 설정, 앱 실행 조건 정비 | +| 앱 환경설정 및 실행 구조 정비 | 개발/테스트 실행 경로 점검 | 2026-07-10 ~ 2026-07-13 | 2026-07-10 ~ 2026-07-13 | 실행 경로, 테스트 기준, 로그 확인 절차 정리 | +| 로그인 기본 동작 검증 | 로그인 시나리오 점검 | 2026-07-14 ~ 2026-07-15 | 2026-07-14 ~ 2026-07-15 | 정상 로그인 및 기본 이동 흐름 점검 | +| 로그인 기본 동작 검증 | 예외 케이스 확인 | 2026-07-16 ~ 2026-07-17 | 2026-07-16 ~ 2026-07-17 | 실패, 취소, 재시도 케이스 확인 | + +#### 목표 2 + +| 캡처상 입력 항목명 | 넣을 내용 | +| --- | --- | +| 목표명 | `직원검색/조직도 핵심 기능 구현` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 1명` | +| 계획기간 | `2026-07-20 ~ 2026-08-14` | +| 수행기간 | `2026-07-20 ~ 2026-08-14` | +| 예상 M/H | `48.0h` | +| 실제 M/H | `진행 후 입력` | + +##### 목표 2의 업무 항목 + +| 업무명 | 업무성격 | 업무수행자 | 계획기간 | 수행기간 | 비고 | +| --- | --- | --- | --- | --- | --- | +| 직원검색 및 전화번호검색 기능 구현 | 기능구현 | 문형석 | 2026-07-20 ~ 2026-07-29 | 2026-07-20 ~ 2026-07-29 | 검색 조건, 결과 리스트, 상세 연결 | +| 가족사 필터 및 조직도 조회 구현 | 기능구현 | 문형석 외 1명 | 2026-07-27 ~ 2026-08-05 | 2026-07-27 ~ 2026-08-05 | 조직 탐색, 부서 목록, 정렬 규칙 반영 | +| 직원 상세/전화/문자 연계 구성 | 기능구현 | 문형석 | 2026-08-03 ~ 2026-08-10 | 2026-08-03 ~ 2026-08-10 | 상세정보, 전화걸기, 문자보내기 연계 | +| 즐겨찾기 및 화면 UX 보정 | 기능구현 | 문형석 외 1명 | 2026-08-08 ~ 2026-08-14 | 2026-08-08 ~ 2026-08-14 | 로컬 저장, 화면 사용성 개선 | +| iOS 대응 구조 및 실행 검토 | 자료조사 | 문형석 | 2026-08-11 ~ 2026-08-14 | 2026-08-11 ~ 2026-08-14 | iOS 실행 조건, 링크 처리, 배포 준비 항목 점검 | + +##### 목표 2의 세부업무 항목 + +| 상위 업무명 | 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | --- | +| 직원검색 및 전화번호검색 기능 구현 | 검색 조건 및 입력 규칙 적용 | 2026-07-20 ~ 2026-07-23 | 2026-07-20 ~ 2026-07-23 | 이름/전화번호 검색 조건 및 입력 규칙 반영 | +| 직원검색 및 전화번호검색 기능 구현 | 검색 결과 리스트 구성 | 2026-07-24 ~ 2026-07-29 | 2026-07-24 ~ 2026-07-29 | 결과 리스트, 상세 진입, 빈 결과 처리 | +| 가족사 필터 및 조직도 조회 구현 | 가족사 필터 구성 | 2026-07-27 ~ 2026-07-30 | 2026-07-27 ~ 2026-07-30 | 회사/조직 필터 선택 구조 반영 | +| 가족사 필터 및 조직도 조회 구현 | 조직도 조회 및 정렬 규칙 반영 | 2026-07-31 ~ 2026-08-05 | 2026-07-31 ~ 2026-08-05 | 조직 탐색, 목록 정렬, 하위 이동 처리 | +| 직원 상세/전화/문자 연계 구성 | 직원 상세정보 화면 구성 | 2026-08-03 ~ 2026-08-06 | 2026-08-03 ~ 2026-08-06 | 부서/직위/연락처 등 상세 정보 구성 | +| 직원 상세/전화/문자 연계 구성 | 전화/문자 실행 연계 | 2026-08-07 ~ 2026-08-10 | 2026-08-07 ~ 2026-08-10 | 전화걸기, 문자보내기 외부 앱 연계 | +| 즐겨찾기 및 화면 UX 보정 | 즐겨찾기 저장 기능 반영 | 2026-08-08 ~ 2026-08-11 | 2026-08-08 ~ 2026-08-11 | 로컬 저장 및 목록 반영 | +| 즐겨찾기 및 화면 UX 보정 | 주요 화면 UX 보완 | 2026-08-12 ~ 2026-08-14 | 2026-08-12 ~ 2026-08-14 | 화면 동선, 선택 상태, 가독성 보정 | +| iOS 대응 구조 및 실행 검토 | iOS 로그인/링크 처리 검토 | 2026-08-11 ~ 2026-08-12 | 2026-08-11 ~ 2026-08-12 | iOS callback 처리, 링크 연결, 정책 차이 점검 | +| iOS 대응 구조 및 실행 검토 | iOS 배포 준비 항목 정리 | 2026-08-13 ~ 2026-08-14 | 2026-08-13 ~ 2026-08-14 | 서명, 배포 방식, 테스트 기준 정리 | + +#### 목표 3 + +| 캡처상 입력 항목명 | 넣을 내용 | +| --- | --- | +| 목표명 | `안정화 및 운영 전환 준비` | +| 업무성격 | `자료조사` | +| 업무수행자 | `문형석 외 2명` | +| 계획기간 | `2026-08-17 ~ 2026-08-28` | +| 수행기간 | `2026-08-17 ~ 2026-08-28` | +| 예상 M/H | `36.0h` | +| 실제 M/H | `진행 후 입력` | + +##### 목표 3의 업무 항목 + +| 업무명 | 업무성격 | 업무수행자 | 계획기간 | 수행기간 | 비고 | +| --- | --- | --- | --- | --- | --- | +| 통합 테스트 및 예외 시나리오 점검 | 기능구현 | 문형석 외 1명 | 2026-08-17 ~ 2026-08-21 | 2026-08-17 ~ 2026-08-21 | 로그인, 검색, 조직도, 상세 기능 검증 | +| 배포 환경 및 운영 체크리스트 정리 | 내용정리 | 문형석 | 2026-08-20 ~ 2026-08-25 | 2026-08-20 ~ 2026-08-25 | Android/iOS 배포 기준, 장애 대응, 운영 절차 정리 | +| 시범 운영 및 보완사항 반영 | 기능구현 | 문형석 외 2명 | 2026-08-24 ~ 2026-08-28 | 2026-08-24 ~ 2026-08-28 | 피드백 반영 후 1차 마무리 | + +##### 목표 3의 세부업무 항목 + +| 상위 업무명 | 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | --- | +| 통합 테스트 및 예외 시나리오 점검 | 핵심 기능 통합 테스트 | 2026-08-17 ~ 2026-08-19 | 2026-08-17 ~ 2026-08-19 | 로그인, 검색, 조직도, 상세 흐름 점검 | +| 통합 테스트 및 예외 시나리오 점검 | 예외 시나리오 및 오류 확인 | 2026-08-20 ~ 2026-08-21 | 2026-08-20 ~ 2026-08-21 | 실패 케이스, 오류 메시지, 재시도 확인 | +| 배포 환경 및 운영 체크리스트 정리 | Android/iOS 배포 기준 정리 | 2026-08-20 ~ 2026-08-22 | 2026-08-20 ~ 2026-08-22 | 배포 버전, 환경, 점검 항목 정리 | +| 배포 환경 및 운영 체크리스트 정리 | 운영 절차 및 장애 대응 정리 | 2026-08-23 ~ 2026-08-25 | 2026-08-23 ~ 2026-08-25 | 운영 절차, 문의 대응, 장애 체크 정리 | +| 시범 운영 및 보완사항 반영 | 사용자 피드백 반영 | 2026-08-24 ~ 2026-08-26 | 2026-08-24 ~ 2026-08-26 | 시범 운영 중 확인된 보완사항 반영 | +| 시범 운영 및 보완사항 반영 | 1차 완료 정리 | 2026-08-27 ~ 2026-08-28 | 2026-08-27 ~ 2026-08-28 | 완료 보고 및 운영 전환 정리 | + +### 0.3 업무 관리 화면 + +| 캡처상 입력 항목명 | 넣을 내용 | +| --- | --- | +| ROADMAP 전체 업무 > 목표 1 | `신규앱 인증/접속 기반 구축` | +| ROADMAP 전체 업무 > 목표 2 | `직원검색/조직도 핵심 기능 구현` | +| ROADMAP 전체 업무 > 목표 3 | `안정화 및 운영 전환 준비` | +| CHECK 확인사항 1 | `Baron SSO 연계 정보 확정` | +| CHECK 확인사항 2 | `조직/직원 데이터 기준 정합성 확인` | +| CHECK 확인사항 3 | `Android/iOS 배포 방식 및 운영 기준 협의` | +| CHECK 확인사항 4 | `iOS 링크/배포 정책 확인` | + +### 0.4 통합 대시보드 카드 화면 + +| 캡처상 표시 항목 | 넣을 내용 | +| --- | --- | +| 프로젝트명 | `TDC114 신규앱 구축` | +| 현재업무 | `Baron SSO 로그인 연계 및 직원검색/조직도 1차 구축` | +| 목표일 | `26.08.28 완료 목표` | +| 기간 표기 | `26.07 ~ 26.08` | + +## 1. 작성 방향 + +- 기존 `바로 로그인v1.0`처럼 짧고 명확한 프로젝트명으로 정리한다. +- 현재 저장소와 문서 기준으로 신규어플은 `tdc114plus` 모바일 앱 구축/고도화 성격으로 정리한다. +- 날짜는 2026년 3분기 기준으로 자연스럽게 이어지도록 조정했다. +- 조직명, 참여자명은 실제 등록 가능한 선택값에 맞춰 마지막 입력 단계에서 미세 조정하면 된다. + +## 2. 기본정보 입력 초안 + +### 2.1 권장 프로젝트명 + +`TDC114 신규앱 구축` + +대안: + +- `TDC114 신규앱 고도화` +- `TDC114 모바일 전화번호부 구축` +- `TDC114 신규앱 1차 구축` + +가장 무난한 권장안은 `TDC114 신규앱 구축`이다. + +### 2.2 기본정보 필드별 권장값 + +| 항목 | 입력 권장값 | +| --- | --- | +| 프로젝트명 | `TDC114 신규앱 구축` | +| 프로젝트 시작일 | `2026-07-02` | +| 프로젝트 종료일 | `2026-08-28` | +| 분야 | `시스템화` | +| 관리상태 | `정상` | +| 수행팀 | `IS 3팀` 또는 실제 담당팀 | +| PM / 대표 | `-` 또는 실제 PM | +| 업무수행자 | `문형석 외 2명` | +| 협업팀 | `기술개발센터, Baron SSO 연계부서` | +| 상시업무 여부 | 미체크 권장 | +| 핵심 추진 프로젝트 | 체크 권장 | + +### 2.3 프로젝트 설명 + +아래 문안 중 하나를 그대로 입력하면 된다. + +#### 설명안 A + +`Baron SSO 연계 기반의 TDC114 신규 모바일 앱을 구축하여 직원검색, 전화번호검색, 조직도, 즐겨찾기 등 핵심 기능을 통합 제공하고 Android/iOS 공통 운영 기반과 iOS 대응 구조를 마련한다.` + +#### 설명안 B + +`기존 전화번호부 업무를 모바일 신규앱으로 전환하기 위한 프로젝트로, Baron SSO 로그인 연계와 조직/직원 정보 조회 기능을 중심으로 1차 서비스를 구축한다.` + +### 2.4 기대 성과 + +아래 문안 중 하나를 그대로 입력하면 된다. + +#### 기대성과안 A + +`사내 직원검색 및 조직도 조회 업무를 모바일에서 일원화하고, Android/iOS 공통 신규앱 기반의 인증 및 운영 체계를 확보하여 사용자 접근성과 유지보수 효율을 높인다.` + +#### 기대성과안 B + +`기존 분산된 연락처 조회 업무를 통합하고, Baron SSO 연계 표준 로그인 체계를 Android/iOS 공통으로 적용하여 향후 기능 확장과 서비스 안정화 기반을 확보한다.` + +## 3. 대시보드 카드 노출용 요약 문안 + +통합 화면 카드에 보일 수 있도록 짧게 정리한 문안이다. + +### 3.1 프로젝트 표시명 + +`TDC114 신규앱 구축` + +### 3.2 현재업무 표시 문안 + +`Baron SSO 로그인 연계 및 직원검색/조직도 1차 구축` + +대안: + +- `신규앱 기본 기능 개발 및 인증 연동` +- `모바일 전화번호부 앱 1차 기능 구현` + +### 3.3 목표일 표시 기준 + +`26.08.28 완료 목표` + +## 4. 업무 계획 입력 초안 + +업무 계획 화면에서 `목표 -> 업무 -> 세부업무` 구조로 입력하기 쉽게 정리했다. + +### 4.1 목표 1 + +| 항목 | 내용 | +| --- | --- | +| 목표명 | `신규앱 인증/접속 기반 구축` | +| 업무성격 | `자료조사` 또는 `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-02 ~ 2026-07-17` | +| 수행기간 | `2026-07-02 ~ 2026-07-17` | +| 예상 M/H | `24.0h` | + +#### 업무 1.1 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `Baron SSO 로그인 연계 설계` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-02 ~ 2026-07-08` | +| 수행기간 | `2026-07-02 ~ 2026-07-08` | +| 비고 | `Hosted Login, PKCE, Callback 정책 반영` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `OIDC/PKCE 인증 흐름 정의` | `2026-07-02 ~ 2026-07-04` | `2026-07-02 ~ 2026-07-04` | `인증 URL, state, code verifier 흐름 정리` | +| `Callback 처리 정책 정리` | `2026-07-05 ~ 2026-07-08` | `2026-07-05 ~ 2026-07-08` | `callback URL, 예외 응답, 세션 연결 기준 정리` | + +#### 업무 1.2 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `앱 환경설정 및 실행 구조 정비` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-06 ~ 2026-07-13` | +| 수행기간 | `2026-07-06 ~ 2026-07-13` | +| 비고 | `환경값, 빌드 설정, 실행 경로 정리` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `환경변수 및 빌드 설정 정리` | `2026-07-06 ~ 2026-07-09` | `2026-07-06 ~ 2026-07-09` | `실행 환경값, 빌드 설정, 앱 실행 조건 정비` | +| `개발/테스트 실행 경로 점검` | `2026-07-10 ~ 2026-07-13` | `2026-07-10 ~ 2026-07-13` | `실행 경로, 테스트 기준, 로그 확인 절차 정리` | + +#### 업무 1.3 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `로그인 기본 동작 검증` | +| 업무성격 | `내용정리` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-14 ~ 2026-07-17` | +| 수행기간 | `2026-07-14 ~ 2026-07-17` | +| 비고 | `실기기/테스트 환경 기준 검증` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `로그인 시나리오 점검` | `2026-07-14 ~ 2026-07-15` | `2026-07-14 ~ 2026-07-15` | `정상 로그인 및 기본 이동 흐름 점검` | +| `예외 케이스 확인` | `2026-07-16 ~ 2026-07-17` | `2026-07-16 ~ 2026-07-17` | `실패, 취소, 재시도 케이스 확인` | + +### 4.2 목표 2 + +| 항목 | 내용 | +| --- | --- | +| 목표명 | `직원검색/조직도 핵심 기능 구현` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 1명` | +| 계획기간 | `2026-07-20 ~ 2026-08-14` | +| 수행기간 | `2026-07-20 ~ 2026-08-14` | +| 예상 M/H | `48.0h` | + +#### 업무 2.1 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `직원검색 및 전화번호검색 기능 구현` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-07-20 ~ 2026-07-29` | +| 수행기간 | `2026-07-20 ~ 2026-07-29` | +| 비고 | `검색 조건, 결과 리스트, 상세 연결` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `검색 조건 및 입력 규칙 적용` | `2026-07-20 ~ 2026-07-23` | `2026-07-20 ~ 2026-07-23` | `이름/전화번호 검색 조건 및 입력 규칙 반영` | +| `검색 결과 리스트 구성` | `2026-07-24 ~ 2026-07-29` | `2026-07-24 ~ 2026-07-29` | `결과 리스트, 상세 진입, 빈 결과 처리` | + +#### 업무 2.2 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `가족사 필터 및 조직도 조회 구현` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 1명` | +| 계획기간 | `2026-07-27 ~ 2026-08-05` | +| 수행기간 | `2026-07-27 ~ 2026-08-05` | +| 비고 | `조직 탐색, 부서 목록, 정렬 규칙 반영` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `가족사 필터 구성` | `2026-07-27 ~ 2026-07-30` | `2026-07-27 ~ 2026-07-30` | `회사/조직 필터 선택 구조 반영` | +| `조직도 조회 및 정렬 규칙 반영` | `2026-07-31 ~ 2026-08-05` | `2026-07-31 ~ 2026-08-05` | `조직 탐색, 목록 정렬, 하위 이동 처리` | + +#### 업무 2.3 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `직원 상세/전화/문자 연계 구성` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-08-03 ~ 2026-08-10` | +| 수행기간 | `2026-08-03 ~ 2026-08-10` | +| 비고 | `상세정보, 전화걸기, 문자보내기 연계` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `직원 상세정보 화면 구성` | `2026-08-03 ~ 2026-08-06` | `2026-08-03 ~ 2026-08-06` | `부서/직위/연락처 등 상세 정보 구성` | +| `전화/문자 실행 연계` | `2026-08-07 ~ 2026-08-10` | `2026-08-07 ~ 2026-08-10` | `전화걸기, 문자보내기 외부 앱 연계` | + +#### 업무 2.5 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `iOS 대응 구조 및 실행 검토` | +| 업무성격 | `자료조사` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-08-11 ~ 2026-08-14` | +| 수행기간 | `2026-08-11 ~ 2026-08-14` | +| 비고 | `iOS 실행 조건, 링크 처리, 배포 준비 항목 점검` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `iOS 로그인/링크 처리 검토` | `2026-08-11 ~ 2026-08-12` | `2026-08-11 ~ 2026-08-12` | `iOS callback 처리, 링크 연결, 정책 차이 점검` | +| `iOS 배포 준비 항목 정리` | `2026-08-13 ~ 2026-08-14` | `2026-08-13 ~ 2026-08-14` | `서명, 배포 방식, 테스트 기준 정리` | + +#### 업무 2.4 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `즐겨찾기 및 화면 UX 보정` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 1명` | +| 계획기간 | `2026-08-08 ~ 2026-08-14` | +| 수행기간 | `2026-08-08 ~ 2026-08-14` | +| 비고 | `로컬 저장, 화면 사용성 개선` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `즐겨찾기 저장 기능 반영` | `2026-08-08 ~ 2026-08-11` | `2026-08-08 ~ 2026-08-11` | `로컬 저장 및 목록 반영` | +| `주요 화면 UX 보완` | `2026-08-12 ~ 2026-08-14` | `2026-08-12 ~ 2026-08-14` | `화면 동선, 선택 상태, 가독성 보정` | + +### 4.3 목표 3 + +| 항목 | 내용 | +| --- | --- | +| 목표명 | `안정화 및 운영 전환 준비` | +| 업무성격 | `자료조사` | +| 업무수행자 | `문형석 외 2명` | +| 계획기간 | `2026-08-17 ~ 2026-08-28` | +| 수행기간 | `2026-08-17 ~ 2026-08-28` | +| 예상 M/H | `36.0h` | + +#### 업무 3.1 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `통합 테스트 및 예외 시나리오 점검` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 1명` | +| 계획기간 | `2026-08-17 ~ 2026-08-21` | +| 수행기간 | `2026-08-17 ~ 2026-08-21` | +| 비고 | `로그인, 검색, 조직도, 상세 기능 검증` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `핵심 기능 통합 테스트` | `2026-08-17 ~ 2026-08-19` | `2026-08-17 ~ 2026-08-19` | `로그인, 검색, 조직도, 상세 흐름 점검` | +| `예외 시나리오 및 오류 확인` | `2026-08-20 ~ 2026-08-21` | `2026-08-20 ~ 2026-08-21` | `실패 케이스, 오류 메시지, 재시도 확인` | + +#### 업무 3.2 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `배포 환경 및 운영 체크리스트 정리` | +| 업무성격 | `내용정리` | +| 업무수행자 | `문형석` | +| 계획기간 | `2026-08-20 ~ 2026-08-25` | +| 수행기간 | `2026-08-20 ~ 2026-08-25` | +| 비고 | `배포 기준, 장애 대응, 운영 절차 정리` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `배포 기준 정리` | `2026-08-20 ~ 2026-08-22` | `2026-08-20 ~ 2026-08-22` | `배포 버전, 환경, 점검 항목 정리` | +| `운영 절차 및 장애 대응 정리` | `2026-08-23 ~ 2026-08-25` | `2026-08-23 ~ 2026-08-25` | `운영 절차, 문의 대응, 장애 체크 정리` | + +#### 업무 3.3 + +| 항목 | 내용 | +| --- | --- | +| 업무명 | `시범 운영 및 보완사항 반영` | +| 업무성격 | `기능구현` | +| 업무수행자 | `문형석 외 2명` | +| 계획기간 | `2026-08-24 ~ 2026-08-28` | +| 수행기간 | `2026-08-24 ~ 2026-08-28` | +| 비고 | `피드백 반영 후 1차 마무리` | + +세부업무: + +| 세부업무명 | 계획기간 | 수행기간 | 설명 | +| --- | --- | --- | --- | +| `사용자 피드백 반영` | `2026-08-24 ~ 2026-08-26` | `2026-08-24 ~ 2026-08-26` | `시범 운영 중 확인된 보완사항 반영` | +| `1차 완료 정리` | `2026-08-27 ~ 2026-08-28` | `2026-08-27 ~ 2026-08-28` | `완료 보고 및 운영 전환 정리` | + +## 5. 업무 관리 입력 초안 + +업무 관리 화면의 목표 제목은 아래처럼 넣으면 자연스럽다. + +| 목표 | 입력 문안 | +| --- | --- | +| 목표 1 | `신규앱 인증/접속 기반 구축` | +| 목표 2 | `직원검색/조직도 핵심 기능 구현` | +| 목표 3 | `안정화 및 운영 전환 준비` | + +### 5.1 확인사항 + +확인사항 카드에는 아래 문안이 적합하다. + +#### 확인사항 1 + +- 제목: `Baron SSO 연계 정보 확정` +- 구분: `등록` +- 내용: `OIDC 연계값, Callback URL, 환경별 접속 경로 확정 필요` + +#### 확인사항 2 + +- 제목: `조직/직원 데이터 기준 정합성 확인` +- 구분: `확인` +- 내용: `신규앱 노출 항목과 실제 조직 데이터 매핑 기준 확인 필요` + +#### 확인사항 3 + +- 제목: `Android/iOS 배포 방식 및 운영 기준 협의` +- 구분: `공유` +- 내용: `Android/iOS 배포 경로와 운영 인수 기준 사전 협의 필요` + +#### 확인사항 4 + +- 제목: `iOS 링크/배포 정책 확인` +- 구분: `확인` +- 내용: `iOS Universal Link, 서명, 배포 절차 적용 가능 여부 확인 필요` + +## 6. 로드맵 요약 문안 + +로드맵 또는 상위 보고용으로는 아래 정도면 충분하다. + +### 6.1 7월 + +- 인증 연계 구조 확정 +- 앱 기본 실행 및 로그인 흐름 정비 +- 개발/테스트 환경 기준 통일 + +### 6.2 8월 + +- 직원검색, 전화번호검색, 조직도, 상세 기능 집중 구현 +- 즐겨찾기 및 주요 UX 보완 +- iOS 로그인/링크 처리 및 배포 준비 항목 검토 + +### 6.3 8월 후반 + +- 통합 테스트 +- 시범 운영 +- 보완사항 반영 및 1차 완료 + +## 7. 변경사항 입력 초안 + +변경사항 탭에는 아래처럼 기록하면 무난하다. + +| 일자 | 변경내용 | +| --- | --- | +| 2026-07-02 | 신규어플 프로젝트 등록 및 기본정보 입력 | +| 2026-07-10 | 인증 연계 구조 및 환경설정 범위 확정 | +| 2026-07-29 | 직원검색/조직도 1차 기능 개발 범위 반영 | +| 2026-08-21 | 통합 테스트 결과 및 보완사항 반영 | +| 2026-08-28 | 1차 구축 완료 및 운영 전환 기준 정리 | + +## 8. 최종 추천 입력 세트 + +시간이 없으면 아래만 우선 입력해도 된다. + +### 기본정보 + +- 프로젝트명: `TDC114 신규앱 구축` +- 시작일: `2026-07-02` +- 종료일: `2026-08-28` +- 분야: `시스템화` +- 관리상태: `정상` +- 수행팀: `IS 3팀` +- 업무수행자: `문형석 외 2명` +- 협업팀: `기술개발센터, Baron SSO 연계부서` +- 프로젝트 설명: `Baron SSO 연계 기반의 TDC114 신규 모바일 앱을 구축하여 직원검색, 전화번호검색, 조직도, 즐겨찾기 등 핵심 기능을 통합 제공하고 Android/iOS 공통 운영 기반과 iOS 대응 구조를 마련한다.` +- 기대 성과: `사내 직원검색 및 조직도 조회 업무를 모바일에서 일원화하고, Android/iOS 공통 신규앱 기반의 인증 및 운영 체계를 확보하여 사용자 접근성과 유지보수 효율을 높인다.` + +### 대표 목표 + +1. `신규앱 인증/접속 기반 구축` +2. `직원검색/조직도 핵심 기능 구현` +3. `안정화 및 운영 전환 준비` + +### 카드 표시용 + +- 현재업무: `Baron SSO 로그인 연계 및 직원검색/조직도 1차 구축` +- 목표일: `26.08.28 완료 목표` + +## 9. 비고 + +- `수행팀`, `업무수행자`, `협업팀`은 실제 대시보드 선택값에 맞춰 마지막에만 조정하면 된다. +- 프로젝트명을 조금 더 실무형으로 보이게 하려면 `구축`, 조금 더 계속과제 느낌으로 보이게 하려면 `고도화`를 쓰면 된다. +- 핵심 추진 프로젝트 체크 여부는 팀 운영 방식에 따라 다르지만, 현재 성격상 체크하는 편이 자연스럽다. diff --git a/docs/tdc114plus-development-decision-brief-2026-07-01.md b/docs/guide_tdc114plus_development_decision_brief_2026-07-01.md similarity index 98% rename from docs/tdc114plus-development-decision-brief-2026-07-01.md rename to docs/guide_tdc114plus_development_decision_brief_2026-07-01.md index 4ecb6ea..0726955 100644 --- a/docs/tdc114plus-development-decision-brief-2026-07-01.md +++ b/docs/guide_tdc114plus_development_decision_brief_2026-07-01.md @@ -12,7 +12,7 @@ | 항목 | 결정 | | --- | --- | | 로그인/가입 | 앱 자체 회원가입은 제공하지 않는다. Baron SSO에 이미 등록된 사용자만 사용 가능하다. | -| 앱 실행 로그인 | 사용자는 앱 실행 시 Baron SSO 로그인 방식으로 진입한다. 로그인창에 전화번호 입력 후 로그인 버튼을 누르면 Baron SSO 서버 등록 인원 여부를 확인하고, 등록 인원이면 앱 사용을 허용한다. | +| 앱 실행 로그인 | 사용자는 앱 실행 시 앱의 `Baron SSO로 로그인` 버튼으로 Baron SSO Hosted Login 화면에 진입한다. 휴대폰번호 입력과 문자/메일 링크 인증은 Baron SSO 화면에서 처리하고, 인증 성공 후 App Link callback과 PKCE token 교환으로 앱 로그인을 완료한다. | | 데이터 연계 | 신규 앱의 개인 정보와 조직 정보는 Baron SSO의 `orgFront` 데이터와 연계하여 추출한다. | | 1차 제외 기능 | 기존 앱 기능 중 공지사항과 전자결재는 개발 중간 단계까지 구현을 보류한다. | | 플랫폼 특화 제외 | 수신전화식별과 수신팝업은 1차 범위에서 보류한다. iOS에서 동일 방식 지원이 어렵고, 우선 기본 기능에 집중한다. | diff --git a/docs/guide_tdc114plus_script_automation_plan_2026-07-02.md b/docs/guide_tdc114plus_script_automation_plan_2026-07-02.md new file mode 100644 index 0000000..4e5dd04 --- /dev/null +++ b/docs/guide_tdc114plus_script_automation_plan_2026-07-02.md @@ -0,0 +1,142 @@ +# tdc114plus 테스트 자동화 스크립트 계획 + +작성일: 2026-07-02 +상태: v1.0 초기 스크립트 기준 + +목적: `docs/00_policy_tdc114plus_testing_2026-07-02.md`에 정의한 테스트 정책을 실제 `scripts/` 파일과 연결하고, 즉시 사용 가능한 스크립트와 향후 구현이 필요한 scaffold 스크립트를 구분한다. + +## 1. 즉시 사용 가능한 스크립트 + +| 스크립트 | 목적 | 실행 예 | +| --- | --- | --- | +| `scripts/format-dart.sh` | Docker Flutter 이미지에서 `dart format lib test` 실행 | `./scripts/format-dart.sh` | +| `scripts/quality-gate.sh` | `flutter analyze`, `flutter test` 순차 실행 | `./scripts/quality-gate.sh` | +| `scripts/api-smoke.sh` | `TDC114_API_BASE` 대상 Baron SSO 연동 API 최소 smoke test 실행. `TDC114_SMOKE_PHONE`이 있으면 `TDC114_SMOKE_AUTH_FLOW`에 따라 legacy `phone-login` 호환 경로 또는 headless 링크 흐름을 확인 | `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh` | +| `scripts/smoke.env.example` | authenticated smoke용 로컬 env 예시 파일. `scripts/.env.smoke.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE` 값을 넣어 사용 | `cp scripts/smoke.env.example scripts/.env.smoke.local` | +| `scripts/smoke.staging.env.example` | staging Baron SSO 검증용 env 예시 파일. `scripts/.env.staging.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`, optional expected label 값을 넣어 사용 | `cp scripts/smoke.staging.env.example scripts/.env.staging.local` | +| `scripts/bootstrap-baron-api-env.sh` | Baron SSO API worktree의 `.env.sample`을 바탕으로 로컬 smoke용 `.env`를 생성하고 localhost/알림 비활성 override를 추가 | `./scripts/bootstrap-baron-api-env.sh` | +| `scripts/check-baron-api-env.sh` | Baron SSO API worktree의 `.env`, compose, config, Docker runtime 준비 상태를 점검해 API smoke 가능 여부를 빠르게 확인 | `./scripts/check-baron-api-env.sh` | +| `scripts/manual-postlogin-run.sh` | Android target에 `dart-define`을 포함한 `flutter run` 경로로 앱을 띄운다. 기본은 Baron SSO Hosted Login + PKCE 진입이며, 예외적으로만 legacy local `phone-login` bootstrap으로 post-login 상태를 seed 한다. 내부 호출은 `flutter-docker.sh run ...` 형태를 사용한다 | `TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local TDC114_FLUTTER_DEVICE_ID= ./scripts/manual-postlogin-run.sh` | +| `scripts/generate-release-report.sh` | git 상태와 릴리스 체크리스트 report 생성 | `./scripts/generate-release-report.sh` | +| `scripts/perf_smoke.sh` | 현재 앱/테스트 파일 수와 기본 상태 출력 | `./scripts/perf_smoke.sh` | + +## 2. Scaffold 상태의 스크립트 + +아래 스크립트는 파일은 존재하지만, 기반 기능이 아직 없으므로 실행 시 scaffold 안내와 함께 종료한다. + +| 스크립트 | 현재 상태 | 완성 조건 | +| --- | --- | --- | +| `scripts/mock-server.sh` | `status`, `stop`은 가능. `start`는 미구현 안내 | API 계약 기반 mock server 구현 | +| `scripts/save-snapshots.sh` | snapshot source가 있으면 report 경로로 복사 | widget/integration screenshot 또는 snapshot 생성 체계 | +| `scripts/integration_tests.sh` | `TDC114_API_BASE`를 Dart define으로 주입해 Android 기준 `flutter drive --driver=test_driver/integration_driver.dart --target=integration_test/app_smoke_test.dart`로 실행한다. Android preflight는 실기기 우선 기준이며 emulator는 fallback이다. `TDC114_SMOKE_PHONE`이 있으면 실제 로그인 smoke까지 확장한다. `TDC114_SMOKE_ASSUME_LOGGED_IN=1`일 때 기본 seed는 mock이고, legacy `phone-login` bootstrap은 명시적 예외 모드다 | `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/integration_tests.sh` | +| `scripts/redteam/run_all.sh` | 현재 AI 기능 없음 안내 | LLM/프롬프트 기반 기능이 실제 추가될 때 | + +## 3. Phase별 사용 기준 + +### Phase 3: Mock 기반 1차 UI + +필수: + +```bash +./scripts/format-dart.sh +./scripts/quality-gate.sh +``` + +선택: + +```bash +./scripts/save-snapshots.sh +``` + +단, snapshot 산출물이 생긴 뒤 사용한다. + +### Phase 4: 실제 API 연동 + +필수 후보: + +```bash +TDC114_API_BASE=https://staging.example.com ./scripts/api-smoke.sh +./scripts/check-baron-api-env.sh +TDC114_API_BASE=https://staging.example.com ./scripts/integration_tests.sh +``` + +현재 구현 상태: + +- `app/integration_test/app_smoke_test.dart` scaffold 완료 +- 로그인 화면 표시, 빈 전화번호 validation smoke는 항상 실행 가능 +- `TDC114_SMOKE_PHONE`이 있으면 실제 로그인 후 직원검색 화면 진입 smoke까지 확장 +- `scripts/.env.smoke.local`이 있으면 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`을 자동으로 읽는다 +- `api-smoke.sh`는 optional `TDC114_SMOKE_AUTH_FLOW=phone-login|link`를 지원한다. staging 신규 승인 로그인 검증은 `link`를 사용한다 +- staging 검증 시에는 `TDC114_SMOKE_ENV_FILE=scripts/.env.staging.local` 방식으로 별도 env 파일을 지정할 수 있다 +- `scripts/integration_tests.sh`는 Android 기준 `flutter drive`와 `test_driver/integration_driver.dart`를 사용해 현재 Flutter 버전의 unit/integration 혼합 실행 제한을 피한다 +- `scripts/integration_tests.sh`는 Android target 정보가 주어지면 `scripts/check-android-device-env.sh`를 먼저 호출해 실기기/에뮬레이터 `offline`/`refused` 상태를 선제 차단한다 +- `scripts/integration_tests.sh`는 `No supported devices connected.` 실패를 만나면 Android 실기기 우선, emulator fallback 또는 추가 desktop/web runner 필요 안내를 함께 출력 +- `scripts/integration_tests.sh`는 optional `TDC114_SMOKE_EXPECTED_NAME`, `TDC114_SMOKE_EXPECTED_TENANT_LABEL`을 Dart define으로 전달해 staging 계정 기준 기대 텍스트를 추가 검증할 수 있다 + +실환경 연동 완료 조건: + +- Baron SSO backend 또는 staging API endpoint 실행 +- Baron SSO `.env` 및 `config/` runtime 파일 준비 +- 실제 로그인까지 확인할 경우 민감정보 없는 `TDC114_SMOKE_PHONE` 테스트 계정 준비 +- staging 또는 local mock API endpoint 확정 +- 민감정보 없는 test fixture 사용 + +staging 승인 로그인 검증 절차: + +- 상세 시나리오는 `docs/scenario_staging_baron_sso_login_verification_2026-07-06.md`를 따른다. + +### Phase 5: 핵심 액션 + +필수 후보: + +```bash +./scripts/quality-gate.sh +./scripts/perf_smoke.sh +``` + +추가 예정: + +- 전화걸기/문자보내기 URL 생성 테스트 +- 즐겨찾기 로컬 저장소 테스트 + +### Phase 6: 빌드/배포 준비 + +필수 후보: + +```bash +./scripts/generate-release-report.sh +``` + +추가 예정: + +- Android debug APK build wrapper +- 수동 검증 체크리스트 자동 생성 + +## 4. 운영 원칙 + +- 문서에 명령을 추가할 때는 실제 `scripts/` 파일도 함께 추가하거나 scaffold 상태를 명시한다. +- scaffold 스크립트는 조용히 성공하지 않고, 미구현이면 non-zero exit code로 종료한다. +- 실제 CI gate에 연결할 수 있는 스크립트는 `quality-gate.sh`부터 시작한다. +- AI/LLM redteam 자동화는 현재 앱 범위 밖이므로 `redteam/run_all.sh`는 보류 상태로 유지한다. +- 자동화 스크립트 실행 결과는 `docs/test-logs/YYYY-MM-test-execution-log.md`에 월별로 누적 기록한다. + +## 5. Playwright MCP 활용 예정 + +Playwright MCP는 향후 web/preview 기반 화면 확인이 가능해지는 시점부터 테스트 정책에 활용한다. + +우선 적용 후보: + +- 로그인 화면 smoke test +- 직원목록/검색/가족사 필터 화면 회귀 확인 +- 직원 상세 화면 표시 확인 +- screenshot 기반 UI 리뷰 자료 생성 +- 텍스트 overflow, 주요 버튼 표시, 라우팅 이동 확인 + +현재는 Flutter web/preview 실행 방식이 확정되지 않았으므로 별도 `scripts/playwright-*` 파일은 만들지 않는다. 실행 방식이 확정되면 Playwright MCP 시나리오 문서와 월별 테스트 로그 기록 형식을 추가한다. + +Playwright MCP 테스트 실행 전 절차: + +1. 실행 가능한 Flutter web/preview 또는 Baron SSO 화면 대상이 준비되면 사용자에게 먼저 알리고 확인을 받는다. +2. 사용자 확인 후 `docs/00_policy_tdc114plus_testing_2026-07-02.md`와 본 문서에 테스트 정의, 절차, 성공 기준, 로그 기록 방식을 추가한다. +3. 문서 갱신 이후 Playwright MCP 테스트를 실행한다. +4. 실행 결과는 `docs/test-logs/YYYY-MM-test-execution-log.md`에 누적 기록한다. diff --git a/docs/policy_android_app_install_execution_2026-07-06.md b/docs/policy_android_app_install_execution_2026-07-06.md new file mode 100644 index 0000000..15601b8 --- /dev/null +++ b/docs/policy_android_app_install_execution_2026-07-06.md @@ -0,0 +1,323 @@ +# Android 앱 설치/실행 재발 방지 정책 + +작성일: 2026-07-06 +상태: v1.4 + +목적: Windows Android Studio emulator + WSL/Docker Flutter 환경과 Android 공기계 USB 연결 환경에서 `tdc114plus` 앱을 테스트할 때, 환경값 누락과 ADB 연결 장애로 같은 문제를 반복하지 않도록 설치/실행 정책을 고정한다. + +관련 문서: + +- `docs/policy_android_studio_wsl_adb_2026-07-03.md` +- `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` +- `scripts/README.md` + +## 1. 이번 장애 요약 + +2026-07-06에 아래 문제가 재현되었다. + +- 최신 코드를 빌드한 뒤 `adb install`로 debug APK만 직접 설치했다. +- 그러나 이 앱은 `TDC114_API_BASE` 같은 runtime 값을 `--dart-define`으로 받는다. +- APK 직접 설치 방식은 이 값을 전달하지 못한다. +- 결과적으로 앱은 기본값 `https://sso.example.invalid`를 바라보게 되었고, 직원 목록 API가 실패했다. +- 사용자는 코드가 반영되지 않았거나 필터 버그가 남아 있다고 오해할 수 있었다. + +핵심 원인: + +- 문제는 코드 수정 자체가 아니라 `설치 방식이 앱의 runtime config 구조와 맞지 않은 것`이었다. + +## 2. 필수 원칙 + +- `tdc114plus` Android 수동 검증 기본 경로는 `flutter run`이다. +- `TDC114_API_BASE`가 필요한 앱 실행은 반드시 `dart-define` 포함 경로로 띄운다. +- `adb install` 또는 APK 파일 직접 설치는 기본 검증 경로로 사용하지 않는다. +- local Baron SSO 검증은 emulator 기준 `http://10.0.2.2:5000`을 사용한다. +- 앱/API 버그 판단 전에는 먼저 `./scripts/api-smoke.sh`로 backend 상태를 확인한다. +- Windows `adb.exe devices`에서 대상 emulator가 `device` 상태로 안정화되기 전에는 WSL/Docker Android 스크립트를 실행하지 않는다. +- 2026-07-08 기준 Windows Android Studio emulator + Docker Flutter 표준 연결 방식은 `ADB_SERVER_SOCKET=tcp::5037`이다. +- `TDC114_ADB_CONNECT_ADDRESS=:` 직접 연결 방식은 Windows ADB 서버 공유 방식이 실패하거나 integration test의 VM service port forwarding 이슈가 확인된 경우에만 보조 경로로 사용한다. +- 2026-07-08 이후 신규 수동 기능점검의 기본 target은 가능하면 Android 공기계 USB 연결 방식으로 전환한다. +- emulator 경로는 보조/fallback으로 보존하되, 물리 키보드 한글 입력이나 emulator portproxy 문제를 해결하기 위해 emulator 설정을 반복하지 않는다. +- 공기계에서는 `10.0.2.2`를 사용할 수 없으므로 `adb reverse tcp:5000 tcp:5000` + `TDC114_API_BASE=http://127.0.0.1:5000`을 우선 사용한다. +- USB 없는 독립형 실기기 검증에서는 `TDC114_API_BASE=https://`를 사용하고 `TDC114_SKIP_SESSION_BOOTSTRAP=true`로 로컬 bootstrap/mocking을 끈다. +- 2026-07-08 이후 로그인과 데이터 소스를 분리해야 하면 `TDC114_AUTH_API_BASE`, `TDC114_DIRECTORY_API_BASE`, `TDC114_ORGANIZATION_API_BASE`를 별도로 지정할 수 있다. 값을 지정하지 않으면 모두 `TDC114_API_BASE`를 사용한다. + +## 3. 허용 경로와 금지 경로 + +### 3.1 기본 허용 경로 + +공기계 USB 수동 기능점검을 우선한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local \ +TDC114_FLUTTER_DEVICE_ID= \ +./scripts/manual-postlogin-run.sh +``` + +사전 조건: + +- Windows PowerShell `adb.exe devices`에서 공기계가 `device` 상태다. +- `adb reverse tcp:5000 tcp:5000`이 적용되어 있다. +- `scripts/.env.android-device.local`의 `TDC114_API_BASE`는 `http://127.0.0.1:5000`이다. + +### 3.1-B USB 없는 독립형 실기기 허용 경로 + +staging 또는 production 공개 API에 직접 붙는 실기기 검증은 아래 경로를 사용한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.staging.local \ +TDC114_FLUTTER_DEVICE_ID= \ +./scripts/manual-postlogin-run.sh +``` + +사전 조건: + +- `TDC114_API_BASE`는 `https://...` 공개 HTTPS Baron API 주소다. +- 필요 시 로그인은 staging, 직원/조직 데이터는 production으로 분리 주입할 수 있다. +- `TDC114_SKIP_SESSION_BOOTSTRAP=true`가 설정되어 있다. +- 로그인은 앱의 `Baron SSO로 로그인` 버튼에서 Hosted Login을 열고, App Link callback과 PKCE token 교환으로 완료한다. +- USB는 최초 설치/실행 후 분리 가능해야 한다. + +### 3.1-A emulator fallback 허용 경로 + +emulator를 쓸 경우 아래 경로만 허용한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +./scripts/manual-postlogin-run.sh +``` + +용도: + +- post-login 상태 수동 기능 점검 +- local API base URL 포함 실행 +- 실제 phone-login bootstrap 또는 mock fallback 포함 실행 + +실제 로그인 화면 검증이 필요하면 RP issuer/client/callback 값이 맞는지 확인한 뒤 `Baron SSO로 로그인` 버튼에서 외부 Hosted Login을 연다. + +### 3.2 조건부 허용 경로 + +```bash +ADB_SERVER_SOCKET=tcp::5037 \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +./scripts/integration_tests.sh +``` + +용도: + +- integration smoke +- post-login 가정 자동 검증 + +### 3.3 금지 경로 + +아래 방식은 정책상 기본 검증 경로로 금지한다. + +```bash +adb install app-debug.apk +``` + +금지 이유: + +- `TDC114_API_BASE` +- `TDC114_PREAUTH_*` +- `TDC114_SMOKE_USE_MOCK_DIRECTORY` + +같은 runtime define 값이 전달되지 않는다. + +예외: + +- 단순 설치 가능 여부 확인 +- 패키지명 확인 +- manifest 수준 점검 + +이 경우에도 `기능 검증용 실행`으로 간주하지 않는다. + +## 3-A. 직원검색 초기 기본값 정책 + +직원검색 첫 진입 시 기본값은 아래처럼 고정한다. + +- 초기 조회 범위: 로그인 사용자의 회사급 범위 +- 상단 기본 노출 칩: 회사급 칩 + 본인팀 칩 +- 금지 동작: 앱 시작 직후 phone/name 재조회로 본인 1명 결과에 맞춰 초기 범위를 다시 팀 또는 개인 단위로 축소하는 로직 + +정책 이유: + +- 첫 진입에서 사용자가 자기 자신만 보이면 디렉터리 앱 기본 UX와 맞지 않는다. +- 조직/회사 단위 탐색이 시작점이어야 하고, 본인팀은 빠른 재선택용 칩으로 유지하면 충분하다. +- `회사급 범위 조회`와 `본인팀 칩 고정 노출`은 서로 다른 정책이므로 둘 다 함께 유지해야 한다. + +## 4. 실행 전 체크 순서 + +Android 기능점검 전에는 아래 순서를 고정한다. + +### 4.1 공기계 USB 기본 순서 + +1. Windows PowerShell에서 `adb.exe devices` 확인 +2. 공기계가 `device` 상태인지 확인 +3. `./scripts/api-smoke.sh` 통과 확인 +4. `adb reverse tcp:5000 tcp:5000` 적용 +5. `scripts/check-android-device-env.sh` 통과 확인 +6. `manual-postlogin-run.sh` 실행 + +중단 기준: + +- Windows `adb.exe devices`에서 공기계가 `unauthorized`이면 단말 RSA 승인 전까지 진행하지 않는다. +- `adb reverse`가 실패하면 LAN IP 방식으로 바꾸기 전에는 `127.0.0.1:5000` 기준 앱 실행을 하지 않는다. +- 앱에서 HTTP API가 차단되면 debug 전용 cleartext 허용 설정을 먼저 검토한다. + +### 4.1-B USB 없는 독립형 실기기 순서 + +1. Windows PowerShell에서 `adb.exe devices` 확인 +2. 공기계 또는 실사용 폰이 `device` 상태인지 확인 +3. `TDC114_API_BASE=https://`로 env를 준비 +4. `TDC114_SKIP_SESSION_BOOTSTRAP=true` 상태로 `manual-postlogin-run.sh` 실행 +5. 앱 첫 화면에서 `Baron SSO로 로그인` 수행 +6. 문자 또는 메일의 링크 승인 완료 +7. `직원검색`, `organization/tenants`, `organization/orgchart` 화면 동작 확인 +8. 앱이 열린 뒤 USB를 분리하고 같은 동작이 유지되는지 재확인 + +중단 기준: + +- 공개 HTTPS base URL이 확정되지 않았으면 진행하지 않는다. +- Hosted Login, App Link callback, PKCE token 교환이 staging/production 환경에서 준비되지 않았으면 local mode로 되돌리지 않고 RP 설정과 서버 준비 상태를 먼저 맞춘다. +- 승인 링크 수신 채널이 준비되지 않았으면 USB 없는 독립 검증 완료로 간주하지 않는다. + +### 4.2 emulator fallback 순서 + +1. Windows PowerShell에서 `adb.exe devices` 확인 +2. 대상 emulator가 `device` 상태인지 확인 +3. `./scripts/api-smoke.sh` 통과 확인 +4. Windows ADB server `5037 -> 127.0.0.1:5037` portproxy와 방화벽 rule 확인 +5. 그 다음 `manual-postlogin-run.sh` 또는 `integration_tests.sh` 실행 + +중단 기준: + +- Windows `adb.exe devices`에서 대상 emulator가 `offline`이면 WSL/Docker 스크립트를 실행하지 않는다. +- Windows `adb.exe devices`가 `device`인데 Docker local ADB 직접 연결이 `offline`이면, 직접 emulator port 연결을 반복하지 않고 `ADB_SERVER_SOCKET=tcp::5037` 방식으로 전환한다. +- Android Studio Device Manager의 표시 이름과 실제 AVD 폴더 이름이 달라도, `C:\Users\user\.android\avd`에 저장된 AVD 수와 Windows `adb.exe devices` 상태를 우선 기준으로 삼는다. +- AVD 프로세스가 `terminated`되거나 Android Studio가 `failed to connect within 5 minutes`를 표시하면 WSL/Docker 확인으로 넘어가지 않고 Windows 단독 emulator 부팅 안정화부터 처리한다. + +완료 기준: + +- 앱이 local API 기준으로 실행된다 +- 직원검색 또는 로그인 화면이 기대한 경로로 열린다 + +## 5. 포트가 왜 바뀌는가 + +질문: 코드 수정이 생길 때마다 포트가 바뀌는가? + +답: 아니다. `코드 수정 때문에 포트가 바뀌는 것이 아니다.` + +포트가 바뀌는 이유는 보통 아래 중 하나다. + +- 새 emulator 인스턴스를 띄웠다 +- 기존 emulator를 끄고 다른 emulator 번호로 다시 띄웠다 +- `emulator-5554`, `5556`, `5558`처럼 여러 인스턴스가 섞였다 +- Windows `portproxy`가 그 emulator의 adbd port와 맞지 않았다 + +즉: + +- 코드 변경 +- Flutter rebuild +- hot reload + +이 자체는 emulator port를 바꾸지 않는다. + +## 6. 반복 절차를 줄이는 고정 운영안 + +반복을 줄이기 위해 아래 운영안을 기본값으로 사용한다. + +### 6.1 1대 고정 원칙 + +- 수동 검증용 emulator는 한 번에 1대만 켠다. +- 기본 장비는 당일 Windows `adb.exe devices`에서 `device`로 확인된 emulator 1대다. +- 다른 emulator가 `offline`으로 남아 있거나 여러 인스턴스가 섞이면 Android Studio/ADB 상태를 먼저 정리한다. + +효과: + +- 어떤 emulator가 현재 대상인지 혼선이 줄어든다. +- `offline`/`refused` 원인 추적이 쉬워진다. + +### 6.2 Windows ADB 서버 공유 원칙 + +- Docker/WSL Flutter는 기본적으로 Windows ADB server를 공유한다. +- 표준 환경변수는 `ADB_SERVER_SOCKET=tcp::5037`이다. +- Windows 관리자 PowerShell에서 `0.0.0.0:5037 -> 127.0.0.1:5037` portproxy와 방화벽 rule을 유지한다. +- Windows `adb.exe devices`에서 `emulator-5562 device`처럼 정상으로 보이면, Docker Flutter도 같은 Windows ADB server를 통해 장치를 인식해야 한다. +- 직접 emulator adbd port 연결이 `offline`으로 반복되면 해당 방식은 중단하고 Windows ADB server 공유 방식만 사용한다. + +효과: + +- Docker container 내부 ADB key 불일치로 인한 `offline`/`unauthorized` 반복을 줄인다. +- Windows에서 이미 정상 승인된 ADB 세션을 그대로 사용한다. + +### 6.3 명시 emulator portproxy 원칙 + +- 수동 검증 포트는 Windows `adb.exe devices`에서 확인한 emulator port에 맞춘다. +- 예: Windows 대상이 `emulator-5562`이면 `5562 -> 127.0.0.1:5562` portproxy와 방화벽 규칙을 확인한다. +- `TDC114_ADB_CONNECT_ADDRESS=:`는 보조 경로로만 명시한다. +- shutdown/startup 스크립트는 과거 고정 포트를 임의로 disconnect하지 않는다. + +효과: + +- 실제 대상 포트와 스크립트 포트가 어긋나는 일을 줄인다. + +### 6.4 APK 직접 설치 금지 + +- 코드 수정 후 수동 검증은 항상 `flutter run` 또는 `manual-postlogin-run.sh` +- APK 직접 설치는 설치 확인용 보조 수단으로만 사용 + +효과: + +- runtime define 누락 사고를 막는다. + +### 6.5 같은 세션 재사용 + +- emulator를 켠 뒤 가능한 한 끄지 않는다. +- `flutter run` 세션이 살아 있을 때는 hot reload/hot restart를 우선한다. +- 큰 설정 변경이 아닐 때는 재설치보다 같은 세션 재사용을 우선한다. + +효과: + +- rebuild/install 시간과 ADB 재연결 횟수가 줄어든다. + +## 7. 표준 명령 + +### 7.1 post-login 수동 기능점검 + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +ADB_SERVER_SOCKET=tcp::5037 \ +./scripts/manual-postlogin-run.sh +``` + +### 7.2 integration smoke + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +ADB_SERVER_SOCKET=tcp::5037 \ +./scripts/integration_tests.sh +``` + +### 7.3 backend 상태 확인 + +```bash +./scripts/api-smoke.sh +``` + +## 8. 내일부터의 운영 기준 + +- Android 수동 검증 기본 target은 USB 연결 공기계다. +- Android emulator는 fallback target으로 보존한다. +- Docker/WSL 기본 연결은 `ADB_SERVER_SOCKET=tcp::5037`로 명시한다. +- `TDC114_ADB_CONNECT_ADDRESS=:`는 직접 emulator port 연결이 필요한 예외 상황에만 사용 +- 실행 스크립트 기본값은 `manual-postlogin-run.sh` +- `adb install`은 기능검증용 실행으로 인정하지 않음 + +이 기준을 어기면 다시 아래 오판이 발생할 수 있다. + +- 코드 미반영으로 오해 +- API 장애로 오해 +- 필터 버그 미수정으로 오해 diff --git a/docs/policy_android_studio_wsl_adb_2026-07-03.md b/docs/policy_android_studio_wsl_adb_2026-07-03.md new file mode 100644 index 0000000..0118e71 --- /dev/null +++ b/docs/policy_android_studio_wsl_adb_2026-07-03.md @@ -0,0 +1,303 @@ +# Android Studio / WSL ADB 연동 재발 방지 정책 + +작성일: 2026-07-03 +상태: v1.3 Windows Android Studio emulator + WSL/Docker Flutter 기준 + +목적: Windows Android Studio emulator를 WSL 및 Docker 기반 Flutter CLI에서 사용할 때 발생한 ADB 연동 지연을 반복하지 않도록, 지연 원인과 동일 상황 발생 시 우선 처리 방식을 정책으로 고정한다. + +관련 문서: + +- `docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md` +- `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` +- `docs/dev_env_tdc114plus_setup_plan_2026-07-02.md` + +## 1. 적용 범위 + +본 정책은 아래 상황에 적용한다. + +- Windows Android Studio에서 Android emulator를 실행한다. +- Flutter CLI는 WSL 또는 Docker container 내부에서 실행한다. +- WSL/Docker Flutter에서 Windows emulator 또는 Android device를 인식해야 한다. +- `scripts/flutter-docker.sh devices` 또는 `scripts/integration_tests.sh`가 Android target을 필요로 한다. + +아래 상황은 본 정책의 직접 적용 대상이 아니다. + +- macOS 기반 iOS simulator +- WSL 내부 Android emulator 직접 설치 +- 실기기만 사용하고 Windows ADB server를 거치지 않는 구성 + +## 2. 기본 원칙 + +- Windows Android Studio emulator를 사용할 때는 Windows `adb.exe` 기준으로 먼저 device 상태를 확인한다. +- WSL에 Android SDK/ADB가 없다고 판단되면 WSL 내부 emulator 설치로 바로 우회하지 않는다. +- `adb -a -P 5037 nodaemon server` 방식은 1차 시도만 허용한다. +- `10048` bind 실패가 1회라도 재현되면 즉시 Windows `portproxy` 방식으로 전환한다. +- Docker Flutter에는 `ADB_SERVER_SOCKET`을 명시적으로 전달한다. +- 2026-07-08 확인 결과, Windows `adb.exe devices`가 `device`인데 Docker local ADB 직접 연결이 `offline`으로 반복될 수 있으므로 기본 연결은 `ADB_SERVER_SOCKET=tcp::5037` 방식으로 한다. +- `TDC114_ADB_CONNECT_ADDRESS=:` 기반 Docker local ADB server 방식은 `ADB_SERVER_SOCKET` 방식으로 integration test가 실제로 막힐 때만 보조 경로로 사용한다. +- Docker Flutter는 ADB key, Gradle, pub cache, Android SDK 하위 cache를 로컬 디렉터리에 유지한다. +- Android emulator에서 host API에 접근할 때는 `127.0.0.1`이 아니라 `10.0.2.2`를 우선 사용한다. +- Baron SSO backend, gateway, userfront, Ory runtime이 모두 살아 있는지 확인하기 전에는 Android 관련 테스트를 시작하지 않는다. +- integration test 실행 전에는 host 기준 `./scripts/api-smoke.sh`를 먼저 통과시킨다. +- 실행 결과와 장애 내용은 `docs/test-logs/YYYY-MM-test-execution-log.md`에 누적 기록한다. + +## 3. 지연 원인 + +2026-07-03 작업에서 확인한 주요 지연 원인은 아래와 같다. + +| 원인 | 영향 | 다음 대응 | +| --- | --- | --- | +| Windows ADB server가 `127.0.0.1:5037`에 먼저 바인딩됨 | WSL/Docker에서 직접 접근 불가 | `portproxy`로 `0.0.0.0:5037 -> 127.0.0.1:5037` 노출 | +| Android Studio, Device Manager, emulator, ADB client가 ADB server를 자동 재기동 | 기존 PID 종료 후에도 `adb -a` 재시도 실패 반복 | `adb -a` 반복 시도 금지 | +| `adb -a -P 5037 nodaemon server`가 `10048` 오류로 실패 | 외부 바인딩 방식 지연 | 1회 실패 후 `portproxy` 전환 | +| WSL 내부에 `adb`, `java`, `sdkmanager`, `emulator`가 없음 | WSL 단독 Android 환경 전환 불가 | Windows Android Studio emulator 사용 유지 | +| Docker container와 Windows ADB server의 localhost 의미가 다름 | integration test VM service dynamic port 연결 실패 가능 | 필요 시 당일 emulator adbd port를 노출 후 Docker local ADB server 방식 검증 | +| Docker local ADB server가 새 ADB key를 생성 | emulator가 `unauthorized` 상태로 표시 | Windows 승인 ADB key를 git ignored `.android-adb/`에 재사용 | +| Docker Flutter container가 매번 새로 생성됨 | NDK/CMake/Gradle/pub cache 재다운로드로 반복 지연 | `.docker-cache/flutter` 아래 cache volume 유지 | +| `scripts/integration_tests.sh` 출력이 종료 후 표시되는 구조였음 | Android 첫 빌드 진행 상태 확인 어려움 | 실시간 출력 방식 유지 | + +## 4. 동일 상황 발생 시 처리 순서 + +### 4.1 Windows emulator 준비 + +1. Windows Android Studio를 실행한다. +2. Device Manager에서 emulator를 시작한다. +3. Windows PowerShell에서 `adb.exe devices`를 확인한다. + +```powershell +& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" devices +``` + +완료 기준: + +- `emulator-5554 device` 또는 동일한 Android target이 `device` 상태로 표시된다. + +### 4.2 `adb -a` 1차 시도 + +필요 시 아래 방식을 1회만 시도한다. + +```powershell +& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" -a -P 5037 nodaemon server +``` + +아래 결과가 나오면 더 반복하지 않는다. + +- `10048` +- `0.0.0.0:5037` bind 실패 +- 기존 ADB PID 종료 후에도 동일 실패 반복 + +### 4.3 `portproxy` 전환 + +관리자 PowerShell에서 아래 명령을 적용한다. + +```powershell +netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5037 connectaddress=127.0.0.1 connectport=5037 +netsh advfirewall firewall add rule name="ADB 5037 for WSL" dir=in action=allow protocol=TCP localport=5037 +netsh interface portproxy show v4tov4 +``` + +WSL에서 Windows host IP를 확인한다. + +```bash +awk '/nameserver/ {print $2; exit}' /etc/resolv.conf +``` + +이번 환경의 예시는 아래와 같다. + +```bash +172.21.128.1 +``` + +### 4.4 WSL/Docker 연결 확인 + +WSL에서 TCP 연결을 먼저 확인한다. + +```bash +nc -vz 5037 +``` + +Docker Flutter에서 device 인식을 확인한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 ./scripts/flutter-docker.sh devices +``` + +완료 기준: + +- Android emulator가 Flutter devices 목록에 표시된다. +- Linux desktop만 보이면 Android target 준비가 완료되지 않은 상태로 판단한다. + +### 4.4-A Flutter/Docker 표준 연결 방식 + +기본 device 인식, 앱 실행, APK 설치 확인은 아래 방식을 표준으로 사용한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 ./scripts/flutter-docker.sh devices +``` + +정책 기준: + +- `5037 remote Windows ADB server` 방식은 현재 Windows emulator 연동의 기본 경로다. +- Windows에서 이미 `device`로 승인된 ADB 세션을 Docker Flutter가 공유한다. +- Docker local ADB가 직접 emulator port에 붙었을 때 `offline`이 반복되면 더 반복하지 않는다. +- 직접 emulator port 연결은 아래 보조 경로로만 둔다. + +보조 경로: + +```bash +TDC114_ADB_CONNECT_ADDRESS=: ./scripts/flutter-docker.sh devices +``` + +### 4.5 Android emulator API 주소 + +Android emulator에서 host machine API를 호출할 때는 아래 주소를 사용한다. + +```bash +TDC114_API_BASE=http://10.0.2.2:5000 +``` + +emulator용 local env 파일 예시는 아래와 같다. + +```text +scripts/.env.android-emulator.local +``` + +민감정보가 포함될 수 있으므로 해당 파일은 git tracked 파일로 추가하지 않는다. + +## 5. Integration test 추가 분기 + +`ADB_SERVER_SOCKET=tcp::5037` 방식은 device 목록 확인과 APK 설치까지는 가능할 수 있다. 다만 Flutter integration test loading 단계에서 VM service dynamic port 연결이 실패할 수 있다. + +대표 증상: + +```text +WebSocketChannelException +127.0.0.1: connection refused +``` + +이 경우 원인은 remote Windows ADB server가 만든 port forward의 `127.0.0.1`이 Docker container 내부 localhost와 일치하지 않는 구조일 가능성이 높다. + +동일 증상이 실제로 발생한 경우에만 아래 순서로 보조 경로 전환을 검토한다. + +1. Windows 관리자 PowerShell에서 emulator adbd port를 노출한다. + +```powershell +netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport= connectaddress=127.0.0.1 connectport= +netsh advfirewall firewall add rule name="ADB emulator for WSL" dir=in action=allow protocol=TCP localport= +netsh interface portproxy show v4tov4 +``` + +2. WSL에서 `` 연결을 확인한다. + +```bash +nc -vz +``` + +3. Docker container 내부 local ADB server가 emulator adbd에 직접 붙는지 확인한다. + +```bash +docker run --rm ghcr.io/cirruslabs/flutter:stable sh -lc 'adb connect : && adb devices' +``` + +4. 이 방식이 성공하면 `scripts/flutter-docker.sh` 또는 `scripts/integration_tests.sh`에 선택 환경변수를 추가한다. + +예상 환경변수: + +```bash +TDC114_ADB_CONNECT_ADDRESS=: +``` + +5. Docker local ADB가 `unauthorized`이면 Windows에서 이미 승인된 ADB key를 재사용한다. + +```bash +mkdir -p .android-adb +cp /mnt/c/Users/user/.android/adbkey .android-adb/adbkey.new +cp /mnt/c/Users/user/.android/adbkey.pub .android-adb/adbkey.pub.new +mv -f .android-adb/adbkey.new .android-adb/adbkey +mv -f .android-adb/adbkey.pub.new .android-adb/adbkey.pub +chmod 600 .android-adb/adbkey +``` + +6. 위 방식이 `device` 상태를 만들면 integration test는 아래 명령을 기본값으로 사용한다. + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +TDC114_ADB_CONNECT_ADDRESS=: \ +./scripts/integration_tests.sh +``` + +## 5-A. API smoke 선행 원칙 + +Android integration test 전에 아래 명령을 먼저 실행한다. + +```bash +./scripts/check-baron-api-env.sh +./scripts/api-smoke.sh +``` + +판정 기준: + +- `./scripts/check-baron-api-env.sh`가 failure 0, warning 0 상태여야 한다. +- 최소한 아래 runtime이 running 또는 healthy 상태여야 한다. + - `baron_backend` + - `baron_gateway` + - `baron_userfront` + - `ory_kratos` + - `ory_hydra` + - `ory_keto` + - `ory_oathkeeper` + - `ory_postgres` +- phone-login, employee list, tenant list, orgchart가 모두 HTTP 200이어야 한다. +- unauthorized directory guard는 HTTP 401 또는 403이어야 한다. + +실패 시 처리: + +- `./scripts/check-baron-api-env.sh`에서 warning이 나오면 Android test보다 runtime 복구를 우선한다. +- `502 Bad Gateway`가 나오면 Baron/Ory runtime 중단 가능성을 먼저 의심한다. +- `./scripts/check-baron-api-env.sh`로 상태를 본다. +- `baron_backend`, `baron_userfront`, `ory_*` 컨테이너를 복구한 뒤 integration test를 재시도한다. +- `orgFront` 관련 API 확인이 필요한 경우에도 같은 원칙을 적용해 backend/gateway/userfront를 모두 확인한 뒤 진행한다. + +## 5-B. Docker cache 유지 원칙 + +반복 실행 시 NDK/CMake/Gradle/pub cache 재설치를 막기 위해 `scripts/flutter-docker.sh`는 아래 로컬 cache 디렉터리를 유지한다. + +- `.docker-cache/flutter/gradle` +- `.docker-cache/flutter/pub` +- `.docker-cache/flutter/android-sdk/licenses` +- `.docker-cache/flutter/android-sdk/ndk` +- `.docker-cache/flutter/android-sdk/cmake` + +운영 원칙: + +- 위 cache 디렉터리는 git tracked 파일로 추가하지 않는다. +- cache가 손상되지 않는 한 수동 삭제하지 않는다. +- Flutter Docker image를 바꾸더라도 우선 기존 cache와 호환되는지 확인한다. +- cache가 꼬여 비정상 빌드가 반복되면 해당 하위 디렉터리만 선별 삭제한다. + +## 6. 금지 또는 제한 사항 + +- `adb -a -P 5037 nodaemon server` 실패 후 동일 명령을 여러 번 반복하지 않는다. +- Windows ADB PID를 계속 종료하면서 원인 확인 없이 시간을 쓰지 않는다. +- WSL에 `adb`, Java, Android SDK, `/dev/kvm` 조건이 없는데 WSL 내부 emulator 설치로 즉시 전환하지 않는다. +- 민감정보가 포함된 `.env.*.local` 파일을 git tracked 파일로 추가하지 않는다. +- `.android-adb/`, `.docker-cache/`를 git tracked 파일로 추가하지 않는다. +- Android emulator API base에 `http://127.0.0.1:5000`을 기본값으로 쓰지 않는다. +- `5037 remote ADB server` 방식에서 integration test VM service 실패가 재현됐는데 같은 방식만 반복하지 않는다. + +## 7. 완료 체크리스트 + +다음 항목을 모두 만족하면 Android Studio / WSL ADB 연동 준비가 완료된 것으로 본다. + +- Windows `adb.exe devices`에서 emulator가 `device` 상태다. +- `netsh interface portproxy show v4tov4`에 `5037` mapping이 존재한다. +- integration test에서 직접 연결 보조 경로가 필요하면 `netsh interface portproxy show v4tov4`에 당일 `` mapping도 존재한다. +- WSL에서 `:5037` TCP 연결이 성공한다. +- `ADB_SERVER_SOCKET=tcp::5037 ./scripts/flutter-docker.sh devices`에서 Android target이 표시된다. +- 보조 경로 사용 시 `TDC114_ADB_CONNECT_ADDRESS=: ./scripts/flutter-docker.sh devices`에서 Android target이 `device` 상태로 표시된다. +- emulator용 API base가 `http://10.0.2.2:5000`으로 설정되어 있다. +- `./scripts/check-baron-api-env.sh`가 warning 없이 통과한다. +- host 기준 `./scripts/api-smoke.sh`가 통과한다. +- integration test에서 VM service dynamic port 실패가 발생하면 당일 `` local ADB server 방식으로 분기한다. +- `.android-adb/`, `.docker-cache/`가 로컬에 유지되고 git tracked 상태가 아니다. +- 결과를 `docs/test-logs/YYYY-MM-test-execution-log.md`에 기록한다. diff --git a/docs/references/assetlinks.debug.json b/docs/references/assetlinks.debug.json new file mode 100644 index 0000000..c611f58 --- /dev/null +++ b/docs/references/assetlinks.debug.json @@ -0,0 +1,14 @@ +[ + { + "relation": [ + "delegate_permission/common.handle_all_urls" + ], + "target": { + "namespace": "android_app", + "package_name": "kr.co.baron.tdc114plus", + "sha256_cert_fingerprints": [ + "3A:2D:60:48:6F:E5:3A:84:0C:41:14:DC:3A:17:A4:3B:64:E7:DE:A5:10:4A:09:26:0E:DC:5F:49:88:44:71:76" + ] + } + } +] diff --git a/docs/references/assetlinks.json b/docs/references/assetlinks.json new file mode 100644 index 0000000..c611f58 --- /dev/null +++ b/docs/references/assetlinks.json @@ -0,0 +1,14 @@ +[ + { + "relation": [ + "delegate_permission/common.handle_all_urls" + ], + "target": { + "namespace": "android_app", + "package_name": "kr.co.baron.tdc114plus", + "sha256_cert_fingerprints": [ + "3A:2D:60:48:6F:E5:3A:84:0C:41:14:DC:3A:17:A4:3B:64:E7:DE:A5:10:4A:09:26:0E:DC:5F:49:88:44:71:76" + ] + } + } +] diff --git a/docs/references/file_rename_hash_results.csv b/docs/references/file_rename_hash_results.csv new file mode 100644 index 0000000..755998f --- /dev/null +++ b/docs/references/file_rename_hash_results.csv @@ -0,0 +1,2458 @@ +comp,old_name,new_name,status,name,email,hash_name,hash_status +SAMAN,225298.jpg,kskang.jpg,RENAMED,강경석,kskang@samaneng.com,d0e462b347bd8c2729788be6f97d2faeb4780fa72a1977107d9a27d4597d965f.jpg,HASH_MAPPED +SAMAN,221276.jpg,khkang.jpg,RENAMED,강경훈,khkang@samaneng.com,8899ec9963935792e8029fe34c20824fc9135458bdfa5ec77ac03f96d12c1142.jpg,HASH_MAPPED +SAMAN,225203.jpg,khkang1.jpg,RENAMED,강광호,khkang1@samaneng.com,6653afe65ba8c11f3ad3ee8f5d572a6615607da9539fbb0bfcef08e3c28e8065.jpg,HASH_MAPPED +SAMAN,221054.jpg,kakang.jpg,RENAMED,강근아,kakang@samaneng.com,f47955c23051bc80f3de9dda19a5e6b9b119a0a1fb431d9b9f3f43644a12e041.jpg,HASH_MAPPED +SAMAN,224284.jpg,ghkang.jpg,RENAMED,강기헌,ghkang@samaneng.com,e572074ab1a97227c7cd17e72d44b5095072925c04b5a8a747eb90e4229a65c2.jpg,HASH_MAPPED +HANMAC,M26004.jpg,kskang2.jpg,RENAMED,강길성,kskang2@hanmaceng.co.kr,26623676a1799d8c605d5548592919819cb94429be3739f0e8c90e4e1b040900.jpg,HASH_MAPPED +SAMAN,222020.jpg,dwkang1.jpg,RENAMED,강다원,dwkang1@samaneng.com,8037accfc1c5b88e32ff084cb81a34fa059f0ada5634db2734a7f92fcff81748.jpg,HASH_MAPPED +SAMAN,221328.jpg,dskang.jpg,RENAMED,강대선,dskang@samaneng.com,29a1ba620466e87100ba12b4a3714a6c80559a1076c7c956b84a9708dbff948b.jpg,HASH_MAPPED +SAMAN,224002.jpg,dskang1.jpg,RENAMED,강대식,dskang1@samaneng.com,9cc4e6d44f84e58076a861eb2f1a71e7c35a640b6a9da9bd1d6a58f640175606.jpg,HASH_MAPPED +SAMAN,222248.jpg,dykang.jpg,RENAMED,강대엽,dykang@samaneng.com,1af4ebb0d818f648d17d1c6ed99919efa42fac4e1924b268eb18d7dce0d0e009.jpg,HASH_MAPPED +SAMAN,219106.jpg,dwkang.jpg,RENAMED,강대완,dwkang@samaneng.com,92317cc32b09a6ddd15186f34da1b4fb630a5f2689cc794185ec04df28ff9b34.jpg,HASH_MAPPED +SAMAN,225250.jpg,dkkang1.jpg,RENAMED,강덕규,dkkang1@samaneng.com,045f2f9faf370ee2e13c7dd6a0bbcca525bb6943659a37e5c5ad906a2bb8d266.jpg,HASH_MAPPED +SAMAN,199093.jpg,dkkang.jpg,RENAMED,강동구,dkkang@samaneng.com,1387d0b49a1a74bde68c110e5a36a8234937b66a46ac8e831c808d126ba17583.jpg,HASH_MAPPED +SAMAN,226047.jpg,dwkang3.jpg,RENAMED,강동우,dwkang3@samaneng.com,4204b2f6efe7be5f4d106bbbb1dcd2b3d9aa710d71540a2dc795157867813ced.jpg,HASH_MAPPED +SAMAN,224250.jpg,dwkang2.jpg,RENAMED,강동원,dwkang2@samaneng.com,23d8914e3b2d4c6d63aa75ebe4433968f2cfba74cc25d889e636a89987f9867d.jpg,HASH_MAPPED +SAMAN,211155.jpg,djkang.jpg,RENAMED,강동진,djkang@samaneng.com,405ac562c602fd45060d9e2d9f27e0e57cfa3fb14e157a73e1d4d915990f37bf.jpg,HASH_MAPPED +SAMAN,220178.jpg,mjkang.jpg,RENAMED,강명지,mjkang@samaneng.com,4bf72b1169651eebc566fd8d2272d89d4b4bbe628ce59a81dd1e595ab1f79653.jpg,HASH_MAPPED +SAMAN,217167.jpg,mjkang1.jpg,RENAMED,강명진,mjkang1@samaneng.com,68e487e781ae6267f83208e411b040788528ddf8800fcc7f52306853ddfc24aa.jpg,HASH_MAPPED +HANMAC,M17205.jpg,mjkang4.jpg,RENAMED,강명진,mjkang4@hanmaceng.co.kr,9ed2b293bfdcf0078849163c2f744d80af7cde6ad3990d476ac260ccfb73b75b.jpg,HASH_MAPPED +SAMAN,221042.jpg,mhkang1.jpg,RENAMED,강명학,mhkang1@samaneng.com,618be1dba0b9edb9447bf75782d39017a93bb2be641e9f91dd8786bf4b7e171a.jpg,HASH_MAPPED +HANMAC,M16514.jpg,mhkang.jpg,RENAMED,강명호,mhkang@hanmaceng.co.kr,b55a0b5790a4de373eb2ebcebf183c9f8cb8def682c50af16143893b1f1c1897.jpg,HASH_MAPPED +SAMAN,222192.jpg,mjkang3.jpg,RENAMED,강무중,mjkang3@samaneng.com,5ea11ace70c5762ad9a14c64ce9862a1cd4fd829093dc1557a463dba45cbe142.jpg,HASH_MAPPED +SAMAN,222249.jpg,mtkang.jpg,RENAMED,강문태,mtkang@samaneng.com,d70daefb80712ef2327d9c15aa01baac07a2c03b1f1305fa38a7df59bf95af92.jpg,HASH_MAPPED +SAMAN,026054.jpg,mskang.jpg,RENAMED,강미선,mskang@samaneng.com,945a532a6972451390bd735b610dee611f16603d99b04408e664e8301bfa6ad6.jpg,HASH_MAPPED +HANMAC,M25021.jpg,mskang2.jpg,RENAMED,강민수,mskang2@hanmaceng.co.kr,d4e8673f00ba5f98514de5d11694936f44ffa5f9834c9bc557ff66e3f0ec2ede.jpg,HASH_MAPPED +HANMAC,M26031.jpg,mhkang2.jpg,RENAMED,강민호,mhkang2@hanmaceng.co.kr,aaae5db3ec41c7532f8a7d057035ffc773369efba47c0fdd0a717956c7925acd.jpg,HASH_MAPPED +SAMAN,225301.jpg,bskang.jpg,RENAMED,강병산,bskang@samaneng.com,5efc44a8443371a1977fa3454703d68f4d14b4a4206ee0df8a5bf776fb648ed4.jpg,HASH_MAPPED +SAMAN,222060.jpg,skkang.jpg,RENAMED,강상구,skkang@samaneng.com,a4336bb2395f95360b330b97ca757577aa3339858e5d804045dae7955bd3b333.jpg,HASH_MAPPED +SAMAN,225265.jpg,skkang1.jpg,RENAMED,강상균,skkang1@samaneng.com,acf20dad136e8b6c2ab47f9e3342cf8218714406c5476434319245be7ef203ac.jpg,HASH_MAPPED +SAMAN,226027.jpg,swkang2.jpg,RENAMED,강상우,swkang2@samaneng.com,f0ff2ebed04f062efac969cfcc1201a1235a1d005c69389161b89d1a147b9e15.jpg,HASH_MAPPED +SAMAN,223363.jpg,swkang1.jpg,RENAMED,강상욱,swkang1@samaneng.com,00a2031d742900e6c611a37a87afa753f909505cd8b2673c8d70c93397b155f0.jpg,HASH_MAPPED +SAMAN,217131.jpg,swkang.jpg,RENAMED,강상원,swkang@samaneng.com,617bcb5e72be592ca5b74cc1d2710d2abc610e48dd22b2a6185ae60fc82e3476.jpg,HASH_MAPPED +SAMAN,218158.jpg,sekang.jpg,RENAMED,강상의,sekang@samaneng.com,67730a5a5076fa6e8b3c6b6517984a630ba9ddcba1ffc8858aee2bffd0f2937e.jpg,HASH_MAPPED +SAMAN,226144.jpg,sbkang1.jpg,RENAMED,강석봉,sbkang1@samaneng.com,6739a230c37666600d2ef6b3b0baea7e1b90e74b6ec9716479ea111c94e96cea.jpg,HASH_MAPPED +SAMAN,220037.jpg,sjkang.jpg,RENAMED,강석준,sjkang@samaneng.com,13efb04d8a0c0b660005a3e993e42e977ce7b5d9b024d58c32dcba88c7b32a7a.jpg,HASH_MAPPED +SAMAN,225266.jpg,shkang1.jpg,RENAMED,강석훈,shkang1@samaneng.com,c3192b314e4d0d55bf599c5f46a3f7be06060ba0540420a59918e8d789818b9b.jpg,HASH_MAPPED +HANMAC,M09104.jpg,sjkang3.jpg,RENAMED,강선준,sjkang3@hanmaceng.co.kr,e1792f31ddb46fe66714366f97846dfc3bcd536038549791ee51750c4e5f0d81.jpg,HASH_MAPPED +SAMAN,222271.jpg,stkang.jpg,RENAMED,강선태,stkang@samaneng.com,300faee1bcd6f0a8656c45a90a192a8c87ad11281562e782aad96649fefbac37.jpg,HASH_MAPPED +SAMAN,226130.jpg,sbkang.jpg,RENAMED,강성배,sbkang@samaneng.com,50e9409b3555cbcf293985f1e98b29c5da7059db043a834d37d1299672364427.jpg,HASH_MAPPED +SAMAN,225190.jpg,sikang.jpg,RENAMED,강성일,sikang@samaneng.com,557739f2908f480e05d7754d17f68cc9bbdbc0e6f1ce6b110f20684263deb504.jpg,HASH_MAPPED +SAMAN,225115.jpg,sckang.jpg,RENAMED,강성찬,sckang@samaneng.com,d39a8cbf3c559d73a9e64f1095bc4097232e062bef3f8af650ac11a81782a152.jpg,HASH_MAPPED +HANMAC,B24024.jpg,shkang2.jpg,RENAMED,강성호,shkang2@brsw.kr,ae751cf73eed32b5ff6d2f0fb575c8b82fc8459c6500adf1fb1a96245c903796.jpg,HASH_MAPPED +SAMAN,202012.jpg,sykang.jpg,RENAMED,강수연,sykang@samaneng.com,795476989f4a5d06c3d34267eecd24cb644c6f414c9dfefe2041eeec2171e5bf.jpg,HASH_MAPPED +SAMAN,224387.jpg,snkang.jpg,RENAMED,강순남,snkang@samaneng.com,20d73b0d6da180949a852a7480de0fec78526ca69acb666d974275a04c4ab4d9.jpg,HASH_MAPPED +SAMAN,221246.jpg,sykang2.jpg,RENAMED,강순양,sykang2@samaneng.com,308c432e66b3c32169762d77ccf84410b2d36756c80bdc40649b98af09802dae.jpg,HASH_MAPPED +SAMAN,223298.jpg,sdkang.jpg,RENAMED,강승대,sdkang@samaneng.com,c5f2eb058a7028adefa58e395ef5f325ca2a2d1866d1f6ed8c07c5c3ad3eb437.jpg,HASH_MAPPED +SAMAN,224323.jpg,sykang3.jpg,RENAMED,강승열,sykang3@samaneng.com,65d642f82f3d83f23b134d496e324be422811e07331f25afe19a8c1a60d9c718.jpg,HASH_MAPPED +SAMAN,221323.jpg,sjkang2.jpg,RENAMED,강승주,sjkang2@samaneng.com,bd477c607bf92c68de7fc7919001fef10292585a19fd85a319e85ae9803c792a.jpg,HASH_MAPPED +SAMAN,224272.jpg,sykang1.jpg,RENAMED,강시영,sykang1@samaneng.com,517d949343f54c38d8ae19e9d75c9622deff036de966c5a56b430774fd8915c0.jpg,HASH_MAPPED +SAMAN,223272.jpg,sgkang.jpg,RENAMED,강신길,sgkang@samaneng.com,89005d0dcc53b9270a1efed3c7a9ddb1b2aae98fb346459de3a86c6e5644c8b8.jpg,HASH_MAPPED +HANMAC,M25049.jpg,yckang.jpg,RENAMED,강영철,yckang@hanmaceng.co.kr,69d0caea91c09fb9a14085d7b829dcb7e0bac23b0670280f3b1df74383c953b1.jpg,HASH_MAPPED +HANMAC,M21437.jpg,wwkang.jpg,RENAMED,강우원,wwkang@hanmaceng.co.kr,e8109af1616cecc07541bb4b518d966e7b82ae81c100ea42a57c2877ba835849.jpg,HASH_MAPPED +SAMAN,216041.jpg,wckang.jpg,RENAMED,강원철,wckang@samaneng.com,20742fc07132e16c727b60d93e67e4c7f1cef2d691c3463ec8693b4a6ff05271.jpg,HASH_MAPPED +SAMAN,223289.jpg,ygkang.jpg,RENAMED,강유경,ygkang@samaneng.com,0de715b81abb930899082e4e816ca67f9468d7417de58f7c6162d4cbdb56fefd.jpg,HASH_MAPPED +SAMAN,201064.jpg,ykkang.jpg,RENAMED,강윤규,ykkang@samaneng.com,d22cf6467e03094d307c3d39575fbcd5e3cc9b460ed904b475545ed7d34463a3.jpg,HASH_MAPPED +SAMAN,225339.jpg,jykang.jpg,RENAMED,강정연,jykang@samaneng.com,8437a6f0419f019d9c9240013e072affaef6d9410ecec9fdf5aa9da52e150404.jpg,HASH_MAPPED +SAMAN,222212.jpg,jhkang.jpg,RENAMED,강정훈,jhkang@samaneng.com,794be85bbfabfc42a1fedf115fbf199391295453dbef9a8c1ef5d69e1c50f483.jpg,HASH_MAPPED +SAMAN,224095.jpg,jtkang.jpg,RENAMED,강종태,jtkang@samaneng.com,20149c6adccd7d33519d5ac22d9fa8113f70aedd436d8840fbb56554a9e67868.jpg,HASH_MAPPED +SAMAN,222243.jpg,jhkang1.jpg,RENAMED,강준희,jhkang1@samaneng.com,a362a91d0c7b15778e7c270cf62e6230f1b2a2af236147a997c2f11173fa0061.jpg,HASH_MAPPED +SAMAN,221067.jpg,jykang1.jpg,RENAMED,강지영,jykang1@samaneng.com,3db281a40c5e27b6692b1cedd529ad04968041f068bffdd01b5a5c6c83db95e1.jpg,HASH_MAPPED +SAMAN,224301.jpg,jokang.jpg,RENAMED,강진욱,jokang@samaneng.com,4712dce6a2c7efec28e4f9aca791e6d87149f1cfe2b21bc483398f8433338880.jpg,HASH_MAPPED +SAMAN,224166.jpg,tskang.jpg,RENAMED,강태선,tskang@samaneng.com,dc7478ad9a7da212b88dc9e66e970383032db7f5f5b4ec979a325ba4c5f1092f.jpg,HASH_MAPPED +SAMAN,222067.jpg,thkang1.jpg,RENAMED,강태현,thkang1@samaneng.com,16b5c8db70a0b852f706f7a2713beafd1a9e0464a1648b13142d9b3ea4205b46.jpg,HASH_MAPPED +SAMAN,225206.jpg,thkang.jpg,RENAMED,강태호,thkang@samaneng.com,6e4c2099042c5c27d97751035edb6977234e25fa26a47905201e7e10f89e0581.jpg,HASH_MAPPED +SAMAN,223029.jpg,thkang2.jpg,RENAMED,강태희,thkang2@samaneng.com,55cf602fca37ce49c7be486b2d83cb4ed94ebcf7c5e1a55fe02ab1fb3ff796d7.jpg,HASH_MAPPED +SAMAN,213085.jpg,pkkang.jpg,RENAMED,강평구,pkkang@samaneng.com,7588ae2fc366e84b902d3ac37eea595007f87c435b30770a7d078b4223e056ca.jpg,HASH_MAPPED +SAMAN,225151.jpg,pwkang.jpg,RENAMED,강필웅,pwkang@samaneng.com,7522cb22bedccbbbbdcd7f082aa5c1bc0f675cafb6ea7c9daa79f3ee39f0a80d.jpg,HASH_MAPPED +HANMAC,M20501.jpg,hskang.jpg,RENAMED,강현승,hskang@hanmaceng.co.kr,d2c355fe07733c887974c1c1d43f9c326c634c50d0697b7dec32687670fb7a7f.jpg,HASH_MAPPED +PTC,P19203.jpg,hwkang.jpg,RENAMED,강현욱,hwkang@brsw.kr,46145f2face7c82339d81326211923c04b8674f6385bf791343e1f34f09d503c.jpg,HASH_MAPPED +SAMAN,216095.jpg,hgkang.jpg,RENAMED,강형구,hgkang@samaneng.com,a5ee7a380ed5c2d59d9483bfd2278664bf09c87aea8e91903697b9f94ec1a6ee.jpg,HASH_MAPPED +SAMAN,026059.jpg,hjkang.jpg,RENAMED,강혜진,hjkang@samaneng.com,4108c0833ac252a73c1825782231778b6ffa486c85f3df9b7acb64a1033ac68d.jpg,HASH_MAPPED +SAMAN,224130.jpg,hmkang.jpg,RENAMED,강호문,hmkang@samaneng.com,61bde6bf4832fb28aae59e16464c172e19f192691276df4294d87ba87bb54812.jpg,HASH_MAPPED +SAMAN,221015.jpg,mgkyung.jpg,RENAMED,경민구,mgkyung@samaneng.com,188d697da75b2fe19956206845ce8aeb40f153bfe103a2c037986296761dae10.jpg,HASH_MAPPED +SAMAN,220019.jpg,bhgyeong.jpg,RENAMED,경복현,bhgyeong@samaneng.com,cd7becae933f8aa7a9bd70072ff38820e25093b94aec19bd3ee8f70be1232a9e.jpg,HASH_MAPPED +SAMAN,221167.jpg,ksko.jpg,RENAMED,고강수,ksko@samaneng.com,655f446a3c338fa18a03b82aa760ba4975ee9865dafeaaec2a9d2ff2cf092a5e.jpg,HASH_MAPPED +SAMAN,208126.jpg,kwko.jpg,RENAMED,고경원,kwko@samaneng.com,0734541518727c59fa9bc91a890b8fe3fae1a6aec7cbf224403d8fbbd770c9a0.jpg,HASH_MAPPED +SAMAN,223119.jpg,kmko.jpg,RENAMED,고광민,kmko@samaneng.com,2c58e05316c11f742a676a8ff37aec172f7deaaace9a8f228c065d77321c3cac.jpg,HASH_MAPPED +HANMAC,M06501.jpg,gwgo.jpg,RENAMED,고광욱,gwgo@hanmaceng.co.kr,ff2ab9e3116fae194b056fc00481e29e1c0b6393b81136ae0d598315b0a3e281.jpg,HASH_MAPPED +SAMAN,217016.jpg,diko.jpg,RENAMED,고동인,diko@samaneng.com,ef1ba6efed8c168c039527875446f8de9d3947008af002783d674e8d0ad9ea56.jpg,HASH_MAPPED +SAMAN,224043.jpg,mwko.jpg,RENAMED,고민우,mwko@samaneng.com,ad32ee7667f8e748de0490de9c060b0240044245ea1474f315d7bb0a797e4ef2.jpg,HASH_MAPPED +SAMAN,225370.jpg,bhko.jpg,RENAMED,고범홍,bhko@samaneng.com,74e1555b4578556664c4d6b4ff02983d85636d10399a0a51366700e6b236a380.jpg,HASH_MAPPED +HANMAC,M04503.jpg,sako.jpg,RENAMED,고삼암,sako@hanmaceng.co.kr,77c690654ec9f78bc68e42ece23b30ea874e607de453947cf302d2366f3227ec.jpg,HASH_MAPPED +SAMAN,224100.jpg,shko.jpg,RENAMED,고상훈,shko@samaneng.com,2d3c95fac12fa7c53deb02538410441623de236277173c318d2e545fb4bec0d9.jpg,HASH_MAPPED +HANMAC,M20510.jpg,smko.jpg,RENAMED,고석만,smko@hanmaceng.co.kr,1f8d771063f5ada23ea8efabfb03b58727ccb2841136ab204499eb954a395220.jpg,HASH_MAPPED +SAMAN,223204.jpg,siko.jpg,RENAMED,고세일,siko@samaneng.com,8c995cb4b64da14e1ecd8dd2ede9d90fff30428706c43dc541594ae379c92332.jpg,HASH_MAPPED +SAMAN,212153.jpg,shkoh.jpg,RENAMED,고승희,shkoh@samaneng.com,46a3254acfae4ce23f366b8e27e0a77b3d57500f53d53b0181ba74a1958cd21f.jpg,HASH_MAPPED +SAMAN,224161.jpg,ysgo.jpg,RENAMED,고연상,ysgo@samaneng.com,8ec6200dce764ec94e37dc47294acf1ac9e7f023c88fae566a5c2895f2ff87af.jpg,HASH_MAPPED +HANMAC,M24056.jpg,ydkoh.jpg,RENAMED,고영덕,ydkoh@hanmaceng.co.kr,d6b175a137344729a8c672b2f059ff3238e44b169837130a77ba479ed4f811ad.jpg,HASH_MAPPED +SAMAN,203138.jpg,yiko.jpg,RENAMED,고영일,yiko@hallasanup.com,f83ae9e6910911b4a84840c20aca9017fdb227ebbcd457a9b5b5b8019386e3de.jpg,HASH_MAPPED +SAMAN,201215.jpg,ytkoh.jpg,RENAMED,고영태,ytkoh@samaneng.com,93105f15816a103911ce12d48dcce0f89acbf008a4a191819b0abfceff39c1bc.jpg,HASH_MAPPED +SAMAN,221267.jpg,wtko.jpg,RENAMED,고원태,wtko@samaneng.com,27408136244fdd56f9e1c69e3bc1fd74ca31473dacdd8be18c846c2b98746da9.jpg,HASH_MAPPED +HANMAC,M25019.jpg,esko.jpg,RENAMED,고은식,esko@hanmaceng.co.kr,0d9bb304ea19132c857ba633a58e320fcc4e546a01ac2619eb71cc29adc585be.jpg,HASH_MAPPED +SAMAN,225065.jpg,jyko2.jpg,RENAMED,고준연,jyko2@samaneng.com,c051fbc8031408e685f6622959c0934e1eb7703ab61d6c6a856800ec61899741.jpg,HASH_MAPPED +SAMAN,223072.jpg,jyko1.jpg,RENAMED,고준영,jyko1@samaneng.com,5ec6fba3c17b92e4cb59cfb28b8659234bed3a90bc1c51a78b2aee6b3cdef32b.jpg,HASH_MAPPED +SAMAN,221130.jpg,jhko.jpg,RENAMED,고준호,jhko@samaneng.com,a601ef0c48a246c5f2fd31e11284f3cbe62135de1022a3ce173edbcecdd3c93f.jpg,HASH_MAPPED +SAMAN,218147.jpg,jyko.jpg,RENAMED,고지영,jyko@samaneng.com,81c0f1087c4e8a1e973a1d0fec8487fd1c069ff9455d992ce23a0f957ec4636e.jpg,HASH_MAPPED +SAMAN,224190.jpg,csgo.jpg,RENAMED,고창석,csgo@samaneng.com,d7d3748e7204f490ac91291d51d7b0109c195c0f81792a7248dfbc1c442940fa.jpg,HASH_MAPPED +SAMAN,223033.jpg,thko.jpg,RENAMED,고태호,thko@samaneng.com,0d97a7131036c5a46e774ccffa8d4e16bdb3ca9bbf9e5ccbd5b4d76247c0d74e.jpg,HASH_MAPPED +SAMAN,221186.jpg,hwko.jpg,RENAMED,고현우,hwko@samaneng.com,3c9034bbed3050615ad8656e548875bfad7868870ebb2a1a6ae2645015527094.jpg,HASH_MAPPED +SAMAN,225334.jpg,hjko.jpg,RENAMED,고효정,hjko@samaneng.com,bdf8d94593ef30693d22c2e101e8fec3f27525224810179202bad49920f768a8.jpg,HASH_MAPPED +SAMAN,225104.jpg,hsko.jpg,RENAMED,고희수,hsko@samaneng.com,15d8103be9f20b1b798d99ef46c6bf464139df9cef9fcb67a98e462c680796a0.jpg,HASH_MAPPED +SAMAN,219100.jpg,gwkong.jpg,RENAMED,공기원,gwkong@samaneng.com,6e1c23536524a9daf5c00ae42d4856b04e46120918ef7294749e9d2c396d286a.jpg,HASH_MAPPED +SAMAN,223283.jpg,bskong.jpg,RENAMED,공병승,bskong@samaneng.com,eaf6ddd187fb51e6a6d429029d1b57cc69cc8ddfadb2a7b907279a7a85884aa6.jpg,HASH_MAPPED +SAMAN,218022.jpg,bhkong.jpg,RENAMED,공병화,bhkong@samaneng.com,c06e7a680149a4bac77ec50738f13d684353f9cfa8fd004a4516b0f6591762be.jpg,HASH_MAPPED +SAMAN,222023.jpg,shkong.jpg,RENAMED,공석호,shkong@samaneng.com,4870eeaf38369589e853303c4426a1d2f3ba4e857a573795ee9aa46d169747b3.jpg,HASH_MAPPED +SAMAN,219160.jpg,smkong1.jpg,RENAMED,공성문,smkong1@samaneng.com,fb40539b952ff41f5536736a5a3eacd2f3e701e654fd0ede6d06ce5a1015e4d2.jpg,HASH_MAPPED +SAMAN,224207.jpg,ypgong.jpg,RENAMED,공용표,ypgong@samaneng.com,1698b0d1b6f22c1e1b77c2e66388ee99dbfccd15b54afd783eff076dda46765e.jpg,HASH_MAPPED +SAMAN,218113.jpg,twkong.jpg,RENAMED,공태원,twkong@samaneng.com,1044a0cc8af38c8b343002fd614aa8e6edc1f223cd60fe2a90d4f097f6e43400.jpg,HASH_MAPPED +SAMAN,219026.jpg,twkong1.jpg,RENAMED,공태원,twkong1@samaneng.com,7e5e79c8c9ed637c7de836b6773e45a1f104951742f8e0de27b95306d4fb4fe1.jpg,HASH_MAPPED +SAMAN,223355.jpg,hwkong.jpg,RENAMED,공현우,hwkong@samaneng.com,705911eb170f657826258fcf5b0b2c442bfd494addf1b0d67780033d84e20ae6.jpg,HASH_MAPPED +SAMAN,225257.jpg,hhgong.jpg,RENAMED,공현호,hhgong@samaneng.com,1037a32dcaa3cc4c362e85ada5c4033bc5067e5d9b0a8046c56590a75b91b582.jpg,HASH_MAPPED +SAMAN,025088.jpg,hykong.jpg,RENAMED,공희연,hykong@samaneng.com,30cabd87abcc43b2be1010d0939fae45db8cd43ced5fb34a9bbf04c8f5b56542.jpg,HASH_MAPPED +SAMAN,224110.jpg,ghgwak.jpg,RENAMED,곽경호,ghgwak@samaneng.com,67d147b084d9b0f351723f1474aaa2df5977a949f405df550c07918d761d4e0c.jpg,HASH_MAPPED +HANMAC,M24083.jpg,dgkwak.jpg,RENAMED,곽동권,dgkwak@hanmaceng.co.kr,2dfc6cf99d9d017499decbfb451eb5d01e5b1b8e9590102ed26e20a308a393af.jpg,HASH_MAPPED +SAMAN,219004.jpg,bgkwak1.jpg,RENAMED,곽병구,bgkwak1@samaneng.com,2a8d624fe7ca1c57590df02677b76ddec644660f939dc7e363dde190f9b18a0b.jpg,HASH_MAPPED +JANGHEON,J25602.jpg,sygwak.jpg,RENAMED,곽승용,sygwak@brsw.kr,1e169912b66b1034c91d4f43e676e19812fc32c4a872a0db5cf10661dd0a5edf.jpg,HASH_MAPPED +SAMAN,216004.jpg,eykwak.jpg,RENAMED,곽억연,eykwak@samaneng.com,3c7ad27cf4d6993e5849e2c0354b363940530e79a18073f60719a1b9a21e7e3a.jpg,HASH_MAPPED +SAMAN,223001.jpg,ykkwak.jpg,RENAMED,곽용규,ykkwak@samaneng.com,9e24ad8b7cf0e6b33d573179756133145988daed61475b894038d2d64fabbe08.jpg,HASH_MAPPED +SAMAN,221032.jpg,emkwak.jpg,RENAMED,곽은미,emkwak@samaneng.com,862a5457379bcfe339ef803ea64991ae0dae5b012f0fe77dd46a0bd3d871292b.jpg,HASH_MAPPED +SAMAN,025143.jpg,emkwak1.jpg,RENAMED,곽은미,emkwak1@samaneng.com,59f25e3d27084906b001bc0836fafb8a76c10f322bdb8b7a7a2358a2f3625bc4.jpg,HASH_MAPPED +SAMAN,202119.jpg,jskwak.jpg,RENAMED,곽준성,jskwak@samaneng.com,20c040017daf37e9ae856cb6cc9b694bf3d65fa903c3262599301f63d0d6e12d.jpg,HASH_MAPPED +HANMAC,M06309.jpg,hskwak1.jpg,RENAMED,곽현석,hskwak1@hanmaceng.co.kr,ca0ded65c51984d7850d9fab60b8167fdd4e2c70990c5134785ed6f3eccf34ef.jpg,HASH_MAPPED +SAMAN,182004.jpg,hskwak.jpg,RENAMED,곽호성,hskwak@samaneng.com,0f7b49b4fb0d1c53b235b87dc6c2c84422c96aba6a776dbe0d1dc18765463457.jpg,HASH_MAPPED +SAMAN,195093.jpg,kjkoo1.jpg,RENAMED,구경자,kjkoo1@samaneng.com,c0d65cb086b92ec28f8bea86e515ea690d43482160d0a05c23aa91608662f4b9.jpg,HASH_MAPPED +SAMAN,225053.jpg,mjkoo.jpg,RENAMED,구민재,mjkoo@samaneng.com,5ff699ca7cf4781457f98b8634ded1a4c3b0d50057641be0ba465d21ca37197e.jpg,HASH_MAPPED +SAMAN,223389.jpg,ymkoo.jpg,RENAMED,구영민,ymkoo@samaneng.com,784edbb32dd8eabf97307ad89178012cd2d3b531ca76242979dfd199e09ff219.jpg,HASH_MAPPED +SAMAN,224121.jpg,yskoo.jpg,RENAMED,구영서,yskoo@samaneng.com,af61f63b181e55cb4260337f738b24bad723b40f7029bfe9e6379e567c66c62c.jpg,HASH_MAPPED +SAMAN,225343.jpg,wikoo.jpg,RENAMED,구원일,wikoo@samaneng.com,611815dc6f29bfde18ee7426c247b07f790a27324e3222947d4be786bfc30317.jpg,HASH_MAPPED +HANMAC,M20311.jpg,jykoo.jpg,RENAMED,구자용,jykoo@hanmaceng.co.kr,2deb75c1b7723d533fc1334ab7441567a20fa203d5c6fb8f95c9c26a78f88d89.jpg,HASH_MAPPED +SAMAN,224316.jpg,jhkoo.jpg,RENAMED,구자환,jhkoo@samaneng.com,cb669244199d23d4fb7491f49fe98faa297613bcb8a63baee26972b2d1ea1e52.jpg,HASH_MAPPED +SAMAN,223176.jpg,chgoo.jpg,RENAMED,구천회,chgoo@samaneng.com,a2af7df76f0ddefc4256bee5e2bec1f8142df194436d0a2f6dea10675503d093.jpg,HASH_MAPPED +SAMAN,216159.jpg,hwkoo.jpg,RENAMED,구효완,hwkoo@samaneng.com,41ae80e61163da711c3a6d015854bb6c3dbe95fa73b0dc38a42a0442aace1640.jpg,HASH_MAPPED +HANMAC,B22038.jpg,hrguk.jpg,RENAMED,국혜림,hrguk@brsw.kr,7b3a64f070baf4b77d25a841094db474b2efea2a41c01dc840a78805a823d9f8.jpg,HASH_MAPPED +SAMAN,220238.jpg,khkwon.jpg,RENAMED,권구현,khkwon@samaneng.com,a7c1eae5272e3118e76078f37c01d33539780ecd2f5d64fa58b24aa433b23342.jpg,HASH_MAPPED +SAMAN,182002.jpg,kokwon.jpg,RENAMED,권기옥,kokwon@samaneng.com,23a953bc0c5100bc4d6ffed359f2de9d66082f2383e80057320a70112feb31a6.jpg,HASH_MAPPED +SAMAN,224131.jpg,kckwon.jpg,RENAMED,권기철,kckwon@samaneng.com,17b29e58ee71828a8c9e7ab6d4f085ca84ccee07778f07cc86240c4f38f517b5.jpg,HASH_MAPPED +SAMAN,220196.jpg,dkkwon.jpg,RENAMED,권대경,dkkwon@samaneng.com,612be42bbd0a5d09cfac3e7ca9c5613b6a921e2d3d1106531c5e4d1369bf695c.jpg,HASH_MAPPED +SAMAN,217005.jpg,mkkwon.jpg,RENAMED,권민근,mkkwon@samaneng.com,092c9b94ac4f1098d48a6c22d2ad0d99fbbe010756fcdf74ca10ffc1cddc9013.jpg,HASH_MAPPED +SAMAN,226025.jpg,bgkwon.jpg,RENAMED,권병근,bgkwon@samaneng.com,fd222cb9476a415c71ceebfe1884a1aa47ecb7520258e77db83802d9a2ed0229.jpg,HASH_MAPPED +HANMAC,M21303.jpg,sikwon.jpg,RENAMED,권순일,sikwon@hanmaceng.co.kr,3a1adca10af8097ec248356a38d101847ad28c31c369e0a8db3e63a7c61de909.jpg,HASH_MAPPED +SAMAN,222059.jpg,shkwon.jpg,RENAMED,권순호,shkwon@samaneng.com,66e6a71e89824b339b9888344efd2542e4d3f9a677c1bbb233c7a97f0e83b13b.jpg,HASH_MAPPED +SAMAN,226138.jpg,smkwon.jpg,RENAMED,권승민,smkwon@samaneng.com,9ed96132619fd074ffc67f4068238ae57e0657f6c77c8751cd00a66c595ac952.jpg,HASH_MAPPED +SAMAN,209177.jpg,ykkwon.jpg,RENAMED,권영국,ykkwon@samaneng.com,5f36ddd77f01841cf712d22b3d9c3b37ddb5adebecf1cb7c5daadb7f395a4ba8.jpg,HASH_MAPPED +SAMAN,220257.jpg,ybkwon.jpg,RENAMED,권영범,ybkwon@samaneng.com,0996951ee00c3805b8fb0c5767bb1753be40ce9978c72907d92e4131e38205ce.jpg,HASH_MAPPED +SAMAN,204294.jpg,oskwon.jpg,RENAMED,권오선,oskwon@samaneng.com,fc22d8d49e406eb8da0be20f47f18c5ce31d0f23aecf2544ad0688f0abe6f05e.jpg,HASH_MAPPED +SAMAN,223111.jpg,oskwon1.jpg,RENAMED,권오선,oskwon1@samaneng.com,5664f8fbda4aa42ae9654ef7a21d1f2c19ce986c9fdffb42ece85f43f96d1619.jpg,HASH_MAPPED +SAMAN,225079.jpg,oykwon1.jpg,RENAMED,권오영,oykwon1@samaneng.com,be80b657db06ca84b2560d8fd7efcefa5a00f96b5ddfacee2a7b5f3099fc4923.jpg,HASH_MAPPED +SAMAN,223116.jpg,oykwon.jpg,RENAMED,권오윤,oykwon@samaneng.com,49b64157fd6c2dc28f4294ebb4e5ac6881253668e058b246202f5b0331748e6c.jpg,HASH_MAPPED +HANMAC,M24031.jpg,ojkwon1.jpg,RENAMED,권오재,ojkwon1@hanmaceng.co.kr,5a74cd66844b3ff97f79b3dd8649cbaf69989fd391012dd069bfa9a7c6e61387.jpg,HASH_MAPPED +SAMAN,225058.jpg,ojkwon.jpg,RENAMED,권오정,ojkwon@samaneng.com,ee5c83fda13f9f88ff85960dcffa596b3d68b5e14148ff331113cbdee44ea884.jpg,HASH_MAPPED +HANMAC,M21436.jpg,ockwon.jpg,RENAMED,권오춘,ockwon@hanmaceng.co.kr,08e493f5936482066d4f3f0ab84ed46dec0710dd683f539d13a633fb061a0ebd.jpg,HASH_MAPPED +SAMAN,224360.jpg,otkwon.jpg,RENAMED,권오태,otkwon@samaneng.com,bfbb526529d382cef2306e6eb514f811cfffb295186432b828759e9f19597dfd.jpg,HASH_MAPPED +SAMAN,024110.jpg,lskwon.jpg,RENAMED,권이선,lskwon@samaneng.com,d514a5ded5b660a5891fa00e8e7c334f454fc39cc412e9d16576393d0f851687.jpg,HASH_MAPPED +SAMAN,225111.jpg,jskwon.jpg,RENAMED,권장승,jskwon@samaneng.com,a8aaaeb6dc112735bba1b39081d8c08f8672c60013a9b0a9d5328d352f755f0d.jpg,HASH_MAPPED +SAMAN,212150.jpg,jjkwon.jpg,RENAMED,권진주,jjkwon@samaneng.com,891034dd65d79e672f2029ef5c213d4dbb7a885b098c2b0038b6c71979a6f20e.jpg,HASH_MAPPED +SAMAN,225191.jpg,jhkwon.jpg,RENAMED,권진하,jhkwon@samaneng.com,d65deff4f22ae4d56d94ad626e48fc2aae64ea5b34cd88309b3c94463b77c5fe.jpg,HASH_MAPPED +SAMAN,220217.jpg,cykwon.jpg,RENAMED,권충영,cykwon@samaneng.com,2691d88aa9846818ba15874862350f42fbd98abdbb5afa07d13438aa3bc54374.jpg,HASH_MAPPED +SAMAN,225211.jpg,thkwon.jpg,RENAMED,권태학,thkwon@samaneng.com,1fb00e2d9b63d8196ea99c3f9396aaa12712313706aafedef2d67417da798013.jpg,HASH_MAPPED +HANMAC,M20514.jpg,thkwon1.jpg,RENAMED,권태훈,thkwon1@hanmaceng.co.kr,cc4cb4edadd2e912c37f73bb58d1d445d1dbae19fe6b5c348dbb541ef74d248b.jpg,HASH_MAPPED +SAMAN,226075.jpg,hmkwon.jpg,RENAMED,권혁민,hmkwon@samaneng.com,6feb3251975c961e3388ac688694388533ff91d4860f9875e621bd87ca94e2bb.jpg,HASH_MAPPED +SAMAN,219110.jpg,hskwon.jpg,RENAMED,권혁수,hskwon@samaneng.com,ec26289e95c4ce8f0d2774b7a76074edfb8e5b89f7fe0ea460719d6be891331c.jpg,HASH_MAPPED +SAMAN,221035.jpg,hjkweon.jpg,RENAMED,권혁조,hjkweon@samaneng.com,a40942fbaaef7182b7847720694bf84cb304800a8caa210575cafdb60a36dafb.jpg,HASH_MAPPED +SAMAN,216020.jpg,hjkwon.jpg,RENAMED,권혁진,hjkwon@brsw.kr,c2c3ef49d7938879a36d95f0156c85abec3bfa6dd92da1699cb037c1493d2655.jpg,HASH_MAPPED +SAMAN,223399.jpg,hjkwon2.jpg,RENAMED,권현진,hjkwon2@samaneng.com,e9d24d4edb59d2f98b4a05bf9ff2937b9f0b6bdc0cf1c7e28caabbe619036268.jpg,HASH_MAPPED +SAMAN,221245.jpg,hjkwon1.jpg,RENAMED,권형중,hjkwon1@samaneng.com,e956df336bc962a7ac97844a514b8ef5b058338253ee9a063bcbbeb66afcbca9.jpg,HASH_MAPPED +SAMAN,221052.jpg,yski.jpg,RENAMED,기윤서,yski@samaneng.com,c61ceb2d9384a41473b40bd83b250a8e1319845620179da4c7b4f7a146d398e7.jpg,HASH_MAPPED +SAMAN,222136.jpg,jhki.jpg,RENAMED,기정호,jhki@samaneng.com,41b4ce20640b6cbab1624fc460656e3ce320cc359c0935d86130797e054e0bcc.jpg,HASH_MAPPED +HANMAC,M20217.jpg,ywgil.jpg,RENAMED,길이원,ywgil@hanmaceng.co.kr,d8fc76e2a661e35064bc3fc5851c6583b468adf2856a7ec779d8c7a8100ec60a.jpg,HASH_MAPPED +SAMAN,026050.jpg,gykim.jpg,RENAMED,김가영,gykim@samaneng.com,e23abfa29a24f54394f72a53576571565908e8d627bab4d2234d783ce70ba704.jpg,HASH_MAPPED +JANGHEON,M08502.jpg,gskim.jpg,RENAMED,김갑성,gskim@brsw.kr,d734beaf20b4076afc3a79f28b6ae720d3192d07260e6d145c98aebfd3562d2c.jpg,HASH_MAPPED +SAMAN,221027.jpg,gdkim.jpg,RENAMED,김건도,gdkim@samaneng.com,57da6a59048b65c187ce6ca944faff62759ea762e8ad7258f1cfc98bd06124d8.jpg,HASH_MAPPED +SAMAN,220197.jpg,gwkim1.jpg,RENAMED,김건완,gwkim1@samaneng.com,6e4d247cebcfa474516dec3376474b58e51a3c6ec60767bf0629bb6291806610.jpg,HASH_MAPPED +SAMAN,225105.jpg,gukim.jpg,RENAMED,김건우A,gukim@samaneng.com,d7602c3c384cbddc11010df8adf20608f86276898fa8a1744616edf1c8039bfc.jpg,HASH_MAPPED +HANMAC,M07308.jpg,gwkim2.jpg,RENAMED,김건우,gwkim2@hanmaceng.co.kr,99136dc1b603b9cfaf69eb00e4ba3610a2bb36fa1fe43d88da8bbf60109429dd.jpg,HASH_MAPPED +SAMAN,226087.jpg,khkim1.jpg,RENAMED,김건호,khkim1@samaneng.com,4efd8533669ee05f2f97c9cf5940f93e699069c4999fa41e64d846ce8dd9d600.jpg,HASH_MAPPED +SAMAN,025086.jpg,kmkim.jpg,RENAMED,김경미,kmkim@samaneng.com,aa2a90ae6ab76fbaa7696235817587b7e859381c36529ddb0f8479c881bec978.jpg,HASH_MAPPED +SAMAN,225272.jpg,kmkim1.jpg,RENAMED,김경민,kmkim1@samaneng.com,0092a4fce388f461e382dd3e11e76db3b5cf51115381c9cd8bc61aac5b9f7bfb.jpg,HASH_MAPPED +SAMAN,218033.jpg,kskim.jpg,RENAMED,김경석A,kskim@samaneng.com,a8094747c64c474417edd970ddea69f398956ee14b77d5ca6b5c69f0ab31dab0.jpg,HASH_MAPPED +SAMAN,224198.jpg,kskim5.jpg,RENAMED,김경석B,kskim5@samaneng.com,a824a99097f314cdf3af2b5aacd6f7391c479fa151238610d94573a131e5b648.jpg,HASH_MAPPED +SAMAN,223091.jpg,kskim2.jpg,RENAMED,김경수,kskim2@samaneng.com,65c85e0b5813b550ff01034d6277f699b458dd855749816465cf414164f0dc68.jpg,HASH_MAPPED +SAMAN,225023.jpg,kskim1.jpg,RENAMED,김경수,kskim1@samaneng.com,3c0142d51ed41184c9ffd6e6c4ab2bab956f8b88e3fa26947c04a40677040062.jpg,HASH_MAPPED +HANMAC,P11302.jpg,kskim3.jpg,RENAMED,김경수,kskim3@brsw.kr,aa5f3955b0bf83332ff042baff836c82c43b61c3b5a6cdaaa3bd9405556f0dc0.jpg,HASH_MAPPED +SAMAN,218005.jpg,kjkim1.jpg,RENAMED,김경종,kjkim1@samaneng.com,521092f3ddb770d47afcd8b61e1c7351c319e7559ac25618be435723e775dc74.jpg,HASH_MAPPED +SAMAN,220064.jpg,khkim2.jpg,RENAMED,김경호,khkim2@samaneng.com,4512ebc0a4664124cb39f69ad6a2fb15876560ee2dfa78dff3d13bb1f1af163d.jpg,HASH_MAPPED +SAMAN,025085.jpg,khkim5.jpg,RENAMED,김경화,khkim5@samaneng.com,03b5ebd21c1bf0c53651762e7d5a41eec609362d8c4ce428fbd8af4d8df5a674.jpg,HASH_MAPPED +HANMAC,M17504.jpg,ghkim7.jpg,RENAMED,김경환,ghkim7@hanmaceng.co.kr,721b4ccd033f52ca965be3728a581e5f4642890a023097c729a2ffcc2cb57ef7.jpg,HASH_MAPPED +SAMAN,226015.jpg,khkim7.jpg,RENAMED,김경훈,khkim7@samaneng.com,0c10bdef08f670fc5ec68785c7516315a16859974343d396f02251400d30d85e.jpg,HASH_MAPPED +SAMAN,218068.jpg,gwkim.jpg,RENAMED,김계원,gwkim@samaneng.com,3e85632308f9bf0c244991446685056b4901fc478536b2047e147a65a7a98daa.jpg,HASH_MAPPED +SAMAN,202098.jpg,kkkim.jpg,RENAMED,김공균,kkkim@samaneng.com,afa5c58ed50ae3d4b4ebe3f1a048b69a20a590045f08422d3cd5d5a7aa80249b.jpg,HASH_MAPPED +SAMAN,217067.jpg,kykim.jpg,RENAMED,김관영,kykim@samaneng.com,69b4c24629a01033046be1ea874f1f68f64066a8b69e2c6109b7293ae8f30aaa.jpg,HASH_MAPPED +SAMAN,224245.jpg,kjkim3.jpg,RENAMED,김관중,kjkim3@samaneng.com,e892e0d5791e31dc436500e4a030e1a057fce473f0a1c80cd20a70339f41475a.jpg,HASH_MAPPED +HANMAC,M22051.jpg,ghkim.jpg,RENAMED,김관후,ghkim@hanmaceng.co.kr,182a4d6f5bf8c5ee874203266d4ff5c26e4144988726a29598d77e05d56a91a9.jpg,HASH_MAPPED +SAMAN,222121.jpg,kgkim.jpg,RENAMED,김광균,kgkim@samaneng.com,43e6f6b2a36078e2f04fa179fc025e5f405b37237484c677fa626c542cb912ee.jpg,HASH_MAPPED +SAMAN,225351.jpg,gnkim.jpg,RENAMED,김광남,gnkim@samaneng.com,0b3e5cd4cf06248578eb3381130869ba3f6e050e85ab27cd6f08efb1953ef311.jpg,HASH_MAPPED +SAMAN,221140.jpg,kwkim.jpg,RENAMED,김광원,kwkim@samaneng.com,a7cc5c6d114c49fc352432af728a1428f214e6e9138c849accf36790ad3da681.jpg,HASH_MAPPED +SAMAN,224142.jpg,kjkim2.jpg,RENAMED,김광준,kjkim2@samaneng.com,e95f27a174a41ccb784c3da5f4a1805a4dc6fb47f4959291735d820344e8371c.jpg,HASH_MAPPED +SAMAN,226030.jpg,khkim3.jpg,RENAMED,김광혜,khkim3@samaneng.com,037d57862503cfe5e04456181ac78064bd1897b32f96a24bc6c637b033feb628.jpg,HASH_MAPPED +SAMAN,218060.jpg,ktkim1.jpg,RENAMED,김국태,ktkim1@samaneng.com,255819d672ff638019f19143c1bf2a8c468deade3b5227dd1b83ba865471232f.jpg,HASH_MAPPED +SAMAN,224296.jpg,ghkim3.jpg,RENAMED,김국현,ghkim3@samaneng.com,4b40a19350b3901054229b6b97ab68e71d3747501326dc011bfba206056effb3.jpg,HASH_MAPPED +SAMAN,218008.jpg,gbkim.jpg,RENAMED,김규범,gbkim@samaneng.com,440a6aaf38f8435c79c8075af94aa8e0dde662677fe15a43c77732dfc9b0cb9b.jpg,HASH_MAPPED +SAMAN,217099.jpg,wjkim.jpg,RENAMED,김우진A,wjkim@brsw.kr,7eef7aee09902a5a5027c7cb4ae3478f4c82ba7c75dafe8fb3622a4bfe859423.jpg,HASH_MAPPED +SAMAN,224026.jpg,ghkim1.jpg,RENAMED,김규화,ghkim1@samaneng.com,bec61ce7dd5c72fda9620a80d5e0cf4ea43120444068c785f8fc9f2d8c2ebb0a.jpg,HASH_MAPPED +SAMAN,223171.jpg,gjkim.jpg,RENAMED,김균준,gjkim@samaneng.com,8cdbe1117c70daa4c1303d8f5e673190b7a4550101d3249873fee67495c6915a.jpg,HASH_MAPPED +SAMAN,224286.jpg,gakim.jpg,RENAMED,김근아,gakim@samaneng.com,ace534aa55367061c41921f92abc739b707082be2aac2e4ceb851120e9f70d9e.jpg,HASH_MAPPED +HANMAC,B20311.jpg,ghkim4.jpg,RENAMED,김근형,ghkim4@brsw.kr,7f2744c329b0878629b5e3972a68a948351a5664e35832575173d3bd411b5f65.jpg,HASH_MAPPED +SAMAN,221068.jpg,klkim.jpg,RENAMED,김기룡,klkim@samaneng.com,0f63149432b4fcee5c283cda3ce7bde5d8df1a7835dd9b02ee096bbd556fe820.jpg,HASH_MAPPED +SAMAN,223328.jpg,kbkim.jpg,RENAMED,김기봉,kbkim@samaneng.com,572758c99e9eda096dbb640866f77a5c2a273b909b409f13ebd9a444afb89143.jpg,HASH_MAPPED +SAMAN,215088.jpg,kykim1.jpg,RENAMED,김기영,kykim1@samaneng.com,59eef729ea2e474dafdd77ea0c72c4860d02bcad6d3c962cb056cca47a62a05a.jpg,HASH_MAPPED +SAMAN,225325.jpg,kykim2.jpg,RENAMED,김기영,kykim2@samaneng.com,937dde6822e1c9dd269445c36f1fb3324223c0505e9c4d24c4b52f1b8a9dc7af.jpg,HASH_MAPPED +SAMAN,221038.jpg,kykim4.jpg,RENAMED,김기용,kykim4@samaneng.com,8d3d49c24af2262e44879f43d8694ef596ae2b417d575f36ccbf342a072e4903.jpg,HASH_MAPPED +SAMAN,226084.jpg,kwkim1.jpg,RENAMED,김기원,kwkim1@samaneng.com,6d80b7c95284c375c93d01cea68359da040a6346c997de9bf20368b2dadb9eb1.jpg,HASH_MAPPED +SAMAN,219079.jpg,khkim4.jpg,RENAMED,김기호,khkim4@samaneng.com,993b810eefece731d44646cb3d4c9ff7587935823f49ee3d5f330a11b6237c4e.jpg,HASH_MAPPED +SAMAN,220003.jpg,ghkim2.jpg,RENAMED,김기호,ghkim2@samaneng.com,1aec690d064070d53de30922b357441984f8d738e690f174de8df1778bece346.jpg,HASH_MAPPED +SAMAN,213064.jpg,khkim.jpg,RENAMED,김기환,khkim@samaneng.com,3d2e822edb036fe36b0b64ecc34b7606a2c8c1989c51a9ff5c99d005991a4389.jpg,HASH_MAPPED +HANMAC,M23059.jpg,ghkim6.jpg,RENAMED,김기환,ghkim6@hanmaceng.co.kr,1d71e4fd7470e4ab81885287f0a61f248fe3f65846d3cbb099d25e5ce9b7685f.jpg,HASH_MAPPED +SAMAN,225307.jpg,khkim6.jpg,RENAMED,김기훈,khkim6@samaneng.com,730608dd7511c6df61ab5d0d909bc1825982329e5c1bcd2abc4a30dc93f7ba21.jpg,HASH_MAPPED +SAMAN,226140.jpg,khkim8.jpg,RENAMED,김기훈,khkim8@samaneng.com,a4d9d1453d71a03a0e3ce21ce5a12bf67e7e7656fb60c68f0fc7f021460763ce.jpg,HASH_MAPPED +SAMAN,206052.jpg,kmkim2.jpg,RENAMED,김길모,kmkim2@samaneng.com,5507c792baa420c65a7ee2cf3bffb1af94428e9cbdac5f2f22b0a3059bc70d53.jpg,HASH_MAPPED +SAMAN,207159.jpg,kwkim2.jpg,RENAMED,김길웅,kwkim2@samaneng.com,26331d82f00d89ebca373b1fbb6ca7111f05359830b46f4822d99ceb2d3eb203.jpg,HASH_MAPPED +HANMAC,B17301.jpg,yjkim7.jpg,RENAMED,김윤재,yjkim7@hanmaceng.co.kr,a145ae581087ed0d956a812b4fe2727d54fb48bac173f23857936a542b9e762f.jpg,HASH_MAPPED +SAMAN,226020.jpg,nykim.jpg,RENAMED,김나연,nykim@samaneng.com,fdc9021f4d01cb2602df01667875a48cab42e95ee284c16c5efd82600c0c0f73.jpg,HASH_MAPPED +SAMAN,226026.jpg,nhkim.jpg,RENAMED,김나현,nhkim@samaneng.com,f805ca23b5e15290d6a61be707f93fd8cb4596935930be939f4f0bce767ee9c2.jpg,HASH_MAPPED +SAMAN,025050.jpg,nhkim5.jpg,RENAMED,김나현,nhkim5@samaneng.com,58fc3baf43616f501089b5787b1f88f83cfd59f8684aea088ddbff8f5a3b94a0.jpg,HASH_MAPPED +SAMAN,026019.jpg,nhkim2.jpg,RENAMED,김나현,nhkim2@samaneng.com,d6bf793b073dceafc83db99970aae1e9d116126e8b4bbfc6aa83eb23b74b0a93.jpg,HASH_MAPPED +SAMAN,222004.jpg,ngkim.jpg,RENAMED,김남걸,ngkim@samaneng.com,c5618d467399ff3d6970b3cebb25113fdccd83ffe29cabbcdd3c2c107fa26434.jpg,HASH_MAPPED +SAMAN,220135.jpg,nkkim1.jpg,RENAMED,김남곤,nkkim1@samaneng.com,9ae4c5ff02107448c1295443a55f005ff7c3e1352f39ba068ebfbd860668404e.jpg,HASH_MAPPED +SAMAN,223286.jpg,nkkim.jpg,RENAMED,김남기,nkkim@samaneng.com,508383b1fed5a1eb622dcdd026fa07e1676a0dab92cb2d6d23a12604f818b034.jpg,HASH_MAPPED +SAMAN,023093.jpg,nokim.jpg,RENAMED,김남옥,nokim@samaneng.com,42454f544e1902e535d2d79c9cd53c7bc322bb501924e3a5930f3b28ff53f72a.jpg,HASH_MAPPED +HANMAC,M24004.jpg,nckim.jpg,RENAMED,김남철,nckim@hanmaceng.co.kr,64addac88236435a665c21b5be8ccf2b635479d0f505e183e5405c85762d2dd1.jpg,HASH_MAPPED +SAMAN,224384.jpg,nhkim3.jpg,RENAMED,김남헌,nhkim3@samaneng.com,4bee712c9994e2dbf15fb2e75cb03e86beca7a15d90308601b3ae6bb31e71d10.jpg,HASH_MAPPED +SAMAN,225024.jpg,nhkim4.jpg,RENAMED,김남훈,nhkim4@samaneng.com,f3a046ea97614c585b6a8bba83f0cc7988741e8a3b06e42406675ff951b5689f.jpg,HASH_MAPPED +SAMAN,025099.jpg,dekim1.jpg,RENAMED,김다은,dekim1@samaneng.com,278113794d0c4fe20e1c7f8b9defe05292be42b441445f5697b3c2a7b7d44778.jpg,HASH_MAPPED +SAMAN,218036.jpg,dskim6.jpg,RENAMED,김대성,dskim6@samaneng.com,38561e114efc8c05b1a7241dbf63f1e5ec37d0f16434df876212e3b8fc311146.jpg,HASH_MAPPED +SAMAN,221277.jpg,dskim2.jpg,RENAMED,김대성,dskim2@samaneng.com,98c72fb3e803d969ebe16a14b23b2551c1c177942e6835d0d49872dbe2be743e.jpg,HASH_MAPPED +HANMAC,M24016.jpg,dskim5.jpg,RENAMED,김대성,dskim5@hanmaceng.co.kr,f99849d8b1439f30015ad605889fcf1b3a0afad74171b0236a466306bb5eaf8e.jpg,HASH_MAPPED +SAMAN,204071.jpg,dskim.jpg,RENAMED,김대수,dskim@samaneng.com,9208b0d2de2816dbf01aa0119b59aa206277819f9073bca9391048f9176375a7.jpg,HASH_MAPPED +SAMAN,206128.jpg,dykim1.jpg,RENAMED,김대영,dykim1@samaneng.com,6ae57725ce577626ee9f3832c82e2d4cd3b52598d09db83112d65dc0cdfcd3c6.jpg,HASH_MAPPED +SAMAN,226060.jpg,dykim3.jpg,RENAMED,김대영,dykim3@samaneng.com,67e037981f23eb4ac4c10f5cb3225282b0769b4baf94ebe5eb69a859499431bc.jpg,HASH_MAPPED +HANMAC,M19104.jpg,djkim2.jpg,RENAMED,김대진,djkim2@hanmaceng.co.kr,397bf5fe70523e54d2eb1e95ddd31c604fe14b852304a1fb581b99a51dedbd79.jpg,HASH_MAPPED +SAMAN,224246.jpg,dhkim.jpg,RENAMED,김대현,dhkim@samaneng.com,1669a1f752f3d32c3d724b7bb6b2e14dc410490a7db3e4464965da6d7d8ed4d8.jpg,HASH_MAPPED +HANMAC,M22058.jpg,dykim.jpg,RENAMED,김덕용,dykim@hanmaceng.co.kr,9c73d784509dee34971667e76ec409adbd5c4b16a020b9827368c11457fb7504.jpg,HASH_MAPPED +SAMAN,223326.jpg,dykim2.jpg,RENAMED,김도연,dykim2@samaneng.com,4519428782e1f59dfe7ed31dfeef03eaec967b10b250ea7d1c7e85958b52d4c6.jpg,HASH_MAPPED +SAMAN,223004.jpg,dwkim3.jpg,RENAMED,김도우,dwkim3@samaneng.com,949d1b2f2437e100fc83f4b4cf915d32a0e1880e82414e607bbd5be7c21c2231.jpg,HASH_MAPPED +SAMAN,217104.jpg,dhkim1.jpg,RENAMED,김도헌,dhkim1@samaneng.com,b1f5562899e1c658d24c335d7e6b1b56df182d089578b6fbacddddbd36bb8f0f.jpg,HASH_MAPPED +SAMAN,222152.jpg,dhkim3.jpg,RENAMED,김도현,dhkim3@samaneng.com,f553a87a139ef527b5aae4e2522643e8504758ac53c7ef3c5f8143cdef7f8bed.jpg,HASH_MAPPED +SAMAN,225210.jpg,dgkim2.jpg,RENAMED,김동규,dgkim2@samaneng.com,5ae144273d6dbea6f371a343d2a2736bd5a0e598c28a13acca0d67e2d0f1990f.jpg,HASH_MAPPED +SAMAN,220024.jpg,dgkim.jpg,RENAMED,김동길,dgkim@samaneng.com,dc2a7d5d089521e47f4f88e6118be1344b0de1abb264072966498b7cef4a725c.jpg,HASH_MAPPED +SAMAN,221076.jpg,dgkim1.jpg,RENAMED,김동길,dgkim1@samaneng.com,2532766737f6eafc42f88627107f84fbf487a8518b3c00593ff134620328e56e.jpg,HASH_MAPPED +SAMAN,221317.jpg,drkim.jpg,RENAMED,김동렬,drkim@samaneng.com,7ffb7395abe5bfb73780ac527d5898633f7aff087b0c08d2c113228bef295b4b.jpg,HASH_MAPPED +SAMAN,196147.jpg,dbkim.jpg,RENAMED,김동범,dbkim@samaneng.com,41ffbe284e4114fa911df6fcd18b88082253e35cf383ec2252e6f935f085bc72.jpg,HASH_MAPPED +HANMAC,M25030.jpg,dvkim.jpg,RENAMED,김동빈,dvkim@hanmaceng.co.kr,d060bdd60a909aaefcfb0982650c3b47031425f2642926c82d4c5f713199d052.jpg,HASH_MAPPED +SAMAN,213066.jpg,dskim1.jpg,RENAMED,김동수,dskim1@samaneng.com,1b91acb77ac0d0c41701af33cee466148ccade5d8ab5aa6f259444fdaf9bfa05.jpg,HASH_MAPPED +HANMAC,B23021.jpg,dskim4.jpg,RENAMED,김동수,dskim4@hanmaceng.co.kr,821fda33999b70ba5c0b9e396bbb858e1d4bb4d3e7a5ef7ac62d8ab7daa1dd94.jpg,HASH_MAPPED +SAMAN,225171.jpg,dwkim4.jpg,RENAMED,김동우,dwkim4@samaneng.com,91f4467fc9b33bed11798f0c79948b81a6fe77b4725b265a63f6b265972830fb.jpg,HASH_MAPPED +HANMAC,M26010.jpg,dwkim5.jpg,RENAMED,김동욱,dwkim5@hanmaceng.co.kr,59980a1068949be34c7168c9009bc38ef0c05d0a2e358a01f5718c4ada7e9e9d.jpg,HASH_MAPPED +SAMAN,215045.jpg,dwkim.jpg,RENAMED,김동원,dwkim@samaneng.com,586853a4643fdccfc57bbf4ddf0702b3aaeee5162ea566be49fe43e45c232dfc.jpg,HASH_MAPPED +JANGHEON,J22205.jpg,dwkim2.jpg,RENAMED,김동원,dwkim2@brsw.kr,8949d9f21d6b0f2410e1466bb5187938aeb26db4cbcd02f01e1d92e089d4ec0d.jpg,HASH_MAPPED +SAMAN,223276.jpg,dekim.jpg,RENAMED,김동은,dekim@samaneng.com,54d190121dc4809a60bb6451d76fe74027034f3ca2ff2b8c798a2d18d55630ff.jpg,HASH_MAPPED +SAMAN,214038.jpg,djkim.jpg,RENAMED,김동주,djkim@samaneng.com,e046866eedf96aa504c8fa9bf424bb5a73df48d970096fcc6ed8d9ef60f80180.jpg,HASH_MAPPED +HANMAC,M02608.jpg,djkim3.jpg,RENAMED,김동주,djkim3@hanmaceng.co.kr,fc8476510f5cb98e103d5925e7ebbe1d98295cb1b7f957ad3cd738b8057dfe72.jpg,HASH_MAPPED +HANMAC,M21405.jpg,djkim4.jpg,RENAMED,김동준,djkim4@hanmaceng.co.kr,3262b4adcd2f8ab05e74ac112beb4c2ad0365617a8ec218222d8aaac211e2cbe.jpg,HASH_MAPPED +SAMAN,224038.jpg,djkim1.jpg,RENAMED,김동진,djkim1@samaneng.com,c6011e5848275b9f346e63e4cff3aad0d78174cd02a7485911e01ffdfa11bb24.jpg,HASH_MAPPED +SAMAN,217069.jpg,dckim1.jpg,RENAMED,김동철,dckim1@samaneng.com,bc1e60bfec34291310912dae91bf90bfa42afad664c9380dc0920531020c1ab3.jpg,HASH_MAPPED +SAMAN,206192.jpg,dhkim5.jpg,RENAMED,김동하,dhkim5@samaneng.com,4a4fb9583a7e3804064ed6dcc82c1be5c1a95b3c2cd8860410d9079db801e2b9.jpg,HASH_MAPPED +HANMAC,M25055.jpg,dhkim7.jpg,RENAMED,김동한,dhkim7@hanmaceng.co.kr,040b0d63625032a4dd3590f47b26dd9960b0be98fa5f3994e3f8eb797dd16786.jpg,HASH_MAPPED +SAMAN,226108.jpg,dhkim6.jpg,RENAMED,김동현,dhkim6@samaneng.com,db3abe9cabf816ff7e5525b6f28945d84a4f1fa0489181c6b91074389faa344b.jpg,HASH_MAPPED +SAMAN,225034.jpg,dhkim2.jpg,RENAMED,김동휘,dhkim2@samaneng.com,b3d8ded47fd6dea1e93d26465907d8a6a6627e9116f759c60d7f3ce507cbde08.jpg,HASH_MAPPED +SAMAN,221296.jpg,dskim3.jpg,RENAMED,김득수,dskim3@samaneng.com,45c679c4acf2bc0438ad9c54ff87e616a6b2a14220869278da5eff7000fc8512.jpg,HASH_MAPPED +SAMAN,217125.jpg,rgkim.jpg,RENAMED,김량균,rgkim@brsw.kr,5a58b3056d25cbb16c340cd088eb778b384da26b5ffa639eb2601c66550a1886.jpg,HASH_MAPPED +SAMAN,224357.jpg,lakim.jpg,RENAMED,김리안,lakim@samaneng.com,d7c4f43c7bc0592cc4f4e6f78db1aa1789ee7feeb989b6d6541a53f4912d4516.jpg,HASH_MAPPED +SAMAN,224180.jpg,mgkim1.jpg,RENAMED,김만규,mgkim1@samaneng.com,2111f976400355dc1a1a2895cafba041cf355dd1e4625dd6368026dfd9a35406.jpg,HASH_MAPPED +SAMAN,214035.jpg,mskim2.jpg,RENAMED,김만선,mskim2@samaneng.com,79815e3fce61c1419b1a1e25f3520b8cd9843798a605f4945f8b99c0732f4ee1.jpg,HASH_MAPPED +SAMAN,218108.jpg,mkim1.jpg,RENAMED,김명,mkim1@samaneng.com,4bdec206163be7840411743531eecc5481e870543c89cfab5ab030cd78e2f42f.jpg,HASH_MAPPED +SAMAN,199055.jpg,mskim3.jpg,RENAMED,김명수,mskim3@samaneng.com,409be68485c139da8dd06513a9a76f5ea5a29fc16de345d89ba8de8aa57ba651.jpg,HASH_MAPPED +SAMAN,025065.jpg,mskim1.jpg,RENAMED,김명숙,mskim1@samaneng.com,7e987d6616e00f1d0d9e084686d6365c9c7d36283e89eb830f8bcea9e60647bc.jpg,HASH_MAPPED +SAMAN,219154.jpg,mskim.jpg,RENAMED,김명식,mskim@samaneng.com,5ce0f24be45de4589b7c57c224bc5a825568bdbfb6eec75cb968e65eadf90537.jpg,HASH_MAPPED +HANMAC,M22008.jpg,mskim13.jpg,RENAMED,김명식,mskim13@hanmaceng.co.kr,c738ff47779460e7cb7cd7e7242c75b533bae16a7229eb1ef2e258afa10db89a.jpg,HASH_MAPPED +SAMAN,224201.jpg,mjkim.jpg,RENAMED,김명조,mjkim@samaneng.com,90ea5e9886c287a8df738a79eb8b0994f6c7e8edf46d1f07d1a86ff92e7d6ace.jpg,HASH_MAPPED +SAMAN,220046.jpg,mjkim4.jpg,RENAMED,김명준,mjkim4@samaneng.com,ea83adc07e828cbe9c0b609e8b98d9c6fedf8fb9466c255fac8a90d827663982.jpg,HASH_MAPPED +SAMAN,209127.jpg,mskim6.jpg,RENAMED,김무섭,mskim6@samaneng.com,c83d2e68785673578ff61f533ff7d9b4ce4b1e39ae93b6bffbeacaec4855ef4a.jpg,HASH_MAPPED +SAMAN,173002.jpg,mukim.jpg,RENAMED,김무언,mukim@samaneng.com,f602e7f8da03daf8fbda3dfc859efa2d10ae9c424aa91e1ff6b3d3e9668b1ba3.jpg,HASH_MAPPED +SAMAN,219142.jpg,mykim2.jpg,RENAMED,김무영,mykim2@samaneng.com,f9f1b91a3569279e33a7fe7e78d5061134584b8ec549be7b986ec33fa43fa595.jpg,HASH_MAPPED +SAMAN,224189.jpg,mgkim2.jpg,RENAMED,김문기,mgkim2@samaneng.com,7a7a63815fe234259e3ee76b1aafc73510c11b1c53b647c042e72741fa1ddb7d.jpg,HASH_MAPPED +SAMAN,226115.jpg,mskim12.jpg,RENAMED,김문수,mskim12@samaneng.com,f543bac755d4c754292ddf9f25ad180cce67dff7ac75f580efb8d2fe2f799aff.jpg,HASH_MAPPED +SAMAN,025108.jpg,mkim4.jpg,RENAMED,김미,mkim4@samaneng.com,feebc2f93173e7a8d7d9415ec4e022f7d62e72ee172a9217fd05044a7439acd8.jpg,HASH_MAPPED +SAMAN,221208.jpg,mrkim1.jpg,RENAMED,김미라,mrkim1@samaneng.com,f35e4b4ec059aea6abfe6841947f782a6d26afa5f99f253a7206be27f3d51fea.jpg,HASH_MAPPED +SAMAN,224368.jpg,mrkim2.jpg,RENAMED,김미리,mrkim2@samaneng.com,435e58aca592afa61f01f979af34b40462f9783ed9c5c8e15c2254473e5c8081.jpg,HASH_MAPPED +JANGHEON,J10313.jpg,mjkim7.jpg,RENAMED,김미자,mjkim7@brsw.kr,1932130359582a8f1bdec00be01ae7acf34e154b86dab654b6882e3288de0c7f.jpg,HASH_MAPPED +SAMAN,026055.jpg,mjkim2.jpg,RENAMED,김미정,mjkim2@samaneng.com,f000fc80508731f0b0174be08e4c397a2a2bba7f40668bd92ff0ef73e067ccf2.jpg,HASH_MAPPED +SAMAN,026031.jpg,mhkim1.jpg,RENAMED,김미희,mhkim1@samaneng.com,c7bd09d7f8394369d6e09cdd510f8996d0aea67a56ef1d218869881f68a86a4f.jpg,HASH_MAPPED +SAMAN,216064.jpg,mkim.jpg,RENAMED,김민,mkim@samaneng.com,f619a040e788f0e0c3e12042b28ccdbe5eca39449ba5c336824a4ac0b72805ff.jpg,HASH_MAPPED +SAMAN,223282.jpg,mgkim.jpg,RENAMED,김민규,mgkim@samaneng.com,5ec12b8024fed3f3da3bef63957f4ea64d9cb2e685b56be61d30f768c7cdafa2.jpg,HASH_MAPPED +SAMAN,225068.jpg,mgkim3.jpg,RENAMED,김민규,mgkim3@samaneng.com,0cbff3a81cb80b4deb7f2f5999b2826c2ebe6ea867cd4189bb1861d012c2e96e.jpg,HASH_MAPPED +SAMAN,226013.jpg,mgkim4.jpg,RENAMED,김민규,mgkim4@samaneng.com,eea1984c5ebf477b87d0da00dc5c16043370ad3a320ba1f33d02919ac68ad3a9.jpg,HASH_MAPPED +SAMAN,225134.jpg,mskim9.jpg,RENAMED,김민석,mskim9@samaneng.com,2c810c6d0c42bd8eaeff7f80bbea99c8a27a1e26c804e63c0c629ec7c4f97814.jpg,HASH_MAPPED +SAMAN,218002.jpg,mskim7.jpg,RENAMED,김민성,mskim7@samaneng.com,03012a24ec6bcca6b9a3c4342583fbe7145b4ae7096b155cc301aa6f9f9dcf1b.jpg,HASH_MAPPED +SAMAN,218148.jpg,mskim4.jpg,RENAMED,김민성,mskim4@samaneng.com,5a2bb1eba332739b266397337c9371380adfa497143a9bcbed5af8f0649f9731.jpg,HASH_MAPPED +SAMAN,226095.jpg,mskim10.jpg,RENAMED,김민성,mskim10@samaneng.com,8d7ca9a92682b3010c64fc8220d02433a3e9a560183238236e1a2a628aeebbcc.jpg,HASH_MAPPED +SAMAN,223006.jpg,mskim8.jpg,RENAMED,김민수,mskim8@samaneng.com,0cb34629029dd51910489594516fecb5eb93977458eac8416728959b922d0e9c.jpg,HASH_MAPPED +SAMAN,224330.jpg,mskim5.jpg,RENAMED,김민수,mskim5@samaneng.com,d2eb4e917c4f0062625b2f769b3071515b3026de5df234cbe43971902c9a10c0.jpg,HASH_MAPPED +SAMAN,223341.jpg,mukim1.jpg,RENAMED,김민우,mukim1@samaneng.com,82c21b449d3690ec2be665a172f5eb3b5cabd5325c2f5d16912220b7f45152d3.jpg,HASH_MAPPED +SAMAN,224133.jpg,mwkim.jpg,RENAMED,김민우,mwkim@samaneng.com,3aeb4b640e57294e03ee9770d5ac0684e8669f10b76e0252505fddc66b954982.jpg,HASH_MAPPED +SAMAN,225169.jpg,mjkim6.jpg,RENAMED,김민재,mjkim6@samaneng.com,3ccdd32ca046d9ecef999702828f688d58cf48ff287ddb2cdc61676fd305f2eb.jpg,HASH_MAPPED +SAMAN,224318.jpg,mjkim5.jpg,RENAMED,김민종,mjkim5@samaneng.com,e0005db121ba97eda1aa7ef2178c1c190c7e598f860c67ac32251561fd0b471a.jpg,HASH_MAPPED +SAMAN,225304.jpg,mjkim8.jpg,RENAMED,김민종,mjkim8@samaneng.com,855d41f3924d800e4d7a02030503d504a1e4350c9e25fce580e898b726964cfb.jpg,HASH_MAPPED +SAMAN,224065.jpg,mjkim1.jpg,RENAMED,김민주,mjkim1@samaneng.com,2a70798561a68969b86653611ba1f2770ed4ad6cc1d85d675fc9306d209c9c83.jpg,HASH_MAPPED +PTC,P22301.jpg,mjkim9.jpg,RENAMED,김민준,mjkim9@brsw.kr,8af3925f97fd6dcf14969a9b9bf23afda63e1a0d27db0c7d6e7369631e1aa34f.jpg,HASH_MAPPED +SAMAN,217046.jpg,mjkim3.jpg,RENAMED,김민지,mjkim3@samaneng.com,bc7e038dcc64a3c47aa45e1857de026a53068de3f16cca6cb52ebc4ead754bb0.jpg,HASH_MAPPED +SAMAN,205003.jpg,mckim.jpg,RENAMED,김민철,mckim@samaneng.com,f4d98fa6ed7729bba2f101dc8dc4a57ebaf30e3eebd29dee2813cbec33c18f8e.jpg,HASH_MAPPED +SAMAN,224248.jpg,mhkim.jpg,RENAMED,김민혜,mhkim@samaneng.com,08eeb846f83ee9176731389d86a8ec83b1a38cf42a159a804ea1e1c51fac5417.jpg,HASH_MAPPED +SAMAN,202041.jpg,bjkim.jpg,RENAMED,김백중,bjkim@samaneng.com,c89da93316a62b0badbe1473e88981c320c6dfbd27aa5a30b8be4bf1fb13b112.jpg,HASH_MAPPED +JANGHEON,J22202.jpg,bskim7.jpg,RENAMED,김범석,bskim7@brsw.kr,7f5c587819391f52263d3a405c2b4215600d6c13016ec5a2083db63a2a95c259.jpg,HASH_MAPPED +SAMAN,217110.jpg,bkkim1.jpg,RENAMED,김병국,bkkim1@samaneng.com,62859048d374361ccc2090e959ab14e08205d9169f186cd174cc0ec868d8cc41.jpg,HASH_MAPPED +HANMAC,M26003.jpg,bkkim.jpg,RENAMED,김병국,bkkim@hanmaceng.co.kr,9cd2a1dac2c791fe7b9c54b710ebedb769bb991cff68fc874e17eea995df2045.jpg,HASH_MAPPED +SAMAN,226052.jpg,bgkim1.jpg,RENAMED,김병근,bgkim1@samaneng.com,ddea7907ba92ede764f1a378f5efd790863dbb8cd0bc2fb2ca520058d8b2ea6b.jpg,HASH_MAPPED +SAMAN,226094.jpg,bmkim1.jpg,RENAMED,김병문,bmkim1@samaneng.com,1f4eb360f526ece51d9b8da3f5aaa8ac36a3d421180925ffcf2e619b6af030d2.jpg,HASH_MAPPED +SAMAN,221329.jpg,bskim.jpg,RENAMED,김병수,bskim@samaneng.com,ce37f4a38a5d07fe6bf5c25741008c6af308a989c2f7e8eb43f5ba8ef95188ea.jpg,HASH_MAPPED +SAMAN,225152.jpg,bokim.jpg,RENAMED,김병옥,bokim@samaneng.com,9d0d605653bf43f93a5a9663649eab820881a419c16fc4c4889ca63669710a77.jpg,HASH_MAPPED +SAMAN,218128.jpg,bjkim2.jpg,RENAMED,김병조,bjkim2@samaneng.com,923cceb2813f2805854dfee39bd69a0010b08ded94330a554db5e61bf2223a16.jpg,HASH_MAPPED +SAMAN,225131.jpg,bjkim1.jpg,RENAMED,김병준,bjkim1@samaneng.com,efc06a9f4765bf7cacaa8a41cf99fb2452ac6b052505092239af0ebb200760dc.jpg,HASH_MAPPED +HANMAC,M15408.jpg,bckim2.jpg,RENAMED,김병찬,bckim2@hanmaceng.co.kr,8ca885099e766e6235fb4e982d682d563416e3f2b7db5c9d2dd7a65b70e5a9db.jpg,HASH_MAPPED +SAMAN,221064.jpg,bckim.jpg,RENAMED,김병철,bckim@samaneng.com,21984b3585c25acb3df836e446ef3ba98557570f934f95d450ce6d7d04e5ea2a.jpg,HASH_MAPPED +SAMAN,225019.jpg,bgkim.jpg,RENAMED,김보건,bgkim@samaneng.com,59f756ded845391779bb87a2bfbe1f8603467ff3d2923c8f129b6b2420d620f3.jpg,HASH_MAPPED +SAMAN,226036.jpg,bmkim.jpg,RENAMED,김보묵,bmkim@samaneng.com,ce87211c9a4524df5812f83e4a3a1ee945c34fe47eeff3a3d464af1d1ea2e3e9.jpg,HASH_MAPPED +SAMAN,215108.jpg,bskim1.jpg,RENAMED,김보성,bskim1@samaneng.com,d2e8ea1da6d978c0efed77ea798a08f3d78e3d258c97130e44f0bd6b0940a93e.jpg,HASH_MAPPED +SAMAN,206020.jpg,bskim3.jpg,RENAMED,김봉수,bskim3@samaneng.com,5dfaa2287a9175dc6efb0f61b4fc8f5a59a36b526c4924f81d9484252d298145.jpg,HASH_MAPPED +SAMAN,223224.jpg,bskim5.jpg,RENAMED,김봉식,bskim5@samaneng.com,a34d44f0ea962472994679d76534ce0e82e4dfede48ce21a463b31188378eed2.jpg,HASH_MAPPED +HANMAC,M21401.jpg,bykim.jpg,RENAMED,김봉용,bykim@hanmaceng.co.kr,253ea4786aec7770676e475c3798645b82dd46217f61fe1476b0617e815ff176.jpg,HASH_MAPPED +SAMAN,222146.jpg,bhkim.jpg,RENAMED,김봉현,bhkim@samaneng.com,dd5bb8663e06701fe300fd1f717318b29824fa13da83d832434ecdb546f83558.jpg,HASH_MAPPED +SAMAN,208127.jpg,sgkim2.jpg,RENAMED,김상구,sgkim2@samaneng.com,4a2a54e63254b57f3f06de5bf3b0a2aa998366bc34508b2a99f4e93727a09ac2.jpg,HASH_MAPPED +SAMAN,220168.jpg,skkim5.jpg,RENAMED,김상규,skkim5@samaneng.com,dba8223ada973d11aec01e95e3485675e74371dff3b4e4c6b6ff856d095a05e3.jpg,HASH_MAPPED +SAMAN,208119.jpg,skkim4.jpg,RENAMED,김상균,skkim4@samaneng.com,404aece4e3e82af83ce5bf91870e4ed7420babe9765989b607a55ebecd289b9e.jpg,HASH_MAPPED +SAMAN,225222.jpg,sdkim3.jpg,RENAMED,김상덕,sdkim3@samaneng.com,262733d26f16ce0150afd7333b81e71c26a46e8dce4048d3398f7008344ac67c.jpg,HASH_MAPPED +SAMAN,224197.jpg,sdkim2.jpg,RENAMED,김상돈,sdkim2@samaneng.com,099005ba1219d03efba8952a07943b8dae20bfacf56ea6cac09270d935c11b7f.jpg,HASH_MAPPED +SAMAN,220058.jpg,sdkim1.jpg,RENAMED,김상동,sdkim1@samaneng.com,2b88fafc4b178935d0af22728102d018eb87a87826c77ab62670201027b549d9.jpg,HASH_MAPPED +SAMAN,188005.jpg,sbkim.jpg,RENAMED,김상범,sbkim@samaneng.com,67004cb5d5a8bffe467cbb3b0cbf4e11de9018d2235079be44934d8aba5e5544.jpg,HASH_MAPPED +SAMAN,226033.jpg,sskim2.jpg,RENAMED,김상성,sskim2@samaneng.com,a1ca87ace53a1d10490baceefb9d1304112e953bc477afe0d044d3b76a1c1aed.jpg,HASH_MAPPED +SAMAN,225174.jpg,sskim.jpg,RENAMED,김상수,sskim@samaneng.com,69ac0a9775e2246fc6244e4a2023962a1fcfbd8b6493aab95654a6329df20123.jpg,HASH_MAPPED +HANMAC,M12203.jpg,sskim6.jpg,RENAMED,김상수,sskim6@hanmaceng.co.kr,7617ce71c9aafce04b15f7b12a065b02bd14fd5e6e62519b98c0122e95a16d6c.jpg,HASH_MAPPED +SAMAN,220160.jpg,sykim4.jpg,RENAMED,김상용,sykim4@samaneng.com,a4be68d4ca2a685a6db428890b3ff60b4d2f354b4e43e35b4b2b77936bce8372.jpg,HASH_MAPPED +SAMAN,221157.jpg,sykim1.jpg,RENAMED,김상용,sykim1@samaneng.com,ff0c26d719ad416817719ff5440d94320ba0eec5cb258b20449f83aab06f8b75.jpg,HASH_MAPPED +HANMAC,P11202.jpg,swkim3.jpg,RENAMED,김상욱,swkim3@brsw.kr,eff6dccf5fdd9a731913fba516bd7aa7fd9b82dda5352d027e5279d8b85ad0fe.jpg,HASH_MAPPED +SAMAN,216022.jpg,sjkim.jpg,RENAMED,김상종,sjkim@samaneng.com,2fd8b666b00e5e755a79c4f561bc145f2fae914f53f879da70af949b42c75f1b.jpg,HASH_MAPPED +SAMAN,218153.jpg,sckim3.jpg,RENAMED,김상철,sckim3@samaneng.com,17054501713b232f8d6e1ddcc9aa000613cfc4a085b13909ebe2fb5a83ca92ef.jpg,HASH_MAPPED +JANGHEON,J22302.jpg,sckim5.jpg,RENAMED,김상철,sckim5@brsw.kr,7b39888f5c5cbfab1f83affad2db67f1fa51b6b446dccc4731e2fe27db9217a7.jpg,HASH_MAPPED +SAMAN,216118.jpg,shkim.jpg,RENAMED,김상현,shkim@samaneng.com,c874a688c7560d83730689e5b8a717c639fdc7dd70cf68f7ec01679b65bee7a8.jpg,HASH_MAPPED +SAMAN,025029.jpg,shkim3.jpg,RENAMED,김상현,shkim3@samaneng.com,84065a5bb988caa77b3598d56687cd3f9229d6f5a91906ed21ead50267f865da.jpg,HASH_MAPPED +SAMAN,024115.jpg,shkim10.jpg,RENAMED,김서현,shkim10@samaneng.com,3a418c10ef5994737548bb2c86e327e434e349b6fd6e7127a4e346d048fb23f0.jpg,HASH_MAPPED +SAMAN,221303.jpg,skkim2.jpg,RENAMED,김석규,skkim2@samaneng.com,2d47f3917d279645e72ef4bd112402be2cdf1734baaa360bc53504cc55eeb13e.jpg,HASH_MAPPED +SAMAN,225300.jpg,sgkim5.jpg,RENAMED,김석근,sgkim5@samaneng.com,3bdd92860cb29eb3fd05016330da434694e2b11772040ae17f63ca8115c6e531.jpg,HASH_MAPPED +HANMAC,M25023.jpg,sdkim5.jpg,RENAMED,김석동,sdkim5@hanmaceng.co.kr,f8b918ecb51b0bfc44ee7863cfae90d1b9a9df444c60721666376efaf00c7ac1.jpg,HASH_MAPPED +SAMAN,225303.jpg,sjkim8.jpg,RENAMED,김석조,sjkim8@samaneng.com,d08640b5b9dd7f3c695b82079fa33a27dccba561910b7e8cc25ad0464d30dc9d.jpg,HASH_MAPPED +SAMAN,223343.jpg,sjkim5.jpg,RENAMED,김석진,sjkim5@samaneng.com,4a7a8de2db4c285aa0c16d888619ec3acb67e374054c0c09a088fc0849ba10b2.jpg,HASH_MAPPED +SAMAN,225081.jpg,sgkim4.jpg,RENAMED,김선구,sgkim4@samaneng.com,11be88567190f1e7799c75b60665413cebd59d1aabdc280f33cd43e3c448943f.jpg,HASH_MAPPED +SAMAN,225132.jpg,skkim8.jpg,RENAMED,김선근,skkim8@samaneng.com,62067b07a4238e39a5151792f5490c371c30f419475a2cc633ef7088c7895028.jpg,HASH_MAPPED +SAMAN,225310.jpg,snkim.jpg,RENAMED,김선녕,snkim@samaneng.com,a99b30302884701af568e0a3bbab950f17332ef7dabcf701455a3d868292f866.jpg,HASH_MAPPED +SAMAN,225345.jpg,sbkim2.jpg,RENAMED,김선배,sbkim2@samaneng.com,ce42b9d7d3e563a27d88291111aa7f90ad9c3bbeaf6a87ea8646cadd05fa6158.jpg,HASH_MAPPED +SAMAN,225243.jpg,sbkim6.jpg,RENAMED,김선범,sbkim6@samaneng.com,285e880b2212ff1aadd040d3b2bf3c694ef86d4a513be7aae919a86128ae51d7.jpg,HASH_MAPPED +SAMAN,025059.jpg,sjkim3.jpg,RENAMED,김선자,sjkim3@samaneng.com,046c3fbd749b6a0d6b0346ef4a8d6960463011d751df3c99e7db3a2cffbc29e3.jpg,HASH_MAPPED +SAMAN,219124.jpg,stkim2.jpg,RENAMED,김선택,stkim2@samaneng.com,e518f2956c905dd761e325ad6c6eedd2fdfea3cdf175e4aca825205e29e5c8cf.jpg,HASH_MAPPED +SAMAN,223273.jpg,shkim9.jpg,RENAMED,김선환,shkim9@samaneng.com,c20a080e8b76c03ef918d5bbfa4528ad4040dc436145847e566db606170e5c5d.jpg,HASH_MAPPED +SAMAN,223044.jpg,skkim6.jpg,RENAMED,김성광,skkim6@samaneng.com,eeff74ba67503fe6a7ff0d5428b133ad4ff2e9896deefe95b51363ec095eb0ec.jpg,HASH_MAPPED +PTC,P09306.jpg,skkim1.jpg,RENAMED,김성규,skkim1@brsw.kr,baa7bc2393036885f6b740c0522323555ec30e6526b27df530ce71a92fa8ed23.jpg,HASH_MAPPED +SAMAN,218163.jpg,sgkim1.jpg,RENAMED,김성규A,sgkim1@samaneng.com,a4d92b9cce9febd4c17de9ddd147600008298d41d05090a23a8ff76542b2f570.jpg,HASH_MAPPED +SAMAN,220082.jpg,sgkim3.jpg,RENAMED,김성규B,sgkim3@samaneng.com,5b861a3c1a080b7174e4ae40b0dcf16ea4c7fc0cb092741a44eab55f9cbeb2b8.jpg,HASH_MAPPED +SAMAN,199115.jpg,sdkim.jpg,RENAMED,김성덕,sdkim@samaneng.com,12d20320c2eb44396b8df48f9473c4e4eb3c401dd257c8ea3de62c835b11823f.jpg,HASH_MAPPED +HANMAC,M21439.jpg,sdkim4.jpg,RENAMED,김성도,sdkim4@hanmaceng.co.kr,b59f88abeeb4e7fab0ace5da74b50ff9f0a657510fd63ede39a0e776f2f5c27e.jpg,HASH_MAPPED +SAMAN,216074.jpg,srkim1.jpg,RENAMED,김성룡,srkim1@samaneng.com,a04e7ea51dbf54b24c75c125af2b451b2b3bb1257302ae5b11c07bb65b1a0ab8.jpg,HASH_MAPPED +SAMAN,224006.jpg,smkim2.jpg,RENAMED,김성민,smkim2@samaneng.com,36c54ebfade74efd2413de41e74c971ea659bfeed01b6caf67f9797233672c23.jpg,HASH_MAPPED +SAMAN,223237.jpg,sbkim5.jpg,RENAMED,김성배,sbkim5@samaneng.com,f1e70e549c19a2b42d5906151078bb8f795a2505c066f9f48572af27252f0bef.jpg,HASH_MAPPED +SAMAN,225337.jpg,sskim1.jpg,RENAMED,김성수,sskim1@samaneng.com,bff8ebcf416fd9b90a36c809be0a0c5ed82c5e8bfbbf08bfa357f5fbbf12ae56.jpg,HASH_MAPPED +HANMAC,M12204.jpg,sskim7.jpg,RENAMED,김성수,sskim7@hanmaceng.co.kr,f0067c7f53d608ddaab9f5b69b3d83908e3697515736227fd74f255578f0aac7.jpg,HASH_MAPPED +SAMAN,213036.jpg,sskim5.jpg,RENAMED,김성식,sskim5@samaneng.com,c95233f9d727ae4679dcb39e8dc48dcc8e34f9a8ad3912a27efd3650ad0c5b1d.jpg,HASH_MAPPED +SAMAN,225110.jpg,sykim3.jpg,RENAMED,김성엽,sykim3@samaneng.com,de22d4aa16231de75569e742113b9f7e9b95bc23fb9cc97a682c01b2d1ec8535.jpg,HASH_MAPPED +SAMAN,211047.jpg,sukim.jpg,RENAMED,김성욱,sukim@samaneng.com,062d34bf5c8eb4a0d5bb2865b78b7786dae48f409a89dafe96fa77d2d4b394b3.jpg,HASH_MAPPED +SAMAN,226110.jpg,swkim2.jpg,RENAMED,김성욱,swkim2@samaneng.com,167c1212403a6ae9f32b3aa25d44cef563d01ff3e5685c3ffb564eb53fbc021e.jpg,HASH_MAPPED +SAMAN,210114.jpg,swkim.jpg,RENAMED,김성웅,swkim@samaneng.com,1cfec5de44e2f8f331c8e1c3fd45ab5abdb25b7506951240085e628b426ad106.jpg,HASH_MAPPED +SAMAN,221284.jpg,swkim1.jpg,RENAMED,김성원,swkim1@samaneng.com,f47c50d835be043200d075cf986fd66312c463eec3477f7e270a07630cb0c930.jpg,HASH_MAPPED +JANGHEON,J17205.jpg,swkim5.jpg,RENAMED,김성원,swkim5@brsw.kr,eedf59ecb4768746133dab9aaf4507f90fb1b58a5b6c699c984fa020329d8d57.jpg,HASH_MAPPED +HANMAC,M23055.jpg,sjkim10.jpg,RENAMED,김성주,sjkim10@hanmaceng.co.kr,72cd13398e44246f0b08391927cb08fcf7a6764d06dedeeef5891416d3ce8af6.jpg,HASH_MAPPED +SAMAN,223277.jpg,sjkim4.jpg,RENAMED,김성중,sjkim4@samaneng.com,c6e43c0f4fffd93c7238e43c9ad408839ff1b80bbd86e57748b04f54327a1771.jpg,HASH_MAPPED +SAMAN,225245.jpg,sjkim7.jpg,RENAMED,김성직,sjkim7@samaneng.com,67bff0ae7d63b8e66b97fd170c014e3a10d3131ad8b27839bbadfeb197028ace.jpg,HASH_MAPPED +SAMAN,225007.jpg,sjkim2.jpg,RENAMED,김성진,sjkim2@samaneng.com,0898a88386b0c2543bd17a6acbd745b54d93fa2624ea05f429d7a30ad09d7bc9.jpg,HASH_MAPPED +SAMAN,188003.jpg,sckim.jpg,RENAMED,김성철,sckim@samaneng.com,5f06ace86d5cb4b1e36480fefa9e12459db880779888bc49f3df0d63428d8df0.jpg,HASH_MAPPED +SAMAN,225124.jpg,sckim1.jpg,RENAMED,김성철,sckim1@samaneng.com,17e55bb35566ababaf95b458ed8d437f32475776741f4f21f58f5d85bb32f0ee.jpg,HASH_MAPPED +SAMAN,201080.jpg,stkim.jpg,RENAMED,김성택,stkim@samaneng.com,8af6aec7a5d0cd0baddc32f081d5173db0fb40d79053a40da26672d7e24cef25.jpg,HASH_MAPPED +SAMAN,221090.jpg,shkim2.jpg,RENAMED,김성호,shkim2@samaneng.com,3bba806ec57fe4f2049c846bf78616fcbfedc959943b61806b3dfc5ff06b2b74.jpg,HASH_MAPPED +SAMAN,223354.jpg,shkim11.jpg,RENAMED,김성환,shkim11@samaneng.com,636784fdafb7ead2477c9749e2560eefbf838b8ca95e93cec58b88933a068442.jpg,HASH_MAPPED +JANGHEON,J25301.jpg,shkim7.jpg,RENAMED,김성환,shkim7@brsw.kr,a0e4c980c6174a6ad26d40b1cbfd433200d9b900bc964df6e34635bb1b8daf24.jpg,HASH_MAPPED +SAMAN,218021.jpg,skkim.jpg,RENAMED,김세경,skkim@samaneng.com,48aa442e3fea2be32be71708f4010ac1807a233a2e94e127a0730de780c8d4ce.jpg,HASH_MAPPED +HANMAC,J15306.jpg,sykim5.jpg,RENAMED,김세열,sykim5@brsw.kr,9088b28682aa2bc7cac7909979b3fb5562a2058af9d4c9a1dd7c61751b35f390.jpg,HASH_MAPPED +SAMAN,226051.jpg,sekim.jpg,RENAMED,김세은,sekim@samaneng.com,fbf51e465eaaa781c6b4701c81faf77f3b408056bb909ed735098664474399c7.jpg,HASH_MAPPED +SAMAN,222222.jpg,kimsh.jpg,RENAMED,김세환,kimsh@samaneng.com,268a37bad076f24c408429ecd2e1f646f0e9111ee7e14190dd844bfba76ebae0.jpg,HASH_MAPPED +SAMAN,224380.jpg,shkim12.jpg,RENAMED,김소희,shkim12@samaneng.com,c73d7eac85b45a973407ed81fb6253dfc5004dc36c230659f479e614f9d95453.jpg,HASH_MAPPED +PTC,P19303.jpg,sekim2.jpg,RENAMED,김송은,sekim2@brsw.kr,90e3a40192ecfe434c820e322f98ff4fa2399b19b243003235abdc8abf43ce5b.jpg,HASH_MAPPED +SAMAN,025128.jpg,sjkim9.jpg,RENAMED,김수정,sjkim9@samaneng.com,f6f5de1c312e2a1a4fb00c29b83aa93c13255c5fac0a66919c8b5aa99e9c8794.jpg,HASH_MAPPED +SAMAN,225215.jpg,shkim4.jpg,RENAMED,김수현,shkim4@samaneng.com,f4e7d9855fe7355f61799ed2696ba243f05c55bc0747df493ec78b69ca4fd369.jpg,HASH_MAPPED +SAMAN,220240.jpg,sbkim1.jpg,RENAMED,김순배,sbkim1@samaneng.com,cf44cc2401c277c4c4e074fad6b1e4372a2a13e2a266b924ac6ab88f1ed8bcb8.jpg,HASH_MAPPED +SAMAN,024093.jpg,shkim1.jpg,RENAMED,김순화,shkim1@samaneng.com,af1a0ab6a94186a312b9a7b07def00de4c1677b394ba0548839da91ba5af42ce.jpg,HASH_MAPPED +SAMAN,216109.jpg,sgkim.jpg,RENAMED,김승구,sgkim@samaneng.com,fa5bb6528beca10afade4691452e06966e56c541efd32f7c2d2c55b9e3ed1fd0.jpg,HASH_MAPPED +HANMAC,M02302.jpg,sgkim6.jpg,RENAMED,김승국,sgkim6@brsw.kr,40d64b58a9bfb2130c30afdd4634651c2e2969202bc212b19f50a38343809ee8.jpg,HASH_MAPPED +SAMAN,216024.jpg,sbkim4.jpg,RENAMED,김승범,sbkim4@samaneng.com,340747f0441849e5d9c3dbfa92c6b9c271a0434670216d6dea5f4c131337e10d.jpg,HASH_MAPPED +SAMAN,218052.jpg,sikim.jpg,RENAMED,김승일,sikim@hanmaceng.co.kr,01446e617cde35bba98df5e00d6a6e75306afe329c2da4affbcb8afa9dd9bdb7.jpg,HASH_MAPPED +SAMAN,224029.jpg,sjkim1.jpg,RENAMED,김승준,sjkim1@samaneng.com,46165953f038b2f76943b8d4611be0a7bbbf6451e77410e579f78d30514f76ac.jpg,HASH_MAPPED +HANMAC,M02248.jpg,shkim13.jpg,RENAMED,김승호,shkim13@hanmaceng.co.kr,550acbdd846546819106777e5439a4a66b5eaf8a003639f03965feaa8cde35f3.jpg,HASH_MAPPED +SAMAN,022105.jpg,shkim6.jpg,RENAMED,김승화,shkim6@samaneng.com,50989382eff59924330c39a0144742660a87907301d31dce7e317cb121b885f6.jpg,HASH_MAPPED +SAMAN,195092.jpg,sbkim3.jpg,RENAMED,김시복,sbkim3@samaneng.com,3d19a5c97abc00984a13a279c3771796f89809a8d4dfea420000c16cebf624ab.jpg,HASH_MAPPED +SAMAN,220051.jpg,skkim3.jpg,RENAMED,김신교,skkim3@samaneng.com,33a8c736bb16a2da73eafe6ea8e9b7365e2e3e2acd3c9aace6cbe1276cb84222.jpg,HASH_MAPPED +SAMAN,223361.jpg,sjkim6.jpg,RENAMED,김신지,sjkim6@samaneng.com,1463e5d19894a38f84c8fea8a8435148462e69bb5a7455a75f1f1ce9911c1252.jpg,HASH_MAPPED +SAMAN,221318.jpg,shkim5.jpg,RENAMED,김신혁,shkim5@samaneng.com,cc4ce3d73224d02fa3b43cc5005162de844b8e6efb78af2aece0f29e5a7499ab.jpg,HASH_MAPPED +SAMAN,026051.jpg,arkim.jpg,RENAMED,김아람,arkim@samaneng.com,41a72a627b51b88b60a7531ee8c99d74f2ab9c063eb1b72e5bd0db61fc7496ef.jpg,HASH_MAPPED +SAMAN,215059.jpg,aykim.jpg,RENAMED,김아연,aykim@samaneng.com,e71371df6d10703ddd69e61e870c42eba4353757385f6a9f730bd83a80fc4f07.jpg,HASH_MAPPED +SAMAN,225047.jpg,aykim1.jpg,RENAMED,김아연,aykim1@samaneng.com,eae61b94cde3b090c84a7c8e1db7895fb75e48bf12c93e78c38a788a0f3cd87e.jpg,HASH_MAPPED +HANMAC,M16503.jpg,ygkim3.jpg,RENAMED,김양국,ygkim3@hanmaceng.co.kr,7dbecb97c4c8ef9943d882ac09d4c275d9dbfbfd50c2cc596748576248284369.jpg,HASH_MAPPED +HANMAC,M11502.jpg,yskim11.jpg,RENAMED,김양석,yskim11@hanmaceng.co.kr,8460c5586c8a5fb43c79331f3120d110beca47a8e48f15cfbf8b8e93f15bb3b8.jpg,HASH_MAPPED +SAMAN,225318.jpg,ykkim.jpg,RENAMED,김연겸,ykkim@samaneng.com,81244b94a7e2713dfa9e87ede685f35345e953255d56d230823a0f7597721ec4.jpg,HASH_MAPPED +SAMAN,224039.jpg,yskim5.jpg,RENAMED,김연석,yskim5@samaneng.com,d2f060b03e4ac9250954fc963415376417d5f3220ed782d30fd8ad2d5a9bdc00.jpg,HASH_MAPPED +SAMAN,215015.jpg,ygkim.jpg,RENAMED,김열규,ygkim@samaneng.com,399fa6b62f16fc04e44cdba128a8087d32cec17c7db3dacb183994a97de065c1.jpg,HASH_MAPPED +HANMAC,M02259.jpg,kkimyk.jpg,RENAMED,김영권,kkimyk@hanmaceng.co.kr,72d4661ce7a322b205cde9c80d844ff5f89536f8195c2f353d6a5effc65b403d.jpg,HASH_MAPPED +SAMAN,190009.jpg,ykkim2.jpg,RENAMED,김영기,ykkim2@samaneng.com,ef4d800b31362482b4d99f88d5226132772f92e67a1d1270029360504937d3c4.jpg,HASH_MAPPED +SAMAN,223087.jpg,ymkim7.jpg,RENAMED,김영목,ymkim7@samaneng.com,50770dee8074eff9b6a7cd987677204ab9cb7f36f58b470bd0f79f56f798e67d.jpg,HASH_MAPPED +SAMAN,222199.jpg,ymkim3.jpg,RENAMED,김영민,ymkim3@samaneng.com,0d1368c0b32a0ee2e91010403af2b8b6086102d5c9eb7c8201bd9b697ec97cf7.jpg,HASH_MAPPED +SAMAN,223390.jpg,ymkim1.jpg,RENAMED,김영민,ymkim1@samaneng.com,5018f04e94e4a1568d3836d697a2a9c0872f9ccab7c0b5a3b3f05123f736c653.jpg,HASH_MAPPED +HANMAC,B20327.jpg,ybkim1.jpg,RENAMED,김영배,ybkim1@brsw.kr,d3b9882f897b10119b5150f060eb2d1dc763dc8de1b6131d2c5430a4de6b5fa5.jpg,HASH_MAPPED +SAMAN,225021.jpg,yskim6.jpg,RENAMED,김영석,yskim6@samaneng.com,26253a2fdbf07a54ff3aafba172fe09dfa35ab61b13c17bf27dfcba45987be4b.jpg,HASH_MAPPED +SAMAN,225126.jpg,yskim8.jpg,RENAMED,김영석,yskim8@samaneng.com,9de669fb42de57520351aaa01bd8c79cfcebdb0a6a1870a57d1a30d4e7d7c635.jpg,HASH_MAPPED +SAMAN,216072.jpg,yskim.jpg,RENAMED,김영수,yskim@samaneng.com,ebc70f0659ccc92bbabb0ff8d8d22781f573e82fbad11e0ee005830800ec614d.jpg,HASH_MAPPED +SAMAN,025110.jpg,yskim9.jpg,RENAMED,김영신,yskim9@samaneng.com,d33b3ad68a5d84d8394d5bcb7d1628ba8578f1fb4ab2568df44e807d2c073841.jpg,HASH_MAPPED +SAMAN,226045.jpg,ywkim1.jpg,RENAMED,김영욱,ywkim1@samaneng.com,2d6ba600e67fdce069455dadfab6f9b71366a871d39837e7f8f4e95888e2d44b.jpg,HASH_MAPPED +SAMAN,223142.jpg,ywkim.jpg,RENAMED,김영운,ywkim@samaneng.com,ab42fae80a4f32ee029498345f816978a0c0bb311b6ffaecb6ba74e6f8746bbf.jpg,HASH_MAPPED +SAMAN,026061.jpg,yekim1.jpg,RENAMED,김영은,yekim1@samaneng.com,0fdf11ffa28d58c61e29cf0a1024d3fa60671fa67269b9a32d142668333420f4.jpg,HASH_MAPPED +SAMAN,024015.jpg,yikim.jpg,RENAMED,김영임,yikim@samaneng.com,cff54d93781dd329f4863910b75661dcdd260556f8180d976bf7c4e783056a7d.jpg,HASH_MAPPED +SAMAN,221269.jpg,yjkim2.jpg,RENAMED,김영준,yjkim2@samaneng.com,c7de3fa3abbf296211d806fa6db0192e19c797984f65b31d61c0d6c3cc81c591.jpg,HASH_MAPPED +SAMAN,224247.jpg,yjkim6.jpg,RENAMED,김영준,yjkim6@samaneng.com,87554eadff060f1d356bd452136b8210a0e86c02146854ce13f4095abe240c64.jpg,HASH_MAPPED +SAMAN,216140.jpg,yjkim5.jpg,RENAMED,김영진,yjkim5@samaneng.com,bdac805b6c4c2f8463c886660757aea9d945a1b89c3491be5094e9fb29469f67.jpg,HASH_MAPPED +SAMAN,224206.jpg,yjkim24.jpg,RENAMED,김영진,yjkim24@samaneng.com,9735edf8b69d1f49f0987e4bf4c5125be7a88c4de44f6f91bf81b8f9fb28d49b.jpg,HASH_MAPPED +SAMAN,222038.jpg,yhkim5.jpg,RENAMED,김영호,yhkim5@samaneng.com,50a4c73c67f91579806009ab9aea7664963e5cf6da7032fa86d0270c373d9a54.jpg,HASH_MAPPED +SAMAN,224332.jpg,ybkim.jpg,RENAMED,김예빈,ybkim@samaneng.com,f2d3b43e417237fdd2cb26d4e6db65a6cb536b97f54efb616f4433587bce82d9.jpg,HASH_MAPPED +SAMAN,223280.jpg,yskim3.jpg,RENAMED,김예서,yskim3@samaneng.com,8a8ea042e0ba387a208e0fa8c5da50f16e6a3fae528dbd4119c810cc2f77646a.jpg,HASH_MAPPED +SAMAN,220279.jpg,yskim2.jpg,RENAMED,김예슬,yskim2@samaneng.com,d0ca4e7b55839c3c213f0dd15477a56c9bfc0bed80e045c7ba0adf4d326adc56.jpg,HASH_MAPPED +SAMAN,223213.jpg,yekim.jpg,RENAMED,김예은,yekim@samaneng.com,d9a3bb821e31b424824a8afc7f91308050b50e7b4881f1244a5c927226fb9921.jpg,HASH_MAPPED +SAMAN,224327.jpg,ygkim2.jpg,RENAMED,김용구,ygkim2@samaneng.com,2a3e7f53f9c85c246977b02367fcfaa1f768829276533562e544f497f376acc5.jpg,HASH_MAPPED +SAMAN,197055.jpg,ymkim.jpg,RENAMED,김용민,ymkim@samaneng.com,87428e5da04ba0a77d0730fbc50c1b07ae07ec3a190008225ada5de37348c5a0.jpg,HASH_MAPPED +SAMAN,226062.jpg,yskim4.jpg,RENAMED,김용석,yskim4@samaneng.com,61f29521d272d2a9d1516d87d17b63684ccae909bcfc1c7e8ca094d441ea6274.jpg,HASH_MAPPED +HANMAC,M19329.jpg,yskim10.jpg,RENAMED,김용석,yskim10@hanmaceng.co.kr,f7ae731207d38728e03135fa716d28b7f79fdbfe1e7896d319669c55f7f9f86e.jpg,HASH_MAPPED +HANMAC,M09319.jpg,yskim14.jpg,RENAMED,김용선,yskim14@brsw.kr,5d205780ab5d0d1342c6bd6bf667d4456b384285a7e5bcc12af8616238d8b253.jpg,HASH_MAPPED +HANMAC,B24053.jpg,yykim.jpg,RENAMED,김용연,yykim@brsw.kr,65919bead0632ca81a320b7fdc7862266ef0a43e3c0167cb41d30c10251d4444.jpg,HASH_MAPPED +SAMAN,217064.jpg,yjkim8.jpg,RENAMED,김용종,yjkim8@hanmaceng.co.kr,9a0adc7d47e207cd0351f13524e2c2dc89880be738b7688a1f88853a55185405.jpg,HASH_MAPPED +SAMAN,223309.jpg,yjkim1.jpg,RENAMED,김용종,yjkim1@samaneng.com,d8a18d1b35727f99a8cad96dfab357319ff53ee813a81f53a94b0d043a1588a8.jpg,HASH_MAPPED +HANMAC,M21402.jpg,yhkim2.jpg,RENAMED,김용혁,yhkim2@hanmaceng.co.kr,40cf58fc167e8ac3fc68ab1a745a411598dbd55072751968bfdd1b0c7928d09a.jpg,HASH_MAPPED +SAMAN,223027.jpg,yhkim7.jpg,RENAMED,김용현,yhkim7@samaneng.com,3da07e67cc3d150e319b896c09c22b57193ccda849e73087b82ef50685ee33ac.jpg,HASH_MAPPED +HANMAC,M18205.jpg,yhkim.jpg,RENAMED,김용현,yhkim@hanmaceng.co.kr,f8ea4cfb44040b7c02ae68b6088fc74fe3b61431306ea75ce0fb61da590112c6.jpg,HASH_MAPPED +SAMAN,218135.jpg,yhkim3.jpg,RENAMED,김용희,yhkim3@samaneng.com,f20737edbbd0c3885ba6b79fcf6985e36f6800f487b08e27e71e8de93a868da3.jpg,HASH_MAPPED +SAMAN,224148.jpg,wskim1.jpg,RENAMED,김우섭,wskim1@samaneng.com,c4327c5703cfb080ea34f0d3da3fed444f7f80e95c77ca02cb8ed5498bb8f8d6.jpg,HASH_MAPPED +HANMAC,M08401.jpg,wjkim2.jpg,RENAMED,김우진,wjkim2@hanmaceng.co.kr,50e70c7e5a604c83de7a2277e42b57fca024de77be4c31cd130c5e82c1b7134a.jpg,HASH_MAPPED +SAMAN,225106.jpg,uykim.jpg,RENAMED,김욱영,uykim@samaneng.com,af02f62e6f5391e8c92586960c86f039efa05f7e96a6a845b37e1e94fac32bab.jpg,HASH_MAPPED +SAMAN,221149.jpg,wgkim.jpg,RENAMED,김운걸,wgkim@samaneng.com,f42a5c166c6ddc135649513ec2b91347878f3468b7d9e86e3c4c4c87a11b43bb.jpg,HASH_MAPPED +SAMAN,223369.jpg,ukkim.jpg,RENAMED,김운경,ukkim@samaneng.com,1effcdc735adc145bfc7bf6034b093f163e751aaafcbfdf479c14b5abae1db3e.jpg,HASH_MAPPED +SAMAN,222254.jpg,ubkim.jpg,RENAMED,김운배,ubkim@samaneng.com,c7591f2838feb68cfc861387f605b3fba9f0dbc0c9056df2283a00ed5fe5182d.jpg,HASH_MAPPED +HANMAC,M24050.jpg,wkkim2.jpg,RENAMED,김웅기,wkkim2@hanmaceng.co.kr,b6a94c64ee5ff262efb83061872a3310d9c511b9d69c0400879775ed6741a9d9.jpg,HASH_MAPPED +SAMAN,223147.jpg,whkim.jpg,RENAMED,김웅환,whkim@samaneng.com,ea337b5530f1f7852816b0656c4050f91d0ad29e14b40d16e825aa9e57a3244c.jpg,HASH_MAPPED +SAMAN,226057.jpg,wgkim1.jpg,RENAMED,김원근,wgkim1@samaneng.com,887a4cb8b98311db9f5d9f2decf9bb2bd33ce5e1d7b0ff3df4e1f6952deb40ce.jpg,HASH_MAPPED +HANMAC,M02206.jpg,wgkim3.jpg,RENAMED,김원근,wgkim3@hallasanup.com,66b76248069e28e4418651f1452daec9b932c25c650735f972b5233d42f896b3.jpg,HASH_MAPPED +SAMAN,222242.jpg,wkkim.jpg,RENAMED,김원기A,wkkim@samaneng.com,4d3e4b70d57a8e9d475580eba22f6a1b7a1eb90d95b6efd352615120255fe32d.jpg,HASH_MAPPED +HANMAC,M07318.jpg,wgkim2.jpg,RENAMED,김원기,wgkim2@hanmaceng.co.kr,ff139303c824ca4d15a3950fd7bd5d657225c1a254ccfc811225866269274224.jpg,HASH_MAPPED +SAMAN,200118.jpg,wskim.jpg,RENAMED,김원석,wskim@samaneng.com,209f8e72a21babf83ef47a8c5b111e5adb3697f2f94d637653a6f3986ed1f4c2.jpg,HASH_MAPPED +HANMAC,M24062.jpg,wskim4.jpg,RENAMED,김원섭,wskim4@hanmaceng.co.kr,a9604b3402b7f473109dc460c0f9eb5466c79567a2a01e3c13b493798246bc53.jpg,HASH_MAPPED +SAMAN,226070.jpg,wskim2.jpg,RENAMED,김원숙,wskim2@samaneng.com,23545382cc8920b754750bce997c2427240ebf772bdc432016a0f22341a3cd74.jpg,HASH_MAPPED +HANMAC,M19202.jpg,wskim3.jpg,RENAMED,김원식,wskim3@hanmaceng.co.kr,04503a0b781b67a017ba817a1f169128395759b02e0eca986040eb2f3ce791b4.jpg,HASH_MAPPED +SAMAN,226042.jpg,yskim13.jpg,RENAMED,김유식,yskim13@hanmaceng.co.kr,622a9823890508f11572eff6d959b59125c60012b046013e5ef7283616ec53eb.jpg,HASH_MAPPED +SAMAN,025089.jpg,yjkim3.jpg,RENAMED,김유진,yjkim3@samaneng.com,1b33a83355ac07f3f5cc62025d16a9dc068f6dead45bac1b5aa3db84b74dde99.jpg,HASH_MAPPED +HANMAC,M24069.jpg,egkim.jpg,RENAMED,김유진,egkim@hanmaceng.co.kr,40de54fa0dccf2808a17dcf0691c974b7182e239573c12e4240ef3df81e7ad78.jpg,HASH_MAPPED +SAMAN,220266.jpg,ygkim1.jpg,RENAMED,김윤권,ygkim1@samaneng.com,36092e72ccf128661e412f1fbba82247624aafdc594a75cf12b4cad0f580700f.jpg,HASH_MAPPED +SAMAN,220034.jpg,ymkim4.jpg,RENAMED,김윤민,ymkim4@samaneng.com,a1e32333d70b669af414518f0b0d07f2d15133762ee86c51be8e7a24bcefdbe7.jpg,HASH_MAPPED +SAMAN,220029.jpg,yskim1.jpg,RENAMED,김윤성,yskim1@samaneng.com,1b1cec88176f86084cc3c2deecb824fa633616a0cab4cdd56220bc213a43f56b.jpg,HASH_MAPPED +HANMAC,M19504.jpg,yskim12.jpg,RENAMED,김윤성,yskim12@hanmaceng.co.kr,3bf6495221b504d07a745531022089c2097585e6c6bef3d2ddb83b46aeff95e5.jpg,HASH_MAPPED +SAMAN,222099.jpg,yjkim.jpg,RENAMED,김윤재,yjkim@samaneng.com,951deedfc110b05f07564beee03b61449d31dac637aa74468ed906f41b37721b.jpg,HASH_MAPPED +HANMAC,B21361.jpg,yjkim26.jpg,RENAMED,김윤지,yjkim26@hanmaceng.co.kr,ccab27fbc01bb7c9b69ad18d523fee9a9df60f3c498b5f14ef9b310e82be9c16.jpg,HASH_MAPPED +SAMAN,225054.jpg,yckim2.jpg,RENAMED,김윤찬,yckim2@samaneng.com,ebcd0db334d8e72182143d4302fadf2f97cdaf1acaa51d63a747954ac6e75f2c.jpg,HASH_MAPPED +SAMAN,216171.jpg,yhkim8.jpg,RENAMED,김윤하,yhkim8@brsw.kr,4393703d82fe639ebf307cca828310336f5d75df0fd3f06e06c6f64ce1969b41.jpg,HASH_MAPPED +SAMAN,225333.jpg,edkim.jpg,RENAMED,김은대,edkim@samaneng.com,8de77e24b8f27da8a59229c3ef71d94cb6091480acf9304c5f2be3b639a56317.jpg,HASH_MAPPED +SAMAN,223043.jpg,eykim.jpg,RENAMED,김은영,eykim@samaneng.com,9bf9903d504e56af35f11cbc116c6236219a083af881f5398045485dd3a62bb3.jpg,HASH_MAPPED +SAMAN,024106.jpg,ehkim.jpg,RENAMED,김은희,ehkim@samaneng.com,bd161553e2e1938d80748ed46f8b16d6c31ad2776504fe4023dae69cb8100f05.jpg,HASH_MAPPED +HANMAC,M21457.jpg,ejkim.jpg,RENAMED,김응진,ejkim@hanmaceng.co.kr,82d4b3dae48f58e5507fa51ec2fcd5a86b39dc6b7d1e0b55c47fcee90a03e2e3.jpg,HASH_MAPPED +SAMAN,223274.jpg,eskim.jpg,RENAMED,김의섭,eskim@samaneng.com,c46ba18a13d96a493d32445a65d9202784b216291fc0e40e1514dce18ed12b43.jpg,HASH_MAPPED +SAMAN,225041.jpg,ejkim1.jpg,RENAMED,김의진,ejkim1@samaneng.com,3098fe0139a4aeb01b1db8028f2d5dbb55ac2312d02dde446313254dd393d985.jpg,HASH_MAPPED +SAMAN,222039.jpg,eckim.jpg,RENAMED,김의철,eckim@samaneng.com,bc54a7ab0d6f633bae8456aa80469859a6da998fb8e65048f719ff8908b446b7.jpg,HASH_MAPPED +TDC,B25032.jpg,lhkim1.jpg,RENAMED,김이훈,lhkim1@brsw.kr,e7c56e0eb4c350f9383d27434cb7290bef3879b019ee6cff2f55a97ea400cae2.jpg,HASH_MAPPED +SAMAN,223060.jpg,ikkim.jpg,RENAMED,김익기,ikkim@samaneng.com,5a168e471ee94d55b4d31cc79380e2493dc5165984d591ad8bc432e2d8f15c1d.jpg,HASH_MAPPED +SAMAN,225160.jpg,iskim3.jpg,RENAMED,김익수,iskim3@samaneng.com,6c96820afde891d6c9bed69ae92fe3cc6507bed015a5213851777fdf25398286.jpg,HASH_MAPPED +SAMAN,220220.jpg,ihkim1.jpg,RENAMED,김익환,ihkim1@samaneng.com,53eb17ae5eacbca6b830a810bd75a68a8677403ceaaca45eda559d3ebdd69da8.jpg,HASH_MAPPED +SAMAN,218087.jpg,ikim.jpg,RENAMED,김인,ikim@samaneng.com,bbb8997d1ba0a785f9d34a099135058c8217093f19d75ad417dcee5e3b29f352.jpg,HASH_MAPPED +SAMAN,025095.jpg,ikkim1.jpg,RENAMED,김인경,ikkim1@samaneng.com,b875c5b1b4ae0c2ac05c094da6906f30a25b0d0645a15a3aad61eda228112a24.jpg,HASH_MAPPED +SAMAN,224011.jpg,iskim1.jpg,RENAMED,김인섭,iskim1@samaneng.com,d0b68920cda1797c7bcc5f20a20a70d2cddbe0c23825203d46973cfc2c34c389.jpg,HASH_MAPPED +JANGHEON,J18203.jpg,iskim2.jpg,RENAMED,김인수,iskim2@brsw.kr,c063a5a41c1f8b5a423cffbf85be15a32cc35d5e9f04a0dc1e3ce5c08fe78dc4.jpg,HASH_MAPPED +SAMAN,195153.jpg,iskim.jpg,RENAMED,김인식,iskim@samaneng.com,a9d65d22bdab146c679e417a3b251c8ecd621ed2c0a416e26485419bea0bcf10.jpg,HASH_MAPPED +JANGHEON,M05510.jpg,iykim.jpg,RENAMED,김인열,iykim@brsw.kr,c778775384f38acd352d3b65ebcf3e5cdde5f56ea2f20edef5d04446a75b33c8.jpg,HASH_MAPPED +SAMAN,221244.jpg,ijkim.jpg,RENAMED,김인중,ijkim@samaneng.com,dae797e8ccd892860f3ca556dc7445b1ad634f971e83aa0f996e96d266492ce5.jpg,HASH_MAPPED +SAMAN,220079.jpg,ihkim.jpg,RENAMED,김인홍,ihkim@samaneng.com,e8ba1e8aadb15025564b73a72118d1ecd3fd522294ede07dc670fab47293cff1.jpg,HASH_MAPPED +SAMAN,218027.jpg,itkim.jpg,RENAMED,김일태,itkim@samaneng.com,def5cd00a65235730c9382757caaa9e3da0599b4af160ef96c5e3719d06194e2.jpg,HASH_MAPPED +SAMAN,221336.jpg,idkim.jpg,RENAMED,김임동,idkim@samaneng.com,058e44849e10169b1dacb28d362a9ff3a760c38415f4c1ceac8221d921e2e82a.jpg,HASH_MAPPED +SAMAN,203249.jpg,jokim.jpg,RENAMED,김장온,jokim@samaneng.com,4c246542d5ac10d4914739d500dccf7048cbbd4229efafc523a214e4fa10d91e.jpg,HASH_MAPPED +SAMAN,205092.jpg,jwkim1.jpg,RENAMED,김장욱,jwkim1@samaneng.com,e0182046d05ef4d44c9bc0151a0ab8b5940e29e7ec42a4b0e90d427ad6f643e9.jpg,HASH_MAPPED +SAMAN,211024.jpg,jhkim7.jpg,RENAMED,김장현,jhkim7@samaneng.com,910a2f29e2a3d77346c434b63ad07a4d31e15a8b1be3265901f7f743763b3ca2.jpg,HASH_MAPPED +SAMAN,220209.jpg,jlkim.jpg,RENAMED,김재림,jlkim@samaneng.com,b3d550d717f033dd1da81037f13606177dbb5f0343a47179beecb9f588cee01e.jpg,HASH_MAPPED +SAMAN,224193.jpg,jskim6.jpg,RENAMED,김재상,jskim6@samaneng.com,24ce2416fd8edf4926d82c854db3e695c021a1727b6840f4768b3211feb7c84b.jpg,HASH_MAPPED +HANMAC,M03228.jpg,jykim9.jpg,RENAMED,김재용,jykim9@hanmaceng.co.kr,26053ff810967ab6b106a6693e123810c05d54bab63640d26b5c730f4f6958b5.jpg,HASH_MAPPED +SAMAN,226004.jpg,jukim1.jpg,RENAMED,김재욱,jukim1@samaneng.com,1e51462f8ca92ab7742e27780219d9f29689d6732b74f03dd5583bb422768560.jpg,HASH_MAPPED +SAMAN,216150.jpg,jwkim5.jpg,RENAMED,김재원,jwkim5@samaneng.com,be78e9c991578203832f13f840f98fa5d5d19be02addfa3630273b902425481f.jpg,HASH_MAPPED +HANMAC,J08206.jpg,jhkim35.jpg,RENAMED,김재헌,jhkim35@hanmaceng.co.kr,3eaafc4faec8f23da6005d8e83e0129a175f2e927b8545c62b284fedb0fa26a7.jpg,HASH_MAPPED +SAMAN,222231.jpg,jhkim14.jpg,RENAMED,김재현,jhkim14@samaneng.com,2eba9156ce66c617fb2ab8922fe6571ac7b3d4930bd99d4f04a4961d38eb4437.jpg,HASH_MAPPED +SAMAN,222061.jpg,jhkim22.jpg,RENAMED,김재홍,jhkim22@samaneng.com,da93432084c0b129a476565dc26c30c5dd858e8a036aa6dc7e5abdfc75d711a4.jpg,HASH_MAPPED +SAMAN,223229.jpg,jhkim25.jpg,RENAMED,김재환,jhkim25@samaneng.com,d41eb7831b45169da0af950591284b89d7eac2940b3fafa95b20801e7c61781f.jpg,HASH_MAPPED +SAMAN,225335.jpg,jhkim11.jpg,RENAMED,김재환,jhkim11@samaneng.com,50742ee7e8e8ef8b9087fe4ade8f16d6ce0d7bed072fa217df6e7e0e175c9bff.jpg,HASH_MAPPED +SAMAN,223293.jpg,jhkim27.jpg,RENAMED,김재훈,jhkim27@samaneng.com,a7997c3a2379b3747795342eb9e94cecb81b184d6c0cafd7f3a130a9aa75d9c0.jpg,HASH_MAPPED +SAMAN,195052.jpg,jhkim3.jpg,RENAMED,김재휴,jhkim3@samaneng.com,af18503b650d1558f080fd76d6002eb091056407a9ce98369e0bdadf1b7de4f3.jpg,HASH_MAPPED +HANMAC,M25071.jpg,jhkim36.jpg,RENAMED,김재흥,jhkim36@hanmaceng.co.kr,2ba780eaf4c3e949f292f47cddfa67d102361f72c8b91cb85918c52a052ea7ef.jpg,HASH_MAPPED +SAMAN,201150.jpg,jkkim4.jpg,RENAMED,김정구,jkkim4@samaneng.com,b5dd8f1608e29efe5bf5e38d8493de9b1524dddd15b2502e22bb3705d6a67217.jpg,HASH_MAPPED +SAMAN,222062.jpg,jkkim7.jpg,RENAMED,김정규,jkkim7@samaneng.com,5db776eb438920e9e5d9ebf84cef48a196225545060c6c58e3a739f3818821fe.jpg,HASH_MAPPED +SAMAN,220030.jpg,jkkim3.jpg,RENAMED,김정균,jkkim3@samaneng.com,bcec29587cef9be0c2bb5c616293b686380e92357366776f70a8d4ed2db58ec1.jpg,HASH_MAPPED +JANGHEON,J10310.jpg,jgkim2.jpg,RENAMED,김정기,jgkim2@hanmaceng.co.kr,754b78139d3b1845bd8cc80771ce6392a6d33de8cc9b5a8582046019aea648ca.jpg,HASH_MAPPED +SAMAN,213047.jpg,jkkim2.jpg,RENAMED,김정길,jkkim2@samaneng.com,d30ba746b631263606e0c3915bd55e78f0e7c733ef77da74ffc93e73367f21ad.jpg,HASH_MAPPED +SAMAN,218020.jpg,jdkim.jpg,RENAMED,김정덕,jdkim@samaneng.com,b29f9e7d44a74340fe5e7844f276f1cedaeb8667da6e978e83edfc9f4d286252.jpg,HASH_MAPPED +SAMAN,224152.jpg,jrkim.jpg,RENAMED,김정래,jrkim@samaneng.com,20f6e506ab62c45ec56d7f8470ed82779a7c4c5a460e3577f37bcfa4ac1e873b.jpg,HASH_MAPPED +SAMAN,223223.jpg,jmkim1.jpg,RENAMED,김정만,jmkim1@samaneng.com,3d99e2ee30cf8f50d2bfe3f4b0ceac4489d7f8a98f95fc9179ad07d4574f9df0.jpg,HASH_MAPPED +HANMAC,M23008.jpg,jmkim7.jpg,RENAMED,김정문,jmkim7@hanmaceng.co.kr,b0535b68383bad611e4e01e483f1e12eacb5cdf496caf05f21e19b38d17d4ebc.jpg,HASH_MAPPED +SAMAN,026037.jpg,jmkim5.jpg,RENAMED,김정미,jmkim5@samaneng.com,c70319753e14a3d0a6d66b342ff629c2ed67d1f6fa0c9be19b6a759cd7fbd15e.jpg,HASH_MAPPED +SAMAN,223365.jpg,jmkim.jpg,RENAMED,김정민,jmkim@samaneng.com,8484d28403753b02781b9a1fcfb4350a7b043414951f2196bacbc53ce8108099.jpg,HASH_MAPPED +SAMAN,226120.jpg,jmkim6.jpg,RENAMED,김정민,jmkim6@samaneng.com,75e20a96413dd87db426fcbd57f0ca0bf7723691a997c0914f9aaaa61fdf9b6c.jpg,HASH_MAPPED +SAMAN,223299.jpg,jbkim.jpg,RENAMED,김정배,jbkim@samaneng.com,a2fbb9f09b6c3730ce31d12ad80c196a20dda97a5c8d9610fa67a122d3ccc52e.jpg,HASH_MAPPED +SAMAN,225326.jpg,jbkim1.jpg,RENAMED,김정배,jbkim1@samaneng.com,4f8ae73db1e0b0649475b27cee69a52b7715e2f368c653482e19d73b5649673a.jpg,HASH_MAPPED +HANMAC,B24049.jpg,jskim12.jpg,RENAMED,김정석,jskim12@brsw.kr,47d1e2e97ceaac758c953f556ef8c77daf73e11b8c8287d6ab31457e812810c9.jpg,HASH_MAPPED +SAMAN,220212.jpg,jakim.jpg,RENAMED,김정아,jakim@samaneng.com,d3a44ab146e84b7ca64c20703b1fc2eb26a235155410aa68f13584546ac9384c.jpg,HASH_MAPPED +HANMAC,J05215.jpg,cykim2.jpg,RENAMED,김정열,cykim2@hanmaceng.co.kr,7363bab23a1d78c52a1b21341d15ab86932a7a24a352145342cb3740d80ab802.jpg,HASH_MAPPED +SAMAN,224264.jpg,jwkim.jpg,RENAMED,김정원,jwkim@samaneng.com,760c5ab94edb030c02f05344ace06c5c2bfbda87971cddaf34e6db39d3a5808b.jpg,HASH_MAPPED +SAMAN,224378.jpg,cukim.jpg,RENAMED,김정은,cukim@samaneng.com,724f7c2f6a84424393a34201eb62b3c0c3df65a46711dd2ef99e332fab0afed7.jpg,HASH_MAPPED +SAMAN,225197.jpg,jtkim1.jpg,RENAMED,김정태,jtkim1@samaneng.com,9768099a7c830be0bd3e113fe1755227bcb0c7f3b2683352a9410ea9445c20c4.jpg,HASH_MAPPED +SAMAN,226133.jpg,jtkim.jpg,RENAMED,김정태,jtkim@samaneng.com,5d6c54cb83cd39bb4ca0faac77d1a3ca5e5f218132e025e0fb7b6b97089991b5.jpg,HASH_MAPPED +SAMAN,214050.jpg,jhkim10.jpg,RENAMED,김정현,jhkim10@samaneng.com,4b313c0e8171034136f601b7df888a868d7541121c72440e64fcbbce4798553f.jpg,HASH_MAPPED +SAMAN,025138.jpg,jhkim30.jpg,RENAMED,김정현,jhkim30@samaneng.com,8675ebf32f1282edc7fdf82dc3dc57e7d85ce90cdc3b4f31713f392ae0aafe20.jpg,HASH_MAPPED +SAMAN,216001.jpg,jhkim1.jpg,RENAMED,김정호,jhkim1@samaneng.com,5be32b5b04e4bb2db28daac13ffe1f71b3295601faa50800b7234d84643c22dd.jpg,HASH_MAPPED +SAMAN,224253.jpg,jhkim24.jpg,RENAMED,김정훈,jhkim24@samaneng.com,89489c1dfd25c3f047156b4cd85fea2a50075f6d7a2c65c6c790c342ae0236b3.jpg,HASH_MAPPED +HANMAC,M04308.jpg,jhkim32.jpg,RENAMED,김정훈,jhkim32@hanmaceng.co.kr,db81deff0404f6d8ffb3edf41e9cc0d1de3e00cd2d71e6bc1ebd75a12a10513f.jpg,HASH_MAPPED +HANMAC,M24067.jpg,jhkim33.jpg,RENAMED,김정훈A,jhkim33@hanmaceng.co.kr,2455eb171a84dbb70fcab0370fcf655158c1d4f0a6b14591cb01300ebd5e9e4d.jpg,HASH_MAPPED +SAMAN,217028.jpg,jhkim4.jpg,RENAMED,김정희,jhkim4@samaneng.com,b926b4de90ec2600ed0cc93234bf04a96e31a7557b4a8af8c5c52f4baece40c0.jpg,HASH_MAPPED +SAMAN,224350.jpg,jhkim15.jpg,RENAMED,김정희,jhkim15@samaneng.com,a6bf09c4c458efa4745f7f91e8ab28fe06668bdb0a8a5283fdc3f26d5faf8e0f.jpg,HASH_MAPPED +SAMAN,026002.jpg,jskim10.jpg,RENAMED,김제숙,jskim10@samaneng.com,d6a57ab8add094b3f1afb74cb960d212cafb3f46b8dd6ad9eda1c0a9e0a4474a.jpg,HASH_MAPPED +SAMAN,225219.jpg,jukim.jpg,RENAMED,김제웅,jukim@samaneng.com,5ed79b69ff29478e79c1502270541b86b0f64d24e53dd7c8d411f9bcb6c77644.jpg,HASH_MAPPED +SAMAN,223201.jpg,jhkim20.jpg,RENAMED,김제훈,jhkim20@samaneng.com,a3e027ff1f9842ca4d6bd297cf2880838f851995e292343cdc7161765dc5b2a7.jpg,HASH_MAPPED +HANMAC,M24032.jpg,jgkim1.jpg,RENAMED,김종계,jgkim1@hanmaceng.co.kr,8ca70d11027990147f748956c1e20436b2c5e416a3286a51d24558a0427c10b1.jpg,HASH_MAPPED +SAMAN,224228.jpg,jkkim1.jpg,RENAMED,김종권,jkkim1@samaneng.com,985c244535c66aec7e89b68cd950093c2848de86fe83267fa84b0e35c6d34279.jpg,HASH_MAPPED +SAMAN,220085.jpg,jgkim.jpg,RENAMED,김종규,jgkim@samaneng.com,a8ac8c27d2d65f8bfe3817591179599745322f8eba7fe4288df9d78c38faf17f.jpg,HASH_MAPPED +SAMAN,226046.jpg,jnkim.jpg,RENAMED,김종남,jnkim@samaneng.com,10b41d19b5d185f7178eacbc2db79aa46d9ec90d5fc7e404657dd9c271d5dc90.jpg,HASH_MAPPED +SAMAN,221201.jpg,jdkim2.jpg,RENAMED,김종대,jdkim2@samaneng.com,d270f9843e540ec6246afa7105c6effb7dfbccb8200aca8ab2826fc56843bb4b.jpg,HASH_MAPPED +SAMAN,220179.jpg,jmkim4.jpg,RENAMED,김종문,jmkim4@samaneng.com,58a043b10ab4a6ee5026e014fd38c472302ce13769c3da1998d05ca2ad7329ca.jpg,HASH_MAPPED +SAMAN,225156.jpg,jskim2.jpg,RENAMED,김종석,jskim2@samaneng.com,c3877558d90859579af91c8e2e4d06b35ede5e5185e64252991691a6553a180d.jpg,HASH_MAPPED +SAMAN,220066.jpg,jwkim6.jpg,RENAMED,김종완,jwkim6@samaneng.com,2680ec372e7c8f972bb105134b8722a716adcdf575fb1cc332a20768e698d4c0.jpg,HASH_MAPPED +HANMAC,M24035.jpg,jykim10.jpg,RENAMED,김종용,jykim10@hanmaceng.co.kr,36488bf7f525e1e50388fbc7347be6fc3518d743eac4ae1ee7d18b247ea296fb.jpg,HASH_MAPPED +SAMAN,225322.jpg,jwkim8.jpg,RENAMED,김종우,jwkim8@samaneng.com,c3a37f64f2ab08ce8c9fafab65e4def9c9d4c4931c2d048a7fb1736115e295b8.jpg,HASH_MAPPED +HANMAC,M24082.jpg,jwkim12.jpg,RENAMED,김종우,jwkim12@hanmaceng.co.kr,3ca9fb90e8fda659ab904633a480954e45a0c8121572067e59667424d758f5cd.jpg,HASH_MAPPED +SAMAN,223206.jpg,jjkim4.jpg,RENAMED,김종준,jjkim4@samaneng.com,b7d44de31f2ab329dd36a84c5bf307f62cd29d5db6643e43f0162fa8494f0e19.jpg,HASH_MAPPED +SAMAN,225075.jpg,jhkim2.jpg,RENAMED,김종혁,jhkim2@samaneng.com,9605e01c9f2787e6ae19c13dae97d37f33948d84cf25a5e39f9dcb06a5550a15.jpg,HASH_MAPPED +SAMAN,218072.jpg,jhkim9.jpg,RENAMED,김종환,jhkim9@samaneng.com,46fc8a55a8883c40231c23d036ca98896368f674b5494f78b52ff1c53fa6a97b.jpg,HASH_MAPPED +SAMAN,225178.jpg,jskim9.jpg,RENAMED,김주신,jskim9@samaneng.com,17d0882872bc72d739327949a2ec2f3a3d39875c5b2abdb8383917e70b282771.jpg,HASH_MAPPED +SAMAN,223138.jpg,jykim4.jpg,RENAMED,김주영,jykim4@samaneng.com,865ea63540872ca639c06378eacb28930e26c3368b40d7c08f48277a75b8c220.jpg,HASH_MAPPED +SAMAN,224293.jpg,jckim3.jpg,RENAMED,김주찬,jckim3@samaneng.com,7eb84b8c49c06a475bf4f834d2ead6a7c0cfc353482dc4e84149db8cac00d1f8.jpg,HASH_MAPPED +SAMAN,217036.jpg,jckim1.jpg,RENAMED,김주철,jckim1@samaneng.com,de047d92a081c4d6ca0ac60059239ce48f3a4d37c47b2bc12d90cc1fb567ea43.jpg,HASH_MAPPED +SAMAN,225097.jpg,zckim.jpg,RENAMED,김주철,zckim@samaneng.com,f2330b01d1cac8c882d608c81ce1ff49a69315860a20017dafe1b822a64cf111.jpg,HASH_MAPPED +SAMAN,202115.jpg,jhk.jpg,RENAMED,김주현,jhk@samaneng.com,d6deb3e2410bf885e68cc9ca6a501cb644a67f10909d327d192c0eb141d92e49.jpg,HASH_MAPPED +SAMAN,220162.jpg,jhkim18.jpg,RENAMED,김주형,jhkim18@samaneng.com,b263879981f0624ac0476375523c9406a3062c3431f15b3d2a935a5fe014101b.jpg,HASH_MAPPED +SAMAN,223308.jpg,jhkim28.jpg,RENAMED,김주호,jhkim28@samaneng.com,4d7ec241f1268c80cbf87dd9af3bffed52bdabc8f7c71fc08cb68b488d0a293a.jpg,HASH_MAPPED +SAMAN,191017.jpg,jkkim.jpg,RENAMED,김준규,jkkim@samaneng.com,b96aa5594d97d4c3869336027ebd6d8054086585338b474c35a32f93bff28bec.jpg,HASH_MAPPED +SAMAN,210131.jpg,jskim.jpg,RENAMED,김준성A,jskim@samaneng.com,ac83e7f4ea74a7f23ec8b176e424cda24f9b6bf08a4b00eedf718447fc96874d.jpg,HASH_MAPPED +SAMAN,225090.jpg,jskim8.jpg,RENAMED,김준성B,jskim8@samaneng.com,c4c5fd9979b89bb681a2a72eb8b83ce7b98264299ec75128715374220b98ca6e.jpg,HASH_MAPPED +SAMAN,222018.jpg,jwkim4.jpg,RENAMED,김준우,jwkim4@samaneng.com,f2eac3d575d1fdde89a8fc500fa8fb85a716cf0d81c22515803dd79222cbc963.jpg,HASH_MAPPED +SAMAN,226124.jpg,jikim.jpg,RENAMED,김준일,jikim@samaneng.com,6f2125416f9d327dfab6da5ee6e2a6f962fdc6e11771498ec9f98577646d7cbe.jpg,HASH_MAPPED +SAMAN,226019.jpg,jhkim19.jpg,RENAMED,김준학,jhkim19@samaneng.com,3126dc390f29d45df3bcc3a1fc96d71bdfe0da647d5f7b73f4496d28a90b85f1.jpg,HASH_MAPPED +SAMAN,221192.jpg,jhkim6.jpg,RENAMED,김준혁,jhkim6@samaneng.com,41b2236bda39f3b420c054efb2be19bd32c61c61a78b7a7f205177e2e3b4baff.jpg,HASH_MAPPED +SAMAN,223013.jpg,jhkim23.jpg,RENAMED,김준혁,jhkim23@samaneng.com,469cab317dd4956b72b104b8910ff2e6067e72f1efce51484f32cbe625ccd5ce.jpg,HASH_MAPPED +HANMAC,M21435.jpg,jhkim12.jpg,RENAMED,김준형,jhkim12@hanmaceng.co.kr,d0bf9d39ab69100e96e443a24ade032e84c27d326d279674059124fce10b9520.jpg,HASH_MAPPED +SAMAN,223373.jpg,jhkim29.jpg,RENAMED,김준호,jhkim29@samaneng.com,5f699c12060fd0ca756b828147fd2b5ee88b2be7b91354e8772d1e3f73862e5e.jpg,HASH_MAPPED +SAMAN,203122.jpg,jkkim6.jpg,RENAMED,김중기,jkkim6@samaneng.com,52b83dd6ed70db58887518bb910d0ab445d42c954222e706f66df07059a1b002.jpg,HASH_MAPPED +SAMAN,194071.jpg,jskim5.jpg,RENAMED,김중석,jskim5@samaneng.com,fead04917f23a9801985e162b962312eb9d28566aa492d544423eb577da2cde0.jpg,HASH_MAPPED +SAMAN,216141.jpg,jjkim3.jpg,RENAMED,김중재,jjkim3@samaneng.com,8b47fae4d1e00440d6a697c0f0608ca207314d9699255d6236467c036cc361d6.jpg,HASH_MAPPED +SAMAN,221017.jpg,jskim4.jpg,RENAMED,김지수,jskim4@samaneng.com,bc579af9da0b3d120c318ae999e1af731fa9a6cd84f367a1500fb599f0fe28e9.jpg,HASH_MAPPED +SAMAN,225349.jpg,jykim.jpg,RENAMED,김지열,jykim@samaneng.com,6abb03d27e709a51e599cab1850f681a23558e6ee62df7ab4bcd0945443c3c96.jpg,HASH_MAPPED +SAMAN,224156.jpg,jykim6.jpg,RENAMED,김지영,jykim6@samaneng.com,38544c1e3dbe0b7dc75d37352230e2bd43507dd1ad6c82de5d086bee9f60f901.jpg,HASH_MAPPED +HANMAC,B19306.jpg,jykim8.jpg,RENAMED,김지영A,jykim8@hanmaceng.co.kr,6dd63a1821ac207b0a4edbfd897b1fd2fec3f8b9dfec76648b428d8e5160ea06.jpg,HASH_MAPPED +HANMAC,M17208.jpg,jykim5.jpg,RENAMED,김지영,jykim5@brsw.kr,9ec492085fb6321e4bd8df38e6e39820bda08b82681fb54d34ffc007143238cf.jpg,HASH_MAPPED +SAMAN,199106.jpg,jwkim2.jpg,RENAMED,김지우,jwkim2@samaneng.com,396a5327d2dc26f127493d23c563e69e4ab8f8a86354877220cfd319433b73b4.jpg,HASH_MAPPED +HANMAC,T02328.jpg,jwkim10.jpg,RENAMED,김지우,jwkim10@hanmaceng.co.kr,822a25984f47df787e06423dafd96d20b4c8639c496f7bde1766511fa086894b.jpg,HASH_MAPPED +HANMAC,B13301.jpg,jwkim9.jpg,RENAMED,김지웅,jwkim9@hanmaceng.co.kr,2275451341737720e46fddff5c15173a79e160e42e2437ed0dc16e88cb86c8de.jpg,HASH_MAPPED +SAMAN,202063.jpg,jekim.jpg,RENAMED,김지은,jekim@samaneng.com,5dd7debc8238b79d0d6ee39ae42be049f49909904b0a022210a3db504a0eb629.jpg,HASH_MAPPED +SAMAN,201082.jpg,jhkim8.jpg,RENAMED,김지현,jhkim8@samaneng.com,18085f3181188fb927722bab08939753f81f2f919cc3d27f49a302f0ccb896a0.jpg,HASH_MAPPED +SAMAN,025111.jpg,jhkim.jpg,RENAMED,김지혜,jhkim@samaneng.com,a99af5990e35f459faa534fe67fa6d65ce42c371286da49773da49c041d35621.jpg,HASH_MAPPED +SAMAN,211103.jpg,jhkim5.jpg,RENAMED,김지훈,jhkim5@samaneng.com,64a28b9ebcdf1477563718ad4b5e47e54085d836c09c33ceed50d6d843f3058a.jpg,HASH_MAPPED +JANGHEON,J10314.jpg,jkim.jpg,RENAMED,김진,jkim@brsw.kr,513b195ae1141a66516b705d6d2540fa0313bf6f3fdd5554073af5278a8c0e68.jpg,HASH_MAPPED +JANGHEON,J26302.jpg,jgkim3.jpg,RENAMED,김진규,jgkim3@brsw.kr,d96a14e51c5700552eb2f0c7a1de7d7dd70a906f052b6aa63891551a47a72070.jpg,HASH_MAPPED +SAMAN,223158.jpg,jskim1.jpg,RENAMED,김진선,jskim1@samaneng.com,e6255234fbe88a44f32bcb98deef32eed08a72570bf6b2e95d0dce0393217ec8.jpg,HASH_MAPPED +SAMAN,191023.jpg,jskim3.jpg,RENAMED,김진섭,jskim3@samaneng.com,159f2928575c0c1db8e3286c49ee1397422a961080fa5cc9a57cbc439df38201.jpg,HASH_MAPPED +SAMAN,226050.jpg,jskim11.jpg,RENAMED,김진세,jskim11@samaneng.com,66143a1006408691da7d921f552dc597f85313bbdc40d0457a5ba14cb7c3d8de.jpg,HASH_MAPPED +SAMAN,225179.jpg,jwkim3.jpg,RENAMED,김진욱,jwkim3@samaneng.com,7d113c59c0858876fa10c1377765a72547d8805f8af0eec6496735a48fba435d.jpg,HASH_MAPPED +SAMAN,214004.jpg,jykim2.jpg,RENAMED,김진율,jykim2@samaneng.com,4fabfe82086260549897938174ae0449cb1e2dec701e3bc80a9caac229af056d.jpg,HASH_MAPPED +SAMAN,213082.jpg,jckim.jpg,RENAMED,김진찬,jckim@samaneng.com,af692f94217ab3ec4efc1515bc347d748a177c6b3629cd1f79d18ae532dcfb68.jpg,HASH_MAPPED +SAMAN,223101.jpg,jckim2.jpg,RENAMED,김진철,jckim2@samaneng.com,6718ec57d9eca4d4d1ef65c5b54068daf2e94ec0e2a82bd44ec1083358ee3c9d.jpg,HASH_MAPPED +HANMAC,M26014.jpg,jtkim2.jpg,RENAMED,김진토,jtkim2@hanmaceng.co.kr,2a577d742af02d557781fba65ab973de0e2d61e57c338620aaa523ac8c2927b9.jpg,HASH_MAPPED +SAMAN,218125.jpg,jhkim16.jpg,RENAMED,김진혁,jhkim16@samaneng.com,e6b193262b73e5fe852ff6f2dfdd7fc2962ea5c5f4663746aff180a8b5eeae9c.jpg,HASH_MAPPED +SAMAN,223256.jpg,jhkim26.jpg,RENAMED,김진현,jhkim26@samaneng.com,fa57e231df621086a0d740b1be4268a2024bcb4fe90ab5cda081306fb5a2c239.jpg,HASH_MAPPED +HANMAC,M24022.jpg,jhkim34.jpg,RENAMED,김진호,jhkim34@hanmaceng.co.kr,7a6cfe4cf3f60d21169d8497249f6a18d0adad03d170ecb753742f0d106e8ffe.jpg,HASH_MAPPED +SAMAN,222037.jpg,jhkim21.jpg,RENAMED,김진환,jhkim21@samaneng.com,36302d8948ea16bb835f94ae51518f8319edf0673f09564ec0b6ea775fa84df7.jpg,HASH_MAPPED +SAMAN,218165.jpg,jhkim17.jpg,RENAMED,김진훈,jhkim17@samaneng.com,ed7dc57b529030606499d5797202da4e597de2035297d272867d44d238840d8e.jpg,HASH_MAPPED +HANMAC,B20303.jpg,cwkim.jpg,RENAMED,김찬웅,cwkim@hanmaceng.co.kr,88e7934605c30e080806ba65362fd6b6f91e3f44f2040380cbd7c1de79b2ae92.jpg,HASH_MAPPED +HANMAC,M23052.jpg,chkim4.jpg,RENAMED,김찬호,chkim4@hanmaceng.co.kr,a5c7b973522d5a1bf8bd7732af2cf55266777dd150b7420a82bef9a2d05c3408.jpg,HASH_MAPPED +HANMAC,M22035.jpg,cskim.jpg,RENAMED,김창섭,cskim@hanmaceng.co.kr,91774a751e3f073c0c0d527bb304430193aad29bdd2833fee1fda5171758c6aa.jpg,HASH_MAPPED +SAMAN,221106.jpg,cekim.jpg,RENAMED,김창업,cekim@samaneng.com,685090cc5f1943f7479d02fe6c698494e0312289b0418c0eb8361355673e1164.jpg,HASH_MAPPED +SAMAN,205249.jpg,chkim3.jpg,RENAMED,김창환,chkim3@samaneng.com,7e0771d6772aa62c16f4723ce135412fe306cbb64dd946ac8b0bf655983d0776.jpg,HASH_MAPPED +SAMAN,224333.jpg,cykim.jpg,RENAMED,김채윤,cykim@samaneng.com,4a3273d63d0224d52e6e33d170be5b10076269661dfb75fbc2db38614d6e5353.jpg,HASH_MAPPED +SAMAN,223236.jpg,cjkim.jpg,RENAMED,김천주,cjkim@samaneng.com,def1ca7aa6b0d8595d76ed7e94d0341dd1e1524503c1e2b75b63f64246cf3186.jpg,HASH_MAPPED +SAMAN,223074.jpg,ckkim.jpg,RENAMED,김철규,ckkim@samaneng.com,9d1c17d9488e8b60242273904d18eefe7e708fc2b245587b01a243f5935409af.jpg,HASH_MAPPED +SAMAN,225249.jpg,cykim1.jpg,RENAMED,김철년,cykim1@samaneng.com,cdee1deac5766ec068197620116f4879d4ebed4a1f4f934678d5429f1e2194e3.jpg,HASH_MAPPED +SAMAN,224127.jpg,chkim.jpg,RENAMED,김철호,chkim@samaneng.com,2c1d65bec65cff63c2af17c13e429f22f79fc39172a6dbd3bb91d0f3e59cdf72.jpg,HASH_MAPPED +HANMAC,M21413.jpg,cgkim.jpg,RENAMED,김춘근,cgkim@hanmaceng.co.kr,7d34814f5f04172e26c49566d836476074aa1c5dcafe3f62802f754a443a6196.jpg,HASH_MAPPED +SAMAN,224021.jpg,cekim1.jpg,RENAMED,김치은,cekim1@samaneng.com,a867dd5b8f353b7dbb1bd37255cc28f49e0d15d4a8c3b6c1c3e63cd8bcefdb36.jpg,HASH_MAPPED +SAMAN,225255.jpg,tskim1.jpg,RENAMED,김태상,tskim1@samaneng.com,290c2f66359249c00bca76fa3e063fc4210961e34664de769115ed98d9c12eee.jpg,HASH_MAPPED +SAMAN,222182.jpg,tskim.jpg,RENAMED,김태식A,tskim@samaneng.com,1e379b7473441e209c49d91575f5b744ac4fa81fd567d3b70d26967503d776bf.jpg,HASH_MAPPED +HANMAC,M21451.jpg,tskim2.jpg,RENAMED,김태식,tskim2@hanmaceng.co.kr,adbe2493516fc60cff97d199706d919cb6fac2425bc82d26a88cc8bc0a8c7144.jpg,HASH_MAPPED +HANMAC,M20306.jpg,tykim3.jpg,RENAMED,김태연,tykim3@hanmaceng.co.kr,b4314fab21c16c70c82cff236dca215636447819db876563dbe22d6644338138.jpg,HASH_MAPPED +SAMAN,226107.jpg,tykim.jpg,RENAMED,김태용,tykim@samaneng.com,159afe499412c785446e69ddb9b01f26996a60c76553cba966c16f2508e88cf6.jpg,HASH_MAPPED +HANMAC,M20327.jpg,twkim.jpg,RENAMED,김태우,twkim@hanmaceng.co.kr,434a76c3ef95a0ea6816a130c1d55848c50509fbe675aeed30f935a72612ed69.jpg,HASH_MAPPED +SAMAN,225380.jpg,tukim.jpg,RENAMED,김태욱,tukim@samaneng.com,68f121dc4dbae1ad374af4eaede3f0831036c05c2d4927bd34b2d0a64736112e.jpg,HASH_MAPPED +HANMAC,M23006.jpg,twkim2.jpg,RENAMED,김태욱,twkim2@hanmaceng.co.kr,646585ed3b1382b725542419219cebbf45da8ebf52034c4d271b46d8f82a3833.jpg,HASH_MAPPED +HANMAC,M20312.jpg,tykim2.jpg,RENAMED,김태윤,tykim2@hanmaceng.co.kr,8744fee10a93d91a9f8ee2062caf3575c0702000be2a5a98cd7cae27bd7abc91.jpg,HASH_MAPPED +SAMAN,221236.jpg,thkim4.jpg,RENAMED,김태헌,thkim4@samaneng.com,67e8114c3464ddc06ae8d1e43467b52e4ad78477505091254d0a1e76c66eba9c.jpg,HASH_MAPPED +SAMAN,223022.jpg,thkim5.jpg,RENAMED,김태현,thkim5@samaneng.com,55a40f77e821c100fceaa5ba44a76dd297b9d2633cdb8c370d4e33825622969e.jpg,HASH_MAPPED +SAMAN,218083.jpg,thkim.jpg,RENAMED,김태호,thkim@samaneng.com,f18f9bdaf502736e008a6e7a50325c7ac5638ae888efd93ec715a233f2a62625.jpg,HASH_MAPPED +SAMAN,217041.jpg,thkim1.jpg,RENAMED,김태훈,thkim1@samaneng.com,97dcb69fe520120db41a9d361909a43e738b843b103217f3d8c37bd860d8755e.jpg,HASH_MAPPED +SAMAN,207253.jpg,tkkim2.jpg,RENAMED,김택규,tkkim2@samaneng.com,76feac3a5fa7fd15d2703825d4f3892c6487348104c4a3fb8d8d5eabe9f39688.jpg,HASH_MAPPED +SAMAN,216145.jpg,tjkim2.jpg,RENAMED,김택중,tjkim2@samaneng.com,4000134c7ecbf89b649917d407bd6a393a12a59c74ac8a79d590cc5b8eeadabc.jpg,HASH_MAPPED +SAMAN,193023.jpg,hekim.jpg,RENAMED,김하은,hekim@samaneng.com,bea245e6c2841e03245981ff05b4c974743243a957a2ecaa347ecd9c1f45d334.jpg,HASH_MAPPED +SAMAN,220182.jpg,hskim8.jpg,RENAMED,김학성,hskim8@samaneng.com,f0489acfb6a791756d321f0fa21144b73289f66bcc2724172d14f015c46b3bed.jpg,HASH_MAPPED +SAMAN,225059.jpg,hjkim9.jpg,RENAMED,김학재,hjkim9@samaneng.com,733d02d98942bf39d11f240544d7d2a5cfdaa276a52f3edd125c4d77ccaee19b.jpg,HASH_MAPPED +SAMAN,217081.jpg,hgkim5.jpg,RENAMED,김한결,hgkim5@hanmaceng.co.kr,faaa3b8bae0e6eaa858c8d4b59bc3ebca0e1b447782c32ce89758232cf670861.jpg,HASH_MAPPED +SAMAN,226077.jpg,hbkim.jpg,RENAMED,김한별,hbkim@samaneng.com,84ad84c3677f3c31b88c813d28714dbddfc4fbab0ec895107fbe80e5fdc1bc90.jpg,HASH_MAPPED +SAMAN,225096.jpg,hkkim3.jpg,RENAMED,김해강,hkkim3@samaneng.com,9ae9588a4c724b1c233ec66847f1a3fd23756191a71210a9a5acaf8139591f5a.jpg,HASH_MAPPED +SAMAN,225064.jpg,hdkim.jpg,RENAMED,김해동,hdkim@samaneng.com,a9efb953bd1607a657a91364b1d401ba3057af00e082ba4ad53befed1b79e647.jpg,HASH_MAPPED +PTC,P17202.jpg,hskim15.jpg,RENAMED,김해성,hskim15@brsw.kr,32676ba9bc4d45e2e71eed94d305807a1c0f888086da1b12d1da3c4c4e39bfc4.jpg,HASH_MAPPED +SAMAN,225341.jpg,hkim.jpg,RENAMED,김혁,hkim@samaneng.com,9b60e90cbcece323e16906f46a8431d0f28442389a3b9b4a27479ba73a4a9d8c.jpg,HASH_MAPPED +SAMAN,199044.jpg,hkkim1.jpg,RENAMED,김현경,hkkim1@samaneng.com,6c5213db15e53512d675e3ec9afba3e588a8e8fa0c7e62aa6c573870d5db0f85.jpg,HASH_MAPPED +SAMAN,221056.jpg,hgkim2.jpg,RENAMED,김현길,hgkim2@samaneng.com,8c042144dce9ad6092a4e76eef008443791c7844fd3236770d1709056c941de5.jpg,HASH_MAPPED +SAMAN,225062.jpg,hmkim.jpg,RENAMED,김현민,hmkim@samaneng.com,dfe4463b3e7f03114b27880f3d4ade6f64f8dc76017659029d41482db6c512bd.jpg,HASH_MAPPED +SAMAN,219054.jpg,hskim7.jpg,RENAMED,김현섭,hskim7@samaneng.com,79e14e82b97b96a17cddcae416c591a0539b8647f706ee8658f988ae8b96ea55.jpg,HASH_MAPPED +SAMAN,221299.jpg,hskim11.jpg,RENAMED,김현수,hskim11@samaneng.com,15d00aa4fa64593f2c799d91bb546c4b69bb5cf06e6689754edef166115717f1.jpg,HASH_MAPPED +SAMAN,224143.jpg,hskim9.jpg,RENAMED,김현수,hskim9@samaneng.com,ae42108b016aa1e2ed8b8ef4769c3c6322ae2a15a1fb545800273beec9d071e6.jpg,HASH_MAPPED +HANMAC,M22033.jpg,hskim14.jpg,RENAMED,김현수,hskim14@hanmaceng.co.kr,fe0a0194fe8bd73a3db4a8019b21af13f01f76aab3c4fdd58ff6fe270f545c34.jpg,HASH_MAPPED +SAMAN,024086.jpg,hakim.jpg,RENAMED,김현아,hakim@samaneng.com,4d95d683d4d561f2705c3eccbd41332c7d715e24036ec97534e825137f9c71d0.jpg,HASH_MAPPED +SAMAN,219001.jpg,hikim.jpg,RENAMED,김현일,hikim@samaneng.com,343c7fea11fa8917d4014cc90b646f30752a4b0fb726b0c5957402a51af55982.jpg,HASH_MAPPED +SAMAN,205275.jpg,hckim.jpg,RENAMED,김현철,hckim@samaneng.com,2606efadd6025909f2437a0b8255804739fda31d96516cc6a9461afdaf86d77c.jpg,HASH_MAPPED +SAMAN,221168.jpg,chunryung.jpg,RENAMED,김형건,chunryung@samaneng.com,0b39495ebbd6ee1ca534383c014122df73f6ae6fa2be81099733efaf29ae9576.jpg,HASH_MAPPED +SAMAN,224364.jpg,hgkim3.jpg,RENAMED,김형규,hgkim3@samaneng.com,037189dacb86cbbe35674b5227916e8a0167123ade11f482501a3b5d065a342b.jpg,HASH_MAPPED +SAMAN,220260.jpg,hgkim1.jpg,RENAMED,김형기,hgkim1@samaneng.com,9439e44656416a89b8426b8739342c62147937b1d578a5119c70e19821110f6f.jpg,HASH_MAPPED +SAMAN,223106.jpg,hbkim87.jpg,RENAMED,김형배,hbkim87@samaneng.com,b13dccb899b21b86d2bde948e8553cce4caa80c3ed6f9a1992e4c1a97ec3ef09.jpg,HASH_MAPPED +HANMAC,M24052.jpg,hjkim13.jpg,RENAMED,김형주,hjkim13@hanmaceng.co.kr,5a929355bcbdcdf7287506a3fe481ef956fd30348cca5d09abcbd3b2d50cec84.jpg,HASH_MAPPED +SAMAN,199120.jpg,hjkim.jpg,RENAMED,김형준,hjkim@samaneng.com,7d138e0a2442e813cdf744f8f33487c48d39143398ba852db3f2df3190089d0d.jpg,HASH_MAPPED +SAMAN,221044.jpg,hjkim2.jpg,RENAMED,김형준,hjkim2@samaneng.com,9a30db941a34eb37a26e6b4d05e162040ce7de438b7e85cee216627d73ffe119.jpg,HASH_MAPPED +SAMAN,225217.jpg,hjkim11.jpg,RENAMED,김형준,hjkim11@samaneng.com,73724466f35e94fe33a7d0d951e084b7be008ff8a32c88087c629a9e0e5e5447.jpg,HASH_MAPPED +SAMAN,225330.jpg,hjkim7.jpg,RENAMED,김형진,hjkim7@samaneng.com,2293a67d536568a6a7b1652bc59763b7fd3a0a8a2a3ba21cffe14683fc75c759.jpg,HASH_MAPPED +SAMAN,025030.jpg,hmkim1.jpg,RENAMED,김혜미,hmkim1@samaneng.com,f690deada5a3374ebbc50e1512cc6268f892a9fe9cfa9f2f85556c87e1d617ec.jpg,HASH_MAPPED +SAMAN,226125.jpg,hmkim2.jpg,RENAMED,김혜민,hmkim2@samaneng.com,110ae1bcae06511ffe75b7e75e0a2648c028adc11cb2f593e85182e255c5a919.jpg,HASH_MAPPED +SAMAN,222123.jpg,hikim2.jpg,RENAMED,김혜인,hikim2@samaneng.com,db291e07bfd146c54100ea68f5b27a331d294f5d51f95ff5eec10284dca73d28.jpg,HASH_MAPPED +SAMAN,220225.jpg,hjkim1.jpg,RENAMED,김혜지,hjkim1@samaneng.com,5c9811c045520fb6725a431cd394e60cf2c7a831b12510069ecc781b09fb15e9.jpg,HASH_MAPPED +SAMAN,205002.jpg,hykim1.jpg,RENAMED,김호영,hykim1@samaneng.com,e22de1a32e0a06df06869790bc9952d44ce0aea068fdd35f0a39f7aec5017d7c.jpg,HASH_MAPPED +SAMAN,210077.jpg,hjkim10.jpg,RENAMED,김호중,hjkim10@samaneng.com,3dbdac400690ea04e269bdfb3fe84563d8638fddfbe23752a2de99ebeba9efb2.jpg,HASH_MAPPED +SAMAN,203189.jpg,hskim4.jpg,RENAMED,김홍석,hskim4@samaneng.com,881843b72e4ed9a2829f815e6821cb64de210edc4f3a47a3cfe78006fc25016b.jpg,HASH_MAPPED +SAMAN,222180.jpg,hskim13.jpg,RENAMED,김홍석,hskim13@samaneng.com,f21502a4262bcc2f352e266f274757057f84a0a9b59be0c3c9e98ccc2a032889.jpg,HASH_MAPPED +HANMAC,M16513.jpg,htkim.jpg,RENAMED,김홍태,htkim@hanmaceng.co.kr,8e526df8c5b37806dfe3a2fcfb914bb80d3a29d45a5327a357a5cd5a81af5c88.jpg,HASH_MAPPED +SAMAN,223202.jpg,hykim.jpg,RENAMED,김화영,hykim@samaneng.com,cd744778f0dcd69c6f7ddf2040147b049e7fe38714eaec5c37bd8512bf8c5d99.jpg,HASH_MAPPED +SAMAN,025117.jpg,hykim2.jpg,RENAMED,김화영,hykim2@samaneng.com,6e8451203007d4d94678d4226eb295b98ac496a04b01949f35e1fcdd558f5bc7.jpg,HASH_MAPPED +SAMAN,226063.jpg,hgkim4.jpg,RENAMED,김효근,hgkim4@samaneng.com,584199f36632668bb6faaad3dc216c7e94a1c0162b949c08e0ee7432a4ecd982.jpg,HASH_MAPPED +HANMAC,M25038.jpg,hjkim12.jpg,RENAMED,김효진,hjkim12@hanmaceng.co.kr,7c1837d3c86476c3419e4b14c6aea73bbefeb28a6588e8710ca034e008e00ede.jpg,HASH_MAPPED +SAMAN,225331.jpg,hkkim2.jpg,RENAMED,김희각,hkkim2@samaneng.com,e9a6c2408995e446c4283d86db30cabb828f1c361afef84d936a9ffa9dfc3527.jpg,HASH_MAPPED +SAMAN,215040.jpg,hskim3.jpg,RENAMED,김희석,hskim3@samaneng.com,d1224a932ccf12f7842e343d16b6737bd3ad2cbf9fa7d720778d4d56a1a10242.jpg,HASH_MAPPED +SAMAN,226145.jpg,hskim5.jpg,RENAMED,김희석,hskim5@samaneng.com,3b2a560cae8a02a8bbc33b35f1c446dcd6e7197e78d8fbf9b98a42997c2bd8c7.jpg,HASH_MAPPED +SAMAN,209231.jpg,hskim.jpg,RENAMED,김희선,hskim@samaneng.com,58ae013dc6638e7ca515d8bb364cf4e2a2c285ad6ff135acf0d877789147bb16.jpg,HASH_MAPPED +SAMAN,224089.jpg,hckim3.jpg,RENAMED,김희찬,hckim3@samaneng.com,d48a271c1ef3ba089dfae825f7c86bdedeb9dbd64c88636fd172cd70f6a8cd88.jpg,HASH_MAPPED +SAMAN,225083.jpg,hckim4.jpg,RENAMED,김희철,hckim4@samaneng.com,12045d338588ab87cf6287327dbf813c78d512d1b76210e3de76e3f291ecc853.jpg,HASH_MAPPED +SAMAN,225233.jpg,khna.jpg,RENAMED,나광호,khna@samaneng.com,cbbd58cc2fed5a84b8f39915b4a5fff0804d66f93ad11c277a36bddbdf202466.jpg,HASH_MAPPED +SAMAN,026065.jpg,krna.jpg,RENAMED,나금란,krna@samaneng.com,e90c4a7fca44cd51e53cb53c9d6cee71d205db9fcc58e4c980f562838f1ec24e.jpg,HASH_MAPPED +SAMAN,226081.jpg,dsna.jpg,RENAMED,나대성,dsna@samaneng.com,6766bb5714c03369b30950f4c0b355f53b38e3d5898e38071332281038809fa3.jpg,HASH_MAPPED +SAMAN,225164.jpg,scna.jpg,RENAMED,나선채,scna@samaneng.com,19e5fd59039c08fb5c4cfbeeb8909a3dea379b1b04a49405215fcef3e521149e.jpg,HASH_MAPPED +SAMAN,223350.jpg,reyes.jpg,RENAMED,나쉬,reyes@samaneng.com,c56a3781c6de79a1121348fec28e82467fcab043050c23447d4895abffbf06be.jpg,HASH_MAPPED +SAMAN,024073.jpg,yhna.jpg,RENAMED,나영희,yhna@samaneng.com,21ce279d6ac124883bd62096f17fab3a198e658dbd224e2a31a5922560c62216.jpg,HASH_MAPPED +HANMAC,M25014.jpg,wjna.jpg,RENAMED,나원준,wjna@hanmaceng.co.kr,364a479d627e53259967a54b051aaeb534a227194299862e2d5b5b3021218880.jpg,HASH_MAPPED +SAMAN,220166.jpg,hbra.jpg,RENAMED,나한범,hbra@samaneng.com,35a61e353839febefc1d2a4d89e4176dee13cc51f46caa1f39f4a43ef2d5946d.jpg,HASH_MAPPED +SAMAN,225296.jpg,ghnam.jpg,RENAMED,남건호,ghnam@samaneng.com,eefabe8e7ec05dab5df80ca7d742744f1da20e2c4397ff20efc0436711300195.jpg,HASH_MAPPED +HANMAC,B15306.jpg,snamkung.jpg,RENAMED,남궁성,snamkung@brsw.kr,0488b10147fecc3a40c9cb004ada030c956afba030c3c24585a49c152eef53e8.jpg,HASH_MAPPED +SAMAN,225088.jpg,yhnamgoong.jpg,RENAMED,남궁영환,yhnamgoong@samaneng.com,42f83c06822d68ad39b74142e4e97905cc03dde971afc3d5f693bc6d602652c8.jpg,HASH_MAPPED +HANMAC,M22032.jpg,cnamgung.jpg,RENAMED,남궁찬,cnamgung@hanmaceng.co.kr,7da0facd2424eedb3fc44e5553905dfd555bb86a708166d3b397235f59c79bed.jpg,HASH_MAPPED +HANMAC,M14219.jpg,dynam.jpg,RENAMED,남동윤,dynam@hanmaceng.co.kr,c3005fa9a476954f923fa8d7a17efc17762b8c1e9367bdcd421c91feafeba20b.jpg,HASH_MAPPED +SAMAN,226044.jpg,mwnam.jpg,RENAMED,남명우,mwnam@samaneng.com,73a8af92997d9941fbf161101bdb79a7870afc5a47fc5f30e4fb4d4c9dc056d3.jpg,HASH_MAPPED +JANGHEON,J25506.jpg,synam.jpg,RENAMED,남수용,synam@brsw.kr,24d266e34884a098b1f1b46f09695ea4a2fad045f2cc51baf66d6ed971eea5dc.jpg,HASH_MAPPED +SAMAN,224150.jpg,wbnam.jpg,RENAMED,남웅비,wbnam@samaneng.com,0d5475d1bcef1fb871052c079a506d2a51b6a6715ea0fab7e0c0d3392417f2ab.jpg,HASH_MAPPED +SAMAN,221282.jpg,ywnam.jpg,RENAMED,남윤우,ywnam@samaneng.com,1417d8576aab2768278cf9575ed5fa388b665bd68645524601db38c5134ed2d5.jpg,HASH_MAPPED +SAMAN,218058.jpg,iwnam.jpg,RENAMED,남일우,iwnam@samaneng.com,230617c7aedc9f9654b0722fa698f025abb831a694bd236f53b95fc4029f3f10.jpg,HASH_MAPPED +SAMAN,218140.jpg,jjnam.jpg,RENAMED,남재준,jjnam@samaneng.com,d333495888a116614d85cb52d84b8c8c67a255c8eb17960d02f5f6b42e16d074.jpg,HASH_MAPPED +SAMAN,223186.jpg,jhnam.jpg,RENAMED,남지호,jhnam@samaneng.com,2e8173ece280ad00bd9491777ee7d24051389bf6d400108f62d573ebe9f618f3.jpg,HASH_MAPPED +HANMAC,M07313.jpg,ggnoh.jpg,RENAMED,노경국,ggnoh@hanmaceng.co.kr,4e647e77b05cd2dce7d8c8dde9dcfdaf06006d4dd4977473c97fb41ba4b2fe6a.jpg,HASH_MAPPED +SAMAN,223346.jpg,khnoh1.jpg,RENAMED,노경희,khnoh1@samaneng.com,f7c10242c14c00b1ddc592a5b0cb6a08949054bc9382a7cf2288f35ad61b25f9.jpg,HASH_MAPPED +SAMAN,223063.jpg,khnoh.jpg,RENAMED,노근호,khnoh@samaneng.com,b9bb0dc883fa9aa96732d451755b25eee2c8b4a7d6c48cc25e413e10634cf333.jpg,HASH_MAPPED +SAMAN,221308.jpg,nwro.jpg,RENAMED,노남욱,nwro@samaneng.com,131faf0a13d68ebd965cd373eba2d3b048f04cf1dda79f84caaacd88734793eb.jpg,HASH_MAPPED +SAMAN,220235.jpg,dhnoh.jpg,RENAMED,노동환,dhnoh@samaneng.com,c2356725af813346cfb063be4b4888217d7b181892297c21deea2d79c9d139f3.jpg,HASH_MAPPED +SAMAN,219158.jpg,shnoh.jpg,RENAMED,노성호,shnoh@samaneng.com,4324d39a4e6c07296bfed8a6ad4df0aa9e8f5bb341538e2455224ceb458d451a.jpg,HASH_MAPPED +SAMAN,207255.jpg,sjnoh.jpg,RENAMED,노세종,sjnoh@samaneng.com,263b2dcf8b72a5a2f300216afc5514272d82239fb7725f10b5292637eb9bd059.jpg,HASH_MAPPED +SAMAN,207104.jpg,yknoh.jpg,RENAMED,노윤경,yknoh@samaneng.com,2aeab1cb775450457d8b4cba5e07b022bc7793f84855aef2789d001f4884f2c0.jpg,HASH_MAPPED +SAMAN,225182.jpg,ihnoh.jpg,RENAMED,노인호,ihnoh@samaneng.com,817382646fcee93464d99444283e3b5fbaddb277a84e0dee335566e4cb276f66.jpg,HASH_MAPPED +SAMAN,220007.jpg,jhroh.jpg,RENAMED,노정훈,jhroh@samaneng.com,ae12cb8e76586da3ee8e7f862b0b70002b1ff4fffd5713ee41da3806a4c4e592.jpg,HASH_MAPPED +SAMAN,189008.jpg,jhnoh1.jpg,RENAMED,노주환,jhnoh1@samaneng.com,be902a325f339fc9fcb4260e7d20e9cd60935ac189e0593383e84e35c75b1430.jpg,HASH_MAPPED +SAMAN,217155.jpg,jnoh.jpg,RENAMED,노준,jnoh@samaneng.com,c1bdc7a7b2f49d87e667bccf4c4abcbec3d690de47b3ddbf7b794ecb5f5a002f.jpg,HASH_MAPPED +HANMAC,B21363.jpg,tsnoh.jpg,RENAMED,노태수,tsnoh@hanmaceng.co.kr,1dd06e43cd865593a53801c3b5d1eb8ba5bf2264c423d41d85b1b1cbdfed504d.jpg,HASH_MAPPED +SAMAN,225067.jpg,hsnoh1.jpg,RENAMED,노해성,hsnoh1@samaneng.com,fee464e9cbbc773ab3db9fc56ed93db12894646e4e37338cd05cc34f86024b0d.jpg,HASH_MAPPED +SAMAN,215092.jpg,hjno.jpg,RENAMED,노현주,hjno@samaneng.com,fab71733dfd1a07378911ec02b89f0ec0645dce43a9814c3f5f37b198b193aad.jpg,HASH_MAPPED +SAMAN,194061.jpg,hsnoh.jpg,RENAMED,노호석,hsnoh@samaneng.com,61f5acd2582eb016e0e350b7c9de158f60ba406a6eeda5f84a30b85f3f711482.jpg,HASH_MAPPED +SAMAN,026016.jpg,karyu.jpg,RENAMED,류경애,karyu@samaneng.com,aef6d00dd075c6982b7f8ce08dfee23e3f3763cdf7bf828ad9b82f000786e5fe.jpg,HASH_MAPPED +SAMAN,220031.jpg,nkryu.jpg,RENAMED,류나경,nkryu@samaneng.com,3374104d4ff3b226a6e192b6a5dd9c6febd5b6192f4d37072aec14e941c38de1.jpg,HASH_MAPPED +SAMAN,222286.jpg,dgryu.jpg,RENAMED,류동균,dgryu@samaneng.com,dac4712740f96c4ccb3c2aa868d294e50931045135311a28f262b09408187a08.jpg,HASH_MAPPED +HANMAC,M24076.jpg,diryu.jpg,RENAMED,류동일,diryu@hanmaceng.co.kr,e2b32a1f7bff26cce9fcf8f90c39522f147dc3d756505179ec95d0c4ac00f179.jpg,HASH_MAPPED +HANMAC,M25022.jpg,skryu.jpg,RENAMED,류성균,skryu@hanmaceng.co.kr,5b14a0da657d47df0371b3e8fda0a56b7712ae83c17d571f73a27c75f4e801ef.jpg,HASH_MAPPED +SAMAN,221023.jpg,syryu.jpg,RENAMED,류소열,syryu@samaneng.com,ab570c46e2c934506971055816bc5a277bc37e2115bd61d79c4f72032eaa53f6.jpg,HASH_MAPPED +SAMAN,178006.jpg,shryu.jpg,RENAMED,류승하,shryu@samaneng.com,8fba503104564654f0f6eb858fcb5d1285c04707d62ccb84806e12049108fb09.jpg,HASH_MAPPED +HANMAC,M24057.jpg,swryu.jpg,RENAMED,류시우,swryu@hanmaceng.co.kr,a47f36f21bdf7f700f354c374de582f4cd807088b6e0d5f127fc85c33d264244.jpg,HASH_MAPPED +SAMAN,026067.jpg,ahryu.jpg,RENAMED,류아현,ahryu@samaneng.com,c7bdadde6a8cd5bdcfef79ce2045c6f64bbe2b2ba4286ef66a2b1ce61eaed220.jpg,HASH_MAPPED +HANMAC,B24063.jpg,wjryu.jpg,RENAMED,류원준,wjryu@brsw.kr,6b80fc805e11665f343cfbec20e145b6eed97fc02a7ecde0ba1a7138ae32def6.jpg,HASH_MAPPED +SAMAN,217127.jpg,jhryu.jpg,RENAMED,류정현,jhryu@samaneng.com,b66dd758b0f0dc284ec648fc735490d9d6d1ae98906e40aa306165fa4d41ed4f.jpg,HASH_MAPPED +SAMAN,218088.jpg,csryu.jpg,RENAMED,류창수,csryu@samaneng.com,6f100e9d16efd783de99b67f147f2b41899579699bb6ea250cc5aebdc80160de.jpg,HASH_MAPPED +SAMAN,225369.jpg,tyryu.jpg,RENAMED,류태열,tyryu@samaneng.com,cf93f25e1bbcd4916035e3cd7dfc97fd8025f539e0c960a55d3e27ee8a5253e2.jpg,HASH_MAPPED +SAMAN,218144.jpg,hsryu1.jpg,RENAMED,류한솔,hsryu1@samaneng.com,498d458db6a1c42c608188befefc8ac6db7bf758dbbc1a673a84dca54e35d2a3.jpg,HASH_MAPPED +SAMAN,216172.jpg,hsryu2.jpg,RENAMED,류호성,hsryu2@brsw.kr,8727f0c34cb26224c724acac3671ba8089c835705305e38225584ef9ee91fe14.jpg,HASH_MAPPED +SAMAN,226056.jpg,hjryu.jpg,RENAMED,류호진,hjryu@samaneng.com,2e0a22820880767b8e7f7d9cdfa451d837f61f4133766a4cdfe1963a10cb90d8.jpg,HASH_MAPPED +SAMAN,203119.jpg,kdma.jpg,RENAMED,마길동,kdma@samaneng.com,82e87c51b07c54e9835c1dfc927d31b80281b914faa67a6072c74ca90f92d6cf.jpg,HASH_MAPPED +SAMAN,223105.jpg,marco.jpg,RENAMED,마르코,marco@samaneng.com,99e120d4780abcff4142a15a599cc47089d85c674668462018cc38986c6ab54f.jpg,HASH_MAPPED +SAMAN,212098.jpg,arma.jpg,RENAMED,마아람,arma@samaneng.com,e78761b3dcf77402de9c3b438105bdc7d2f50ba89c448ccbda817ccd6beebf12.jpg,HASH_MAPPED +SAMAN,224040.jpg,jhma.jpg,RENAMED,마준혁,jhma@samaneng.com,380aba111a71629ed4d43a22b5690983a938d60fc88a5863b78adf05a4f9681c.jpg,HASH_MAPPED +SAMAN,223089.jpg,hyma.jpg,RENAMED,마희연,hyma@samaneng.com,409612ce5a16f1ea1cc7438ebd80ed18bacb746695f36d18edd6336d4cd97534.jpg,HASH_MAPPED +SAMAN,220055.jpg,krman.jpg,RENAMED,만경록,krman@samaneng.com,75fc5117bc465b1381a3357b3fb2f4b3eec2238ce1510af2057501680bc86f43.jpg,HASH_MAPPED +SAMAN,218085.jpg,jhmyeong.jpg,RENAMED,명지홍,jhmyeong@samaneng.com,c259c0ae5f5cc01d89fb9ba6e85efab952051c3b31938de5134462674e45c8c3.jpg,HASH_MAPPED +SAMAN,190013.jpg,ksmoon.jpg,RENAMED,문경식,ksmoon@samaneng.com,16ac5cf59f14af25791728ad1e06a537a493d9169fa12f75c8884410046eed49.jpg,HASH_MAPPED +SAMAN,223214.jpg,gumun.jpg,RENAMED,문광욱,gumun@samaneng.com,5c9d0d470ebd8ff81152bd328ca91a011b1ab188014617bbfb48fd45cfa51dfe.jpg,HASH_MAPPED +SAMAN,222184.jpg,kjmoon.jpg,RENAMED,문규정,kjmoon@samaneng.com,8d13b7491334a31bf294a18a88e186f15ea993a98c694db15be3d1bee4619b4c.jpg,HASH_MAPPED +SAMAN,225315.jpg,gjmoon.jpg,RENAMED,문기주,gjmoon@samaneng.com,f51c4f980286cda15ee4d3afe4b4a110fef0d17168667eb32b4ec8dbf6a12174.jpg,HASH_MAPPED +HANMAC,T04306.jpg,nymoon.jpg,RENAMED,문남연,nymoon@hanmaceng.co.kr,9130dcad13e508cb8afea88496ab5c8b2f195c6bda114e2db891a57842af42c4.jpg,HASH_MAPPED +SAMAN,210119.jpg,mamoon.jpg,RENAMED,문미애,mamoon@samaneng.com,1ccf5d3491df3aa9274a877beba4d7c7f5e35d0f3686a78fe805160dda84bae8.jpg,HASH_MAPPED +HANMAC,M02606.jpg,bymoon.jpg,RENAMED,문백용,bymoon@hanmaceng.co.kr,456d2bae51978c2b26e1030ef044d69a7767e0091b9c80370f2f213e3a253b9a.jpg,HASH_MAPPED +SAMAN,224244.jpg,bmmoon.jpg,RENAMED,문병묵,bmmoon@samaneng.com,2eb19a0b462afbe94e8030bf2166bd14e57be4c34f3d8d5cbeca5df7945cc1fd.jpg,HASH_MAPPED +SAMAN,224292.jpg,bcmoon1.jpg,RENAMED,문병창,bcmoon1@samaneng.com,550ff436e2f1eb3927a8d37e8be35bd551338715aa307a01c56047c3612f1381.jpg,HASH_MAPPED +SAMAN,204328.jpg,bcmoon.jpg,RENAMED,문병철,bcmoon@samaneng.com,d1182db43c5b56fa09d8882f006fd852b695907cf4983e59d2971cddae006953.jpg,HASH_MAPPED +SAMAN,220018.jpg,sbmoon.jpg,RENAMED,문상봉,sbmoon@samaneng.com,4aac0f1c602e27cc72c86c3f6d6b4cfec92f788ac606d7b936bbce27836b142c.jpg,HASH_MAPPED +SAMAN,225237.jpg,sjmoon.jpg,RENAMED,문석준,sjmoon@samaneng.com,93b5a017ebe8ae9456987a21a5d50570e5c109cd31ac9f6f0ab2f15306514c23.jpg,HASH_MAPPED +SAMAN,216076.jpg,sjmun.jpg,RENAMED,문성진,sjmun@samaneng.com,b3612a491fd2f8d758a8282b7acfcfa69011bcc84bd9cf6ad381cd90159ffe1d.jpg,HASH_MAPPED +SAMAN,220276.jpg,symoon.jpg,RENAMED,문소양,symoon@samaneng.com,6dc513e82c2453e362f9fc3a6d118f9d8b8eb1c57836e9d11fa0fb97f151ac5b.jpg,HASH_MAPPED +HANMAC,M25068.jpg,shmun.jpg,RENAMED,문수하,shmun@hanmaceng.co.kr,9ce1468987ebd62e6b06f1a097ba75413ff4bcaed9ec56d2f07c14b850fae9c5.jpg,HASH_MAPPED +SAMAN,221206.jpg,shmoon1.jpg,RENAMED,문수혁,shmoon1@samaneng.com,724ceac80e0e913509ac284fbcaecf11618cf836fc86a1d9661de7d051247c53.jpg,HASH_MAPPED +SAMAN,222046.jpg,yrmoon.jpg,RENAMED,문영란,yrmoon@samaneng.com,1f0fcf73bd996c6d3cc1dff8009031e59d482f8355192832beffc3cf9666d696.jpg,HASH_MAPPED +HANMAC,B20309.jpg,ysmun.jpg,RENAMED,문영석,ysmun@brsw.kr,0bd3d15498c05d551996a2bfecc7f025e897b6b7a7746ddbbf7e3c27f1cadce0.jpg,HASH_MAPPED +SAMAN,202117.jpg,yjmoon.jpg,RENAMED,문용주,yjmoon@samaneng.com,9340240d7d9478935afec07707ed564e4d81ae72e447c5fc9ebedceb2036877f.jpg,HASH_MAPPED +SAMAN,226082.jpg,jhmoon1.jpg,RENAMED,문재훈,jhmoon1@samaneng.com,75dae7e57556b5dabd78451740952e15632ac2f3cec8fa8da39c72feeeefd1e5.jpg,HASH_MAPPED +SAMAN,217072.jpg,jhmoon.jpg,RENAMED,문제현,jhmoon@samaneng.com,ae124cdccf994d01eb28818f819ffc8242e32fe9ff53a25e5b4e73d808b984ef.jpg,HASH_MAPPED +SAMAN,224159.jpg,jkmoon.jpg,RENAMED,문종근,jkmoon@samaneng.com,53cb773c0889452a58938087427a810a80699d42b201081a8732b2fdf209e31d.jpg,HASH_MAPPED +SAMAN,224224.jpg,jcmoon.jpg,RENAMED,문종천,jcmoon@samaneng.com,38889b31e402e19eafa743ca3529111aba94d8708af0a94a207a97985ef175e5.jpg,HASH_MAPPED +JANGHEON,J13201.jpg,jtmoon.jpg,RENAMED,문종탁,jtmoon@brsw.kr,f9e86d233ed9c4d77215600e99e4cfff03a74f13619c73903499837b3083a731.jpg,HASH_MAPPED +SAMAN,215089.jpg,jsmoon.jpg,RENAMED,문준석,jsmoon@samaneng.com,cc45355a9ae2ca60e15f5564eb78e6c40f9aec4af546ea3a9e4716c60d27cd66.jpg,HASH_MAPPED +HANMAC,B25028.jpg,jhmoon2.jpg,RENAMED,문준혁,jhmoon2@brsw.kr,b140143c2932e3f1ad29797c96172793d064a33e5224814f02a476f6b13be2e9.jpg,HASH_MAPPED +SAMAN,222040.jpg,crmoon.jpg,RENAMED,문창록,crmoon@samaneng.com,e502bb56560050e3a0138dff59a4b80eaf87954f5132c4fcb946391277cb7a1c.jpg,HASH_MAPPED +SAMAN,219019.jpg,csmun.jpg,RENAMED,문천수,csmun@samaneng.com,fa4e00d05f371ef8d4c0859cd270caf90e1801c03c6deca69c8886415c597075.jpg,HASH_MAPPED +SAMAN,213024.jpg,hsmoon1.jpg,RENAMED,문현석,hsmoon1@samaneng.com,4f4acd3020f495f09cf1d72aafb92d944ad385c729f02498bd279912b8d58423.jpg,HASH_MAPPED +SAMAN,224225.jpg,hjmoon.jpg,RENAMED,문현주,hjmoon@samaneng.com,262122268a2899e7347329e29f87f00c26b9d69536afbbcdd7e664f423b6cf87.jpg,HASH_MAPPED +SAMAN,216173.jpg,hsmoon.jpg,RENAMED,문형석,hsmoon@hanmaceng.co.kr,872409c1e856a080eeccb3df3f7cfb762f2add188fbfbe4e56e7dcbb6b7e95db.jpg,HASH_MAPPED +SAMAN,212149.jpg,hjmoon1.jpg,RENAMED,문형장,hjmoon1@samaneng.com,aa51c979b1019c562352b335cac3e475ae38f1d7d3d868eeb579609ccefb30c9.jpg,HASH_MAPPED +SAMAN,224234.jpg,grmin.jpg,RENAMED,민경록,grmin@samaneng.com,db4a9ca3ce8b1bd89e6645b85a5c5c867a9d51dacaca06f80f7e154b0f203a6c.jpg,HASH_MAPPED +SAMAN,220123.jpg,kjmin.jpg,RENAMED,민경진,kjmin@samaneng.com,f8c0cb50ab9827540ea3b395626b9a47d7617b4e50ad1a42bb1b8ced43d51a6b.jpg,HASH_MAPPED +SAMAN,026020.jpg,dsmin.jpg,RENAMED,민다송,dsmin@samaneng.com,0c0dfc02ff82e69da2895c72e69f8fc88c1e709bf86c2359a52df7fa4836f717.jpg,HASH_MAPPED +SAMAN,224016.jpg,dwmin.jpg,RENAMED,민동욱,dwmin@samaneng.com,aea669f5ff7bd1c5cf55295f7c1783e4c7e7c78ee411806176a4e5d76064facc.jpg,HASH_MAPPED +SAMAN,220009.jpg,mkmin.jpg,RENAMED,민만경,mkmin@samaneng.com,72be0829945ed4575170ee1a0612b3a3839a12f3717eb8908b704aae6aa83be4.jpg,HASH_MAPPED +SAMAN,225061.jpg,bhmin.jpg,RENAMED,민범홍,bhmin@samaneng.com,b94ba02a7baf8af8a3532e417349f86c1bdd03b2163972cc3b8ec6e126a312b2.jpg,HASH_MAPPED +SAMAN,224335.jpg,symin.jpg,RENAMED,민소연,symin@samaneng.com,2ab9bc074a538eb1b09a832084097b0c858bb1db33cd7e620d6a129a322eb906.jpg,HASH_MAPPED +SAMAN,221043.jpg,smin.jpg,RENAMED,민식,smin@samaneng.com,2e4a7c5d06a8ac926a6192099d058c4c3ee8c47d1456521591d2019b3eba7740.jpg,HASH_MAPPED +HANMAC,M24034.jpg,ihmin.jpg,RENAMED,민인홍,ihmin@hanmaceng.co.kr,27a087aeef3ffe682d59802a2980755220c1553e57634bf4ce139ea71d1b8ffb.jpg,HASH_MAPPED +SAMAN,212003.jpg,jkmin.jpg,RENAMED,민진기,jkmin@samaneng.com,f670c10c48804643a1ead00e8d84e1f7b1057e3edf77a45b678570b44b67a990.jpg,HASH_MAPPED +SAMAN,225102.jpg,jhmin1.jpg,RENAMED,민진홍,jhmin1@samaneng.com,e1f31f6db978cc3f7d46e87431339c5251cf5d1a42de07cca967ed3247a7595e.jpg,HASH_MAPPED +SAMAN,224063.jpg,jhmin.jpg,RENAMED,민진희,jhmin@samaneng.com,89646aa1bf7b6e9408b8e874d110f64bca6f5fbf31eb8bfc9ed5567ef9ef5dbe.jpg,HASH_MAPPED +SAMAN,216147.jpg,csmin.jpg,RENAMED,민창식,csmin@samaneng.com,619994fffa0906e8fbc6c81d9c05d135c6a6aa55766339d8fca5f5ca6d2c1410.jpg,HASH_MAPPED +SAMAN,223313.jpg,hmin.jpg,RENAMED,민홍,hmin@samaneng.com,23729bd80ea9d181c1f4252be8c66373169ceae0943b12fd6aadd4fc6ed2f9f2.jpg,HASH_MAPPED +HANMAC,M25015.jpg,gspark3.jpg,RENAMED,박건석,gspark3@hanmaceng.co.kr,d05416aded966ba03af95964df23ae86b6c99b0aaadfd6c569e8e931be808a7a.jpg,HASH_MAPPED +HANMAC,M25016.jpg,ghpark4.jpg,RENAMED,박건희,ghpark4@hanmaceng.co.kr,1d900870ccc058ca55856a721f47809e1a49e7f87f1dfc4a8f2f57d87dd2700e.jpg,HASH_MAPPED +SAMAN,221272.jpg,kgpark.jpg,RENAMED,박경근,kgpark@samaneng.com,78f2207abb7c02ef648149af3251bc82039fbf77e99a57f589f497f9cc21f72d.jpg,HASH_MAPPED +SAMAN,224053.jpg,kbpark.jpg,RENAMED,박경빈,kbpark@samaneng.com,2b51592cfe7db6a84ff8a779843669b479116eb60c38ee14f4f8a4e4f737a368.jpg,HASH_MAPPED +SAMAN,225001.jpg,kwpark.jpg,RENAMED,박경원,kwpark@samaneng.com,a3d0846ea4665b126a2096e8d110fe67f685b44d452b1ecb637cd188e5ff5846.jpg,HASH_MAPPED +SAMAN,225107.jpg,kwpark1.jpg,RENAMED,박경원,kwpark1@samaneng.com,7bffc07a8af42afa7054b147863c1f7e9594ca663b0fee3e4936ab51bd4445ab.jpg,HASH_MAPPED +SAMAN,222071.jpg,gtpark.jpg,RENAMED,박경태,gtpark@samaneng.com,153002b4692d7692872767465ed6152bac27730e23cb8bbb2639194ab217d95a.jpg,HASH_MAPPED +SAMAN,204084.jpg,kwpark2.jpg,RENAMED,박경화,kwpark2@samaneng.com,8f00e0f93db5a3de87e5cd21e54be5361de381956a1cb762f8314c56249389f0.jpg,HASH_MAPPED +SAMAN,225048.jpg,gspark2.jpg,RENAMED,박광수,gspark2@samaneng.com,b9d5dca97cad0d8d627d8660847d2fcd175eaa55c0e608911f91b08fc5631c73.jpg,HASH_MAPPED +SAMAN,222250.jpg,kupark.jpg,RENAMED,박광욱,kupark@samaneng.com,4870d1ad438a6c08aeed2a551df0a7b9fa7bb17db0a6bcddfcf0cc1c33aed7a1.jpg,HASH_MAPPED +SAMAN,223351.jpg,khpark4.jpg,RENAMED,박광현,khpark4@samaneng.com,67709d2ea1b6d8ab9135efe465231cd720940986c67f8afa71cfb069b26cf481.jpg,HASH_MAPPED +HANMAC,M26005.jpg,ghpark.jpg,RENAMED,박광환,ghpark@hanmaceng.co.kr,064ba698cf0f9d4374c64eec8ebf8195993e6d1c743edaffb5e9faab3cc62469.jpg,HASH_MAPPED +SAMAN,193562.jpg,khpark1.jpg,RENAMED,박광희,khpark1@samaneng.com,d5b5457b9ae65ceb143db98e46c2368fdd7296ff7b57a038674673378d31a9f9.jpg,HASH_MAPPED +SAMAN,206017.jpg,kpark.jpg,RENAMED,박교,kpark@samaneng.com,21be223d3298e2f3cee2d908a472063e631e5f1fb82a54e7141bdfbd0f866196.jpg,HASH_MAPPED +SAMAN,219144.jpg,khpark3.jpg,RENAMED,박귀한,khpark3@samaneng.com,b8d0358819181a0f308a30704e464aa3345b6aa55ef4b3abb5ae0cd9c592ac91.jpg,HASH_MAPPED +SAMAN,225363.jpg,kspark.jpg,RENAMED,박기순,kspark@samaneng.com,25133eb79075dee09626ca8b7f52558b218572befa03ce5d8230f853cb574f10.jpg,HASH_MAPPED +HANMAC,M25020.jpg,kcpark.jpg,RENAMED,박기철,kcpark@hanmaceng.co.kr,aa3926f9b7f691b5af8a8e57aebb82c1e4aa9ef29903c43a7e7e103b56820dcd.jpg,HASH_MAPPED +SAMAN,225020.jpg,khpark5.jpg,RENAMED,박기현,khpark5@samaneng.com,ea7bd806dea3c13ad241735c7e994103f23291ef33398dcd3767d3116ee59321.jpg,HASH_MAPPED +SAMAN,206114.jpg,gspark.jpg,RENAMED,박길상,gspark@samaneng.com,4604b3d3824afdb2500f4fb0bf946ecf592741ab5a17596a8b31b3732652c0fb.jpg,HASH_MAPPED +SAMAN,217039.jpg,nspark.jpg,RENAMED,박노석,nspark@samaneng.com,2f04798fb81a41f30c08f49f90aaf40c30222c16b6b7880da08965ba92a19741.jpg,HASH_MAPPED +JANGHEON,J26501.jpg,dwpark.jpg,RENAMED,박대원,dwpark@brsw.kr,773b134ce580f154efc19eebf617871b76f35172395f96534a26d5f094e4aff8.jpg,HASH_MAPPED +SAMAN,196167.jpg,djpark.jpg,RENAMED,박대정,djpark@samaneng.com,65c48bafbd04212498f7916c0362b4e619bd7f8526b700b4cb67272741fe34f9.jpg,HASH_MAPPED +SAMAN,221151.jpg,djpark1.jpg,RENAMED,박덕재,djpark1@samaneng.com,26c3b48bba5adb3e35e0e5106c4c1e5fa409d5c52e2aa7768fcbb6dd5fd97535.jpg,HASH_MAPPED +SAMAN,221018.jpg,dhpark.jpg,RENAMED,박도현,dhpark@samaneng.com,1af9bfb50fbe6c134c48f848f0236e2848ba9723a9a787e913dfb39683b6c8e0.jpg,HASH_MAPPED +SAMAN,222171.jpg,dgpark.jpg,RENAMED,박동길,dgpark@samaneng.com,9435696e115ae0e2268d31ed4744db7b4a29a3cafa7ae5c3b41a3d6332416580.jpg,HASH_MAPPED +SAMAN,224214.jpg,dypark.jpg,RENAMED,박동열,dypark@samaneng.com,c6c99342d800b34fd84051dc3eb5597fe6d609d388e2c2faf4ba4597b276764b.jpg,HASH_MAPPED +SAMAN,225317.jpg,dipark.jpg,RENAMED,박동인,dipark@samaneng.com,be20cb99473cf9c0ba3b73576e5e1f7009a563c382310714fedb690902e8cd32.jpg,HASH_MAPPED +SAMAN,224196.jpg,dhpark1.jpg,RENAMED,박동헌,dhpark1@samaneng.com,efcf701e213765209f15a4cd239980d68462541a551633cbc389102d1e5fd1ba.jpg,HASH_MAPPED +HANMAC,M25034.jpg,mjpark.jpg,RENAMED,박명주,mjpark@hanmaceng.co.kr,c51862a35ee8ee20c7d13703022c89bbb34f73339d3fd51f737f9e279789995e.jpg,HASH_MAPPED +SAMAN,218069.jpg,mhpark2.jpg,RENAMED,박명희,mhpark2@hanmaceng.co.kr,637ae4091a8b804f7986b85f7735794a9288c31bbc696733ec3c6a183c54efb5.jpg,HASH_MAPPED +SAMAN,224295.jpg,mbpark.jpg,RENAMED,박문범,mbpark@samaneng.com,f755da0609436c64b71fde41984121ae424f3f0ae6b408fbe579a77905fb887a.jpg,HASH_MAPPED +SAMAN,025063.jpg,mspark1.jpg,RENAMED,박미숙,mspark1@samaneng.com,ef21993fd50238fdd90a209adbb7dcd7ecb3f3d0d78525176a781e8da6224e56.jpg,HASH_MAPPED +HANMAC,M18308.jpg,mspark2.jpg,RENAMED,박민상,mspark2@hanmaceng.co.kr,0100377028923d9cf6954180055108b4a034d362215ec7c821231519e36214bc.jpg,HASH_MAPPED +SAMAN,224353.jpg,mspark.jpg,RENAMED,박민선,mspark@samaneng.com,3ade3b595e330f5561187a2e6756c7464693fb6c37d5e5fd9a3f58ef17df3cab.jpg,HASH_MAPPED +HANMAC,M20305.jpg,mspark3.jpg,RENAMED,박민수,mspark3@hanmaceng.co.kr,3e74ec8b744368d7acce6e422dba83ba05d27393fd21818e7e119fc8c1712d4a.jpg,HASH_MAPPED +SAMAN,025057.jpg,mjpark3.jpg,RENAMED,박민정,mjpark3@samaneng.com,50cce4874cb59e48f9e44a80d9c8845f7fc427b68b17de6f228c0893830e78fb.jpg,HASH_MAPPED +SAMAN,223039.jpg,mjpark2.jpg,RENAMED,박민지,mjpark2@samaneng.com,8d0087a4e2fc286ba50a2ebe6d4d9597df29bbabf34c103c0d54a1ed3ef8e6e7.jpg,HASH_MAPPED +SAMAN,225085.jpg,mhpark1.jpg,RENAMED,박민희,mhpark1@samaneng.com,40ffd8a8e2a4c925eadfdb101e6d977b5a5068fd64129122c6c60898cda5afd9.jpg,HASH_MAPPED +SAMAN,026056.jpg,mhpark.jpg,RENAMED,박민희,mhpark@samaneng.com,91f8ae6f6b10f164912e58a2b270c2fa45b8e4c591c64d009003a11f432e49c7.jpg,HASH_MAPPED +HANMAC,M23002.jpg,bjpark.jpg,RENAMED,박범진,bjpark@hanmaceng.co.kr,da9eff9142d40cb6596b10b495355c9f3cd43b9d7d864bedabeae1a6fdcd8ee7.jpg,HASH_MAPPED +SAMAN,225016.jpg,bkpark.jpg,RENAMED,박보경,bkpark@samaneng.com,5a6951da6fcd80e4561ff316d742797c24de08f9b8b4520d3e9a61d6e10fd019.jpg,HASH_MAPPED +SAMAN,217113.jpg,bkpark2.jpg,RENAMED,박봉기,bkpark2@samaneng.com,2134decccf7a1118caf408b1a2dfe0ec793d64cd2fc3fc8264dcc9faada9d8f0.jpg,HASH_MAPPED +SAMAN,221012.jpg,spark.jpg,RENAMED,박사무엘,spark@samaneng.com,c188873170fa69b3586c7b6b54c8f8796fa98e8f5ed07844a4ed4a5dfb0340f8.jpg,HASH_MAPPED +SAMAN,225247.jpg,smpark2.jpg,RENAMED,박상민,smpark2@samaneng.com,a592316e7893ee381eaa132f38ebb4a9734c0a8683bdaf24089f6e8d0942bfc4.jpg,HASH_MAPPED +HANMAC,M23076.jpg,sbpark2.jpg,RENAMED,박상빈,sbpark2@hanmaceng.co.kr,3a73f0fdf3707c525a4daf5212c89321e8050dac6488023bbd9091a48233980d.jpg,HASH_MAPPED +SAMAN,221265.jpg,sspark1.jpg,RENAMED,박상수,sspark1@samaneng.com,71846d9fc0e42e1585e2dfe7c61782b29ed2ab573cdef81e482368b20018bad8.jpg,HASH_MAPPED +SAMAN,202126.jpg,swpark1.jpg,RENAMED,박상원,swpark1@samaneng.com,666f0e39d550282a7c37cb2073ee74b3eb4c3e8916d4d164a9d5afbf49ac1985.jpg,HASH_MAPPED +SAMAN,225336.jpg,swpark3.jpg,RENAMED,박상원,swpark3@samaneng.com,49c543f882ae1395abc31e54b05bafa9027d4d1eca0d2c4237fc0c17d4525087.jpg,HASH_MAPPED +SAMAN,224222.jpg,sjpark2.jpg,RENAMED,박상제,sjpark2@samaneng.com,045f03d0e7409ea41a23425015b0a9c4928057e66472b855c663ac6e6f42cc16.jpg,HASH_MAPPED +SAMAN,222206.jpg,sjpark.jpg,RENAMED,박상준,sjpark@samaneng.com,c93ceb01c76b581038865bca7a4e6ac64bb3067d8b8eb9324853e4e5459ec21e.jpg,HASH_MAPPED +SAMAN,224347.jpg,sjpark3.jpg,RENAMED,박상준,sjpark3@samaneng.com,d0fbd31f79aac54d98767716f5fb8854eb299a369d9f8847a11f93207f032f81.jpg,HASH_MAPPED +SAMAN,201060.jpg,scpark.jpg,RENAMED,박상철,scpark@samaneng.com,1cda515847a16e09cf5c250723ffbe790709af945e5c1f42e386d798959db97b.jpg,HASH_MAPPED +SAMAN,196125.jpg,shpark4.jpg,RENAMED,박상호,shpark4@samaneng.com,7f06f17bc052b8a0be5fc415037875a9ccd8f34137e78c1340c419c7d9d80828.jpg,HASH_MAPPED +SAMAN,224194.jpg,shpark7.jpg,RENAMED,박상훈,shpark7@samaneng.com,929c59957ff1bae6070e96328946e95083faaf76f91c0b488310147316dd0304.jpg,HASH_MAPPED +SAMAN,223397.jpg,shpark6.jpg,RENAMED,박상흠,shpark6@samaneng.com,ac96c4321a2e459cd3c0228e18e81ccf69310e253d21bfd04ad69c72a630688a.jpg,HASH_MAPPED +SAMAN,225161.jpg,shpark10.jpg,RENAMED,박석현,shpark10@samaneng.com,1b473e945e08b173be7d50c91f554d1bdd92020f3413eb653aa48fa009727c94.jpg,HASH_MAPPED +SAMAN,221031.jpg,slpark.jpg,RENAMED,박선량,slpark@samaneng.com,e763aa6963d778ad877a66f3a705b3f1fcebb785ab2300717d8256ef0ebf985b.jpg,HASH_MAPPED +JANGHEON,J24301.jpg,swpark5.jpg,RENAMED,박선우,swpark5@brsw.kr,0fe761d4c0665546ae8d69878eec6015d2b5ba114f058c9a5b750207f7da4249.jpg,HASH_MAPPED +HANMAC,M20321.jpg,swpark4.jpg,RENAMED,박선우,swpark4@hanmaceng.co.kr,0ebf5d1cf26ca7b36db029ab8eace4be00f70d5521849df829e5b0a0ac9f5529.jpg,HASH_MAPPED +SAMAN,224033.jpg,sgpark2.jpg,RENAMED,박성걸,sgpark2@samaneng.com,64ce7bf167b62bf54a94a5b3e8be7190ee05b00a9bc482c1728b4e4ced8a6f5b.jpg,HASH_MAPPED +SAMAN,224251.jpg,srpark1.jpg,RENAMED,박성록,srpark1@samaneng.com,0eca4319c12161b1951a23ef2694f8f65aa27e834f3a11185a170a3f52e53ca0.jpg,HASH_MAPPED +SAMAN,219027.jpg,sspark.jpg,RENAMED,박성섭,sspark@samaneng.com,b0ffde2981df08b51e2fb528887e9efd841388b7c75b823b42d28ee600c2c978.jpg,HASH_MAPPED +SAMAN,226136.jpg,sspark3.jpg,RENAMED,박성수,sspark3@samaneng.com,3e7780e90ee9fd8715a22f2e16688ef168b55eb34d976c104d82effaa3651aa5.jpg,HASH_MAPPED +SAMAN,025083.jpg,sypark3.jpg,RENAMED,박성연,sypark3@samaneng.com,b458f930c2d6b8090885baac21a88f501cf82c3d44805cebf40e4d8065f86ba3.jpg,HASH_MAPPED +SAMAN,225084.jpg,swpark2.jpg,RENAMED,박성원,swpark2@samaneng.com,fd0b5f9d0546d43ba6ac71757a608c50ab9a16bada1b00e42019f17d647b0b52.jpg,HASH_MAPPED +SAMAN,223294.jpg,sipark.jpg,RENAMED,박성인,sipark@samaneng.com,ee7a94d1a612002eb46b33ec7b4f9105de385270801a3f090896a0cffe665afb.jpg,HASH_MAPPED +JANGHEON,J24501.jpg,sipark2.jpg,RENAMED,박성일,sipark2@brsw.kr,4410597aa6b4ec21373a3086631b30ebb3ebdfbcb848944f2f47115aec12ff83.jpg,HASH_MAPPED +SAMAN,225139.jpg,sjpark4.jpg,RENAMED,박성주,sjpark4@samaneng.com,6a3aba90c9ba1f5b6ff60ac75f303d0086f1514c86ec072c263922828080c08a.jpg,HASH_MAPPED +SAMAN,213076.jpg,sjpark1.jpg,RENAMED,박성중,sjpark1@samaneng.com,233b7c44fcd2e86f028dcc54a37ab1b9e538d42661d6c639c3fc2a8668faa1c3.jpg,HASH_MAPPED +SAMAN,226018.jpg,shpark11.jpg,RENAMED,박성혁,shpark11@samaneng.com,a44b51b7b061533749b5f72e0fa6a155c2b6a91fdedbd9ccb6c92af7a3a8aa5b.jpg,HASH_MAPPED +SAMAN,217160.jpg,shpark.jpg,RENAMED,박성호,shpark@samaneng.com,1450cd13511c063ed2b5479e9a3e4f64ee8d2209c7c710c39d5c6e90d0774053.jpg,HASH_MAPPED +SAMAN,205178.jpg,shpark1.jpg,RENAMED,박성훈,shpark1@samaneng.com,48460de48b364599de22b0f3626d15001d0c535751d4a29d75c1a279d12e5179.jpg,HASH_MAPPED +SAMAN,223197.jpg,srpark.jpg,RENAMED,박세림,srpark@samaneng.com,f401e181fbda16228b58960bb62ff2bd221b7c646d4db8447467b8ea93a7c679.jpg,HASH_MAPPED +SAMAN,026004.jpg,separk.jpg,RENAMED,박세은,separk@samaneng.com,ba033e644eec5f013684ef64447d811337c93123d89ee1c48be134eb22451fc7.jpg,HASH_MAPPED +SAMAN,219044.jpg,shpark2.jpg,RENAMED,박세환,shpark2@samaneng.com,986749cb2c683381eeb9c96e560a4fc30d08ad9ab079e1e6a4134b54815a9f85.jpg,HASH_MAPPED +SAMAN,225005.jpg,sbpark.jpg,RENAMED,박수빈,sbpark@samaneng.com,fb469c5c9898995a8f230885fa42f205252706c43797848ca58e51cdd7952444.jpg,HASH_MAPPED +SAMAN,221191.jpg,shpark3.jpg,RENAMED,박수훈,shpark3@samaneng.com,2f1d314edd98b845726eb59ba1356b0c82e9d006a4b16e453b5f8498f221bd73.jpg,HASH_MAPPED +SAMAN,225252.jpg,sspark2.jpg,RENAMED,박순석,sspark2@samaneng.com,a658cf9e5b4d68298aba6f98778d48b63f95e389566a2babf481f9a80fc61ce6.jpg,HASH_MAPPED +SAMAN,222226.jpg,sgpark.jpg,RENAMED,박승건,sgpark@samaneng.com,b6f3f901c66b2c7d04ef45a62ca648b3e7e983c52ffad2a4d64233296e72c89b.jpg,HASH_MAPPED +SAMAN,223049.jpg,sgpark1.jpg,RENAMED,박승규,sgpark1@samaneng.com,c427e59000c13379a49274ec68200ec38fbf36255e363f930e64ea1136aa059d.jpg,HASH_MAPPED +HANMAC,M22009.jpg,sspark4.jpg,RENAMED,박승신,sspark4@hanmaceng.co.kr,2832008afe2523b94ef59bcee84f5c9355e914dd11fbcf57c2c93fadd4ca0891.jpg,HASH_MAPPED +SAMAN,223398.jpg,sypark.jpg,RENAMED,박승양,sypark@samaneng.com,08fd5fca35414e4b3e4325706658c910b875a07317e54dc711af524787f78490.jpg,HASH_MAPPED +SAMAN,223195.jpg,swpark.jpg,RENAMED,박승우,swpark@samaneng.com,62756b2391b19b40b582a0d735a8a1cc7b1631b6b51c5ebd864dc73f27214748.jpg,HASH_MAPPED +HANMAC,M07507.jpg,yspark5.jpg,RENAMED,박연수,yspark5@hanmaceng.co.kr,fd39e918915bf95e4632b4e4701353ded671c2cf1c51fc8f87bd4bb7e4b94707.jpg,HASH_MAPPED +SAMAN,215029.jpg,ygpark.jpg,RENAMED,박영규,ygpark@samaneng.com,7ad050abd32c4dca84871da3bd934ecd16cd4257e1935a49f99737559f8b16b6.jpg,HASH_MAPPED +SAMAN,225153.jpg,ynpark.jpg,RENAMED,박영남,ynpark@samaneng.com,152993afce80bbf2fc7017c013e9603d49a33aa1cc127e4a8159a76998b6a704.jpg,HASH_MAPPED +SAMAN,223149.jpg,ympark.jpg,RENAMED,박영문,ympark@samaneng.com,f177bf472c0c410ba03669c4bc576c49257f80709b7b89651f4c982a83c96b9f.jpg,HASH_MAPPED +SAMAN,224227.jpg,yspark1.jpg,RENAMED,박영산,yspark1@samaneng.com,8fbe76fe9b914b638a11d3a8adb6cb3ba385ff1b1ffbe0927f151d16f9e8eba7.jpg,HASH_MAPPED +SAMAN,222101.jpg,yspark2.jpg,RENAMED,박영선,yspark2@samaneng.com,eadb96637ca69646b66dbaad6669f8191efdb25a522e9a725118130ac7c4451d.jpg,HASH_MAPPED +SAMAN,226118.jpg,yspark4.jpg,RENAMED,박영수,yspark4@samaneng.com,458224861b9b1617f8b8aafff2d314f55f139d875b5ce699179739c012306736.jpg,HASH_MAPPED +SAMAN,224342.jpg,ywpark.jpg,RENAMED,박영욱,ywpark@samaneng.com,665da63b7de3c3f8c433a5ac7c3d6a8d3b838e80663f2066e817908ad78b4444.jpg,HASH_MAPPED +SAMAN,220232.jpg,yjpark.jpg,RENAMED,박영진,yjpark@samaneng.com,4222155480c72ad17bff7561572a9b7c772dc33ecb0dd65e1904103e31016ebc.jpg,HASH_MAPPED +SAMAN,224369.jpg,yjpark1.jpg,RENAMED,박영진,yjpark1@samaneng.com,1415afcaa07fea290bdd0de3fc4d9d3371acce6f54874941c778eaf7b9be5b64.jpg,HASH_MAPPED +SAMAN,224084.jpg,ykpark.jpg,RENAMED,박용규,ykpark@samaneng.com,56afb520df9f8a7838e3aefc749a82d7cc56f3301efe133e580f721542f6f0e6.jpg,HASH_MAPPED +SAMAN,218104.jpg,ycpark.jpg,RENAMED,박용철,ycpark@samaneng.com,b9e6836c978715da8e766c62dadef68f2209282dcf867f4b2077437b78e94501.jpg,HASH_MAPPED +SAMAN,220127.jpg,wbpark.jpg,RENAMED,박원배,wbpark@samaneng.com,ebf4bce50fbb16dcc8ed1873b346b469b165af03c68c83154384dd2f7b6b210c.jpg,HASH_MAPPED +SAMAN,225150.jpg,wjpark1.jpg,RENAMED,박원준,wjpark1@samaneng.com,418d4a30a42a325a6caf682f173ff936ed0987ffebf1fa765fa869156e99384b.jpg,HASH_MAPPED +SAMAN,225180.jpg,whpark.jpg,RENAMED,박원효,whpark@samaneng.com,e50e8ad88dcca84d035fe312930cdcc0b3e24689248f00e0d7a9e0d24fa89a36.jpg,HASH_MAPPED +SAMAN,224273.jpg,yspark.jpg,RENAMED,박유진,yspark@samaneng.com,be714cc2927048af0bbbb7c555678b36517b992be9e27a012bb198c4c0216da1.jpg,HASH_MAPPED +SAMAN,225186.jpg,ypark.jpg,RENAMED,박윤,ypark@samaneng.com,91bb86ae3f7788714deb72af9eb7a68d5a04051ec9d4bbfbfd5218ce9e8a6083.jpg,HASH_MAPPED +JANGHEON,J25305.jpg,ebpark.jpg,RENAMED,박은별,ebpark@brsw.kr,b1b76da87108bea7406d40dd532194bd8396b25b85daf8c8ed519f4ec86a98ab.jpg,HASH_MAPPED +SAMAN,024074.jpg,ejpark1.jpg,RENAMED,박은정,ejpark1@samaneng.com,b65a83fb9a5307f0db5b8b378550cd848224189cedb1e052c3e5dc16a9593b1b.jpg,HASH_MAPPED +HANMAC,M24041.jpg,ispark2.jpg,RENAMED,박익수,ispark2@hanmaceng.co.kr,38bdc95de15f522813566e991c63fc42467bdd1a2a1fbc548b45807d4867d6aa.jpg,HASH_MAPPED +HANMAC,M22016.jpg,igpark.jpg,RENAMED,박인규,igpark@hanmaceng.co.kr,ae1e5190225739d746845a0dae33c0888f93e3ff63487be63df998232afd38f2.jpg,HASH_MAPPED +SAMAN,220164.jpg,ispark.jpg,RENAMED,박인수,ispark@samaneng.com,b7095755d2dcaf021e9d6249efcaffd3e2eafb782b6ea7cac5a72f4e53a0ea9a.jpg,HASH_MAPPED +SAMAN,025133.jpg,iapark.jpg,RENAMED,박인애,iapark@samaneng.com,3aeb948d67d94a4f9ef0289df122aeff0916bd4b9daddc7a1a0f6c346e56a8ef.jpg,HASH_MAPPED +SAMAN,224164.jpg,icpark.jpg,RENAMED,박인철,icpark@samaneng.com,a7954d05626f895734377da46f9cf18fa9784c41fa7b11e1ebf02732edba7925.jpg,HASH_MAPPED +SAMAN,218154.jpg,itpark.jpg,RENAMED,박인태,itpark@samaneng.com,b70da491572c02f2b0f53fe1debb4fe58ba486625e3212e98793bd39fff3fc6c.jpg,HASH_MAPPED +SAMAN,223307.jpg,ipark.jpg,RENAMED,박일,ipark@samaneng.com,69dcec41caee093cb153dff26580042fd435d83fe40cfddb4b6d7777bee6edf0.jpg,HASH_MAPPED +SAMAN,224282.jpg,ispark1.jpg,RENAMED,박일석,ispark1@samaneng.com,126df2c5ee28eaf6737063c066a679686e11054a0cc53be24f24206269befea0.jpg,HASH_MAPPED +SAMAN,224005.jpg,jhpark7.jpg,RENAMED,박장호,jhpark7@samaneng.com,9ff0a09defbe134ed605acae22c967547de6c873f4c064e0af0ea915689ac50a.jpg,HASH_MAPPED +SAMAN,224141.jpg,jspark9.jpg,RENAMED,박재성,jspark9@samaneng.com,1fe833c9bf8669868aa552e6f6f11fd90a83b7e998099b252f44181c6ba70b54.jpg,HASH_MAPPED +SAMAN,224231.jpg,jspark5.jpg,RENAMED,박재신,jspark5@samaneng.com,ed4287c4f110b924b4d210d7e6e620bad9ea2abfe5d1a1c0e127c6a648e576a1.jpg,HASH_MAPPED +SAMAN,218100.jpg,jwpark3.jpg,RENAMED,박재원,jwpark3@samaneng.com,8f63bae6bade02f19353ee433efd7370f5abcd330a809864b51f7f3f892f5db6.jpg,HASH_MAPPED +SAMAN,220259.jpg,jwpark7.jpg,RENAMED,박재원,jwpark7@samaneng.com,ab277dedca7857ce545c574020f1c7938182c63a7b1c9bc302c641e1d59937a1.jpg,HASH_MAPPED +SAMAN,221316.jpg,jhpark2.jpg,RENAMED,박재호,jhpark2@samaneng.com,2184b4e8252f004e305308d9842c47d5243db3f12a4df4d1c3b9b7f1ddbc61ac.jpg,HASH_MAPPED +SAMAN,203047.jpg,jkpark2.jpg,RENAMED,박정근,jkpark2@samaneng.com,cb73443ce8358b9dc581df8ecb76e01b8b3c8464257f4ed99dd47ee0adc414cd.jpg,HASH_MAPPED +SAMAN,224280.jpg,jgpark.jpg,RENAMED,박정근,jgpark@samaneng.com,73edac00d5f1c73ca49dd6d86bf1ae44a6ee4736396c2c15d986f1134ee7cb6b.jpg,HASH_MAPPED +SAMAN,222183.jpg,jspark1.jpg,RENAMED,박정석,jspark1@samaneng.com,010819b6620501bf17908be2848ae2d9b0b91ae9c3a1b55a0250c64073ca4670.jpg,HASH_MAPPED +SAMAN,195043.jpg,jwpark.jpg,RENAMED,박정우,jwpark@samaneng.com,bde690682a66916c7203a5f9449bdfb390b8917ef93f7ad332215f46c7d003e1.jpg,HASH_MAPPED +SAMAN,221055.jpg,jwpark8.jpg,RENAMED,박정우,jwpark8@samaneng.com,fbc5c1c79000bc759af8ad1df1186efd941fd768480f064845be1160d45ff694.jpg,HASH_MAPPED +SAMAN,216062.jpg,jwpark5.jpg,RENAMED,박정원,jwpark5@samaneng.com,402b99696bcc57585d6f60aeb24dd1cab5fdfd035e2b6cfb6a3c3fb42c117837.jpg,HASH_MAPPED +SAMAN,221169.jpg,jhpark.jpg,RENAMED,박정호,jhpark@samaneng.com,8f68eedc9857c246554df64efbf9b2bc53ddd032e8919d29831013fd9d98df30.jpg,HASH_MAPPED +SAMAN,223323.jpg,jhpark3.jpg,RENAMED,박정환,jhpark3@samaneng.com,3ced6e8deb3afe93f22659c126337ec6dc48e796045aabdc633c8c3d2d19d13b.jpg,HASH_MAPPED +SAMAN,226065.jpg,jhpark11.jpg,RENAMED,박정환,jhpark11@samaneng.com,3747bf782a7aee53a1fc73ab0df88362c0a7368ead91fcf6896593d6e55d4a22.jpg,HASH_MAPPED +SAMAN,223190.jpg,jypark2.jpg,RENAMED,박제용,jypark2@samaneng.com,d8a1a9a8f9cba5393a7a1528fac733b297adf88b72352639bb4b29dba952d2e7.jpg,HASH_MAPPED +SAMAN,223235.jpg,jypark3.jpg,RENAMED,박종렬,jypark3@samaneng.com,e297b4162ff4748a7380983b43b250497c2bcd379eed006e28ac02f4b1277fbb.jpg,HASH_MAPPED +SAMAN,211081.jpg,jmpark.jpg,RENAMED,박종민,jmpark@samaneng.com,cb0f6d1f5cc8342ec1add62e80874ad00bad60dca83e3eaa1d0ea0f39490e7d0.jpg,HASH_MAPPED +SAMAN,221174.jpg,jmpark1.jpg,RENAMED,박종민,jmpark1@samaneng.com,789cecdcc9b144cbc4aa9bf9195501d2616c70439d80d25f424d6992a7c2d19d.jpg,HASH_MAPPED +SAMAN,204075.jpg,jbpark2.jpg,RENAMED,박종범,jbpark2@samaneng.com,70c18110e3516b943777c14d40abe11f48d2a8cdcb6d29cfbaa69114bc2e25da.jpg,HASH_MAPPED +HANMAC,M26029.jpg,jspark10.jpg,RENAMED,박종시,jspark10@hanmaceng.co.kr,d244f052c5a7f626bc47fea8af9680e9b7c9e2b174a6f0a7899b24f21c8dfad3.jpg,HASH_MAPPED +SAMAN,225207.jpg,jipark.jpg,RENAMED,박종인,jipark@samaneng.com,7c732a997d98f1719e1837be0cc7f92b5216e1daaf56c4681d3f922255c7ea4e.jpg,HASH_MAPPED +SAMAN,226072.jpg,jhpark4.jpg,RENAMED,박종혁,jhpark4@samaneng.com,a458b1db325d502de03b8cb9af995e463187bd3fed8aa51b041a55e69d257e9b.jpg,HASH_MAPPED +SAMAN,226119.jpg,jhpark12.jpg,RENAMED,박종현,jhpark12@samaneng.com,809090bf0fd78bb8b7b7abc0bb21e088b5078f7c4428e4f4223414322110d419.jpg,HASH_MAPPED +SAMAN,225044.jpg,jhpark5.jpg,RENAMED,박종호,jhpark5@samaneng.com,b05c1bf764688f8479d9497931a1d90aaf81d4f783d913e150d1481272662bc7.jpg,HASH_MAPPED +SAMAN,212128.jpg,jhpark14.jpg,RENAMED,박종환,jhpark14@samaneng.com,ed57966660ef436ca1dd5aded7398e25f3404f83e681d2209e7d306a1b517625.jpg,HASH_MAPPED +SAMAN,223345.jpg,jhpark8.jpg,RENAMED,박종훈,jhpark8@samaneng.com,a4e55fd98ad1defb7064e859c6c290a3310d61faa9333e7e00a0fb51022af278.jpg,HASH_MAPPED +SAMAN,221148.jpg,jkpark3.jpg,RENAMED,박주경,jkpark3@samaneng.com,7e0a23e9e50195d3b8d530673186eaa0f67266c53af47cc237a68b72c22c2bfc.jpg,HASH_MAPPED +HANMAC,M22006.jpg,jhpark13.jpg,RENAMED,박주한,jhpark13@hanmaceng.co.kr,4c16607ed727c1d425ece71868e20c03a9c46eedd1e9f6f856ebd43b6e91f4a2.jpg,HASH_MAPPED +HANMAC,M25074.jpg,jdpark.jpg,RENAMED,박준동,jdpark@hanmaceng.co.kr,736d27ba58a65b5fa3cf48f59767f9dfe3eb9787a691a34fce3a596af1c62def.jpg,HASH_MAPPED +SAMAN,224015.jpg,jspark8.jpg,RENAMED,박준서,jspark8@samaneng.com,fe55ef6e8dca1470f6f888589bca9ed41e77467ad8adac8089c33afa7675b08f.jpg,HASH_MAPPED +SAMAN,220213.jpg,jspark.jpg,RENAMED,박준석,jspark@samaneng.com,8a81b42e9a148152f5c636ddaafd900bc9bf3544a9c93e7c67fc2dbca5aeb6e0.jpg,HASH_MAPPED +SAMAN,207172.jpg,jspark7.jpg,RENAMED,박준성,jspark7@samaneng.com,e22e5d7a7fccc2f4a34a32a86681d1ca8be68df0232b7834107e6c0a10bfc56f.jpg,HASH_MAPPED +SAMAN,223150.jpg,jypark1.jpg,RENAMED,박준영,jypark1@samaneng.com,5f8cae2ca9b27083658b08282465f655cd5b1a7aed968ae565eca8243d13f167.jpg,HASH_MAPPED +SAMAN,223379.jpg,jypark4.jpg,RENAMED,박준영,jypark4@samaneng.com,093d38e4aeb5608777bd96ca1a553822767c3860fd2570b4282cdf6822a8b1b9.jpg,HASH_MAPPED +SAMAN,225158.jpg,jypark6.jpg,RENAMED,박준영,jypark6@samaneng.com,4cae9cee7444debcfb2fb8fd7bc10207f2d8a504b261376df2fb26c4df2dea17.jpg,HASH_MAPPED +SAMAN,221305.jpg,jhpark1.jpg,RENAMED,박준호,jhpark1@samaneng.com,22cd0d157c4b333b16ef543ab6e4fa0aa8a63c5508258378163dc54106b9a852.jpg,HASH_MAPPED +SAMAN,223012.jpg,jhpark6.jpg,RENAMED,박준호,jhpark6@samaneng.com,d83be09d0feaab72c6f8e041b7faf171775799df0d5545eef0714b7a0ed2a321.jpg,HASH_MAPPED +SAMAN,025073.jpg,jnpark.jpg,RENAMED,박지나,jnpark@samaneng.com,d33031bc6b9c4d79bd737993f11803b6ce1d99d4e1ba2d27b7ae5be7718e72c1.jpg,HASH_MAPPED +SAMAN,223031.jpg,jypark.jpg,RENAMED,박지연,jypark@samaneng.com,916d8aad2d3103a8667d634044a96c25db0e9c9306bdbf26f40dbc023976e6b1.jpg,HASH_MAPPED +HANMAC,M21438.jpg,jypark7.jpg,RENAMED,박지영,jypark7@hanmaceng.co.kr,1ea53af5a8bef9f7c18a32d1f8379de7f685c952734293a1d9ee66496e12e3fd.jpg,HASH_MAPPED +PTC,P25301.jpg,jwpark1.jpg,RENAMED,박지우,jwpark1@brsw.kr,460dfeab47c2a56afe7dfe138d561447932c41a332433bf8b5fcede93e03df28.jpg,HASH_MAPPED +SAMAN,220040.jpg,jwpark2.jpg,RENAMED,박지원,jwpark2@samaneng.com,ae95484a07e84e244fbe50f557f009b5d1d44adb69ee9fcc5293dde61b4d1213.jpg,HASH_MAPPED +SAMAN,224058.jpg,jepark1.jpg,RENAMED,박지은,jepark1@samaneng.com,b8270ace5e4bae48d687e0af4f9eeb7e374eb97b243d6fd55330f36e1199c96e.jpg,HASH_MAPPED +SAMAN,225087.jpg,jhpark9.jpg,RENAMED,박지현,jhpark9@samaneng.com,311e85a4f4f121ae5cde4fe4c382c4afd4551ad92dc6139be5e6d8b475dd2c89.jpg,HASH_MAPPED +SAMAN,226064.jpg,jhpark10.jpg,RENAMED,박지훈,jhpark10@samaneng.com,b5c6bc02e107286cecd6bdaba9de91c1214d9057fe71c564715dbe3a610b1fb8.jpg,HASH_MAPPED +SAMAN,220190.jpg,jpark.jpg,RENAMED,박진,jpark@samaneng.com,515e559aaf23ee00846c223105496f9ab0bbfcf323772c0a2fa7caab848d1a17.jpg,HASH_MAPPED +SAMAN,213057.jpg,jkpark1.jpg,RENAMED,박진규,jkpark1@samaneng.com,f60d630a6f73146e1b985705eba44323b367335ec68db839b4f400bcbdcaf8b7.jpg,HASH_MAPPED +SAMAN,221302.jpg,jkpark4.jpg,RENAMED,박진규,jkpark4@samaneng.com,eae98775d02aa792f79f9c59626aa549f32005a6e6c669d09a58c6f153127ecf.jpg,HASH_MAPPED +SAMAN,203096.jpg,cjpark.jpg,RENAMED,박찬제,cjpark@samaneng.com,c4924aa84a855f4c0eed3c2022e27fce29cf3394eedaea853bbf1646785fddc4.jpg,HASH_MAPPED +SAMAN,224132.jpg,chpark1.jpg,RENAMED,박찬홍,chpark1@samaneng.com,d3f9a8ca3ee2eb5579a04979743a149e4b6821c6509ccef601b1cae222e0abcf.jpg,HASH_MAPPED +SAMAN,221146.jpg,chpark.jpg,RENAMED,박찬희,chpark@samaneng.com,7a699f16a83b1884dd8d33dfb780825d41d934623621727484a683f290e51a38.jpg,HASH_MAPPED +SAMAN,184002.jpg,cypark.jpg,RENAMED,박창열,cypark@samaneng.com,7b50ff2c4ed8ec9ebdcf20e0e0e6cfd298d3ff3b955da2b85b7ce7d91a7a049d.jpg,HASH_MAPPED +HANMAC,M24010.jpg,cjpark2.jpg,RENAMED,박창종,cjpark2@hanmaceng.co.kr,9792c68164479f1f29e69f21e53cd2e3e06abb3d46c431fa5894503c322e7bd9.jpg,HASH_MAPPED +HANMAC,B24026.jpg,cypark2.jpg,RENAMED,박채영,cypark2@brsw.kr,79b851505f8cba65a1fe1dd5f856571eaac298bfcbbe541ee820737cd4b5d892.jpg,HASH_MAPPED +SAMAN,220092.jpg,cwpark.jpg,RENAMED,박천원,cwpark@samaneng.com,aea0478a0e9e8d44f8da3fcc066bbd164df74889bf94b7a778345e3cc9ea85c0.jpg,HASH_MAPPED +SAMAN,216167.jpg,cspark1.jpg,RENAMED,박철승,cspark1@samaneng.com,13ee8e26a66cea416f1cfe35acfe7780a294ad05c805e3b65fca1b4859bdff8d.jpg,HASH_MAPPED +HANMAC,M17503.jpg,cspark2.jpg,RENAMED,박춘선,cspark2@hanmaceng.co.kr,58a36b1f461ad9f3d9d3ee6a399609e6c4c301dd3ca837140e4b14905e97e9ce.jpg,HASH_MAPPED +SAMAN,205240.jpg,cspark.jpg,RENAMED,박춘식,cspark@samaneng.com,c988c892d3a21bbf78d6cd0add2d90593d1841663c0fd308593403d2278a7cfd.jpg,HASH_MAPPED +SAMAN,225060.jpg,cypark1.jpg,RENAMED,박치영,cypark1@samaneng.com,6c3e1f8ff3e40ff3b528a90c659b0f2c0498d53ee44556aa3e7a341c42bdd4d6.jpg,HASH_MAPPED +HANMAC,M21444.jpg,tkpark.jpg,RENAMED,박택규,tkpark@hanmaceng.co.kr,8c4dca7ae7a0bca2a24c1c1ab4e7f4a39347234fa06a4c2dd8121c8051121478.jpg,HASH_MAPPED +SAMAN,024091.jpg,hypark2.jpg,RENAMED,박하연,hypark2@samaneng.com,0a0a2792ec3289523f509ffd3d1f4a6e8af50ef709a96a2d80a79d66a366daaf.jpg,HASH_MAPPED +SAMAN,226101.jpg,hkpark4.jpg,RENAMED,박해균,hkpark4@samaneng.com,40742808d596dd3c46e2a125bb29eabd00d648362d292fbe0d0114f9af743cd9.jpg,HASH_MAPPED +SAMAN,223238.jpg,hlpark.jpg,RENAMED,박해림,hlpark@samaneng.com,6430c8ee4d5da25f768049e6ee36800a0b08bb049f24e0bfdc962f78fd7e5eb1.jpg,HASH_MAPPED +SAMAN,203095.jpg,hkpark.jpg,RENAMED,박현구,hkpark@samaneng.com,84829aeb7661f43a342a76e835a91610a8c817d8572c4f4736b54328ed7df806.jpg,HASH_MAPPED +SAMAN,220020.jpg,hkpark1.jpg,RENAMED,박현규,hkpark1@samaneng.com,80ea288649daf9d4efc037771c77a54648fa1d72c5c72b3148d20d6017878fb7.jpg,HASH_MAPPED +SAMAN,222255.jpg,hkpark2.jpg,RENAMED,박현규,hkpark2@samaneng.com,11272ccaddc67e588f1130b32984881cf4312e62468cdf436cc1507a50f6af88.jpg,HASH_MAPPED +SAMAN,220035.jpg,hgpark.jpg,RENAMED,박현근,hgpark@samaneng.com,dc3e583010ea1493a4047e3388d22b6387f18c6c3cd71179fc86e4b365489d6f.jpg,HASH_MAPPED +SAMAN,225148.jpg,hbpark.jpg,RENAMED,박현배,hbpark@samaneng.com,eb28b6262bb9b48e098b6997f6cb2d957dcd8b083af15008e4a016df6a03672d.jpg,HASH_MAPPED +SAMAN,207241.jpg,hspark1.jpg,RENAMED,박현수,hspark1@samaneng.com,3757a2046b72efb03680f5fb2868301901dbf044b9c066404ec432875e46e05c.jpg,HASH_MAPPED +HANMAC,M24084.jpg,hopark.jpg,RENAMED,박현옥,hopark@hanmaceng.co.kr,ed79b7f34ba36405ed18dfa5aafcbe1f48d02a506c5ebf0c1353f4609da2008e.jpg,HASH_MAPPED +SAMAN,225277.jpg,hjpark.jpg,RENAMED,박현준,hjpark@samaneng.com,a477d7b69235fa833523bb5d64de5520bc9eb6ac2c6fbf328f6dc2aa70998454.jpg,HASH_MAPPED +SAMAN,223239.jpg,hypark1.jpg,RENAMED,박형열,hypark1@samaneng.com,f78f97008a6c7407712cd823ace431d75460a8a894459798573506f9910d2fce.jpg,HASH_MAPPED +SAMAN,025126.jpg,hrpark2.jpg,RENAMED,박혜란,hrpark2@samaneng.com,b3b7372e5a15bb81ad8abc3d4b3561bbac635e50450201a2a693eaf3d377a88d.jpg,HASH_MAPPED +SAMAN,224136.jpg,hkpark3.jpg,RENAMED,박호국,hkpark3@samaneng.com,d856524d5edcd28e47fa482994b91a8166f8d5310b8e53fd20072fd0bae8a61a.jpg,HASH_MAPPED +SAMAN,219091.jpg,hspark3.jpg,RENAMED,박호식,hspark3@samaneng.com,588b22e05b25428b81cdac942aee28d06e6da987429f59af783734dbb6ea6d36.jpg,HASH_MAPPED +SAMAN,224215.jpg,hypark.jpg,RENAMED,박호연,hypark@samaneng.com,162390c948601cdd8cda22aba04569342e8f95fc2b83651f8cdb9b795dcbde53.jpg,HASH_MAPPED +HANMAC,M22064.jpg,hjpark2.jpg,RENAMED,박호진,hjpark2@hanmaceng.co.kr,83b3c0d0332fd56bb7d58e55189e6264b701b248e9fc195f05052b0df1fbef6d.jpg,HASH_MAPPED +SAMAN,216023.jpg,hcpark.jpg,RENAMED,박희찬,hcpark@samaneng.com,9b4910fbedc49a45ede9fe36b17e846d7384f189c667b3371bc69ecee7ac5e49.jpg,HASH_MAPPED +SAMAN,216083.jpg,ysban.jpg,RENAMED,반용섭,ysban@samaneng.com,4bf6cf09d5b89fcdad4a962cd8fce20f865d2a37daa623ecb89f29280571e4c9.jpg,HASH_MAPPED +HANMAC,M21407.jpg,jkban.jpg,RENAMED,반진관,jkban@hanmaceng.co.kr,fec3124ef1c3df1432210d8781d4d137c558c1d957719d251527d19a4ffb4d85.jpg,HASH_MAPPED +SAMAN,219126.jpg,nsbang.jpg,RENAMED,방노성,nsbang@samaneng.com,486b645c8ff2b8284ded792c26079371343f51cbdbac3f69f0761c613993abd9.jpg,HASH_MAPPED +SAMAN,223023.jpg,sjbang.jpg,RENAMED,방승준,sjbang@samaneng.com,b7c48cec5ea806dd3edc16be63c52cefa3cef768678a05da7ca480b7e501e054.jpg,HASH_MAPPED +SAMAN,221153.jpg,sybang1.jpg,RENAMED,방시영,sybang1@samaneng.com,15ac64aa79ccc64a4abaf2b2675fcfddece088333c7399b3875da7fddc98a447.jpg,HASH_MAPPED +SAMAN,222075.jpg,cjbang.jpg,RENAMED,방찬종,cjbang@samaneng.com,1c894d9e2bdb87f8ec3b653d7ccbc6a964d2122d30cda972a012da0d9f0c5dc6.jpg,HASH_MAPPED +SAMAN,226024.jpg,kmbae.jpg,RENAMED,배경민,kmbae@samaneng.com,781473f01cddbba14d39b8d3da300190d2619f25c9f0909c31d656e13670e2c7.jpg,HASH_MAPPED +SAMAN,220173.jpg,ktbae.jpg,RENAMED,배경태,ktbae@samaneng.com,8d9dd0e864a59d484df5889b878c145a0fa02effff7a5ddce18742f736669f09.jpg,HASH_MAPPED +SAMAN,223066.jpg,ksbae.jpg,RENAMED,배기석,ksbae@samaneng.com,b74be69d0c53a017b3da19756b9ca5d0d526e5c605e6b23f38df242793182618.jpg,HASH_MAPPED +SAMAN,225172.jpg,gmbae.jpg,RENAMED,배길민,gmbae@samaneng.com,1581712282cf3e1821ce745a47e6ed3fab9005cb53a5547a8c9ef05a316d1710.jpg,HASH_MAPPED +SAMAN,209263.jpg,dhbae.jpg,RENAMED,배도희,dhbae@samaneng.com,e4105f156f39f4e9dd17b694040a562c9f6f5805cf6897f21960350bef586869.jpg,HASH_MAPPED +PTC,P19204.jpg,mgbae.jpg,RENAMED,배문교,mgbae@brsw.kr,2afb31f326f788b6711866eb3dbdd8bfc88965d144b8f6b73ffd301d09ad9ba8.jpg,HASH_MAPPED +SAMAN,025134.jpg,mkbae.jpg,RENAMED,배민경,mkbae@samaneng.com,b6c949e0465a84e488d9c9b1d501244ac29067e57b1c0f0ee7841e184efa9099.jpg,HASH_MAPPED +SAMAN,216057.jpg,msbae.jpg,RENAMED,배민식,msbae@samaneng.com,430302b66b6260ea13de91d952eb15521cb8dba671a53dd911ffec330a4c74f4.jpg,HASH_MAPPED +SAMAN,204305.jpg,bgbae.jpg,RENAMED,배병관,bgbae@samaneng.com,7d540aeb673180cad6c5c87064abf93ac5d13a197b6fdda3b8bf4941d907863a.jpg,HASH_MAPPED +SAMAN,207089.jpg,btbae.jpg,RENAMED,배병탁,btbae@samaneng.com,7ed460189771776b50f5b76f640989da6f9be029e3670160becfa721eaf93201.jpg,HASH_MAPPED +SAMAN,215032.jpg,swbae.jpg,RENAMED,배상우,swbae@samaneng.com,8ba6ee3da4cf9f2bbd36e1dffef8e137e7b1c1815b369eb86ea51254a0fb8cc9.jpg,HASH_MAPPED +SAMAN,213027.jpg,shbae.jpg,RENAMED,배승환,shbae@samaneng.com,0567b19eab6a54b27d9c9b5cd657c08c5906a5e06dc8839960fabe19677a0930.jpg,HASH_MAPPED +SAMAN,217056.jpg,ehbae.jpg,RENAMED,배을호,ehbae@samaneng.com,e7030270208b6ece429dd50d6b6d3bae2d2a2bd64b2ef5acf1a833a8c106cbcf.jpg,HASH_MAPPED +SAMAN,026062.jpg,jbbae.jpg,RENAMED,배정빈,jbbae@samaneng.com,e807a0bc0fa650f4526bcc794aabf3c03c5a008e58f0ac6aa5000cf59e9349bd.jpg,HASH_MAPPED +SAMAN,223058.jpg,sdbae.jpg,RENAMED,배정원,sdbae@samaneng.com,1d49c38412ba18a3bc96ef098bfe1ce6926d9aee6e78924715042dc391cc336f.jpg,HASH_MAPPED +SAMAN,219089.jpg,jsbae.jpg,RENAMED,배준식,jsbae@samaneng.com,d7fb4322808cf7abf39e1c31a8fbe41a27fa7e48be845512f68fa3231ea4756f.jpg,HASH_MAPPED +SAMAN,025077.jpg,jwbae.jpg,RENAMED,배지원,jwbae@samaneng.com,cf214d59e3b9446d5bd8b5559aaafd018d56fbfff8ff1c91857c6ddc6d64036e.jpg,HASH_MAPPED +SAMAN,220155.jpg,jybae.jpg,RENAMED,배지윤,jybae@samaneng.com,4ae768ca486da7d574b95894f3db16b032fce65a7eb5ba5fac3ab5a686793dad.jpg,HASH_MAPPED +SAMAN,225073.jpg,jhbae.jpg,RENAMED,배지혁,jhbae@samaneng.com,6975c4f137fd037ba2cc25924fa1c007f97e73eb4f51c74a4e0eb132f12e9fb4.jpg,HASH_MAPPED +HANMAC,M24073.jpg,jwbae2.jpg,RENAMED,배진우,jwbae2@hanmaceng.co.kr,dff5895206bed033343e6dbcb7654756cad630beff745e2b6a3118543c3324d1.jpg,HASH_MAPPED +SAMAN,207062.jpg,ckbae.jpg,RENAMED,배창국,ckbae@samaneng.com,da24acb02aebf9aa906eba872f8ce213dea081eeab01e9701ed569aeb663be66.jpg,HASH_MAPPED +SAMAN,222131.jpg,hsbae.jpg,RENAMED,배한수,hsbae@samaneng.com,e8f1362b5ffd5426fe1acfb4fbf673f0752cf2b280cf7f1a7729682b5212231e.jpg,HASH_MAPPED +SAMAN,215074.jpg,hwbae.jpg,RENAMED,배형원,hwbae@samaneng.com,24ad62c0ba3f22f38173ce382aeac63e4688bc7e1440e975bf4c83acf9ca83ab.jpg,HASH_MAPPED +HANMAC,M23001.jpg,ghbeak.jpg,RENAMED,백건휘,ghbeak@hanmaceng.co.kr,b63573afaaacf7ccae73cf962f9c58576b756d5f364dcfacca24c85bb80dd978.jpg,HASH_MAPPED +SAMAN,223152.jpg,sgbaek.jpg,RENAMED,백순교,sgbaek@samaneng.com,255340767a06494d0e88a69f527ac1e72ba8c3dde97ad7641f2ef71fb4a0a24f.jpg,HASH_MAPPED +SAMAN,223045.jpg,scbaek.jpg,RENAMED,백순철,scbaek@samaneng.com,a7b3bb79f9b8cc09840f41fc9a03525d06dfb5cf5987687c884c6532698e543d.jpg,HASH_MAPPED +SAMAN,225319.jpg,smbaek.jpg,RENAMED,백승민,smbaek@samaneng.com,7b1e2a7e50ccb8e30d81c7e258435557bdc0f6c844ea4f791016b314b8b45b2b.jpg,HASH_MAPPED +SAMAN,226104.jpg,sbbaek.jpg,RENAMED,백승범,sbbaek@samaneng.com,be53d310c337ad3714ece902d4134083ba103e2b8cb4585f42adb30a7fe18b3e.jpg,HASH_MAPPED +SAMAN,224352.jpg,shbaek1.jpg,RENAMED,백승혁,shbaek1@samaneng.com,eda780a48cc3b2a97315a661d95d8bbdc820d6a6cd6c93092e2b244e8a79eece.jpg,HASH_MAPPED +SAMAN,220067.jpg,shbaek.jpg,RENAMED,백승희,shbaek@samaneng.com,35fb400ccfb207a13630ce837dbfa412d7b74b4af5a0598615909544928053bb.jpg,HASH_MAPPED +SAMAN,224162.jpg,yubaek.jpg,RENAMED,백예은,yubaek@samaneng.com,f66e58c8713d5e2e0b119a22075a83b8e07961631c7f9a136fa2a3f8225a3b3f.jpg,HASH_MAPPED +SAMAN,222209.jpg,wgbaek.jpg,RENAMED,백운기,wgbaek@samaneng.com,c06051d117bb1bb88a224323b4e14f1587ec96a19cbbc53202223f2396dc3a6c.jpg,HASH_MAPPED +SAMAN,215085.jpg,uybaek.jpg,RENAMED,백운영,uybaek@samaneng.com,5b42fd9c8146783f04b954d8a416806cd03d34770ac579897f54f9e7a1c81c6c.jpg,HASH_MAPPED +SAMAN,026011.jpg,jhbaek.jpg,RENAMED,백주희,jhbaek@samaneng.com,e23e414d8ce19df90563397a2be108397bed80fc8656de59758771b304f4cfd4.jpg,HASH_MAPPED +SAMAN,217075.jpg,tybaek.jpg,RENAMED,백태용,tybaek@samaneng.com,7206b42643893dbcdaed0a5a13b773fdd16969970f749cc0046f6dc07e3c927a.jpg,HASH_MAPPED +SAMAN,182003.jpg,hsbaek.jpg,RENAMED,백효석,hsbaek@samaneng.com,fbc6c8aa3c16b996207768d8d619cdcf3ad9771b4116a115a202f18050086d8d.jpg,HASH_MAPPED +SAMAN,025058.jpg,hkbaek.jpg,RENAMED,백희경,hkbaek@samaneng.com,bd87b1fb6a4fd40b8bd25b5b9c3c300b358f49306b49d42a3d7c8903f67304e4.jpg,HASH_MAPPED +SAMAN,189517.jpg,hsbaik.jpg,RENAMED,백희선,hsbaik@samaneng.com,0641c1c19022be4a90ac8ab828d2d1d167902528abd8af76bc78d632bf57ed92.jpg,HASH_MAPPED +SAMAN,218073.jpg,ksbyun.jpg,RENAMED,변기상,ksbyun@samaneng.com,f9cdd7b7f3c8aee24802deac3dc44526570d33d684852ec7cbdd38302cb391af.jpg,HASH_MAPPED +SAMAN,226048.jpg,swbyun.jpg,RENAMED,변상우,swbyun@samaneng.com,84c1f7f0a06bf2759c188dba4712f8304ab5d9c9cbd050e74653c537959bf3a4.jpg,HASH_MAPPED +SAMAN,223034.jpg,shbyeon.jpg,RENAMED,변상현,shbyeon@samaneng.com,9101990efc1a12404b164b0a35a073517a38b1c28af06a6402a004cbabe8a8f5.jpg,HASH_MAPPED +SAMAN,225290.jpg,sjbyun.jpg,RENAMED,변성주,sjbyun@samaneng.com,1f317ed1131338cf2884c108c6ae95bf4adec3fae8741e4697e3b18e407c486c.jpg,HASH_MAPPED +SAMAN,225108.jpg,scbyeon.jpg,RENAMED,변성철,scbyeon@samaneng.com,91ddff2b653b4e16b7214626219fb663db442f4556bc48cc48a7cc7e942ca014.jpg,HASH_MAPPED +SAMAN,217159.jpg,ykbyun.jpg,RENAMED,변역근,ykbyun@samaneng.com,990da8144923cafb3c19c75738f2d6315ca5f001e8a7d649921ca4e5d1852380.jpg,HASH_MAPPED +SAMAN,225306.jpg,jsbyun.jpg,RENAMED,변정석,jsbyun@samaneng.com,7850aea1aef8df2c9f7195f1eae14b9c31da7790e80d9a228b7c99b4df071744.jpg,HASH_MAPPED +SAMAN,224361.jpg,jgbyun.jpg,RENAMED,변정안,jgbyun@samaneng.com,8155d429252f0e0588d0e9ba71f92c1d580d9b40f40c29baf9b4a97efb2b69f3.jpg,HASH_MAPPED +SAMAN,222034.jpg,jwbyun.jpg,RENAMED,변정운,jwbyun@samaneng.com,2c9dd4726356acc6d39fb9b2e08ad9c4b5f1fd26f6877cf8bf95929548d507c9.jpg,HASH_MAPPED +HANMAC,M22057.jpg,hsbyoun.jpg,RENAMED,변한석,hsbyoun@hanmaceng.co.kr,412eb48a716791bb31a2a0ae1ab3104ab11f715a17698684038d53b0184a4aad.jpg,HASH_MAPPED +SAMAN,222193.jpg,jcbok.jpg,RENAMED,복진청,jcbok@samaneng.com,6d7d67e083e36e1ba1594bbcf6e6e8be656241e81f01fd81ffdca7a8dbe69434.jpg,HASH_MAPPED +SAMAN,221238.jpg,jhbok.jpg,RENAMED,복진훈,jhbok@samaneng.com,c22969da0bea93588cee0631cd098dd4a0adc8fd8f6e43a45e8dad605061d0aa.jpg,HASH_MAPPED +SAMAN,225046.jpg,gseo.jpg,RENAMED,서건,gseo@samaneng.com,8d67b8775553eacac2c2fa8f311f792af86e80760ea526faf168677e2769bac3.jpg,HASH_MAPPED +SAMAN,218076.jpg,ksseo.jpg,RENAMED,서경석,ksseo@samaneng.com,8cad6b40f6c21a77d4076f49c65b26d9514cd3c669238ea22d9777cb76256a13.jpg,HASH_MAPPED +SAMAN,223110.jpg,ksseo1.jpg,RENAMED,서기섭,ksseo1@samaneng.com,c29274df10138f521652535fa203ef65fdb8ac4726a53206c12474671a680f14.jpg,HASH_MAPPED +HANMAC,M23035.jpg,nhseo.jpg,RENAMED,서남호,nhseo@hanmaceng.co.kr,5c0cbcded47d33518ca9284af9323e01edee15d58480e01a8f89f4b1e303fd42.jpg,HASH_MAPPED +SAMAN,223132.jpg,dsseo1.jpg,RENAMED,서동석,dsseo1@samaneng.com,89693c94926139132c67af034db62f5a23f2c7b763f576b3219eb928482a44b7.jpg,HASH_MAPPED +SAMAN,216132.jpg,dsseo.jpg,RENAMED,서동수,dsseo@samaneng.com,f583baee6aafc7d689b90240d1474b44f8a1f82ae920a548feea87bd97bb157a.jpg,HASH_MAPPED +SAMAN,224037.jpg,diseo.jpg,RENAMED,서동일,diseo@samaneng.com,e931f931fd8218235795c070fa13076578dbab68f92c80206c412dd2c28767be.jpg,HASH_MAPPED +SAMAN,224146.jpg,djseo.jpg,RENAMED,서동진,djseo@samaneng.com,fa2256c9b640c8432397b2accefd60cd35536a1cb7d9c6e03900e5dc568848c8.jpg,HASH_MAPPED +HANMAC,B24023.jpg,dhseo.jpg,RENAMED,서동해,dhseo@brsw.kr,01aa5d0991b42c77f25c3dc247c17908f923466da2d2a696a6ff3b64c627c0b1.jpg,HASH_MAPPED +SAMAN,215096.jpg,msseo.jpg,RENAMED,서민수,msseo@samaneng.com,5997a7c875a281ba2d4843e7bb020693451b739dec0a86c92eaa0430d6039911.jpg,HASH_MAPPED +HANMAC,M12207.jpg,bcseo.jpg,RENAMED,서병철,bcseo@hanmaceng.co.kr,56bba3848341ebf5ea991b9aeaf585f007ae9f03fa6d6869ec550818a8dc33dd.jpg,HASH_MAPPED +HANMAC,M20513.jpg,smseo.jpg,RENAMED,서상모,smseo@hanmaceng.co.kr,88d715f65144c5a8472521b8e57a26b13d074fb9213c42c945e7539982f1af8f.jpg,HASH_MAPPED +HANMAC,M01103.jpg,syseo.jpg,RENAMED,서성열,syseo@brsw.kr,800f27f7f22badc98bf7f72ada4bdfbff5b0d3b58f3d2653dd47a160c2d248eb.jpg,HASH_MAPPED +SAMAN,226149.jpg,scseo1.jpg,RENAMED,서세창,scseo1@samaneng.com,33e826f20c05331be6137bd2d1ab9706239e91517c89a8b86cad86b1a21cde5f.jpg,HASH_MAPPED +SAMAN,199031.jpg,siseo.jpg,RENAMED,서순임,siseo@samaneng.com,4d04dd863cc894c47bceef0784327e7e68dfcf214659e1f4abd2cd4a9f029a89.jpg,HASH_MAPPED +HANMAC,M21425.jpg,scseo.jpg,RENAMED,서순창,scseo@hanmaceng.co.kr,f385f7e8879027daf6b7340814f7c1a99eb7b37413ca4d6b6bfadb8f976cc982.jpg,HASH_MAPPED +SAMAN,223135.jpg,swseo.jpg,RENAMED,서승완,swseo@samaneng.com,eb044628fe593a1944d3c348b3bda30c142835ff2650cdb7b4fc9e7ab26453f5.jpg,HASH_MAPPED +SAMAN,203288.jpg,spseo.jpg,RENAMED,서승필,spseo@samaneng.com,701dcb4a33195ed774ccf29b9dbac59a3874e1159814649cc1b3d42c376d5972.jpg,HASH_MAPPED +SAMAN,192012.jpg,yjseo.jpg,RENAMED,서영제,yjseo@samaneng.com,03ca40e3b0a09578c334267124464dedd89ca13d9080347bf9a1e6ef24a5d18c.jpg,HASH_MAPPED +SAMAN,221229.jpg,wbseo.jpg,RENAMED,서우빈,wbseo@samaneng.com,4b47d5972e651812132595ba42d2c480584dfba5b9e441ff2861636aee885d22.jpg,HASH_MAPPED +HANMAC,M24046.jpg,wsseo.jpg,RENAMED,서우석,wsseo@hanmaceng.co.kr,513b2b11aa5441aeaaf36455fffbb9da4710982934fa056c99e5b3d66d4b651e.jpg,HASH_MAPPED +SAMAN,225192.jpg,ydseo.jpg,RENAMED,서유동,ydseo@samaneng.com,e6babc7ab4c05697e3686d61025b271c727ec8b298833ee3a6be8da6b6417889.jpg,HASH_MAPPED +SAMAN,025070.jpg,yhseo.jpg,RENAMED,서윤회,yhseo@samaneng.com,19010473770f4d0c47f02dda4c7e4a330c8cd43724824f6d81a9b5494442d7ae.jpg,HASH_MAPPED +SAMAN,024101.jpg,easeo.jpg,RENAMED,서은애,easeo@samaneng.com,209761836a9276f41ff214efdd3034dcfeaa3ff422f12ed576b5451be088799e.jpg,HASH_MAPPED +SAMAN,221155.jpg,jhseo2.jpg,RENAMED,서재희,jhseo2@samaneng.com,018646891536dcf3be53ff71e0fd8dc84b27138ba7447a55f02a06caa4d2908a.jpg,HASH_MAPPED +SAMAN,026074.jpg,jmseo.jpg,RENAMED,서정민,jmseo@samaneng.com,2a6f8c87f9a45b52e85f9b5ad55fea3686633bf7b60454f317db835d06a52b67.jpg,HASH_MAPPED +SAMAN,225033.jpg,jaseo.jpg,RENAMED,서정아,jaseo@samaneng.com,16b0df5964299333f30d593c4bcb3000f4c5b3b7f390d39cff6cda89490cec7f.jpg,HASH_MAPPED +SAMAN,218031.jpg,jtseo.jpg,RENAMED,서정택,jtseo@samaneng.com,1f743cb8ee9ac2e4a36cb6ca3b36af5ebaf13e844b67c195c70076319f636ef0.jpg,HASH_MAPPED +SAMAN,225029.jpg,twseo.jpg,RENAMED,서태원,twseo@samaneng.com,1aba49f3d722bf2f819b97db9407ad1c2516fac10fbb6b17507731e7c33860db.jpg,HASH_MAPPED +SAMAN,221009.jpg,hyseo.jpg,RENAMED,서하연,hyseo@samaneng.com,49c6c50ef45693cd073dc8a130b6cca171edd8b2d2cc998c71547740fd7e43e0.jpg,HASH_MAPPED +SAMAN,226005.jpg,hoseo.jpg,RENAMED,서현오,hoseo@samaneng.com,057c21aa8123a690a9a7625888ee72cca19e6361fb52e228aea544224b615dbf.jpg,HASH_MAPPED +HANMAC,B15203.jpg,hoseo2.jpg,RENAMED,서현옥,hoseo2@hanmaceng.co.kr,d2a7b3653b565fa069a63ab50b96c7fe96c07b4459046450877283f055f90e2c.jpg,HASH_MAPPED +SAMAN,224054.jpg,ywsuk.jpg,RENAMED,석융원,ywsuk@samaneng.com,caebc88637fefd0a01394ccb96aa6688921067cb6a07aef6afb974d117e68bf2.jpg,HASH_MAPPED +SAMAN,222019.jpg,jwseok.jpg,RENAMED,석재우,jwseok@samaneng.com,79bab7c79f68d90f95d1d7ba78c8b74d9acbf520a35845f325daa8ee754e49f4.jpg,HASH_MAPPED +SAMAN,193024.jpg,hjsun.jpg,RENAMED,선현진,hjsun@samaneng.com,801f7435c5c1ea42b53ee112a3156d17d48d88bcc3e9a0e76185af37e4987741.jpg,HASH_MAPPED +HANMAC,M24014.jpg,mhseol.jpg,RENAMED,설문형,mhseol@hanmaceng.co.kr,b905c15d7cc86cf54cc744fabfb771675260727d73e73c6148c7ed899ff2721e.jpg,HASH_MAPPED +SAMAN,226098.jpg,kksung.jpg,RENAMED,성기건,kksung@samaneng.com,d6b07e783fda17d7b38a119bb90168d4d5f80e1b483420d754ebf0e6fe0ba015.jpg,HASH_MAPPED +SAMAN,202181.jpg,gcsung.jpg,RENAMED,성기천,gcsung@samaneng.com,bcc3d6742155e68d35e0aea4807ddc49cdececf7b60d1d70527be1d7fa16a57b.jpg,HASH_MAPPED +SAMAN,196064.jpg,mssung.jpg,RENAMED,성몽식,mssung@samaneng.com,8c6ae506425fd5a43de128473be8cb4b31c3585e3a30c7cc94b26fedac3458d4.jpg,HASH_MAPPED +SAMAN,026025.jpg,bsung.jpg,RENAMED,성봄,bsung@samaneng.com,d270be6e6c52b6cfde055b98c5f184763f23bbab60eedc22aa3bc0ee31f58fe4.jpg,HASH_MAPPED +SAMAN,225373.jpg,shsung.jpg,RENAMED,성세현,shsung@samaneng.com,c8ea11467b9ae1203daf3038b018964e16042e9179f20bcab57a34802b02eda3.jpg,HASH_MAPPED +SAMAN,216101.jpg,yysung.jpg,RENAMED,성열용,yysung@samaneng.com,51e347117086bd0efac6565961ede9dc1c38d408423af270332ad3556d087866.jpg,HASH_MAPPED +SAMAN,225099.jpg,yjsung.jpg,RENAMED,성유정,yjsung@samaneng.com,63c95067cb254232eee39c9ab7a88e54f8fba91b93179c5e6802089e2c19b518.jpg,HASH_MAPPED +HANMAC,M06203.jpg,hisung.jpg,RENAMED,성형일,hisung@hanmaceng.co.kr,8c67f6c17f88028413f1478b50c04c17fc53010dd612e4e8565e77133f5fdd99.jpg,HASH_MAPPED +SAMAN,222016.jpg,dyso.jpg,RENAMED,소다연,dyso@samaneng.com,cbb77fb045bc4e94b187513bb27a2efec64124531ab4626009431b93aeba7534.jpg,HASH_MAPPED +SAMAN,222008.jpg,msso.jpg,RENAMED,소민수,msso@samaneng.com,970db819bd747db9b9eff2df0225d023136c325a6fd53ed3e9dd4e4d16d50cca.jpg,HASH_MAPPED +SAMAN,222069.jpg,sosoh.jpg,RENAMED,소순옥,sosoh@samaneng.com,40cdea54601b6a9585622a58bed7399ebf04171fcefec88dd56a80c96b65b165.jpg,HASH_MAPPED +SAMAN,224370.jpg,ysso.jpg,RENAMED,소윤섭,ysso@samaneng.com,9369474e6fa693898e3299a0a08ca23658838c9465c7b1db8202337e3a3b27b3.jpg,HASH_MAPPED +SAMAN,226006.jpg,ugso.jpg,RENAMED,소의건,ugso@samaneng.com,49a6b36f761e01285c43bc667d22cfa3831919f6bb8001da523c11a523b03425.jpg,HASH_MAPPED +SAMAN,226069.jpg,mdson.jpg,RENAMED,손명덕,mdson@samaneng.com,b04504fbff155e0b5d5326278b03b7f7db1aefce59f7069067b4139c09fbb16c.jpg,HASH_MAPPED +SAMAN,209102.jpg,mkson.jpg,RENAMED,손민기,mkson@samaneng.com,f08bd94c48b3b78857f5c121e713a991b1559b54b659d53e5c9dc3f925a4fe5c.jpg,HASH_MAPPED +SAMAN,225230.jpg,bsson.jpg,RENAMED,손봉수,bsson@samaneng.com,e732d6ef5885b1a67a6605e5393c40ab28e35cb37754477e438a3d50f27ddef2.jpg,HASH_MAPPED +SAMAN,221105.jpg,shshon.jpg,RENAMED,손석훈,shshon@samaneng.com,776b5d081697a026c8cc745e2f1fa0c4889a71b14640d69a466326608ab363b0.jpg,HASH_MAPPED +SAMAN,220157.jpg,stson.jpg,RENAMED,손성택,stson@samaneng.com,c00a0edf0e9073617afdd7c846e92a8cd476797d70e0ed625b265c754674fa0a.jpg,HASH_MAPPED +SAMAN,221204.jpg,yjson.jpg,RENAMED,손영준,yjson@samaneng.com,462f6d539975390593849ec1a876903b1879dbf41694aded658fd9f16259b47c.jpg,HASH_MAPPED +SAMAN,219155.jpg,wison.jpg,RENAMED,손원일,wison@samaneng.com,a1dc1cf7c73169e9252ff7e75ad3ce8083dd2024e80360d73713b50d29b3d516.jpg,HASH_MAPPED +SAMAN,223347.jpg,ehson.jpg,RENAMED,손은환,ehson@samaneng.com,addac39756a37cbe893cd928a81d7429272802c3605bff5efe73e80f010dbc2f.jpg,HASH_MAPPED +SAMAN,225142.jpg,imson.jpg,RENAMED,손일민,imson@samaneng.com,b3d1d88ad9972b5eb1b57caac5f83f406922359c8447dcddd415eccbe59f1525.jpg,HASH_MAPPED +HANMAC,M08306.jpg,jyson2.jpg,RENAMED,손재용,jyson2@hanmaceng.co.kr,868a50f9a1239a593c2c8f65f8e3e8f1ec00e3db2a3fd50cec7b0c4de7ab1d7f.jpg,HASH_MAPPED +HANMAC,B24022.jpg,jkson.jpg,RENAMED,손제근,jkson@brsw.kr,721ae7cd336f9208445e9a195c6c3867f93133157bc258d3a4440d17d7f29108.jpg,HASH_MAPPED +SAMAN,221177.jpg,jwson.jpg,RENAMED,손종욱,jwson@samaneng.com,ad3947459c1c79099d8e8c52907f880f5989f1bd9b2d88e9fca6d019f2cb0172.jpg,HASH_MAPPED +SAMAN,225091.jpg,jyson.jpg,RENAMED,손주열,jyson@samaneng.com,c4726ce6e4e19c5a7747ae46e39396093a6a2580ff462e9e37989025b7f8be6f.jpg,HASH_MAPPED +SAMAN,192022.jpg,jhson1.jpg,RENAMED,손주호,jhson1@samaneng.com,868d2b31c76406f10fee8457d50cd84cc5adb687de69d3deb90c74e4bbbf87e0.jpg,HASH_MAPPED +SAMAN,225031.jpg,jwsohn.jpg,RENAMED,손준우,jwsohn@samaneng.com,026d9771ddb5a08c259c617feccef39491703c8f2f2ecea09e8cbb9e922ead68.jpg,HASH_MAPPED +SAMAN,221083.jpg,jhsohn1.jpg,RENAMED,손준혁,jhsohn1@samaneng.com,15614e87b083e4e466a35bdcf598891a8469df9538e5d917e0e58b6b6adf68bb.jpg,HASH_MAPPED +HANMAC,M22055.jpg,jmson.jpg,RENAMED,손지민,jmson@hanmaceng.co.kr,3bfb5096885626f713fcd019c0eccbfeee38357f8795ace6f17010c143f650dd.jpg,HASH_MAPPED +SAMAN,221079.jpg,jsson.jpg,RENAMED,손진수,jsson@samaneng.com,e0cd8b1ba353da892f5b1f9ea2d82e47addc7e7a825907f88b52cb06f4f5206b.jpg,HASH_MAPPED +SAMAN,225284.jpg,cksohn.jpg,RENAMED,손창국,cksohn@samaneng.com,c3a213ac25cc372306110852be206752d71aec7c8ed254cc4dea6f7652b8c9ab.jpg,HASH_MAPPED +SAMAN,224046.jpg,clson.jpg,RENAMED,손채라,clson@samaneng.com,b0e10ea45ebcf43fb7a8b99900f8d3e6d33348ce9c05da7bee8e1c548599b295.jpg,HASH_MAPPED +SAMAN,204047.jpg,tsson.jpg,RENAMED,손태섭,tsson@samaneng.com,45453e2476d6becfcc8db06f2ec6a54d48c7991dba7f51ca95805411b8ce5e15.jpg,HASH_MAPPED +SAMAN,221001.jpg,kssong.jpg,RENAMED,송광수,kssong@samaneng.com,6168e8406d591291cb8827169f8c42e50d32bbcf61b0f0f9dec29949be1f7c1b.jpg,HASH_MAPPED +SAMAN,225226.jpg,gksong.jpg,RENAMED,송근광,gksong@samaneng.com,fb5cc121a29be79584ad510ff3063bb958112da7c2b5de7693ea7150ce8796ac.jpg,HASH_MAPPED +HANMAC,M07231.jpg,kysong.jpg,RENAMED,송기영,kysong@hanmaceng.co.kr,de5e0ec8d12f775f8f06bb03cd2c994913ae36fdff15b6d1a9ab5461200c9d56.jpg,HASH_MAPPED +SAMAN,209226.jpg,dwsong.jpg,RENAMED,송다운,dwsong@samaneng.com,65665c479b55c018600d5388ce72dc4b1f5a568b9e0f22b54969a76d9a72ec1e.jpg,HASH_MAPPED +HANMAC,B24014.jpg,disong.jpg,RENAMED,송대일,disong@brsw.kr,7a08ea5c1245c92060d75dab3124314253aeaf90c51fceb756184638bff7b4fc.jpg,HASH_MAPPED +SAMAN,222172.jpg,mjsong.jpg,RENAMED,송명주,mjsong@samaneng.com,c8ed74f69dd48bf18091d90021ab133c2e7573a834cb38775e113c0021f4e422.jpg,HASH_MAPPED +HANMAC,M25027.jpg,mssong.jpg,RENAMED,송미성,mssong@hanmaceng.co.kr,9adb149fe650f3bf286df308a4240382d98c3b50aa1a4368173c788bc92b95d8.jpg,HASH_MAPPED +SAMAN,219061.jpg,mksong1.jpg,RENAMED,송민경,mksong1@samaneng.com,e3987e0536001ddfbae334d99d7d18fbdd0396bfb3dcb1641b3fd2fc81d224ae.jpg,HASH_MAPPED +HANMAC,M22022.jpg,mjsong2.jpg,RENAMED,송민제,mjsong2@hanmaceng.co.kr,0ae541073736e808520195cb99908e2e34a48e4bf47c43175c126dea92a12219.jpg,HASH_MAPPED +SAMAN,221322.jpg,mcsong.jpg,RENAMED,송민철,mcsong@samaneng.com,08ec2771d8109695dc6655c4f27537fd3da03c0b595c4f439774e30c93b84917.jpg,HASH_MAPPED +SAMAN,219162.jpg,bhsong1.jpg,RENAMED,송백헌,bhsong1@samaneng.com,cb517d3299249c6c526ffc63ccfcf01dd59f1e9f652a22d109174cc7556b93fd.jpg,HASH_MAPPED +SAMAN,196067.jpg,bhsong.jpg,RENAMED,송병화,bhsong@samaneng.com,e7b06ba33759772ef8d45adb67d577fe3299ba5147d53f5faad8b6f2c9e792ed.jpg,HASH_MAPPED +SAMAN,222066.jpg,sgsong1.jpg,RENAMED,송삼규,sgsong1@samaneng.com,104c06eedd2d8a163fe462a8da66baf3ca2b65fa653d90c7ef47f9288b5cc426.jpg,HASH_MAPPED +SAMAN,223243.jpg,smsong.jpg,RENAMED,송상민,smsong@samaneng.com,532b7d8342cc6ad52fa140571bafac14376c5df5867fac31aef4fc4cf204c798.jpg,HASH_MAPPED +SAMAN,200003.jpg,sksong.jpg,RENAMED,송석근,sksong@samaneng.com,76c1976e1175f91f94b7700e3e7c02b4be7087adad4c7365ec41047a9b32e630.jpg,HASH_MAPPED +HANMAC,M16507.jpg,shsong2.jpg,RENAMED,송세화,shsong2@hanmaceng.co.kr,df0d0065af3c8f37a356d14b1e346fccdd0e3c0afebe13afe929c2720a792ba8.jpg,HASH_MAPPED +SAMAN,214024.jpg,shsong.jpg,RENAMED,송승호,shsong@samaneng.com,6dbb5ea1b6db13b05f7158488b427bdf4dc4d1ee9a630c6adfefda2fb24e037a.jpg,HASH_MAPPED +SAMAN,025072.jpg,ojsong.jpg,RENAMED,송옥주,ojsong@samaneng.com,a990421b1837cfa5c2317caf596b09ef79eca562e4d9d4ff51c71d769cb46a75.jpg,HASH_MAPPED +SAMAN,208141.jpg,ycsong.jpg,RENAMED,송용철,ycsong@samaneng.com,ac2a53608a7787f77240f00de0ce66d2fed45911b099832a923194553d4952f3.jpg,HASH_MAPPED +SAMAN,226097.jpg,ycsong1.jpg,RENAMED,송용철,ycsong1@samaneng.com,1d932fa67c2e35ea94de7d39aba118ae0a64194cf2b4086d562b763bb0854375.jpg,HASH_MAPPED +PTC,P22306.jpg,yssong1.jpg,RENAMED,송유석,yssong1@brsw.kr,3c1f6f2789ae634ca3e9ee7c9ff25bd67248e6f5c12bfb270b66091602e4e28b.jpg,HASH_MAPPED +HANMAC,M24017.jpg,jmsong.jpg,RENAMED,송재명,jmsong@hanmaceng.co.kr,5fa774261ba95062c1bcee36770bd9a385b34d159554efbf87986244951af644.jpg,HASH_MAPPED +SAMAN,223050.jpg,jhsong1.jpg,RENAMED,송주하,jhsong1@samaneng.com,36a90aa83d0c6ed407deab44b7ab266561570f619a4b3235d421268fddcd25cc.jpg,HASH_MAPPED +HANMAC,M25007.jpg,jhsong2.jpg,RENAMED,송주호,jhsong2@hanmaceng.co.kr,dda1d64bb7cce91033fc6abc836339436cdd836ea179ec53c2a7e925e11f41a8.jpg,HASH_MAPPED +SAMAN,223026.jpg,jhsong.jpg,RENAMED,송진호,jhsong@samaneng.com,3d2cc9e12254718d49546bc026b78faf5220941dc75afb9f64e3b047aef9f4d4.jpg,HASH_MAPPED +SAMAN,221162.jpg,hjsong.jpg,RENAMED,송호준,hjsong@samaneng.com,0003a71b2bed9667e9e1362da7ac69805acddddee53dbde3c0940b16af58e566.jpg,HASH_MAPPED +SAMAN,222083.jpg,ksshin1.jpg,RENAMED,신경섭,ksshin1@samaneng.com,b39bcdc1b82c35c0541c1caaf9679fedb465f60cf028e0c15c623ef60bfe9b3c.jpg,HASH_MAPPED +SAMAN,223207.jpg,kbshin.jpg,RENAMED,신계범,kbshin@samaneng.com,c32e58e1f6f3551d593d23765e59e705bb1607ded545954ef279ce119d4b2ae5.jpg,HASH_MAPPED +HANMAC,M04602.jpg,ksshin.jpg,RENAMED,신광수,ksshin@hanmaceng.co.kr,0d8a5eccd1d03016d09d09a813ca5fdf7136a69e6c45418f64069afc954daddc.jpg,HASH_MAPPED +SAMAN,213023.jpg,kcshin.jpg,RENAMED,신광철,kcshin@samaneng.com,a692ef22b4740cba8ffe85d4dc611dc704aa2c4ade9733f568f9663fefe079d8.jpg,HASH_MAPPED +SAMAN,222095.jpg,khshin.jpg,RENAMED,신광호,khshin@samaneng.com,571c0f64c61fc5fce3b6b1bce32cc5e509bb993f21b941d40768ffeac0426941.jpg,HASH_MAPPED +SAMAN,223002.jpg,khshin1.jpg,RENAMED,신기호,khshin1@samaneng.com,9bcbcef70fdebd7c92b246ae827df63bdfab4feb3e9a4bc4635aff5dce384ba8.jpg,HASH_MAPPED +SAMAN,208138.jpg,dhshin3.jpg,RENAMED,신대호,dhshin3@samaneng.com,5b633fcc85733c740d793f194e93903f613713a94d811bc193be10188bc25de2.jpg,HASH_MAPPED +SAMAN,202197.jpg,dhshin2.jpg,RENAMED,신도현,dhshin2@samaneng.com,1bb215a79a47da122476fd249228f1b1c951ad50a504f124ac4ac7447a47d23d.jpg,HASH_MAPPED +SAMAN,218043.jpg,dyshin.jpg,RENAMED,신동열,dyshin@samaneng.com,50446b0c95b46e53e36af571bd418cd4a2385c6c5bdaeb7379bc993c11040df2.jpg,HASH_MAPPED +SAMAN,208048.jpg,dwshin.jpg,RENAMED,신동옥,dwshin@samaneng.com,83b51b7cf0f5cd724b73bd9bb8c8932848b9849b96235af4e8806ef261678ee7.jpg,HASH_MAPPED +SAMAN,225166.jpg,dishin.jpg,RENAMED,신동인,dishin@samaneng.com,02363576d43fea80385fb4dafab0a347f18275ab7d9ab7e4752d3ee87ccbdccd.jpg,HASH_MAPPED +SAMAN,222063.jpg,dhshin1.jpg,RENAMED,신동호,dhshin1@samaneng.com,6fce1d307d774c298c308e102214350d2a169c52503fea17dc3cf76c26fd9a23.jpg,HASH_MAPPED +SAMAN,220050.jpg,dhshin.jpg,RENAMED,신동환,dhshin@samaneng.com,33db0c4cca4a90e45cf65308fe53b8ad6c8d0ebb067ec86331a923ae9ee2a26b.jpg,HASH_MAPPED +SAMAN,224317.jpg,dhshin4.jpg,RENAMED,신동훈,dhshin4@samaneng.com,e743f8299f5171b4e2b4d8781a677057c24d8efc65a0b591701504b4279fe281.jpg,HASH_MAPPED +SAMAN,226043.jpg,mssin1.jpg,RENAMED,신명석,mssin1@samaneng.com,da2eee6e3fc48fb89ee6b9bc639ad601c54676ec94c9aec418179a7ae94a5146.jpg,HASH_MAPPED +SAMAN,225356.jpg,msshin.jpg,RENAMED,신명식,msshin@samaneng.com,c36ffe1b6118d9f8fdce55bb9806a93ea6c7d6cc9f79aade0ab3c3d2f6bafdd2.jpg,HASH_MAPPED +SAMAN,225013.jpg,mjshin1.jpg,RENAMED,신명자,mjshin1@samaneng.com,9666ba5fe6d42b8942f2a6246c9a9ca4af085a1442a442699ad65e1e1cb3f0d9.jpg,HASH_MAPPED +SAMAN,207070.jpg,mjshin.jpg,RENAMED,신명주,mjshin@samaneng.com,6b7412dfffd06f37da82466fa8baa667209b3b7463b56c476feddbde29760cd6.jpg,HASH_MAPPED +SAMAN,024118.jpg,myshin.jpg,RENAMED,신미영,myshin@samaneng.com,cc5f30be2f27931c3641ba3253d408e82e02d3d835a8bc48cbe22513266121c2.jpg,HASH_MAPPED +SAMAN,216136.jpg,bhshin.jpg,RENAMED,신배헌,bhshin@samaneng.com,2cbfcd5b61651489c6796e57343964e7e1e7b961b29b5ec66f31804fe3ebed43.jpg,HASH_MAPPED +HANMAC,M17203.jpg,bjshin.jpg,RENAMED,신봉진,bjshin@hanmaceng.co.kr,adf810b71669e3c40d0182e15dfda091b1fa7fbf702dbbdbadb226b82d153aa7.jpg,HASH_MAPPED +SAMAN,025040.jpg,syshin.jpg,RENAMED,신선영,syshin@samaneng.com,4dd61b0b09ec8b06effe1cc6b5489e7f4e29f3c0a809e548f102b1b6505ab9d7.jpg,HASH_MAPPED +HANMAC,M21422.jpg,shshin.jpg,RENAMED,신송희,shshin@hanmaceng.co.kr,3bd78771202ef4666cd91216d6a865d4c82f46a5ce99b3038214e1713eacaf30.jpg,HASH_MAPPED +SAMAN,024019.jpg,snshin.jpg,RENAMED,신순녀,snshin@samaneng.com,e3c4249fbaff7f55a58d7c20e1f0d0770b1ecc865be321a44d5621e9ef3c0f3c.jpg,HASH_MAPPED +SAMAN,212158.jpg,asshin.jpg,RENAMED,신안식,asshin@samaneng.com,032d0d35b82933840ac0a75b4063d15c872026944fd1f48e276a5cb12a64ab8c.jpg,HASH_MAPPED +HANMAC,M16208.jpg,ykshin2.jpg,RENAMED,신영각,ykshin2@hanmaceng.co.kr,a97ef23755ad14934e09ce76053d1c20908741f2958d688418540d314b11c45e.jpg,HASH_MAPPED +HANMAC,M24068.jpg,ykshin.jpg,RENAMED,신영교,ykshin@hanmaceng.co.kr,2b45ffc2bd33470838db2f040ca61ae932bfb85b18f3b7cbbb8449355f120096.jpg,HASH_MAPPED +SAMAN,219120.jpg,yjshin1.jpg,RENAMED,신영준,yjshin1@samaneng.com,ef1b1bd55768a8e06b982ce82cbeb551adeda703d154d10a3c24782148bdf231.jpg,HASH_MAPPED +SAMAN,204022.jpg,yhshin.jpg,RENAMED,신영호,yhshin@samaneng.com,86b0d4f41f57143cf86a9d9623ec2656ede21ab377181d632b03d9e57f059675.jpg,HASH_MAPPED +SAMAN,223037.jpg,ycshin.jpg,RENAMED,신예찬,ycshin@samaneng.com,6bde69d654c0b77bd433936cdf2537049a6a947cd6bb5a04fe564838c9b743c9.jpg,HASH_MAPPED +SAMAN,224007.jpg,yhshin2.jpg,RENAMED,신용희,yhshin2@samaneng.com,2a59dda90cee11d9dd9a06cffd62429b287502860b83fe04d4ea38de31249210.jpg,HASH_MAPPED +SAMAN,219080.jpg,wtshin.jpg,RENAMED,신원태,wtshin@samaneng.com,a853b0410343d5231808509c98717b37a9d668a8e20b2cb693fcfc4680007dcd.jpg,HASH_MAPPED +SAMAN,225038.jpg,ysshin1.jpg,RENAMED,신윤섭,ysshin1@samaneng.com,3b36bcfd38082df3b499b2daec2be08be136b91ecfd89ecdf6fa00d339ac0ea6.jpg,HASH_MAPPED +SAMAN,223205.jpg,ysshin.jpg,RENAMED,신윤수,ysshin@samaneng.com,ab79688ebd2cc1ca7797e1377ba960fc5548f587d385773aafd25e1421ea3d06.jpg,HASH_MAPPED +SAMAN,224366.jpg,ehshin.jpg,RENAMED,신은화,ehshin@samaneng.com,96f5cee8424a5f021115066965223e362f2d3c3c8b9c53172304d85f66089b91.jpg,HASH_MAPPED +SAMAN,224263.jpg,ijshin.jpg,RENAMED,신인재,ijshin@samaneng.com,a1966f39b3668513cf952e190021570c2a830a2fd577b879d3ef88685c09999c.jpg,HASH_MAPPED +SAMAN,220038.jpg,jwshin.jpg,RENAMED,신재원,jwshin@samaneng.com,854b9b02c0315c0cab497b9df39186a054f55e47ed307f573d7e3795b303a1f6.jpg,HASH_MAPPED +SAMAN,224329.jpg,jmshin.jpg,RENAMED,신정민,jmshin@samaneng.com,122762bf8e6965ed58a2af8540212e2552c86d3e449035bbf9160ca4b7b74441.jpg,HASH_MAPPED +SAMAN,225368.jpg,jsshin1.jpg,RENAMED,신정식,jsshin1@samaneng.com,4511d649ff5281cfee150edd5b42909376b2adb38d07419705a1ca26c30ad60e.jpg,HASH_MAPPED +SAMAN,222168.jpg,jhshin2.jpg,RENAMED,신정하,jhshin2@samaneng.com,a376a87feec092513aeee96c18a7ed638bbbd67516248c9a4b8bd724595bb5ac.jpg,HASH_MAPPED +SAMAN,222252.jpg,jwsin.jpg,RENAMED,신제원,jwsin@samaneng.com,e0f173df63e641a11b41e9338233bbfb2fca819ac7567f418bfaaad038508fdb.jpg,HASH_MAPPED +SAMAN,226135.jpg,jwshin1.jpg,RENAMED,신종욱,jwshin1@samaneng.com,6a2c93316777df5e4fefaf5836a2d86146416c0f76102ea79f441fbecad57f0e.jpg,HASH_MAPPED +SAMAN,225036.jpg,jwshin2.jpg,RENAMED,신주원,jwshin2@samaneng.com,52c0dd76f03bc3a098ca7eb026984e0af4ba25a965cc35ca4b969f3dbb5a7e94.jpg,HASH_MAPPED +SAMAN,224379.jpg,jcshin.jpg,RENAMED,신준철,jcshin@samaneng.com,9265198ddd2452eb039078ae01b61b49dc2c2bb835638230d7aba7554f516062.jpg,HASH_MAPPED +SAMAN,225145.jpg,jhshin1.jpg,RENAMED,신준호,jhshin1@samaneng.com,1d5b81710f0114f65258503f73ca549c0798204e79a937e31d0dfbf624bebc3d.jpg,HASH_MAPPED +SAMAN,209171.jpg,jhshin.jpg,RENAMED,신지호,jhshin@samaneng.com,ddea08252a442d7029deb0b6570fa63ac34ca40af39be935cfd0c99948d988d9.jpg,HASH_MAPPED +SAMAN,220090.jpg,jgshin.jpg,RENAMED,신진건,jgshin@samaneng.com,d3c00ee29b9a57196acacc5fbc46c216a0f78124c5e35c9ce3fdb66504a91d28.jpg,HASH_MAPPED +SAMAN,222012.jpg,jsshin.jpg,RENAMED,신진승,jsshin@samaneng.com,dacca1e9025007ddb1b9aca82e11bccc6f1c1d3c4d70d31fc8b8dbe31611b4f3.jpg,HASH_MAPPED +HANMAC,M21414.jpg,jwshin3.jpg,RENAMED,신진우,jwshin3@hanmaceng.co.kr,5e8db13542eafa31d54377aef8313c1ebabdbd380c176295150513e2a511afca.jpg,HASH_MAPPED +SAMAN,220159.jpg,jhshin3.jpg,RENAMED,신진호,jhshin3@samaneng.com,31f3d7030825f9d2f3ab75aea6f61aff936d5c3d67423a1b3cbcfca2bf9a4c67.jpg,HASH_MAPPED +SAMAN,225141.jpg,cwshin.jpg,RENAMED,신찬웅,cwshin@samaneng.com,193a818d3e88e739b7de519abdc4b01bfda75966050461a6a743e1ab3fa3963c.jpg,HASH_MAPPED +SAMAN,204257.jpg,ckshin.jpg,RENAMED,신창건,ckshin@samaneng.com,7e9cdf0ffcf2c55c28aa7e9c4fbe659074d9bb1774a5c85231bb980b43b93870.jpg,HASH_MAPPED +SAMAN,225358.jpg,cschin.jpg,RENAMED,신창수,cschin@samaneng.com,ebbdf131721ae940390a10a445729d9aac2524c8a13875430d19d6a39d16d67c.jpg,HASH_MAPPED +SAMAN,225200.jpg,hsshin.jpg,RENAMED,신현승,hsshin@samaneng.com,960165aa5e3b54ca911a971e283e59200bf6c304eb3ec36d43923e2b9a0fd805.jpg,HASH_MAPPED +HANMAC,T02303.jpg,hwshin2.jpg,RENAMED,신현우,hwshin2@hanmaceng.co.kr,3805296813a086bd47b33c048564bab249bf0b4d8a51c70ac3c5c3c30607c978.jpg,HASH_MAPPED +SAMAN,224362.jpg,hwshin.jpg,RENAMED,신현웅,hwshin@samaneng.com,f6ca40246f0d32412f0b979946838bfcbce1e45b2d73d1d2c385bfda0a276ca0.jpg,HASH_MAPPED +SAMAN,225127.jpg,hjshin.jpg,RENAMED,신현진,hjshin@samaneng.com,14bf2b8b52a2feb8b1320d63b0ee29d9a5f5a45c9dd5775c31e6a485579dbe90.jpg,HASH_MAPPED +HANMAC,M21458.jpg,hhshin.jpg,RENAMED,신현호,hhshin@hanmaceng.co.kr,fc12569464b852079f2f83c6851f427c62e5709d59300ea43ddf61ef6291d47d.jpg,HASH_MAPPED +SAMAN,218145.jpg,hyshin.jpg,RENAMED,신혜영,hyshin@samaneng.com,94fb537e5f14c6f55810eaa97b2a1407b913c76adcc23522be388a7df7df05b1.jpg,HASH_MAPPED +SAMAN,221268.jpg,hsshin1.jpg,RENAMED,신효식,hsshin1@samaneng.com,8c6a9f78d9d3e8b1fdda47d6dc17166d4f43ffbbbe3b4a99f00a5fc255c910ab.jpg,HASH_MAPPED +SAMAN,226059.jpg,hbshin.jpg,RENAMED,신후복,hbshin@samaneng.com,64e391b063603f0f962f7ae59e64f2382550e0b3cca49c7407ad5f6a89eea5fa.jpg,HASH_MAPPED +HANMAC,M15317.jpg,hsshin2.jpg,RENAMED,신흥섭,hsshin2@hanmaceng.co.kr,a9d74b28c7553bd27f2ae2c10aa24d16e5e509f914cafaba0fea1aef5fc5cc47.jpg,HASH_MAPPED +SAMAN,225361.jpg,gssim.jpg,RENAMED,심계섭,gssim@samaneng.com,186c2dae262d45d415dce5f7767f571840831314e94d38b8ecf0e1c88765574b.jpg,HASH_MAPPED +SAMAN,221025.jpg,msshim.jpg,RENAMED,심명선,msshim@samaneng.com,99a68682bc22d2d8301f8683a727bf4b6fdd3f802c81353823d0805e9d81e473.jpg,HASH_MAPPED +SAMAN,190022.jpg,scshim.jpg,RENAMED,심상철,scshim@samaneng.com,d01a90d54dc97e7423af9f12136fb1717481f86ea56d05f48b4baac4be53740d.jpg,HASH_MAPPED +SAMAN,225118.jpg,syshim.jpg,RENAMED,심선용,syshim@samaneng.com,9542af8edbeac531d53e0ed0a5fb45ffad9dc45b7d373b19de423089b228b01f.jpg,HASH_MAPPED +SAMAN,202083.jpg,smsim.jpg,RENAMED,심성만,smsim@samaneng.com,483484455095cf3e64bfb66cb77e8e76fdd98bc55d5dac23c6efbab0db933121.jpg,HASH_MAPPED +HANMAC,M24036.jpg,sbsim.jpg,RENAMED,심성보,sbsim@hanmaceng.co.kr,c0b991887d0680e05eaab9a0720fd0e8987ec0c04992e4dfa2848392bb78289a.jpg,HASH_MAPPED +SAMAN,196190.jpg,scshim1.jpg,RENAMED,심승철,scshim1@samaneng.com,2a709cd815db0671ec15e9c9eb4bfea8c914b8200c53e63288914d28fce9635d.jpg,HASH_MAPPED +SAMAN,216164.jpg,ypshim.jpg,RENAMED,심영표,ypshim@samaneng.com,e5b3ced9b9ab05484f0ff0a536be4dfd78f7eb3e8d6fb0c0a0fece8bb536c943.jpg,HASH_MAPPED +HANMAC,M25017.jpg,wsshim.jpg,RENAMED,심우석,wsshim@hanmaceng.co.kr,cb1c73fec2d44042b827cbf9658ab5677dbeebbc40877525428c098fa03216fe.jpg,HASH_MAPPED +HANMAC,M24065.jpg,ybsim.jpg,RENAMED,심윤보,ybsim@hanmaceng.co.kr,03d916767c8c92607fc2900d16cc0269597ced0a1e18b643230647e2b6816a1a.jpg,HASH_MAPPED +SAMAN,225267.jpg,jysim.jpg,RENAMED,심재윤,jysim@samaneng.com,8f85e6fadc88f556f00f8155f7c384f39e4114bf3b5bdc430f88a09fdc36b235.jpg,HASH_MAPPED +SAMAN,223067.jpg,jtshim.jpg,RENAMED,심정택,jtshim@samaneng.com,a6593bb1b14d0e01f097050d3feca48cb511c65c1e19e6144fa8da459573ddfe.jpg,HASH_MAPPED +SAMAN,217107.jpg,hwshim.jpg,RENAMED,심현우,hwshim@samaneng.com,40ec0ec6ee5009508a5051a468c800270926b1da077808ba65db1716c7916b44.jpg,HASH_MAPPED +SAMAN,209153.jpg,hsshim1.jpg,RENAMED,심형섭,hsshim1@samaneng.com,5ec59299d9c12816dbeaad7b1d69da0b8316cc720e437d95583ed7aad1419d82.jpg,HASH_MAPPED +SAMAN,225208.jpg,vicki.ardiansah.jpg,RENAMED,아르디안사 비키,vicki.ardiansah@samaneng.com,9975a2dde07d8e86471706c717d89c8cae41ee00efc96f0f3d2052fb8f1b1912.jpg,HASH_MAPPED +SAMAN,207016.jpg,khann.jpg,RENAMED,안경환,khann@samaneng.com,1929bdd47c1168f04286a47db700d5fc8cd4b5dd95c5dcfd30a86f2638de3bb1.jpg,HASH_MAPPED +SAMAN,226122.jpg,gjan.jpg,RENAMED,안길진,gjan@samaneng.com,03c4bdbecd9b07abbbc2b288e9f4bf58b6ca8def49954dd17be6c5a3994f5527.jpg,HASH_MAPPED +SAMAN,217157.jpg,dwahn.jpg,RENAMED,안대욱,dwahn@samaneng.com,442b5de4a9c88bcfd6fdac815ef19c496117aded338b97b6603c7ae57220d119.jpg,HASH_MAPPED +SAMAN,209075.jpg,dwan.jpg,RENAMED,안대원,dwan@samaneng.com,f8b144eac6e2fecd5caef4fb2941caa171c4812f252ea0ccf81e1b1a1ef5d148.jpg,HASH_MAPPED +SAMAN,223344.jpg,dyan.jpg,RENAMED,안동열,dyan@samaneng.com,bbfce5e2cc9f87acb88fde0694176ad45d5e790d5fa69b6e1676002a71f3fb4a.jpg,HASH_MAPPED +HANMAC,M24040.jpg,dhahn.jpg,RENAMED,안동현,dhahn@hanmaceng.co.kr,b904ff5c38403a5af1b40ecd170a6088aa14f0ec29add093fe0c450cdf479b62.jpg,HASH_MAPPED +HANMAC,M22003.jpg,mhahn.jpg,RENAMED,안민형,mhahn@hanmaceng.co.kr,6fd6e1090a4f042981efc6fb936957c510a1f3fd5914a9203f2cef1e43055c78.jpg,HASH_MAPPED +HANMAC,M24071.jpg,bgahn.jpg,RENAMED,안병구,bgahn@hanmaceng.co.kr,348549638a477eac2f80c25c49f5a32e99b194039dcfcb3014b84849cb6abcaf.jpg,HASH_MAPPED +SAMAN,225241.jpg,bhahn.jpg,RENAMED,안병학,bhahn@samaneng.com,2f1064bc6e0e207ea01dd12a835bdbaadd8675331e1f3846d14d3c515b9b7673.jpg,HASH_MAPPED +SAMAN,218133.jpg,bhan.jpg,RENAMED,안병호,bhan@samaneng.com,817094ddd9b973945d4ebf4fe9f05c455886fe40251eda54b94e4ad306862b03.jpg,HASH_MAPPED +SAMAN,225346.jpg,bhahn1.jpg,RENAMED,안병호,bhahn1@samaneng.com,5bca20d42c5ebe02495557d1122a496c6923a07cd82061243b6d6d0630858d45.jpg,HASH_MAPPED +SAMAN,226086.jpg,ssahn.jpg,RENAMED,안상수,ssahn@samaneng.com,b8524fb63a74d41306b978d2cdbde8ac1c762aa5a0a6d2d5b46042da0bc1f3c8.jpg,HASH_MAPPED +SAMAN,223339.jpg,sjahn.jpg,RENAMED,안상준,sjahn@samaneng.com,3504ec11399e37e8bee1d178fe7d6c60cf17a2b74a03e978e19d76f33e8bfcc8.jpg,HASH_MAPPED +SAMAN,226010.jpg,syahn.jpg,RENAMED,안석영,syahn@samaneng.com,2ae77d709891615da09fa210e998204f31b1b52f8bfa132e2cc77f31b03bef37.jpg,HASH_MAPPED +SAMAN,222024.jpg,skan.jpg,RENAMED,안선경,skan@samaneng.com,26505698b0c4b1da31e5a7a865250f2f8d9409088eb6125d94aab3cb92a1d2ca.jpg,HASH_MAPPED +SAMAN,221134.jpg,scahn.jpg,RENAMED,안성칠,scahn@samaneng.com,55f4ec8d2c747e08e7a15047a9a1e41b654bf2979bf68e2526be775eb739ebc3.jpg,HASH_MAPPED +SAMAN,207047.jpg,sjan.jpg,RENAMED,안세진,sjan@samaneng.com,e7170c8a448f548fd6f23d4d13875588b017a6a6614fe9703687952daaa61bb2.jpg,HASH_MAPPED +SAMAN,217051.jpg,shahn.jpg,RENAMED,안수현,shahn@samaneng.com,0f784e26ab706b893aa8a6f83c3d18ac4ad84aa67c55ca46cccf412d66af6112.jpg,HASH_MAPPED +SAMAN,195115.jpg,ysahn.jpg,RENAMED,안영식,ysahn@samaneng.com,c1f20883dea9edfd68363be2058664351c44763cad2f251e5bd65573e06c9e00.jpg,HASH_MAPPED +SAMAN,225187.jpg,yjan.jpg,RENAMED,안영준,yjan@samaneng.com,b8c9c4b72cd308e329f2062288f2792ff2f3eff04caf28c1caf61fd9fee1ac28.jpg,HASH_MAPPED +SAMAN,224120.jpg,wjahn.jpg,RENAMED,안우정,wjahn@samaneng.com,29ad8a57cf0ae1b54a800abcebf75c0acbc98611233b55b93ef270cab661aa66.jpg,HASH_MAPPED +SAMAN,026015.jpg,yman.jpg,RENAMED,안유미,yman@samaneng.com,6f0e97c066bde9330ba08df69b3b84aca312fc64ce4a5730379a713bb54b0419.jpg,HASH_MAPPED +SAMAN,201034.jpg,yjahn.jpg,RENAMED,안윤준,yjahn@samaneng.com,e751fc470d42b9ce49391fbb0278e0af0db5bf615f7fe85f461aa1e4f7482177.jpg,HASH_MAPPED +SAMAN,025076.jpg,eman.jpg,RENAMED,안은미,eman@samaneng.com,8b0d622de722499de0bfb607ba594b5e661fe010cad444354e2a539d52e3c750.jpg,HASH_MAPPED +SAMAN,221102.jpg,esahn.jpg,RENAMED,안은수,esahn@samaneng.com,bcb3e1cf117268cbfb3afe84aa9b8e2243bc344b871223aa2f634713c712edd9.jpg,HASH_MAPPED +SAMAN,026042.jpg,ejan.jpg,RENAMED,안은정,ejan@samaneng.com,90cc7ebae63427cfca021851e020302f4180bd4229eecb0e31f18978f46f6375.jpg,HASH_MAPPED +SAMAN,203002.jpg,jyan.jpg,RENAMED,안재영,jyan@samaneng.com,321ce0bc95397575f194b08ef256e8842dc2366f3c8c9e027a26afd76a923784.jpg,HASH_MAPPED +SAMAN,224351.jpg,jjan.jpg,RENAMED,안재준,jjan@samaneng.com,48cc47dfc10043f3df45e5c7ca86024a21421015e091f8694690c71714487e47.jpg,HASH_MAPPED +SAMAN,223025.jpg,jmahn.jpg,RENAMED,안정민,jmahn@samaneng.com,435a0aabdf0d1e17b1219ec14d3841836e627952087bb9ee52feef9c0b0195c6.jpg,HASH_MAPPED +SAMAN,221226.jpg,jwan.jpg,RENAMED,안정우,jwan@samaneng.com,931de30c90992f09ab760c2bc2a5f559ff2e583b9b69617fab54dfb00733b505.jpg,HASH_MAPPED +JANGHEON,J25504.jpg,jgan.jpg,RENAMED,안종기,jgan@brsw.kr,8e936fc1dd8cda2b4936ce06eade139ad7416f220b74d6e8b93b42ab7d5f44fe.jpg,HASH_MAPPED +SAMAN,224340.jpg,jhahn1.jpg,RENAMED,안준희,jhahn1@samaneng.com,83a45be432a3c667fee868786211dc256f1d13a18d3ff0a156a861d8f976135e.jpg,HASH_MAPPED +SAMAN,216065.jpg,jyahn.jpg,RENAMED,안지용,jyahn@samaneng.com,747c5a35fe62effa36096812ed795446476fa968d396d88cdbcf24d364aa6776.jpg,HASH_MAPPED +SAMAN,220077.jpg,cuahn.jpg,RENAMED,안찬욱,cuahn@samaneng.com,04be4aa51cf9edff367d46c3534a7c30f67f6d999e2514a609b323cd9b80451e.jpg,HASH_MAPPED +SAMAN,220233.jpg,tkahn.jpg,RENAMED,안태경,tkahn@samaneng.com,6e4db013cec240115dd114a3ad43fc95309c9154930f60966df30272e1ec0b57.jpg,HASH_MAPPED +SAMAN,218129.jpg,han1.jpg,RENAMED,안헌,han1@samaneng.com,59009e671c61b175fff07207bae7e57ba75bd433ddd5deb5427e84d1b3c4664a.jpg,HASH_MAPPED +SAMAN,225045.jpg,hbahn.jpg,RENAMED,안현빈,hbahn@samaneng.com,8a0d10f530a6d346b1e446ffa9a039f93d5e4c0862d7500c11f3f5035e7e04a7.jpg,HASH_MAPPED +SAMAN,215053.jpg,hsan.jpg,RENAMED,안호성,hsan@samaneng.com,716ffda19be1b91d55b47984bc0e52dc5c99fa764f0ca6f21eead710a4f745e9.jpg,HASH_MAPPED +SAMAN,221003.jpg,hjan.jpg,RENAMED,안호진,hjan@samaneng.com,3cfc3f236cdce88494f83d32588dc8eb524caff2828a9444bdea28501befdeb7.jpg,HASH_MAPPED +SAMAN,224014.jpg,hrahn.jpg,RENAMED,안효래,hrahn@samaneng.com,8c250df5d28c505f7c1055e5a51c6fe11d2fc8d8034e856fffa76607b53b7335.jpg,HASH_MAPPED +SAMAN,225224.jpg,hsan1.jpg,RENAMED,안효석,hsan1@samaneng.com,92d332be92f3110ef614b5d9aafd36cad8c53dc582a50c62bed60543d6599d0d.jpg,HASH_MAPPED +SAMAN,224103.jpg,hsahn.jpg,RENAMED,안효식,hsahn@samaneng.com,f6a9326542e84f3586e1a8134b99c1020e3565dad447f6b8127466edbd85954a.jpg,HASH_MAPPED +SAMAN,223228.jpg,hwan.jpg,RENAMED,안효원,hwan@samaneng.com,abc53575305e44ff22cd1a1981787c7171d2ac35d011bac03b9f62a663ab72a8.jpg,HASH_MAPPED +HANMAC,M24063.jpg,hgan.jpg,RENAMED,안흥권,hgan@hanmaceng.co.kr,27a4e8e63870a3f9d58acace20011ddf351f1e64c2ed8b93f5a7b50b646255bb.jpg,HASH_MAPPED +SAMAN,226085.jpg,hwahn.jpg,RENAMED,안희원,hwahn@samaneng.com,b624b0a8b11b5a62f5b69b8442b1a323e63dcb20633daccd6efd1c187acbec4b.jpg,HASH_MAPPED +SAMAN,208011.jpg,ksyang.jpg,RENAMED,양관섭,ksyang@samaneng.com,b30c2610ba08cffea23ff46a1680a86f08ba0bf2beb8a5a6f0c15e6becb108f3.jpg,HASH_MAPPED +SAMAN,218034.jpg,gsyang.jpg,RENAMED,양규순,gsyang@samaneng.com,6953f4fb41fbbd4cf6197dbba7443c2ba9946fa2d27b1e5fd5364ae1f0855254.jpg,HASH_MAPPED +SAMAN,225273.jpg,dryang.jpg,RENAMED,양동록,dryang@samaneng.com,fbcb2f4ca263cd8c760fb28bf87b0e7a87e498980aa65c9c91dfefe3c7a8a6fa.jpg,HASH_MAPPED +HANMAC,B25015.jpg,myyang.jpg,RENAMED,양미연,myyang@brsw.kr,3642210fc7ece3ba3f9d48059a5f74ed478459731c3570aa3035ef93a67228c3.jpg,HASH_MAPPED +SAMAN,226089.jpg,bsyang.jpg,RENAMED,양병수,bsyang@samaneng.com,571e03c64f577fc2f13c6a3ffdf4563f96a98a901904960df80959644f58c05b.jpg,HASH_MAPPED +SAMAN,219018.jpg,bhyang1.jpg,RENAMED,양병홍,bhyang1@samaneng.com,276f0a7844a159aef3acb463a8153fd4a80681ea90d172d30a515d83ffe9e61c.jpg,HASH_MAPPED +SAMAN,223278.jpg,smyang1.jpg,RENAMED,양성모,smyang1@samaneng.com,2c801217ed34dfc543354fc8593d5b5b6b401156c1a7b8fb293068a674138b03.jpg,HASH_MAPPED +SAMAN,206028.jpg,swyang.jpg,RENAMED,양성우,swyang@samaneng.com,1d8d2c2b2610a13b3b03c808fb901434bdcb5842b760c210519ed127f23e5c0b.jpg,HASH_MAPPED +SAMAN,026072.jpg,shyang1.jpg,RENAMED,양소희,shyang1@samaneng.com,afb1b10831627dc8526c6fc83792faae11c7fc7d23cecaae8e90a0a07f81b25d.jpg,HASH_MAPPED +HANMAC,B24012.jpg,syyang.jpg,RENAMED,양숙영,syyang@brsw.kr,38da400338e70672e3c940f8f5b20bc48d859789689f3ee2d3e053df2ddb94f5.jpg,HASH_MAPPED +SAMAN,200021.jpg,ssyang.jpg,RENAMED,양승수,ssyang@samaneng.com,b07d1e186545ac009bf5efd006f2d9b224a09714ef746f211f420b0c78eafa7f.jpg,HASH_MAPPED +SAMAN,210102.jpg,siyang.jpg,RENAMED,양승일,siyang@samaneng.com,0e470b3ee9e704ee2297a66027ff48c813827daffdb1e227631d96650eddaa2c.jpg,HASH_MAPPED +SAMAN,203039.jpg,shyang.jpg,RENAMED,양승현,shyang@samaneng.com,966177d4e1b2d01c2d227e95f0f46a2d1056af7e485794b02a23a45d00ca980d.jpg,HASH_MAPPED +SAMAN,225236.jpg,ysyang1.jpg,RENAMED,양영섭,ysyang1@samaneng.com,ea6b9fae4c10402298bea4c285d6ff75c14f2d5ca56ca4204350733a151e7e3e.jpg,HASH_MAPPED +SAMAN,206029.jpg,yhyang.jpg,RENAMED,양유홍,yhyang@samaneng.com,87c43ccb88e7f731bdf1f4d8617291986ec7c97422a3171d085a9007b86e6740.jpg,HASH_MAPPED +SAMAN,221069.jpg,iyyang.jpg,RENAMED,양일영,iyyang@samaneng.com,a61c86b5dc713a77b1d85b159746d1e89f9d889ce7141fa247e87dc42a5358bc.jpg,HASH_MAPPED +SAMAN,220158.jpg,jmyang.jpg,RENAMED,양정모,jmyang@samaneng.com,16904b70c5f78ad5de4e1f0e1ccfd9c54faa5c96d37817e90e2e1aa10aa7c6d5.jpg,HASH_MAPPED +HANMAC,M20406.jpg,jsyang.jpg,RENAMED,양정선,jsyang@hanmaceng.co.kr,8e427d235719edfae78f534d32d9762150ae092eafb40bba574d4dd2c4b0e504.jpg,HASH_MAPPED +JANGHEON,J11202.jpg,jsyang1.jpg,RENAMED,양종식,jsyang1@brsw.kr,4ce45d08c9cb4d81332d8e621d1aec952ded09a03c1dd884c7e7bbcbcd9c8d87.jpg,HASH_MAPPED +SAMAN,206144.jpg,jhyang1.jpg,RENAMED,양지현,jhyang1@samaneng.com,73bbc553b5c9474cbf76351c02b04b214deef561585a866e95c78a3b62eac45d.jpg,HASH_MAPPED +SAMAN,225201.jpg,jwyang.jpg,RENAMED,양진웅,jwyang@samaneng.com,49bad63aa1cc64211d91e5b3ed1251b8d742cb4b5cfd5fea79e0456b1213f9b6.jpg,HASH_MAPPED +SAMAN,225279.jpg,hyang.jpg,RENAMED,양현,hyang@samaneng.com,3087c61f00671c4225ddf03c6743d3bd1c2139fab3d775b062bb9c4b5e2512a9.jpg,HASH_MAPPED +SAMAN,221187.jpg,hsyang1.jpg,RENAMED,양현승,hsyang1@samaneng.com,30fd07826ac9a9661fea5931c59f15d118799e50f6d7b2d73eb70d38dffa4f30.jpg,HASH_MAPPED +SAMAN,226012.jpg,hjyang.jpg,RENAMED,양현준,hjyang@samaneng.com,a6ec85ebb9c11e372132dfd8638b66f72c6720358a9cae6d1b0b98df52bacb4c.jpg,HASH_MAPPED +SAMAN,222055.jpg,hjyang1.jpg,RENAMED,양현진,hjyang1@samaneng.com,4f22b7c27aede20e45ea55a5397e68f32aa8449ae029d3e9c0afe3136ab05010.jpg,HASH_MAPPED +SAMAN,197089.jpg,hhyang.jpg,RENAMED,양현휘,hhyang@samaneng.com,a22f1ba007adc29844b4ec00d0d519e069f83c33bef938f94b2a002ee127ea72.jpg,HASH_MAPPED +SAMAN,219156.jpg,hsyang.jpg,RENAMED,양호석,hsyang@samaneng.com,a1a96b558b1d177fb728b612d9fa130385425a05998ab1f9fd43615c6ba15cf7.jpg,HASH_MAPPED +SAMAN,223096.jpg,hsyang2.jpg,RENAMED,양희석,hsyang2@samaneng.com,d63888e3ba340b5ece05ca562683710306627708e7748dc2d38e0b39a0e381bf.jpg,HASH_MAPPED +HANMAC,M23065.jpg,hcyang.jpg,RENAMED,양희찬,hcyang@hanmaceng.co.kr,79d3b3dd7a24f9d78b7f924bf043725792343e979f62cb2f94e4b8a5047dbcf2.jpg,HASH_MAPPED +SAMAN,222122.jpg,sheom.jpg,RENAMED,엄성현,sheom@samaneng.com,39c2e1f88e2e9e3da75a504916ef0ae4187fc13aa2099cedeefbca9f414a6ed6.jpg,HASH_MAPPED +SAMAN,224048.jpg,jsuhm.jpg,RENAMED,엄지숙,jsuhm@samaneng.com,962f43f6c03c8ff50a44a50558e94dbd3f3d965d90ad264d2d41f9cbda20459b.jpg,HASH_MAPPED +SAMAN,225095.jpg,jyum.jpg,RENAMED,엄진용,jyum@samaneng.com,345aaf32d7a87377dfc6da72214edc0d00f312c45f3ed890ca49fdf4ae27c84d.jpg,HASH_MAPPED +SAMAN,025026.jpg,hjeom.jpg,RENAMED,엄희지,hjeom@samaneng.com,72edd2693a926af305772e415239eb61c4c850f639ebe45da74584e7b3fc76d4.jpg,HASH_MAPPED +SAMAN,225204.jpg,ytyeo.jpg,RENAMED,여영탁,ytyeo@samaneng.com,6e4ab8c4fecc33730d75e65fd5b97e924dae3c2ac80f1ba7924df8bb6c30de6d.jpg,HASH_MAPPED +SAMAN,225117.jpg,hgyeo.jpg,RENAMED,여형구,hgyeo@samaneng.com,3456db8b1824db8668838be79afca854d5ea71cbf0b0810c267733a3236da251.jpg,HASH_MAPPED +SAMAN,225129.jpg,hiyeo.jpg,RENAMED,여환익,hiyeo@samaneng.com,389c64014db07c159c68d2626d34576efbc483677094812d0ee9cf570e766126.jpg,HASH_MAPPED +SAMAN,224309.jpg,yhyon.jpg,RENAMED,연영흠,yhyon@samaneng.com,9123d243c54dd6e77d56bb71c18cf395d2ef3724f7896e5fb00dd6009a4b2c1c.jpg,HASH_MAPPED +HANMAC,M17301.jpg,hmyeon.jpg,RENAMED,연훈모,hmyeon@hanmaceng.co.kr,3484601ef76765ff468b8dde70be21bb8aef738b4aaa6f3e97e7784120a7c8ad.jpg,HASH_MAPPED +SAMAN,221225.jpg,ksyeom.jpg,RENAMED,염광섭,ksyeom@samaneng.com,8027f04e70211e67b52b5dd96c5f43e1e1956d4609a8b20b4ae374b93644d064.jpg,HASH_MAPPED +SAMAN,225159.jpg,swyeom.jpg,RENAMED,염승운,swyeom@samaneng.com,9c68afc9ae50117e883f6ac3ea636b0bfad5911cf94dd6332150f0fa1b254e8f.jpg,HASH_MAPPED +SAMAN,223070.jpg,shyeom1.jpg,RENAMED,염승호,shyeom1@samaneng.com,7ecbb451015cd0e88075f302e9ea505b2f876b00ed059847ed41a87a9fa41230.jpg,HASH_MAPPED +SAMAN,225103.jpg,cyyeom.jpg,RENAMED,염창열,cyyeom@samaneng.com,7741705b5821f50e3a80645e2a4cb9762f290e0f4c9a4f8069ba2987807306bd.jpg,HASH_MAPPED +SAMAN,221279.jpg,smye.jpg,RENAMED,예상민,smye@samaneng.com,43675ae481e8f560785b740bd09b586cb993ef550be5320b6a8daed83540c0fa.jpg,HASH_MAPPED +HANMAC,M14504.jpg,ksoh.jpg,RENAMED,오관식,ksoh@hanmaceng.co.kr,1fc6767d43a5f747d22576f5964c97b76fd64685cdad7cfbaf57d0dc84c3e630.jpg,HASH_MAPPED +SAMAN,224191.jpg,nsoh.jpg,RENAMED,오남수,nsoh@samaneng.com,cdd295a08e23078cc114b884bc4e40b11cb531d4c779e94aac46b26001cbf069.jpg,HASH_MAPPED +SAMAN,225089.jpg,dkoh1.jpg,RENAMED,오동규,dkoh1@samaneng.com,f538f0696760d053e28094da63b0838a394f5e70f05caedf8bd4fba93fb70f0a.jpg,HASH_MAPPED +SAMAN,224034.jpg,dkoh.jpg,RENAMED,오동기,dkoh@samaneng.com,ac620f0b5ef4eb0d59e58807987113ce7c175143ba6fffeccef5d636c13815bc.jpg,HASH_MAPPED +SAMAN,207150.jpg,dsoh.jpg,RENAMED,오동수,dsoh@samaneng.com,3c5abc64ea3393b245abc852c3c1c971acade5284185458830a1ad2c104be24d.jpg,HASH_MAPPED +SAMAN,196061.jpg,dwoh.jpg,RENAMED,오동운,dwoh@samaneng.com,fbb2f180294fc8779674e735518511f694fb207340791cb0e6d20ce6e0a3141a.jpg,HASH_MAPPED +SAMAN,225011.jpg,mhoh.jpg,RENAMED,오명환,mhoh@samaneng.com,cdf7ac8beb559b5129d3dc6e38b98fe53b5130503dbdeacc889bdc252861c285.jpg,HASH_MAPPED +HANMAC,M18201.jpg,msoh1.jpg,RENAMED,오문성,msoh1@hanmaceng.co.kr,c89737c23201f13cac4c890adb9e0bd5d2de2bd43e2cfa3fac3193a1444e4415.jpg,HASH_MAPPED +SAMAN,026044.jpg,mroh.jpg,RENAMED,오미란,mroh@samaneng.com,55dba8cc3cacc11d6952815f6cb66ea6f84b6dd85f006395cef9f5b3a06d7571.jpg,HASH_MAPPED +SAMAN,223321.jpg,msoh.jpg,RENAMED,오민섭,msoh@samaneng.com,0c26002d42634f2990c25ea408cd134ec603490e07b0b6e02de89f67a4b939cf.jpg,HASH_MAPPED +HANMAC,M23054.jpg,mjoh.jpg,RENAMED,오민종,mjoh@hanmaceng.co.kr,189e2d8e3383e3ff58471940a31e3dc47ccb1eb7203d4a65324de19c09cd0e57.jpg,HASH_MAPPED +HANMAC,M24006.jpg,bioh.jpg,RENAMED,오방일,bioh@hanmaceng.co.kr,f433298dca25e2d1de0cb0eca94bfc9d095e25db9ea0a65e0a3e05da20725cb0.jpg,HASH_MAPPED +SAMAN,224116.jpg,bsoh.jpg,RENAMED,오봉섭,bsoh@samaneng.com,b66455767fa16323abd0681fa7470c652847d2942135248c4c974fc426f7dd4f.jpg,HASH_MAPPED +SAMAN,223094.jpg,shoh1.jpg,RENAMED,오상현,shoh1@samaneng.com,fd98e3d344dbdea3c2c3ed4727b365b5cc65612a3940fb9f06bd3f0a3357520d.jpg,HASH_MAPPED +SAMAN,024112.jpg,sjoh.jpg,RENAMED,오성주,sjoh@samaneng.com,d58c4ce139f7c606b67e2584509dd025dec3f42000cb76e74635af585f686ddb.jpg,HASH_MAPPED +SAMAN,220226.jpg,sjoh1.jpg,RENAMED,오성준,sjoh1@samaneng.com,23fc900007a2c1de3b2fe2876e0f56ae115930d2e38e6e660f94ff059920bee2.jpg,HASH_MAPPED +SAMAN,226080.jpg,shoh.jpg,RENAMED,오성하,shoh@samaneng.com,9210c8aa98db1669920cb40d547bc90857231348ff80a4c2657cda344cbe0b10.jpg,HASH_MAPPED +HANMAC,M26032.jpg,sgoh.jpg,RENAMED,오세걸,sgoh@hanmaceng.co.kr,63e14b74cc2bddbb9d5777df3b7b4a01d40cb316ff3c4909e84c4500248623ca.jpg,HASH_MAPPED +SAMAN,226067.jpg,smoh2.jpg,RENAMED,오세민,smoh2@samaneng.com,4da7a8cb5d260d8f436e969c75000737b478a95ddfddd5cdb712a0e2a83fb134.jpg,HASH_MAPPED +SAMAN,223185.jpg,syoh1.jpg,RENAMED,오세영,syoh1@samaneng.com,e5789664cab7f0e21a5178c1e88d06229ba22e65798925676d71ad5b3c21a4eb.jpg,HASH_MAPPED +HANMAC,M15406.jpg,sioh.jpg,RENAMED,오세임,sioh@hanmaceng.co.kr,0d12bdc40d56c1542ee695eead92c1c0178b186f68b4d77d57951462dafb12d4.jpg,HASH_MAPPED +HANMAC,M24049.jpg,shoh2.jpg,RENAMED,오세현,shoh2@hanmaceng.co.kr,d9dcfbaf9654e2846353e0c5fc0f3ade07d10319749283222ed095a9fcca9f5f.jpg,HASH_MAPPED +SAMAN,025114.jpg,smoh1.jpg,RENAMED,오수미,smoh1@samaneng.com,8ac4aeb63082fd0e36cd083d3fd6100aae74f38869eca1e747493b81bbfccd9d.jpg,HASH_MAPPED +SAMAN,209077.jpg,smoh.jpg,RENAMED,오승문,smoh@samaneng.com,27dc3cd1c92ef6c3020862055e61d9eb487b30f1f697fad830aa8431d9f26b01.jpg,HASH_MAPPED +SAMAN,226031.jpg,swoh.jpg,RENAMED,오승우,swoh@samaneng.com,0b91a8f0187efefe3c7d1b724bbcf410c9f040d25077a18a793fac24c7796778.jpg,HASH_MAPPED +SAMAN,195086.jpg,stoh.jpg,RENAMED,오승택,stoh@samaneng.com,b48b88324ad69a15d9a232e3e4555fabf2deabc5a4d8d3d30edfb3452693080c.jpg,HASH_MAPPED +SAMAN,222105.jpg,yjoh.jpg,RENAMED,오영진,yjoh@samaneng.com,e82c3e66a821df1d243d297b0c258b1731a57ae270d7c6457997f34cde9f7597.jpg,HASH_MAPPED +SAMAN,225209.jpg,wjoh.jpg,RENAMED,오원진,wjoh@samaneng.com,e2326fa7e5deb69326e3b7ea6d1a044dc0e42672196920f2416f6dab0b6e3a0c.jpg,HASH_MAPPED +SAMAN,025116.jpg,ysoh.jpg,RENAMED,오윤실,ysoh@samaneng.com,a54d1b66eee14f10350d2f7bf0fbe437ce1484fc9f001a5d995ce4e63fe69ac9.jpg,HASH_MAPPED +HANMAC,M23040.jpg,yioh.jpg,RENAMED,오윤익,yioh@hanmaceng.co.kr,eb474e32d416726d1cf13c2493470151e5774e8f8c6639da4c16760d9771ba12.jpg,HASH_MAPPED +SAMAN,222032.jpg,esoh.jpg,RENAMED,오은선,esoh@samaneng.com,cf0279375026cd95d6918ebd05a4301346dcaec301d99d9f9a9c58ee879c1ada.jpg,HASH_MAPPED +SAMAN,214090.jpg,ikoh.jpg,RENAMED,오익균,ikoh@samaneng.com,a2ce0afc0713a73b1df8b10a09e85289e67c5ac5ef4fb9e8558832c29f75b148.jpg,HASH_MAPPED +SAMAN,225282.jpg,igoh.jpg,RENAMED,오인관,igoh@samaneng.com,63752f797c1feeb9e376ecd3cebc2265195d9725fb68ebe6eff927d551d654d7.jpg,HASH_MAPPED +SAMAN,221247.jpg,jmoh.jpg,RENAMED,오재민,jmoh@samaneng.com,9c6e1da60649bc4a92831840efb69d545fe192a3f856621964559281d319f0f6.jpg,HASH_MAPPED +HANMAC,M03202.jpg,jboh.jpg,RENAMED,오재범,jboh@hanmaceng.co.kr,7b23dfd818355e7676117a09fe1ad528e25414e9eaef5d644db2d4ac35bc7471.jpg,HASH_MAPPED +SAMAN,219113.jpg,jsoh.jpg,RENAMED,오정식,jsoh@samaneng.com,6cb75dc973240acf6e79facb75ed7a379159b3e717010022155fa02b1aac8606.jpg,HASH_MAPPED +SAMAN,221057.jpg,jhoh1.jpg,RENAMED,오정회,jhoh1@samaneng.com,1f7c449441843c67acf6c03e466e654f0755a5198c9d234314933303d042f699.jpg,HASH_MAPPED +SAMAN,220258.jpg,jhoh.jpg,RENAMED,오제훈,jhoh@samaneng.com,27cf4914ddeee05e6774bc9a80642411789e19b585e097cf2f184cc37328ce4a.jpg,HASH_MAPPED +SAMAN,191033.jpg,jwoh.jpg,RENAMED,오종우,jwoh@samaneng.com,587b558ce6434b365e55fb2d3a2b64564059d1977018ffc05ae870282d77f384.jpg,HASH_MAPPED +SAMAN,221333.jpg,jhoh2.jpg,RENAMED,오종현,jhoh2@samaneng.com,c7f7d50489d2941d94856a28069f79a1245c9da2d79785f49637dfb57fe77652.jpg,HASH_MAPPED +SAMAN,220004.jpg,cyoh.jpg,RENAMED,오치영,cyoh@samaneng.com,20a3ae671ad6f235c5ebcd7edf2ab8c46e37dc01dbdc3a756ef4fa0b1a76dc0b.jpg,HASH_MAPPED +SAMAN,026027.jpg,hnoh.jpg,RENAMED,오하나,hnoh@samaneng.com,5def55375952defb4609628a6849f2fcf72943e09fbf621a4666c8f1b84134b2.jpg,HASH_MAPPED +SAMAN,222015.jpg,hboh.jpg,RENAMED,오한빈,hboh@samaneng.com,18ef1710010e12e960e42dde4af732c595f919689db29dec492ee543a0678fec.jpg,HASH_MAPPED +SAMAN,221178.jpg,hyoh.jpg,RENAMED,오현영,hyoh@samaneng.com,1630da44e51f8a38f54799b52c9524493472ca82b1a9dff4b0dcba3e74a3981c.jpg,HASH_MAPPED +HANMAC,B21303.jpg,hsoh.jpg,RENAMED,오혜성,hsoh@hanmaceng.co.kr,4e410e9b6f0ae16b333065c318af4f50ed48bf8c7db2945015343a574aabf4aa.jpg,HASH_MAPPED +SAMAN,224074.jpg,hboh1.jpg,RENAMED,오흥배,hboh1@samaneng.com,e39a8c70505f99c6413453545872d097b7928a5ed62b29d277b213f9b7133ab8.jpg,HASH_MAPPED +SAMAN,194047.jpg,jywang.jpg,RENAMED,왕진영,jywang@samaneng.com,7968b03b829a4f471feaab8c9e7f48bb8b87951226fdf65fc9d1218faef66849.jpg,HASH_MAPPED +SAMAN,220138.jpg,tsyong.jpg,RENAMED,용태순,tsyong@samaneng.com,902ca2029eb40675123af8c9f9d66c1367fba4611098b0ed5bab28828e7e7f8f.jpg,HASH_MAPPED +SAMAN,181002.jpg,dswoo.jpg,RENAMED,우대성,dswoo@samaneng.com,26fd5b9ee0fd5f29bc75e5c557c0fe56923637a7bad48625e07b4ff5c1ee19e6.jpg,HASH_MAPPED +SAMAN,221172.jpg,sbwoo.jpg,RENAMED,우상벽,sbwoo@samaneng.com,4fcbe9c8988e1f8dd676f8ac1ed1899fb8ef128311b498d0f928d26ea3e807ac.jpg,HASH_MAPPED +SAMAN,225080.jpg,swwoo.jpg,RENAMED,우성원,swwoo@samaneng.com,add31a4b73d6d9e53307070a20a09304834b07bf3e10329bf91bf27dfaef2862.jpg,HASH_MAPPED +SAMAN,221160.jpg,ykwoo.jpg,RENAMED,우양근,ykwoo@samaneng.com,37700d805340ea671cf580a9221fbe0bb8139768b45b9f51f214b998bac0b192.jpg,HASH_MAPPED +SAMAN,225042.jpg,yhwoo.jpg,RENAMED,우영현,yhwoo@samaneng.com,868fe7d7db772499cc8a402e94428cbd20c37d76ac6c2027f2aa113d2c93bc7f.jpg,HASH_MAPPED +SAMAN,212058.jpg,jkwoo.jpg,RENAMED,우종국,jkwoo@samaneng.com,a89fce14b20f23079c7f89ee63f7927ce3ec2de88d64e8178850bea299d5460d.jpg,HASH_MAPPED +SAMAN,208130.jpg,hjwoo.jpg,RENAMED,우희준,hjwoo@samaneng.com,033580a11bfa2a8214a44720178bccbe0f26ee18fbf5f626b7bf6d06dcee8de7.jpg,HASH_MAPPED +SAMAN,219159.jpg,kswon.jpg,RENAMED,원경식,kswon@samaneng.com,968e6ab20b53c32f3b2d9fdc7facb6c1b17b6383280f5701051079b1187aefe5.jpg,HASH_MAPPED +SAMAN,224338.jpg,bhwon.jpg,RENAMED,원보희,bhwon@samaneng.com,2c05eb0d99bc3f64dfa51c5c0bf14ae591ee38c759fe361778a1b3c4c27a01c6.jpg,HASH_MAPPED +SAMAN,222177.jpg,ycwon.jpg,RENAMED,원영철,ycwon@samaneng.com,65dd420407753392efe258904205393f1ab5933cf7b8f49167310c30e1a27e86.jpg,HASH_MAPPED +SAMAN,225198.jpg,yhwon.jpg,RENAMED,원영학,yhwon@samaneng.com,fb3a0f25ebbe104561f60f9881c7c770737835a2fa0fc3acfc7873d58dceea5c.jpg,HASH_MAPPED +SAMAN,216094.jpg,jhwon.jpg,RENAMED,원종환,jhwon@samaneng.com,b7ec0526bc011c838ee033c98b00aaf6ebec8e9b4d769a930adac1c53658626f.jpg,HASH_MAPPED +SAMAN,222208.jpg,cywon.jpg,RENAMED,원충연,cywon@samaneng.com,c545c6d584e1de40ce4ab7d8afa5dda05a9a6a2b1b24822084589994865a81f2.jpg,HASH_MAPPED +SAMAN,196192.jpg,sswie.jpg,RENAMED,위성식,sswie@samaneng.com,7a11cc019b12c59cabbf6bdf3ac09d42d296d7a10acd278e118fffd4d50debb5.jpg,HASH_MAPPED +SAMAN,222264.jpg,ghyou.jpg,RENAMED,유경한,ghyou@samaneng.com,14f90b1ae4cd617a85bfa5838f534dd3868fc68949a8c2cc0b6ac9e951600eaf.jpg,HASH_MAPPED +SAMAN,206185.jpg,ghyu.jpg,RENAMED,유고호,ghyu@samaneng.com,566768a433624850f5b6ff56f7817e090ad2647c74d24f7ac33356926be809f4.jpg,HASH_MAPPED +HANMAC,M09512.jpg,gyyu.jpg,RENAMED,유광열,gyyu@hanmaceng.co.kr,b052723ffbaa93f44119636088454c15b57d47a24f4fdc4eb0b7935aceebaaf4.jpg,HASH_MAPPED +SAMAN,200001.jpg,ksyou.jpg,RENAMED,유규상,ksyou@samaneng.com,d912a6fc779c2478746918fbd3db82f4757013685cf67639a19543eec70cf05d.jpg,HASH_MAPPED +SAMAN,225357.jpg,gwyoo.jpg,RENAMED,유근우,gwyoo@samaneng.com,f0cf288edbbff7867301c6c663007d81592eb2d1864eaef1f5f1613eceefcc62.jpg,HASH_MAPPED +SAMAN,225228.jpg,gjyu.jpg,RENAMED,유기종,gjyu@samaneng.com,c01f4266ab5a14a421cfc69c13bcfb9a7ca09dd7191149ce6ea67b77eacc2b66.jpg,HASH_MAPPED +SAMAN,225072.jpg,dhyoo.jpg,RENAMED,유도희,dhyoo@samaneng.com,c768b5df6e5185f9de2eb4d0c51025e9e29eb6a0b5e4f35d9da2b8d8f885882b.jpg,HASH_MAPPED +SAMAN,221104.jpg,dhyu.jpg,RENAMED,유동현,dhyu@samaneng.com,d071fbc9b40f5a72c1e4ef20d05cb23d314a33add97146b5b358e9a91cd3cb88.jpg,HASH_MAPPED +SAMAN,224331.jpg,dhyu1.jpg,RENAMED,유동형,dhyu1@samaneng.com,873618d95b4b1e22a70ed3f83a8b44848aa4610a1b19da1c6e5ccc7ad0ca0cf4.jpg,HASH_MAPPED +SAMAN,025060.jpg,myu.jpg,RENAMED,유미,myu@samaneng.com,6ff1e0b939154503c21783537445b4b00584172b9255772d3770393664f1fde4.jpg,HASH_MAPPED +SAMAN,216006.jpg,bnyoo.jpg,RENAMED,유병남,bnyoo@samaneng.com,dea87cfb3043b98dfc74c9fc6c47d515096eae5945b24e0c8a9d4d50c52f5358.jpg,HASH_MAPPED +SAMAN,220228.jpg,bwyu.jpg,RENAMED,유병욱,bwyu@samaneng.com,6705319e0765e0ed3b219829e30237e697ce7f78f733d645420da4ed63c9144e.jpg,HASH_MAPPED +SAMAN,225170.jpg,boyoo.jpg,RENAMED,유병욱,boyoo@samaneng.com,157de8498b1f781c1b2b42339b7063168e513fba878046c460dc92aecc5fda33.jpg,HASH_MAPPED +SAMAN,223175.jpg,bhyou.jpg,RENAMED,유봉희,bhyou@samaneng.com,88ee8edd525d6167bc32e101f841aca754b6440522eee747519414a908084104.jpg,HASH_MAPPED +SAMAN,223375.jpg,sgyoo.jpg,RENAMED,유상길,sgyoo@samaneng.com,28a590aa4a0a9640b08d42f4c88e0b4965ec528815689b61ad21eaeab59efb2b.jpg,HASH_MAPPED +SAMAN,209108.jpg,syyoo1.jpg,RENAMED,유상연,syyoo1@samaneng.com,c818ed48977974311a5d5623042b69ea4068cb1eb5f9408e45bd0363349d9df5.jpg,HASH_MAPPED +SAMAN,225100.jpg,sjyou1.jpg,RENAMED,유서진,sjyou1@samaneng.com,ac2143e5cb1519a7adb9c53723a9737f38391c075a8453ff7d46c4ebe62d3797.jpg,HASH_MAPPED +SAMAN,221061.jpg,skyu.jpg,RENAMED,유선규,skyu@samaneng.com,fe4afaf2475331848858ad5a0b81872e50d2516c9f0539647abf94c8de31209e.jpg,HASH_MAPPED +SAMAN,221010.jpg,shyou.jpg,RENAMED,유선혁,shyou@samaneng.com,a998a359a3053dea66769989735dcf3e3ea46b8af28a83a7b58e98bf9ea950fb.jpg,HASH_MAPPED +SAMAN,225098.jpg,ssyoo.jpg,RENAMED,유성수,ssyoo@samaneng.com,ac634d8242971b0b679e2a3a4f9cd6a2aa1bc355649903f28349025b03f48315.jpg,HASH_MAPPED +SAMAN,224212.jpg,sjyoo.jpg,RENAMED,유성재,sjyoo@samaneng.com,e02cf9e4b5de9ab3a8eba4e34201a0fdc79d5f3b03bcb00079d3d655949977cc.jpg,HASH_MAPPED +SAMAN,201009.jpg,hsyou2.jpg,RENAMED,유세연,hsyou2@samaneng.com,1cd85848d7fe359a418e602cfc237451dd8c564d24f1e54f9d05827332c00b73.jpg,HASH_MAPPED +SAMAN,225328.jpg,shyoo.jpg,RENAMED,유송현,shyoo@samaneng.com,e8a87ac8a611ba135947f96b6809bc59caa97849a53455f76e0d40b444342e7a.jpg,HASH_MAPPED +HANMAC,M22056.jpg,sjyu.jpg,RENAMED,유수지,sjyu@hanmaceng.co.kr,75be95395264fcadecd890a991f8ec0a0c477298d254a5bd58fb265eead4fbce.jpg,HASH_MAPPED +SAMAN,222244.jpg,smyoo.jpg,RENAMED,유승민,smyoo@samaneng.com,b8ed2e8aa894ba047f6d615b13f90ca0322902c7488205d7e2cdfc0d2592fa85.jpg,HASH_MAPPED +HANMAC,B23048.jpg,smyu.jpg,RENAMED,유승민A,smyu@hallasanup.com,55339c509de3f577f4e05dd6d7fb76eb66bd3337231d84762ce68cd62f7a4dc5.jpg,HASH_MAPPED +HANMAC,M10102.jpg,sryou.jpg,RENAMED,유승열,sryou@hanmaceng.co.kr,7ee792fc5ff2628ad89cae3ac5462712460b47448c91d13c20123dfef3a7fc5c.jpg,HASH_MAPPED +SAMAN,205094.jpg,syyoo.jpg,RENAMED,유승용,syyoo@samaneng.com,58f12e5847fc07b42d9bf99de972435d0700deae80d029f96fba542af462c2ce.jpg,HASH_MAPPED +HANMAC,M15407.jpg,ysyu.jpg,RENAMED,유영석,ysyu@hanmaceng.co.kr,d317c2c81c5bd4de9c7bb7d41e37c728fa41d72e724e2e8a0cc86470f0670a6a.jpg,HASH_MAPPED +SAMAN,224320.jpg,yjyoo.jpg,RENAMED,유영진,yjyoo@samaneng.com,be152914c9be1b72009becb38e76d6b50249ab94b15a40512fa9e7ac6770e446.jpg,HASH_MAPPED +SAMAN,221254.jpg,ycyu.jpg,RENAMED,유영찬,ycyu@samaneng.com,b582dccb5a35d0b34ea7c0354c930a8b79347504621011faa2cb65d5bda43035.jpg,HASH_MAPPED +SAMAN,196095.jpg,ycyou.jpg,RENAMED,유영춘,ycyou@samaneng.com,1c417d8d9dfed9ce5cb2a5f9cff23721151dc554bee7e54c8d6bcc2695ff29b6.jpg,HASH_MAPPED +SAMAN,224209.jpg,whyoo1.jpg,RENAMED,유원효,whyoo1@samaneng.com,bd51bbf9d0c61894db308144430b77f008d6a6aff39ff0e81726d3919aa8f7d6.jpg,HASH_MAPPED +SAMAN,205202.jpg,whyou.jpg,RENAMED,유원희,whyou@samaneng.com,3b9561e54d1f637075c1ae3f6b51dd9ed9420e44bbc068b3c34d2a9a514b3dfb.jpg,HASH_MAPPED +HANMAC,M24013.jpg,ymyu.jpg,RENAMED,유유민,ymyu@hanmaceng.co.kr,8f2e79c28abea178e27c815324ca45116cddce24792870c2be316b04ef3cf9cc.jpg,HASH_MAPPED +HANMAC,M20211.jpg,jkyu.jpg,RENAMED,유재극,jkyu@hanmaceng.co.kr,a41c70f04dbf0ccc483f017b15e342e38d2944db0c09f0bc1c3d7e6f7790c3e0.jpg,HASH_MAPPED +SAMAN,224192.jpg,jmryou.jpg,RENAMED,유재무,jmryou@samaneng.com,5ed2a5679cf4709df228c053b13989c5f706e7555894f6aaf5cddce968c115b8.jpg,HASH_MAPPED +SAMAN,224240.jpg,jmyoo.jpg,RENAMED,유재민,jmyoo@samaneng.com,2472df14973ab84994a1412dc70528eb105f0e34ba55477438ca2d5146a3e85e.jpg,HASH_MAPPED +HANMAC,M16308.jpg,jbyoo.jpg,RENAMED,유재범,jbyoo@hanmaceng.co.kr,321cf6713a6b42fed28547f6a709bba949cabd30fcc52eef40560ae39a47bcd4.jpg,HASH_MAPPED +SAMAN,226096.jpg,jbyou.jpg,RENAMED,유재봉,jbyou@samaneng.com,aa186395c21ba4180317e366dac16c0e19e76bdb2bc684db3a09ce89b94d1cf9.jpg,HASH_MAPPED +SAMAN,223081.jpg,jsyou.jpg,RENAMED,유재산,jsyou@samaneng.com,8ad3e52b7e7afd53d4af8f6ac674e75ca79beefedb38b7f16ebb2f3b26f4bd49.jpg,HASH_MAPPED +HANMAC,B20334.jpg,jwyu.jpg,RENAMED,유재욱,jwyu@hanmaceng.co.kr,63523d411033f08083704405d2ca4928cf0f167466b6aa069e99af4db759c6ac.jpg,HASH_MAPPED +SAMAN,220230.jpg,jhyoo.jpg,RENAMED,유재호,jhyoo@samaneng.com,580592c3dd56c5a6063c4364269c273260d6e89e8ed69e2b1d8150b6fbb4281c.jpg,HASH_MAPPED +HANMAC,M10502.jpg,jjyu.jpg,RENAMED,유정진,jjyu@hanmaceng.co.kr,7d236ef669d3dba27208657ed705fda4920ce3cbff6f566910c325017f4936a5.jpg,HASH_MAPPED +SAMAN,226147.jpg,jhlyu.jpg,RENAMED,유정호,jhlyu@samaneng.com,3224a4da83d4257c9017e1dbca09bbc41c982cd6f98eeee0431f6c137be7d0b5.jpg,HASH_MAPPED +SAMAN,026052.jpg,jyyu.jpg,RENAMED,유주연,jyyu@samaneng.com,45ba17c6b5ef1ec182b498bab08cb5ac25715af569c87a00e206bd7ced3205b1.jpg,HASH_MAPPED +SAMAN,219103.jpg,jsyoo.jpg,RENAMED,유준상,jsyoo@samaneng.com,a64be97c2c544a02ffff18fd90f16020b303d1350c77070c189dd5a5628f7958.jpg,HASH_MAPPED +SAMAN,225094.jpg,jhyu.jpg,RENAMED,유준희,jhyu@samaneng.com,d14e6abdedcb829513f6c40f98ccd3487dd52ff0f42a6ce8b06f7858e78d6b94.jpg,HASH_MAPPED +HANMAC,M23037.jpg,jsyu.jpg,RENAMED,유지성,jsyu@hanmaceng.co.kr,5a80505e74a78f839ce7acb5e77c180911805f08441ca1eccbcb541eebb108bd.jpg,HASH_MAPPED +HANMAC,M25069.jpg,jhyu2.jpg,RENAMED,유지훈,jhyu2@hanmaceng.co.kr,7b79260a4b8d005ab1753a3f04adaa35400948bdc7d9bcf679c5419497649f3d.jpg,HASH_MAPPED +SAMAN,223335.jpg,cjyou.jpg,RENAMED,유차정,cjyou@samaneng.com,3799afb1ba2a0fa6b8bb57d43ad9556b343fc2b34104f8c99b4edd95fb1a9906.jpg,HASH_MAPPED +HANMAC,M25059.jpg,cgyu.jpg,RENAMED,유찬근,cgyu@hanmaceng.co.kr,8cf26e72381c4e217a1761e1023636320c218799e80b75ff3879d68c4ba5335d.jpg,HASH_MAPPED +HANMAC,M02309.jpg,hkryu.jpg,RENAMED,류한규,hkryu@brsw.kr,af12d4d3e98f1f91c36034fc8c02f6f8dee369284452b7834eae90bb63e97923.jpg,HASH_MAPPED +SAMAN,225055.jpg,hjyoo2.jpg,RENAMED,유호진,hjyoo2@samaneng.com,d0d9b6905927165a6f2eab36713ff9bf4212158b9ba761d79e2c7bbc95d146eb.jpg,HASH_MAPPED +SAMAN,225297.jpg,hjyu.jpg,RENAMED,유환주,hjyu@samaneng.com,2c17530ea20af41ca9c819595e34531661b2a33d03b1383808b3a017a928d4de.jpg,HASH_MAPPED +SAMAN,218151.jpg,hsyu.jpg,RENAMED,유효식,hsyu@samaneng.com,c3c372d3d4a21c7262d62fdd096c499a906301e35e4a9e4197baf75dc4554de8.jpg,HASH_MAPPED +SAMAN,220243.jpg,hyoo.jpg,RENAMED,유훈,hyoo@samaneng.com,83f9434c0de7ac6ae9e5a52eb354e1633fc508285db4236a2da96c7f98c38be2.jpg,HASH_MAPPED +SAMAN,218089.jpg,hjyoo1.jpg,RENAMED,유희종,hjyoo1@samaneng.com,5848e53d0a30cc2bddae6014f765e651dc455957e12c4f8000fc024c0f40fe70.jpg,HASH_MAPPED +SAMAN,225320.jpg,kkyoun.jpg,RENAMED,윤경근,kkyoun@samaneng.com,b4ff5c06c523005021badd02d8d546de4124faa22edcc4d1ab4aa4a9701386a2.jpg,HASH_MAPPED +SAMAN,226083.jpg,gsyoon.jpg,RENAMED,윤구순,gsyoon@samaneng.com,a07a4c95052af3616beba4b97eab8aec34a7958242c7388808773b225490cbb1.jpg,HASH_MAPPED +SAMAN,225003.jpg,nsyoon.jpg,RENAMED,윤남선,nsyoon@samaneng.com,810e43e23bd450ca0b7d22bcb18f679a1a6e7ae744b6bcb2d8998c11bc68c9aa.jpg,HASH_MAPPED +SAMAN,217021.jpg,dhyoon.jpg,RENAMED,윤대희,dhyoon@samaneng.com,de908d5c81aea98b9bc7babbdf9a4c891e02402ac7d946a54e33988def86113c.jpg,HASH_MAPPED +SAMAN,221016.jpg,dhyoon1.jpg,RENAMED,윤도현,dhyoon1@samaneng.com,ef01d7ddfd1dae63964ace270587c23452820bcbf0d753036b7f87359855eee8.jpg,HASH_MAPPED +JANGHEON,J13305.jpg,dhyun.jpg,RENAMED,윤두현,dhyun@brsw.kr,0504fb5c1864d25bccbe0c065124e6bafcb3ab6f8fee27f5c41eddbeae3db82e.jpg,HASH_MAPPED +SAMAN,221260.jpg,mhyoon.jpg,RENAMED,윤만희,mhyoon@samaneng.com,7f4144d8cfc21d07d9cbf8ef479f0b970f891597616b261df35ae6ec7da1402d.jpg,HASH_MAPPED +SAMAN,221120.jpg,mnyoon.jpg,RENAMED,윤미나,mnyoon@samaneng.com,24ddee070dd1c5e3298bd919039c1d64e7cb010fa549a256c68cb27f9b28dcd7.jpg,HASH_MAPPED +SAMAN,205034.jpg,mjyun.jpg,RENAMED,윤미정,mjyun@samaneng.com,d3ffe2c028b88700b6666540ccd264d5cb8abbb5d50676bd2c31468479350f5c.jpg,HASH_MAPPED +HANMAC,B24016.jpg,biyun.jpg,RENAMED,윤봄이,biyun@brsw.kr,302157735d10bb7ded0558a317706472d2f20d9925ef3bacbde0a0cffaf218ae.jpg,HASH_MAPPED +SAMAN,201025.jpg,shyun2.jpg,RENAMED,윤서호,shyun2@samaneng.com,ab7e9da0388ed7cb745104a127a93d20c7ffe40b43bebc845181d7819b8f0abb.jpg,HASH_MAPPED +SAMAN,226049.jpg,smyoun.jpg,RENAMED,윤석무,smyoun@samaneng.com,cd4d344f7ee6f67bbc723b76ce5f469e8ec93333d828a1e94749b0a6cf40294f.jpg,HASH_MAPPED +JANGHEON,J09302.jpg,siyoun.jpg,RENAMED,윤선일,siyoun@brsw.kr,ec8d655254a3d751797aa17c4f38d574480a69e559d9ccce1a90ccf5057f21fa.jpg,HASH_MAPPED +HANMAC,M23010.jpg,siyoon.jpg,RENAMED,윤선일,siyoon@hanmaceng.co.kr,b31114af981eeed93e6235be39bb7e3a21be4e39c7a07aafa5d9fea900420596.jpg,HASH_MAPPED +HANMAC,M22049.jpg,swyoon.jpg,RENAMED,윤성욱,swyoon@hanmaceng.co.kr,a61d02fca4ceec3b4a704cd985fb21a8ad1109dc1c9536f7d8acec128d57aa67.jpg,HASH_MAPPED +PTC,P17201.jpg,sjyoon.jpg,RENAMED,윤성재,sjyoon@brsw.kr,0fff682e5af724f53f3cd75be372d73b54a66939ef5881dd3f908f8a3ed2138f.jpg,HASH_MAPPED +HANMAC,B21321.jpg,scyoon.jpg,RENAMED,윤성찬,scyoon@hanmaceng.co.kr,099026cd836a236bd6559cd4879c7def0fab7f0b1c9e2643ae74f13e7dd74dad.jpg,HASH_MAPPED +SAMAN,225119.jpg,shyoon1.jpg,RENAMED,윤성현,shyoon1@samaneng.com,f725612b9fe1d464267a4d156f629e3fc6050dce14daf9b0c7408e1af93030b7.jpg,HASH_MAPPED +SAMAN,216079.jpg,shyoon.jpg,RENAMED,윤성호,shyoon@hanmaceng.co.kr,3c39bd6e44353e1161da7264c0ca0e6000b1391274d38775fbadfffbe8dcc9be.jpg,HASH_MAPPED +SAMAN,221278.jpg,shyoon2.jpg,RENAMED,윤성화,shyoon2@samaneng.com,4de8b7967a1b42fd6fa42133347c64ab39a69d44d30c42a7c697e5f25b81143e.jpg,HASH_MAPPED +SAMAN,223327.jpg,skyoon.jpg,RENAMED,윤수근,skyoon@samaneng.com,2001531cbe6470a628d978626b48a93634b54285311b2500335acef70edaeaab.jpg,HASH_MAPPED +SAMAN,218157.jpg,sjyun.jpg,RENAMED,윤시중,sjyun@samaneng.com,45c437baaf9b9a4984c070de44e342773eadbb4d1a35d2c26a404df5b07935a0.jpg,HASH_MAPPED +HANMAC,M26009.jpg,ygyoon.jpg,RENAMED,윤여길,ygyoon@hanmaceng.co.kr,3223dab214cc2f4461955caffdf34f2857eeb605701bb98392d987dff0c1ad6c.jpg,HASH_MAPPED +SAMAN,225052.jpg,yjyun.jpg,RENAMED,윤여준,yjyun@samaneng.com,b4ca90e43a1f303681bf6e0d702cf3b8baa0313c8c00f698eec2cbab201b2a83.jpg,HASH_MAPPED +SAMAN,221301.jpg,ydyoon.jpg,RENAMED,윤영덕,ydyoon@samaneng.com,436965a0972da20ccc029fed0ac24e066e174802544d57345eec6d2a965fd3b1.jpg,HASH_MAPPED +SAMAN,225032.jpg,ydyun.jpg,RENAMED,윤영도,ydyun@samaneng.com,6cf6aa554e09ff419eba0c81d1e654e3f5b4b351c9bdf40e9ac5f5fe7c09dc96.jpg,HASH_MAPPED +HANMAC,B14303.jpg,yjyoon.jpg,RENAMED,윤영주,yjyoon@hanmaceng.co.kr,606930137d7074a292945e8f3387670630643d45a7ffdf745a76f097e5f6e372.jpg,HASH_MAPPED +SAMAN,217031.jpg,yysun111.jpg,RENAMED,윤용선,yysun111@samaneng.com,9729d1a5371618786db9bcf72348caea3ff1cf77ec24bce1f158b982524b31d0.jpg,HASH_MAPPED +SAMAN,222223.jpg,ehyoon.jpg,RENAMED,윤의혁,ehyoon@samaneng.com,e3ae6e937a6c54c08b13fc2f1d517ab7621cf25b2df117b4cc0cee50c5c03457.jpg,HASH_MAPPED +SAMAN,225039.jpg,jhyoon1.jpg,RENAMED,윤재효,jhyoon1@samaneng.com,56fbf4b2307f39ded3fe83c53eb9c9035a50f2670ebf434064e1fc1aff5de1dd.jpg,HASH_MAPPED +SAMAN,225344.jpg,jsyoon.jpg,RENAMED,윤정섭,jsyoon@samaneng.com,fd4b9a189a9b452e9c75777d937b5f9389fcf67f5b8c4e0d1951622229a78e49.jpg,HASH_MAPPED +SAMAN,222213.jpg,jiyun.jpg,RENAMED,윤정일,jiyun@samaneng.com,7f176d4bd57c989a9a453bba79e05ff447cb931606d6f4eb05f9d129d0b9d34c.jpg,HASH_MAPPED +HANMAC,M20405.jpg,jdyoon.jpg,RENAMED,윤종대,jdyoon@hanmaceng.co.kr,c4d81823d0ac8001abc8f2e1e04d03a96ad8b2e0d23297ff64014b1e9ff3612f.jpg,HASH_MAPPED +SAMAN,222273.jpg,jcyun.jpg,RENAMED,윤종춘,jcyun@samaneng.com,9ec55dc1124dc38f35a203bfd63faeba990b21fc17df02a3732584365d14a347.jpg,HASH_MAPPED +SAMAN,226066.jpg,jhyun.jpg,RENAMED,윤주혜,jhyun@samaneng.com,5997cb80a9b50a5135bc585c3e9f88eacad5a36d1335d6743038e3091efb6462.jpg,HASH_MAPPED +SAMAN,221293.jpg,jsyun.jpg,RENAMED,윤준수,jsyun@samaneng.com,412608e3692b24a47b29340df78106adc589e6c01b9c40ef1930a2489c00b5e3.jpg,HASH_MAPPED +SAMAN,221259.jpg,jhyoon.jpg,RENAMED,윤지헌,jhyoon@samaneng.com,ae1f44c5d56eee5e4bd114bfe3834a288d846d2df48e02057067dbe2001ca60a.jpg,HASH_MAPPED +SAMAN,203055.jpg,cyyun.jpg,RENAMED,윤찬영,cyyun@samaneng.com,ce6ecf1b1787855366748b786719d3381f51ef62b042765c53cb4aa2aeea0af2.jpg,HASH_MAPPED +SAMAN,224310.jpg,chyoon.jpg,RENAMED,윤창한,chyoon@samaneng.com,9fc3fa52ba94069737b8f5aa0283e0d480a967ce33dce40b299e9e94a0f83a27.jpg,HASH_MAPPED +SAMAN,219038.jpg,cyyoon.jpg,RENAMED,윤채연,cyyoon@samaneng.com,df2e5f2f6b73a225f5ec560954b1d34e9dee316ba87403737e1b273381c8438d.jpg,HASH_MAPPED +SAMAN,203056.jpg,cyun.jpg,RENAMED,윤철,cyun@samaneng.com,f5ae45eed16d9ecb315e252d80268384ae27f7078f663f68e49292d64fde7e1d.jpg,HASH_MAPPED +SAMAN,222148.jpg,cwyoon.jpg,RENAMED,윤철원,cwyoon@samaneng.com,01cd04c5af2f483d18b687daf76c5fe28194403e095d7351da6352d45894a7f3.jpg,HASH_MAPPED +JANGHEON,J25601.jpg,cyyun2.jpg,RENAMED,윤충열,cyyun2@brsw.kr,c7caa0b9dabc35e578f26110a25421414b3bf390fbe53911ca6a2e4f3fed5104.jpg,HASH_MAPPED +SAMAN,224057.jpg,hkyoon.jpg,RENAMED,윤현경,hkyoon@samaneng.com,4e3d8d6427fcdf48371d999fd70791300bf4cb0aa6eb789aeb27faeaa914ffb8.jpg,HASH_MAPPED +SAMAN,212120.jpg,hsyun1.jpg,RENAMED,윤현식,hsyun1@samaneng.com,bf36b1a13aedfe5bb3454d2150b2d9317119af09be78b9195097c2ddb2d8af8b.jpg,HASH_MAPPED +SAMAN,223030.jpg,hwyoon.jpg,RENAMED,윤현우,hwyoon@samaneng.com,01759c30270462146b48c382b85dc943740ea78a48efe551abba20cba17ba330.jpg,HASH_MAPPED +HANMAC,B25030.jpg,huyoon1.jpg,RENAMED,윤현욱,huyoon1@brsw.kr,ba2eb9b8c9187a0c1caa60deff322a8d7c21262d32ea55db3d7f6b1e4af845c6.jpg,HASH_MAPPED +HANMAC,M23017.jpg,hcyun.jpg,RENAMED,윤현철,hcyun@hanmaceng.co.kr,077a2173b89a98badf4f473ec55b2028a77cc8f005ded4039347519731f0eb53.jpg,HASH_MAPPED +SAMAN,224124.jpg,hyyoon.jpg,RENAMED,윤호연,hyyoon@samaneng.com,d775062e0149cf96d5946a1dbe182d9ce220790db79c305c5ac8c6400738fc02.jpg,HASH_MAPPED +SAMAN,216154.jpg,hjyoon.jpg,RENAMED,윤호진,hjyoon@samaneng.com,c86c6829845638afd77f39c61599bc1831cdf448610e16c915f792d2265c5301.jpg,HASH_MAPPED +SAMAN,194044.jpg,hsyun.jpg,RENAMED,윤홍산,hsyun@samaneng.com,22c3822d59899abbe567a90d173b5be253583524377f22e6afa566a1d6c80e4c.jpg,HASH_MAPPED +SAMAN,224027.jpg,hjyoon1.jpg,RENAMED,윤환진,hjyoon1@samaneng.com,b17ec3decc6e5d5e67408a228b6d576f9297d23f60ecb0d7461bac38946fa489.jpg,HASH_MAPPED +SAMAN,223125.jpg,huyoon.jpg,RENAMED,윤황의,huyoon@samaneng.com,2d4baedc9604f8ff83d0c018d6c71dd0c5597eaed6776fdd63967699d3890c1c.jpg,HASH_MAPPED +SAMAN,218162.jpg,hmyoon.jpg,RENAMED,윤희민,hmyoon@samaneng.com,98185a4a0ea41e17b5f5062f0cf087bad9d3e9f32b8a418819a0bec98e3669a6.jpg,HASH_MAPPED +SAMAN,223376.jpg,hsyun2.jpg,RENAMED,윤희섭,hsyun2@samaneng.com,982925e1e6a84547f72e75422750da5ecae7ff8b0b83c1fce79aa2657090138d.jpg,HASH_MAPPED +SAMAN,223269.jpg,gylee1.jpg,RENAMED,이가연,gylee1@samaneng.com,b5158cae903dbb2d43669bd39b9e143abded718b2c9afe941393d576fdd2923b.jpg,HASH_MAPPED +SAMAN,025097.jpg,ghlee3.jpg,RENAMED,이가현,ghlee3@samaneng.com,2b08121515da7803adfe7d6ca322cb5752407bbd0da4fbc045c213f62416bd46.jpg,HASH_MAPPED +HANMAC,M17209.jpg,ghlee5.jpg,RENAMED,이가형,ghlee5@hanmaceng.co.kr,eb0c1333b7c564473186b655341cea735ff2ed3528b4412cc9be84fabd0de134.jpg,HASH_MAPPED +SAMAN,217154.jpg,kwlee.jpg,RENAMED,이강욱,kwlee@samaneng.com,88d8b7e54c11ae492413b67bb5ea8a942f2d4be9390350a4639d0dd05486697d.jpg,HASH_MAPPED +SAMAN,224375.jpg,gjlee.jpg,RENAMED,이강준,gjlee@samaneng.com,0263c8179be30c98a1fdb252c7bf41288228bd45164f41ca7ec7827f6ba29784.jpg,HASH_MAPPED +SAMAN,224020.jpg,glee.jpg,RENAMED,이건,glee@samaneng.com,855b4c653343152b87271238f96872b14530ab52363a757e203792db96894bd3.jpg,HASH_MAPPED +SAMAN,217101.jpg,kklee1.jpg,RENAMED,이건기,kklee1@samaneng.com,3fe6a421d682fa1a83d15a2bcf8d91a079ab437224d0ba0c780f6b72bb375d00.jpg,HASH_MAPPED +SAMAN,225360.jpg,gilee.jpg,RENAMED,이건일,gilee@samaneng.com,142b0cda3ea13d1f6329011a7649873402f410b07534dd0e408ef7a9105113e5.jpg,HASH_MAPPED +SAMAN,221242.jpg,krlee.jpg,RENAMED,이경록,krlee@samaneng.com,0b8d77eb7d3fd6bbea5581503e9e95fb26b53100f19db706e5f544a0d5a7239c.jpg,HASH_MAPPED +SAMAN,224069.jpg,kmlee1.jpg,RENAMED,이경민,kmlee1@samaneng.com,6b90e4a2643cf64a2aabe9b3879bf8ce1210f4ee3b2b180db9d3a3a972c75eeb.jpg,HASH_MAPPED +SAMAN,225116.jpg,kmlee2.jpg,RENAMED,이경민,kmlee2@samaneng.com,53e83454481274f1d5f53330f891124a18b4da8699ae99ff5b889a1a87215eec.jpg,HASH_MAPPED +SAMAN,025019.jpg,kilee.jpg,RENAMED,이경임,kilee@samaneng.com,2ae67f04326bc140bf81aa91cf2434c938e8695938fb5b7c03fda1959b116fc9.jpg,HASH_MAPPED +PTC,P25502.jpg,khlee6.jpg,RENAMED,이경환,khlee6@brsw.kr,bfff978cc0cd8f2021d9b4f4e15f522732deacaab3e8e859574d3a234ae03ef4.jpg,HASH_MAPPED +SAMAN,224081.jpg,khlee2.jpg,RENAMED,이경훈,khlee2@samaneng.com,4965d65233328847296bdf9640ae42fadbfd0b584c4cada78a5442dcaca4d7e9.jpg,HASH_MAPPED +HANMAC,M02107.jpg,khlee5.jpg,RENAMED,이경훈,khlee5@hanmaceng.co.kr,29256a0acfeb702542889b6fde8fc2a607ae78007ddd60561950f5db935285b9.jpg,HASH_MAPPED +SAMAN,225309.jpg,khlee4.jpg,RENAMED,이관행,khlee4@samaneng.com,3d7f60499a46fcb6c69d2cc31b74e1a3274d03502776abdb258a63ee136f4114.jpg,HASH_MAPPED +SAMAN,224160.jpg,krlee1.jpg,RENAMED,이광래,krlee1@samaneng.com,7534d4115dd155af7db516f933d87903f4944d14f25177034731eeb0ee683ca1.jpg,HASH_MAPPED +SAMAN,221195.jpg,kslee2.jpg,RENAMED,이광수,kslee2@samaneng.com,ffab5205aa074a760f185ebc445dab9f690119396737fa5fdb7006d9b04dbe47.jpg,HASH_MAPPED +SAMAN,225359.jpg,kulee.jpg,RENAMED,이광업,kulee@samaneng.com,492f59e5cc96b43b636fb94c1d215e1ecf60a67e7f86f1afabe3efac7181bff4.jpg,HASH_MAPPED +HANMAC,M13301.jpg,ktlee1.jpg,RENAMED,이광태,ktlee1@hanmaceng.co.kr,b5e75003edb237c31a03d8df44f6c4bc279928e2e63ece8e359ea233fdc6ac33.jpg,HASH_MAPPED +HANMAC,M23005.jpg,ghlee6.jpg,RENAMED,이교호,ghlee6@hanmaceng.co.kr,a5024b54e93b9a33b156f1646cb2b69adfdd998d56f2582474b21eec12a2eb40.jpg,HASH_MAPPED +SAMAN,223362.jpg,ghlee2.jpg,RENAMED,이구화,ghlee2@samaneng.com,79778d5cf2945993682da2f88a07273194079892c5b28a331b9e23bf7dad79a0.jpg,HASH_MAPPED +PTC,P15101.jpg,kslee1.jpg,RENAMED,이권수,kslee1@brsw.kr,9e8ac64de26c531a9de540782e47e07b993d7a7c88dfac716881abbdce9c493d.jpg,HASH_MAPPED +SAMAN,220006.jpg,gwlee.jpg,RENAMED,이귀웅,gwlee@samaneng.com,62a6f211fa77cbbfdd92e96497a35e8daef0d69d0d2d8dbbb839632a0093a308.jpg,HASH_MAPPED +HANMAC,M26027.jpg,glee2.jpg,RENAMED,이규,glee2@hanmaceng.co.kr,9aed21b9a20868f8b728573a51929d06f90360d2a064c00c3c6ee3c390fe6713.jpg,HASH_MAPPED +HANMAC,M21102.jpg,knlee.jpg,RENAMED,이규남,knlee@hanmaceng.co.kr,577b37536d1ef60412cb2210a24f9b24ea427ba686c7a292048994449b2b1a1e.jpg,HASH_MAPPED +SAMAN,223140.jpg,kslee.jpg,RENAMED,이규수,kslee@samaneng.com,b43c90e867b4fb93dc354b01ada743521a4268b94d098e39f482e7fb045123cc.jpg,HASH_MAPPED +SAMAN,224173.jpg,ghlee.jpg,RENAMED,이규호,ghlee@samaneng.com,1a228b65f0e84fe422f9d1624acfdeea007d5f457ce7a2fa374bd87d3a117bab.jpg,HASH_MAPPED +SAMAN,225199.jpg,khlee.jpg,RENAMED,이근호,khlee@samaneng.com,1d8230e61f36c80f6a5fd61e0a9f6286dafab174072b40e7b9bc9d5f97518c35.jpg,HASH_MAPPED +SAMAN,226034.jpg,ghlee4.jpg,RENAMED,이긍희,ghlee4@samaneng.com,6563e6b0b2a7de7c5ed5d2a89d51ad98083ce31df37ec6d4fa21973209645bab.jpg,HASH_MAPPED +SAMAN,222006.jpg,kmlee.jpg,RENAMED,이기민,kmlee@samaneng.com,deac5bb5ba42ba7fc528ce8a41f185f6dc6212134172ab48f45bd165585252e1.jpg,HASH_MAPPED +SAMAN,220223.jpg,kylee.jpg,RENAMED,이기영,kylee@samaneng.com,aed9fabb2dca25ba7e083dfdd84cbe8ec8c56fd75e8d63bb51a319fc861f8904.jpg,HASH_MAPPED +SAMAN,222026.jpg,kylee2.jpg,RENAMED,이기영,kylee2@samaneng.com,812db36ada200a032b0ac4b85fc6c210e9be96a2f1f5d150a55e92f91dec0e36.jpg,HASH_MAPPED +SAMAN,223028.jpg,gylee.jpg,RENAMED,이기윤,gylee@samaneng.com,cab32614943655fd6ea50865b9a83679eec00a5626e27c7b396ab8cdb6efbb87.jpg,HASH_MAPPED +HANMAC,M06505.jpg,kjlee2.jpg,RENAMED,이기종,kjlee2@hanmaceng.co.kr,58489feabbf0a19a6b474a1b99ec2514406d8cf5ddb9b35a9bdbf97c7365b97d.jpg,HASH_MAPPED +HANMAC,M15207.jpg,kjlee.jpg,RENAMED,이기주,kjlee@hanmaceng.co.kr,f536812e8b387bfc870b6b48c35107ded8b117de445907808cd6393568c32a09.jpg,HASH_MAPPED +SAMAN,219107.jpg,ktlee.jpg,RENAMED,이기태,ktlee@samaneng.com,4cc7527671ba3d69d533c1a8bb80a143d93f0b8e6d8c5c05ad9cc47e881b1fa7.jpg,HASH_MAPPED +SAMAN,222236.jpg,khlee3.jpg,RENAMED,이기호,khlee3@samaneng.com,70e265e6a7991d77028c0597b4bc7ce97290baefb1767ddd285e0951c4a45663.jpg,HASH_MAPPED +SAMAN,212076.jpg,kdlee.jpg,RENAMED,이길도,kdlee@samaneng.com,82a4c9f1be451581bd69d0564771d8401c3c26cc24f20b9844d907dc5e3fcc71.jpg,HASH_MAPPED +HANMAC,M25044.jpg,nhlee.jpg,RENAMED,이난희,nhlee@hanmaceng.co.kr,e8aec52d8423915294123480565a8afa664588b07122a44ec3dfde8b0066d5be.jpg,HASH_MAPPED +SAMAN,224266.jpg,nclee.jpg,RENAMED,이남천,nclee@samaneng.com,0b1ab1c04a4fed13bddf5717af1aa918a838a10c0d2a6e63ff4beb09316286ce.jpg,HASH_MAPPED +HANMAC,M25011.jpg,dblee.jpg,RENAMED,이다빈,dblee@hanmaceng.co.kr,cf81d476d3a33f5b18fecb5cdc08b0440334744493a5ea81fcb99669b5e28914.jpg,HASH_MAPPED +SAMAN,024017.jpg,dslee2.jpg,RENAMED,이다솜,dslee2@samaneng.com,f1dd4fc5f36e9fbca03affed1c122073390b455b2ac1eaae990cfcdf584a2962.jpg,HASH_MAPPED +SAMAN,222134.jpg,dwlee.jpg,RENAMED,이대우,dwlee@samaneng.com,ec9dd9191b148064d4b13402a262cc57a478ea380e996f72b0de903185fdb0ee.jpg,HASH_MAPPED +SAMAN,223174.jpg,dulee.jpg,RENAMED,이대욱,dulee@samaneng.com,127a3ce64bffd174666bcd9390ba2c3b74d5558a24d85d7091e960a9a52846a7.jpg,HASH_MAPPED +SAMAN,222260.jpg,djlee.jpg,RENAMED,이대주,djlee@samaneng.com,4bfc5c1047673ff3bf493a8d44f4393a449a59ccf703618ec5f7e0d33002288e.jpg,HASH_MAPPED +SAMAN,209118.jpg,dklee1.jpg,RENAMED,이도근,dklee1@samaneng.com,75521160545cf4239fb1053e1c3e47d6b47f777f92f58ddef969131a320509ab.jpg,HASH_MAPPED +SAMAN,222116.jpg,dllee.jpg,RENAMED,이동렬,dllee@samaneng.com,30876ec32ce80b66c2dc081bb79f2befbf34b98a4c40452b9ab3998638a78bfc.jpg,HASH_MAPPED +SAMAN,225364.jpg,dslee.jpg,RENAMED,이동석,dslee@samaneng.com,752662c642afcf3bb0bf64d8929a3da25b0ceaf27e1a1c946faaaee662e6f4bc.jpg,HASH_MAPPED +HANMAC,M26020.jpg,dslee4.jpg,RENAMED,이동선,dslee4@hanmaceng.co.kr,2c6281773c582a44e1a98c8f28d313da41eee107c2021f856d1c1abb306f47a9.jpg,HASH_MAPPED +HANMAC,M23011.jpg,dslee3.jpg,RENAMED,이동식,dslee3@hanmaceng.co.kr,c491f2756ab5517aa994d4aba5b785b112126d17409ab098cf271597dbd8fcfa.jpg,HASH_MAPPED +SAMAN,222210.jpg,dylee1.jpg,RENAMED,이동엽,dylee1@samaneng.com,65d17cc3f6b93219f5bfbd06a76caf36f3ecb544ef556ba6c9ccff92ef9b1a69.jpg,HASH_MAPPED +SAMAN,217085.jpg,dylee.jpg,RENAMED,이동영,dylee@samaneng.com,ab8792e5aac0311d1696b90c7c62280631ac1bdcb9e8ef16137708501d5c2466.jpg,HASH_MAPPED +SAMAN,223008.jpg,dwlee3.jpg,RENAMED,이동우,dwlee3@samaneng.com,73d8fdac0a216c5afdccd1225159ec3e90ab1423a5a2e732e40d4f01f06f6b6f.jpg,HASH_MAPPED +SAMAN,224149.jpg,dwyi.jpg,RENAMED,이동욱,dwyi@samaneng.com,619ef7d27bf965e0e8430a4b5dd112500d94c76d0f64456a8329cd5d6c89012c.jpg,HASH_MAPPED +HANMAC,M20104.jpg,dwlee4.jpg,RENAMED,이동욱,dwlee4@hanmaceng.co.kr,9c1e8a0720b3cf6b1df28ec3ac99fb2c6c4d883c5229fcf0f7e46542f3dcbb71.jpg,HASH_MAPPED +SAMAN,219152.jpg,dwlee2.jpg,RENAMED,이동원,dwlee2@samaneng.com,dac1c357a55a2aa9f7ce39e371bc2a604bb58aba7d2e23eca9cabc47f5c9c3a4.jpg,HASH_MAPPED +SAMAN,220073.jpg,dylee2.jpg,RENAMED,이동윤,dylee2@samaneng.com,12fb9766e16710cb98a25808d00c3d1b3827d02fe81ae0b5e5608fa71c87141c.jpg,HASH_MAPPED +SAMAN,224098.jpg,djlee1.jpg,RENAMED,이동준,djlee1@samaneng.com,40e003b953fe4b2987f18f25e31eaa0312e8ad26c9d221122c1021ffb42559cf.jpg,HASH_MAPPED +HANMAC,M20205.jpg,djlee2.jpg,RENAMED,이동준,djlee2@hanmaceng.co.kr,a471fbc6fb3e7ce6520da6c66cb51355826ffe79e97f16ace0e7219458587f54.jpg,HASH_MAPPED +SAMAN,226022.jpg,dhlee1.jpg,RENAMED,이동하,dhlee1@samaneng.com,fb5470cf0427565a334cb0dd786353929a8f48f0b870d1a67f4c6ceb508ee465.jpg,HASH_MAPPED +SAMAN,224108.jpg,dhlee3.jpg,RENAMED,이동현,dhlee3@samaneng.com,7e4a317235c626c0a275471b5d9fadc34550324c4957774e89ae7cf9933ff947.jpg,HASH_MAPPED +SAMAN,224187.jpg,dhlee5.jpg,RENAMED,이동현,dhlee5@samaneng.com,1c8332b18af6c3f41ba8537fc73562bf5503b66fc94c6b8166db5762e18bb5e2.jpg,HASH_MAPPED +SAMAN,220047.jpg,dhlee.jpg,RENAMED,이동호,dhlee@samaneng.com,ec5fc33fe7d80def6a806a88fa7604af4bbd3755c747f52cf014c13426be47d8.jpg,HASH_MAPPED +HANMAC,M03201.jpg,dhlee8.jpg,RENAMED,이동훈,dhlee8@hanmaceng.co.kr,6202e29b496e73d983941f84810e4098298892ef1c3084d3b34799af70f0f3a1.jpg,HASH_MAPPED +HANMAC,M16504.jpg,dhlee7.jpg,RENAMED,이동희,dhlee7@hanmaceng.co.kr,78cba1c345409cb6fdb0d5729c58903bfa3be555ae4f720536eb1ed4ac515f32.jpg,HASH_MAPPED +SAMAN,226103.jpg,dslee1.jpg,RENAMED,이득수,dslee1@samaneng.com,b2bdb4151c94765e052e0c55cfcdc6f5f2316815d7f6fd02429017767d633b0c.jpg,HASH_MAPPED +SAMAN,222194.jpg,mslee.jpg,RENAMED,이만석,mslee@samaneng.com,f37bdeda294b572dd2c484ea7a3f3b79d2fd467a10cd6dbc15862c3195f97fd7.jpg,HASH_MAPPED +SAMAN,218110.jpg,mhlee3.jpg,RENAMED,이만희,mhlee3@samaneng.com,f8cecbbf15d11df6a9c83cd8aae966645a60d302c9ab5eeaae6febdf33996ffb.jpg,HASH_MAPPED +HANMAC,M24023.jpg,mjlee2.jpg,RENAMED,이명진,mjlee2@hanmaceng.co.kr,56558b80ef9fbc3ad0abf4bbbaad8898f8137e1367956c851df8a7d4131af15a.jpg,HASH_MAPPED +SAMAN,217034.jpg,mclee.jpg,RENAMED,이명철,mclee@samaneng.com,25ba594177dce6e8070dd774d38d8863a45c054333330197b369c0aa6d99263c.jpg,HASH_MAPPED +SAMAN,225008.jpg,mhlee4.jpg,RENAMED,이명회,mhlee4@samaneng.com,ac859a3c11dbc4a086f578862c14b0925594541f4ff24daa27283cf033fab076.jpg,HASH_MAPPED +SAMAN,223318.jpg,mylee1.jpg,RENAMED,이문영,mylee1@samaneng.com,71aece7f465af972229428a7c13e2d643048c5d290d4ad08065f8c05d0821c7d.jpg,HASH_MAPPED +SAMAN,224068.jpg,mhlee.jpg,RENAMED,이문희,mhlee@samaneng.com,f029e55f90526beb15823b86662971eda7f6d9bd4291d267b424119472f739fb.jpg,HASH_MAPPED +SAMAN,222175.jpg,mylee2.jpg,RENAMED,이미영A,mylee2@brsw.kr,6aaab38d03e83574b4abef2afa5f33552bec976f5c93151ba6cf761967397cc5.jpg,HASH_MAPPED +SAMAN,224398.jpg,mklee.jpg,RENAMED,이민규,mklee@samaneng.com,2b2f917caf6eb838ffca79d825af5cc6c68ff536d2fcfc1b2629dc648973dc8e.jpg,HASH_MAPPED +SAMAN,223164.jpg,malee.jpg,RENAMED,이민애,malee@samaneng.com,11986f8a3fed312228203f4ac01515244300e6daddd3bf7bb5215ac2c6664b49.jpg,HASH_MAPPED +SAMAN,224392.jpg,mjlee.jpg,RENAMED,이민지,mjlee@samaneng.com,1c3463b5c9301463f898eff750f44d9ed3432d1f66df6f28c4dcaf8d6b7dcd0d.jpg,HASH_MAPPED +SAMAN,220237.jpg,bslee1.jpg,RENAMED,이배성,bslee1@samaneng.com,ca734a811857d2edbb8b9ccd963851440351217690f5628cdbb46f825668fb87.jpg,HASH_MAPPED +TDC,B25031.jpg,bslee2.jpg,RENAMED,이배승,bslee2@brsw.kr,81f931388c85da0ec18cac730231827f58e5338cb1bf4751d472af413d5c557e.jpg,HASH_MAPPED +SAMAN,225138.jpg,bglee1.jpg,RENAMED,이범기,bglee1@samaneng.com,bd5f180e200b04c16f98c23b561bebdc8c94502b294b9018a882ab927bb2a1e3.jpg,HASH_MAPPED +SAMAN,206131.jpg,bjlee2.jpg,RENAMED,이범주,bjlee2@samaneng.com,45967dcafc49d3068d801ea45de26de67611b31dc5d24a837b3ac3a15d73a2a2.jpg,HASH_MAPPED +SAMAN,219176.jpg,bjlee.jpg,RENAMED,이범주,bjlee@samaneng.com,c202f64f87dada0457ff7a4e54203768bfafee1ced7eb5e4acaf47529d7a54d2.jpg,HASH_MAPPED +HANMAC,B21369.jpg,bglee2.jpg,RENAMED,이병권,bglee2@brsw.kr,f524b2f4a365e87bfe620d9c66597a163f3e364afe2f05b69d930c4fbecde538.jpg,HASH_MAPPED +HANMAC,M20101.jpg,bdlee.jpg,RENAMED,이병도,bdlee@hanmaceng.co.kr,293db08820c96169ab2e9b536605b651ca685252b3299bb9f2c11f9f7b4fe469.jpg,HASH_MAPPED +SAMAN,221126.jpg,bmlee1.jpg,RENAMED,이병민,bmlee1@samaneng.com,306f1f3056d789ed41e5e28ddddb4ce75f902f221ef4418972c355d7587e33b9.jpg,HASH_MAPPED +SAMAN,214011.jpg,bslee.jpg,RENAMED,이병설,bslee@samaneng.com,7e98a394a3a90058871f67f11185736f133715e118de404bdc004e7a1b7845d6.jpg,HASH_MAPPED +HANMAC,M16216.jpg,bwlee2.jpg,RENAMED,이병욱,bwlee2@hanmaceng.co.kr,169bfa26d2d56abd47cbcfb7846a5ae0f1635334b8f0ccb1b60fa0f090ab873d.jpg,HASH_MAPPED +HANMAC,M25013.jpg,bwlee1.jpg,RENAMED,이병욱A,bwlee1@hanmaceng.co.kr,f2cd5ce268b2d952112a503dd3e7be2ca37fe3f76c34091078c2aa346a8c7a08.jpg,HASH_MAPPED +SAMAN,223137.jpg,bclee1.jpg,RENAMED,이병찬,bclee1@samaneng.com,345394c4cca8ae7cea13b79dada0d2b90edb870a9eef6449c9720f9efc16af6e.jpg,HASH_MAPPED +SAMAN,219171.jpg,bclee.jpg,RENAMED,이병철,bclee@samaneng.com,ee3f2bf0865bbef81db1fcd88d55bfe5b0325c6fa6114837356ba9fc70ec0da3.jpg,HASH_MAPPED +HANMAC,M21428.jpg,bhlee.jpg,RENAMED,이병화,bhlee@hanmaceng.co.kr,fc4c0576a14180657984142c6333df1cc2bb085a1b55cfb145149ff82a42e3e8.jpg,HASH_MAPPED +SAMAN,222051.jpg,bylee.jpg,RENAMED,이보영,bylee@samaneng.com,ef0664ddbe7bfdcaa7ebe7bc815a267db4b52cb57aba5ef76fd512d3cf3177ce.jpg,HASH_MAPPED +SAMAN,222191.jpg,bylee1.jpg,RENAMED,이보용,bylee1@samaneng.com,e21faeb74814c477813dcf70d0922f2b1dbeaa4faef7fe4445bc377eac94a027.jpg,HASH_MAPPED +SAMAN,219148.jpg,bwlee.jpg,RENAMED,이봉우,bwlee@samaneng.com,024f6c8fbfeedf8f6f0762911a28767f86c09458a0cf82552b892808375f5cf5.jpg,HASH_MAPPED +SAMAN,216111.jpg,sgyi.jpg,RENAMED,이상길,sgyi@samaneng.com,07ab59e476a1165282c8e8ade7d719d4294729c24fd8153ca136bedccc92c2f6.jpg,HASH_MAPPED +SAMAN,225176.jpg,sdlee1.jpg,RENAMED,이상덕,sdlee1@samaneng.com,b2dc6e92b4c1f9061db5e64db56d902b4e028a29662b2d498000c89d92475b18.jpg,HASH_MAPPED +HANMAC,M26002.jpg,srlee2.jpg,RENAMED,이상록,srlee2@hanmaceng.co.kr,1d0b91d218190f89d97f1cd1c26653af266c3107f72ed8178278e4b16b21ade9.jpg,HASH_MAPPED +SAMAN,220091.jpg,sylee2.jpg,RENAMED,이상룡,sylee2@samaneng.com,c16c2ea0098a02d9c11aa62345e8656c154c030e6a4e830b57cb5901ed06bd94.jpg,HASH_MAPPED +SAMAN,219163.jpg,smlee1.jpg,RENAMED,이상만,smlee1@samaneng.com,ece2fd1da61fb466f7fe903fa477f71ccd86728eed543afb747df949fc2f43af.jpg,HASH_MAPPED +SAMAN,201048.jpg,sblee.jpg,RENAMED,이상범,sblee@samaneng.com,3f824235f2afbe3d4b0b77b41c7e9833137ea3f3cb07f1cde213c433cf71aa7d.jpg,HASH_MAPPED +SAMAN,226132.jpg,sblee4.jpg,RENAMED,이상복,sblee4@samaneng.com,34bd9508ccfe6c2edca1f078368ebb1047e9e23c2d6ca2429c9fb3241cef8ad2.jpg,HASH_MAPPED +HANMAC,M23048.jpg,sslee2.jpg,RENAMED,이상세,sslee2@hanmaceng.co.kr,9bed29e0118d5c11e1cbb86beb60ce8250925289feea4d2f17b1d05a96d53a25.jpg,HASH_MAPPED +SAMAN,224218.jpg,sslee.jpg,RENAMED,이상술,sslee@samaneng.com,d3acb1c05fad98008e495d828be77ed1a22738133a8909d7631ade4700bff274.jpg,HASH_MAPPED +SAMAN,225154.jpg,selee3.jpg,RENAMED,이상언,selee3@samaneng.com,042233ddaa0dc6bb2e3127e152db0bce2e951eb9c4ac881af5e13953090d8374.jpg,HASH_MAPPED +SAMAN,216104.jpg,sylee8.jpg,RENAMED,이상열,sylee8@samaneng.com,74394661d78fe854112af6e8c5641ccb544c3b810bdfa5a32e4d3e7c6fda02a4.jpg,HASH_MAPPED +SAMAN,220219.jpg,sylee.jpg,RENAMED,이상엽,sylee@samaneng.com,162930e6f85354913180b60321bf04022393a4ae7dc6431ab298da39f6fe5eae.jpg,HASH_MAPPED +SAMAN,222085.jpg,sylee9.jpg,RENAMED,이상엽,sylee9@samaneng.com,ef65b1d168bc96cb5f21ce47b5bd4825b35e3e0475f809d4ba47f332786b3f23.jpg,HASH_MAPPED +SAMAN,207014.jpg,sylee3.jpg,RENAMED,이상영,sylee3@samaneng.com,b1980ad4a3764af4c903f0422c7705e3e91d03f404377d469a0dc2c26b3c061a.jpg,HASH_MAPPED +SAMAN,223172.jpg,sylee7.jpg,RENAMED,이상용,sylee7@samaneng.com,cdaa2fec670576cb7ba42945baa9c3dda80d83155e23dd45e9d6f96b8cb0e352.jpg,HASH_MAPPED +HANMAC,M20407.jpg,swlee5.jpg,RENAMED,이상원,swlee5@hanmaceng.co.kr,0c38a231e22a4aef6f779a83ca6fcb37f1b6148db386cc59f8985c1648c5687a.jpg,HASH_MAPPED +SAMAN,207265.jpg,sylee5.jpg,RENAMED,이상윤,sylee5@samaneng.com,e854fdfa874591548a9f12afd086965d7b9e6a72d7c63860aa0bce6131cb75de.jpg,HASH_MAPPED +SAMAN,221251.jpg,sjlee2.jpg,RENAMED,이상준,sjlee2@samaneng.com,f7b66d8426b666357d573ff6acb01d892ea00acca5e4719d897388f57a322cb1.jpg,HASH_MAPPED +SAMAN,223177.jpg,stlee.jpg,RENAMED,이상태,stlee@samaneng.com,7724ecf1202b26f4b451e90f622b67ba227e411985f51d39370f3f4cd879b84a.jpg,HASH_MAPPED +SAMAN,217124.jpg,shlee9.jpg,RENAMED,이상현,shlee9@samaneng.com,7eb018507f50735b783a840183f20dd0b9022a00ca5af5fa207249f0b6564812.jpg,HASH_MAPPED +SAMAN,221248.jpg,shlee4.jpg,RENAMED,이상현,shlee4@samaneng.com,e590bc1b2846a1bf88b9b83ec9e37d4ae8d368886df484b6472a9e65f7b9e248.jpg,HASH_MAPPED +SAMAN,223384.jpg,shlee22.jpg,RENAMED,이상화,shlee22@samaneng.com,dde8ec51dc81a2ff54d622975d1e5533c343f0973d1e93d0bc30796cbffe0f9e.jpg,HASH_MAPPED +SAMAN,216034.jpg,shlee.jpg,RENAMED,이상희,shlee@samaneng.com,df948b1c8a42ff09ef2760adf5056babe3611613a8168af58e73ef785f1945ed.jpg,HASH_MAPPED +SAMAN,218045.jpg,shlee12.jpg,RENAMED,이상희,shlee12@samaneng.com,7ce804b1af47e1048bf0313762e3043615ee62e102f0bc17b61a080516d96ef2.jpg,HASH_MAPPED +SAMAN,226102.jpg,shlee21.jpg,RENAMED,이상희,shlee21@samaneng.com,e44e64988e06490fdae5e194c03a3c34e237c89f70637e1f225f3e07277ea5b0.jpg,HASH_MAPPED +SAMAN,213042.jpg,sylee1.jpg,RENAMED,이서연,sylee1@samaneng.com,949f0332d02fa8d22cab9c0529ecc326812d3c2ff6838085e5f3f868ff42f445.jpg,HASH_MAPPED +SAMAN,223374.jpg,sjlee8.jpg,RENAMED,이서준,sjlee8@samaneng.com,b47aa6049bd15714411fc955651e6dbff5123beab04811e09962dcc48ff37e3a.jpg,HASH_MAPPED +SAMAN,222198.jpg,sslee1.jpg,RENAMED,이석상,sslee1@samaneng.com,6527f35d16edd6162128042b2f5e83807cf2849b2966dab5e795f27c83d7f2c1.jpg,HASH_MAPPED +SAMAN,201014.jpg,sjlee3.jpg,RENAMED,이석준,sjlee3@samaneng.com,54c5d281a848d6f110dcdd5252fff098ff89176528c099b2b0c6778a3ca5f9ac.jpg,HASH_MAPPED +SAMAN,202161.jpg,shlee5.jpg,RENAMED,이석환,shlee5@samaneng.com,530ac66c34d5c18d26e28a8380d3cd5961713f1dd9f3e5c5791264ef14a169ff.jpg,HASH_MAPPED +SAMAN,218032.jpg,shlee10.jpg,RENAMED,이석훈,shlee10@samaneng.com,5da8d1a475181603552bb83b0a8bad945cbf530b8425ae4f3090fb413832b81d.jpg,HASH_MAPPED +SAMAN,222142.jpg,shlee17.jpg,RENAMED,이석훈,shlee17@samaneng.com,8dd1056a363a156242b5529cda01e1ec91e76f10ea1ea433c1cd5ef32e2cf41d.jpg,HASH_MAPPED +SAMAN,223115.jpg,sklee.jpg,RENAMED,이선구,sklee@samaneng.com,ef685dd3c9c2da529e423296eb36a359903121dbd1de01ce751a9ff3e129b4d4.jpg,HASH_MAPPED +SAMAN,207123.jpg,sylee4.jpg,RENAMED,이선영,sylee4@samaneng.com,2fda3bd9ff316e4d9cc78456b898b9ec83efbfa169df88020e18c3eab33c67de.jpg,HASH_MAPPED +SAMAN,224241.jpg,sulee.jpg,RENAMED,이선우,sulee@samaneng.com,52cf7ab3b5c079ba510a7d7f9258d62756bc8164c10073a40720f363c390ff93.jpg,HASH_MAPPED +HANMAC,M02203.jpg,swlee6.jpg,RENAMED,이선욱,swlee6@hanmaceng.co.kr,22563e99c13c4996fc51066668b87eecd11ac2de6246fbd8b4b2ab1c04e56372.jpg,HASH_MAPPED +SAMAN,226093.jpg,sjlee10.jpg,RENAMED,이선재,sjlee10@samaneng.com,c79f9bdc9a57829740a0686514b01a1ad1c6050ef33bdb40b4f45e43abb9eb91.jpg,HASH_MAPPED +SAMAN,217123.jpg,shlee7.jpg,RENAMED,이선호,shlee7@samaneng.com,7bd64d3c9935996124178c881ccc6ee2a3b522a691954520965d2a4f5785a90e.jpg,HASH_MAPPED +SAMAN,024108.jpg,shlee11.jpg,RENAMED,이선화,shlee11@samaneng.com,789487c3e89c54a5e74c6da11aee70f5c3a2a57a4866dc7b4e18317eb6229fdd.jpg,HASH_MAPPED +HANMAC,M09503.jpg,sglee3.jpg,RENAMED,이성규,sglee3@hanmaceng.co.kr,75130967921a9ad44bddcae411193dbb566980611529117a7ce832c2424d6bd3.jpg,HASH_MAPPED +SAMAN,222119.jpg,sglee1.jpg,RENAMED,이성기,sglee1@samaneng.com,ddedb50aaf2e948b8c8fddab973c211ea752c5cea18eba3c899f55ca7949643c.jpg,HASH_MAPPED +SAMAN,223163.jpg,sblee3.jpg,RENAMED,이성범,sblee3@samaneng.com,e7a2bd31221d61419827e906e3f5bba21d732c57fc0d20f15ab64ab02b2ec300.jpg,HASH_MAPPED +SAMAN,214070.jpg,selee.jpg,RENAMED,이성언,selee@samaneng.com,d2907525f7048a05dd9664571afb8905f67d2cc9f93b86bfe76e6722d0b6bf8f.jpg,HASH_MAPPED +SAMAN,220249.jpg,swlee2.jpg,RENAMED,이성우,swlee2@samaneng.com,c99f1d6886aa257af9c1a2da9ecca6b4e2e5d2b5a17d09317368735d6fc85dfa.jpg,HASH_MAPPED +SAMAN,226123.jpg,swlee4.jpg,RENAMED,이성원,swlee4@samaneng.com,8217520183dfea2b26ba52fd85e8bb8967feccffbc019987666efbf347750359.jpg,HASH_MAPPED +SAMAN,203148.jpg,sjlee5.jpg,RENAMED,이성재,sjlee5@samaneng.com,8fcee7bbe256dbafa8fd877d0e823560682b9b14583551eb538ea55eb7c18df7.jpg,HASH_MAPPED +SAMAN,221024.jpg,sjlee.jpg,RENAMED,이성재,sjlee@samaneng.com,780502c75196dd2eb921d96299494a5fa053b9a9f01f534eb79c557cfc6e1096.jpg,HASH_MAPPED +SAMAN,215005.jpg,sjlee1.jpg,RENAMED,이성준,sjlee1@samaneng.com,5c820b7dc58a9d5b57c402a76982ca7c9d411287902378134378a394b5ff4dd4.jpg,HASH_MAPPED +SAMAN,219070.jpg,shlee14.jpg,RENAMED,이성학,shlee14@samaneng.com,8ffd48e638c8fcc855df94813d67f453973ac67276e5515f876fdae62d5cfc72.jpg,HASH_MAPPED +SAMAN,225173.jpg,shlee20.jpg,RENAMED,이성현,shlee20@samaneng.com,37d40793c13cbee51aef1a53fdea9110952fac10dfb65b7cf55823cda807040a.jpg,HASH_MAPPED +SAMAN,222081.jpg,shlee16.jpg,RENAMED,이성호,shlee16@samaneng.com,3ffdc68b307596567a438761bc9be97a54ae944e72c79ecde349d6b96c86f6a3.jpg,HASH_MAPPED +SAMAN,224183.jpg,shlee18.jpg,RENAMED,이성훈,shlee18@samaneng.com,618905324a5bad22f6ad314e8ca0501ea834f2ff632f0adc5dfeda3729087bac.jpg,HASH_MAPPED +HANMAC,P13302.jpg,smlee3.jpg,RENAMED,이세민,smlee3@brsw.kr,504f9b73e65ab3ec04d22662f5ec2b6aa5f0e064747e1e09477fd8f15ffe9541.jpg,HASH_MAPPED +SAMAN,216087.jpg,shlee13.jpg,RENAMED,이세호,shlee13@samaneng.com,8e5318cb5199e3be25b50782f9eddcf1f618435812027c148555fcb30c42d02e.jpg,HASH_MAPPED +HANMAC,M18204.jpg,shlee24.jpg,RENAMED,이세화,shlee24@hanmaceng.co.kr,1088e3303f6b48ab1ff0ff7bd6eaca7915ec37479361946cb280084251eb7932.jpg,HASH_MAPPED +SAMAN,222158.jpg,smlee.jpg,RENAMED,이수문,smlee@samaneng.com,86a818dd21dd37682185a1c5466796a53977ca6d901de436de5e0cd1c1d6ff7b.jpg,HASH_MAPPED +JANGHEON,J24503.jpg,sslee3.jpg,RENAMED,이수식,sslee3@brsw.kr,66f1f9ffa1d795670bde9ff97425cccbbfe66eec2f1d2e6c3b677f594b1d367c.jpg,HASH_MAPPED +SAMAN,026076.jpg,sylee6.jpg,RENAMED,이수연,sylee6@samaneng.com,f9cbdbbc14d3c085652990aadb4d1493543bb66b5aeb65f7b018c3154afd67cc.jpg,HASH_MAPPED +SAMAN,223024.jpg,sylee10.jpg,RENAMED,이수영,sylee10@samaneng.com,4ef94c5d9e2cfdbdfe9eb10663bf97c00f607497a86e62d2b8cc2eaae923aa48.jpg,HASH_MAPPED +SAMAN,225316.jpg,swlee3.jpg,RENAMED,이수우,swlee3@samaneng.com,d83094800f97abffcfe0813fb150cd6a4b38d9e00b6cb0e582724030388c230d.jpg,HASH_MAPPED +SAMAN,224064.jpg,sjlee4.jpg,RENAMED,이수정,sjlee4@samaneng.com,ad4f6708efe98559a9e0f542c26a7f58ea535f57173286c01561d4443a03aeea.jpg,HASH_MAPPED +SAMAN,025056.jpg,sjlee6.jpg,RENAMED,이수진,sjlee6@samaneng.com,e297d0db4325608ec1477b85c9b392e9f277632d884c24359b86d0ab329a267d.jpg,HASH_MAPPED +SAMAN,205222.jpg,sclee1.jpg,RENAMED,이수창,sclee1@samaneng.com,455c1c103783e8531db53e2d1336ac2d4543fcd57f9643c357e1ca27a9648a46.jpg,HASH_MAPPED +SAMAN,222150.jpg,sclee.jpg,RENAMED,이수창,sclee@samaneng.com,4d7c6780f9a664e4e346e7e5472ac3d33b0cfa0191db77761edd898ad34d14dd.jpg,HASH_MAPPED +SAMAN,220111.jpg,srlee.jpg,RENAMED,이숭령,srlee@samaneng.com,a24b2cdfba3302dac5179260c2309108ca81ce70726cd54d116150cf6083589f.jpg,HASH_MAPPED +SAMAN,221019.jpg,shlee15.jpg,RENAMED,이숭희,shlee15@samaneng.com,0b8f1306bcdd64521e59b1476bea2781d4aba86cf7ab7f299317a670319233b2.jpg,HASH_MAPPED +SAMAN,220001.jpg,sglee2.jpg,RENAMED,이승근,sglee2@samaneng.com,96e8bb6ae486a7a2d74b091d4572c5854274de9ba0f0ba00370fd71a4ff62075.jpg,HASH_MAPPED +SAMAN,224174.jpg,sglee.jpg,RENAMED,이승기,sglee@samaneng.com,5182aa95499427862cdc60f98d0be1c54d4266f1ea8ec5ff8c93aadf37297488.jpg,HASH_MAPPED +SAMAN,223312.jpg,srlee1.jpg,RENAMED,이승렬,srlee1@samaneng.com,9d152ba83ac968f7119ecf247c048938f9680448cc484a5bd26816d8fd552839.jpg,HASH_MAPPED +SAMAN,215021.jpg,sblee2.jpg,RENAMED,이승배,sblee2@samaneng.com,57549e14838a1bcb99339a32010c5249b6d427e18736d37a5114df16d3533e73.jpg,HASH_MAPPED +SAMAN,216005.jpg,sblee1.jpg,RENAMED,이승범,sblee1@samaneng.com,c61973e53a6eded7bb7b5a1653290b22926673cbc41e412aa4503ba97f482d8b.jpg,HASH_MAPPED +SAMAN,220201.jpg,swlee1.jpg,RENAMED,이승원,swlee1@samaneng.com,38bd8ac48c2d3dd71a533ac11342328a03a8c1f135e014d19dd345767c7c7738.jpg,HASH_MAPPED +SAMAN,224226.jpg,swlee.jpg,RENAMED,이승원,swlee@samaneng.com,8798ca47da21331ba38a7f11a0d21abf68c734c2503ec549086528090ffff2dc.jpg,HASH_MAPPED +SAMAN,218064.jpg,sjlee7.jpg,RENAMED,이승종,sjlee7@samaneng.com,86f17a680ea34a4474498270591b1ae1b081e58eeed35dd6044671850dfab6e5.jpg,HASH_MAPPED +SAMAN,205081.jpg,sclee2.jpg,RENAMED,이승철,sclee2@samaneng.com,13bad46de0375ffa00c3dc3e51c0835a4427e60729bee63cccdff094e87f7c10.jpg,HASH_MAPPED +HANMAC,M24008.jpg,sclee3.jpg,RENAMED,이승철,sclee3@hanmaceng.co.kr,d53d19816c71a3556982d5286f6dc41485c279593fb3f415c19c9f2dc5ac7770.jpg,HASH_MAPPED +SAMAN,217119.jpg,shlee8.jpg,RENAMED,이승하,shlee8@samaneng.com,35ba0065c6671fb49f4083b144096cc42800ab541cad4d31804d86bd3da123ab.jpg,HASH_MAPPED +SAMAN,223041.jpg,shlee19.jpg,RENAMED,이승한,shlee19@samaneng.com,50727f7afa276c4e78f53fde0e6dca2d51c458c1476b1b49bdaeefd1b7aeaeb2.jpg,HASH_MAPPED +SAMAN,226141.jpg,shlee25.jpg,RENAMED,이승현,shlee25@samaneng.com,ab75c97c2361d0970ae3565cd5bfbca28f294bcb17510295346c1667f5294fe9.jpg,HASH_MAPPED +SAMAN,026073.jpg,shlee3.jpg,RENAMED,이승현,shlee3@samaneng.com,cb22711c0132344b45f18141018f843ecf81f27f482ae8674486155404e0e050.jpg,HASH_MAPPED +SAMAN,222049.jpg,shlee6.jpg,RENAMED,이승훈,shlee6@samaneng.com,860f48e59a856932648a6d93571f63bb8b097cbc6836fe366a16fe52322df280.jpg,HASH_MAPPED +SAMAN,215041.jpg,sdlee.jpg,RENAMED,이시동,sdlee@samaneng.com,fa9ee3f76ee2f24db31087c9e64c9baaa485d8dfe3c574f61dcf3bee26d63b01.jpg,HASH_MAPPED +SAMAN,224012.jpg,selee2.jpg,RENAMED,이시은,selee2@samaneng.com,a05f142bd14ac9064701731f48fdae3716fc4fb56188f17dedc500e1bf6b2d23.jpg,HASH_MAPPED +SAMAN,225327.jpg,selee1.jpg,RENAMED,이시의,selee1@samaneng.com,edad4b73e89755410afde1a89960fe26e5dda8d9bedefa1da9be62d9b1e191a0.jpg,HASH_MAPPED +SAMAN,210116.jpg,shlee2.jpg,RENAMED,이신혁,shlee2@samaneng.com,3f0ef44eb61e4cf752b01cd5c3c2130781f0a3cd5f61099b97ea777e1fe179b0.jpg,HASH_MAPPED +HANMAC,M02323.jpg,aylee.jpg,RENAMED,이애연,aylee@hanmaceng.co.kr,fe27853a0f4f6da2641035ce30d753a9a782274e48f5e4ff3a99eb5d92001158.jpg,HASH_MAPPED +SAMAN,224402.jpg,anlee.jpg,RENAMED,이에녹,anlee@samaneng.com,de0512f4b9e4783f17458a5dbdfa0148e53cc0c320101eea4a4f40da383f13aa.jpg,HASH_MAPPED +SAMAN,224297.jpg,yslee3.jpg,RENAMED,이연실,yslee3@samaneng.com,2780018db2353c4fe5e5c45c1fa615e538d14541bedabf634d398c88ac0c2fab.jpg,HASH_MAPPED +SAMAN,218009.jpg,yjlee3.jpg,RENAMED,이연재,yjlee3@samaneng.com,085409230b18390c90090bb9ff27cf127d15f1b4fdda1c2bc1ee246a520cf9fe.jpg,HASH_MAPPED +HANMAC,M02213.jpg,yglee3.jpg,RENAMED,이영경,yglee3@hanmaceng.co.kr,592f334a59fc4ca0102d8ca7de3ace76b3392d4172f7fe2756ab17a8f236f032.jpg,HASH_MAPPED +HANMAC,M23084.jpg,yglee2.jpg,RENAMED,이영규,yglee2@hanmaceng.co.kr,d3aa78b6c1f4c4f9ad30126dc07ea0588772b6012ab3dbe2dc7c98a1992907bb.jpg,HASH_MAPPED +SAMAN,221294.jpg,yglee.jpg,RENAMED,이영근,yglee@samaneng.com,a9478e872934c432951403a753f5f979899c1dd8282607dc24502c5d390eac9d.jpg,HASH_MAPPED +SAMAN,212085.jpg,yslee1.jpg,RENAMED,이영석,yslee1@samaneng.com,841d923b187c000788c23317ed36704d451f7d7e3a9fa66e790dbce00441bd63.jpg,HASH_MAPPED +SAMAN,226079.jpg,yslee4.jpg,RENAMED,이영석,yslee4@samaneng.com,64d100368b24cf7a24616131aea83f5a18bf420aaacfb7999b7e57469a15c2d2.jpg,HASH_MAPPED +SAMAN,215072.jpg,yslee.jpg,RENAMED,이영식,yslee@samaneng.com,07fa681d95493e42b79c180d3c0e5d4cba747c905df724661c563ac92e9ce8c6.jpg,HASH_MAPPED +SAMAN,220203.jpg,yjlee.jpg,RENAMED,이영준,yjlee@samaneng.com,1403dbd3328305489ae273b0e31014dc0bdab6d379ad8a167445b52c6083d585.jpg,HASH_MAPPED +SAMAN,225030.jpg,yjlee6.jpg,RENAMED,이영준,yjlee6@samaneng.com,4fc18f0b00d450731402f8b89eceb1d97aa8c0510f60e0e79772f0069e079ff6.jpg,HASH_MAPPED +SAMAN,220278.jpg,yjlee1.jpg,RENAMED,이영진,yjlee1@samaneng.com,abc5ac2773989aad0b5a22c49ee094657eafce6ea5aa8e62eaea05e42b7f1d3e.jpg,HASH_MAPPED +SAMAN,225374.jpg,yclee.jpg,RENAMED,이영찬,yclee@samaneng.com,9c8d0d29ca7e3c145acf07eee3799819a0d2e023fbda2dabe64cb6be677bed0b.jpg,HASH_MAPPED +SAMAN,225308.jpg,yhlee3.jpg,RENAMED,이영환,yhlee3@samaneng.com,2dc6e263d078dc48fdbc18b059c0752becec5be9010d0bc3fe6443fadc34f7b4.jpg,HASH_MAPPED +SAMAN,222219.jpg,yhlee1.jpg,RENAMED,이영훈A,yhlee1@samaneng.com,49aa327f71c512f027206efcbeb1b3937c694f328ca167f7571ab2e67e6c78d2.jpg,HASH_MAPPED +SAMAN,224096.jpg,yhlee6.jpg,RENAMED,이영훈B,yhlee6@samaneng.com,58c7e0ac1eaccb55e5021ee66160d65674941f2d94c80845ba7a70568c24955e.jpg,HASH_MAPPED +SAMAN,223154.jpg,yhlee2.jpg,RENAMED,이영희,yhlee2@samaneng.com,50c1025f357470ebdecf3bb30619905bef5cfee8379c297d2e93864f60fbe5cf.jpg,HASH_MAPPED +HANMAC,M21462.jpg,yjlee7.jpg,RENAMED,이예지,yjlee7@hanmaceng.co.kr,7d8861fd17f874017c03d256f2ed8e5ee2b579c136cddea8f87550983f9beefb.jpg,HASH_MAPPED +HANMAC,M24059.jpg,yclee1.jpg,RENAMED,이예찬,yclee1@hanmaceng.co.kr,6dfe4f2ed873b899f9926130258d16949c0adcea6b22e213c01882e0f3451fd0.jpg,HASH_MAPPED +SAMAN,225002.jpg,ymlee.jpg,RENAMED,이용목,ymlee@samaneng.com,f20d9ca56bbd503ea8bf964e60069a06f227bc6982c518c4b70cc0f29f43e74c.jpg,HASH_MAPPED +SAMAN,222201.jpg,ywlee.jpg,RENAMED,이용우,ywlee@samaneng.com,6b10c017b91737bc8ac90285cc00cb5380b4f59cde0067fea815672cd6a0c980.jpg,HASH_MAPPED +SAMAN,216009.jpg,ywlee16.jpg,RENAMED,이용운,ywlee16@samaneng.com,8f46b21c7fc3b42671fe1df081623b10d30e38a65880af99e2a33fe7021e4d01.jpg,HASH_MAPPED +SAMAN,025137.jpg,yhlee4.jpg,RENAMED,이용희,yhlee4@samaneng.com,4d7d9a7021db415a896f3beb0f0720ce79effc095459cba69d2ac6b3a50ba72d.jpg,HASH_MAPPED +HANMAC,M24054.jpg,wlee.jpg,RENAMED,이웅,wlee@hanmaceng.co.kr,c3275ddff2a1cb03d3a5064ebe963e6b95b0bfd8ab0942d953b02b4b1d3dab93.jpg,HASH_MAPPED +SAMAN,222092.jpg,wklee1.jpg,RENAMED,이웅규,wklee1@samaneng.com,b7e935dac1b0b7171dbdef68e958b38f301941098dcc111400785375951c7e0b.jpg,HASH_MAPPED +SAMAN,220177.jpg,uglee.jpg,RENAMED,이웅기,uglee@samaneng.com,8b17792b84a86c5432942e5c7ca88699ec51c405f25c8f2201d22cf4d94bea2a.jpg,HASH_MAPPED +SAMAN,218048.jpg,wklee.jpg,RENAMED,이원기,wklee@samaneng.com,6d7181fd48781d5e3130367891a9e9e1a3dea03f2ed2877c5cd4d94c70d6617f.jpg,HASH_MAPPED +SAMAN,225227.jpg,wdlee.jpg,RENAMED,이원돈,wdlee@samaneng.com,10870dd2b0928517ad9820db1f8d90b2d490442f32a7e44bdd7944ad37b2225e.jpg,HASH_MAPPED +SAMAN,206058.jpg,wblee.jpg,RENAMED,이원배,wblee@samaneng.com,5749951ba267d953dbbf420024f3a9027eea0a7c45f251b2b82dc6609f1a2197.jpg,HASH_MAPPED +HANMAC,M21460.jpg,wylee.jpg,RENAMED,이원용,wylee@hanmaceng.co.kr,048f62c7bb7f1b1ececde3ab832368bcc075decc6ef13221a2633abf556defd2.jpg,HASH_MAPPED +SAMAN,200079.jpg,wjlee.jpg,RENAMED,이원재,wjlee@samaneng.com,1a6d5c4dd64f4133281e6c6005e5d990307d1c4ea920d7df743f1c110030294b.jpg,HASH_MAPPED +SAMAN,223145.jpg,wjlee1.jpg,RENAMED,이원재,wjlee1@samaneng.com,6bd9a6d305652894370a3d0136de83a55f301671475a02447096d75ac249b2cc.jpg,HASH_MAPPED +SAMAN,226112.jpg,yhlee5.jpg,RENAMED,이유현,yhlee5@samaneng.com,3ebd7649eeae77587980fb85734d97f75a10c85cce29703910ada857b97ca29d.jpg,HASH_MAPPED +SAMAN,025124.jpg,yhlee.jpg,RENAMED,이유현,yhlee@samaneng.com,e277c9635543974f8d041b75ae28113a74be3a12e654174122f9f726335ed149.jpg,HASH_MAPPED +SAMAN,219039.jpg,yjlee4.jpg,RENAMED,이윤정,yjlee4@samaneng.com,a7ff3a06f831dabed37e27c3169ef0b0d062e5eb949eb2dc45b3d66c7dc6dd88.jpg,HASH_MAPPED +SAMAN,225379.jpg,ytlee.jpg,RENAMED,이윤택,ytlee@samaneng.com,89e2c042bbfd005692b98cd8ac92f60209d26063b5b50275963e85dc517e2348.jpg,HASH_MAPPED +SAMAN,221214.jpg,eklee.jpg,RENAMED,이은경,eklee@samaneng.com,72ecdc9479d9ec56e13fce3a50555d44114c013a59f4edc33f061809f7916df9.jpg,HASH_MAPPED +SAMAN,219072.jpg,eglee.jpg,RENAMED,이은구,eglee@samaneng.com,02518b87aaeca0a533b65bb37ce72d456a003df2112da03d8858cc3ce8d43a77.jpg,HASH_MAPPED +SAMAN,218131.jpg,eslee.jpg,RENAMED,이은섭,eslee@samaneng.com,48d067762b7f8b56b14e6666abbbc204a3a03f5c11643f05bb231ccc617f6646.jpg,HASH_MAPPED +SAMAN,025119.jpg,ejlee.jpg,RENAMED,이은주,ejlee@samaneng.com,cff4aa10bb28ae1a30db07590b35cf6668b0117b2ee818c139278120374c627c.jpg,HASH_MAPPED +SAMAN,211073.jpg,etlee.jpg,RENAMED,이은택,etlee@samaneng.com,8ed00bf15755c36bdadece45a94762a9eb4e4477fa75461bbf1b8cc7f94f1988.jpg,HASH_MAPPED +SAMAN,224123.jpg,ehlee.jpg,RENAMED,이은환,ehlee@samaneng.com,af3d23e9da64fdcfbd1d585e1ad907bd7498e20ef117233568b1501c7f2223f6.jpg,HASH_MAPPED +SAMAN,224381.jpg,eclee.jpg,RENAMED,이응채,eclee@samaneng.com,effcc3461a8ae045c569a88bd9898050fe874373007fafc5c55811fe458089cf.jpg,HASH_MAPPED +JANGHEON,J13308.jpg,ehlee25.jpg,RENAMED,이의환,ehlee25@brsw.kr,fa98db533b3c66944e89a7f2da4cc763c4fbe243ac92f442771cd913823cb43b.jpg,HASH_MAPPED +JANGHEON,J25510.jpg,iglee.jpg,RENAMED,이인갑,iglee@brsw.kr,d6d0a054d9618e0b2fe27a15b7ab15c133b2091c1f722d8965554dddd0ea47ee.jpg,HASH_MAPPED +SAMAN,213088.jpg,irlee.jpg,RENAMED,이인록,irlee@samaneng.com,f1f00a60991e762af63f2e5b0e7606e516b7877593f58d64ac261e89e21f7230.jpg,HASH_MAPPED +HANMAC,M21403.jpg,islee2.jpg,RENAMED,이인상,islee2@hanmaceng.co.kr,63d4e050d4d746e1f2dc3f9f140052845e79e716a7ef317f593c793046e3bd44.jpg,HASH_MAPPED +SAMAN,223291.jpg,islee.jpg,RENAMED,이인수,islee@samaneng.com,e39be1b0bd79380ca5843fe015f203e41e7840f7dc315023bb82e8896c4f762d.jpg,HASH_MAPPED +SAMAN,218007.jpg,iwlee.jpg,RENAMED,이인우,iwlee@samaneng.com,16d934d99824b21cee439acf91b0c0bcf9009960d97827275b0f19fa802f6beb.jpg,HASH_MAPPED +SAMAN,224356.jpg,jwlee4.jpg,RENAMED,이장원,jwlee4@samaneng.com,14971105096d67d0b6e44bf7040879f622d0863a6d3a5149bcbb0b0dba985801.jpg,HASH_MAPPED +SAMAN,217009.jpg,jklee5.jpg,RENAMED,이재국,jklee5@samaneng.com,af8bbe137f0dc797e614dce35cd4acb2b3f19e6d34c4f0ade6268ad3f71ae763.jpg,HASH_MAPPED +SAMAN,213048.jpg,jglee.jpg,RENAMED,이재규,jglee@samaneng.com,e0333cc821a87487d13e449ce4741a0bcd003a5546f1e511a5c21d200dfa7a97.jpg,HASH_MAPPED +SAMAN,217004.jpg,jklee1.jpg,RENAMED,이재근,jklee1@samaneng.com,33aa13ad6d238e314be3bfef5c62e81ec6928d7d442f4172eaf815e7bc313c12.jpg,HASH_MAPPED +SAMAN,225280.jpg,jslee4.jpg,RENAMED,이재석,jslee4@samaneng.com,11b990f1bf6c09691d2ef4d973e470ac06ece296fcc88d086fa09a8f59562613.jpg,HASH_MAPPED +HANMAC,M19501.jpg,jslee6.jpg,RENAMED,이재성,jslee6@hanmaceng.co.kr,dfbb39fe79bee145d364b0a78d4e1aff9c332f8299e6e9323cdb8a8fdc04a9a1.jpg,HASH_MAPPED +SAMAN,224277.jpg,jylee5.jpg,RENAMED,이재열,jylee5@samaneng.com,220dac57005270463f4d6f22d7e39955f10f892c7270bbed8916699a795c70db.jpg,HASH_MAPPED +JANGHEON,J18301.jpg,jylee9.jpg,RENAMED,이재영,jylee9@brsw.kr,5ecc5d8cac63e399b17d9006c0a43fd21b77589696d31bf499d76fbb681f0caf.jpg,HASH_MAPPED +SAMAN,224229.jpg,jolee.jpg,RENAMED,이재오,jolee@samaneng.com,e5c4104929ff66b42f4b633b137dfacde14850e5099b2c0b39b7b7de30f9a108.jpg,HASH_MAPPED +SAMAN,223055.jpg,jwlee6.jpg,RENAMED,이재완,jwlee6@samaneng.com,5887da4f67d55b330f5ecce3c7794f32d1fd371b22888161aef01d13dde946ae.jpg,HASH_MAPPED +SAMAN,220271.jpg,jwlee1.jpg,RENAMED,이재원,jwlee1@samaneng.com,f40277b29c0d7ccf453f9e0f6ec13e0ab90c64c83ebafc949fbf1025a65372b6.jpg,HASH_MAPPED +SAMAN,226011.jpg,jjlee3.jpg,RENAMED,이재진,jjlee3@samaneng.com,18139d67e2d8d5d4a1ad6c57c1b097c8ddc3fb6e468b0230ab9adc3ad33bc8fa.jpg,HASH_MAPPED +HANMAC,M08206.jpg,jjlee4.jpg,RENAMED,이재진,jjlee4@hanmaceng.co.kr,99c45f7071eb28e54ee42f056f76d105ed32d8b872143c6e6e2522d1cf478b0d.jpg,HASH_MAPPED +SAMAN,226008.jpg,jhlee12.jpg,RENAMED,이재현,jhlee12@samaneng.com,a3554acf2e72e493aa559b27dc9ebc541fb53b33c01f5442c6561bfb7f34a8a0.jpg,HASH_MAPPED +SAMAN,217019.jpg,jhlee6.jpg,RENAMED,이재형,jhlee6@samaneng.com,78d5ffbc9e5ebd7973d15d7aedf3ade2fa0bd8d710d32ad589417145f58e6452.jpg,HASH_MAPPED +SAMAN,220005.jpg,jhlee11.jpg,RENAMED,이재형,jhlee11@samaneng.com,ba795d2c7e96e325e1cafee59086769a09a3be0f34e6beba70181fbb448cc4eb.jpg,HASH_MAPPED +SAMAN,224236.jpg,jhlee19.jpg,RENAMED,이재흔,jhlee19@samaneng.com,1db095daabbaf9d7025b9b9f79c738ce9eec055b919d22b598bc1e0b021aad90.jpg,HASH_MAPPED +SAMAN,225220.jpg,jhlee20.jpg,RENAMED,이재희,jhlee20@samaneng.com,6abbddb405fb09a95ea2393528d26aab1602a043aa2bd45e2e9c13a8aea0a570.jpg,HASH_MAPPED +SAMAN,220125.jpg,jjlee1.jpg,RENAMED,이전진,jjlee1@samaneng.com,5c14d8ad5c3c8ef1daad25e0726e84b22261fde8c6f065e77cfc756a43f080a7.jpg,HASH_MAPPED +SAMAN,223184.jpg,jglee1.jpg,RENAMED,이정곤,jglee1@samaneng.com,715bc4df94d517a5ecb3626a98c6388ac271ad365492e42aaf89532e497f4525.jpg,HASH_MAPPED +SAMAN,219029.jpg,jklee6.jpg,RENAMED,이정구,jklee6@samaneng.com,246abcb191b1f7218d9cfde0617969764500cfe6b3a368ecf5cc65332b2b2a70.jpg,HASH_MAPPED +SAMAN,224294.jpg,jslee3.jpg,RENAMED,이정섭,jslee3@samaneng.com,4566d30028ba682a12c33909bd7a6a2f263ac6f5e116cacf93cae0d6834bb826.jpg,HASH_MAPPED +SAMAN,224281.jpg,jylee6.jpg,RENAMED,이정용,jylee6@samaneng.com,db9c69cf01f3fb7a4fd6c6743608b600d289ad312f9985df771546e4bd204bcb.jpg,HASH_MAPPED +HANMAC,M06207.jpg,jwlee7.jpg,RENAMED,이정우,jwlee7@hanmaceng.co.kr,bb820921226d2650e681d136a0f89287d9c06624b9ec5a35541a1e0c10a84c9f.jpg,HASH_MAPPED +SAMAN,224328.jpg,jwlee3.jpg,RENAMED,이정욱,jwlee3@samaneng.com,7a142cfe70e91f768f661c8b9c456a7177af062c0538436b5965202c4a3f94e1.jpg,HASH_MAPPED +SAMAN,220116.jpg,jwlee2.jpg,RENAMED,이정원,jwlee2@samaneng.com,8eaf8302b18f083b6c82e7147d198d69bedb39655ca48cc038a207c88e8dd692.jpg,HASH_MAPPED +HANMAC,M15206.jpg,jwlee8.jpg,RENAMED,이정원,jwlee8@hanmaceng.co.kr,e86cfef3a4a7fa038f6ad4e55dd38a24006d43d605461a551ed19652864ea959.jpg,HASH_MAPPED +SAMAN,218038.jpg,jilee.jpg,RENAMED,이정인,jilee@samaneng.com,68697fa0069c37bb9c181c2bbc39b553e0d1ef58eea738dad316def3f6ff954c.jpg,HASH_MAPPED +SAMAN,220080.jpg,jjlee.jpg,RENAMED,이정직,jjlee@samaneng.com,69e73f169f56414a5f0479a7885208bae7721b0e9c0c48f11cad012191582765.jpg,HASH_MAPPED +JANGHEON,J07210.jpg,jhlee9.jpg,RENAMED,이정훈,jhlee9@brsw.kr,4665d9ff9d6f86fcfb9e30c4675ee7b5caf0986ddfa8fd8d03aa27d0a1ff682d.jpg,HASH_MAPPED +SAMAN,224017.jpg,jklee3.jpg,RENAMED,이종경,jklee3@samaneng.com,31a797aa4f3b8b019c3d1df25947966abfd4688a3ba5eddb281a1fd635a85d68.jpg,HASH_MAPPED +SAMAN,216014.jpg,jklee8.jpg,RENAMED,이종관,jklee8@brsw.kr,8ba6eaea2045aebd6aae9e26a270e134c8a4a0e9e556b6c1a0b5c45aba194672.jpg,HASH_MAPPED +SAMAN,221215.jpg,jklee2.jpg,RENAMED,이종구,jklee2@samaneng.com,c1c4e0a1bc499d54b60c5b84ff96822d76651544e6863660983f9fa83060b032.jpg,HASH_MAPPED +SAMAN,224326.jpg,jglee3.jpg,RENAMED,이종구,jglee3@samaneng.com,ea4c1c843ee5e7b37f004c181a8a3c172bf79c8c887a9426f8f80718770b37de.jpg,HASH_MAPPED +SAMAN,215003.jpg,jglee2.jpg,RENAMED,이종균,jglee2@samaneng.com,167d99001c3d895ba56fce3c3239a914d39c7cc0e8490ceb60c2d83b6e84fb0f.jpg,HASH_MAPPED +SAMAN,225221.jpg,jmlee1.jpg,RENAMED,이종민,jmlee1@samaneng.com,e1ff1839019f2e8cebd903cd228b274ebfb2ffd98cd14295692c31afb3465ca8.jpg,HASH_MAPPED +HANMAC,M25048.jpg,jblee.jpg,RENAMED,이종범,jblee@hanmaceng.co.kr,beb1ed8106f16519de4181f4e904ca58e7941ca2b1750fd696c80bf989155956.jpg,HASH_MAPPED +HANMAC,M07223.jpg,jilee2.jpg,RENAMED,이종익,jilee2@hanmaceng.co.kr,ad3dbf719abaac2e3f8dff5c0252a59d7ae0a604657ac39b8ac84474ace5a984.jpg,HASH_MAPPED +SAMAN,224233.jpg,jjlee2.jpg,RENAMED,이종진,jjlee2@samaneng.com,683c64521fd26db45e8f4dcbfd5e6b8d9ea384b846528d165ac00ca1143b8f36.jpg,HASH_MAPPED +SAMAN,216113.jpg,jclee.jpg,RENAMED,이종철,jclee@samaneng.com,fb190ad30dc240eb74b0e05856d8453b62226609126b4d321b62832cdf96a9f3.jpg,HASH_MAPPED +SAMAN,215046.jpg,jtlee.jpg,RENAMED,이종태,jtlee@samaneng.com,773ebbe55d6f4bf842c6c9d54a05c67fc65d4c3b6cafe7ad70aea84eb5b6196f.jpg,HASH_MAPPED +SAMAN,218126.jpg,jhlee7.jpg,RENAMED,이종하,jhlee7@samaneng.com,1402cc28706caafdb936318697fcde9f6dadb303c16608b9f038f857a992bfff.jpg,HASH_MAPPED +SAMAN,226014.jpg,jhlee15.jpg,RENAMED,이종현,jhlee15@samaneng.com,57f21391e5b7e7d0ef753ee1d809a484b1645bc0bf4165e9999ced8542959501.jpg,HASH_MAPPED +SAMAN,202107.jpg,jhlee5.jpg,RENAMED,이종호,jhlee5@samaneng.com,ef44851531b5f9716531cdaf3dce6ecf606ff02a58fb541cb200b83383ef5247.jpg,HASH_MAPPED +SAMAN,222109.jpg,jhlee17.jpg,RENAMED,이종호,jhlee17@samaneng.com,d4b4f3a1a02451ca27cd949ef26319c8a9ae8ab17116237b503d7f6812f99410.jpg,HASH_MAPPED +SAMAN,220021.jpg,jhlee13.jpg,RENAMED,이종훈,jhlee13@samaneng.com,0814dfe7cf20c344a1db42359c00d7012d34c419edf0d93b77dd0f63c283d407.jpg,HASH_MAPPED +SAMAN,224313.jpg,jmlee.jpg,RENAMED,이주민,jmlee@samaneng.com,81da5a640353ebdc2a3450fb416a77f740274678458934ece5b5f106620b95d6.jpg,HASH_MAPPED +SAMAN,225112.jpg,jylee7.jpg,RENAMED,이주영,jylee7@samaneng.com,1516c0978d9f8c50b43695741327c39f5abd6ff5c58f5f91edaba1d6017b39ce.jpg,HASH_MAPPED +SAMAN,221022.jpg,jhlee2.jpg,RENAMED,이주형,jhlee2@samaneng.com,8d3d93d6c96464a51dbe34571c7108c228710ddc6ad02f80943dab4a79ab8293.jpg,HASH_MAPPED +SAMAN,219095.jpg,jhlee1.jpg,RENAMED,이주호,jhlee1@samaneng.com,a16dc97f1b54dd2fc1cebee4e4bd7190ba2fb30c97e3a373933aeb6d7dd39c5e.jpg,HASH_MAPPED +SAMAN,226003.jpg,jhlee14.jpg,RENAMED,이주환,jhlee14@samaneng.com,afbcb7cc89668c8c9884df5a21581eceedaa312f998fe0ceffb07b8e22d3ef0e.jpg,HASH_MAPPED +SAMAN,222174.jpg,jklee.jpg,RENAMED,이준규,jklee@samaneng.com,8aaa2155acc2372568f5aa1d29d2613cce0bcaebb44ff7cabacb7f17db8dd676.jpg,HASH_MAPPED +SAMAN,225377.jpg,jslee.jpg,RENAMED,이준석,jslee@samaneng.com,a9e73018b36b8ba236b55df838b865ef590074f63703e5b7158332324779dfee.jpg,HASH_MAPPED +SAMAN,226137.jpg,jslee5.jpg,RENAMED,이준석,jslee5@samaneng.com,fe8ea55760be0ccde6de85e5f9832c75d13852581df67090da35a2bff2049370.jpg,HASH_MAPPED +SAMAN,221249.jpg,jslee2.jpg,RENAMED,이준섭,jslee2@samaneng.com,01f8682a37433d72805a945c6ad48bfdb232817300724386c891f23df2aa986c.jpg,HASH_MAPPED +SAMAN,223046.jpg,jhlee.jpg,RENAMED,이준호,jhlee@samaneng.com,1072c3af97cff94b42cd69f5c3b2dd4a586b2e603f320ad9e2dcfb934e10658b.jpg,HASH_MAPPED +HANMAC,B18302.jpg,jhlee22.jpg,RENAMED,이준희,jhlee22@hanmaceng.co.kr,bacd0e84201e9c9f8d9425695f4902c632795ea36b2df83d686ce961ed86b05f.jpg,HASH_MAPPED +JANGHEON,J16202.jpg,jklee9.jpg,RENAMED,이중경,jklee9@brsw.kr,99b9245a36c989b52dc1c63494e57cce998bb88a46f4ecf666155466ad246ee7.jpg,HASH_MAPPED +SAMAN,221210.jpg,jhlee16.jpg,RENAMED,이중희,jhlee16@samaneng.com,2c0cd065e7a66b518f7021322207edbe312b713de89ff4d6bbc4f616d9c63ed6.jpg,HASH_MAPPED +HANMAC,M23014.jpg,jmlee3.jpg,RENAMED,이지명,jmlee3@hanmaceng.co.kr,92dcc6b90acb67e29378d4fd56daf915b07b0f9a7479a2a68b3cf91dd83f9e1b.jpg,HASH_MAPPED +HANMAC,B24021.jpg,jylee8.jpg,RENAMED,이지율,jylee8@brsw.kr,f7e98509204e6c0aad8d5771fa59885cd0127588f51a9fe59549889d7cede4f9.jpg,HASH_MAPPED +HANMAC,J14306.jpg,jhlee21.jpg,RENAMED,이지혜,jhlee21@hanmaceng.co.kr,b6e468e942995f6f62bf6a4360a89007f25e36540da325544c80303a9b41387f.jpg,HASH_MAPPED +SAMAN,221040.jpg,jslee1.jpg,RENAMED,이진수,jslee1@samaneng.com,0ad0a179d43f52daf904958e5c6bfe7dc2af9cc5b44e777d2156c237885ddeee.jpg,HASH_MAPPED +SAMAN,205091.jpg,jylee.jpg,RENAMED,이진영,jylee@samaneng.com,4cf2875ee5a62a31853e719deaf1953c88e9d8b0036a9e3b77b2e9377eb4eb44.jpg,HASH_MAPPED +SAMAN,223020.jpg,jylee1.jpg,RENAMED,이진용,jylee1@samaneng.com,6de612a3b6af239f0d9ab76b31e4cb60e1bc9b5510de654419de73f50fe7a352.jpg,HASH_MAPPED +SAMAN,225371.jpg,jwlee5.jpg,RENAMED,이진우,jwlee5@samaneng.com,ad8a14ad2bed49b6f7a9cafead0f0f7f246ac152249fdc3095fcd7f669063cbd.jpg,HASH_MAPPED +SAMAN,216116.jpg,jwlee.jpg,RENAMED,이진웅,jwlee@samaneng.com,f8499fbd9e97fb6361c24e7500f527d80b58db3e56b2cfefe26c449b25e8e74f.jpg,HASH_MAPPED +SAMAN,222028.jpg,jhlee10.jpg,RENAMED,이진형,jhlee10@samaneng.com,1b51c6ce7a381db0b0a6092f79760262c8d6e7dec720d6c71a48010313373c1a.jpg,HASH_MAPPED +HANMAC,M05207.jpg,cwlee2.jpg,RENAMED,이찬우,cwlee2@hanmaceng.co.kr,14e20d3449081409f2576b119253a6c1779ce18655d23c29570cf7e7ea6ab534.jpg,HASH_MAPPED +SAMAN,222031.jpg,clee.jpg,RENAMED,이창,clee@samaneng.com,26ef1ddabc5be19a4ed119876dec4982b800d17a5ab3a753e099f59896de02bf.jpg,HASH_MAPPED +SAMAN,224181.jpg,cglee1.jpg,RENAMED,이창걸,cglee1@samaneng.com,76e467ca1b5ca2fba6373bbe24ea89e4b32fdbf95182a4c5da3ec522ea4a4909.jpg,HASH_MAPPED +SAMAN,224211.jpg,cylee1.jpg,RENAMED,이창영,cylee1@samaneng.com,89d179ab589a46007bd30b7086f6912f984904c7cda5ea8374f67a7bbfb9bccc.jpg,HASH_MAPPED +SAMAN,224383.jpg,cylee2.jpg,RENAMED,이창영,cylee2@samaneng.com,9c272587268111d6f19ba703df89e4c0fc8093727183461d0304ade104384289.jpg,HASH_MAPPED +HANMAC,M05508.jpg,cylee3.jpg,RENAMED,이창용,cylee3@hanmaceng.co.kr,5f73c0ccfa0e79488263d36d792a7948779376813969a4b930dd345a170e888e.jpg,HASH_MAPPED +SAMAN,222009.jpg,culee.jpg,RENAMED,이창욱,culee@samaneng.com,f9c7b9ceb4f56cba5c718678672965715636db6f82cae76f134493e3548a6163.jpg,HASH_MAPPED +SAMAN,226058.jpg,cwlee1.jpg,RENAMED,이창원,cwlee1@samaneng.com,b6c3ff31fe2c4c79f2b0ba40a95a104067d6f7958d152a5c44603bff531fe6f0.jpg,HASH_MAPPED +SAMAN,200067.jpg,chlee2.jpg,RENAMED,이창호,chlee2@samaneng.com,62a415a1739a479b09eeac03e9fd3e4b42ae2deb7dd08d783e570fd91e7815e1.jpg,HASH_MAPPED +JANGHEON,J24502.jpg,chlee7.jpg,RENAMED,이창호,chlee7@brsw.kr,6455c258d1335a8903287acbc591c2f3c137499bbf05da7bd64c6ddf3253a5ba.jpg,HASH_MAPPED +SAMAN,222078.jpg,chlee.jpg,RENAMED,이창효,chlee@samaneng.com,5078125d4cb0a33eaa3c2026f215e5db02eeec03cea4f40b1d87c4aa4b1a7f51.jpg,HASH_MAPPED +SAMAN,209210.jpg,chlee4.jpg,RENAMED,이창훈,chlee4@samaneng.com,6b0bdb46638d56e17cbf5610c91daf9ec9471d72869513ef22492cc0834f2ee3.jpg,HASH_MAPPED +SAMAN,219024.jpg,cglee.jpg,RENAMED,이천기,cglee@samaneng.com,39e56405e018aa7d39af88e0405a38415547ebc55af019f5619ddebf20a55366.jpg,HASH_MAPPED +SAMAN,219136.jpg,cwlee.jpg,RENAMED,이철웅,cwlee@samaneng.com,058736da7a93b908ab488a259b1260328bd871cde8d0e5ec7ddf97814694f0a2.jpg,HASH_MAPPED +SAMAN,222003.jpg,cjlee.jpg,RENAMED,이철재,cjlee@samaneng.com,c9135566e06ccd45fceb12a57fa7b2883d9acd8c3dec59e47d369e7810737c61.jpg,HASH_MAPPED +SAMAN,225214.jpg,cjlee2.jpg,RENAMED,이철중,cjlee2@samaneng.com,24bb3e32fe3f15265b9fe611b29caf60e16483056391e13623de373320942aa6.jpg,HASH_MAPPED +SAMAN,194041.jpg,chlee10.jpg,RENAMED,이철호,chlee10@samaneng.com,f7ae43c1943bd5deedcdb2045b6f8389c7d7173d9e1625c24ea9ade09eb3620b.jpg,HASH_MAPPED +SAMAN,224217.jpg,chlee3.jpg,RENAMED,이철호,chlee3@samaneng.com,fd0adf9e6bd52f525cacddc6304595466a3f9646aa2a6cc9cffbbaffb4536d1c.jpg,HASH_MAPPED +SAMAN,221331.jpg,cylee.jpg,RENAMED,이충열,cylee@samaneng.com,2fe7fd7a2a6e7eba5f3acb277fc86dc14934aabbf31d29a21bf674edb743774c.jpg,HASH_MAPPED +SAMAN,224208.jpg,chlee1.jpg,RENAMED,이충호,chlee1@samaneng.com,f0859472543aa871c5732333d8eb0bc284f9766255d0bfa239f31fd3978f893e.jpg,HASH_MAPPED +SAMAN,225248.jpg,chlee5.jpg,RENAMED,이충호,chlee5@samaneng.com,5384d7e3ce64319d0deb854bd1e2024edc34e9cece6af0639b6a69438382567f.jpg,HASH_MAPPED +HANMAC,M24053.jpg,thlee6.jpg,RENAMED,이태환,thlee6@hanmaceng.co.kr,12a084ed525965a1f38fa499143fb142352ddb5023c1e652d77da764c9a613cb.jpg,HASH_MAPPED +SAMAN,223377.jpg,thlee4.jpg,RENAMED,이태효,thlee4@samaneng.com,ecddc490398f8de37bba1c28b6dab24e52dca30179f8ba16ff07aa903aadc78f.jpg,HASH_MAPPED +SAMAN,194048.jpg,thlee.jpg,RENAMED,이태훈,thlee@samaneng.com,9b76783d3bd1264d281a3a4a5f7e9088de96b5825202521cd3dcb2ce7fadf6b0.jpg,HASH_MAPPED +SAMAN,213014.jpg,thlee1.jpg,RENAMED,이태훈,thlee1@samaneng.com,75d7c26f3ad5c948b600d72413241a5af8b695b38d297aa2ebf5aefdbf0762ee.jpg,HASH_MAPPED +SAMAN,221270.jpg,thlee3.jpg,RENAMED,이태훈,thlee3@samaneng.com,b27fc3f39b2123474a2ce7cc29f208000515637195d091991457191a56df83ad.jpg,HASH_MAPPED +SAMAN,216010.jpg,thlee2.jpg,RENAMED,이태희,thlee2@samaneng.com,057309f0701558f4cf51f39f9078d9d9a19e4a92cf1c646a9532213dbd844201.jpg,HASH_MAPPED +SAMAN,224268.jpg,thlee5.jpg,RENAMED,이태희,thlee5@samaneng.com,530f4545a7f2b368c9790eb7fdcd557836a31db75c63c69179822a5d512f27f5.jpg,HASH_MAPPED +SAMAN,026049.jpg,hylee3.jpg,RENAMED,이하연,hylee3@samaneng.com,cac4f4aa357fb1d6f83be6db45442fe8a3fba07d0ebfc9526cd4867239e5144f.jpg,HASH_MAPPED +SAMAN,224129.jpg,hnlee1.jpg,RENAMED,이학노,hnlee1@samaneng.com,1dc173f85ce8de55bf8ead27a077233cc8f721414b9ef828ea20f641b539679e.jpg,HASH_MAPPED +SAMAN,213025.jpg,hrlee.jpg,RENAMED,이학렬,hrlee@samaneng.com,60e30b52467b2b0fe85b8c8d80c9bab2584cad8ad9af6368078204a4a4ea3862.jpg,HASH_MAPPED +HANMAC,M20105.jpg,hmlee3.jpg,RENAMED,이한민,hmlee3@hanmaceng.co.kr,b717660012e86167175e39f2e92c76a28c9e583d82e8adcdb62477008ba65a5b.jpg,HASH_MAPPED +SAMAN,222294.jpg,hulee1.jpg,RENAMED,이한울,hulee1@samaneng.com,dc54bf265c2cd53d0294532fab34c1e18553c86b9785534b886b4ad2bdab88bf.jpg,HASH_MAPPED +SAMAN,218092.jpg,hglee.jpg,RENAMED,이해광,hglee@samaneng.com,c13cd0b9dd4f0df0736afa56cacc0b54fb0cc0752113f885c17f0d36882896e5.jpg,HASH_MAPPED +SAMAN,225175.jpg,hrlee1.jpg,RENAMED,이해랑,hrlee1@samaneng.com,1ef44eeffa1f82ae441a3f3663de64843774e8295a104896bc76a90caca97a0b.jpg,HASH_MAPPED +SAMAN,225271.jpg,hlee.jpg,RENAMED,이혁,hlee@samaneng.com,9ff9abf745c94596dd8b40022f99a22c427bbf48f1134670563357c34738f9be.jpg,HASH_MAPPED +SAMAN,214084.jpg,hwlee1.jpg,RENAMED,이혁우,hwlee1@samaneng.com,9d89e43c147157a1731d0322614ed385611c935a51bfafaed1da071df6e1809b.jpg,HASH_MAPPED +HANMAC,M22067.jpg,hglee2.jpg,RENAMED,이현건,hglee2@hanmaceng.co.kr,d70e5718e2a321404feacbbb8c595467f55f85c578dbd7a745679bd6bfa2304a.jpg,HASH_MAPPED +SAMAN,224265.jpg,hklee2.jpg,RENAMED,이현경,hklee2@samaneng.com,c14b3929744b72b0aa58d19ada98d6ad8c4a36aba83c03c0cb2f8b3a6418e434.jpg,HASH_MAPPED +SAMAN,203009.jpg,hklee3.jpg,RENAMED,이현구,hklee3@hanmaceng.co.kr,b1bbfdec7e148eb50bcd8f65431ac03141192b3db0baef5ecbf591783fc146a0.jpg,HASH_MAPPED +SAMAN,225128.jpg,hklee1.jpg,RENAMED,이현규,hklee1@samaneng.com,fac15d4035574420ed273e0a967649201e69946efbbbaaa82ce7d7689276b7df.jpg,HASH_MAPPED +SAMAN,222107.jpg,hdlee.jpg,RENAMED,이현동,hdlee@samaneng.com,8c2145b7d7890c810ffccd4a40b4a1654c2eb29ffa3d743b5efc500029a2e5c3.jpg,HASH_MAPPED +SAMAN,220100.jpg,hmlee.jpg,RENAMED,이현무,hmlee@samaneng.com,cbe0c89ebab482013f74f36be9cbec46e00608fa5f3b3171d25c1f348e783e8b.jpg,HASH_MAPPED +SAMAN,225235.jpg,hylee2.jpg,RENAMED,이현욱,hylee2@samaneng.com,4be94b5bdc503ddf5d4eb5308ad8ff483b6fbe0e8c789f62e3e85494f87efc69.jpg,HASH_MAPPED +SAMAN,025054.jpg,hjlee4.jpg,RENAMED,이현주,hjlee4@samaneng.com,51a7dacb215d63920d59b4e2b8099148acf6baeeacf8de7c4ba8fe42ec1c4aec.jpg,HASH_MAPPED +SAMAN,225050.jpg,hjlee.jpg,RENAMED,이현중,hjlee@samaneng.com,2e717d002f48b7bde7a57cef3f175ad5f26ad4d9749d0303956139f81c4bef99.jpg,HASH_MAPPED +SAMAN,225246.jpg,hhlee1.jpg,RENAMED,이현희,hhlee1@samaneng.com,58d33f60b2c9ed7ad3605eebd609f483568a205b9d4aed1eeab25af5f8192a6e.jpg,HASH_MAPPED +SAMAN,225332.jpg,hslee3.jpg,RENAMED,이형석,hslee3@samaneng.com,3db8cb08fd042b696b3cba8a2dea59b285d072d9efd1d679ee00e14c783a0574.jpg,HASH_MAPPED +SAMAN,225184.jpg,hslee2.jpg,RENAMED,이혜선,hslee2@samaneng.com,6dc5c5f241b4a1c2919fd2c3a33a58be476781a51902dd647905417e70213008.jpg,HASH_MAPPED +SAMAN,218141.jpg,hklee.jpg,RENAMED,이호경,hklee@samaneng.com,abbec9efdcf0dca9bdef656461a8db68c2544528091df923e7317df56f437cde.jpg,HASH_MAPPED +JANGHEON,J23301.jpg,hblee.jpg,RENAMED,이호범,hblee@brsw.kr,86f010cc41424da6e42ccc885bf182bd0e6bd88ce363b101dab3d2396df4e930.jpg,HASH_MAPPED +HANMAC,M08303.jpg,hslee5.jpg,RENAMED,이호성,hslee5@hanmaceng.co.kr,2636bbdb662e86847479bba6c1af707da69597406561a36d38be9883fc636226.jpg,HASH_MAPPED +SAMAN,209093.jpg,hjlee2.jpg,RENAMED,이호준,hjlee2@samaneng.com,1914fb13e80a0d41c31bac6e29b07712fd29b6348e74882083e706b3548198c7.jpg,HASH_MAPPED +HANMAC,M19103.jpg,hglee4.jpg,RENAMED,이홍규,hglee4@hanmaceng.co.kr,5f2500dd26c4f6b9e51474af5a3e315866b5f2773be6e0d9130ecace0ce94560.jpg,HASH_MAPPED +SAMAN,224404.jpg,helee.jpg,RENAMED,이홍의,helee@samaneng.com,196c91108f01665ac4cef43b0ebc35db727ade24477c9b8217fc96b11787ab0e.jpg,HASH_MAPPED +HANMAC,M12205.jpg,hylee4.jpg,RENAMED,이화영,hylee4@hanmaceng.co.kr,84e6f13fea505f88821ac5a101cb996fd8d1d4f65e2365a985662c67f1e38a5e.jpg,HASH_MAPPED +SAMAN,222298.jpg,hclee.jpg,RENAMED,이화창,hclee@samaneng.com,42be26f92abc2bcb2b33aefba973b7b050e1a37b2e08a10775363cd0cc49f562.jpg,HASH_MAPPED +HANMAC,M22031.jpg,hslee6.jpg,RENAMED,이환섭,hslee6@hanmaceng.co.kr,4c85261470cea32a172eb4867af94a774ad03e6c96369aca214b060063c8562c.jpg,HASH_MAPPED +PTC,P10301.jpg,hslee7.jpg,RENAMED,이효상,hslee7@brsw.kr,e162d5dc3648ae11b6d6249a9494be56bf6603c7bc96c9c7c452f2231672cbd2.jpg,HASH_MAPPED +SAMAN,216066.jpg,hslee.jpg,RENAMED,이효석,hslee@samaneng.com,2f6039906b6889250837b3fdf8307dfdbb19ff11d414c31589b940b88dea9e5f.jpg,HASH_MAPPED +JANGHEON,J24101.jpg,hjlee5.jpg,RENAMED,이훈재,hjlee5@brsw.kr,b1090ac6179a283ab09150d95a09b94b049fe056f454c1e291c10be8c9024ef4.jpg,HASH_MAPPED +SAMAN,226032.jpg,hslee4.jpg,RENAMED,이흔석,hslee4@samaneng.com,39d6ec60bab008ad3297f94a2c98db6b57070ebef2c6ee9275e014f4c9a8b302.jpg,HASH_MAPPED +SAMAN,219104.jpg,hryi.jpg,RENAMED,이흥래,hryi@samaneng.com,d06cb8f36b03c4d963fd58d356b493245b798cded4194453d52c98bb0dde3a0d.jpg,HASH_MAPPED +SAMAN,222052.jpg,hnlee.jpg,RENAMED,이희남,hnlee@samaneng.com,14c0ef01c6642d4f63a256c746a47512f9617c2c7f1eab7add40acb0cc429758.jpg,HASH_MAPPED +SAMAN,221307.jpg,hmlee2.jpg,RENAMED,이희명,hmlee2@samaneng.com,f304c8bf39ec3146fa33af8157ee6a08fb45187247850d6c45b9175265d963da.jpg,HASH_MAPPED +SAMAN,217003.jpg,hylee.jpg,RENAMED,이희영,hylee@samaneng.com,0133b8e3b929b3179c229a8669619cd538ac8ec33abd049a6b0d88705173cb1c.jpg,HASH_MAPPED +SAMAN,223193.jpg,hylee1.jpg,RENAMED,이희용,hylee1@samaneng.com,ab49acd691efca2995ffb82425b8822f0d2b721c66b9e7f64092f56eae39ea73.jpg,HASH_MAPPED +SAMAN,224031.jpg,hwlee3.jpg,RENAMED,이희원,hwlee3@samaneng.com,0452699a14e699de509befffc2740da83737bee23c011295ee380d4970f65eda.jpg,HASH_MAPPED +SAMAN,224115.jpg,hilee1.jpg,RENAMED,이희일,hilee1@samaneng.com,d2460171ca49613b5d9b31440cb7ff146b2a388ae9a1108af8ce80ba34a4445c.jpg,HASH_MAPPED +SAMAN,221271.jpg,hjlee3.jpg,RENAMED,이희정,hjlee3@samaneng.com,d0f9c20f156d44c822c627341cc0daa9b4c1019a14d22fd0e9026f1e2746be7b.jpg,HASH_MAPPED +SAMAN,225004.jpg,hclee1.jpg,RENAMED,이희철,hclee1@samaneng.com,2d29460313a0023c1afe91a1a828e2da5a4ab3af14fae209a6e8128a5d4e8d6b.jpg,HASH_MAPPED +SAMAN,225035.jpg,kjin.jpg,RENAMED,인광진,kjin@samaneng.com,fdf406affc9b0f89278fd331b1a082481c7e132e2355391895d52d3ed1398acf.jpg,HASH_MAPPED +SAMAN,223015.jpg,indira.jpg,RENAMED,인디라,indira@samaneng.com,3b7744ade688d6de2541cf92f2020dbc54cc48806b4a2b8a7f70a1fc6f8859a5.jpg,HASH_MAPPED +SAMAN,222022.jpg,cyin.jpg,RENAMED,인치윤,cyin@samaneng.com,2d69f7a766afb6968be4bd0795afc881e6b6b5148db60f9192056ca0664bbece.jpg,HASH_MAPPED +SAMAN,220199.jpg,kjlim.jpg,RENAMED,임경진,kjlim@samaneng.com,43be0cf1b41c75af2f21274a97a99c07f44cf9319c0429cbf1c071bf5b1712e5.jpg,HASH_MAPPED +SAMAN,226100.jpg,gjim.jpg,RENAMED,임계종,gjim@samaneng.com,55f29c962c8ae9a362cd98aa68467427a73590fc17e7e77eaf373a7cc10baa79.jpg,HASH_MAPPED +SAMAN,223203.jpg,kslim1.jpg,RENAMED,임광수,kslim1@samaneng.com,8fa08b9cf1102ee1775e55b06ef1c2af6cfad3ce3480676e9d891ac3d538501c.jpg,HASH_MAPPED +SAMAN,225378.jpg,kslim2.jpg,RENAMED,임근석,kslim2@samaneng.com,e90677eea01128a910372a484fc6afcbaafefb20e052929a973ec4e7934c7e32.jpg,HASH_MAPPED +SAMAN,216158.jpg,kslim.jpg,RENAMED,임근선,kslim@samaneng.com,6b658ee3c23eb5e24eeca3de9f6913fff19892649899f45569f257aa7af73e4b.jpg,HASH_MAPPED +SAMAN,219165.jpg,gblim.jpg,RENAMED,임기봉,gblim@samaneng.com,128156b1f4f4b10a90e3f853acc11f8a35038944d093ecd44e0795bb269f3075.jpg,HASH_MAPPED +SAMAN,217091.jpg,dmlim.jpg,RENAMED,임동민,dmlim@samaneng.com,6a49c91139fbf3ae026c3741de71c9a5899f7d312ada9e5ce773436a58f397e3.jpg,HASH_MAPPED +SAMAN,220081.jpg,dhlim.jpg,RENAMED,임동하,dhlim@samaneng.com,a522587c5fdd0142e41266173f64dfd87e85cffe3eef839f6ca31d46022eb785.jpg,HASH_MAPPED +SAMAN,224290.jpg,mjlim.jpg,RENAMED,임명재,mjlim@samaneng.com,de87300aa1003f511e8f4908a59d9807978536a15eb4072b5dc3bb3c47bb0ef4.jpg,HASH_MAPPED +SAMAN,222087.jpg,mkim2.jpg,RENAMED,임민경,mkim2@samaneng.com,219222946fcf7359628f5db2eca1bf6e900fa2c07d448724541687c1d07fa03d.jpg,HASH_MAPPED +SAMAN,224083.jpg,bhlim.jpg,RENAMED,임병훈,bhlim@samaneng.com,b5fa46eaea79e1a2d44103dd261e470db306626f5ebb94b453f6bc44657fa3ec.jpg,HASH_MAPPED +SAMAN,224070.jpg,sylim1.jpg,RENAMED,임성엽,sylim1@samaneng.com,3c8472d1dcc3deab852a78f3f878955ebf895e3f11c2d6f09c1499f42a8bec06.jpg,HASH_MAPPED +SAMAN,217037.jpg,sklim.jpg,RENAMED,임세교,sklim@samaneng.com,1b60d4364932c3c40ed057acf9b95a7a18d6fefe782df1b0aa7020d5777d7daa.jpg,HASH_MAPPED +SAMAN,0205075.jpg,sglim.jpg,RENAMED,임슬기,sglim@samaneng.com,c0c99575ba5026a47ea36c52a6463fbda7acacfd4dcf2fbb088063e2d7b2512c.jpg,HASH_MAPPED +SAMAN,196084.jpg,shlim.jpg,RENAMED,임승현,shlim@samaneng.com,1c22c9c6268149c9f7f638354af4d95bd45066aeecd74f2bf808afcb7c420dcd.jpg,HASH_MAPPED +SAMAN,221176.jpg,eslim.jpg,RENAMED,임언수,eslim@samaneng.com,d34eb83a4d6ea0d4e1f428fac4560d1f52da0f7d0c53ded2718d421470695a94.jpg,HASH_MAPPED +HANMAC,M22066.jpg,yjim.jpg,RENAMED,임연재,yjim@hanmaceng.co.kr,31de0ab07a0768ba16229bbbb84168057a4f042a3314ed987b548a9e2ef38ce8.jpg,HASH_MAPPED +SAMAN,191007.jpg,wslim.jpg,RENAMED,임완수,wslim@samaneng.com,c43bcb0d14e5d8b639de9b182a603f28e6c84af416443a932b18732a3795251d.jpg,HASH_MAPPED +HANMAC,M23038.jpg,yhlim.jpg,RENAMED,임유화,yhlim@hanmaceng.co.kr,2f16da6855ceb91aef2ef5ed5b2c7a8d0ddde91608393bb1f3549bd931b69f9a.jpg,HASH_MAPPED +SAMAN,220041.jpg,jdlim.jpg,RENAMED,임재덕,jdlim@samaneng.com,61b8d5c29f1d49b1e1cdd7a89f9c30664d923688c664258cc21f1eade4173283.jpg,HASH_MAPPED +SAMAN,207065.jpg,jmlim.jpg,RENAMED,임재만,jmlim@samaneng.com,dece50ace89e5e8b391ad45a48097bedd24f19c753420105fba39fb284bac678.jpg,HASH_MAPPED +SAMAN,214034.jpg,jslim.jpg,RENAMED,임재성,jslim@samaneng.com,4a23fc597b40045f64840cbb6b9c41fd47eee1156131d4b457154a2cc840cead.jpg,HASH_MAPPED +SAMAN,224179.jpg,jnlim.jpg,RENAMED,임정남,jnlim@samaneng.com,0ae3461ad4a7da64e53bcca97c44676a894d23396c23321779ff1dcf0b4a041a.jpg,HASH_MAPPED +SAMAN,223353.jpg,jtlim.jpg,RENAMED,임정택,jtlim@samaneng.com,241beea8663283f199b146df7eca9f50dcc6f0107c4d0b50230a31f2abaa611c.jpg,HASH_MAPPED +SAMAN,026017.jpg,jhlim2.jpg,RENAMED,임정희,jhlim2@samaneng.com,3588e99346b3bee3fd80c942a5a54ad04a9bfcc626601f4bbda6a45822d51cd2.jpg,HASH_MAPPED +SAMAN,026039.jpg,jhlim1.jpg,RENAMED,임정희,jhlim1@samaneng.com,f9026f1a53aca35a2347af807d79b15dab87636eac04fe6474cafc6330b1d921.jpg,HASH_MAPPED +SAMAN,223357.jpg,jrim.jpg,RENAMED,임종열,jrim@samaneng.com,da8c9c6d18537d703e62ffb60ebe5c98656dfeab99986de88bba75acd4e7c5c6.jpg,HASH_MAPPED +SAMAN,224144.jpg,jslim1.jpg,RENAMED,임지선,jslim1@samaneng.com,9b47fef48c9c570e545cd2e65cc09b8466b1af230c79276d9511d0dea223b47b.jpg,HASH_MAPPED +SAMAN,224304.jpg,jeeim.jpg,RENAMED,임지은,jeeim@hanmaceng.co.kr,131bb29cde16567817ed1718f8cc0001b8167c3e602739ecdc2ab08cf4680725.jpg,HASH_MAPPED +SAMAN,210096.jpg,jhlim.jpg,RENAMED,임지훈,jhlim@samaneng.com,afae241d833776d0e4344d41c4ea562d3a2f2380842f26d0d085efb0c7a4e23c.jpg,HASH_MAPPED +SAMAN,225212.jpg,cklim1.jpg,RENAMED,임채규,cklim1@samaneng.com,2a37594952447792b1792fe067a5ad8a656eb679b024090e8e93df21a0cee3ec.jpg,HASH_MAPPED +SAMAN,223356.jpg,cmlim.jpg,RENAMED,임철모,cmlim@samaneng.com,cada8976d320ed2db8690102b87b9fd0de800912ea2acb009ce2a854a47c7e92.jpg,HASH_MAPPED +SAMAN,225086.jpg,cwlim.jpg,RENAMED,임철우,cwlim@samaneng.com,23a956fea8720999f8c42d0c7b926e1aa9c9beb996218a332507a185db339a99.jpg,HASH_MAPPED +SAMAN,225165.jpg,cwlim1.jpg,RENAMED,임철우,cwlim1@samaneng.com,5c5701d828de28cf5737a90a51fed496259dcc5a9cfe74529c39802b6a835fe3.jpg,HASH_MAPPED +SAMAN,183503.jpg,hslim1.jpg,RENAMED,임해선,hslim1@samaneng.com,49e8f63f97603ee26f66aebe067e93c19375e98c685d017a4227c368eed2ed68.jpg,HASH_MAPPED +SAMAN,195150.jpg,hmlim.jpg,RENAMED,임헌목,hmlim@samaneng.com,fa65ba62104cf93535a37a1e02f8f341abbf19d95e1c1e1d0c5fe9ba8b9ad039.jpg,HASH_MAPPED +SAMAN,221221.jpg,hslim2.jpg,RENAMED,임현석,hslim2@samaneng.com,286eba1a658e0133800d0151d1187d8f930a2c26a1159818a3fef509d82e0796.jpg,HASH_MAPPED +SAMAN,218063.jpg,hslim3.jpg,RENAMED,임현식,hslim3@samaneng.com,f2223dd070a7a468076f0866570cc949c58a2000b18e2489c03bdee53cfa2137.jpg,HASH_MAPPED +SAMAN,225324.jpg,hwyim.jpg,RENAMED,임현우,hwyim@samaneng.com,a267167a6d9b8613c60a6edea35350644a77687ca811e198b7cb3cd766ac4cba.jpg,HASH_MAPPED +HANMAC,M21455.jpg,hclim.jpg,RENAMED,임현철,hclim@hanmaceng.co.kr,f413ad17c993b8348daf88568add837c69d5a4fa3146a22f807c1c1b4a76cfc3.jpg,HASH_MAPPED +HANMAC,M26008.jpg,hiim.jpg,RENAMED,임호인,hiim@hanmaceng.co.kr,bf0c7e609f1da4dbcd13b6b1a59a5f8b0573187bd0c54c913583e557796d4790.jpg,HASH_MAPPED +SAMAN,204280.jpg,hjlim1.jpg,RENAMED,임효진,hjlim1@samaneng.com,7f20934441fa9e5459d8819fa13d3d76ed076790e93fba78f78e86b4d6ccc4c3.jpg,HASH_MAPPED +SAMAN,226142.jpg,kjjang.jpg,RENAMED,장경진,kjjang@samaneng.com,86c4da32f26a3674f67065651250ad86053eb495834af6df06f034f84fe0f6fd.jpg,HASH_MAPPED +SAMAN,212135.jpg,kyjang.jpg,RENAMED,장기영,kyjang@samaneng.com,46f40e9e7389ab7932bd04a10aa058e5d4d7dca434eb9c39b008d5432bed3882.jpg,HASH_MAPPED +HANMAC,M21452.jpg,gsjang.jpg,RENAMED,장길상,gsjang@hanmaceng.co.kr,818a04ce4918165099def2567aa7f71dcdfe1671ec8e56c5a19850c49b75d34c.jpg,HASH_MAPPED +SAMAN,223209.jpg,djjang.jpg,RENAMED,장덕진,djjang@samaneng.com,7a8ba1c9391deaf31d715de86d2f3d66a201905dc93bf752cc2b999bdab90ac7.jpg,HASH_MAPPED +SAMAN,223196.jpg,dhjang.jpg,RENAMED,장동화,dhjang@samaneng.com,a9e47a2c93f11e665a5e7dd368e66d9ad1bec2c052c3cf9f5b3f34d1e29b49cf.jpg,HASH_MAPPED +SAMAN,222029.jpg,djjang1.jpg,RENAMED,장두진,djjang1@samaneng.com,f1f216289a2c6bcf81615582007b5066d3ce39609e7522ecd9e3a5940cdbeb2c.jpg,HASH_MAPPED +SAMAN,217035.jpg,ruchang.jpg,RENAMED,장래욱,ruchang@samaneng.com,85d9a954f91d6e8be698fb33572af9fdedf2a0dfcbba76ace44a2a4adec92969.jpg,HASH_MAPPED +SAMAN,224376.jpg,mhjang1.jpg,RENAMED,장면학,mhjang1@samaneng.com,8c0f10fa14af4f216b1772d71b1191aff4fd38f3cc6de79f8760035826cb8a17.jpg,HASH_MAPPED +SAMAN,194017.jpg,mhjang.jpg,RENAMED,장명희,mhjang@samaneng.com,284ba50e09a91bb1db187fb132bf7d3ee69d0eb135c8fdc9b02702d666f0fcb7.jpg,HASH_MAPPED +SAMAN,025131.jpg,myjang.jpg,RENAMED,장미연,myjang@samaneng.com,1c0193833affb0b9eb07d2117cccfc9bda0db6dd9881e327797a70598d301146.jpg,HASH_MAPPED +SAMAN,222256.jpg,msjang.jpg,RENAMED,장민수,msjang@samaneng.com,ec10c2c39ec41080dc1eea6a42a74d30bf2cc3a110bf7e49fdb00a4fc54470b5.jpg,HASH_MAPPED +SAMAN,224377.jpg,bsjang.jpg,RENAMED,장보식,bsjang@samaneng.com,2a29db52f6b0f7fb7c9add9c835d8a3e41d38274d77174693a6b35afc89c74e6.jpg,HASH_MAPPED +SAMAN,213059.jpg,bsjang2.jpg,RENAMED,장부식,bsjang2@samaneng.com,74dd4302cd9d1d2a92decaaf532e0b7d13c999328491e80551ecb065550be7a2.jpg,HASH_MAPPED +SAMAN,219115.jpg,shjang1.jpg,RENAMED,장상현,shjang1@samaneng.com,284dcf54d39900ebc2b1920cef6f2a5ad71d6dceb070eb80838a9f453f6984c1.jpg,HASH_MAPPED +HANMAC,M19101.jpg,scjang.jpg,RENAMED,장석춘,scjang@hanmaceng.co.kr,ef6b88aedd702a9bb06c8a4d156d148c312fc7a91794b9fdba4f9dc2a3a51267.jpg,HASH_MAPPED +SAMAN,225177.jpg,shchang.jpg,RENAMED,장성현,shchang@samaneng.com,39a7d34280adc1001c03cf74a0aab26e6a19758c740bdf9e97abc62b36bf07a3.jpg,HASH_MAPPED +SAMAN,223014.jpg,shjang3.jpg,RENAMED,장세현,shjang3@samaneng.com,bb685570a5bfc90ecd18474e70c17558625e89edf38357054dc164276661c4ae.jpg,HASH_MAPPED +SAMAN,222289.jpg,shjang2.jpg,RENAMED,장소희,shjang2@samaneng.com,46b47a37eda8e67bb0f0397e20a29df59460a736648d2d0b93ad3d710dee21af.jpg,HASH_MAPPED +SAMAN,219111.jpg,ykjang.jpg,RENAMED,장연경,ykjang@samaneng.com,22dda3cec97c02150c0c9d2da9e353759889d1dc7adafc5de91e86f61bd44d84.jpg,HASH_MAPPED +SAMAN,217105.jpg,ysjang.jpg,RENAMED,장연수,ysjang@samaneng.com,85458ea2a34bc391d52b2772a432a54b8a5d08b4a83ceed8a5d0328807fb97a0.jpg,HASH_MAPPED +SAMAN,225232.jpg,ykjang1.jpg,RENAMED,장영규,ykjang1@samaneng.com,9fe578c100a816d71ce827fc78a3ee743983a97d46bc7d5339ec224573b594a0.jpg,HASH_MAPPED +SAMAN,225225.jpg,ywjang.jpg,RENAMED,장영완,ywjang@samaneng.com,2e3f1a3671492680869c9c4c927f20d1cc69d3e8ab09ce5936b1f0abd51dbef9.jpg,HASH_MAPPED +SAMAN,195105.jpg,wsjang.jpg,RENAMED,장완식,wsjang@samaneng.com,804e9a8b37a1bb5bf825105bf9e0813d5dc92f204de48c8dd138cb50790ead28.jpg,HASH_MAPPED +SAMAN,220147.jpg,ysjang1.jpg,RENAMED,장용섭,ysjang1@samaneng.com,671865e94c1863cb0a118bf556d02364f3a25c53227fa3892306738e0c351db7.jpg,HASH_MAPPED +SAMAN,224305.jpg,whjang.jpg,RENAMED,장우현,whjang@samaneng.com,2e5b223463688550d224bb06d239c3fa6650ee8a5cc0675941ec50e8c039133f.jpg,HASH_MAPPED +SAMAN,221147.jpg,ysjang3.jpg,RENAMED,장유선,ysjang3@samaneng.com,ba6d58e2a0378ebebaeb0179724c9072d1dfbc3ef52991ead7e13fe545047b76.jpg,HASH_MAPPED +SAMAN,223128.jpg,yjjang.jpg,RENAMED,장윤정,yjjang@samaneng.com,86d2270e5a9529c7e407c557f0e05d5a2eec86a9050eaf6811b64864f2ef080f.jpg,HASH_MAPPED +SAMAN,220136.jpg,ekjang.jpg,RENAMED,장은경,ekjang@samaneng.com,74d4dfad9ef43bb4e56e8818616d44ef1e844dca84402416548cc3c42e2aea07.jpg,HASH_MAPPED +SAMAN,225372.jpg,ehjang.jpg,RENAMED,장은호,ehjang@samaneng.com,f0d3d5436f93d003aa7937bfaf8027f31eb6f4c899e24103427f01589012df59.jpg,HASH_MAPPED +SAMAN,219056.jpg,igjang.jpg,RENAMED,장익근,igjang@samaneng.com,54e759e16c66e52b549116f8afa10f33f9fac496a18835b119e0892a86827f71.jpg,HASH_MAPPED +HANMAC,M02210.jpg,jcjang.jpg,RENAMED,장종찬,jcjang@hanmaceng.co.kr,6553022cc4c9e0c256bf1427caabb8512cd505a16a7ebb54afc160aeefca6ada.jpg,HASH_MAPPED +SAMAN,203015.jpg,jyjang.jpg,RENAMED,장진영,jyjang@samaneng.com,3580086f9577b32864961b755bfcb4acc940d4fbc7651b0937c1158b2116df94.jpg,HASH_MAPPED +SAMAN,225063.jpg,jyjang1.jpg,RENAMED,장진영,jyjang1@samaneng.com,c0b0def138a3e99058c2bd95cc0c97f640b62ff57532f369aa52d169738022ea.jpg,HASH_MAPPED +SAMAN,225066.jpg,cwjang1.jpg,RENAMED,장채운,cwjang1@samaneng.com,b416c6d4da54ba728c631eb41f9ec6d1d1f02830850deb62fa98135a1bf2c95d.jpg,HASH_MAPPED +SAMAN,212068.jpg,cwjang.jpg,RENAMED,장철원,cwjang@samaneng.com,cc209458237bf352263b47d2b66ca1c0ea7d675cb1a9dc5488899a36ad7cbc61.jpg,HASH_MAPPED +SAMAN,025052.jpg,hyjang.jpg,RENAMED,장하영,hyjang@samaneng.com,b333d7356393e01ed540a661a5aac246f0ffa99c2ab3db676120b1a2a575c5a9.jpg,HASH_MAPPED +SAMAN,224080.jpg,hgjang.jpg,RENAMED,장한규,hgjang@samaneng.com,eacb3035ea60cb0a7345930446c0a568946b360c84707b05b60f5bf69714dd7e.jpg,HASH_MAPPED +HANMAC,M25001.jpg,hjjang2.jpg,RENAMED,장혁진,hjjang2@hanmaceng.co.kr,dbfdf1bba241fc759763fa122fcf08f2d6231a4ed7568a4663ec08f5cc24571f.jpg,HASH_MAPPED +SAMAN,206019.jpg,hjjang.jpg,RENAMED,장홍준,hjjang@samaneng.com,9592cf2ccd1071a190ead76315c57f688f2c14258c71b5c264af73fd862a4d70.jpg,HASH_MAPPED +SAMAN,221066.jpg,hjjang1.jpg,RENAMED,장홍준,hjjang1@samaneng.com,a9d1bdad1b2d54dbe2fca864dfa1b62c4d4c002e147483c2f348c420910ae546.jpg,HASH_MAPPED +SAMAN,224093.jpg,hsjang.jpg,RENAMED,장효송,hsjang@samaneng.com,f01381d5640e13146e3bf2131aeb58f7d3933b95a6f73f9c94e7392827d47fdf.jpg,HASH_MAPPED +SAMAN,023088.jpg,hwjang.jpg,RENAMED,장희원,hwjang@samaneng.com,d1607c4ec138b57debd5d674b053adcc10205756dec1e64c4df2c8d410a759c7.jpg,HASH_MAPPED +SAMAN,025025.jpg,nhjun.jpg,RENAMED,전남희,nhjun@samaneng.com,8b2b0d093ae970a4e484453957461b046c4a35928ae91a2b978f9a7e680632ed.jpg,HASH_MAPPED +HANMAC,B20328.jpg,mhjeon.jpg,RENAMED,전미현,mhjeon@hallasanup.com,3f3a47f98f113a55dc6a2aa632723d3ff3f1a3909e0ec20dc2a37925937754ed.jpg,HASH_MAPPED +HANMAC,M24011.jpg,mkjeon.jpg,RENAMED,전민기,mkjeon@hanmaceng.co.kr,7329a98a08be9a006c7c339c319fe8e68ce42141931ea4f20f28fff50b543967.jpg,HASH_MAPPED +SAMAN,211040.jpg,bsjeon.jpg,RENAMED,전범식,bsjeon@samaneng.com,b38d2abdd413554cac0a2e1e47eb8a2d9ce60378ece2116e1bc0adc2aebe5b81.jpg,HASH_MAPPED +SAMAN,204074.jpg,bjjeon.jpg,RENAMED,전범진,bjjeon@samaneng.com,9e3ba67478cfb4c8664130841cd6c09480fd3097361ca9638c237c3cf8f15193.jpg,HASH_MAPPED +SAMAN,223162.jpg,bijun.jpg,RENAMED,전병익,bijun@samaneng.com,1608b7fd4d45f4de314ed0649692c6b2ba98dd81cdc27c2a484287e3b758ee01.jpg,HASH_MAPPED +SAMAN,224200.jpg,bmjeon.jpg,RENAMED,전보민,bmjeon@samaneng.com,371993afdbbb7e2c1b4816a20f724e4f3415c85a8c8af5c08ac640cc5d426220.jpg,HASH_MAPPED +SAMAN,225376.jpg,spjeon.jpg,RENAMED,전상표,spjeon@samaneng.com,17ef4291aec34d6180b7a75950be7ad844ccec18e4d90df09901b9df0a8be93d.jpg,HASH_MAPPED +HANMAC,J05208.jpg,shchun1.jpg,RENAMED,전상현,shchun1@brsw.kr,1f6d3ca24a51ee93ef402f2cf900068cc4c0f1ea41c6317c2b5774632c0903fb.jpg,HASH_MAPPED +SAMAN,223232.jpg,sgjeon.jpg,RENAMED,전성구,sgjeon@samaneng.com,d8db72eec408178892a1348ad83a7ec00ad5258a7cafe0e70afddfc35b0b6aec.jpg,HASH_MAPPED +HANMAC,M21429.jpg,sgjeon2.jpg,RENAMED,전성구,sgjeon2@hanmaceng.co.kr,4db192da9597f5ec4bb49e8d5bd0a8f0c617bc7cf455410f71f9bdb2249cbba1.jpg,HASH_MAPPED +HANMAC,M24058.jpg,smjeon.jpg,RENAMED,전성모,smjeon@hanmaceng.co.kr,54e1e5bfef496e9644f87412dc102c417341218be3d68f76aded2526f19512a5.jpg,HASH_MAPPED +SAMAN,024121.jpg,srjeon.jpg,RENAMED,전소라,srjeon@samaneng.com,191cd894ceb1168c727f0f2bd031ad85392795bdf80b2494f41eab6151f0dcff.jpg,HASH_MAPPED +HANMAC,M21468.jpg,sjjeon.jpg,RENAMED,전수진,sjjeon@hanmaceng.co.kr,7b0a95f577b67dea3a05a6506768127d6a3021f45cd5858cb0246ffd84ada121.jpg,HASH_MAPPED +SAMAN,220028.jpg,swjun.jpg,RENAMED,전순환,swjun@samaneng.com,8b7c3b4135b642ac35d8ee4045b41eef73368bf59560e72bb218c7d42df6f679.jpg,HASH_MAPPED +SAMAN,024064.jpg,aejeon.jpg,RENAMED,전아은,aejeon@samaneng.com,5e36438f006edfd2f18cf4043a0aeb9b0a33d923c86b339fe2378b9a71dcde34.jpg,HASH_MAPPED +HANMAC,M25067.jpg,ohjeon.jpg,RENAMED,전오현,ohjeon@hanmaceng.co.kr,592a95993c9c905bedd81f70d9694e6f5feeae4af9ef11f5a6101f1c46af1a45.jpg,HASH_MAPPED +SAMAN,224308.jpg,yhjeon.jpg,RENAMED,전윤희,yhjeon@samaneng.com,9bae96c5e84481de958b0f0eee625d2a72d431758176d956d84ebe76599690c5.jpg,HASH_MAPPED +HANMAC,M16401.jpg,esjeon.jpg,RENAMED,전은수,esjeon@hanmaceng.co.kr,b8500a3e029b9437df0a01192b3627f46bb6bf3a98551d2c85b944d2be0393ac.jpg,HASH_MAPPED +SAMAN,224091.jpg,jgjeon.jpg,RENAMED,전제경,jgjeon@samaneng.com,50ec81b7e2e2cfe934b5d48fb875ca6dcbc776f5fb8e7f2fcbac6098505f8df9.jpg,HASH_MAPPED +HANMAC,M16511.jpg,jsjeon.jpg,RENAMED,전준수,jsjeon@hanmaceng.co.kr,b9a1b9dc98cc172ff867ef817c638c36f074065be0b57f5ee69eb53a1e0448fb.jpg,HASH_MAPPED +SAMAN,026038.jpg,jyjeon.jpg,RENAMED,전지영,jyjeon@samaneng.com,f26a36d441d6f84649db5cebec0d8b536002962438632e9ccc994e35ee95661a.jpg,HASH_MAPPED +HANMAC,M07317.jpg,csjeon.jpg,RENAMED,전찬성,csjeon@hanmaceng.co.kr,15a42efff1f06373e98227d1a59299bc556f7d8326c1b5953efb2f91991c29af.jpg,HASH_MAPPED +SAMAN,223255.jpg,thjeon.jpg,RENAMED,전태훈,thjeon@samaneng.com,a91ec40393ebcd61e97b9932b7d066584602865bb9c3d2be2a30b81ab0b2a93a.jpg,HASH_MAPPED +SAMAN,226078.jpg,psjeon.jpg,RENAMED,전필성,psjeon@samaneng.com,3dde157ffc59598700f7b4fdd49a7c875d27c1d600557638c2b84e94de99d70a.jpg,HASH_MAPPED +SAMAN,219035.jpg,hsjeon.jpg,RENAMED,전한설,hsjeon@samaneng.com,f32ff9bd8c59426920682fd819609caabc686314ec51180e00cf1b7d3dcbb826.jpg,HASH_MAPPED +SAMAN,025125.jpg,hjjeon1.jpg,RENAMED,전현정,hjjeon1@samaneng.com,a34c514f5a7a62ae3ab3518921861bff84640e0021bf83209e775dad8e1648eb.jpg,HASH_MAPPED +SAMAN,224235.jpg,hgjeon.jpg,RENAMED,전형근,hgjeon@samaneng.com,2fd9bc9452fd117b4936bc53ab4db21a7b529c0a3121be1d816951f43bc0470a.jpg,HASH_MAPPED +SAMAN,223367.jpg,hmjeon.jpg,RENAMED,전형민,hmjeon@samaneng.com,7bc3e0ee2e10313ebd5b246889a53c594c5fa2325b8728f52e7f76d7f0319769.jpg,HASH_MAPPED +SAMAN,225268.jpg,hsjeon2.jpg,RENAMED,전형섭,hsjeon2@samaneng.com,9fbca72da6b5c969d13829b9ac28d1ac828987d9e2f26a95028c2fab81391c08.jpg,HASH_MAPPED +SAMAN,224071.jpg,hjjeon.jpg,RENAMED,전형진,hjjeon@samaneng.com,a18d01a8b3fdbe4ab94e46f5ffec347f548c090a5f62b0c2fc7ae8afb17f617c.jpg,HASH_MAPPED +SAMAN,226074.jpg,hsjeon3.jpg,RENAMED,전호성,hsjeon3@samaneng.com,69bb6d565cb5ca97c6f75aab2f0e93add33854cb29277d5d213603b7d3325b72.jpg,HASH_MAPPED +SAMAN,220070.jpg,hcjun.jpg,RENAMED,전홍찬,hcjun@samaneng.com,c3a45acf30b74a365d26f42a70b93f9ede9dfe89b3e28d6afdc451f5fe00e94e.jpg,HASH_MAPPED +SAMAN,208178.jpg,hmjun.jpg,RENAMED,전효만,hmjun@samaneng.com,75f7da3d18e88a7cf7915510ce095235d66487614c4d93ac3dc2c608ec2c78a1.jpg,HASH_MAPPED +SAMAN,024107.jpg,hsjeon1.jpg,RENAMED,전희숙,hsjeon1@samaneng.com,35469776c5cdc90d94c6afbf84202bda47a64cf5a06894df4b89e58ecfecbb34.jpg,HASH_MAPPED +SAMAN,225256.jpg,ggjeong.jpg,RENAMED,정갑균,ggjeong@samaneng.com,0cc2f8745c0c233a3fbe8f673c28656aa599bbe91686699a24173274d6035fc9.jpg,HASH_MAPPED +SAMAN,223182.jpg,kyjung.jpg,RENAMED,정경열,kyjung@samaneng.com,057ffacacbbd26cd0eaa8d0f17e4d1b7eccd1c8c08874ca9c15e169e0573da49.jpg,HASH_MAPPED +SAMAN,222265.jpg,kjjeong.jpg,RENAMED,정경조,kjjeong@samaneng.com,d6458ad9374a31f00221907621e2e45caee869d5d9abfc5690aa3b0d1a875a21.jpg,HASH_MAPPED +SAMAN,225120.jpg,gyjung1.jpg,RENAMED,정계영,gyjung1@samaneng.com,384c5f84a5431632d962899a04020345bc3b279db31c98f28c7fdb97d2835f6d.jpg,HASH_MAPPED +SAMAN,218001.jpg,kwjeong.jpg,RENAMED,정계완,kwjeong@samaneng.com,1c15d77a0da015a67a2cf540b942d7ad84f1365c482a56b0acc85aaf0e8cb22e.jpg,HASH_MAPPED +SAMAN,226131.jpg,knjeong.jpg,RENAMED,정광남,knjeong@samaneng.com,a37f91624e5de62c6484c89d059fca84bd5ac939b0990485837debce690b253d.jpg,HASH_MAPPED +SAMAN,223329.jpg,kschung.jpg,RENAMED,정광섭,kschung@samaneng.com,a5e72b5e63c370fb0be9958a90ae838fb2277657faad0801e2a92012e36ef8fd.jpg,HASH_MAPPED +SAMAN,222239.jpg,khjung.jpg,RENAMED,정광호,khjung@samaneng.com,51582c395fff0ffeb3ff03745bdbf4e12a3f423a363e044c3c28045f092aa3a0.jpg,HASH_MAPPED +SAMAN,220143.jpg,ghjeong1.jpg,RENAMED,정국환,ghjeong1@samaneng.com,11779f6cd453d071a441da42935c7e8a07e19346ee6ea396cdda77f80b592ffa.jpg,HASH_MAPPED +SAMAN,225234.jpg,kjeong.jpg,RENAMED,정권,kjeong@samaneng.com,26f48deeff7627f02ece9e48349006a24c1cf52f6b69035f66a0f8e1705f2d69.jpg,HASH_MAPPED +SAMAN,219197.jpg,ghjeong.jpg,RENAMED,정귀한,ghjeong@samaneng.com,f80437d730de3f57759447ca024c050cbcb1dd3d07f09096440569bac5abe26f.jpg,HASH_MAPPED +SAMAN,222130.jpg,gyjung.jpg,RENAMED,정규영,gyjung@samaneng.com,b8800b46a73f1485415abc90ace463f7bff586c47059887aa8f1399556b4131b.jpg,HASH_MAPPED +SAMAN,216168.jpg,gsjung.jpg,RENAMED,정근식,gsjung@samaneng.com,cb8648d94bc49950c0fdaaa4c427ebb97677b99219621bd616d7a4b5e1474390.jpg,HASH_MAPPED +SAMAN,217114.jpg,kijeong.jpg,RENAMED,정기일,kijeong@samaneng.com,fc2c9c04453c95ab1a50bb8ea633658d40b74fd63bf7663b719c2f081649172f.jpg,HASH_MAPPED +SAMAN,222144.jpg,kcjeong.jpg,RENAMED,정기철,kcjeong@samaneng.com,5e7d3f5c6d07e865abdd1f0dd688f7192eee39dfb87a69f1445b174cfa396358.jpg,HASH_MAPPED +SAMAN,216135.jpg,nhjung.jpg,RENAMED,정낙훈,nhjung@samaneng.com,20d817c73eb0d0b89ed4efc0e649a8f004e7d8365225decceeee5112ee346d1d.jpg,HASH_MAPPED +SAMAN,225262.jpg,dhjeong.jpg,RENAMED,정대환,dhjeong@samaneng.com,e85fe9b8edad940f9b798d6fd0e913c5eb60f3f684c1922523b7c90a404c1b85.jpg,HASH_MAPPED +HANMAC,M22074.jpg,dyjung2.jpg,RENAMED,정도영,dyjung2@hanmaceng.co.kr,664241ef84696850297704d1948252db4bc8ffd11869d3fbb957b55c06c6cb70.jpg,HASH_MAPPED +SAMAN,224032.jpg,dyjung.jpg,RENAMED,정도윤,dyjung@samaneng.com,681636a9c42e51425575e3a7d0b864733b700dba0f6c707ed0c129a27a4b26d0.jpg,HASH_MAPPED +SAMAN,222221.jpg,dejeong.jpg,RENAMED,정동언,dejeong@samaneng.com,24f6a58e614ceba70ec6f4b0940c4864e3ded2f2fd6bdb8968551cb2504db02e.jpg,HASH_MAPPED +SAMAN,223192.jpg,dhjung.jpg,RENAMED,정동희,dhjung@samaneng.com,6474ef16103fcb5169ca4117c990483d0b65e111677ef3dc28e591af572ff11f.jpg,HASH_MAPPED +SAMAN,223099.jpg,dwjung.jpg,RENAMED,정두휘,dwjung@samaneng.com,b2d6e8c686cfb413ecf4d7cc15570a26ec03275ca23b74ff0b00f401da6bb54c.jpg,HASH_MAPPED +SAMAN,221218.jpg,mjjeong.jpg,RENAMED,정만직,mjjeong@samaneng.com,8e517a937cc661532d216ca4dbf6a6e2e1d8b4cc1a73563f047bb63173fb4115.jpg,HASH_MAPPED +SAMAN,216070.jpg,mjjeong1.jpg,RENAMED,정명준,mjjeong1@samaneng.com,8aff6158eee006d4876ac80b4a45c6d3925ee0d25ed1d4a3402011be194cfe10.jpg,HASH_MAPPED +SAMAN,219174.jpg,mkjung.jpg,RENAMED,정미경,mkjung@samaneng.com,e3a16e559cd856b0da1a888e1f4a3af9ec3aaac2e83a906bbb751e4dd1a24dd4.jpg,HASH_MAPPED +SAMAN,224391.jpg,mjjeong2.jpg,RENAMED,정미정,mjjeong2@samaneng.com,bd6e7cfa4495cd17a5fb6ca41fa071cee5448fd42cb3395559aa89b45caf491a.jpg,HASH_MAPPED +HANMAC,T05308.jpg,mhjeong.jpg,RENAMED,정미희,mhjeong@hanmaceng.co.kr,8e843a505838b6039748a4eacc796a0cf39daa16d7059281310a70a1058ff85b.jpg,HASH_MAPPED +SAMAN,207264.jpg,sgchung.jpg,RENAMED,정상구,sgchung@samaneng.com,f8c1be0a8d3df5c1e4baf5d0686aa1c5447992458bf99c02858a410e4786a415.jpg,HASH_MAPPED +HANMAC,M17402.jpg,sbjeong.jpg,RENAMED,정상범,sbjeong@hanmaceng.co.kr,bfb1214029418280cb937484160bced6f880020ee8c08688f483c78a9983e07a.jpg,HASH_MAPPED +SAMAN,224337.jpg,sbjung.jpg,RENAMED,정상봉,sbjung@samaneng.com,81e689a7612771b8010318e6bca4ead88c8bbfac7e17be72cd789dac4d48ac02.jpg,HASH_MAPPED +SAMAN,226009.jpg,syjung1.jpg,RENAMED,정서연,syjung1@samaneng.com,ac7f4a04d25b88a2feebdf1cb9d8b2c5c0a0297a5e9c4129680052727288ec0c.jpg,HASH_MAPPED +SAMAN,225070.jpg,sjjeong.jpg,RENAMED,정선진,sjjeong@samaneng.com,cb686e6dd30cfcc7e5219d98172479784b4f67287f5e2f244f75a2bc0cb10426.jpg,HASH_MAPPED +SAMAN,220115.jpg,sojung.jpg,RENAMED,정성오,sojung@samaneng.com,93c81b0f332fc5f62abb45caeaa7290d78aa5ce15589f909b0295098d4e60a02.jpg,HASH_MAPPED +SAMAN,222196.jpg,sujeong.jpg,RENAMED,정성운,sujeong@samaneng.com,02833d365644f68a54d7e74aa41e76a43acb247d4e2e4abec561d84564bd1a64.jpg,HASH_MAPPED +SAMAN,223333.jpg,sijung.jpg,RENAMED,정성일,sijung@samaneng.com,1fd58c5fabd8e4df991219539e62936ea53f83504859baa8ef7fb4fc48e35ce4.jpg,HASH_MAPPED +HANMAC,B24064.jpg,shjeong.jpg,RENAMED,정성호,shjeong@brsw.kr,80c33da6e7247b0cdc25ba52e6d2e9a1f61b048457dfd6e78dabb0eace629216.jpg,HASH_MAPPED +SAMAN,217135.jpg,syjung.jpg,RENAMED,정소연,syjung@samaneng.com,2150e2061a802c20761a461839838a880e60dc2a661dacdb724019ae1780d059.jpg,HASH_MAPPED +SAMAN,023124.jpg,sychung.jpg,RENAMED,정소연,sychung@samaneng.com,f0431b15d0a7f0c4d5bfe3121d650a3d748be7eb185a72e9903cd1697b7d312f.jpg,HASH_MAPPED +SAMAN,219164.jpg,ssjung.jpg,RENAMED,정송수,ssjung@samaneng.com,eabf2e3602467c7bdf759566ea61f6ae93a1d85a7db08bc884558a9b84a543f6.jpg,HASH_MAPPED +SAMAN,223342.jpg,sjjung.jpg,RENAMED,정수지,sjjung@samaneng.com,732d3e9212b38475f3b5ca833f2e5625d24c8e87c93dae61f883823c45b74f8c.jpg,HASH_MAPPED +SAMAN,219022.jpg,scjeong.jpg,RENAMED,정순철,scjeong@samaneng.com,c119967e87a3919ac68626a9116b60d9993ac57bcc6263fea83949206557aaa1.jpg,HASH_MAPPED +SAMAN,217063.jpg,syjeong.jpg,RENAMED,정승엽,syjeong@samaneng.com,e6b915a408fad15e973f644e39f4891dfed80323702d960b635f5a2b96111d17.jpg,HASH_MAPPED +SAMAN,207086.jpg,scchung.jpg,RENAMED,정승조,scchung@samaneng.com,71ded7e9cea143e82b2778f90c52ef0e91b2eb9fc7e6f69383cc2b727f2c6e24.jpg,HASH_MAPPED +HANMAC,M25012.jpg,shjung.jpg,RENAMED,정승훈,shjung@hanmaceng.co.kr,a5523b33fd0dee68c83039a6783cf515052ffb48de90e5bd75516680a79fce53.jpg,HASH_MAPPED +SAMAN,195078.jpg,ysjung.jpg,RENAMED,정양성,ysjung@samaneng.com,0d71c082d196f6247934ba9ae5767f84304e27670c4f8f57da64628f97067c1a.jpg,HASH_MAPPED +SAMAN,220246.jpg,ybjung.jpg,RENAMED,정연배,ybjung@samaneng.com,82a25e537b38349b0622ac4a2390743f238e7fd9508bf44c03e91d9f12c81d4a.jpg,HASH_MAPPED +SAMAN,225163.jpg,ykjung.jpg,RENAMED,정영기,ykjung@samaneng.com,8a819337829d905cfc1c016d91326d9e5681a1858ae77943e3883f6defdbe41d.jpg,HASH_MAPPED +SAMAN,223065.jpg,wsjung.jpg,RENAMED,정완순,wsjung@samaneng.com,c4ec28518e68d43c8d38edb576276c7fa69a9c084f00e4af5c627936995ef2ff.jpg,HASH_MAPPED +SAMAN,220234.jpg,yhjung2.jpg,RENAMED,정요한,yhjung2@samaneng.com,f2d0fbece634e0ef7f0ad9a9617623f3ccb5621e02888b864e1178ca657d6f84.jpg,HASH_MAPPED +SAMAN,225229.jpg,ykchung.jpg,RENAMED,정용권,ykchung@samaneng.com,53fe106aa0665cec7aa7114a4e49c4d2f4459cec838d62ddeba17ee733cd1dbe.jpg,HASH_MAPPED +SAMAN,223349.jpg,yjjeong.jpg,RENAMED,정용주,yjjeong@samaneng.com,93fdf2d397109247c6d3445c34e7bcd28a16529d58ddf3825661f28f6de633b6.jpg,HASH_MAPPED +SAMAN,200025.jpg,ycjung.jpg,RENAMED,정용찬,ycjung@samaneng.com,9a2f9c65919e8870eef2cdf4ed419cd3c950e85be5c963b96d1053c46923c338.jpg,HASH_MAPPED +SAMAN,204224.jpg,yhjung1.jpg,RENAMED,정용헌,yhjung1@samaneng.com,752c38fca22b4fbb514188a89303ef3af5c3b9af6e4e010385c0151962e46c7e.jpg,HASH_MAPPED +SAMAN,221082.jpg,wscheung.jpg,RENAMED,정우성,wscheung@brsw.kr,2787736151e0fd6790c88f1f9447cd8a41c2b3feb86bb6ba84a21d2bc5e13dd7.jpg,HASH_MAPPED +SAMAN,212035.jpg,wjjung.jpg,RENAMED,정우진,wjjung@samaneng.com,5bf27b3580b3f4f61f982eacf8c7aca721b6dd289c0aadcdb3c20209f9982380.jpg,HASH_MAPPED +HANMAC,M25004.jpg,wcjeong2.jpg,RENAMED,정우창,wcjeong2@hanmaceng.co.kr,725242cb4aa7ef4590098710f89ad19ff73cdd20808465bafca2e9a6b72a9bd2.jpg,HASH_MAPPED +SAMAN,223395.jpg,wcjeong.jpg,RENAMED,정우철,wcjeong@samaneng.com,1c3adbd9b536de4bdac9c9a772cf543ca5471f388f15c350c61f7e32f70237f8.jpg,HASH_MAPPED +SAMAN,224314.jpg,whjung.jpg,RENAMED,정우형,whjung@samaneng.com,9d264210b9144acb8954ac84a71da319140650feb3df598d31d561fd3df31cec.jpg,HASH_MAPPED +SAMAN,220152.jpg,wbjeong.jpg,RENAMED,정원빈,wbjeong@samaneng.com,1d851b4d894a1b5125514f92c5e8b2c4e2dfe084dc438f7444e3ea69ef485238.jpg,HASH_MAPPED +SAMAN,215082.jpg,wjjeong.jpg,RENAMED,정원준,wjjeong@samaneng.com,5f021b578c8e5dce0d95914b7fa31bbd568ba3aabd19073832d78640fc9b4195.jpg,HASH_MAPPED +HANMAC,M23018.jpg,whjeong.jpg,RENAMED,정원호,whjeong@hanmaceng.co.kr,27ab941a2f33dcf00961cacece9931eca8d50749b8f5a63fe3f1eb358c53c814.jpg,HASH_MAPPED +SAMAN,224119.jpg,ysjeong.jpg,RENAMED,정유석,ysjeong@samaneng.com,b25f305a666f20163cf98d6a00d771b793d3813c6ed6b07d4576b0d65343f091.jpg,HASH_MAPPED +SAMAN,026075.jpg,ysjung1.jpg,RENAMED,정유숙,ysjung1@samaneng.com,8e933b8df2d6fefc3f5f9aae1f5ba2565ab1d1852c11da1c16451b44de1b3958.jpg,HASH_MAPPED +HANMAC,M25039.jpg,yjjeong2.jpg,RENAMED,정유종,yjjeong2@hanmaceng.co.kr,07280622d5d7f0e500392cd652c77904cb6050130066f42d573c4ba40808f9ee.jpg,HASH_MAPPED +SAMAN,220101.jpg,yhjung.jpg,RENAMED,정윤호,yhjung@samaneng.com,e6d20d16a0dc654580d673c0e8e8b36b1905654958f4d57b43eb5616baf7c458.jpg,HASH_MAPPED +SAMAN,223059.jpg,egjeong.jpg,RENAMED,정은구,egjeong@samaneng.com,515438cadffb435d3a295b0997d0b8f6b1c2c462c1fafa6c8a0f13bbc6d14e92.jpg,HASH_MAPPED +SAMAN,025068.jpg,esjung.jpg,RENAMED,정은선,esjung@samaneng.com,fb37814da003688f5b29cdcaff658eff11cf1f48bf40ca8cf0091868b49df043.jpg,HASH_MAPPED +SAMAN,221131.jpg,etjeong.jpg,RENAMED,정은택,etjeong@samaneng.com,9fcc859fe91c83135cb4a041da6f0235a3bd879d20b5ee8a64ad49384d772464.jpg,HASH_MAPPED +SAMAN,221163.jpg,ehjung1.jpg,RENAMED,정은혜,ehjung1@samaneng.com,5018ddc007fb62859dc5b86f744916048f233af1ea8ec0c91fdd0784858cc6a8.jpg,HASH_MAPPED +SAMAN,224386.jpg,ehjung.jpg,RENAMED,정은희,ehjung@samaneng.com,ec0eb97aec323ace9b17fb38d79b3028848c67dbe54646872a00f61f1d8dbf8c.jpg,HASH_MAPPED +SAMAN,226023.jpg,eajeong.jpg,RENAMED,정의앙,eajeong@samaneng.com,af4081462f16c8219d4a6550e010f080a850e725c4c3c717907d87f4a28ed47e.jpg,HASH_MAPPED +SAMAN,223242.jpg,etjung.jpg,RENAMED,정의택,etjung@samaneng.com,70c7fa6d30548c62ad9491cee35bd465e4dc4d58228a4e4d631513c927a9f16f.jpg,HASH_MAPPED +SAMAN,212119.jpg,ijjung.jpg,RENAMED,정이준,ijjung@samaneng.com,e4b83330d4f999c1c5dccef75c15e4532bfb7e3fcf630685b0d35eb5a140351d.jpg,HASH_MAPPED +SAMAN,222207.jpg,ischung.jpg,RENAMED,정인식,ischung@samaneng.com,6ac7595b098729835c90e7ec34b4c79128f3a18d291de313db7247f6394b8973.jpg,HASH_MAPPED +SAMAN,185005.jpg,ikjeong.jpg,RENAMED,정일구,ikjeong@samaneng.com,145a1edb1072342a41830ac4a50a82fb500dd13fa99382f5b02e284983a0d584.jpg,HASH_MAPPED +SAMAN,025132.jpg,iyjung.jpg,RENAMED,정일영,iyjung@samaneng.com,607591b941194d1543811b89968d2124201e1fff441b2ae66862dbff2c7cf67f.jpg,HASH_MAPPED +SAMAN,226035.jpg,yhchung.jpg,RENAMED,정일훈,yhchung@samaneng.com,7c1cff71a128daaebe00fa552f55ef04b5aa1048eb8387906a56e415845ea916.jpg,HASH_MAPPED +SAMAN,225144.jpg,jkjung.jpg,RENAMED,정재근,jkjung@samaneng.com,127061e1d3adfd0b7f4e13345040d25c35a1a47af728cfe2def31ab0da9999db.jpg,HASH_MAPPED +SAMAN,220139.jpg,jrjung.jpg,RENAMED,정재령,jrjung@samaneng.com,9ea926d13ffd77516f712e75ded93cee9a548a0fca60ee427ed99b6522314e8b.jpg,HASH_MAPPED +SAMAN,203266.jpg,jyjung3.jpg,RENAMED,정재열,jyjung3@samaneng.com,86dbdafd2c390c371efc9d7ca220209b61cccc710f6940b526341ca633986e7b.jpg,HASH_MAPPED +SAMAN,224182.jpg,jwjeong.jpg,RENAMED,정재욱,jwjeong@samaneng.com,b9fc20cf4645685e2f2973a878700169f982451ffb006a5a4af1bd5687699227.jpg,HASH_MAPPED +HANMAC,M05305.jpg,jijung.jpg,RENAMED,정재익,jijung@hanmaceng.co.kr,412055d2fb598d28b8b8672e1a258ce45968b46b466b16db761596a2d66fd358.jpg,HASH_MAPPED +SAMAN,223332.jpg,jijeong.jpg,RENAMED,정재인,jijeong@samaneng.com,5f5c29e804adffa36b3bf945f3088f040106cccaaaf5e8e1c720ad827de73347.jpg,HASH_MAPPED +HANMAC,M26019.jpg,jhjeong2.jpg,RENAMED,정재혁,jhjeong2@hanmaceng.co.kr,823c71e2d699dabc0d1cada600cc010361d5fa797346c75f6a8551bf6093b870.jpg,HASH_MAPPED +SAMAN,214023.jpg,jyjeong1.jpg,RENAMED,정정열,jyjeong1@samaneng.com,f63f4d73af8abc127fa372222365d6b06e88ab38b54e04e613c5ea04f8eed82f.jpg,HASH_MAPPED +SAMAN,221141.jpg,jmjung.jpg,RENAMED,정종문,jmjung@samaneng.com,e7ea40509b6f05aacfac2845917345682d37c931b285a9299e35b9a87382cb16.jpg,HASH_MAPPED +SAMAN,225278.jpg,jyjeong2.jpg,RENAMED,정종용,jyjeong2@samaneng.com,4c89d53ad5317ff3efdd0364a735047da48bca56e068a4792f62aef5f9a318c4.jpg,HASH_MAPPED +HANMAC,M23078.jpg,jhjeong3.jpg,RENAMED,정종호,jhjeong3@hanmaceng.co.kr,8334202683f768bde5f4910f83cdd518e44fb1e8f92f9cd391e41ff253091980.jpg,HASH_MAPPED +SAMAN,223007.jpg,jhjeong1.jpg,RENAMED,정주현,jhjeong1@samaneng.com,a691f985977f5317efc9cfcd30e5bd815741e511063a327ce22101293654d0f1.jpg,HASH_MAPPED +SAMAN,221101.jpg,jhjeong.jpg,RENAMED,정주화,jhjeong@samaneng.com,cdd629ea89deab7df08566be810b5d971dfb70802abeee9cc35b5cf0d79e1808.jpg,HASH_MAPPED +SAMAN,026068.jpg,jhjung1.jpg,RENAMED,정주희,jhjung1@samaneng.com,a87934e043723bafbbd94ffff8e4cf6fe9e341b8f53f5a3c708d12776beaa570.jpg,HASH_MAPPED +HANMAC,B25024.jpg,jkchung.jpg,RENAMED,정준규,jkchung@hanmaceng.co.kr,e19cca6f4a9fc525682a75c032d54e9cddf3602ae43e9462e1391318873abedc.jpg,HASH_MAPPED +SAMAN,220121.jpg,jyjeong4.jpg,RENAMED,정준영,jyjeong4@samaneng.com,03a3ea4157e479560dcd1dd70d4950f1226d36dc192d9ddfa0d034971b29c28d.jpg,HASH_MAPPED +SAMAN,217161.jpg,jpjoung.jpg,RENAMED,정준표,jpjoung@samaneng.com,bb4b19aff553f93473f28b6183c66703303ea1ba82cae8154b41425086546690.jpg,HASH_MAPPED +SAMAN,225136.jpg,jyjung2.jpg,RENAMED,정지영,jyjung2@samaneng.com,553f4657a15f0de458d72a942c24da727ce60a52adaf3ff8027927cdc45fcb2e.jpg,HASH_MAPPED +SAMAN,225140.jpg,jyjung1.jpg,RENAMED,정지윤,jyjung1@samaneng.com,18a41b8795e0cc775fe0c23cd15c4c1ee7b86bcfdd87377405a6ab85b5d6410a.jpg,HASH_MAPPED +SAMAN,225040.jpg,jhjung.jpg,RENAMED,정지현,jhjung@samaneng.com,c3ac34df0e6fcc03bafba17448acbab2a4a7271134aed06b61c139c1b406a560.jpg,HASH_MAPPED +SAMAN,225122.jpg,jwjeong1.jpg,RENAMED,정진우,jwjeong1@samaneng.com,112b685f822fc1d789a843842a424c047584be6af68d13f051bd798d71d1210d.jpg,HASH_MAPPED +SAMAN,221103.jpg,jcjung.jpg,RENAMED,정진철,jcjung@samaneng.com,167ad4662e363d0de24b38ebba8de09d2cbfc307ec59090ad9405daccf683388.jpg,HASH_MAPPED +SAMAN,213001.jpg,jhchung54.jpg,RENAMED,정진호,jhchung54@samaneng.com,9e06eb0683415855ada6059f1b11277500fe6040dabb82f10e51d792619357da.jpg,HASH_MAPPED +SAMAN,224221.jpg,cyjeong1.jpg,RENAMED,정찬영,cyjeong1@samaneng.com,5b4118871ff1538bd6faa01b2cdd348c13a51563f55f1faa3068602559532a12.jpg,HASH_MAPPED +SAMAN,216134.jpg,ckjung.jpg,RENAMED,정창근,ckjung@samaneng.com,5ed980bb4da29cf6fb99233e84899261ebda3552d88a8ae9d0ebf2d4ba67654c.jpg,HASH_MAPPED +SAMAN,212074.jpg,chjeong.jpg,RENAMED,정창화,chjeong@samaneng.com,b9d49ef1cecadc5b00d7132a5cd1bc071c3e8a7ddd331b01af488803f1b1cb7b.jpg,HASH_MAPPED +SAMAN,222162.jpg,cdjeong.jpg,RENAMED,정청담,cdjeong@samaneng.com,73d9de55395a7489ea9a6c439dca4a263342f67ac0f9d9fd8b85156597e7ec4e.jpg,HASH_MAPPED +SAMAN,216152.jpg,cwjung.jpg,RENAMED,정충원,cwjung@samaneng.com,bc5e01a9b023ac07e89a66ef4e01b4dff331778c24aa9f113d0fb7a38ebe45d7.jpg,HASH_MAPPED +PTC,P06208.jpg,chjung.jpg,RENAMED,정충화,chjung@brsw.kr,6fd527c7126d7677ca4675da14894e9dab3e3fb3a9827026c9c1685344583f85.jpg,HASH_MAPPED +SAMAN,224298.jpg,tyjeong.jpg,RENAMED,정태영,tyjeong@samaneng.com,95486935c99d26372dd3731666bb4b0c768d26d01d29920e69928b73a5f078f7.jpg,HASH_MAPPED +HANMAC,M21201.jpg,twchung.jpg,RENAMED,정태원,twchung@hanmaceng.co.kr,fcc86af296dbf9724c5d730d782b6a1a3092ef79560efb8fe742b7bd3490ba93.jpg,HASH_MAPPED +SAMAN,221223.jpg,pkjeong.jpg,RENAMED,정평기,pkjeong@samaneng.com,0c4ad4fbf5aa7a16fd37db48869fac8c443cdfcda5dcd97c04bda3023c50290f.jpg,HASH_MAPPED +SAMAN,216058.jpg,phjeong.jpg,RENAMED,정평회,phjeong@samaneng.com,6a890b5e0646f07012f0919cd90b44d514efb9ed981c3c30254e2fe415206532.jpg,HASH_MAPPED +SAMAN,225162.jpg,hjjung1.jpg,RENAMED,정학재,hjjung1@samaneng.com,95c8f6a13bf0ba52746e3e9582e7b37b7d6b3899b89829dffd205cddeea98419.jpg,HASH_MAPPED +SAMAN,217079.jpg,hjjeong.jpg,RENAMED,정해진,hjjeong@samaneng.com,a97e25f3b9f28fc82f14460005080d7db93c37f5f7912b68f0f44e4721a52b9f.jpg,HASH_MAPPED +SAMAN,225130.jpg,hjeong.jpg,RENAMED,정현,hjeong@samaneng.com,6c5e302d912fa14263d3c047c8918892c761b6c9531e063d17119c6cca3b4d07.jpg,HASH_MAPPED +SAMAN,205267.jpg,hkjung1.jpg,RENAMED,정현교,hkjung1@samaneng.com,1723280a76595f3c5315271de7b4efbc0a1d21d0402101380012a4f370a57019.jpg,HASH_MAPPED +SAMAN,224269.jpg,hsjeong1.jpg,RENAMED,정현식,hsjeong1@samaneng.com,20a61364e099ddbd6be2c6a74d08f05e06ee830489cfd5cff3355f4f4c92b6d2.jpg,HASH_MAPPED +HANMAC,M14101.jpg,hyjeong2.jpg,RENAMED,정혜연,hyjeong2@hanmaceng.co.kr,14ccc54a449e9acf73a11fcadacbaa9c700a579d40e7a3d832c57380670794ee.jpg,HASH_MAPPED +SAMAN,224018.jpg,hyjung.jpg,RENAMED,정혜영,hyjung@samaneng.com,f207a986834def41bb909ff235944e410536d498a2615ab37d258bacb4a7f813.jpg,HASH_MAPPED +HANMAC,M16317.jpg,hjjeong2.jpg,RENAMED,정혜진,hjjeong2@hanmaceng.co.kr,bf9d791dab20d466d59cbb2163d9d5b09ff061ec644e1b1950c83d444702088f.jpg,HASH_MAPPED +SAMAN,223114.jpg,hjjeong1.jpg,RENAMED,정호진,hjjeong1@samaneng.com,182b1734fa8b555b2529d4cbfc974c848acdf2ef9f8d6adbfd07b63c524a4063.jpg,HASH_MAPPED +SAMAN,224288.jpg,hsjeong2.jpg,RENAMED,정홍섭,hsjeong2@samaneng.com,6419f3546eca70c3ad9b448bfcd477eb3a842dae9e3aa8fed570b0a373df857f.jpg,HASH_MAPPED +SAMAN,221311.jpg,htjeong.jpg,RENAMED,정홍택,htjeong@samaneng.com,87db2f6d2105d4a4e549236392836e63037cec818353245c716cec99bc096eec.jpg,HASH_MAPPED +SAMAN,224230.jpg,hjjung.jpg,RENAMED,정환주,hjjung@samaneng.com,3e1e5635390e12c9ee2e2e3c5b5d7239517ae354b9f1b9d5b85008a393e3884f.jpg,HASH_MAPPED +SAMAN,215094.jpg,hyjeong.jpg,RENAMED,정희엽,hyjeong@samaneng.com,1dcb2c42c2ddcab448ac4fd0fde9abd7f381a6d0915023261c11545c944ff3ad.jpg,HASH_MAPPED +SAMAN,225077.jpg,hwjeong.jpg,RENAMED,정희원,hwjeong@samaneng.com,d9eb33616b95f7d3f64298e711ce368d31092159d2acc04ac78e089c832eb657.jpg,HASH_MAPPED +SAMAN,218019.jpg,kjcho2.jpg,RENAMED,조강주,kjcho2@samaneng.com,07f343cd8b036ffc220581162858134d74eddefbf8b1e54cca6303b4750a62eb.jpg,HASH_MAPPED +HANMAC,M23023.jpg,ghcho.jpg,RENAMED,조규형,ghcho@hanmaceng.co.kr,0d37fac8c1d28b55aa18ae56baa24e62413d6458f582402b712c9f935987ada6.jpg,HASH_MAPPED +SAMAN,202072.jpg,kmcho.jpg,RENAMED,조길문,kmcho@samaneng.com,af01078fdce7c837f9278587286704d2e9b5f495a7f546f10aaefa7681fc3f2b.jpg,HASH_MAPPED +SAMAN,225157.jpg,nwcho.jpg,RENAMED,조남욱,nwcho@samaneng.com,37b5c6f8faff892cd7c3f8fc1f0ccdfa195a6f95a91b7e984272a8ef14508314.jpg,HASH_MAPPED +SAMAN,220275.jpg,dhjo.jpg,RENAMED,조대현,dhjo@samaneng.com,12930511c9fef9953f7427872efffb70d017f39dee8257ec42f5d5cdee44f7ea.jpg,HASH_MAPPED +JANGHEON,J21303.jpg,dicho.jpg,RENAMED,조동일,dicho@brsw.kr,3795bc71bf32823f4baa1cdfdddfecf1da88dd4232b75f39e305ac774ebbffe9.jpg,HASH_MAPPED +SAMAN,218139.jpg,djcho.jpg,RENAMED,조동진,djcho@samaneng.com,a04755284bdc157c45de334e24ae3b7456e406be7992b2d7486bb968258cb9a2.jpg,HASH_MAPPED +SAMAN,216127.jpg,rscho.jpg,RENAMED,조래수,rscho@samaneng.com,7da43689ea4d0fe4802bcbdb903343a323c55a39559e326c24ec25c6628c6b35.jpg,HASH_MAPPED +SAMAN,223148.jpg,mhcho1.jpg,RENAMED,조명훈,mhcho1@samaneng.com,0380e6f094cce88e62521eeb014ce5640be73e1725d1bccb95b6cd97e558e8e7.jpg,HASH_MAPPED +SAMAN,224270.jpg,mgjo.jpg,RENAMED,조문국,mgjo@samaneng.com,f9463e3ed4ab4815e3a6ee5649496e4168d23781a2347d706586fb02a39134e7.jpg,HASH_MAPPED +SAMAN,026053.jpg,mmjo.jpg,RENAMED,조미미,mmjo@samaneng.com,667ca4482333366f372895674583ea49fb557bba9434c67906ce133329c90e7a.jpg,HASH_MAPPED +SAMAN,221194.jpg,mhcho.jpg,RENAMED,조민현,mhcho@samaneng.com,3accb912f25708b5ceea76720995b736bc4549872f255c99c11079efab645a09.jpg,HASH_MAPPED +SAMAN,223079.jpg,bkcho.jpg,RENAMED,조병광,bkcho@samaneng.com,c9deb54c6ae115f8b59b696fd1c89c845580aeff768beeece1a71994e9bbf6b8.jpg,HASH_MAPPED +SAMAN,210160.jpg,bhjo.jpg,RENAMED,조봉현,bhjo@samaneng.com,ec1d858100a0e40b0b4e05cd8e1b0a8faa6fe3635751cacd42b93feb1513869a.jpg,HASH_MAPPED +SAMAN,214083.jpg,skcho.jpg,RENAMED,조석규,skcho@samaneng.com,c6317472f489b1d637f1af854ba3720c3e5f7f9aae326122d93e24ecb0631d33.jpg,HASH_MAPPED +SAMAN,222155.jpg,sdjo.jpg,RENAMED,조선두,sdjo@samaneng.com,7d77e898924114807690ccb4e71d091f3a9214e625a406404b783e834c096117.jpg,HASH_MAPPED +SAMAN,225281.jpg,sgjo.jpg,RENAMED,조성곤,sgjo@samaneng.com,9d9f168ba4077da9a2f8afaa9bf1d147963f4f2451f9a25b8f3ff56c6b066614.jpg,HASH_MAPPED +SAMAN,220185.jpg,sbcho.jpg,RENAMED,조성복,sbcho@samaneng.com,971c7d98dc26ae6093c8c8c93aa7d1c820a925cdcf5e6acc2736a21081932c19.jpg,HASH_MAPPED +SAMAN,223208.jpg,sscho.jpg,RENAMED,조성선,sscho@samaneng.com,f8d83bab7d6ba0e652534c676470c1ddae4d2efa348b653e773a24a8deaec9fd.jpg,HASH_MAPPED +SAMAN,217049.jpg,shjo.jpg,RENAMED,조성환,shjo@samaneng.com,03df2f0c07b267b2afafe72130bcdb884a7e636c71278e8e2079650c6eba4893.jpg,HASH_MAPPED +HANMAC,M02231.jpg,swcho2.jpg,RENAMED,조수원,swcho2@hanmaceng.co.kr,f2456fa77e9323f1950c3a94c9d79c86bab360519648e695a631befe1ea68135.jpg,HASH_MAPPED +SAMAN,224255.jpg,akcho.jpg,RENAMED,조안기,akcho@samaneng.com,ce5503b9dbb3d8f2b421d30edb2fc71fa0e59f647b9f94de54c271ee2982834b.jpg,HASH_MAPPED +SAMAN,225342.jpg,ykjo.jpg,RENAMED,조연경,ykjo@samaneng.com,0116e8d6bacb9e1b83d55cbd0329a9e021e55e07c59a6941ad8635860a2fd0a1.jpg,HASH_MAPPED +SAMAN,221034.jpg,ymcho1.jpg,RENAMED,조영민,ymcho1@samaneng.com,3aff052454e717cb5a358b68c546da5dd7e6ba1aed63895a01fcfb4cd1df4038.jpg,HASH_MAPPED +SAMAN,222295.jpg,yscho2.jpg,RENAMED,조영삼,yscho2@samaneng.com,de21587a145478f566310899072058332a80c4a893542b395038bd8be74ff8ce.jpg,HASH_MAPPED +SAMAN,224147.jpg,yscho1.jpg,RENAMED,조영수,yscho1@samaneng.com,ce9115a6982ca1b26479b0879b83e3cfe8274d84cb587441aede9e11b4cd6cca.jpg,HASH_MAPPED +SAMAN,216012.jpg,yhcho16.jpg,RENAMED,조영훈,yhcho16@samaneng.com,2155bd46fad8e2714480c2dd4307ee592c7282ca864cac5deb75a99d74373f08.jpg,HASH_MAPPED +SAMAN,196175.jpg,ykcho.jpg,RENAMED,조용근,ykcho@samaneng.com,3a13879337ecb0ece325b0830b760efbf4ab5fa2c3999b9705e898cf31c5d0cb.jpg,HASH_MAPPED +HANMAC,B25019.jpg,ymjo.jpg,RENAMED,조용민,ymjo@brsw.kr,16fbdd9894d3381abca071f598f7cd940b4c29332c049ac7e73d1e1aa62a5e8c.jpg,HASH_MAPPED +SAMAN,224003.jpg,yijo.jpg,RENAMED,조용익,yijo@samaneng.com,9871fcb2bb47aaff8c00c378ee78c5e3ef49c938e5a43d499ea3c6dea2f7fe19.jpg,HASH_MAPPED +SAMAN,223249.jpg,wjjo.jpg,RENAMED,조우진,wjjo@samaneng.com,97123e7104c8bf97094a61b0ac95defffd697511f9f03d50b50fec1f9420cf35.jpg,HASH_MAPPED +HANMAC,M23058.jpg,wjcho.jpg,RENAMED,조우진,wjcho@hanmaceng.co.kr,03a3efdd716342090e6e373a337fcfadc63c711551fe726ee4f0fe92e6aa737c.jpg,HASH_MAPPED +SAMAN,226061.jpg,wscho.jpg,RENAMED,조원석,wscho@samaneng.com,caa7d46db0996e5fbecbd424ab7a800e25f43c4d3ecb7c707f72b2340c74483b.jpg,HASH_MAPPED +SAMAN,223057.jpg,yscho.jpg,RENAMED,조윤상,yscho@samaneng.com,08b7ebe2b873661cedad5023898cdbf11163e623003d146434ddf4115e3db900.jpg,HASH_MAPPED +SAMAN,225037.jpg,eycho.jpg,RENAMED,조은영,eycho@samaneng.com,0e46e6ab36e40371dfaf52dc449e622ac085fc9325f5ff4c46ac25ab0932cd06.jpg,HASH_MAPPED +SAMAN,222002.jpg,icjo.jpg,RENAMED,조인철,icjo@samaneng.com,4768f2d501fee19422c62e985cc9b3489c51c89032a589b3d50eb56b835ab482.jpg,HASH_MAPPED +SAMAN,225269.jpg,ihjo.jpg,RENAMED,조인환,ihjo@samaneng.com,4341e61c2644e72721d67cd27c0680dd99a420039ae7e052ef293dc21a57257f.jpg,HASH_MAPPED +SAMAN,222086.jpg,jycho.jpg,RENAMED,조재영,jycho@samaneng.com,db6104de61ca3eb46a067d5a49c520623e84417a318290f321970656e42343db.jpg,HASH_MAPPED +SAMAN,223146.jpg,jycho1.jpg,RENAMED,조재유,jycho1@samaneng.com,0a03941419f7d6944d2e1d90b4ff0be9b47cd5c35c7f31cb959fe738a52f10d8.jpg,HASH_MAPPED +SAMAN,224321.jpg,jmjo.jpg,RENAMED,조정묵,jmjo@samaneng.com,a679fa68fcbb1d50f92be08f784330c866251e3d776bb9912f3700440fd8fc65.jpg,HASH_MAPPED +HANMAC,M23081.jpg,jsjo.jpg,RENAMED,조증식,jsjo@hanmaceng.co.kr,ea82cb42e369f96a09d3b9555e2ecac971ebc75a446e895e2ca1ba3342e86dad.jpg,HASH_MAPPED +SAMAN,214047.jpg,jscho1.jpg,RENAMED,조진수,jscho1@samaneng.com,92f5c26e566bd63a580f8f05b7e64f893cc0613c7a85648b6e3363b0fd82826e.jpg,HASH_MAPPED +HANMAC,B24028.jpg,cyjo.jpg,RENAMED,조찬영,cyjo@brsw.kr,cf2cee1c156b3dea96225b354f44abc25e5d353b35c42b152c2c039d05e21333.jpg,HASH_MAPPED +SAMAN,224354.jpg,chcho.jpg,RENAMED,조창형,chcho@samaneng.com,0ad96f8eeaac42ce92526fc230429145edc3705763429521b0af1d650a1c2360.jpg,HASH_MAPPED +HANMAC,B22040.jpg,thcho.jpg,RENAMED,조태희,thcho@brsw.kr,d8059173ba55120cf35f20315174c8f3f0e0171000433383e231bf9bdc03f72a.jpg,HASH_MAPPED +SAMAN,222096.jpg,hujo.jpg,RENAMED,조항언,hujo@samaneng.com,11049683f22704b8def34bff1389136492dfdc454c3c2648c35e3be1bda6de7e.jpg,HASH_MAPPED +SAMAN,218161.jpg,hscho.jpg,RENAMED,조현선,hscho@samaneng.com,6314d94bf66ad810a652799e2ff0a235964270145aa2796e6d9b00e89b0a5eb8.jpg,HASH_MAPPED +HANMAC,M23022.jpg,hjcho2.jpg,RENAMED,조현준,hjcho2@hanmaceng.co.kr,4ac559d3216001eb4a873f70c1f32ac1a9d73aaa8b91499c9ea66a622a0c8a83.jpg,HASH_MAPPED +SAMAN,024138.jpg,hkcho.jpg,RENAMED,조혜경,hkcho@samaneng.com,b75897dfd1d6b87f743d826906805185b19cfa2d1498f35812500b16fee7d1d3.jpg,HASH_MAPPED +SAMAN,201210.jpg,hjcho.jpg,RENAMED,조혜정,hjcho@samaneng.com,2e727d71854e955c0ac57d90f88ccabecacd0f8dc59654d051fcc428cfa96b8e.jpg,HASH_MAPPED +SAMAN,223393.jpg,hycho.jpg,RENAMED,조호연,hycho@samaneng.com,93a6cb4cf36c96a68ec99c0f6b8631b02b4686459f52922b3d7de4ad00dc24d9.jpg,HASH_MAPPED +SAMAN,224306.jpg,hhjo.jpg,RENAMED,조호현,hhjo@samaneng.com,7b915df8937cc7081cdc9b5192bc9271c2571d1a24d19c00801e5b30a4858bd0.jpg,HASH_MAPPED +SAMAN,221026.jpg,hscho1.jpg,RENAMED,조흥석,hscho1@samaneng.com,3626146b3af0d5d6c4d20811a9bb28db0ce337f9acc81a883f9096c4bb41eafe.jpg,HASH_MAPPED +SAMAN,223143.jpg,sechu.jpg,RENAMED,주삼언,sechu@samaneng.com,b0006aac7c1b1f7fe3362e6be69dafb3a312e117fee00560eeb741871cee2030.jpg,HASH_MAPPED +SAMAN,220207.jpg,sgjoo.jpg,RENAMED,주상구,sgjoo@brsw.kr,381f1d0ba8094bca5a775098dc84ec98d4fdca3f8dae240c724ce152efa29977.jpg,HASH_MAPPED +SAMAN,221021.jpg,smjoo.jpg,RENAMED,주승민,smjoo@samaneng.com,aa2570982df7825d78e517d259581cb4563ec20c904a875496c0bbf646e37b03.jpg,HASH_MAPPED +SAMAN,223165.jpg,ydjoo.jpg,RENAMED,주영덕,ydjoo@samaneng.com,653fa90e3fa31fc5fa78e2059eb91f8d81df27d2fb6151df1813ff30d6623150.jpg,HASH_MAPPED +HANMAC,B22067.jpg,wgjoo.jpg,RENAMED,주완기,wgjoo@brsw.kr,aa360943b32e29993eb55140c692f0e5250e145347fdd035bb931160895f9835.jpg,HASH_MAPPED +HANMAC,M16313.jpg,jgju.jpg,RENAMED,주재강,jgju@hanmaceng.co.kr,f9d64145a81538a12d1ad3c5cec76eadfa9f1e71716d1d009ac2c2199818b632.jpg,HASH_MAPPED +HANMAC,M25006.jpg,jhju.jpg,RENAMED,주지한,jhju@hanmaceng.co.kr,e63f1b80ca9b953b90601a71793cb6b46af9e4fa8b29739d088950001901c835.jpg,HASH_MAPPED +SAMAN,220076.jpg,hsju.jpg,RENAMED,주현수,hsju@samaneng.com,0d554cecc85d026b854ee36ab171b9e4e072818691c302c00c38bf699e176f36.jpg,HASH_MAPPED +SAMAN,213004.jpg,hsjoo1.jpg,RENAMED,주호식,hsjoo1@samaneng.com,521c3cae0719c652e3a730f6d286f5fc736dd646df7203fe584cf877f878f40c.jpg,HASH_MAPPED +SAMAN,224051.jpg,dyji.jpg,RENAMED,지덕영,dyji@samaneng.com,cebf693851cb4d811649750d18077c2667328639a754b7fdc18b642d9360e588.jpg,HASH_MAPPED +SAMAN,225056.jpg,shji.jpg,RENAMED,지성현,shji@samaneng.com,0ab0251c1b6ac56f3cc1e81f49c3116acf8b3b3c42e5e4442f0f4c7d4485256b.jpg,HASH_MAPPED +SAMAN,025093.jpg,shjee.jpg,RENAMED,지승환,shjee@samaneng.com,89118ed10800a40a6199254f25e3289288c713f6855ec17e474e85a8d8e397b5.jpg,HASH_MAPPED +HANMAC,M04102.jpg,iyji.jpg,RENAMED,지인용,iyji@brsw.kr,15eccc55e09e304749be11a10c826300840d2916c4c41b83941d9d70e985f1e7.jpg,HASH_MAPPED +SAMAN,225260.jpg,jgji.jpg,RENAMED,지재구,jgji@samaneng.com,4b9a043e319818335b89f0603e54965ec75cbbac07817eea4c4d135f61e02cf4.jpg,HASH_MAPPED +SAMAN,223134.jpg,hwji.jpg,RENAMED,지현욱,hwji@samaneng.com,a2cfabc50c5bd87bd1a68c0ba11ca5820b7d1d92fd4683a918f9b0a9063820ce.jpg,HASH_MAPPED +SAMAN,025043.jpg,mhjin.jpg,RENAMED,진민화,mhjin@samaneng.com,d6f9c59af9f21ab1d6f1d7ba8ad67ced022a96bc8d4adf371bc4e319a20fed9f.jpg,HASH_MAPPED +HANMAC,M23064.jpg,jhjin.jpg,RENAMED,진장현,jhjin@hanmaceng.co.kr,33a3aea740536331ef155781d3d45c6281d8009034953bac647604bfa4725b43.jpg,HASH_MAPPED +SAMAN,319002.jpg,cmjin.jpg,RENAMED,진충문,cmjin@samaneng.com,0347eb3d6ca44e8cc4cdfdb16b1b567cbd7591949f20a3a68fe138bf2d9b01bb.jpg,HASH_MAPPED +HANMAC,M24070.jpg,hbjin.jpg,RENAMED,진현범,hbjin@hanmaceng.co.kr,6fee3ecf926ceda5c8d868443e8a64627c2503a94aa8881a02f731fbf64f3864.jpg,HASH_MAPPED +SAMAN,224291.jpg,hsjin.jpg,RENAMED,진희성,hsjin@samaneng.com,225fa007171f8952fe5902cb62950566b4c7b0f33f83ea541312dde712c9e204.jpg,HASH_MAPPED +SAMAN,224274.jpg,kjcha1.jpg,RENAMED,차기준,kjcha1@samaneng.com,837bd67cff8ef94e95e9412af32e8120bd875d0957f21bbe669e30e808339f58.jpg,HASH_MAPPED +SAMAN,023036.jpg,mjcha.jpg,RENAMED,차문자,mjcha@samaneng.com,3acbc24d84de2838b3368f7d72012f895831ec55c7dd63264c1238c3ce5df02b.jpg,HASH_MAPPED +JANGHEON,J10308.jpg,sdcha.jpg,RENAMED,차성대,sdcha@brsw.kr,a6b72c6ae84289cf93c4ede45b85afbf179be46bf14de53d01cfb6bb8ef6386b.jpg,HASH_MAPPED +SAMAN,219180.jpg,sgcha.jpg,RENAMED,차승구,sgcha@samaneng.com,96b9cb4cfe24dd6e6cf49d8f81a6c9a32180318c3d5c1ea9f0cb4c382044ed78.jpg,HASH_MAPPED +SAMAN,223194.jpg,yjcha.jpg,RENAMED,차영주,yjcha@samaneng.com,4bfc3799e7554bee4a87a04b65af170a82b0811d08ed4f087f84b82548256b87.jpg,HASH_MAPPED +SAMAN,202145.jpg,jhcha.jpg,RENAMED,차진한,jhcha@samaneng.com,2f2aec0aad3fe38b4a33ba89a725b1ec4215a34d6369d69683d3a931721c81ae.jpg,HASH_MAPPED +SAMAN,219009.jpg,hjcha.jpg,RENAMED,차호준,hjcha@samaneng.com,4a6941c3a88abf8e03f8ff942facb94eea4c49220625c09bb22cdb679087c755.jpg,HASH_MAPPED +SAMAN,223215.jpg,hgcha.jpg,RENAMED,차홍근,hgcha@samaneng.com,0b8f3546dfa3c2fe7639afbcae5568c105b57f057df0a103f40ec159a4b9ff3a.jpg,HASH_MAPPED +SAMAN,222110.jpg,bkchae.jpg,RENAMED,채병구,bkchae@samaneng.com,05f877568a5c446c525c084b08229ee6b257458d59049c94368adf00987159b2.jpg,HASH_MAPPED +HANMAC,B24027.jpg,sychae.jpg,RENAMED,채선영,sychae@brsw.kr,ba82101437316ba367d3a9600195771b1c16a6032a7c6cd21dca7dd3eeeda0d6.jpg,HASH_MAPPED +HANMAC,M06506.jpg,ischae.jpg,RENAMED,채일석,ischae@hanmaceng.co.kr,34e7180fdf036bcdd8cfe8ee3209957404e139183344477d6d2e39fbbf94153f.jpg,HASH_MAPPED +SAMAN,218096.jpg,jkchae.jpg,RENAMED,채정기,jkchae@samaneng.com,25ef8b7a60aa60ea50dfa27aba91ed05ac6973fc8b325087a3edaa714edc401b.jpg,HASH_MAPPED +SAMAN,225261.jpg,jhchae.jpg,RENAMED,채종현,jhchae@samaneng.com,90b39b6153b2864d627d3b0213576e0d25ff765c235e33d83fd94363e37f036a.jpg,HASH_MAPPED +HANMAC,M23070.jpg,hjchae.jpg,RENAMED,채호주,hjchae@hanmaceng.co.kr,ca35e282aa7cfc951155184e1d7904931ec10da04f96287814a7a956ea17dd5c.jpg,HASH_MAPPED +HANMAC,M21321.jpg,hmchae.jpg,RENAMED,채희문,hmchae@hanmaceng.co.kr,b5e5db6d82bb8519beb26049c517282584daca23e29536ff39e488e0a2873ec2.jpg,HASH_MAPPED +SAMAN,223241.jpg,hwchae.jpg,RENAMED,채희웅,hwchae@samaneng.com,5cfde83739f651681933aabbbf4f64b4c7f11461ef17b6c0f20e75d211de0787.jpg,HASH_MAPPED +SAMAN,219096.jpg,mkcheon.jpg,RENAMED,천민규,mkcheon@samaneng.com,4b5debe67cd4ccd969297cab132d26c50bb0b814a555596a049aad675985af6d.jpg,HASH_MAPPED +SAMAN,224287.jpg,shcheon.jpg,RENAMED,천세현,shcheon@samaneng.com,728d19ebaa695e82f4d55c58354d891aa2a206f5a057e075bbb8a2b2a70c88cc.jpg,HASH_MAPPED +SAMAN,214077.jpg,shchun.jpg,RENAMED,천승호,shchun@samaneng.com,d858a24300e4687242e25f0963f36339ef9f977ccb8a9214412e4abf574b47a3.jpg,HASH_MAPPED +SAMAN,222043.jpg,yscheon.jpg,RENAMED,천영석,yscheon@samaneng.com,11101975a7ea438efc55727e00b96e1f0c29e96529a42bebf9369f5ba75fbc6f.jpg,HASH_MAPPED +SAMAN,221281.jpg,kmchoi1.jpg,RENAMED,최경문,kmchoi1@samaneng.com,5883bccdd161f3185a09654b2ca889375d11141bd384fcceb4b1e412b13d918f.jpg,HASH_MAPPED +SAMAN,220015.jpg,gschoi.jpg,RENAMED,최경수,gschoi@samaneng.com,dd31c25066aeb19011cdf2661b91eb13b5fffa8123150f347648b340639859e0.jpg,HASH_MAPPED +SAMAN,224157.jpg,khchoi3.jpg,RENAMED,최경호,khchoi3@samaneng.com,8f1606a695a012c4fec4ea4e86ce4c5fc14f1aa60171973ac31b576641d01d6a.jpg,HASH_MAPPED +SAMAN,211148.jpg,kmchoi.jpg,RENAMED,최광민,kmchoi@samaneng.com,d5d8ca63802c20e60949b87f60949b0ec6c96e796bcf44f0bf7fa7020e7640da.jpg,HASH_MAPPED +SAMAN,218103.jpg,kschoi.jpg,RENAMED,최광수,kschoi@samaneng.com,2bc7df36755850f195b214cf931e706b3b8a25cd989e531d94b14236d3435728.jpg,HASH_MAPPED +SAMAN,216131.jpg,kichoe.jpg,RENAMED,최광일,kichoe@samaneng.com,da5787c08c8deea6e5ad1f816247d8ba8061487769a8504ae56fa0ca6f275248.jpg,HASH_MAPPED +SAMAN,224104.jpg,khchoi.jpg,RENAMED,최광현,khchoi@samaneng.com,2f529148ee07e1f6e95b99128c1dae99f8664d0f6084d4f10bd58000b254463e.jpg,HASH_MAPPED +HANMAC,M26034.jpg,gjchoi.jpg,RENAMED,최규진,gjchoi@hanmaceng.co.kr,7d3c9313835615fc2c5cbba0f1f1b85e4052e1451e77150b931c6c1e15656904.jpg,HASH_MAPPED +SAMAN,224072.jpg,kychoi1.jpg,RENAMED,최근영,kychoi1@samaneng.com,67d0f00be75333dc52bb44d8493490f0a9a16f0f6b3ec7f0aea7d31e65e50fbb.jpg,HASH_MAPPED +HANMAC,B24008.jpg,khchoi4.jpg,RENAMED,최근혜,khchoi4@brsw.kr,8cd22b424028328cc29527bbb1729a92cb7dd7d548c9b88e3a12e4d1d873b6d3.jpg,HASH_MAPPED +SAMAN,221115.jpg,kychoi.jpg,RENAMED,최기연,kychoi@samaneng.com,e55db6f428b16e5e94cf02ca26146afebddfaaa3bffe19b6b9dc38679be7aa6d.jpg,HASH_MAPPED +SAMAN,225329.jpg,gpchoi.jpg,RENAMED,최기평,gpchoi@samaneng.com,513a60f03fbd67f1c7f2d10667792ffd395e30c8dc459bfff4e651d8f8422afb.jpg,HASH_MAPPED +SAMAN,203276.jpg,khchoi2.jpg,RENAMED,최기호,khchoi2@samaneng.com,dc421cc545f7c2bcf47fcb18ce6b54f13403a2426fee5bd3d7ceb6803412584f.jpg,HASH_MAPPED +SAMAN,223126.jpg,kychoi2.jpg,RENAMED,최길용,kychoi2@samaneng.com,e74af74ee862f23f6c67edc3e775474a94b35a5f4199f740236d5d2842f6b1bc.jpg,HASH_MAPPED +SAMAN,223189.jpg,nychoi.jpg,RENAMED,최낙용,nychoi@samaneng.com,fe3a46f3c2078e6f6644b134b4b80a9309e14601ab683e3c39b6dc147462c0cd.jpg,HASH_MAPPED +SAMAN,025129.jpg,nchoi.jpg,RENAMED,최난,nchoi@samaneng.com,123f0a5860276d584744487df0a4f1fef00e387d8e5528efeefc4114d77d6615.jpg,HASH_MAPPED +SAMAN,216016.jpg,dschoi.jpg,RENAMED,최대선,dschoi@samaneng.com,2b422e54cbe0fb94ac78c38a3e84b4650315698801e5ce9a24854211afa21d13.jpg,HASH_MAPPED +HANMAC,M24038.jpg,dhchoi.jpg,RENAMED,최대헌,dhchoi@hanmaceng.co.kr,119e754020223bfda280081d91c7ea470428f70cef111d12b52dc19780dc6103.jpg,HASH_MAPPED +SAMAN,224175.jpg,dhchoi1.jpg,RENAMED,최도현,dhchoi1@samaneng.com,bdcac1c127a727726ab43c2f8824cc90c40d2cf9161b0d137a757d2ec9e6cf88.jpg,HASH_MAPPED +SAMAN,221156.jpg,dkchoi.jpg,RENAMED,최동규,dkchoi@samaneng.com,fa7967b074b762f6ab554ffb7cd0ec04e03fe7f61782db196401ef4f7afc52c4.jpg,HASH_MAPPED +SAMAN,223381.jpg,dschoi1.jpg,RENAMED,최동석,dschoi1@samaneng.com,141071a71c5e0726c6c4385070a8aeae5090128e08cdb1657ccc0956692e3dcc.jpg,HASH_MAPPED +SAMAN,216007.jpg,dschoi16.jpg,RENAMED,최동식,dschoi16@samaneng.com,497392435cb4da486c40e8d8046c72c170609caf58b75e2d9d5b0fb8a9c543fa.jpg,HASH_MAPPED +JANGHEON,J22301.jpg,dcchoi.jpg,RENAMED,최동찬,dcchoi@brsw.kr,530b1dd80e859f136df2bc90b1235f200b8b7de5da2b2e252b6de3f1391e5820.jpg,HASH_MAPPED +SAMAN,221164.jpg,rchoi.jpg,RENAMED,최란,rchoi@samaneng.com,2b0d747cf9dec39eed426f30dde37c98b4996cc6f4efe110455ae1b1ce53a53a.jpg,HASH_MAPPED +JANGHEON,J22305.jpg,mkchae.jpg,RENAMED,최만규,mkchae@brsw.kr,5fb9596abd95e38e3428902f30574e796c7e3cfb11817bcd761225697f6aa20d.jpg,HASH_MAPPED +SAMAN,214080.jpg,mhchoi.jpg,RENAMED,최무호,mhchoi@samaneng.com,cefb95031d8a644f0ae9286efddb4e6982cfda671e1f0bf92480a1cc2f7e4027.jpg,HASH_MAPPED +SAMAN,025102.jpg,mjchoi.jpg,RENAMED,최민주,mjchoi@samaneng.com,fb499ab52ed93c58e45611d848680d645910915e4941674aa1db08377148e2cd.jpg,HASH_MAPPED +SAMAN,220131.jpg,bschoi2.jpg,RENAMED,최병석,bschoi2@samaneng.com,5c9ac1a91ad30a2350c804c09272673590f8b39f2cc2bce25cf85c52172c92b4.jpg,HASH_MAPPED +SAMAN,218039.jpg,smchoi.jpg,RENAMED,최상민,smchoi@samaneng.com,57649558d7aeb01dcce0b96fa10507484eb01bbae20dded26c5ecba15ddd3b83.jpg,HASH_MAPPED +SAMAN,222080.jpg,sichoi.jpg,RENAMED,최상인,sichoi@samaneng.com,10be7f11e50feb91dd851897df579034a8d66861669152735600b3d948ab01df.jpg,HASH_MAPPED +SAMAN,226146.jpg,smchoi2.jpg,RENAMED,최석문,smchoi2@samaneng.com,6b98ca65050cde239fd6500a0a507026a8476e7a1c2675e3d02e84878261218b.jpg,HASH_MAPPED +SAMAN,026003.jpg,smchoi1.jpg,RENAMED,최선미,smchoi1@samaneng.com,790e4a31ffce6f7a543a0c3c212c80efd0517041d86ca14e7890c6ad91ddf3f9.jpg,HASH_MAPPED +SAMAN,222156.jpg,sachoi.jpg,RENAMED,최선아,sachoi@samaneng.com,4c35f61b65b8ac15d305aa2fa3602d39cec94270193eb5646ebff3256f33f5c7.jpg,HASH_MAPPED +SAMAN,226028.jpg,shchoi3.jpg,RENAMED,최선환,shchoi3@samaneng.com,700c700cca2f3ca094ec5acefbe44811f66e399f40cf55fceb86b9255d375428.jpg,HASH_MAPPED +SAMAN,212137.jpg,sgchoi.jpg,RENAMED,최성균,sgchoi@samaneng.com,7e962f4be462b54f51358da81dce9a00bc91c7f0b49093a82391ccc21d42925b.jpg,HASH_MAPPED +HANMAC,M23031.jpg,sgchoi2.jpg,RENAMED,최성길,sgchoi2@hanmaceng.co.kr,4e547a27faa8d8907c2906e80a77b9e49fb6c32c670ff6d5407cf9d0ccad2bae.jpg,HASH_MAPPED +SAMAN,225302.jpg,sbchoi1.jpg,RENAMED,최성배,sbchoi1@samaneng.com,971c5fca6f8f3e57fa4098d612ca204eab61b1bc1cb2016803020ff627faa559.jpg,HASH_MAPPED +SAMAN,224254.jpg,shchoi1.jpg,RENAMED,최성환,shchoi1@samaneng.com,1a28c8d52110b03079bd68d9d280b91d509a35ebfeee226638b81abfdba78b2b.jpg,HASH_MAPPED +SAMAN,222027.jpg,sbchoi.jpg,RENAMED,최솔비,sbchoi@samaneng.com,795d5fb773508036b7201c3489c0ed0e6d2d394b259bfdab6129f67e51d31cd2.jpg,HASH_MAPPED +SAMAN,225049.jpg,shchoi4.jpg,RENAMED,최수혁,shchoi4@samaneng.com,160d597b41f409cf4cb0b90abb925e0a4d709615648782e6adb66a4eb1bdc162.jpg,HASH_MAPPED +SAMAN,225069.jpg,shchoi5.jpg,RENAMED,최순호,shchoi5@samaneng.com,5f51e9237143e859f7c6c94169920934252b15d2e5f16590c232011466ca947b.jpg,HASH_MAPPED +HANMAC,M21432.jpg,sbchoi2.jpg,RENAMED,최승범,sbchoi2@hanmaceng.co.kr,7dd00e40b6905dab97ca0e3b7ae0b7b966d53d147a92f76b48133e45f4ee9c2e.jpg,HASH_MAPPED +SAMAN,225167.jpg,swchoi1.jpg,RENAMED,최승우,swchoi1@samaneng.com,8eb84109ac6fd4de7ed7fef1fc3e5499ed22f38da96def4cba9fbc19431b7e92.jpg,HASH_MAPPED +SAMAN,224343.jpg,sjchoi.jpg,RENAMED,최승제,sjchoi@samaneng.com,5c020f4fa3f1ceb106f327bc1fddbabcb7c18452b1923ade9c24d308a8574146.jpg,HASH_MAPPED +SAMAN,223144.jpg,yschoi.jpg,RENAMED,최연서,yschoi@samaneng.com,f43d5e1fa09555af908509f98720a686764cef23e4c5e2f67d63da4167d94527.jpg,HASH_MAPPED +SAMAN,217033.jpg,yrchoi.jpg,RENAMED,최영록,yrchoi@samaneng.com,1ba7c5576dfff842ecbbca6c3992042da18f05e5a3a1bad89de5af77cb730554.jpg,HASH_MAPPED +SAMAN,224220.jpg,ymchoi.jpg,RENAMED,최영민,ymchoi@samaneng.com,5fa9c2f5c1677a75c5ff7ed2bfef705310b9e66114af77efc327d0126341a89e.jpg,HASH_MAPPED +SAMAN,224073.jpg,ywchoi.jpg,RENAMED,최영욱,ywchoi@samaneng.com,3461a5bb0a970a84502f5d87131293b05bdfa4db4934c0b64e9ae15ae681718f.jpg,HASH_MAPPED +SAMAN,215051.jpg,yjchoi.jpg,RENAMED,최영종,yjchoi@samaneng.com,3b00bc60034e869bfcdd12430d6b8c4f920281bdb01452f634d923fabdec87b2.jpg,HASH_MAPPED +SAMAN,224153.jpg,yjchoi4.jpg,RENAMED,최영주,yjchoi4@samaneng.com,0fbf44e96752accaaa86816543eedb6832be3a3aed16963932e168aaa583ea6f.jpg,HASH_MAPPED +HANMAC,M25018.jpg,ycchoi.jpg,RENAMED,최영철,ycchoi@hanmaceng.co.kr,c5558739b02a267cf788bcda48f2c8bb3c18980cac461328724a1605f797cdc6.jpg,HASH_MAPPED +HANMAC,B16302.jpg,yhchoi3.jpg,RENAMED,최영환,yhchoi3@hanmaceng.co.kr,2bd8879b1fdfa4d65bfa998fdce0fe7a5d238bbf5d6f495da3b786e249bea2b4.jpg,HASH_MAPPED +SAMAN,224167.jpg,yhchoi2.jpg,RENAMED,최영훈,yhchoi2@samaneng.com,b6cbb0180d879cbdeda1ee253e53e6db6e4a0087be42827442b696976de5ff05.jpg,HASH_MAPPED +SAMAN,226017.jpg,ohchoi.jpg,RENAMED,최오혁,ohchoi@samaneng.com,adfaccc305146c1c86aeb41c3e3dda418d3dd2429623989d89df6174466a05ed.jpg,HASH_MAPPED +SAMAN,224087.jpg,wdchoi.jpg,RENAMED,최완동,wdchoi@samaneng.com,65a9e4ea9c45bfcbe8e408dae827f70fc5f02d293fd8d450eff029f4be72adc8.jpg,HASH_MAPPED +SAMAN,224372.jpg,yjchoi6.jpg,RENAMED,최용준,yjchoi6@samaneng.com,c7540803884781e9117b4fd68af1a9768e20c959ce66edcd82b6a1f1d1507259.jpg,HASH_MAPPED +SAMAN,222010.jpg,yhchoi.jpg,RENAMED,최용혁,yhchoi@samaneng.com,1e40e97464f6f554b28ec1e8fbb6297db43bf3e161ed679aa22001cf7d44000b.jpg,HASH_MAPPED +SAMAN,224001.jpg,wschoi1.jpg,RENAMED,최원석,wschoi1@samaneng.com,718943e4111f177f3af99b55e1dd694ec79b9f7ab8eb7cbc63f2aeadb0abc308.jpg,HASH_MAPPED +SAMAN,226029.jpg,wjchoi.jpg,RENAMED,최원준,wjchoi@samaneng.com,bb3428811ca50ee1c2079a55c89728056a7cf9b757c84fb2166180f666107ed2.jpg,HASH_MAPPED +SAMAN,207182.jpg,whchoi.jpg,RENAMED,최원현,whchoi@samaneng.com,7acb99d43d989797f7b6dacda28f0652c3f19f75f62823dd2c6be02fc7773611.jpg,HASH_MAPPED +SAMAN,217130.jpg,whchoi1.jpg,RENAMED,최원형,whchoi1@samaneng.com,606af137927674da4eb76a0b2103ea1b2f5376f9534be85b5a095d1914ec9d92.jpg,HASH_MAPPED +SAMAN,222288.jpg,whchoi2.jpg,RENAMED,최원호,whchoi2@samaneng.com,60d13e9cf434973f6e4b8d6a532f7a061e5ff9d08cba94a9abf2e9adc195ed5a.jpg,HASH_MAPPED +SAMAN,026001.jpg,yjchoi2.jpg,RENAMED,최윤주,yjchoi2@samaneng.com,1da962b007706c07937a0ac79cc92c3bd3328e2fc7e883952e1b7bf3f877ef4f.jpg,HASH_MAPPED +SAMAN,222240.jpg,yjchoi1.jpg,RENAMED,최윤진,yjchoi1@samaneng.com,174d25247c33293ec8b53b50e6cd2f5848573a92c34c141bd4cd6cbaf4f7f99a.jpg,HASH_MAPPED +PTC,P11201.jpg,eschoi1.jpg,RENAMED,최은석,eschoi1@brsw.kr,03c57da7dbd15bbffb631a07bfb916b1112eb2e110b818e15df735c895664060.jpg,HASH_MAPPED +SAMAN,220078.jpg,eschoi.jpg,RENAMED,최은수,eschoi@samaneng.com,86580c9725ae0e994f92dd9352ec38c78da3d46664980b943e88273e3ad2877f.jpg,HASH_MAPPED +SAMAN,203125.jpg,ekchoi.jpg,RENAMED,최의균,ekchoi@samaneng.com,832ab90b0f7186b381ff0abe80aee89cb4e842d3f5a6be0faef0ad60e9c9bc82.jpg,HASH_MAPPED +SAMAN,200092.jpg,jkchoi.jpg,RENAMED,최장규,jkchoi@samaneng.com,e2743ee8faf0c2b381eba71700a3a188aa7e6cb3d0853e125be6d167e9cfba48.jpg,HASH_MAPPED +HANMAC,M25005.jpg,jgchoi2.jpg,RENAMED,최재곤,jgchoi2@hanmaceng.co.kr,1aa5547f916b050c522fb38c28c1c7d312fcbf8df7ca20fc3b464254efdce174.jpg,HASH_MAPPED +SAMAN,221240.jpg,jychoi.jpg,RENAMED,최재영,jychoi@samaneng.com,6e3ba38578dd0b5cc5001d16c9f1ee96533ef352a3a4129a88995d94908dee45.jpg,HASH_MAPPED +SAMAN,225367.jpg,jwchoi2.jpg,RENAMED,최재우,jwchoi2@samaneng.com,60912787b0cb97060c0e66ec11a2e35f0ee3367047493556793b5f0a1b528b6d.jpg,HASH_MAPPED +SAMAN,226111.jpg,jwchoi6.jpg,RENAMED,최재원,jwchoi6@samaneng.com,3a1e4b759932cc8abe846d97c05e618a9f5f452b11f4c68dab133c9e44122f8d.jpg,HASH_MAPPED +SAMAN,221291.jpg,jkchoi1.jpg,RENAMED,최정균,jkchoi1@hanmaceng.co.kr,01e7ebfbbc0497324c46f1fc745f0f6d7cea7110cad0602f59f58ec32c9d6c3a.jpg,HASH_MAPPED +HANMAC,M24064.jpg,jkchoi3.jpg,RENAMED,최정길,jkchoi3@hanmaceng.co.kr,43c2c698eb87aa74e29071bc56daa0c96e3ffc52dd1b2849a6931844909efd2e.jpg,HASH_MAPPED +SAMAN,221337.jpg,jwchoi3.jpg,RENAMED,최정우,jwchoi3@samaneng.com,6bc2db2cb3b84201ccfa6d0daf6068d518fc47732d51b504d3c0abb5847cf6da.jpg,HASH_MAPPED +SAMAN,224249.jpg,jhchoi5.jpg,RENAMED,최정호,jhchoi5@samaneng.com,e6a0f444162b7b9dbe9c0cbb4a3df87472db101fa18720d669de23bd0a8bb4ac.jpg,HASH_MAPPED +SAMAN,224341.jpg,jhchoi4.jpg,RENAMED,최정훈,jhchoi4@samaneng.com,98bec83f01a93bf0c653e19dc9cbd9bd7d937d127d0a235cb963ecfea27acf55.jpg,HASH_MAPPED +SAMAN,225051.jpg,jhchoi7.jpg,RENAMED,최제현,jhchoi7@samaneng.com,8ee27e1aaa97d6d76dd09b9904ba6b3b07148d73bc11c75382b98177c2876561.jpg,HASH_MAPPED +PTC,P17301.jpg,jhchoi13.jpg,RENAMED,최종석,jhchoi13@brsw.kr,d39e341d8689353b9505134ac176ae855f05996f331ddd24b47b3ae70a2aaabd.jpg,HASH_MAPPED +SAMAN,226016.jpg,jwchoi5.jpg,RENAMED,최종원,jwchoi5@samaneng.com,8f769725c1e2cd2295636fcfa3c725e8668c9968286f45733288619748a01433.jpg,HASH_MAPPED +SAMAN,225254.jpg,jhchoi9.jpg,RENAMED,최종학,jhchoi9@samaneng.com,f27cd342f59068969024b5bd6baa1b7039b02c470350d2aaaeac44d66755971c.jpg,HASH_MAPPED +HANMAC,M26030.jpg,jhchoi11.jpg,RENAMED,최종현,jhchoi11@hanmaceng.co.kr,1cc44b2f1e831f17b8c8a645d561f2a63cccf40a75e1b1f31d1deff997d439b6.jpg,HASH_MAPPED +SAMAN,223316.jpg,jhchoi.jpg,RENAMED,최종환,jhchoi@samaneng.com,426988661183df88829bd8a2d5f1055448c0715bd8363e78ba2b6ee2eda7a024.jpg,HASH_MAPPED +SAMAN,222263.jpg,jhchoi1.jpg,RENAMED,최종훈,jhchoi1@samaneng.com,7e61b34ea66ec489fd7df1ee5ed01cf98066b6977b094497113f89ee832afb08.jpg,HASH_MAPPED +HANMAC,B17314.jpg,jychoi4.jpg,RENAMED,최준영,jychoi4@hanmaceng.co.kr,548414206de99d45165100e490201f4f263d9a9cc8ab92053ed00b8557003faf.jpg,HASH_MAPPED +SAMAN,224394.jpg,jhchoi6.jpg,RENAMED,최준호,jhchoi6@samaneng.com,4410abdfb39067c2bf5a71f82e9a9ef37f0b7475960a3b13486f676b6e69b61a.jpg,HASH_MAPPED +SAMAN,225155.jpg,jhchoi8.jpg,RENAMED,최준환,jhchoi8@samaneng.com,d0e8b2280ebbb8faceeea6a0993efb5401387298cd3a7b31a08052863515026d.jpg,HASH_MAPPED +SAMAN,223385.jpg,jschoi.jpg,RENAMED,최지수,jschoi@samaneng.com,ae5b581887701e2fda979fe3efb3180d8957c4847b8557ea9983d83c14ccb1e6.jpg,HASH_MAPPED +SAMAN,222188.jpg,jychoi3.jpg,RENAMED,최지영,jychoi3@samaneng.com,12a85fc63d4d2ad94d97e7a2d3e7df80f210ffbe0994e176ccc1222c4f013593.jpg,HASH_MAPPED +SAMAN,224105.jpg,jhchoi2.jpg,RENAMED,최지훈,jhchoi2@samaneng.com,c900f3fce5edc9ead4021ef9c447591efae9565b17d13b01ebb17e411f03924d.jpg,HASH_MAPPED +HANMAC,M24043.jpg,jkchoi2.jpg,RENAMED,최진경,jkchoi2@hanmaceng.co.kr,207f81579041fc49dbf08aa90617638b0a15df7f2c819e6b0f6cb25c89d13092.jpg,HASH_MAPPED +SAMAN,218118.jpg,jychoi1.jpg,RENAMED,최진영,jychoi1@samaneng.com,12325e2f6dc42736f435970601ca653e9246f8c926f59dc49b48e541b3233f5d.jpg,HASH_MAPPED +SAMAN,194057.jpg,jwchoi.jpg,RENAMED,최진우,jwchoi@samaneng.com,adeccc4b8e230a62411e8146092830e350e743e2f6b44208b1218259f80649ad.jpg,HASH_MAPPED +HANMAC,M02310.jpg,jwchoi7.jpg,RENAMED,최진우,jwchoi7@hanmaceng.co.kr,edc46cf38cd04d08d6efe42743c9f170069f1582caff1a69faa32e8f78ad83da.jpg,HASH_MAPPED +SAMAN,223300.jpg,jwchoi4.jpg,RENAMED,최진원,jwchoi4@samaneng.com,df54cb2faae4b53a9046fa805d0abc741fc88cea6d571787b3972e6e30461728.jpg,HASH_MAPPED +HANMAC,B24032.jpg,jtchoi.jpg,RENAMED,최진태,jtchoi@brsw.kr,eb1951cfdec4d398e557e4302ca7b46c6527acbad3c1ac2b4ecbc2bd9b9f499f.jpg,HASH_MAPPED +SAMAN,221143.jpg,cschoi.jpg,RENAMED,최찬수,cschoi@samaneng.com,995155d4305f3d36dbb4786cb8dbc0ab8554d6fffe390494e1498d8c10087b04.jpg,HASH_MAPPED +SAMAN,222185.jpg,cychoi1.jpg,RENAMED,최찬용,cychoi1@samaneng.com,2ac81efe25e50037d66a96ebc001bb352fb7b55312c7d563ea9272fd51227e6a.jpg,HASH_MAPPED +SAMAN,221089.jpg,cychoi.jpg,RENAMED,최창열,cychoi@samaneng.com,0ab5e68377971a1e464bd6a9f86617e233262f2dbbc7810932241a81cae49dd5.jpg,HASH_MAPPED +SAMAN,222089.jpg,cichoi.jpg,RENAMED,최창인,cichoi@samaneng.com,09e41c337ed1ca418c5638c37356655f593e88b3ee72fb628fc30d41db438773.jpg,HASH_MAPPED +SAMAN,224210.jpg,cdchoi.jpg,RENAMED,최천동,cdchoi@samaneng.com,78cb5ccfc1e820bd15ad3a82409179668f592b4db7f13bd8cf9d73ed3ca3cd3f.jpg,HASH_MAPPED +SAMAN,224232.jpg,cjchoi.jpg,RENAMED,최철준A,cjchoi@samaneng.com,8f36f3436d500672da90eb16b61d3d69e03fa655de36927043a3503f00b916d9.jpg,HASH_MAPPED +SAMAN,225381.jpg,cjchoi1.jpg,RENAMED,최철준B,cjchoi1@samaneng.com,ec005c71496eeee66f8282af71684dc56ceb6967c6dc6d08444b537f726ad254.jpg,HASH_MAPPED +JANGHEON,J10301.jpg,tschoi.jpg,RENAMED,최태순,tschoi@brsw.kr,9a0bd6e518958610a8d5aa084ae6a3f1b0582d0bb471ad879b1e303ad99aa4e8.jpg,HASH_MAPPED +HANMAC,M24045.jpg,hkchoi2.jpg,RENAMED,최현근,hkchoi2@hanmaceng.co.kr,7b18ed6adc7bbc3ae107919d48e7627d40eaa67d35706271d31a18084aa77db3.jpg,HASH_MAPPED +PTC,P23201.jpg,hkchoi3.jpg,RENAMED,최현기,hkchoi3@brsw.kr,5139066c538bbd930d38f66ed01ebb7b87db162b3bdc923d8f4459dee2d2c46c.jpg,HASH_MAPPED +SAMAN,226054.jpg,hmchoi.jpg,RENAMED,최현민,hmchoi@samaneng.com,f2ae04c92a99bf0ede7cd489ae882b5c33ab42a2e183bc0b0c77fe0b374855f9.jpg,HASH_MAPPED +SAMAN,215023.jpg,hschoi.jpg,RENAMED,최현석,hschoi@samaneng.com,42aab65e503415624e0f6de6d0c65785220572157e5ac754d5a353e5a5b850db.jpg,HASH_MAPPED +SAMAN,225149.jpg,hjchoi1.jpg,RENAMED,최현진,hjchoi1@samaneng.com,2acec4ab26d828c9c9d268cfa3b8804097ce51db0d35077ca83363cba941156d.jpg,HASH_MAPPED +HANMAC,B22064.jpg,hhchoi.jpg,RENAMED,최현호,hhchoi@brsw.kr,68dbd8e86128aad2e399b747c450a59aa5479e44aa25721f9434982d62205c38.jpg,HASH_MAPPED +SAMAN,223266.jpg,hkchoi.jpg,RENAMED,최형규,hkchoi@samaneng.com,79ba564873399ab0bdaa128e4432f971f780aeb6320488ba915e3e29fba7e0bd.jpg,HASH_MAPPED +SAMAN,226068.jpg,hkchoi1.jpg,RENAMED,최형기,hkchoi1@samaneng.com,d70a0eac5f4345a238d853a98f4e5687a1e2601d7a9a838e674d2cb7e8d84cab.jpg,HASH_MAPPED +HANMAC,B23060.jpg,huchoi.jpg,RENAMED,최혜은,huchoi@brsw.kr,d6d479c8bc82f2fe9dd57fe39e39e1b4a7a3534430bbc90f64450631475d4d2c.jpg,HASH_MAPPED +SAMAN,225289.jpg,hschoi2.jpg,RENAMED,최호삼,hschoi2@samaneng.com,bc2be32150e832769c923dd40f3fc95499ec2add0219b4008ec75b81267ef0b5.jpg,HASH_MAPPED +SAMAN,223038.jpg,hcchoi1.jpg,RENAMED,최홍찬,hcchoi1@samaneng.com,b62a64be00a008f63d609faed3be56c06e0be57f4400a3ff179ad9765b3e7184.jpg,HASH_MAPPED +HANMAC,M26011.jpg,hschoi3.jpg,RENAMED,최희섭,hschoi3@hanmaceng.co.kr,a4ea9218f4ccb2ae45024c9fb34332b45200a3ab207f91fe67e1734268f8e856.jpg,HASH_MAPPED +SAMAN,222285.jpg,hychoe.jpg,RENAMED,최희윤,hychoe@samaneng.com,d33369cae251b21241681087bea2afe4dce1a263c6f3bbe4694eaa4d906d4a87.jpg,HASH_MAPPED +SAMAN,225263.jpg,kichu.jpg,RENAMED,추경일,kichu@samaneng.com,f0b43ed702eb489a3f9a2ee1a93f1903ead54837c0e0e71d4ae6fcf3f2570551.jpg,HASH_MAPPED +SAMAN,225238.jpg,jychoo.jpg,RENAMED,추재영,jychoo@samaneng.com,75e0eefb30b682f8ddddf7f655e3489b28b20c82059b5885ce8d027a9648f315.jpg,HASH_MAPPED +SAMAN,220099.jpg,jhchoo.jpg,RENAMED,추정호,jhchoo@samaneng.com,a9c9c0f68e265ba7027833d2b1722ad9d7497f2809148714aa912fdf250f2e53.jpg,HASH_MAPPED +SAMAN,222017.jpg,adilqayyum.jpg,RENAMED,콰윰 아딜,adilqayyum@samaneng.com,13624382e35a8e96dd85cd3cadb02b5cd06afa340e543754388bd139bcca5c47.jpg,HASH_MAPPED +SAMAN,223400.jpg,jttae.jpg,RENAMED,태종태,jttae@samaneng.com,d5683b21434ba49df17923e39fe2fdafef62cd9f15553185fd6d95cffdfb767c.jpg,HASH_MAPPED +SAMAN,224099.jpg,falcon.jpg,RENAMED,팔콘,falcon@samaneng.com,4c5eb2781aa400c12719d5679f9b5fafd26fa9532a360cc89b0cfdb19376e138.jpg,HASH_MAPPED +SAMAN,224242.jpg,bypyo.jpg,RENAMED,표범열,bypyo@samaneng.com,3d4d721afda66b3586537e0c42809b8eefa3253fe7c1a9d12ee9d8c69e24803d.jpg,HASH_MAPPED +SAMAN,225185.jpg,yjpyo.jpg,RENAMED,표연준,yjpyo@samaneng.com,bb03ec30abc5641f7a81ce748f85d79b09188bd08a1e2e7d88e166964cf9f7be.jpg,HASH_MAPPED +SAMAN,223281.jpg,jhpyo.jpg,RENAMED,표재학,jhpyo@samaneng.com,97de0a4a071289f7315a3912250de1d62738ec0193f0f337171ab6f2fbbc8f77.jpg,HASH_MAPPED +HANMAC,M08301.jpg,jjpyo.jpg,RENAMED,표종진,jjpyo@hanmaceng.co.kr,941772e36ab9fa90920f8dad6f9fc4f89701727f98c58addcbdb657d44b9cbf3.jpg,HASH_MAPPED +SAMAN,225181.jpg,thpi.jpg,RENAMED,피태희,thpi@samaneng.com,9467d209a280982b48c91c61aa9001138e48b43c5889428d5b7d0c83841f6a9a.jpg,HASH_MAPPED +SAMAN,221243.jpg,khha.jpg,RENAMED,하광효,khha@samaneng.com,be5faf9aa3f1dd7d355348cee2fcc96c35b13b7d328fdefe6a45a081689d0e16.jpg,HASH_MAPPED +SAMAN,212010.jpg,msha.jpg,RENAMED,하문수,msha@samaneng.com,96cebf8e72e31a052b8cfa78088fdc61f0497ad7408ea71da8fc4b11a8b7be3a.jpg,HASH_MAPPED +SAMAN,224025.jpg,mhha.jpg,RENAMED,하민호,mhha@samaneng.com,1bb42d5494e2ee118c10c2d445851783894798f88ddd1648c98b7760b99b50d8.jpg,HASH_MAPPED +SAMAN,221062.jpg,shha1.jpg,RENAMED,하성호,shha1@samaneng.com,26b0bd5c4d91d7bfbc7c18387b3c5ce52170b7bb831337a905f4ae63e5e8bd37.jpg,HASH_MAPPED +SAMAN,221114.jpg,syha.jpg,RENAMED,하신용,syha@samaneng.com,fffceabc216097767c58ddff618238605441ed485fc9474a5395887d3b63ba54.jpg,HASH_MAPPED +SAMAN,223017.jpg,yjha.jpg,RENAMED,하연재,yjha@samaneng.com,553229e776b96a6382ace5033358b1fdd1dbc779e5e8036cbedb61ee106c8d21.jpg,HASH_MAPPED +SAMAN,225168.jpg,jsha.jpg,RENAMED,하재성,jsha@samaneng.com,368efbc3f16eaba9a65c3aa0b64c03780c3f2155ba58f981a8426f94ff900708.jpg,HASH_MAPPED +SAMAN,225010.jpg,cbha.jpg,RENAMED,하창봉,cbha@samaneng.com,80617152e7d0b41cf94a9bb33aae55d4db06d90f78a342380e7fc739bce4d377.jpg,HASH_MAPPED +SAMAN,220270.jpg,kshan.jpg,RENAMED,한경섭,kshan@samaneng.com,f9457604e6bd36ffaa4bf892998d5fc0283c4592974fe69cbca4c90395ff07de.jpg,HASH_MAPPED +SAMAN,221074.jpg,kjhan.jpg,RENAMED,한국진,kjhan@samaneng.com,645ed7c8e5d8835a80024f85a76229c4ba254a3b0b11f6f761e73ff4e4b4fce1.jpg,HASH_MAPPED +SAMAN,221011.jpg,nyhan.jpg,RENAMED,한나영,nyhan@samaneng.com,113956fe963c1718b8813fc56c3bdde7dab3e4a1aba33e23f1a930dfdf4e76db.jpg,HASH_MAPPED +SAMAN,223035.jpg,dyhan.jpg,RENAMED,한대영,dyhan@samaneng.com,9830afe078124f263ea9ba73496cc8c4dc0a0b5693d4c0656e43a1f2ff607733.jpg,HASH_MAPPED +SAMAN,224023.jpg,dyhan1.jpg,RENAMED,한동윤,dyhan1@samaneng.com,bde64c52d923ed5add437ca0ebb34736b812fc353a6139e7e7639088c217da63.jpg,HASH_MAPPED +SAMAN,224030.jpg,dhhan.jpg,RENAMED,한동현,dhhan@samaneng.com,0ea1a79aa07f2550bd02f0360d9548a4c1cfb34cbf07bc1b3d14bc7fca5afd47.jpg,HASH_MAPPED +SAMAN,224385.jpg,dhhan1.jpg,RENAMED,한동현,dhhan1@samaneng.com,713c5b0b18115e26360e6f83b75c557d8395ab07186e7a69e2c7adf81f9625fc.jpg,HASH_MAPPED +HANMAC,M25073.jpg,dhhan3.jpg,RENAMED,한동호,dhhan3@hanmaceng.co.kr,c5129232ffd08b5c15036c1f431659585366c095b4d078b84253c50b3af5e808.jpg,HASH_MAPPED +HANMAC,M25031.jpg,dhhan2.jpg,RENAMED,한동화,dhhan2@hanmaceng.co.kr,a9bbe93704c914d400dce127db681583ffb5a9ab4d1608075a2db0d4f5b7e7bb.jpg,HASH_MAPPED +SAMAN,217087.jpg,mshan.jpg,RENAMED,한명석,mshan@samaneng.com,489b2594d1401bfb3444f970b1207f56aeec6c53438539b917854be344ec646b.jpg,HASH_MAPPED +SAMAN,224118.jpg,mjhan.jpg,RENAMED,한민정,mjhan@samaneng.com,5af35058660ec628190622f9069839e56765fe4c16e88e26d77292edb87bbf41.jpg,HASH_MAPPED +SAMAN,225025.jpg,bshan.jpg,RENAMED,한반석,bshan@samaneng.com,e49cee6febe580270fea0ea78a1092a3fa72b10c674b1a7bbb8bbe7e0883a17d.jpg,HASH_MAPPED +SAMAN,224204.jpg,syhan.jpg,RENAMED,한상연,syhan@samaneng.com,e9f758252021439a7f3f790adf114d7fe30c960eee596913de82e1f0e4ed1398.jpg,HASH_MAPPED +SAMAN,223212.jpg,swhan2.jpg,RENAMED,한상욱,swhan2@samaneng.com,f973396c0d33421d165f31ca4a7d784afe8078994350a313e044f95e0f76e934.jpg,HASH_MAPPED +HANMAC,M23030.jpg,sthan.jpg,RENAMED,한상태,sthan@hanmaceng.co.kr,2beace3ef24a1ea9211a608d5f6417e4139feebcf98968883d008939943f54d7.jpg,HASH_MAPPED +SAMAN,221165.jpg,srhan.jpg,RENAMED,한새란,srhan@samaneng.com,9e1f8296caf93057351eebebd215f8788a614b82929fa3f79780c2f7da562627.jpg,HASH_MAPPED +SAMAN,223315.jpg,skhan.jpg,RENAMED,한선구,skhan@samaneng.com,56846a15122293d6363b08859a8132c64314871ec6badd0aa2d0c154e8b7c4c4.jpg,HASH_MAPPED +SAMAN,224319.jpg,sshan.jpg,RENAMED,한성숙,sshan@samaneng.com,4cf7d23fd3a61f0595b534c233d05579e1927df948a534c86ce8304d1377c840.jpg,HASH_MAPPED +SAMAN,225264.jpg,swhan.jpg,RENAMED,한성원,swhan@samaneng.com,f8856e031e3a29956f71bfa04bb23a375ee3e448a688f013b2bd00ea3052ff36.jpg,HASH_MAPPED +SAMAN,223226.jpg,sihan.jpg,RENAMED,한성일,sihan@samaneng.com,248731732dd38c3bcfab5e4f72004ef2ff52b7979dfbe31cd8062b9b81205cb2.jpg,HASH_MAPPED +HANMAC,B23070.jpg,smhan.jpg,RENAMED,한승민,smhan@hanmaceng.co.kr,996a8866c3acbb0e00d30f13ea21a552114a93acd6bf6744bb99dd29eee6f7f2.jpg,HASH_MAPPED +SAMAN,203233.jpg,swhan1.jpg,RENAMED,한승완,swhan1@samaneng.com,1499d51ecbea953dcea5b2e41a3d76986ac79f9f6148a206e9a9f5e16fd104e4.jpg,HASH_MAPPED +SAMAN,222068.jpg,schan.jpg,RENAMED,한승철,schan@samaneng.com,887fc08270c79816c4a221990c54d482164fb105b2faaa365ba465b80972c476.jpg,HASH_MAPPED +SAMAN,205073.jpg,shhan.jpg,RENAMED,한승한,shhan@samaneng.com,f28933a241775c03b0ba590659d43e130363a63e83a7e01136f5fef3b81acd7e.jpg,HASH_MAPPED +SAMAN,201214.jpg,ymhan.jpg,RENAMED,한영민,ymhan@samaneng.com,a08608bd3680c58844c5fcb8f72b1af1497a5d1cd9aa67bae0f850e0de30c720.jpg,HASH_MAPPED +SAMAN,206056.jpg,ybhan.jpg,RENAMED,한용배,ybhan@samaneng.com,7c8927d97f619530e2b65f220baa8cb6bf0a90f22ae6d3d778098b653c859635.jpg,HASH_MAPPED +SAMAN,222237.jpg,yuhan.jpg,RENAMED,한용우,yuhan@samaneng.com,83bf003983a293fb994a1cbfbfdf0c408f40d43ff7e1e53114a379a139c68ab9.jpg,HASH_MAPPED +SAMAN,220069.jpg,ehhan.jpg,RENAMED,한은홍,ehhan@samaneng.com,81369bd7639d05b3b17bac5924c43421b664f94ce2077c9449691d5ff3ca1812.jpg,HASH_MAPPED +SAMAN,224271.jpg,jwhan.jpg,RENAMED,한재욱,jwhan@samaneng.com,be415d5754914045717121c340170764c0292905274c71ba74e70087ac73d78c.jpg,HASH_MAPPED +SAMAN,225270.jpg,jhhan.jpg,RENAMED,한재형,jhhan@samaneng.com,d8e8e3b65c812c2ab6ddcd77bde0491d5d2bede821456b3a42c0e89feca26685.jpg,HASH_MAPPED +SAMAN,203155.jpg,jghan.jpg,RENAMED,한정규,jghan@samaneng.com,c0676f5da6deda2c0ed9f9576e10438ac53de18e91240a15971dc3aaf4a5d43c.jpg,HASH_MAPPED +SAMAN,197067.jpg,jshan.jpg,RENAMED,한정식,jshan@samaneng.com,33118ac57af766a8969434008bcb506daf1602ef632c038749d5c2f261790063.jpg,HASH_MAPPED +SAMAN,225216.jpg,jjhan1.jpg,RENAMED,한정주,jjhan1@samaneng.com,5a957ec32a4af3ca56a6d41eee9a9ae2a703718b02b5ed5b5621617088682ceb.jpg,HASH_MAPPED +SAMAN,224013.jpg,jyhan1.jpg,RENAMED,한주영,jyhan1@samaneng.com,eda05ce09952b33f285300469b036ded02cd1a6c90cdc2d02d59c2db36b64b7b.jpg,HASH_MAPPED +SAMAN,220132.jpg,jyhan.jpg,RENAMED,한준영,jyhan@samaneng.com,7f8d74c4117a7e836221349d99f94d81ae42142c142cd26eaf668a429c672689.jpg,HASH_MAPPED +SAMAN,222057.jpg,jahan.jpg,RENAMED,한지아,jahan@samaneng.com,cdfa0e86749b7520237b230fc0e834509adb93348cf19918ea0c1b75e01cc646.jpg,HASH_MAPPED +SAMAN,223021.jpg,jhhan1.jpg,RENAMED,한지훈,jhhan1@samaneng.com,db81279880336312631af8c5305aaf4e221d6f429b939ac7423cf86e90c94abb.jpg,HASH_MAPPED +SAMAN,223131.jpg,chhan.jpg,RENAMED,한창학,chhan@samaneng.com,cf15351eeb703d93200963154dbe877409762d920e012627ceaf9ad683dfd1f4.jpg,HASH_MAPPED +SAMAN,224382.jpg,cyhan.jpg,RENAMED,한치영,cyhan@samaneng.com,c6e84ea9dadb819a79f534c3854f6014d53b26820b9688c268ccefc90a16004a.jpg,HASH_MAPPED +SAMAN,221324.jpg,trhan.jpg,RENAMED,한택림,trhan@samaneng.com,bf8a61853918890ce72712ed3829396153d1d84791c55286e31f3ca7e29a2508.jpg,HASH_MAPPED +SAMAN,026041.jpg,hlhan.jpg,RENAMED,한하람,hlhan@samaneng.com,c95b365efdfb61064dd96cb1ec8073c5dafc2866d6ec613301f9d6e6fa243934.jpg,HASH_MAPPED +HANMAC,M01106.jpg,han.jpg,RENAMED,한형관,han@hanmaceng.co.kr,58d2e94af555ffc31f09c1fee41278434f9665fe48b935d49fcf20f73673cb4a.jpg,HASH_MAPPED +SAMAN,226114.jpg,djham.jpg,RENAMED,함덕재,djham@samaneng.com,70a9fdc846e37e70c4a5f077c2e283cbef581b084712d967bf342777a99e5fc4.jpg,HASH_MAPPED +SAMAN,224106.jpg,dwham.jpg,RENAMED,함도원,dwham@samaneng.com,35580be2f80947c44a703a3c025af2cd5531f84e1f9f166b22a0a41c613fd8d3.jpg,HASH_MAPPED +HANMAC,M23085.jpg,csham.jpg,RENAMED,함창수,csham@hanmaceng.co.kr,b002c99508cb9e5ddb883400c5cb14cba3d14c70eea1cb83ef7011fabc94b1d4.jpg,HASH_MAPPED +SAMAN,224022.jpg,huham.jpg,RENAMED,함해운,huham@samaneng.com,d7beaf6d3a9cfa1521292a008204ccdda7d19e693472e27a8d1987f358f9180a.jpg,HASH_MAPPED +SAMAN,221111.jpg,hiham.jpg,RENAMED,함홍일,hiham@samaneng.com,5226e6d072aa5ae0c49bab29ecfa26094552d5181331c16501279589b0b1ee6f.jpg,HASH_MAPPED +SAMAN,223325.jpg,dwheo.jpg,RENAMED,허동우,dwheo@samaneng.com,306afd06920f735e8bafcdba64a463b4d8a721b87085ccc18d6ffe685e0db4ef.jpg,HASH_MAPPED +SAMAN,218042.jpg,dhhur.jpg,RENAMED,허두홍,dhhur@samaneng.com,17694d9e87d750de666267e8226ed36ca3c86961e546b42646c3fb48201de017.jpg,HASH_MAPPED +SAMAN,224355.jpg,mhhur.jpg,RENAMED,허만혁,mhhur@samaneng.com,25efdc49a5528338aed04679543ac76be20c730a5e2c60440ece86f7c5f2e720.jpg,HASH_MAPPED +SAMAN,221295.jpg,bjher.jpg,RENAMED,허봉주,bjher@samaneng.com,c7039f8575ec244a2708ac567837e4e6fe3f3108247c9731fe3cf4e9e13a2917.jpg,HASH_MAPPED +SAMAN,211077.jpg,smhuh.jpg,RENAMED,허성무,smhuh@samaneng.com,9b916005f91d99432b38de73132d7a361467f0070bd3f1ddfe61f8fb2485e8f4.jpg,HASH_MAPPED +SAMAN,225006.jpg,swheo.jpg,RENAMED,허세욱,swheo@samaneng.com,a154dca5d497d519e4c2bc5a0788c3297130aa4275a77e6a99c0c9ca38817aa2.jpg,HASH_MAPPED +SAMAN,198078.jpg,shur.jpg,RENAMED,허승,shur@samaneng.com,14877e2902cfd030bacc9f6b40c0402d5bf0f062c7a1287b88de3ed8d07daf6d.jpg,HASH_MAPPED +SAMAN,216142.jpg,yhhuh.jpg,RENAMED,허영회,yhhuh@samaneng.com,b6299ee63c340b84aa402f070f4b54bd11231aba615f249fc9fac31487529551.jpg,HASH_MAPPED +SAMAN,221334.jpg,yhheo.jpg,RENAMED,허용화,yhheo@samaneng.com,916003e56b0b9d1eecb435b1f7443befb456bace989837e69fbe175a1794871f.jpg,HASH_MAPPED +SAMAN,226088.jpg,wheo.jpg,RENAMED,허욱,wheo@samaneng.com,eef155ae56deaba9a8f2187995fcda86615ed0051eb4d2fdc12839f13490df54.jpg,HASH_MAPPED +SAMAN,222073.jpg,unhuh.jpg,RENAMED,허유나,unhuh@samaneng.com,656942dd3ff10b5fe21a930e5adcde0b029605ea338fb81d0a240831c4b98d7b.jpg,HASH_MAPPED +HANMAC,M25042.jpg,yheo.jpg,RENAMED,허윤,yheo@hanmaceng.co.kr,301ed81856c2475fb7e146bf9b9373062dd073a8cc5cc39185b38b27f653ca43.jpg,HASH_MAPPED +SAMAN,213065.jpg,jkheo.jpg,RENAMED,허정근,jkheo@samaneng.com,fb9400b7268633664cea48b90d4018e7d89f2d190c7842428b48b439fdb2f882.jpg,HASH_MAPPED +SAMAN,211050.jpg,jhheo1.jpg,RENAMED,허준호,jhheo1@samaneng.com,303460cf9382bfa2aa41156ab7fcd493c275fc1cc186007a6828ce9a95e95f83.jpg,HASH_MAPPED +SAMAN,025036.jpg,jkhuh.jpg,RENAMED,허진경,jkhuh@samaneng.com,ec11f7272fd4a7562ad811472bd86a1c48694f32ed349cf6a9ed406818153de7.jpg,HASH_MAPPED +HANMAC,M21322.jpg,chheo.jpg,RENAMED,허찬행,chheo@hanmaceng.co.kr,de12a66567068ff4e8dbb4a79f88ab00dc3fe1c4418678fbc41d6a985d7018d2.jpg,HASH_MAPPED +SAMAN,224219.jpg,ctheo.jpg,RENAMED,허창택,ctheo@samaneng.com,8d67e51695cb6a7c04d2af65e65805c61d759213d65c6bc0af6bb25e7a182311.jpg,HASH_MAPPED +SAMAN,224307.jpg,hgher.jpg,RENAMED,허한구,hgher@samaneng.com,6f95f40fce0c4c02efb4b15ec13fedf950711a11b002e06020243ced6b04caf5.jpg,HASH_MAPPED +SAMAN,225350.jpg,hheo.jpg,RENAMED,허현,hheo@samaneng.com,df99143712b4d4807d7b3a2c897d294ca013056b38a22064f6c202a53bf997cc.jpg,HASH_MAPPED +SAMAN,223265.jpg,hhuh.jpg,RENAMED,허후,hhuh@samaneng.com,3cce4d9d2460f30c8ea1dc102778e3ff473c79e80896f8d5ae09a6007f7fb3fb.jpg,HASH_MAPPED +SAMAN,221096.jpg,hhun.jpg,RENAMED,허훈,hhun@samaneng.com,4c5e2bcddae1f8f4e28761d6b62304a987b00ca298501d18edb3603ee31b4455.jpg,HASH_MAPPED +SAMAN,220192.jpg,krhyun.jpg,RENAMED,현기림,krhyun@samaneng.com,ae32d37052095ee8a5b5611bbc86ade872a1e299d8c8b1e16007eb51a2bb3b62.jpg,HASH_MAPPED +SAMAN,225043.jpg,dhhyun.jpg,RENAMED,현도현,dhhyun@samaneng.com,ddb170c07589625ef4686529f8e8c3836712203d2af98379dbbc4031ca1343ec.jpg,HASH_MAPPED +HANMAC,B20305.jpg,dghyeon.jpg,RENAMED,현동규,dghyeon@hanmaceng.co.kr,46682343966a6aba61f796f96b2500117fc062a28ebd2689b8e108735840e1c6.jpg,HASH_MAPPED +SAMAN,226099.jpg,mjhyun.jpg,RENAMED,현민종,mjhyun@samaneng.com,2453316cb303e0023fee5fae8999e8e0a547635a8a9b23190062fea34162662f.jpg,HASH_MAPPED +HANMAC,M21454.jpg,shhyun.jpg,RENAMED,현석훈,shhyun@hanmaceng.co.kr,671f3a4787d4dd1414e920db98f2bdf4876b73f81ba585fb4749d687e33f3af8.jpg,HASH_MAPPED +SAMAN,225323.jpg,jnhyun.jpg,RENAMED,현종내,jnhyun@samaneng.com,07526e7a194a020cc5d20bd67d6baf4495da62674df1d659fa5bb8b8f40ca26e.jpg,HASH_MAPPED +HANMAC,M21410.jpg,jchyun.jpg,RENAMED,현종철,jchyun@hanmaceng.co.kr,765533c70e31be40bc0757266f50d7a1a83a60dd6b7d5d2f8392584f1e1d234a.jpg,HASH_MAPPED +SAMAN,225253.jpg,nshyung.jpg,RENAMED,형남석,nshyung@samaneng.com,e91a7808896c3c11f9ff1712caf1f8b4a8d12c7fff8d4bd0b789913031aede21.jpg,HASH_MAPPED +SAMAN,026057.jpg,smho.jpg,RENAMED,호샘물,smho@samaneng.com,87998562e6e125270175764a039eb0edc9debe08757d34d1bd69db87902e9385.jpg,HASH_MAPPED +SAMAN,222125.jpg,kehong.jpg,RENAMED,홍경의,kehong@samaneng.com,495853ee76e0dd17ecd24817cf7b55815ec26a965671e2fe9df974a789f4c122.jpg,HASH_MAPPED +SAMAN,217158.jpg,kphong.jpg,RENAMED,홍경표,kphong@samaneng.com,4cb9e41bbf17ed3187cfe821690567ac84289d64c29baf58409d11821033b0d9.jpg,HASH_MAPPED +SAMAN,223181.jpg,kyhong.jpg,RENAMED,홍관영,kyhong@samaneng.com,d89419c217942459d3f5efe21bd72561086eb7382c66ec05a736fa6c46e233ba.jpg,HASH_MAPPED +SAMAN,214033.jpg,kphong1.jpg,RENAMED,홍균표,kphong1@samaneng.com,12a12356a745a34ec353ce3e477b9bf1de09684e9e75c1065037e59cbe26039b.jpg,HASH_MAPPED +SAMAN,220180.jpg,kshong.jpg,RENAMED,홍기석,kshong@samaneng.com,b889668e7082fe9eddd31b3f97fb52d6a8ac672c8ad88ce86830ee969d7f1ec4.jpg,HASH_MAPPED +SAMAN,226076.jpg,khhong.jpg,RENAMED,홍기훈,khhong@samaneng.com,ed5552bfeb007fdef8e87e69275fea511676f7ae33c426fd572302f80bef30b7.jpg,HASH_MAPPED +SAMAN,223100.jpg,gshong.jpg,RENAMED,홍길수,gshong@samaneng.com,8a494da6e6393782eea547ae8735fb287342db4141351f6c766baee20b38b2ef.jpg,HASH_MAPPED +SAMAN,226073.jpg,dhhong.jpg,RENAMED,홍덕현,dhhong@samaneng.com,50750cf1034285bca32b88ec8f5e4f6b775e7c36a104fc054ffbe623a8a5bd1f.jpg,HASH_MAPPED +SAMAN,225027.jpg,dghong.jpg,RENAMED,홍도균,dghong@samaneng.com,13eaaacdba8dd4ba3c90328574caa4d74ff6e842c29cbc4781ee735bf421d641.jpg,HASH_MAPPED +SAMAN,222001.jpg,dphong.jpg,RENAMED,홍두표,dphong@samaneng.com,827e82ccd530715eb7f8e56a4f225a5cd5026358855b163ad93b624dcbe3005e.jpg,HASH_MAPPED +SAMAN,224066.jpg,mkhong.jpg,RENAMED,홍만기,mkhong@samaneng.com,70354045dff6e368142ea0b876fad7018a753395513422135d211b5a0991d59d.jpg,HASH_MAPPED +SAMAN,212112.jpg,mphong.jpg,RENAMED,홍만표,mphong@samaneng.com,1f6c85b02324eba88be8be57200a9d1af346a2ac7c01ba060a2cf33c445b6001.jpg,HASH_MAPPED +SAMAN,223396.jpg,schong.jpg,RENAMED,홍석찬,schong@samaneng.com,914376cc94efe50749237122b9313c3722d72be08d8727f3f89f953deb0252d4.jpg,HASH_MAPPED +SAMAN,224345.jpg,sdhong1.jpg,RENAMED,홍성덕,sdhong1@samaneng.com,767bbb8e73980f0c88ef7fc6ee7467cbde8df4b868dcd49d73623cb187b0d5b2.jpg,HASH_MAPPED +SAMAN,216100.jpg,sdhong.jpg,RENAMED,홍성돈,sdhong@samaneng.com,49eb39260fa3b1b29c763dcda2116d817020b64621e8757a39c162eb8d888e78.jpg,HASH_MAPPED +SAMAN,224303.jpg,sbhong.jpg,RENAMED,홍성빈,sbhong@samaneng.com,3d1faa84b9b7f98f8c6d8212da75f50912fb93fa9c225d85ee65444a405a64b0.jpg,HASH_MAPPED +SAMAN,220122.jpg,sihong.jpg,RENAMED,홍성일,sihong@samaneng.com,0a916253f5318e7602436b7ac5392754733a689ab0b654b4d3304f82b71a256a.jpg,HASH_MAPPED +HANMAC,M20208.jpg,smhong.jpg,RENAMED,홍세민,smhong@hanmaceng.co.kr,134acca0b4960b0e95e8503f5f1a747817984e636f712befe0b941bfb879502f.jpg,HASH_MAPPED +SAMAN,223092.jpg,shhong.jpg,RENAMED,홍승호,shhong@samaneng.com,4e4e3b1272986c58389d8b7b7bce4baa5f9280de36dbfcd4ceee6aed7d94c85c.jpg,HASH_MAPPED +SAMAN,221184.jpg,alhong.jpg,RENAMED,홍아름,alhong@samaneng.com,0d1a657c35f31c9827397ad79194c6893a4ecd79b3792c54de6e5254aed68614.jpg,HASH_MAPPED +HANMAC,M25032.jpg,ychong.jpg,RENAMED,홍영철,ychong@hanmaceng.co.kr,8f667af0e6c166bca85c76f03412d87ee3449ad96269ca4fc79eae8e125ac687.jpg,HASH_MAPPED +SAMAN,221205.jpg,yehong.jpg,RENAMED,홍용의,yehong@samaneng.com,b8975a4f3937b13303db92dac915390a0efafe0a47f74421c2a816c3e20faa5a.jpg,HASH_MAPPED +SAMAN,224178.jpg,wphong.jpg,RENAMED,홍원표,wphong@samaneng.com,ad93d77073ac2cee80cc8602b39759d79079117e1256ac4014b0ccf7a613106f.jpg,HASH_MAPPED +SAMAN,225321.jpg,ykhong.jpg,RENAMED,홍윤기,ykhong@samaneng.com,6b24492b0317f0751d27151450c96182a9059a8bac1539b91448af94aecdc7e4.jpg,HASH_MAPPED +SAMAN,224184.jpg,yjhong.jpg,RENAMED,홍윤정,yjhong@samaneng.com,97f787edfab74ce5a9784b31d9c42ae54f9bd4445b8d1c269e80acbdcccb458a.jpg,HASH_MAPPED +SAMAN,219014.jpg,iphong.jpg,RENAMED,홍익표,iphong@samaneng.com,ee5aa71574f2612f353c18039b20b2dbe8086cc77bd4366b85bf8334711e89a3.jpg,HASH_MAPPED +SAMAN,219060.jpg,jwhong.jpg,RENAMED,홍정우,jwhong@samaneng.com,db7d4443c46c02ecefefb2facb12bdc7c87a292b0c33488eca83787b4777272d.jpg,HASH_MAPPED +SAMAN,224399.jpg,jwhong1.jpg,RENAMED,홍정우,jwhong1@samaneng.com,bfdf321e6d0c48b8ffe501d2040d45dfbd1683832d2e3294933629c90b36fe7d.jpg,HASH_MAPPED +SAMAN,217166.jpg,jshong1.jpg,RENAMED,홍종성,jshong1@samaneng.com,42f56b454c2e7811b4b2fa220fef41b710adae19379de5e2cd043d9c4f5d36b8.jpg,HASH_MAPPED +SAMAN,225354.jpg,jkhong.jpg,RENAMED,홍준기,jkhong@samaneng.com,467572a9e644601d5d371c008e4e0203c4f27387f3981f5e96edf3c9deb08b30.jpg,HASH_MAPPED +SAMAN,225057.jpg,jyhong1.jpg,RENAMED,홍준영,jyhong1@samaneng.com,1f03fac6be54e30f9aaef89846dab120138ea96958d93cf73ca51017487adfd0.jpg,HASH_MAPPED +SAMAN,216146.jpg,jyhong.jpg,RENAMED,홍진엽,jyhong@samaneng.com,cf34a2f8e66dab0e53374703561d1d412a0bd2dfbd569a71ab4260651a8b5b41.jpg,HASH_MAPPED +SAMAN,219030.jpg,cshong1.jpg,RENAMED,홍창선,cshong1@samaneng.com,ff7a1a8c0dda79bc39a2c0b208a7fa9a12436e76abe9e997fd47ef1885ec0230.jpg,HASH_MAPPED +SAMAN,207067.jpg,cshong.jpg,RENAMED,홍창수,cshong@samaneng.com,b459f22a5a96e0de1f4ed0c095421bb7ec0e28c0c1b21b6ffe986cdc99310e0a.jpg,HASH_MAPPED +SAMAN,202214.jpg,cohong.jpg,RENAMED,홍창오,cohong@samaneng.com,a0148ed8c7420ecc29c66969d78a1bece9b2f48b5a9f964ec4b6b9576a608083.jpg,HASH_MAPPED +SAMAN,218055.jpg,cehong.jpg,RENAMED,홍창의,cehong@samaneng.com,909920efd8ebf2a34fa89447b2ff9f2d1e230ce36a53cec00121fdac21880af6.jpg,HASH_MAPPED +SAMAN,220161.jpg,hphong.jpg,RENAMED,홍현표,hphong@samaneng.com,1dd8113ae216025fa9e36aaa37236f35b58861900466bdd64cb2a020938ec9a6.jpg,HASH_MAPPED +SAMAN,217147.jpg,kwhwang1.jpg,RENAMED,황건욱,kwhwang1@samaneng.com,c19af4a9228813123bba02744d37ab115342b1fbefd37e7e91dae5c9f1ef6044.jpg,HASH_MAPPED +SAMAN,215109.jpg,kwhwang.jpg,RENAMED,황경우,kwhwang@samaneng.com,a6aeb218a6e8fd545d7619de792d47380136a9895a7320000551b7235b1f2c64.jpg,HASH_MAPPED +SAMAN,223183.jpg,gyhwang.jpg,RENAMED,황길용,gyhwang@samaneng.com,21b3d8b530554e41c38c745e69a5ac135061771c1255d09c1e6a513795d3ac70.jpg,HASH_MAPPED +HANMAC,J05204.jpg,dihwang.jpg,RENAMED,황대익,dihwang@hanmaceng.co.kr,8af357030547ea3b753658b43cc029f996e64b930d0c591e141ac3c63bfa04cf.jpg,HASH_MAPPED +SAMAN,225338.jpg,dkhwang.jpg,RENAMED,황동규,dkhwang@samaneng.com,d301c1aa71bbfb1b93f32a1a558d6627485869e0d1ac3ebbfc1c033b1b3b9c88.jpg,HASH_MAPPED +HANMAC,M19314.jpg,dhhwang.jpg,RENAMED,황동환,dhhwang@hanmaceng.co.kr,cedf7e5c2d218f31dbe2f95da48124fc303284e5f121887278144fe5247ca378.jpg,HASH_MAPPED +HANMAC,M25043.jpg,dhhwang2.jpg,RENAMED,황동훈,dhhwang2@hanmaceng.co.kr,9d065b7f3db7a8312ba91ca3ae3581046f9ee2fedaba344955e78e7d881293b1.jpg,HASH_MAPPED +SAMAN,026066.jpg,swhwang.jpg,RENAMED,황서우,swhwang@samaneng.com,72c10ad4a84865fa853a7d5bf4247ff94ee92c915ba0568cdb899d2c247891f7.jpg,HASH_MAPPED +SAMAN,221292.jpg,sphwang.jpg,RENAMED,황선필,sphwang@samaneng.com,22912be072c5e752abed4356e397d636ba30854736affcc8245f09af27265994.jpg,HASH_MAPPED +HANMAC,M02308.jpg,shhwang.jpg,RENAMED,황승현,shhwang@hanmaceng.co.kr,f28ef94b04e6f7cd020e9e760ed40527231572c438568bb467a1bb4c7db236c6.jpg,HASH_MAPPED +SAMAN,226007.jpg,yshwang.jpg,RENAMED,황윤성,yshwang@samaneng.com,3d4c6aa1c19681892e8236ce228b3ebbb8610ccae1e51677272664b1a99cfe4a.jpg,HASH_MAPPED +HANMAC,M24025.jpg,yhhwang2.jpg,RENAMED,황윤희,yhhwang2@hanmaceng.co.kr,fa0c78a9b54c49310552f705ec12eb16e89b39e2603749a546d4c2a659052e6d.jpg,HASH_MAPPED +HANMAC,M07302.jpg,eshwang1.jpg,RENAMED,황은식,eshwang1@hanmaceng.co.kr,9f15c0f8ebec438cccff0051ecbd5f0177b2924e18959fd885879cc76f5fbb92.jpg,HASH_MAPPED +SAMAN,026064.jpg,eshwang.jpg,RENAMED,황의숙,eshwang@samaneng.com,50c677a618b261c4b0c3f7f24d699958a494668dabde62398a593cf2ef7caddf.jpg,HASH_MAPPED +SAMAN,216027.jpg,ibhwang.jpg,RENAMED,황인백,ibhwang@samaneng.com,02bb0e3565360953711106de2efc88128f26ef379497a0c102440063e303a334.jpg,HASH_MAPPED +SAMAN,206010.jpg,ishwang.jpg,RENAMED,황인성,ishwang@samaneng.com,3fb680a33d6e1684471410b370524b10b16968b188069ca8dd09e8c93c3fac25.jpg,HASH_MAPPED +HANMAC,M22050.jpg,jkhwang.jpg,RENAMED,황재광,jkhwang@hanmaceng.co.kr,3de26d246ff11c8f9eacb1d532b10ccc56db0a27314d30c8b6cfc01e931cb1fb.jpg,HASH_MAPPED +SAMAN,210099.jpg,jmhwang.jpg,RENAMED,황재민,jmhwang@samaneng.com,7fada7aede0eb2c7125221b5b04009034f4eca78987dce0e096dc7a3c42af740.jpg,HASH_MAPPED +HANMAC,J14202.jpg,jmhwang3.jpg,RENAMED,황재민,jmhwang3@brsw.kr,8519aebe2240ab4e82e74cb9af797a121a724b3b48ef9e61192f90a039c39b2b.jpg,HASH_MAPPED +SAMAN,222269.jpg,jhhwang1.jpg,RENAMED,황준호,jhhwang1@samaneng.com,eda369f6061537ce15ce977f6dcb5052b746294baf4890f33bdb1bdb2b8b4f5d.jpg,HASH_MAPPED +HANMAC,M23042.jpg,jmhwang2.jpg,RENAMED,황지만,jmhwang2@hanmaceng.co.kr,ea263bec58d26d6b673c839ca780ce39ee79ad8edb7ca40fd7c4d0b1b0b25562.jpg,HASH_MAPPED +SAMAN,026043.jpg,jyhwang.jpg,RENAMED,황지영,jyhwang@samaneng.com,2b6d5ea01ddcc6f684600c780c5f1d3e2db70f1c57b9526012cea02a66f7c7d4.jpg,HASH_MAPPED +SAMAN,222200.jpg,tjhwang.jpg,RENAMED,황태진,tjhwang@samaneng.com,445ca5700730a8f66e23f0b0abbbd553b379bf1a1f81b8bb58c70d25f72abe77.jpg,HASH_MAPPED +SAMAN,225078.jpg,hshwang1.jpg,RENAMED,황하수,hshwang1@samaneng.com,03464d93924a7f695f5fa73d25761db21d54740ae60c460ce5600ee40ef40bea.jpg,HASH_MAPPED +SAMAN,225014.jpg,hjhwang2.jpg,RENAMED,황혜정,hjhwang2@samaneng.com,4c078065d7fe8b8b9c6915b02aba00baa67bde628bf25fb3fe74e2a4d6eb7e3c.jpg,HASH_MAPPED +SAMAN,219132.jpg,hjhwang1.jpg,RENAMED,황혜진,hjhwang1@samaneng.com,3e0c7b3c3806fd85fa82f221323c68fbb9ce67c4f6307e43126faed4ab1f6747.jpg,HASH_MAPPED +SAMAN,224363.jpg,hyhwang.jpg,RENAMED,황호연,hyhwang@samaneng.com,535568c1043a989644dddbc235502c0d100e18201f0229faf8d6cf9c77e0134b.jpg,HASH_MAPPED +SAMAN,216114.jpg,hshwang.jpg,RENAMED,황효섭,hshwang@samaneng.com,67cc09fb7f98ba66440382c5976d7ed50752d11504408f8d13b278a0af501cc1.jpg,HASH_MAPPED diff --git a/docs/references/profile_image_uuid_rename_candidates.csv b/docs/references/profile_image_uuid_rename_candidates.csv new file mode 100644 index 0000000..4e4726e --- /dev/null +++ b/docs/references/profile_image_uuid_rename_candidates.csv @@ -0,0 +1,2458 @@ +comp,employee_name,employee_email,employee_email_local_part,legacy_photo_file_name,hashed_photo_file_name,baron_user_uuid,target_uuid_file_name,rename_ready +SAMAN,강경석,kskang@samaneng.com,kskang,225298.jpg,d0e462b347bd8c2729788be6f97d2faeb4780fa72a1977107d9a27d4597d965f.jpg,c103c96c-931f-4344-bbd9-50dd96138066,c103c96c-931f-4344-bbd9-50dd96138066.jpg,Y +SAMAN,강경훈,khkang@samaneng.com,khkang,221276.jpg,8899ec9963935792e8029fe34c20824fc9135458bdfa5ec77ac03f96d12c1142.jpg,bebb832c-052e-493d-b5a9-732518d67685,bebb832c-052e-493d-b5a9-732518d67685.jpg,Y +SAMAN,강광호,khkang1@samaneng.com,khkang1,225203.jpg,6653afe65ba8c11f3ad3ee8f5d572a6615607da9539fbb0bfcef08e3c28e8065.jpg,27c8d394-36a4-454d-bab3-66bf806c6bb0,27c8d394-36a4-454d-bab3-66bf806c6bb0.jpg,Y +SAMAN,강근아,kakang@samaneng.com,kakang,221054.jpg,f47955c23051bc80f3de9dda19a5e6b9b119a0a1fb431d9b9f3f43644a12e041.jpg,1ff25fda-fdef-4bcc-aac5-36f6e9531684,1ff25fda-fdef-4bcc-aac5-36f6e9531684.jpg,Y +SAMAN,강기헌,ghkang@samaneng.com,ghkang,224284.jpg,e572074ab1a97227c7cd17e72d44b5095072925c04b5a8a747eb90e4229a65c2.jpg,c4a6430a-2a35-460e-a764-f495e2b8ea1b,c4a6430a-2a35-460e-a764-f495e2b8ea1b.jpg,Y +HANMAC,강길성,kskang2@hanmaceng.co.kr,kskang2,M26004.jpg,26623676a1799d8c605d5548592919819cb94429be3739f0e8c90e4e1b040900.jpg,0e370508-5ea1-4e9c-a750-f4d59b948d65,0e370508-5ea1-4e9c-a750-f4d59b948d65.jpg,Y +SAMAN,강다원,dwkang1@samaneng.com,dwkang1,222020.jpg,8037accfc1c5b88e32ff084cb81a34fa059f0ada5634db2734a7f92fcff81748.jpg,13bf81d0-1d93-467d-938a-7c876efab5ee,13bf81d0-1d93-467d-938a-7c876efab5ee.jpg,Y +SAMAN,강대선,dskang@samaneng.com,dskang,221328.jpg,29a1ba620466e87100ba12b4a3714a6c80559a1076c7c956b84a9708dbff948b.jpg,1dc3a834-3b4a-4fc2-a0f4-0900ef8b671e,1dc3a834-3b4a-4fc2-a0f4-0900ef8b671e.jpg,Y +SAMAN,강대식,dskang1@samaneng.com,dskang1,224002.jpg,9cc4e6d44f84e58076a861eb2f1a71e7c35a640b6a9da9bd1d6a58f640175606.jpg,add4cf4b-738a-4095-b5a7-3ecd34a92e31,add4cf4b-738a-4095-b5a7-3ecd34a92e31.jpg,Y +SAMAN,강대엽,dykang@samaneng.com,dykang,222248.jpg,1af4ebb0d818f648d17d1c6ed99919efa42fac4e1924b268eb18d7dce0d0e009.jpg,4b581942-b1b9-414d-bd46-2d564a25e5fe,4b581942-b1b9-414d-bd46-2d564a25e5fe.jpg,Y +SAMAN,강대완,dwkang@samaneng.com,dwkang,219106.jpg,92317cc32b09a6ddd15186f34da1b4fb630a5f2689cc794185ec04df28ff9b34.jpg,a013fbe5-f41e-4ff7-a41f-18f30b7a829d,a013fbe5-f41e-4ff7-a41f-18f30b7a829d.jpg,Y +SAMAN,강덕규,dkkang1@samaneng.com,dkkang1,225250.jpg,045f2f9faf370ee2e13c7dd6a0bbcca525bb6943659a37e5c5ad906a2bb8d266.jpg,ea00d28d-1d05-41e0-90f8-8633b0faa872,ea00d28d-1d05-41e0-90f8-8633b0faa872.jpg,Y +SAMAN,강동구,dkkang@samaneng.com,dkkang,199093.jpg,1387d0b49a1a74bde68c110e5a36a8234937b66a46ac8e831c808d126ba17583.jpg,70eddd9b-473c-4aea-974c-aa4220415fa0,70eddd9b-473c-4aea-974c-aa4220415fa0.jpg,Y +SAMAN,강동우,dwkang3@samaneng.com,dwkang3,226047.jpg,4204b2f6efe7be5f4d106bbbb1dcd2b3d9aa710d71540a2dc795157867813ced.jpg,75c96ec0-ca4d-4781-b04a-5c573460a964,75c96ec0-ca4d-4781-b04a-5c573460a964.jpg,Y +SAMAN,강동원,dwkang2@samaneng.com,dwkang2,224250.jpg,23d8914e3b2d4c6d63aa75ebe4433968f2cfba74cc25d889e636a89987f9867d.jpg,1db2f664-a638-4b24-8c41-c9c1eb34a010,1db2f664-a638-4b24-8c41-c9c1eb34a010.jpg,Y +SAMAN,강동진,djkang@samaneng.com,djkang,211155.jpg,405ac562c602fd45060d9e2d9f27e0e57cfa3fb14e157a73e1d4d915990f37bf.jpg,590a91f1-c40b-46f3-b50c-3b214d32522a,590a91f1-c40b-46f3-b50c-3b214d32522a.jpg,Y +SAMAN,강명지,mjkang@samaneng.com,mjkang,220178.jpg,4bf72b1169651eebc566fd8d2272d89d4b4bbe628ce59a81dd1e595ab1f79653.jpg,53acd47e-31cd-4930-918e-4d7215e553c0,53acd47e-31cd-4930-918e-4d7215e553c0.jpg,Y +SAMAN,강명진,mjkang1@samaneng.com,mjkang1,217167.jpg,68e487e781ae6267f83208e411b040788528ddf8800fcc7f52306853ddfc24aa.jpg,26f02500-2c5d-4e92-b96a-84573f1fb783,26f02500-2c5d-4e92-b96a-84573f1fb783.jpg,Y +HANMAC,강명진,mjkang4@hanmaceng.co.kr,mjkang4,M17205.jpg,9ed2b293bfdcf0078849163c2f744d80af7cde6ad3990d476ac260ccfb73b75b.jpg,2519bb4a-9b81-4ed5-b232-dd0329dce028,2519bb4a-9b81-4ed5-b232-dd0329dce028.jpg,Y +SAMAN,강명학,mhkang1@samaneng.com,mhkang1,221042.jpg,618be1dba0b9edb9447bf75782d39017a93bb2be641e9f91dd8786bf4b7e171a.jpg,0d9ccbe9-617d-41e1-84ba-2a49b9cd06e4,0d9ccbe9-617d-41e1-84ba-2a49b9cd06e4.jpg,Y +HANMAC,강명호,mhkang@hanmaceng.co.kr,mhkang,M16514.jpg,b55a0b5790a4de373eb2ebcebf183c9f8cb8def682c50af16143893b1f1c1897.jpg,6453f76e-e5df-45e9-9935-756c93e605bd,6453f76e-e5df-45e9-9935-756c93e605bd.jpg,Y +SAMAN,강무중,mjkang3@samaneng.com,mjkang3,222192.jpg,5ea11ace70c5762ad9a14c64ce9862a1cd4fd829093dc1557a463dba45cbe142.jpg,9c611341-17af-46b2-b08a-924fcc7a8bfc,9c611341-17af-46b2-b08a-924fcc7a8bfc.jpg,Y +SAMAN,강문태,mtkang@samaneng.com,mtkang,222249.jpg,d70daefb80712ef2327d9c15aa01baac07a2c03b1f1305fa38a7df59bf95af92.jpg,4e013597-58e6-428c-bc89-651348fe3a83,4e013597-58e6-428c-bc89-651348fe3a83.jpg,Y +SAMAN,강미선,mskang@samaneng.com,mskang,026054.jpg,945a532a6972451390bd735b610dee611f16603d99b04408e664e8301bfa6ad6.jpg,5741996b-d4ac-45bd-be6f-8b8393ddd687,5741996b-d4ac-45bd-be6f-8b8393ddd687.jpg,Y +HANMAC,강민수,mskang2@hanmaceng.co.kr,mskang2,M25021.jpg,d4e8673f00ba5f98514de5d11694936f44ffa5f9834c9bc557ff66e3f0ec2ede.jpg,0b3633b7-27a9-4884-8ac2-074eef94a41a,0b3633b7-27a9-4884-8ac2-074eef94a41a.jpg,Y +HANMAC,강민호,mhkang2@hanmaceng.co.kr,mhkang2,M26031.jpg,aaae5db3ec41c7532f8a7d057035ffc773369efba47c0fdd0a717956c7925acd.jpg,83dc6fba-b886-4e85-a79a-790080109bab,83dc6fba-b886-4e85-a79a-790080109bab.jpg,Y +SAMAN,강병산,bskang@samaneng.com,bskang,225301.jpg,5efc44a8443371a1977fa3454703d68f4d14b4a4206ee0df8a5bf776fb648ed4.jpg,040f39e1-c557-479a-8aa0-7fc0db193fff,040f39e1-c557-479a-8aa0-7fc0db193fff.jpg,Y +SAMAN,강상구,skkang@samaneng.com,skkang,222060.jpg,a4336bb2395f95360b330b97ca757577aa3339858e5d804045dae7955bd3b333.jpg,06590f1d-9395-47dd-a0bc-d295b2c15283,06590f1d-9395-47dd-a0bc-d295b2c15283.jpg,Y +SAMAN,강상균,skkang1@samaneng.com,skkang1,225265.jpg,acf20dad136e8b6c2ab47f9e3342cf8218714406c5476434319245be7ef203ac.jpg,1ee20281-a34f-4d6e-b851-15f975b7c982,1ee20281-a34f-4d6e-b851-15f975b7c982.jpg,Y +SAMAN,강상우,swkang2@samaneng.com,swkang2,226027.jpg,f0ff2ebed04f062efac969cfcc1201a1235a1d005c69389161b89d1a147b9e15.jpg,e559edc5-5ef0-4fdb-874c-6b673b1cd515,e559edc5-5ef0-4fdb-874c-6b673b1cd515.jpg,Y +SAMAN,강상욱,swkang1@samaneng.com,swkang1,223363.jpg,00a2031d742900e6c611a37a87afa753f909505cd8b2673c8d70c93397b155f0.jpg,b748f20e-71cb-4924-a9a4-b0783c2d623c,b748f20e-71cb-4924-a9a4-b0783c2d623c.jpg,Y +SAMAN,강상원,swkang@samaneng.com,swkang,217131.jpg,617bcb5e72be592ca5b74cc1d2710d2abc610e48dd22b2a6185ae60fc82e3476.jpg,9ced50e3-bfae-4685-885e-085589e62b01,9ced50e3-bfae-4685-885e-085589e62b01.jpg,Y +SAMAN,강상의,sekang@samaneng.com,sekang,218158.jpg,67730a5a5076fa6e8b3c6b6517984a630ba9ddcba1ffc8858aee2bffd0f2937e.jpg,a7e69109-a7d8-4e41-aaf5-0aa24ef6c372,a7e69109-a7d8-4e41-aaf5-0aa24ef6c372.jpg,Y +SAMAN,강석봉,sbkang1@samaneng.com,sbkang1,226144.jpg,6739a230c37666600d2ef6b3b0baea7e1b90e74b6ec9716479ea111c94e96cea.jpg,885ba8d0-a069-4d68-bb70-87e98cf156c8,885ba8d0-a069-4d68-bb70-87e98cf156c8.jpg,Y +SAMAN,강석준,sjkang@samaneng.com,sjkang,220037.jpg,13efb04d8a0c0b660005a3e993e42e977ce7b5d9b024d58c32dcba88c7b32a7a.jpg,f85e8351-c976-49d0-8807-b5312b0a1a52,f85e8351-c976-49d0-8807-b5312b0a1a52.jpg,Y +SAMAN,강석훈,shkang1@samaneng.com,shkang1,225266.jpg,c3192b314e4d0d55bf599c5f46a3f7be06060ba0540420a59918e8d789818b9b.jpg,3128b4c6-35e1-4fd8-9df0-192f131aa586,3128b4c6-35e1-4fd8-9df0-192f131aa586.jpg,Y +HANMAC,강선준,sjkang3@hanmaceng.co.kr,sjkang3,M09104.jpg,e1792f31ddb46fe66714366f97846dfc3bcd536038549791ee51750c4e5f0d81.jpg,6b81af1d-c8a0-4045-903c-48e9b5371223,6b81af1d-c8a0-4045-903c-48e9b5371223.jpg,Y +SAMAN,강선태,stkang@samaneng.com,stkang,222271.jpg,300faee1bcd6f0a8656c45a90a192a8c87ad11281562e782aad96649fefbac37.jpg,41fc3828-ba20-4ec5-b6f6-40b889e1ade4,41fc3828-ba20-4ec5-b6f6-40b889e1ade4.jpg,Y +SAMAN,강성배,sbkang@samaneng.com,sbkang,226130.jpg,50e9409b3555cbcf293985f1e98b29c5da7059db043a834d37d1299672364427.jpg,92a50344-13b4-4376-a7b0-de5220eb6c3f,92a50344-13b4-4376-a7b0-de5220eb6c3f.jpg,Y +SAMAN,강성일,sikang@samaneng.com,sikang,225190.jpg,557739f2908f480e05d7754d17f68cc9bbdbc0e6f1ce6b110f20684263deb504.jpg,7bf536e7-ecc8-4f18-9dfd-0f507a171c0c,7bf536e7-ecc8-4f18-9dfd-0f507a171c0c.jpg,Y +SAMAN,강성찬,sckang@samaneng.com,sckang,225115.jpg,d39a8cbf3c559d73a9e64f1095bc4097232e062bef3f8af650ac11a81782a152.jpg,60f39887-ee4e-41b6-8147-528e88622c1e,60f39887-ee4e-41b6-8147-528e88622c1e.jpg,Y +HANMAC,강성호,shkang2@brsw.kr,shkang2,B24024.jpg,ae751cf73eed32b5ff6d2f0fb575c8b82fc8459c6500adf1fb1a96245c903796.jpg,86c76ddf-8cac-412e-acdc-a51f84f99e88,86c76ddf-8cac-412e-acdc-a51f84f99e88.jpg,Y +SAMAN,강수연,sykang@samaneng.com,sykang,202012.jpg,795476989f4a5d06c3d34267eecd24cb644c6f414c9dfefe2041eeec2171e5bf.jpg,7c912910-3aee-4316-9792-8eb973f3121b,7c912910-3aee-4316-9792-8eb973f3121b.jpg,Y +SAMAN,강순남,snkang@samaneng.com,snkang,224387.jpg,20d73b0d6da180949a852a7480de0fec78526ca69acb666d974275a04c4ab4d9.jpg,d4125e23-a4c1-44f5-9150-2877306c1cd6,d4125e23-a4c1-44f5-9150-2877306c1cd6.jpg,Y +SAMAN,강순양,sykang2@samaneng.com,sykang2,221246.jpg,308c432e66b3c32169762d77ccf84410b2d36756c80bdc40649b98af09802dae.jpg,6497dd74-19da-4831-b926-a5404d10cb49,6497dd74-19da-4831-b926-a5404d10cb49.jpg,Y +SAMAN,강승대,sdkang@samaneng.com,sdkang,223298.jpg,c5f2eb058a7028adefa58e395ef5f325ca2a2d1866d1f6ed8c07c5c3ad3eb437.jpg,f45f5dcb-5846-491b-a929-e2dd818ae7be,f45f5dcb-5846-491b-a929-e2dd818ae7be.jpg,Y +SAMAN,강승열,sykang3@samaneng.com,sykang3,224323.jpg,65d642f82f3d83f23b134d496e324be422811e07331f25afe19a8c1a60d9c718.jpg,e1f4e47c-26cd-4dd3-89e1-57e0660fbe99,e1f4e47c-26cd-4dd3-89e1-57e0660fbe99.jpg,Y +SAMAN,강승주,sjkang2@samaneng.com,sjkang2,221323.jpg,bd477c607bf92c68de7fc7919001fef10292585a19fd85a319e85ae9803c792a.jpg,5fc04932-10d4-41c1-8554-beacf6195280,5fc04932-10d4-41c1-8554-beacf6195280.jpg,Y +SAMAN,강시영,sykang1@samaneng.com,sykang1,224272.jpg,517d949343f54c38d8ae19e9d75c9622deff036de966c5a56b430774fd8915c0.jpg,8826b6c0-1f68-478f-923b-3fadeda20547,8826b6c0-1f68-478f-923b-3fadeda20547.jpg,Y +SAMAN,강신길,sgkang@samaneng.com,sgkang,223272.jpg,89005d0dcc53b9270a1efed3c7a9ddb1b2aae98fb346459de3a86c6e5644c8b8.jpg,f0a8c6a2-2c87-40a8-ae30-f3b47ac5f385,f0a8c6a2-2c87-40a8-ae30-f3b47ac5f385.jpg,Y +HANMAC,강영철,yckang@hanmaceng.co.kr,yckang,M25049.jpg,69d0caea91c09fb9a14085d7b829dcb7e0bac23b0670280f3b1df74383c953b1.jpg,605839b0-3ab0-49a0-afc3-5976482a4341,605839b0-3ab0-49a0-afc3-5976482a4341.jpg,Y +HANMAC,강우원,wwkang@hanmaceng.co.kr,wwkang,M21437.jpg,e8109af1616cecc07541bb4b518d966e7b82ae81c100ea42a57c2877ba835849.jpg,225bd00f-6829-49a0-8017-4649437da893,225bd00f-6829-49a0-8017-4649437da893.jpg,Y +SAMAN,강원철,wckang@samaneng.com,wckang,216041.jpg,20742fc07132e16c727b60d93e67e4c7f1cef2d691c3463ec8693b4a6ff05271.jpg,ea4a42b8-5c84-4499-b0b8-4306c380016c,ea4a42b8-5c84-4499-b0b8-4306c380016c.jpg,Y +SAMAN,강유경,ygkang@samaneng.com,ygkang,223289.jpg,0de715b81abb930899082e4e816ca67f9468d7417de58f7c6162d4cbdb56fefd.jpg,91e57cb8-ab87-4aed-88ce-5dd27531df93,91e57cb8-ab87-4aed-88ce-5dd27531df93.jpg,Y +SAMAN,강윤규,ykkang@samaneng.com,ykkang,201064.jpg,d22cf6467e03094d307c3d39575fbcd5e3cc9b460ed904b475545ed7d34463a3.jpg,22af3777-c756-4716-8eb1-6b743db6a6e1,22af3777-c756-4716-8eb1-6b743db6a6e1.jpg,Y +SAMAN,강정연,jykang@samaneng.com,jykang,225339.jpg,8437a6f0419f019d9c9240013e072affaef6d9410ecec9fdf5aa9da52e150404.jpg,b0091974-f4da-4ddd-9bb3-cc1daf698feb,b0091974-f4da-4ddd-9bb3-cc1daf698feb.jpg,Y +SAMAN,강정훈,jhkang@samaneng.com,jhkang,222212.jpg,794be85bbfabfc42a1fedf115fbf199391295453dbef9a8c1ef5d69e1c50f483.jpg,37005b11-50c9-4aba-b24a-21109d19f614,37005b11-50c9-4aba-b24a-21109d19f614.jpg,Y +SAMAN,강종태,jtkang@samaneng.com,jtkang,224095.jpg,20149c6adccd7d33519d5ac22d9fa8113f70aedd436d8840fbb56554a9e67868.jpg,5ae01d86-9d9e-4109-b64f-b536599379f2,5ae01d86-9d9e-4109-b64f-b536599379f2.jpg,Y +SAMAN,강준희,jhkang1@samaneng.com,jhkang1,222243.jpg,a362a91d0c7b15778e7c270cf62e6230f1b2a2af236147a997c2f11173fa0061.jpg,72cd2043-eafe-4b71-894f-f7291b62bff4,72cd2043-eafe-4b71-894f-f7291b62bff4.jpg,Y +SAMAN,강지영,jykang1@samaneng.com,jykang1,221067.jpg,3db281a40c5e27b6692b1cedd529ad04968041f068bffdd01b5a5c6c83db95e1.jpg,14df4849-ddad-4be7-8220-ee90cb4b4680,14df4849-ddad-4be7-8220-ee90cb4b4680.jpg,Y +SAMAN,강진욱,jokang@samaneng.com,jokang,224301.jpg,4712dce6a2c7efec28e4f9aca791e6d87149f1cfe2b21bc483398f8433338880.jpg,2808763c-cbbb-43fc-93c2-14fb7744f4ac,2808763c-cbbb-43fc-93c2-14fb7744f4ac.jpg,Y +SAMAN,강태선,tskang@samaneng.com,tskang,224166.jpg,dc7478ad9a7da212b88dc9e66e970383032db7f5f5b4ec979a325ba4c5f1092f.jpg,23a81759-8d0a-438e-ab7d-aa200de1f588,23a81759-8d0a-438e-ab7d-aa200de1f588.jpg,Y +SAMAN,강태현,thkang1@samaneng.com,thkang1,222067.jpg,16b5c8db70a0b852f706f7a2713beafd1a9e0464a1648b13142d9b3ea4205b46.jpg,1eaa7e43-d760-4c10-bf45-b6694283c5de,1eaa7e43-d760-4c10-bf45-b6694283c5de.jpg,Y +SAMAN,강태호,thkang@samaneng.com,thkang,225206.jpg,6e4c2099042c5c27d97751035edb6977234e25fa26a47905201e7e10f89e0581.jpg,4e05221f-17df-4a9c-8cfc-dad5c8180c7c,4e05221f-17df-4a9c-8cfc-dad5c8180c7c.jpg,Y +SAMAN,강태희,thkang2@samaneng.com,thkang2,223029.jpg,55cf602fca37ce49c7be486b2d83cb4ed94ebcf7c5e1a55fe02ab1fb3ff796d7.jpg,683217cd-dd0d-4ebf-9f4c-5cb97812d519,683217cd-dd0d-4ebf-9f4c-5cb97812d519.jpg,Y +SAMAN,강평구,pkkang@samaneng.com,pkkang,213085.jpg,7588ae2fc366e84b902d3ac37eea595007f87c435b30770a7d078b4223e056ca.jpg,cae38a7b-39d7-4dfe-9b3f-eae9ef254d56,cae38a7b-39d7-4dfe-9b3f-eae9ef254d56.jpg,Y +SAMAN,강필웅,pwkang@samaneng.com,pwkang,225151.jpg,7522cb22bedccbbbbdcd7f082aa5c1bc0f675cafb6ea7c9daa79f3ee39f0a80d.jpg,7118dbbc-b295-4c24-b7c0-04e496282d8b,7118dbbc-b295-4c24-b7c0-04e496282d8b.jpg,Y +HANMAC,강현승,hskang@hanmaceng.co.kr,hskang,M20501.jpg,d2c355fe07733c887974c1c1d43f9c326c634c50d0697b7dec32687670fb7a7f.jpg,977d9e77-5d7f-46dc-b356-54915fc98c3d,977d9e77-5d7f-46dc-b356-54915fc98c3d.jpg,Y +PTC,강현욱,hwkang@brsw.kr,hwkang,P19203.jpg,46145f2face7c82339d81326211923c04b8674f6385bf791343e1f34f09d503c.jpg,6fdd4fe6-d314-41b3-a5b6-e8882c92e472,6fdd4fe6-d314-41b3-a5b6-e8882c92e472.jpg,Y +SAMAN,강형구,hgkang@samaneng.com,hgkang,216095.jpg,a5ee7a380ed5c2d59d9483bfd2278664bf09c87aea8e91903697b9f94ec1a6ee.jpg,589ddef3-86f0-41f0-8171-516d6a62ddf2,589ddef3-86f0-41f0-8171-516d6a62ddf2.jpg,Y +SAMAN,강혜진,hjkang@samaneng.com,hjkang,026059.jpg,4108c0833ac252a73c1825782231778b6ffa486c85f3df9b7acb64a1033ac68d.jpg,4f16e73f-4c2e-4619-aeeb-168731be2b27,4f16e73f-4c2e-4619-aeeb-168731be2b27.jpg,Y +SAMAN,강호문,hmkang@samaneng.com,hmkang,224130.jpg,61bde6bf4832fb28aae59e16464c172e19f192691276df4294d87ba87bb54812.jpg,7582c48b-715d-4f1e-8851-2bbc9c8d8054,7582c48b-715d-4f1e-8851-2bbc9c8d8054.jpg,Y +SAMAN,경민구,mgkyung@samaneng.com,mgkyung,221015.jpg,188d697da75b2fe19956206845ce8aeb40f153bfe103a2c037986296761dae10.jpg,bfce5ae3-7c97-4b9c-ab7b-b9db0d5d820e,bfce5ae3-7c97-4b9c-ab7b-b9db0d5d820e.jpg,Y +SAMAN,경복현,bhgyeong@samaneng.com,bhgyeong,220019.jpg,cd7becae933f8aa7a9bd70072ff38820e25093b94aec19bd3ee8f70be1232a9e.jpg,e61538a4-8a74-401b-8051-08fbd96d937b,e61538a4-8a74-401b-8051-08fbd96d937b.jpg,Y +SAMAN,고강수,ksko@samaneng.com,ksko,221167.jpg,655f446a3c338fa18a03b82aa760ba4975ee9865dafeaaec2a9d2ff2cf092a5e.jpg,35a8b41d-8d79-4817-8dfc-aa5431d47c1f,35a8b41d-8d79-4817-8dfc-aa5431d47c1f.jpg,Y +SAMAN,고경원,kwko@samaneng.com,kwko,208126.jpg,0734541518727c59fa9bc91a890b8fe3fae1a6aec7cbf224403d8fbbd770c9a0.jpg,f27978e1-bb5e-4479-b15c-03c64ce4ffa6,f27978e1-bb5e-4479-b15c-03c64ce4ffa6.jpg,Y +SAMAN,고광민,kmko@samaneng.com,kmko,223119.jpg,2c58e05316c11f742a676a8ff37aec172f7deaaace9a8f228c065d77321c3cac.jpg,a39c5759-b980-472f-89dd-5715059e4776,a39c5759-b980-472f-89dd-5715059e4776.jpg,Y +HANMAC,고광욱,gwgo@hanmaceng.co.kr,gwgo,M06501.jpg,ff2ab9e3116fae194b056fc00481e29e1c0b6393b81136ae0d598315b0a3e281.jpg,67846387-090a-4448-ad79-79bab9efac4c,67846387-090a-4448-ad79-79bab9efac4c.jpg,Y +SAMAN,고동인,diko@samaneng.com,diko,217016.jpg,ef1ba6efed8c168c039527875446f8de9d3947008af002783d674e8d0ad9ea56.jpg,b4b32a4e-b9be-4379-b804-e3baf9936e2f,b4b32a4e-b9be-4379-b804-e3baf9936e2f.jpg,Y +SAMAN,고민우,mwko@samaneng.com,mwko,224043.jpg,ad32ee7667f8e748de0490de9c060b0240044245ea1474f315d7bb0a797e4ef2.jpg,9387c620-91e6-4049-bcf5-9630424eca19,9387c620-91e6-4049-bcf5-9630424eca19.jpg,Y +SAMAN,고범홍,bhko@samaneng.com,bhko,225370.jpg,74e1555b4578556664c4d6b4ff02983d85636d10399a0a51366700e6b236a380.jpg,78c8df9a-25a3-4208-9701-bbfe7766b3a1,78c8df9a-25a3-4208-9701-bbfe7766b3a1.jpg,Y +HANMAC,고삼암,sako@hanmaceng.co.kr,sako,M04503.jpg,77c690654ec9f78bc68e42ece23b30ea874e607de453947cf302d2366f3227ec.jpg,6bbe13da-e5aa-4243-9330-771f25e9009b,6bbe13da-e5aa-4243-9330-771f25e9009b.jpg,Y +SAMAN,고상훈,shko@samaneng.com,shko,224100.jpg,2d3c95fac12fa7c53deb02538410441623de236277173c318d2e545fb4bec0d9.jpg,333b24aa-198e-4e61-9d48-309356bc8129,333b24aa-198e-4e61-9d48-309356bc8129.jpg,Y +HANMAC,고석만,smko@hanmaceng.co.kr,smko,M20510.jpg,1f8d771063f5ada23ea8efabfb03b58727ccb2841136ab204499eb954a395220.jpg,209bd5a2-2d66-4322-8cb8-23897c131a2f,209bd5a2-2d66-4322-8cb8-23897c131a2f.jpg,Y +SAMAN,고세일,siko@samaneng.com,siko,223204.jpg,8c995cb4b64da14e1ecd8dd2ede9d90fff30428706c43dc541594ae379c92332.jpg,3317748c-99d7-46e5-a96d-1a06f7f72885,3317748c-99d7-46e5-a96d-1a06f7f72885.jpg,Y +SAMAN,고승희,shkoh@samaneng.com,shkoh,212153.jpg,46a3254acfae4ce23f366b8e27e0a77b3d57500f53d53b0181ba74a1958cd21f.jpg,a881c934-bce0-4a7e-a6ae-15cda3aa5021,a881c934-bce0-4a7e-a6ae-15cda3aa5021.jpg,Y +SAMAN,고연상,ysgo@samaneng.com,ysgo,224161.jpg,8ec6200dce764ec94e37dc47294acf1ac9e7f023c88fae566a5c2895f2ff87af.jpg,0416fbd5-7d28-47e7-a077-52868d0a02e3,0416fbd5-7d28-47e7-a077-52868d0a02e3.jpg,Y +HANMAC,고영덕,ydkoh@hanmaceng.co.kr,ydkoh,M24056.jpg,d6b175a137344729a8c672b2f059ff3238e44b169837130a77ba479ed4f811ad.jpg,0ed5d625-a00c-4ce8-b585-60e62b94cb5f,0ed5d625-a00c-4ce8-b585-60e62b94cb5f.jpg,Y +SAMAN,고영일,yiko@hallasanup.com,yiko,203138.jpg,f83ae9e6910911b4a84840c20aca9017fdb227ebbcd457a9b5b5b8019386e3de.jpg,d6b43bd1-dbb0-4ca9-915a-6ba8c1bbd97b,d6b43bd1-dbb0-4ca9-915a-6ba8c1bbd97b.jpg,Y +SAMAN,고영태,ytkoh@samaneng.com,ytkoh,201215.jpg,93105f15816a103911ce12d48dcce0f89acbf008a4a191819b0abfceff39c1bc.jpg,6d36f383-f164-422f-b113-17484b29c667,6d36f383-f164-422f-b113-17484b29c667.jpg,Y +SAMAN,고원태,wtko@samaneng.com,wtko,221267.jpg,27408136244fdd56f9e1c69e3bc1fd74ca31473dacdd8be18c846c2b98746da9.jpg,eab7ea84-218b-4b5a-b72a-6517d3ffdf49,eab7ea84-218b-4b5a-b72a-6517d3ffdf49.jpg,Y +HANMAC,고은식,esko@hanmaceng.co.kr,esko,M25019.jpg,0d9bb304ea19132c857ba633a58e320fcc4e546a01ac2619eb71cc29adc585be.jpg,4e92e5a8-2f77-4c0c-9cc8-cfc27e3df9cf,4e92e5a8-2f77-4c0c-9cc8-cfc27e3df9cf.jpg,Y +SAMAN,고준연,jyko2@samaneng.com,jyko2,225065.jpg,c051fbc8031408e685f6622959c0934e1eb7703ab61d6c6a856800ec61899741.jpg,8fd760b8-2336-4685-a907-bd4f3e7822f8,8fd760b8-2336-4685-a907-bd4f3e7822f8.jpg,Y +SAMAN,고준영,jyko1@samaneng.com,jyko1,223072.jpg,5ec6fba3c17b92e4cb59cfb28b8659234bed3a90bc1c51a78b2aee6b3cdef32b.jpg,feeb7dac-193c-428e-b477-63da16ea4b42,feeb7dac-193c-428e-b477-63da16ea4b42.jpg,Y +SAMAN,고준호,jhko@samaneng.com,jhko,221130.jpg,a601ef0c48a246c5f2fd31e11284f3cbe62135de1022a3ce173edbcecdd3c93f.jpg,1cebc5b3-3566-4c24-8c00-3a155d0b926b,1cebc5b3-3566-4c24-8c00-3a155d0b926b.jpg,Y +SAMAN,고지영,jyko@samaneng.com,jyko,218147.jpg,81c0f1087c4e8a1e973a1d0fec8487fd1c069ff9455d992ce23a0f957ec4636e.jpg,d2161b65-6cca-4d3c-80da-a1b9a90af30a,d2161b65-6cca-4d3c-80da-a1b9a90af30a.jpg,Y +SAMAN,고창석,csgo@samaneng.com,csgo,224190.jpg,d7d3748e7204f490ac91291d51d7b0109c195c0f81792a7248dfbc1c442940fa.jpg,aa66b943-156a-473e-9d90-992c641cfee1,aa66b943-156a-473e-9d90-992c641cfee1.jpg,Y +SAMAN,고태호,thko@samaneng.com,thko,223033.jpg,0d97a7131036c5a46e774ccffa8d4e16bdb3ca9bbf9e5ccbd5b4d76247c0d74e.jpg,8195cf48-c947-44b4-a006-1b256b57d354,8195cf48-c947-44b4-a006-1b256b57d354.jpg,Y +SAMAN,고현우,hwko@samaneng.com,hwko,221186.jpg,3c9034bbed3050615ad8656e548875bfad7868870ebb2a1a6ae2645015527094.jpg,dd2ad8e7-7b0a-4f29-822f-c40792fb8015,dd2ad8e7-7b0a-4f29-822f-c40792fb8015.jpg,Y +SAMAN,고효정,hjko@samaneng.com,hjko,225334.jpg,bdf8d94593ef30693d22c2e101e8fec3f27525224810179202bad49920f768a8.jpg,43a388f3-63b1-4310-8c43-0bf005ecab17,43a388f3-63b1-4310-8c43-0bf005ecab17.jpg,Y +SAMAN,고희수,hsko@samaneng.com,hsko,225104.jpg,15d8103be9f20b1b798d99ef46c6bf464139df9cef9fcb67a98e462c680796a0.jpg,19a31647-5647-4e4f-a0ff-79e28a85cb28,19a31647-5647-4e4f-a0ff-79e28a85cb28.jpg,Y +SAMAN,공기원,gwkong@samaneng.com,gwkong,219100.jpg,6e1c23536524a9daf5c00ae42d4856b04e46120918ef7294749e9d2c396d286a.jpg,4de141b4-927d-4daf-9201-ff62bdd87f51,4de141b4-927d-4daf-9201-ff62bdd87f51.jpg,Y +SAMAN,공병승,bskong@samaneng.com,bskong,223283.jpg,eaf6ddd187fb51e6a6d429029d1b57cc69cc8ddfadb2a7b907279a7a85884aa6.jpg,ba92e160-684c-4705-8b65-ff6087979b24,ba92e160-684c-4705-8b65-ff6087979b24.jpg,Y +SAMAN,공병화,bhkong@samaneng.com,bhkong,218022.jpg,c06e7a680149a4bac77ec50738f13d684353f9cfa8fd004a4516b0f6591762be.jpg,60b53839-2484-44ce-9d8a-5e08f9d93e5f,60b53839-2484-44ce-9d8a-5e08f9d93e5f.jpg,Y +SAMAN,공석호,shkong@samaneng.com,shkong,222023.jpg,4870eeaf38369589e853303c4426a1d2f3ba4e857a573795ee9aa46d169747b3.jpg,8063caf3-7a48-4bd6-a6cb-357245a9dd17,8063caf3-7a48-4bd6-a6cb-357245a9dd17.jpg,Y +SAMAN,공성문,smkong1@samaneng.com,smkong1,219160.jpg,fb40539b952ff41f5536736a5a3eacd2f3e701e654fd0ede6d06ce5a1015e4d2.jpg,b388d208-0f24-499c-b97e-df3b79e241c1,b388d208-0f24-499c-b97e-df3b79e241c1.jpg,Y +SAMAN,공용표,ypgong@samaneng.com,ypgong,224207.jpg,1698b0d1b6f22c1e1b77c2e66388ee99dbfccd15b54afd783eff076dda46765e.jpg,ac33b561-0cae-4dbf-9e6c-a0bf669e49e9,ac33b561-0cae-4dbf-9e6c-a0bf669e49e9.jpg,Y +SAMAN,공태원,twkong@samaneng.com,twkong,218113.jpg,1044a0cc8af38c8b343002fd614aa8e6edc1f223cd60fe2a90d4f097f6e43400.jpg,fd38395f-a4c6-4ebb-9a55-fffb4d7a48f7,fd38395f-a4c6-4ebb-9a55-fffb4d7a48f7.jpg,Y +SAMAN,공태원,twkong1@samaneng.com,twkong1,219026.jpg,7e5e79c8c9ed637c7de836b6773e45a1f104951742f8e0de27b95306d4fb4fe1.jpg,536f9e40-9f0a-40ed-8798-b790827a3e52,536f9e40-9f0a-40ed-8798-b790827a3e52.jpg,Y +SAMAN,공현우,hwkong@samaneng.com,hwkong,223355.jpg,705911eb170f657826258fcf5b0b2c442bfd494addf1b0d67780033d84e20ae6.jpg,fff0b562-cb32-4e81-b20b-ddb5825bc4bb,fff0b562-cb32-4e81-b20b-ddb5825bc4bb.jpg,Y +SAMAN,공현호,hhgong@samaneng.com,hhgong,225257.jpg,1037a32dcaa3cc4c362e85ada5c4033bc5067e5d9b0a8046c56590a75b91b582.jpg,15d3788f-44bf-4b86-ab71-c914c128871b,15d3788f-44bf-4b86-ab71-c914c128871b.jpg,Y +SAMAN,공희연,hykong@samaneng.com,hykong,025088.jpg,30cabd87abcc43b2be1010d0939fae45db8cd43ced5fb34a9bbf04c8f5b56542.jpg,e87c24a8-5161-41e7-895d-eb92c538013b,e87c24a8-5161-41e7-895d-eb92c538013b.jpg,Y +SAMAN,곽경호,ghgwak@samaneng.com,ghgwak,224110.jpg,67d147b084d9b0f351723f1474aaa2df5977a949f405df550c07918d761d4e0c.jpg,e2490e75-8baa-4ca7-b4df-ea6ddb18768e,e2490e75-8baa-4ca7-b4df-ea6ddb18768e.jpg,Y +HANMAC,곽동권,dgkwak@hanmaceng.co.kr,dgkwak,M24083.jpg,2dfc6cf99d9d017499decbfb451eb5d01e5b1b8e9590102ed26e20a308a393af.jpg,662e7dc5-1209-4c72-a1bb-bb2205ca042e,662e7dc5-1209-4c72-a1bb-bb2205ca042e.jpg,Y +SAMAN,곽병구,bgkwak1@samaneng.com,bgkwak1,219004.jpg,2a8d624fe7ca1c57590df02677b76ddec644660f939dc7e363dde190f9b18a0b.jpg,e8ce81d7-f682-4f7b-8ea8-75de62eac7ea,e8ce81d7-f682-4f7b-8ea8-75de62eac7ea.jpg,Y +JANGHEON,곽승용,sygwak@brsw.kr,sygwak,J25602.jpg,1e169912b66b1034c91d4f43e676e19812fc32c4a872a0db5cf10661dd0a5edf.jpg,a86352e7-e7bb-467b-8199-0704d79ede04,a86352e7-e7bb-467b-8199-0704d79ede04.jpg,Y +SAMAN,곽억연,eykwak@samaneng.com,eykwak,216004.jpg,3c7ad27cf4d6993e5849e2c0354b363940530e79a18073f60719a1b9a21e7e3a.jpg,21a601a2-df12-4d7e-8127-d672ba00e70c,21a601a2-df12-4d7e-8127-d672ba00e70c.jpg,Y +SAMAN,곽용규,ykkwak@samaneng.com,ykkwak,223001.jpg,9e24ad8b7cf0e6b33d573179756133145988daed61475b894038d2d64fabbe08.jpg,c53a415b-01d0-4bc4-bfdc-d0de4510cde0,c53a415b-01d0-4bc4-bfdc-d0de4510cde0.jpg,Y +SAMAN,곽은미,emkwak@samaneng.com,emkwak,221032.jpg,862a5457379bcfe339ef803ea64991ae0dae5b012f0fe77dd46a0bd3d871292b.jpg,b8b1775b-ff82-4012-ae01-85310522a1a0,b8b1775b-ff82-4012-ae01-85310522a1a0.jpg,Y +SAMAN,곽은미,emkwak1@samaneng.com,emkwak1,025143.jpg,59f25e3d27084906b001bc0836fafb8a76c10f322bdb8b7a7a2358a2f3625bc4.jpg,5dff99e4-0a32-433a-a315-2742748f0eb7,5dff99e4-0a32-433a-a315-2742748f0eb7.jpg,Y +SAMAN,곽준성,jskwak@samaneng.com,jskwak,202119.jpg,20c040017daf37e9ae856cb6cc9b694bf3d65fa903c3262599301f63d0d6e12d.jpg,16769b44-9f9d-4a4f-8bb4-fecb07346339,16769b44-9f9d-4a4f-8bb4-fecb07346339.jpg,Y +HANMAC,곽현석,hskwak1@hanmaceng.co.kr,hskwak1,M06309.jpg,ca0ded65c51984d7850d9fab60b8167fdd4e2c70990c5134785ed6f3eccf34ef.jpg,f283c6ca-63eb-468d-956e-b08f411f82a9,f283c6ca-63eb-468d-956e-b08f411f82a9.jpg,Y +SAMAN,곽호성,hskwak@samaneng.com,hskwak,182004.jpg,0f7b49b4fb0d1c53b235b87dc6c2c84422c96aba6a776dbe0d1dc18765463457.jpg,eb32f447-83d5-4a2b-8c92-21044a265cbd,eb32f447-83d5-4a2b-8c92-21044a265cbd.jpg,Y +SAMAN,구경자,kjkoo1@samaneng.com,kjkoo1,195093.jpg,c0d65cb086b92ec28f8bea86e515ea690d43482160d0a05c23aa91608662f4b9.jpg,f23da4d8-a1fc-4c1b-8784-6b3617a943d0,f23da4d8-a1fc-4c1b-8784-6b3617a943d0.jpg,Y +SAMAN,구민재,mjkoo@samaneng.com,mjkoo,225053.jpg,5ff699ca7cf4781457f98b8634ded1a4c3b0d50057641be0ba465d21ca37197e.jpg,945ba295-a88b-4d80-a707-e79f0427a4dd,945ba295-a88b-4d80-a707-e79f0427a4dd.jpg,Y +SAMAN,구영민,ymkoo@samaneng.com,ymkoo,223389.jpg,784edbb32dd8eabf97307ad89178012cd2d3b531ca76242979dfd199e09ff219.jpg,9130294e-ed7b-40be-97f8-2b6ce4171608,9130294e-ed7b-40be-97f8-2b6ce4171608.jpg,Y +SAMAN,구영서,yskoo@samaneng.com,yskoo,224121.jpg,af61f63b181e55cb4260337f738b24bad723b40f7029bfe9e6379e567c66c62c.jpg,83c1b116-e84d-4388-8436-95500b185a24,83c1b116-e84d-4388-8436-95500b185a24.jpg,Y +SAMAN,구원일,wikoo@samaneng.com,wikoo,225343.jpg,611815dc6f29bfde18ee7426c247b07f790a27324e3222947d4be786bfc30317.jpg,2265ef93-b69a-400a-bae2-c555f9d2e7e3,2265ef93-b69a-400a-bae2-c555f9d2e7e3.jpg,Y +HANMAC,구자용,jykoo@hanmaceng.co.kr,jykoo,M20311.jpg,2deb75c1b7723d533fc1334ab7441567a20fa203d5c6fb8f95c9c26a78f88d89.jpg,fa9baf5d-1664-460e-a6b2-c0ea0868b5da,fa9baf5d-1664-460e-a6b2-c0ea0868b5da.jpg,Y +SAMAN,구자환,jhkoo@samaneng.com,jhkoo,224316.jpg,cb669244199d23d4fb7491f49fe98faa297613bcb8a63baee26972b2d1ea1e52.jpg,1e9fde49-99ad-443b-a1de-5af4485adcdb,1e9fde49-99ad-443b-a1de-5af4485adcdb.jpg,Y +SAMAN,구천회,chgoo@samaneng.com,chgoo,223176.jpg,a2af7df76f0ddefc4256bee5e2bec1f8142df194436d0a2f6dea10675503d093.jpg,eb53cac1-5c15-4a99-a86f-a8ceb8c5bb94,eb53cac1-5c15-4a99-a86f-a8ceb8c5bb94.jpg,Y +SAMAN,구효완,hwkoo@samaneng.com,hwkoo,216159.jpg,41ae80e61163da711c3a6d015854bb6c3dbe95fa73b0dc38a42a0442aace1640.jpg,58fea1b6-f96e-412c-84ef-7d1f8d4f86c0,58fea1b6-f96e-412c-84ef-7d1f8d4f86c0.jpg,Y +HANMAC,국혜림,hrguk@brsw.kr,hrguk,B22038.jpg,7b3a64f070baf4b77d25a841094db474b2efea2a41c01dc840a78805a823d9f8.jpg,0fd16c17-01b1-4fb9-873d-2a1afe3318f3,0fd16c17-01b1-4fb9-873d-2a1afe3318f3.jpg,Y +SAMAN,권구현,khkwon@samaneng.com,khkwon,220238.jpg,a7c1eae5272e3118e76078f37c01d33539780ecd2f5d64fa58b24aa433b23342.jpg,19887baa-38fd-4f93-87db-b8a58d32737d,19887baa-38fd-4f93-87db-b8a58d32737d.jpg,Y +SAMAN,권기옥,kokwon@samaneng.com,kokwon,182002.jpg,23a953bc0c5100bc4d6ffed359f2de9d66082f2383e80057320a70112feb31a6.jpg,ec744eea-ec34-4ff4-8022-da3edb38c953,ec744eea-ec34-4ff4-8022-da3edb38c953.jpg,Y +SAMAN,권기철,kckwon@samaneng.com,kckwon,224131.jpg,17b29e58ee71828a8c9e7ab6d4f085ca84ccee07778f07cc86240c4f38f517b5.jpg,499469ac-9bcc-4078-be22-5b7876d2860e,499469ac-9bcc-4078-be22-5b7876d2860e.jpg,Y +SAMAN,권대경,dkkwon@samaneng.com,dkkwon,220196.jpg,612be42bbd0a5d09cfac3e7ca9c5613b6a921e2d3d1106531c5e4d1369bf695c.jpg,373383b0-aae9-4fcb-a772-2df63d628139,373383b0-aae9-4fcb-a772-2df63d628139.jpg,Y +SAMAN,권민근,mkkwon@samaneng.com,mkkwon,217005.jpg,092c9b94ac4f1098d48a6c22d2ad0d99fbbe010756fcdf74ca10ffc1cddc9013.jpg,db137a65-bbba-421d-b9d1-23628b1a3033,db137a65-bbba-421d-b9d1-23628b1a3033.jpg,Y +SAMAN,권병근,bgkwon@samaneng.com,bgkwon,226025.jpg,fd222cb9476a415c71ceebfe1884a1aa47ecb7520258e77db83802d9a2ed0229.jpg,f737a84f-414e-4a43-a447-d185edf3540e,f737a84f-414e-4a43-a447-d185edf3540e.jpg,Y +HANMAC,권순일,sikwon@hanmaceng.co.kr,sikwon,M21303.jpg,3a1adca10af8097ec248356a38d101847ad28c31c369e0a8db3e63a7c61de909.jpg,5ef2b465-5c0d-4f5a-aed7-ce0a19abf166,5ef2b465-5c0d-4f5a-aed7-ce0a19abf166.jpg,Y +SAMAN,권순호,shkwon@samaneng.com,shkwon,222059.jpg,66e6a71e89824b339b9888344efd2542e4d3f9a677c1bbb233c7a97f0e83b13b.jpg,e376306b-6d88-4541-8415-c3b8d00336f9,e376306b-6d88-4541-8415-c3b8d00336f9.jpg,Y +SAMAN,권승민,smkwon@samaneng.com,smkwon,226138.jpg,9ed96132619fd074ffc67f4068238ae57e0657f6c77c8751cd00a66c595ac952.jpg,d44f4147-8a4c-4741-b49f-82e3e56a109e,d44f4147-8a4c-4741-b49f-82e3e56a109e.jpg,Y +SAMAN,권영국,ykkwon@samaneng.com,ykkwon,209177.jpg,5f36ddd77f01841cf712d22b3d9c3b37ddb5adebecf1cb7c5daadb7f395a4ba8.jpg,c0556da1-efa2-4022-a240-eb522fc88206,c0556da1-efa2-4022-a240-eb522fc88206.jpg,Y +SAMAN,권영범,ybkwon@samaneng.com,ybkwon,220257.jpg,0996951ee00c3805b8fb0c5767bb1753be40ce9978c72907d92e4131e38205ce.jpg,5de163b0-0f6a-40ff-94d6-b62e8ba366f2,5de163b0-0f6a-40ff-94d6-b62e8ba366f2.jpg,Y +SAMAN,권오선,oskwon@samaneng.com,oskwon,204294.jpg,fc22d8d49e406eb8da0be20f47f18c5ce31d0f23aecf2544ad0688f0abe6f05e.jpg,9f74c41c-1e76-493a-b8d6-7bdc191701de,9f74c41c-1e76-493a-b8d6-7bdc191701de.jpg,Y +SAMAN,권오선,oskwon1@samaneng.com,oskwon1,223111.jpg,5664f8fbda4aa42ae9654ef7a21d1f2c19ce986c9fdffb42ece85f43f96d1619.jpg,b643ddf4-47d0-4e8e-997a-98c0b88e8481,b643ddf4-47d0-4e8e-997a-98c0b88e8481.jpg,Y +SAMAN,권오영,oykwon1@samaneng.com,oykwon1,225079.jpg,be80b657db06ca84b2560d8fd7efcefa5a00f96b5ddfacee2a7b5f3099fc4923.jpg,a6eaf0f9-a4d9-466d-bf11-0f057ec281fc,a6eaf0f9-a4d9-466d-bf11-0f057ec281fc.jpg,Y +SAMAN,권오윤,oykwon@samaneng.com,oykwon,223116.jpg,49b64157fd6c2dc28f4294ebb4e5ac6881253668e058b246202f5b0331748e6c.jpg,2ccece74-9ac1-4752-95e5-201250ddb407,2ccece74-9ac1-4752-95e5-201250ddb407.jpg,Y +HANMAC,권오재,ojkwon1@hanmaceng.co.kr,ojkwon1,M24031.jpg,5a74cd66844b3ff97f79b3dd8649cbaf69989fd391012dd069bfa9a7c6e61387.jpg,f17326f5-a170-4f67-ac8a-4fcfb94b25db,f17326f5-a170-4f67-ac8a-4fcfb94b25db.jpg,Y +SAMAN,권오정,ojkwon@samaneng.com,ojkwon,225058.jpg,ee5c83fda13f9f88ff85960dcffa596b3d68b5e14148ff331113cbdee44ea884.jpg,62c5adfe-a9ec-4740-8f76-326c6e00703e,62c5adfe-a9ec-4740-8f76-326c6e00703e.jpg,Y +HANMAC,권오춘,ockwon@hanmaceng.co.kr,ockwon,M21436.jpg,08e493f5936482066d4f3f0ab84ed46dec0710dd683f539d13a633fb061a0ebd.jpg,5c7682b1-1197-4ee4-9a74-93ca302a58e8,5c7682b1-1197-4ee4-9a74-93ca302a58e8.jpg,Y +SAMAN,권오태,otkwon@samaneng.com,otkwon,224360.jpg,bfbb526529d382cef2306e6eb514f811cfffb295186432b828759e9f19597dfd.jpg,5a0c4cf8-29c7-43aa-9a81-a9cee3af2e2f,5a0c4cf8-29c7-43aa-9a81-a9cee3af2e2f.jpg,Y +SAMAN,권이선,lskwon@samaneng.com,lskwon,024110.jpg,d514a5ded5b660a5891fa00e8e7c334f454fc39cc412e9d16576393d0f851687.jpg,435c6a6a-2406-4ade-932d-b6d6861284e2,435c6a6a-2406-4ade-932d-b6d6861284e2.jpg,Y +SAMAN,권장승,jskwon@samaneng.com,jskwon,225111.jpg,a8aaaeb6dc112735bba1b39081d8c08f8672c60013a9b0a9d5328d352f755f0d.jpg,093d7a1b-42d4-4963-aca3-b562834782ae,093d7a1b-42d4-4963-aca3-b562834782ae.jpg,Y +SAMAN,권진주,jjkwon@samaneng.com,jjkwon,212150.jpg,891034dd65d79e672f2029ef5c213d4dbb7a885b098c2b0038b6c71979a6f20e.jpg,4a7c855f-0e16-43e9-b7cf-8d2b7dad3d26,4a7c855f-0e16-43e9-b7cf-8d2b7dad3d26.jpg,Y +SAMAN,권진하,jhkwon@samaneng.com,jhkwon,225191.jpg,d65deff4f22ae4d56d94ad626e48fc2aae64ea5b34cd88309b3c94463b77c5fe.jpg,4621f799-96b6-499b-9fff-01ca4c4e511f,4621f799-96b6-499b-9fff-01ca4c4e511f.jpg,Y +SAMAN,권충영,cykwon@samaneng.com,cykwon,220217.jpg,2691d88aa9846818ba15874862350f42fbd98abdbb5afa07d13438aa3bc54374.jpg,fb9acd51-32d0-4282-aded-68e8e61ea3b0,fb9acd51-32d0-4282-aded-68e8e61ea3b0.jpg,Y +SAMAN,권태학,thkwon@samaneng.com,thkwon,225211.jpg,1fb00e2d9b63d8196ea99c3f9396aaa12712313706aafedef2d67417da798013.jpg,647077b8-b0ad-4628-ac40-b63acab4658a,647077b8-b0ad-4628-ac40-b63acab4658a.jpg,Y +HANMAC,권태훈,thkwon1@hanmaceng.co.kr,thkwon1,M20514.jpg,cc4cb4edadd2e912c37f73bb58d1d445d1dbae19fe6b5c348dbb541ef74d248b.jpg,d91b72f9-efc8-42df-b946-69fe219600ec,d91b72f9-efc8-42df-b946-69fe219600ec.jpg,Y +SAMAN,권혁민,hmkwon@samaneng.com,hmkwon,226075.jpg,6feb3251975c961e3388ac688694388533ff91d4860f9875e621bd87ca94e2bb.jpg,1e56c7a3-28b1-4779-b021-b0a8b87b0435,1e56c7a3-28b1-4779-b021-b0a8b87b0435.jpg,Y +SAMAN,권혁수,hskwon@samaneng.com,hskwon,219110.jpg,ec26289e95c4ce8f0d2774b7a76074edfb8e5b89f7fe0ea460719d6be891331c.jpg,9b4b74b6-b813-45cb-b14e-726e0d6c13aa,9b4b74b6-b813-45cb-b14e-726e0d6c13aa.jpg,Y +SAMAN,권혁조,hjkweon@samaneng.com,hjkweon,221035.jpg,a40942fbaaef7182b7847720694bf84cb304800a8caa210575cafdb60a36dafb.jpg,c318bf16-05bb-4b9f-aed4-67a7d38031cf,c318bf16-05bb-4b9f-aed4-67a7d38031cf.jpg,Y +SAMAN,권혁진,hjkwon@brsw.kr,hjkwon,216020.jpg,c2c3ef49d7938879a36d95f0156c85abec3bfa6dd92da1699cb037c1493d2655.jpg,9f8cc1b1-af8d-45d4-946c-924a529c2556,9f8cc1b1-af8d-45d4-946c-924a529c2556.jpg,Y +SAMAN,권현진,hjkwon2@samaneng.com,hjkwon2,223399.jpg,e9d24d4edb59d2f98b4a05bf9ff2937b9f0b6bdc0cf1c7e28caabbe619036268.jpg,f3469d30-5c83-4171-b71e-93509feb5873,f3469d30-5c83-4171-b71e-93509feb5873.jpg,Y +SAMAN,권형중,hjkwon1@samaneng.com,hjkwon1,221245.jpg,e956df336bc962a7ac97844a514b8ef5b058338253ee9a063bcbbeb66afcbca9.jpg,30359f72-10ac-4ef5-9c5e-a5c8bf2e76af,30359f72-10ac-4ef5-9c5e-a5c8bf2e76af.jpg,Y +SAMAN,기윤서,yski@samaneng.com,yski,221052.jpg,c61ceb2d9384a41473b40bd83b250a8e1319845620179da4c7b4f7a146d398e7.jpg,c8cf796e-c622-4af0-9962-f0b6c7f7ae2f,c8cf796e-c622-4af0-9962-f0b6c7f7ae2f.jpg,Y +SAMAN,기정호,jhki@samaneng.com,jhki,222136.jpg,41b4ce20640b6cbab1624fc460656e3ce320cc359c0935d86130797e054e0bcc.jpg,6df39ba1-1428-46c9-9c37-67a7c22af9f8,6df39ba1-1428-46c9-9c37-67a7c22af9f8.jpg,Y +HANMAC,길이원,ywgil@hanmaceng.co.kr,ywgil,M20217.jpg,d8fc76e2a661e35064bc3fc5851c6583b468adf2856a7ec779d8c7a8100ec60a.jpg,9870b7cc-22a2-4972-a296-11a76f6f9f13,9870b7cc-22a2-4972-a296-11a76f6f9f13.jpg,Y +SAMAN,김가영,gykim@samaneng.com,gykim,026050.jpg,e23abfa29a24f54394f72a53576571565908e8d627bab4d2234d783ce70ba704.jpg,675b8323-9906-44ed-8be8-73b2a55ca2f5,675b8323-9906-44ed-8be8-73b2a55ca2f5.jpg,Y +JANGHEON,김갑성,gskim@brsw.kr,gskim,M08502.jpg,d734beaf20b4076afc3a79f28b6ae720d3192d07260e6d145c98aebfd3562d2c.jpg,51b60be4-2438-4b26-ab40-18b022ee326e,51b60be4-2438-4b26-ab40-18b022ee326e.jpg,Y +SAMAN,김건도,gdkim@samaneng.com,gdkim,221027.jpg,57da6a59048b65c187ce6ca944faff62759ea762e8ad7258f1cfc98bd06124d8.jpg,2d330b99-291b-4848-bac7-2bbed6d3330d,2d330b99-291b-4848-bac7-2bbed6d3330d.jpg,Y +SAMAN,김건완,gwkim1@samaneng.com,gwkim1,220197.jpg,6e4d247cebcfa474516dec3376474b58e51a3c6ec60767bf0629bb6291806610.jpg,83b16afd-b691-40b5-b13e-d83a1a433e75,83b16afd-b691-40b5-b13e-d83a1a433e75.jpg,Y +SAMAN,김건우A,gukim@samaneng.com,gukim,225105.jpg,d7602c3c384cbddc11010df8adf20608f86276898fa8a1744616edf1c8039bfc.jpg,b2989c09-9f7f-44e2-bcd5-15d9bfe2fb13,b2989c09-9f7f-44e2-bcd5-15d9bfe2fb13.jpg,Y +HANMAC,김건우,gwkim2@hanmaceng.co.kr,gwkim2,M07308.jpg,99136dc1b603b9cfaf69eb00e4ba3610a2bb36fa1fe43d88da8bbf60109429dd.jpg,5534825f-5558-49ad-b573-607c56ea5e84,5534825f-5558-49ad-b573-607c56ea5e84.jpg,Y +SAMAN,김건호,khkim1@samaneng.com,khkim1,226087.jpg,4efd8533669ee05f2f97c9cf5940f93e699069c4999fa41e64d846ce8dd9d600.jpg,9fc7d02e-a68c-4d5d-a24d-d1329926bbc4,9fc7d02e-a68c-4d5d-a24d-d1329926bbc4.jpg,Y +SAMAN,김경미,kmkim@samaneng.com,kmkim,025086.jpg,aa2a90ae6ab76fbaa7696235817587b7e859381c36529ddb0f8479c881bec978.jpg,d896c402-1e2d-42ee-810d-c43ec47a3322,d896c402-1e2d-42ee-810d-c43ec47a3322.jpg,Y +SAMAN,김경민,kmkim1@samaneng.com,kmkim1,225272.jpg,0092a4fce388f461e382dd3e11e76db3b5cf51115381c9cd8bc61aac5b9f7bfb.jpg,2eafaee9-59cb-4981-a93f-5188e60b54d3,2eafaee9-59cb-4981-a93f-5188e60b54d3.jpg,Y +SAMAN,김경석A,kskim@samaneng.com,kskim,218033.jpg,a8094747c64c474417edd970ddea69f398956ee14b77d5ca6b5c69f0ab31dab0.jpg,4310afd9-0bb4-42a5-aa5c-07434bbb85c7,4310afd9-0bb4-42a5-aa5c-07434bbb85c7.jpg,Y +SAMAN,김경석B,kskim5@samaneng.com,kskim5,224198.jpg,a824a99097f314cdf3af2b5aacd6f7391c479fa151238610d94573a131e5b648.jpg,a1bf31d8-f763-452f-a384-220ccb7db1cc,a1bf31d8-f763-452f-a384-220ccb7db1cc.jpg,Y +SAMAN,김경수,kskim2@samaneng.com,kskim2,223091.jpg,65c85e0b5813b550ff01034d6277f699b458dd855749816465cf414164f0dc68.jpg,a9d3f0af-946d-4e59-b29b-c5ae24fac2b7,a9d3f0af-946d-4e59-b29b-c5ae24fac2b7.jpg,Y +SAMAN,김경수,kskim1@samaneng.com,kskim1,225023.jpg,3c0142d51ed41184c9ffd6e6c4ab2bab956f8b88e3fa26947c04a40677040062.jpg,688974cc-8560-4023-8108-a5498d771c86,688974cc-8560-4023-8108-a5498d771c86.jpg,Y +HANMAC,김경수,kskim3@brsw.kr,kskim3,P11302.jpg,aa5f3955b0bf83332ff042baff836c82c43b61c3b5a6cdaaa3bd9405556f0dc0.jpg,b947fdbf-8862-48ef-bd4a-3f7464bd8618,b947fdbf-8862-48ef-bd4a-3f7464bd8618.jpg,Y +SAMAN,김경종,kjkim1@samaneng.com,kjkim1,218005.jpg,521092f3ddb770d47afcd8b61e1c7351c319e7559ac25618be435723e775dc74.jpg,4c53e709-0a8f-47ef-81f0-3ce61d36d9ad,4c53e709-0a8f-47ef-81f0-3ce61d36d9ad.jpg,Y +SAMAN,김경호,khkim2@samaneng.com,khkim2,220064.jpg,4512ebc0a4664124cb39f69ad6a2fb15876560ee2dfa78dff3d13bb1f1af163d.jpg,5a8dea50-d4f2-4f31-849b-09355e86126f,5a8dea50-d4f2-4f31-849b-09355e86126f.jpg,Y +SAMAN,김경화,khkim5@samaneng.com,khkim5,025085.jpg,03b5ebd21c1bf0c53651762e7d5a41eec609362d8c4ce428fbd8af4d8df5a674.jpg,54cb00ad-6795-40a6-83f9-72304d4c6db1,54cb00ad-6795-40a6-83f9-72304d4c6db1.jpg,Y +HANMAC,김경환,ghkim7@hanmaceng.co.kr,ghkim7,M17504.jpg,721b4ccd033f52ca965be3728a581e5f4642890a023097c729a2ffcc2cb57ef7.jpg,d9e57a15-8608-48ad-83b7-bffc15cfc1b4,d9e57a15-8608-48ad-83b7-bffc15cfc1b4.jpg,Y +SAMAN,김경훈,khkim7@samaneng.com,khkim7,226015.jpg,0c10bdef08f670fc5ec68785c7516315a16859974343d396f02251400d30d85e.jpg,37980e10-48ad-47c0-a642-c3d4ff647b24,37980e10-48ad-47c0-a642-c3d4ff647b24.jpg,Y +SAMAN,김계원,gwkim@samaneng.com,gwkim,218068.jpg,3e85632308f9bf0c244991446685056b4901fc478536b2047e147a65a7a98daa.jpg,efea1bc0-254f-4a36-85a5-62b839fafb2c,efea1bc0-254f-4a36-85a5-62b839fafb2c.jpg,Y +SAMAN,김공균,kkkim@samaneng.com,kkkim,202098.jpg,afa5c58ed50ae3d4b4ebe3f1a048b69a20a590045f08422d3cd5d5a7aa80249b.jpg,d4d01da9-7a2d-4daa-8f00-61d3fb2750e1,d4d01da9-7a2d-4daa-8f00-61d3fb2750e1.jpg,Y +SAMAN,김관영,kykim@samaneng.com,kykim,217067.jpg,69b4c24629a01033046be1ea874f1f68f64066a8b69e2c6109b7293ae8f30aaa.jpg,cf23d94b-eed0-45e9-a76f-417c5078fce4,cf23d94b-eed0-45e9-a76f-417c5078fce4.jpg,Y +SAMAN,김관중,kjkim3@samaneng.com,kjkim3,224245.jpg,e892e0d5791e31dc436500e4a030e1a057fce473f0a1c80cd20a70339f41475a.jpg,95b34a98-e4c3-4824-b0bd-9293e82431ee,95b34a98-e4c3-4824-b0bd-9293e82431ee.jpg,Y +HANMAC,김관후,ghkim@hanmaceng.co.kr,ghkim,M22051.jpg,182a4d6f5bf8c5ee874203266d4ff5c26e4144988726a29598d77e05d56a91a9.jpg,02b97113-c9ef-4116-9515-b92722a622ab,02b97113-c9ef-4116-9515-b92722a622ab.jpg,Y +SAMAN,김광균,kgkim@samaneng.com,kgkim,222121.jpg,43e6f6b2a36078e2f04fa179fc025e5f405b37237484c677fa626c542cb912ee.jpg,d2eee8a1-2b43-432f-96f2-fb9de0abf58f,d2eee8a1-2b43-432f-96f2-fb9de0abf58f.jpg,Y +SAMAN,김광남,gnkim@samaneng.com,gnkim,225351.jpg,0b3e5cd4cf06248578eb3381130869ba3f6e050e85ab27cd6f08efb1953ef311.jpg,e70e734a-988d-4c84-ba77-0392c1246292,e70e734a-988d-4c84-ba77-0392c1246292.jpg,Y +SAMAN,김광원,kwkim@samaneng.com,kwkim,221140.jpg,a7cc5c6d114c49fc352432af728a1428f214e6e9138c849accf36790ad3da681.jpg,4dcd4cc2-6d0c-47b0-a29d-35e8a0268cd7,4dcd4cc2-6d0c-47b0-a29d-35e8a0268cd7.jpg,Y +SAMAN,김광준,kjkim2@samaneng.com,kjkim2,224142.jpg,e95f27a174a41ccb784c3da5f4a1805a4dc6fb47f4959291735d820344e8371c.jpg,f22d8bc5-c3e3-4385-b695-4a0837ac16e6,f22d8bc5-c3e3-4385-b695-4a0837ac16e6.jpg,Y +SAMAN,김광혜,khkim3@samaneng.com,khkim3,226030.jpg,037d57862503cfe5e04456181ac78064bd1897b32f96a24bc6c637b033feb628.jpg,daa685a6-3dfc-4646-9c1d-da80d1043d03,daa685a6-3dfc-4646-9c1d-da80d1043d03.jpg,Y +SAMAN,김국태,ktkim1@samaneng.com,ktkim1,218060.jpg,255819d672ff638019f19143c1bf2a8c468deade3b5227dd1b83ba865471232f.jpg,c1b53fab-342c-422e-a078-16963a7fee0d,c1b53fab-342c-422e-a078-16963a7fee0d.jpg,Y +SAMAN,김국현,ghkim3@samaneng.com,ghkim3,224296.jpg,4b40a19350b3901054229b6b97ab68e71d3747501326dc011bfba206056effb3.jpg,42d8fbe9-7b05-4e61-aa33-b8dec383dbf6,42d8fbe9-7b05-4e61-aa33-b8dec383dbf6.jpg,Y +SAMAN,김규범,gbkim@samaneng.com,gbkim,218008.jpg,440a6aaf38f8435c79c8075af94aa8e0dde662677fe15a43c77732dfc9b0cb9b.jpg,170aa78d-997e-4142-9105-1c204e6675d5,170aa78d-997e-4142-9105-1c204e6675d5.jpg,Y +SAMAN,김우진A,wjkim@brsw.kr,wjkim,217099.jpg,7eef7aee09902a5a5027c7cb4ae3478f4c82ba7c75dafe8fb3622a4bfe859423.jpg,7e1d8301-551e-491f-8a44-de6e287cde00,7e1d8301-551e-491f-8a44-de6e287cde00.jpg,Y +SAMAN,김규화,ghkim1@samaneng.com,ghkim1,224026.jpg,bec61ce7dd5c72fda9620a80d5e0cf4ea43120444068c785f8fc9f2d8c2ebb0a.jpg,8c6b21cb-6099-43a0-8b6e-3159e7a2316e,8c6b21cb-6099-43a0-8b6e-3159e7a2316e.jpg,Y +SAMAN,김균준,gjkim@samaneng.com,gjkim,223171.jpg,8cdbe1117c70daa4c1303d8f5e673190b7a4550101d3249873fee67495c6915a.jpg,a08c6f21-3d83-4fd5-8fbb-0d7c304f1e8b,a08c6f21-3d83-4fd5-8fbb-0d7c304f1e8b.jpg,Y +SAMAN,김근아,gakim@samaneng.com,gakim,224286.jpg,ace534aa55367061c41921f92abc739b707082be2aac2e4ceb851120e9f70d9e.jpg,2d071d14-d2a3-4263-95c5-e222adcf6598,2d071d14-d2a3-4263-95c5-e222adcf6598.jpg,Y +HANMAC,김근형,ghkim4@brsw.kr,ghkim4,B20311.jpg,7f2744c329b0878629b5e3972a68a948351a5664e35832575173d3bd411b5f65.jpg,dbdede04-a72f-4f02-a570-e39c8f2cb13a,dbdede04-a72f-4f02-a570-e39c8f2cb13a.jpg,Y +SAMAN,김기룡,klkim@samaneng.com,klkim,221068.jpg,0f63149432b4fcee5c283cda3ce7bde5d8df1a7835dd9b02ee096bbd556fe820.jpg,038cbf44-9265-401e-8458-23ce4ea1964e,038cbf44-9265-401e-8458-23ce4ea1964e.jpg,Y +SAMAN,김기봉,kbkim@samaneng.com,kbkim,223328.jpg,572758c99e9eda096dbb640866f77a5c2a273b909b409f13ebd9a444afb89143.jpg,c6a1cfa8-822c-4e6c-9ae4-c82cac12e2cb,c6a1cfa8-822c-4e6c-9ae4-c82cac12e2cb.jpg,Y +SAMAN,김기영,kykim1@samaneng.com,kykim1,215088.jpg,59eef729ea2e474dafdd77ea0c72c4860d02bcad6d3c962cb056cca47a62a05a.jpg,3b586125-c515-4237-bf40-16856e112da1,3b586125-c515-4237-bf40-16856e112da1.jpg,Y +SAMAN,김기영,kykim2@samaneng.com,kykim2,225325.jpg,937dde6822e1c9dd269445c36f1fb3324223c0505e9c4d24c4b52f1b8a9dc7af.jpg,e50a9f00-ccaa-4484-9dc7-06a389fb8636,e50a9f00-ccaa-4484-9dc7-06a389fb8636.jpg,Y +SAMAN,김기용,kykim4@samaneng.com,kykim4,221038.jpg,8d3d49c24af2262e44879f43d8694ef596ae2b417d575f36ccbf342a072e4903.jpg,1e0d750d-31b1-43ef-ab97-cd3fce2b57e7,1e0d750d-31b1-43ef-ab97-cd3fce2b57e7.jpg,Y +SAMAN,김기원,kwkim1@samaneng.com,kwkim1,226084.jpg,6d80b7c95284c375c93d01cea68359da040a6346c997de9bf20368b2dadb9eb1.jpg,70b801b6-2e68-45a5-ac42-40e5313020a7,70b801b6-2e68-45a5-ac42-40e5313020a7.jpg,Y +SAMAN,김기호,khkim4@samaneng.com,khkim4,219079.jpg,993b810eefece731d44646cb3d4c9ff7587935823f49ee3d5f330a11b6237c4e.jpg,ba881f22-0ffe-49fb-9169-8c16d6362669,ba881f22-0ffe-49fb-9169-8c16d6362669.jpg,Y +SAMAN,김기호,ghkim2@samaneng.com,ghkim2,220003.jpg,1aec690d064070d53de30922b357441984f8d738e690f174de8df1778bece346.jpg,eb084552-bc25-4173-9f84-1e62876372a5,eb084552-bc25-4173-9f84-1e62876372a5.jpg,Y +SAMAN,김기환,khkim@samaneng.com,khkim,213064.jpg,3d2e822edb036fe36b0b64ecc34b7606a2c8c1989c51a9ff5c99d005991a4389.jpg,dd7924eb-7859-48f8-a160-89b9f1dbc55f,dd7924eb-7859-48f8-a160-89b9f1dbc55f.jpg,Y +HANMAC,김기환,ghkim6@hanmaceng.co.kr,ghkim6,M23059.jpg,1d71e4fd7470e4ab81885287f0a61f248fe3f65846d3cbb099d25e5ce9b7685f.jpg,120e34fb-5a9f-4293-9838-8048e490c915,120e34fb-5a9f-4293-9838-8048e490c915.jpg,Y +SAMAN,김기훈,khkim6@samaneng.com,khkim6,225307.jpg,730608dd7511c6df61ab5d0d909bc1825982329e5c1bcd2abc4a30dc93f7ba21.jpg,5ca69be8-3723-48ba-b0f1-fae33e50ac84,5ca69be8-3723-48ba-b0f1-fae33e50ac84.jpg,Y +SAMAN,김기훈,khkim8@samaneng.com,khkim8,226140.jpg,a4d9d1453d71a03a0e3ce21ce5a12bf67e7e7656fb60c68f0fc7f021460763ce.jpg,42f1d842-c036-4c3f-9af4-a2585203bbb7,42f1d842-c036-4c3f-9af4-a2585203bbb7.jpg,Y +SAMAN,김길모,kmkim2@samaneng.com,kmkim2,206052.jpg,5507c792baa420c65a7ee2cf3bffb1af94428e9cbdac5f2f22b0a3059bc70d53.jpg,e1f36069-0da4-4ff8-8220-fea6de091e50,e1f36069-0da4-4ff8-8220-fea6de091e50.jpg,Y +SAMAN,김길웅,kwkim2@samaneng.com,kwkim2,207159.jpg,26331d82f00d89ebca373b1fbb6ca7111f05359830b46f4822d99ceb2d3eb203.jpg,9fa75aad-8e08-4bc4-a617-85c3ce6758a6,9fa75aad-8e08-4bc4-a617-85c3ce6758a6.jpg,Y +HANMAC,김윤재,yjkim7@hanmaceng.co.kr,yjkim7,B17301.jpg,a145ae581087ed0d956a812b4fe2727d54fb48bac173f23857936a542b9e762f.jpg,1d9818ed-1a03-4982-b229-c2eba2f44c49,1d9818ed-1a03-4982-b229-c2eba2f44c49.jpg,Y +SAMAN,김나연,nykim@samaneng.com,nykim,226020.jpg,fdc9021f4d01cb2602df01667875a48cab42e95ee284c16c5efd82600c0c0f73.jpg,b95c13d0-a7e4-43f1-8c53-364416aa88cd,b95c13d0-a7e4-43f1-8c53-364416aa88cd.jpg,Y +SAMAN,김나현,nhkim@samaneng.com,nhkim,226026.jpg,f805ca23b5e15290d6a61be707f93fd8cb4596935930be939f4f0bce767ee9c2.jpg,752ab0e5-d16d-4559-a9fc-94d3a80639f2,752ab0e5-d16d-4559-a9fc-94d3a80639f2.jpg,Y +SAMAN,김나현,nhkim5@samaneng.com,nhkim5,025050.jpg,58fc3baf43616f501089b5787b1f88f83cfd59f8684aea088ddbff8f5a3b94a0.jpg,e75c4a5e-71f4-4a94-b3bb-47d9bff3641b,e75c4a5e-71f4-4a94-b3bb-47d9bff3641b.jpg,Y +SAMAN,김나현,nhkim2@samaneng.com,nhkim2,026019.jpg,d6bf793b073dceafc83db99970aae1e9d116126e8b4bbfc6aa83eb23b74b0a93.jpg,d024d21c-85ae-410d-ad8b-0fbc644dc3a0,d024d21c-85ae-410d-ad8b-0fbc644dc3a0.jpg,Y +SAMAN,김남걸,ngkim@samaneng.com,ngkim,222004.jpg,c5618d467399ff3d6970b3cebb25113fdccd83ffe29cabbcdd3c2c107fa26434.jpg,72a2d59d-2e38-4a98-84b8-9118475999ae,72a2d59d-2e38-4a98-84b8-9118475999ae.jpg,Y +SAMAN,김남곤,nkkim1@samaneng.com,nkkim1,220135.jpg,9ae4c5ff02107448c1295443a55f005ff7c3e1352f39ba068ebfbd860668404e.jpg,0d51edfe-b652-4e6b-8b9f-7f76d468961f,0d51edfe-b652-4e6b-8b9f-7f76d468961f.jpg,Y +SAMAN,김남기,nkkim@samaneng.com,nkkim,223286.jpg,508383b1fed5a1eb622dcdd026fa07e1676a0dab92cb2d6d23a12604f818b034.jpg,048defa9-d47c-4900-8c87-5b40f3e4d0e3,048defa9-d47c-4900-8c87-5b40f3e4d0e3.jpg,Y +SAMAN,김남옥,nokim@samaneng.com,nokim,023093.jpg,42454f544e1902e535d2d79c9cd53c7bc322bb501924e3a5930f3b28ff53f72a.jpg,8ff7d296-0846-4e88-a463-4c1ecdd05f05,8ff7d296-0846-4e88-a463-4c1ecdd05f05.jpg,Y +HANMAC,김남철,nckim@hanmaceng.co.kr,nckim,M24004.jpg,64addac88236435a665c21b5be8ccf2b635479d0f505e183e5405c85762d2dd1.jpg,a8c6145e-f3c9-4892-bc31-6d58b8ce57ed,a8c6145e-f3c9-4892-bc31-6d58b8ce57ed.jpg,Y +SAMAN,김남헌,nhkim3@samaneng.com,nhkim3,224384.jpg,4bee712c9994e2dbf15fb2e75cb03e86beca7a15d90308601b3ae6bb31e71d10.jpg,008a1287-7955-4800-80c1-1b5205466f92,008a1287-7955-4800-80c1-1b5205466f92.jpg,Y +SAMAN,김남훈,nhkim4@samaneng.com,nhkim4,225024.jpg,f3a046ea97614c585b6a8bba83f0cc7988741e8a3b06e42406675ff951b5689f.jpg,28357d77-a8b3-43f9-bc5a-454b9644c53b,28357d77-a8b3-43f9-bc5a-454b9644c53b.jpg,Y +SAMAN,김다은,dekim1@samaneng.com,dekim1,025099.jpg,278113794d0c4fe20e1c7f8b9defe05292be42b441445f5697b3c2a7b7d44778.jpg,c50c8c0b-2ec4-4d30-b23f-495d875e40eb,c50c8c0b-2ec4-4d30-b23f-495d875e40eb.jpg,Y +SAMAN,김대성,dskim6@samaneng.com,dskim6,218036.jpg,38561e114efc8c05b1a7241dbf63f1e5ec37d0f16434df876212e3b8fc311146.jpg,fec29517-b145-4899-948f-9ce24615bc13,fec29517-b145-4899-948f-9ce24615bc13.jpg,Y +SAMAN,김대성,dskim2@samaneng.com,dskim2,221277.jpg,98c72fb3e803d969ebe16a14b23b2551c1c177942e6835d0d49872dbe2be743e.jpg,63aaa1c6-fd54-428e-89f3-88b2e0235e0a,63aaa1c6-fd54-428e-89f3-88b2e0235e0a.jpg,Y +HANMAC,김대성,dskim5@hanmaceng.co.kr,dskim5,M24016.jpg,f99849d8b1439f30015ad605889fcf1b3a0afad74171b0236a466306bb5eaf8e.jpg,1d5d6f03-984e-4171-bc70-0443e37646a2,1d5d6f03-984e-4171-bc70-0443e37646a2.jpg,Y +SAMAN,김대수,dskim@samaneng.com,dskim,204071.jpg,9208b0d2de2816dbf01aa0119b59aa206277819f9073bca9391048f9176375a7.jpg,26bc52b9-8e06-4a6d-935d-e857500dfaf3,26bc52b9-8e06-4a6d-935d-e857500dfaf3.jpg,Y +SAMAN,김대영,dykim1@samaneng.com,dykim1,206128.jpg,6ae57725ce577626ee9f3832c82e2d4cd3b52598d09db83112d65dc0cdfcd3c6.jpg,e8ec3b8b-1936-4a90-b4e6-def9a1fa7f8a,e8ec3b8b-1936-4a90-b4e6-def9a1fa7f8a.jpg,Y +SAMAN,김대영,dykim3@samaneng.com,dykim3,226060.jpg,67e037981f23eb4ac4c10f5cb3225282b0769b4baf94ebe5eb69a859499431bc.jpg,f21f8a87-e23e-490a-bdd4-c59f8b365c08,f21f8a87-e23e-490a-bdd4-c59f8b365c08.jpg,Y +HANMAC,김대진,djkim2@hanmaceng.co.kr,djkim2,M19104.jpg,397bf5fe70523e54d2eb1e95ddd31c604fe14b852304a1fb581b99a51dedbd79.jpg,e191f329-4091-4ce3-bc10-fa3bd8bd6cfd,e191f329-4091-4ce3-bc10-fa3bd8bd6cfd.jpg,Y +SAMAN,김대현,dhkim@samaneng.com,dhkim,224246.jpg,1669a1f752f3d32c3d724b7bb6b2e14dc410490a7db3e4464965da6d7d8ed4d8.jpg,297b7dd7-281d-4545-abc1-2a4564cee4ef,297b7dd7-281d-4545-abc1-2a4564cee4ef.jpg,Y +HANMAC,김덕용,dykim@hanmaceng.co.kr,dykim,M22058.jpg,9c73d784509dee34971667e76ec409adbd5c4b16a020b9827368c11457fb7504.jpg,843c96a9-feef-4114-b5e5-0c4935ff7aa7,843c96a9-feef-4114-b5e5-0c4935ff7aa7.jpg,Y +SAMAN,김도연,dykim2@samaneng.com,dykim2,223326.jpg,4519428782e1f59dfe7ed31dfeef03eaec967b10b250ea7d1c7e85958b52d4c6.jpg,dbca211e-b3bd-4d36-a2d5-ff8b430b1f82,dbca211e-b3bd-4d36-a2d5-ff8b430b1f82.jpg,Y +SAMAN,김도우,dwkim3@samaneng.com,dwkim3,223004.jpg,949d1b2f2437e100fc83f4b4cf915d32a0e1880e82414e607bbd5be7c21c2231.jpg,2b8c4c6d-24b2-4807-b55f-9cd283ace324,2b8c4c6d-24b2-4807-b55f-9cd283ace324.jpg,Y +SAMAN,김도헌,dhkim1@samaneng.com,dhkim1,217104.jpg,b1f5562899e1c658d24c335d7e6b1b56df182d089578b6fbacddddbd36bb8f0f.jpg,cd5d2667-a340-486e-8b92-a2fb7d54d846,cd5d2667-a340-486e-8b92-a2fb7d54d846.jpg,Y +SAMAN,김도현,dhkim3@samaneng.com,dhkim3,222152.jpg,f553a87a139ef527b5aae4e2522643e8504758ac53c7ef3c5f8143cdef7f8bed.jpg,e0a81e59-4777-4b6a-ab96-84cccf1acdc1,e0a81e59-4777-4b6a-ab96-84cccf1acdc1.jpg,Y +SAMAN,김동규,dgkim2@samaneng.com,dgkim2,225210.jpg,5ae144273d6dbea6f371a343d2a2736bd5a0e598c28a13acca0d67e2d0f1990f.jpg,eadb0ff9-da37-4b17-879a-ecc7e2d66c2d,eadb0ff9-da37-4b17-879a-ecc7e2d66c2d.jpg,Y +SAMAN,김동길,dgkim@samaneng.com,dgkim,220024.jpg,dc2a7d5d089521e47f4f88e6118be1344b0de1abb264072966498b7cef4a725c.jpg,b83c9db3-3ec6-4bf7-b2bf-26a63dc1e5af,b83c9db3-3ec6-4bf7-b2bf-26a63dc1e5af.jpg,Y +SAMAN,김동길,dgkim1@samaneng.com,dgkim1,221076.jpg,2532766737f6eafc42f88627107f84fbf487a8518b3c00593ff134620328e56e.jpg,77573892-3c7c-4999-8472-fe7c9a50c7ae,77573892-3c7c-4999-8472-fe7c9a50c7ae.jpg,Y +SAMAN,김동렬,drkim@samaneng.com,drkim,221317.jpg,7ffb7395abe5bfb73780ac527d5898633f7aff087b0c08d2c113228bef295b4b.jpg,20ae1f5f-4fa9-4335-bbfc-bbfddd3f1b88,20ae1f5f-4fa9-4335-bbfc-bbfddd3f1b88.jpg,Y +SAMAN,김동범,dbkim@samaneng.com,dbkim,196147.jpg,41ffbe284e4114fa911df6fcd18b88082253e35cf383ec2252e6f935f085bc72.jpg,371d2ac7-7831-4a1b-a47d-a1dd9b87ed4b,371d2ac7-7831-4a1b-a47d-a1dd9b87ed4b.jpg,Y +HANMAC,김동빈,dvkim@hanmaceng.co.kr,dvkim,M25030.jpg,d060bdd60a909aaefcfb0982650c3b47031425f2642926c82d4c5f713199d052.jpg,baa5f0dc-4d73-43c3-abd0-5581c710ca0f,baa5f0dc-4d73-43c3-abd0-5581c710ca0f.jpg,Y +SAMAN,김동수,dskim1@samaneng.com,dskim1,213066.jpg,1b91acb77ac0d0c41701af33cee466148ccade5d8ab5aa6f259444fdaf9bfa05.jpg,c0fde2e2-9977-4f1c-ac1c-28dde7007197,c0fde2e2-9977-4f1c-ac1c-28dde7007197.jpg,Y +HANMAC,김동수,dskim4@hanmaceng.co.kr,dskim4,B23021.jpg,821fda33999b70ba5c0b9e396bbb858e1d4bb4d3e7a5ef7ac62d8ab7daa1dd94.jpg,cc0970a2-03aa-4451-8b08-bd0c125ee52c,cc0970a2-03aa-4451-8b08-bd0c125ee52c.jpg,Y +SAMAN,김동우,dwkim4@samaneng.com,dwkim4,225171.jpg,91f4467fc9b33bed11798f0c79948b81a6fe77b4725b265a63f6b265972830fb.jpg,efbc9122-6bec-436d-aa91-6af2b89a7aa2,efbc9122-6bec-436d-aa91-6af2b89a7aa2.jpg,Y +HANMAC,김동욱,dwkim5@hanmaceng.co.kr,dwkim5,M26010.jpg,59980a1068949be34c7168c9009bc38ef0c05d0a2e358a01f5718c4ada7e9e9d.jpg,4a37ec40-9a2c-4c69-8044-3e3dd247ea7d,4a37ec40-9a2c-4c69-8044-3e3dd247ea7d.jpg,Y +SAMAN,김동원,dwkim@samaneng.com,dwkim,215045.jpg,586853a4643fdccfc57bbf4ddf0702b3aaeee5162ea566be49fe43e45c232dfc.jpg,1b5d06e4-455f-40df-a449-bfdeeb4f7b90,1b5d06e4-455f-40df-a449-bfdeeb4f7b90.jpg,Y +JANGHEON,김동원,dwkim2@brsw.kr,dwkim2,J22205.jpg,8949d9f21d6b0f2410e1466bb5187938aeb26db4cbcd02f01e1d92e089d4ec0d.jpg,09529cc9-f585-4dd7-9acc-6ab2135598fd,09529cc9-f585-4dd7-9acc-6ab2135598fd.jpg,Y +SAMAN,김동은,dekim@samaneng.com,dekim,223276.jpg,54d190121dc4809a60bb6451d76fe74027034f3ca2ff2b8c798a2d18d55630ff.jpg,4553a9fb-bea0-42bf-9f24-183f9c6eb0c8,4553a9fb-bea0-42bf-9f24-183f9c6eb0c8.jpg,Y +SAMAN,김동주,djkim@samaneng.com,djkim,214038.jpg,e046866eedf96aa504c8fa9bf424bb5a73df48d970096fcc6ed8d9ef60f80180.jpg,7ed30eb0-d7e9-4ec7-b99a-b15ccfa2bed6,7ed30eb0-d7e9-4ec7-b99a-b15ccfa2bed6.jpg,Y +HANMAC,김동주,djkim3@hanmaceng.co.kr,djkim3,M02608.jpg,fc8476510f5cb98e103d5925e7ebbe1d98295cb1b7f957ad3cd738b8057dfe72.jpg,726eec04-dbdc-43f4-b7e8-06022ced6208,726eec04-dbdc-43f4-b7e8-06022ced6208.jpg,Y +HANMAC,김동준,djkim4@hanmaceng.co.kr,djkim4,M21405.jpg,3262b4adcd2f8ab05e74ac112beb4c2ad0365617a8ec218222d8aaac211e2cbe.jpg,2dd4853e-b40b-43b2-ab98-0934b1fbab74,2dd4853e-b40b-43b2-ab98-0934b1fbab74.jpg,Y +SAMAN,김동진,djkim1@samaneng.com,djkim1,224038.jpg,c6011e5848275b9f346e63e4cff3aad0d78174cd02a7485911e01ffdfa11bb24.jpg,92d5205d-8c47-44e4-8212-c49676e134d8,92d5205d-8c47-44e4-8212-c49676e134d8.jpg,Y +SAMAN,김동철,dckim1@samaneng.com,dckim1,217069.jpg,bc1e60bfec34291310912dae91bf90bfa42afad664c9380dc0920531020c1ab3.jpg,fdc45b04-5388-4a38-9d25-e0a37be08652,fdc45b04-5388-4a38-9d25-e0a37be08652.jpg,Y +SAMAN,김동하,dhkim5@samaneng.com,dhkim5,206192.jpg,4a4fb9583a7e3804064ed6dcc82c1be5c1a95b3c2cd8860410d9079db801e2b9.jpg,bd4592f6-8d39-4a15-a9b7-39a81cb9efea,bd4592f6-8d39-4a15-a9b7-39a81cb9efea.jpg,Y +HANMAC,김동한,dhkim7@hanmaceng.co.kr,dhkim7,M25055.jpg,040b0d63625032a4dd3590f47b26dd9960b0be98fa5f3994e3f8eb797dd16786.jpg,f53a0acc-3593-4744-9628-9152971b3451,f53a0acc-3593-4744-9628-9152971b3451.jpg,Y +SAMAN,김동현,dhkim6@samaneng.com,dhkim6,226108.jpg,db3abe9cabf816ff7e5525b6f28945d84a4f1fa0489181c6b91074389faa344b.jpg,70ae7382-be8b-49f2-a2f3-49f39bf0abb7,70ae7382-be8b-49f2-a2f3-49f39bf0abb7.jpg,Y +SAMAN,김동휘,dhkim2@samaneng.com,dhkim2,225034.jpg,b3d8ded47fd6dea1e93d26465907d8a6a6627e9116f759c60d7f3ce507cbde08.jpg,2c872c69-4909-4d3a-a9a0-c0e23838338c,2c872c69-4909-4d3a-a9a0-c0e23838338c.jpg,Y +SAMAN,김득수,dskim3@samaneng.com,dskim3,221296.jpg,45c679c4acf2bc0438ad9c54ff87e616a6b2a14220869278da5eff7000fc8512.jpg,424dc730-576c-46dd-8f4d-6c999d506070,424dc730-576c-46dd-8f4d-6c999d506070.jpg,Y +SAMAN,김량균,rgkim@brsw.kr,rgkim,217125.jpg,5a58b3056d25cbb16c340cd088eb778b384da26b5ffa639eb2601c66550a1886.jpg,1b723961-67a0-446d-9632-36504132f9d8,1b723961-67a0-446d-9632-36504132f9d8.jpg,Y +SAMAN,김리안,lakim@samaneng.com,lakim,224357.jpg,d7c4f43c7bc0592cc4f4e6f78db1aa1789ee7feeb989b6d6541a53f4912d4516.jpg,96e6b69e-8bcf-48b6-b7c2-97289dc038a3,96e6b69e-8bcf-48b6-b7c2-97289dc038a3.jpg,Y +SAMAN,김만규,mgkim1@samaneng.com,mgkim1,224180.jpg,2111f976400355dc1a1a2895cafba041cf355dd1e4625dd6368026dfd9a35406.jpg,bf1a7c9d-f81b-4cd7-bfd9-7911fe3946e7,bf1a7c9d-f81b-4cd7-bfd9-7911fe3946e7.jpg,Y +SAMAN,김만선,mskim2@samaneng.com,mskim2,214035.jpg,79815e3fce61c1419b1a1e25f3520b8cd9843798a605f4945f8b99c0732f4ee1.jpg,1abcf122-83b9-45f1-a18c-6f49c2995c69,1abcf122-83b9-45f1-a18c-6f49c2995c69.jpg,Y +SAMAN,김명,mkim1@samaneng.com,mkim1,218108.jpg,4bdec206163be7840411743531eecc5481e870543c89cfab5ab030cd78e2f42f.jpg,fee3a2db-9656-469d-bf4d-2dc71bc3cd4a,fee3a2db-9656-469d-bf4d-2dc71bc3cd4a.jpg,Y +SAMAN,김명수,mskim3@samaneng.com,mskim3,199055.jpg,409be68485c139da8dd06513a9a76f5ea5a29fc16de345d89ba8de8aa57ba651.jpg,bab85a19-35d2-4089-ba76-a05d5a6cbf95,bab85a19-35d2-4089-ba76-a05d5a6cbf95.jpg,Y +SAMAN,김명숙,mskim1@samaneng.com,mskim1,025065.jpg,7e987d6616e00f1d0d9e084686d6365c9c7d36283e89eb830f8bcea9e60647bc.jpg,88059b4f-790f-4e61-8191-4e6eb35ebb88,88059b4f-790f-4e61-8191-4e6eb35ebb88.jpg,Y +SAMAN,김명식,mskim@samaneng.com,mskim,219154.jpg,5ce0f24be45de4589b7c57c224bc5a825568bdbfb6eec75cb968e65eadf90537.jpg,451df6c1-21d8-4929-befc-ddfbc6207b9a,451df6c1-21d8-4929-befc-ddfbc6207b9a.jpg,Y +HANMAC,김명식,mskim13@hanmaceng.co.kr,mskim13,M22008.jpg,c738ff47779460e7cb7cd7e7242c75b533bae16a7229eb1ef2e258afa10db89a.jpg,c9eb3971-9e28-4fbd-ba63-5505ec79e42e,c9eb3971-9e28-4fbd-ba63-5505ec79e42e.jpg,Y +SAMAN,김명조,mjkim@samaneng.com,mjkim,224201.jpg,90ea5e9886c287a8df738a79eb8b0994f6c7e8edf46d1f07d1a86ff92e7d6ace.jpg,1e8f9622-03c3-4e2b-aac7-f2fc1990edbd,1e8f9622-03c3-4e2b-aac7-f2fc1990edbd.jpg,Y +SAMAN,김명준,mjkim4@samaneng.com,mjkim4,220046.jpg,ea83adc07e828cbe9c0b609e8b98d9c6fedf8fb9466c255fac8a90d827663982.jpg,04f0e187-4ded-4d80-8247-38cdd5a0dc37,04f0e187-4ded-4d80-8247-38cdd5a0dc37.jpg,Y +SAMAN,김무섭,mskim6@samaneng.com,mskim6,209127.jpg,c83d2e68785673578ff61f533ff7d9b4ce4b1e39ae93b6bffbeacaec4855ef4a.jpg,9a8f8c35-a3a2-455e-9cea-b57e352a89a4,9a8f8c35-a3a2-455e-9cea-b57e352a89a4.jpg,Y +SAMAN,김무언,mukim@samaneng.com,mukim,173002.jpg,f602e7f8da03daf8fbda3dfc859efa2d10ae9c424aa91e1ff6b3d3e9668b1ba3.jpg,9ee3f3bb-d519-4fcf-96a8-4d0c9933b014,9ee3f3bb-d519-4fcf-96a8-4d0c9933b014.jpg,Y +SAMAN,김무영,mykim2@samaneng.com,mykim2,219142.jpg,f9f1b91a3569279e33a7fe7e78d5061134584b8ec549be7b986ec33fa43fa595.jpg,0c9899c6-86f4-430c-a7a2-cf046e807317,0c9899c6-86f4-430c-a7a2-cf046e807317.jpg,Y +SAMAN,김문기,mgkim2@samaneng.com,mgkim2,224189.jpg,7a7a63815fe234259e3ee76b1aafc73510c11b1c53b647c042e72741fa1ddb7d.jpg,34669d42-5cc5-4e0a-9c1e-19f11b3c657d,34669d42-5cc5-4e0a-9c1e-19f11b3c657d.jpg,Y +SAMAN,김문수,mskim12@samaneng.com,mskim12,226115.jpg,f543bac755d4c754292ddf9f25ad180cce67dff7ac75f580efb8d2fe2f799aff.jpg,a5b26213-3460-4c19-84a7-59c37d0e4e7c,a5b26213-3460-4c19-84a7-59c37d0e4e7c.jpg,Y +SAMAN,김미,mkim4@samaneng.com,mkim4,025108.jpg,feebc2f93173e7a8d7d9415ec4e022f7d62e72ee172a9217fd05044a7439acd8.jpg,a34d130e-a796-4853-87b6-a020a3f81373,a34d130e-a796-4853-87b6-a020a3f81373.jpg,Y +SAMAN,김미라,mrkim1@samaneng.com,mrkim1,221208.jpg,f35e4b4ec059aea6abfe6841947f782a6d26afa5f99f253a7206be27f3d51fea.jpg,af00e07f-0344-4cc7-a2e4-662805c331bd,af00e07f-0344-4cc7-a2e4-662805c331bd.jpg,Y +SAMAN,김미리,mrkim2@samaneng.com,mrkim2,224368.jpg,435e58aca592afa61f01f979af34b40462f9783ed9c5c8e15c2254473e5c8081.jpg,19461f72-5307-4318-b7c6-7cb516d3a8de,19461f72-5307-4318-b7c6-7cb516d3a8de.jpg,Y +JANGHEON,김미자,mjkim7@brsw.kr,mjkim7,J10313.jpg,1932130359582a8f1bdec00be01ae7acf34e154b86dab654b6882e3288de0c7f.jpg,15093765-401e-42e2-89fc-c8ad96eb9375,15093765-401e-42e2-89fc-c8ad96eb9375.jpg,Y +SAMAN,김미정,mjkim2@samaneng.com,mjkim2,026055.jpg,f000fc80508731f0b0174be08e4c397a2a2bba7f40668bd92ff0ef73e067ccf2.jpg,57c6ef62-5353-44a1-98cf-ca95b0b0e115,57c6ef62-5353-44a1-98cf-ca95b0b0e115.jpg,Y +SAMAN,김미희,mhkim1@samaneng.com,mhkim1,026031.jpg,c7bd09d7f8394369d6e09cdd510f8996d0aea67a56ef1d218869881f68a86a4f.jpg,fd1b1e43-3281-43fe-bbfe-4e0436823e56,fd1b1e43-3281-43fe-bbfe-4e0436823e56.jpg,Y +SAMAN,김민,mkim@samaneng.com,mkim,216064.jpg,f619a040e788f0e0c3e12042b28ccdbe5eca39449ba5c336824a4ac0b72805ff.jpg,4ac27a91-e09a-4787-91e0-c5b853f52348,4ac27a91-e09a-4787-91e0-c5b853f52348.jpg,Y +SAMAN,김민규,mgkim@samaneng.com,mgkim,223282.jpg,5ec12b8024fed3f3da3bef63957f4ea64d9cb2e685b56be61d30f768c7cdafa2.jpg,35498e30-862b-47dd-9103-c889b95651aa,35498e30-862b-47dd-9103-c889b95651aa.jpg,Y +SAMAN,김민규,mgkim3@samaneng.com,mgkim3,225068.jpg,0cbff3a81cb80b4deb7f2f5999b2826c2ebe6ea867cd4189bb1861d012c2e96e.jpg,a15c8056-2dc7-4e49-b54c-c8666848d331,a15c8056-2dc7-4e49-b54c-c8666848d331.jpg,Y +SAMAN,김민규,mgkim4@samaneng.com,mgkim4,226013.jpg,eea1984c5ebf477b87d0da00dc5c16043370ad3a320ba1f33d02919ac68ad3a9.jpg,d1d09cd7-ce12-4c26-925b-7d449efadaec,d1d09cd7-ce12-4c26-925b-7d449efadaec.jpg,Y +SAMAN,김민석,mskim9@samaneng.com,mskim9,225134.jpg,2c810c6d0c42bd8eaeff7f80bbea99c8a27a1e26c804e63c0c629ec7c4f97814.jpg,26b76793-f703-489b-ac2b-c0e5c6180ade,26b76793-f703-489b-ac2b-c0e5c6180ade.jpg,Y +SAMAN,김민성,mskim7@samaneng.com,mskim7,218002.jpg,03012a24ec6bcca6b9a3c4342583fbe7145b4ae7096b155cc301aa6f9f9dcf1b.jpg,cb0a4004-e846-4507-94c8-4d7b475cd698,cb0a4004-e846-4507-94c8-4d7b475cd698.jpg,Y +SAMAN,김민성,mskim4@samaneng.com,mskim4,218148.jpg,5a2bb1eba332739b266397337c9371380adfa497143a9bcbed5af8f0649f9731.jpg,051d2457-0751-4ed1-849b-878f1f8ee9c8,051d2457-0751-4ed1-849b-878f1f8ee9c8.jpg,Y +SAMAN,김민성,mskim10@samaneng.com,mskim10,226095.jpg,8d7ca9a92682b3010c64fc8220d02433a3e9a560183238236e1a2a628aeebbcc.jpg,c9c44cd8-d520-4892-986a-e948549a71bb,c9c44cd8-d520-4892-986a-e948549a71bb.jpg,Y +SAMAN,김민수,mskim8@samaneng.com,mskim8,223006.jpg,0cb34629029dd51910489594516fecb5eb93977458eac8416728959b922d0e9c.jpg,dd9279bc-a071-4f03-9d71-55f05c759cdb,dd9279bc-a071-4f03-9d71-55f05c759cdb.jpg,Y +SAMAN,김민수,mskim5@samaneng.com,mskim5,224330.jpg,d2eb4e917c4f0062625b2f769b3071515b3026de5df234cbe43971902c9a10c0.jpg,be1dd8aa-ee90-435f-9e58-8b87e76c6b99,be1dd8aa-ee90-435f-9e58-8b87e76c6b99.jpg,Y +SAMAN,김민우,mukim1@samaneng.com,mukim1,223341.jpg,82c21b449d3690ec2be665a172f5eb3b5cabd5325c2f5d16912220b7f45152d3.jpg,1fe79bd3-4719-426b-a15f-4ab9dfecc5b4,1fe79bd3-4719-426b-a15f-4ab9dfecc5b4.jpg,Y +SAMAN,김민우,mwkim@samaneng.com,mwkim,224133.jpg,3aeb4b640e57294e03ee9770d5ac0684e8669f10b76e0252505fddc66b954982.jpg,5049c21d-7d6d-4b7c-b84f-f13b9e43fde6,5049c21d-7d6d-4b7c-b84f-f13b9e43fde6.jpg,Y +SAMAN,김민재,mjkim6@samaneng.com,mjkim6,225169.jpg,3ccdd32ca046d9ecef999702828f688d58cf48ff287ddb2cdc61676fd305f2eb.jpg,f99d46ef-7205-4e7f-9cc4-66314b800212,f99d46ef-7205-4e7f-9cc4-66314b800212.jpg,Y +SAMAN,김민종,mjkim5@samaneng.com,mjkim5,224318.jpg,e0005db121ba97eda1aa7ef2178c1c190c7e598f860c67ac32251561fd0b471a.jpg,82ef7bd4-5692-4f7b-a499-175d53184c08,82ef7bd4-5692-4f7b-a499-175d53184c08.jpg,Y +SAMAN,김민종,mjkim8@samaneng.com,mjkim8,225304.jpg,855d41f3924d800e4d7a02030503d504a1e4350c9e25fce580e898b726964cfb.jpg,35f0b167-b8b0-4d23-9fea-516be7d64352,35f0b167-b8b0-4d23-9fea-516be7d64352.jpg,Y +SAMAN,김민주,mjkim1@samaneng.com,mjkim1,224065.jpg,2a70798561a68969b86653611ba1f2770ed4ad6cc1d85d675fc9306d209c9c83.jpg,46cd0424-7f96-4d15-a852-20f01e70100a,46cd0424-7f96-4d15-a852-20f01e70100a.jpg,Y +PTC,김민준,mjkim9@brsw.kr,mjkim9,P22301.jpg,8af3925f97fd6dcf14969a9b9bf23afda63e1a0d27db0c7d6e7369631e1aa34f.jpg,baec2ec6-11bd-4ecd-ab51-7964c3f2ba56,baec2ec6-11bd-4ecd-ab51-7964c3f2ba56.jpg,Y +SAMAN,김민지,mjkim3@samaneng.com,mjkim3,217046.jpg,bc7e038dcc64a3c47aa45e1857de026a53068de3f16cca6cb52ebc4ead754bb0.jpg,e51f22eb-1b04-4f71-a937-8e5d397b5c0c,e51f22eb-1b04-4f71-a937-8e5d397b5c0c.jpg,Y +SAMAN,김민철,mckim@samaneng.com,mckim,205003.jpg,f4d98fa6ed7729bba2f101dc8dc4a57ebaf30e3eebd29dee2813cbec33c18f8e.jpg,4e96a8fb-1dd7-42da-9077-3e3b3e93808f,4e96a8fb-1dd7-42da-9077-3e3b3e93808f.jpg,Y +SAMAN,김민혜,mhkim@samaneng.com,mhkim,224248.jpg,08eeb846f83ee9176731389d86a8ec83b1a38cf42a159a804ea1e1c51fac5417.jpg,78273549-74d4-4681-ac93-9981c238ec29,78273549-74d4-4681-ac93-9981c238ec29.jpg,Y +SAMAN,김백중,bjkim@samaneng.com,bjkim,202041.jpg,c89da93316a62b0badbe1473e88981c320c6dfbd27aa5a30b8be4bf1fb13b112.jpg,8ff761b2-4cce-4ca8-a2ba-3dc4050e52c5,8ff761b2-4cce-4ca8-a2ba-3dc4050e52c5.jpg,Y +JANGHEON,김범석,bskim7@brsw.kr,bskim7,J22202.jpg,7f5c587819391f52263d3a405c2b4215600d6c13016ec5a2083db63a2a95c259.jpg,412df315-4b72-4299-9acb-b3e5092adbce,412df315-4b72-4299-9acb-b3e5092adbce.jpg,Y +SAMAN,김병국,bkkim1@samaneng.com,bkkim1,217110.jpg,62859048d374361ccc2090e959ab14e08205d9169f186cd174cc0ec868d8cc41.jpg,12e6d350-67bc-4705-8aec-6ae4da691782,12e6d350-67bc-4705-8aec-6ae4da691782.jpg,Y +HANMAC,김병국,bkkim@hanmaceng.co.kr,bkkim,M26003.jpg,9cd2a1dac2c791fe7b9c54b710ebedb769bb991cff68fc874e17eea995df2045.jpg,a3182346-198c-42c7-8ad7-02aeb1599307,a3182346-198c-42c7-8ad7-02aeb1599307.jpg,Y +SAMAN,김병근,bgkim1@samaneng.com,bgkim1,226052.jpg,ddea7907ba92ede764f1a378f5efd790863dbb8cd0bc2fb2ca520058d8b2ea6b.jpg,0142485d-349f-4fc2-b502-5616aac9d190,0142485d-349f-4fc2-b502-5616aac9d190.jpg,Y +SAMAN,김병문,bmkim1@samaneng.com,bmkim1,226094.jpg,1f4eb360f526ece51d9b8da3f5aaa8ac36a3d421180925ffcf2e619b6af030d2.jpg,2b8288be-c25d-4d17-8d89-b7230441f83e,2b8288be-c25d-4d17-8d89-b7230441f83e.jpg,Y +SAMAN,김병수,bskim@samaneng.com,bskim,221329.jpg,ce37f4a38a5d07fe6bf5c25741008c6af308a989c2f7e8eb43f5ba8ef95188ea.jpg,e23e2181-e9aa-46b5-b19c-d9fc61d9c73c,e23e2181-e9aa-46b5-b19c-d9fc61d9c73c.jpg,Y +SAMAN,김병옥,bokim@samaneng.com,bokim,225152.jpg,9d0d605653bf43f93a5a9663649eab820881a419c16fc4c4889ca63669710a77.jpg,fbdab962-0deb-4812-a920-4ac9bd496437,fbdab962-0deb-4812-a920-4ac9bd496437.jpg,Y +SAMAN,김병조,bjkim2@samaneng.com,bjkim2,218128.jpg,923cceb2813f2805854dfee39bd69a0010b08ded94330a554db5e61bf2223a16.jpg,6558bd29-0f2a-4cb4-a578-8a1c50dc1e32,6558bd29-0f2a-4cb4-a578-8a1c50dc1e32.jpg,Y +SAMAN,김병준,bjkim1@samaneng.com,bjkim1,225131.jpg,efc06a9f4765bf7cacaa8a41cf99fb2452ac6b052505092239af0ebb200760dc.jpg,b017bfe4-9bf7-4f30-ab09-23aa5b93ce7c,b017bfe4-9bf7-4f30-ab09-23aa5b93ce7c.jpg,Y +HANMAC,김병찬,bckim2@hanmaceng.co.kr,bckim2,M15408.jpg,8ca885099e766e6235fb4e982d682d563416e3f2b7db5c9d2dd7a65b70e5a9db.jpg,e23b7ac3-aa3b-45a6-a201-a6b08dbf9a71,e23b7ac3-aa3b-45a6-a201-a6b08dbf9a71.jpg,Y +SAMAN,김병철,bckim@samaneng.com,bckim,221064.jpg,21984b3585c25acb3df836e446ef3ba98557570f934f95d450ce6d7d04e5ea2a.jpg,c4d98fef-8cc1-45f3-9a82-2e7c21e9e4cd,c4d98fef-8cc1-45f3-9a82-2e7c21e9e4cd.jpg,Y +SAMAN,김보건,bgkim@samaneng.com,bgkim,225019.jpg,59f756ded845391779bb87a2bfbe1f8603467ff3d2923c8f129b6b2420d620f3.jpg,084f8c6b-28e3-4c89-ac15-22a6089fb634,084f8c6b-28e3-4c89-ac15-22a6089fb634.jpg,Y +SAMAN,김보묵,bmkim@samaneng.com,bmkim,226036.jpg,ce87211c9a4524df5812f83e4a3a1ee945c34fe47eeff3a3d464af1d1ea2e3e9.jpg,4c17cc20-2d9f-4135-a45f-12e25bb4f188,4c17cc20-2d9f-4135-a45f-12e25bb4f188.jpg,Y +SAMAN,김보성,bskim1@samaneng.com,bskim1,215108.jpg,d2e8ea1da6d978c0efed77ea798a08f3d78e3d258c97130e44f0bd6b0940a93e.jpg,e9a6f83d-a6e5-4891-a3c9-51a3e2430c45,e9a6f83d-a6e5-4891-a3c9-51a3e2430c45.jpg,Y +SAMAN,김봉수,bskim3@samaneng.com,bskim3,206020.jpg,5dfaa2287a9175dc6efb0f61b4fc8f5a59a36b526c4924f81d9484252d298145.jpg,4c1b1d9d-089d-455c-950c-7e179ab6a31b,4c1b1d9d-089d-455c-950c-7e179ab6a31b.jpg,Y +SAMAN,김봉식,bskim5@samaneng.com,bskim5,223224.jpg,a34d44f0ea962472994679d76534ce0e82e4dfede48ce21a463b31188378eed2.jpg,3bf6cd28-480a-414e-8aae-62fddc6215ab,3bf6cd28-480a-414e-8aae-62fddc6215ab.jpg,Y +HANMAC,김봉용,bykim@hanmaceng.co.kr,bykim,M21401.jpg,253ea4786aec7770676e475c3798645b82dd46217f61fe1476b0617e815ff176.jpg,3e3485c1-6cbe-45ed-a96e-9722a7a857f9,3e3485c1-6cbe-45ed-a96e-9722a7a857f9.jpg,Y +SAMAN,김봉현,bhkim@samaneng.com,bhkim,222146.jpg,dd5bb8663e06701fe300fd1f717318b29824fa13da83d832434ecdb546f83558.jpg,079ab6a8-0701-4dea-aa36-6a9c98d52873,079ab6a8-0701-4dea-aa36-6a9c98d52873.jpg,Y +SAMAN,김상구,sgkim2@samaneng.com,sgkim2,208127.jpg,4a2a54e63254b57f3f06de5bf3b0a2aa998366bc34508b2a99f4e93727a09ac2.jpg,bcf0ee79-a9b1-4cff-ab64-122587996a45,bcf0ee79-a9b1-4cff-ab64-122587996a45.jpg,Y +SAMAN,김상규,skkim5@samaneng.com,skkim5,220168.jpg,dba8223ada973d11aec01e95e3485675e74371dff3b4e4c6b6ff856d095a05e3.jpg,e8446632-fffd-4cf0-bf72-e3f15e89b353,e8446632-fffd-4cf0-bf72-e3f15e89b353.jpg,Y +SAMAN,김상균,skkim4@samaneng.com,skkim4,208119.jpg,404aece4e3e82af83ce5bf91870e4ed7420babe9765989b607a55ebecd289b9e.jpg,55c337eb-9185-42e4-956e-f7914181a87a,55c337eb-9185-42e4-956e-f7914181a87a.jpg,Y +SAMAN,김상덕,sdkim3@samaneng.com,sdkim3,225222.jpg,262733d26f16ce0150afd7333b81e71c26a46e8dce4048d3398f7008344ac67c.jpg,906d29f1-b69d-4e25-97a4-4606fa871a30,906d29f1-b69d-4e25-97a4-4606fa871a30.jpg,Y +SAMAN,김상돈,sdkim2@samaneng.com,sdkim2,224197.jpg,099005ba1219d03efba8952a07943b8dae20bfacf56ea6cac09270d935c11b7f.jpg,435c2414-7588-4299-b277-a791c00197a3,435c2414-7588-4299-b277-a791c00197a3.jpg,Y +SAMAN,김상동,sdkim1@samaneng.com,sdkim1,220058.jpg,2b88fafc4b178935d0af22728102d018eb87a87826c77ab62670201027b549d9.jpg,6ae4338e-4544-42e6-aaa4-3bd12e492424,6ae4338e-4544-42e6-aaa4-3bd12e492424.jpg,Y +SAMAN,김상범,sbkim@samaneng.com,sbkim,188005.jpg,67004cb5d5a8bffe467cbb3b0cbf4e11de9018d2235079be44934d8aba5e5544.jpg,2d810060-63f8-47c3-a81c-0ca267bcb499,2d810060-63f8-47c3-a81c-0ca267bcb499.jpg,Y +SAMAN,김상성,sskim2@samaneng.com,sskim2,226033.jpg,a1ca87ace53a1d10490baceefb9d1304112e953bc477afe0d044d3b76a1c1aed.jpg,6dc870b4-effc-4eb5-ae0c-1338527ec7c2,6dc870b4-effc-4eb5-ae0c-1338527ec7c2.jpg,Y +SAMAN,김상수,sskim@samaneng.com,sskim,225174.jpg,69ac0a9775e2246fc6244e4a2023962a1fcfbd8b6493aab95654a6329df20123.jpg,052ffa06-13ac-4525-9748-c3efcb271173,052ffa06-13ac-4525-9748-c3efcb271173.jpg,Y +HANMAC,김상수,sskim6@hanmaceng.co.kr,sskim6,M12203.jpg,7617ce71c9aafce04b15f7b12a065b02bd14fd5e6e62519b98c0122e95a16d6c.jpg,3bc02444-8f4f-415b-9bc6-e9958b6f0ae8,3bc02444-8f4f-415b-9bc6-e9958b6f0ae8.jpg,Y +SAMAN,김상용,sykim4@samaneng.com,sykim4,220160.jpg,a4be68d4ca2a685a6db428890b3ff60b4d2f354b4e43e35b4b2b77936bce8372.jpg,ec06140e-5a1e-4af3-a85e-cb126cb39ebd,ec06140e-5a1e-4af3-a85e-cb126cb39ebd.jpg,Y +SAMAN,김상용,sykim1@samaneng.com,sykim1,221157.jpg,ff0c26d719ad416817719ff5440d94320ba0eec5cb258b20449f83aab06f8b75.jpg,8c1d4b4b-6a38-4a17-b2c4-fd0f44414d89,8c1d4b4b-6a38-4a17-b2c4-fd0f44414d89.jpg,Y +HANMAC,김상욱,swkim3@brsw.kr,swkim3,P11202.jpg,eff6dccf5fdd9a731913fba516bd7aa7fd9b82dda5352d027e5279d8b85ad0fe.jpg,5bea496b-d5a5-42ed-b3ad-7f983c9617bc,5bea496b-d5a5-42ed-b3ad-7f983c9617bc.jpg,Y +SAMAN,김상종,sjkim@samaneng.com,sjkim,216022.jpg,2fd8b666b00e5e755a79c4f561bc145f2fae914f53f879da70af949b42c75f1b.jpg,668dd3f9-a8ea-4ecf-b47f-cabeaafda615,668dd3f9-a8ea-4ecf-b47f-cabeaafda615.jpg,Y +SAMAN,김상철,sckim3@samaneng.com,sckim3,218153.jpg,17054501713b232f8d6e1ddcc9aa000613cfc4a085b13909ebe2fb5a83ca92ef.jpg,6dedc3d6-d7f6-434a-9fa1-de34b5cac0d5,6dedc3d6-d7f6-434a-9fa1-de34b5cac0d5.jpg,Y +JANGHEON,김상철,sckim5@brsw.kr,sckim5,J22302.jpg,7b39888f5c5cbfab1f83affad2db67f1fa51b6b446dccc4731e2fe27db9217a7.jpg,a25e162b-2004-4e9a-95d5-60b7239c315f,a25e162b-2004-4e9a-95d5-60b7239c315f.jpg,Y +SAMAN,김상현,shkim@samaneng.com,shkim,216118.jpg,c874a688c7560d83730689e5b8a717c639fdc7dd70cf68f7ec01679b65bee7a8.jpg,82cce1f8-c3ff-4f66-9536-ada44706b045,82cce1f8-c3ff-4f66-9536-ada44706b045.jpg,Y +SAMAN,김상현,shkim3@samaneng.com,shkim3,025029.jpg,84065a5bb988caa77b3598d56687cd3f9229d6f5a91906ed21ead50267f865da.jpg,72d847ce-f6f6-498a-81ff-7ca26ba8b88b,72d847ce-f6f6-498a-81ff-7ca26ba8b88b.jpg,Y +SAMAN,김서현,shkim10@samaneng.com,shkim10,024115.jpg,3a418c10ef5994737548bb2c86e327e434e349b6fd6e7127a4e346d048fb23f0.jpg,a2c9c7ba-674f-4fc9-b9cc-d0abb9029556,a2c9c7ba-674f-4fc9-b9cc-d0abb9029556.jpg,Y +SAMAN,김석규,skkim2@samaneng.com,skkim2,221303.jpg,2d47f3917d279645e72ef4bd112402be2cdf1734baaa360bc53504cc55eeb13e.jpg,560e76f6-dc24-49ef-8969-87e6f2067f07,560e76f6-dc24-49ef-8969-87e6f2067f07.jpg,Y +SAMAN,김석근,sgkim5@samaneng.com,sgkim5,225300.jpg,3bdd92860cb29eb3fd05016330da434694e2b11772040ae17f63ca8115c6e531.jpg,250829e7-74df-452d-8b02-7db7f65313a5,250829e7-74df-452d-8b02-7db7f65313a5.jpg,Y +HANMAC,김석동,sdkim5@hanmaceng.co.kr,sdkim5,M25023.jpg,f8b918ecb51b0bfc44ee7863cfae90d1b9a9df444c60721666376efaf00c7ac1.jpg,42028630-d3e9-419c-9cf7-6fa550ad3fa2,42028630-d3e9-419c-9cf7-6fa550ad3fa2.jpg,Y +SAMAN,김석조,sjkim8@samaneng.com,sjkim8,225303.jpg,d08640b5b9dd7f3c695b82079fa33a27dccba561910b7e8cc25ad0464d30dc9d.jpg,e98fa6b9-250f-49b8-985e-e50b9272cf50,e98fa6b9-250f-49b8-985e-e50b9272cf50.jpg,Y +SAMAN,김석진,sjkim5@samaneng.com,sjkim5,223343.jpg,4a7a8de2db4c285aa0c16d888619ec3acb67e374054c0c09a088fc0849ba10b2.jpg,adcae4ac-d084-41f3-bcb9-5944ad1fa0c8,adcae4ac-d084-41f3-bcb9-5944ad1fa0c8.jpg,Y +SAMAN,김선구,sgkim4@samaneng.com,sgkim4,225081.jpg,11be88567190f1e7799c75b60665413cebd59d1aabdc280f33cd43e3c448943f.jpg,dc359269-9ccd-4fea-a8d8-66fe467d87fb,dc359269-9ccd-4fea-a8d8-66fe467d87fb.jpg,Y +SAMAN,김선근,skkim8@samaneng.com,skkim8,225132.jpg,62067b07a4238e39a5151792f5490c371c30f419475a2cc633ef7088c7895028.jpg,94106b9a-2add-4a33-9913-fc1b7bd671ae,94106b9a-2add-4a33-9913-fc1b7bd671ae.jpg,Y +SAMAN,김선녕,snkim@samaneng.com,snkim,225310.jpg,a99b30302884701af568e0a3bbab950f17332ef7dabcf701455a3d868292f866.jpg,f85ec796-4b4d-4650-83c6-b3daa9e787ca,f85ec796-4b4d-4650-83c6-b3daa9e787ca.jpg,Y +SAMAN,김선배,sbkim2@samaneng.com,sbkim2,225345.jpg,ce42b9d7d3e563a27d88291111aa7f90ad9c3bbeaf6a87ea8646cadd05fa6158.jpg,8b48c760-b1d2-4019-b4c8-2ff58d3b3270,8b48c760-b1d2-4019-b4c8-2ff58d3b3270.jpg,Y +SAMAN,김선범,sbkim6@samaneng.com,sbkim6,225243.jpg,285e880b2212ff1aadd040d3b2bf3c694ef86d4a513be7aae919a86128ae51d7.jpg,a969fd78-d54f-4d2e-b698-230d1873184e,a969fd78-d54f-4d2e-b698-230d1873184e.jpg,Y +SAMAN,김선자,sjkim3@samaneng.com,sjkim3,025059.jpg,046c3fbd749b6a0d6b0346ef4a8d6960463011d751df3c99e7db3a2cffbc29e3.jpg,cbbc843a-1bc3-464b-a14d-6a181b0bd806,cbbc843a-1bc3-464b-a14d-6a181b0bd806.jpg,Y +SAMAN,김선택,stkim2@samaneng.com,stkim2,219124.jpg,e518f2956c905dd761e325ad6c6eedd2fdfea3cdf175e4aca825205e29e5c8cf.jpg,4bd881eb-1260-4161-959c-658cb62c6231,4bd881eb-1260-4161-959c-658cb62c6231.jpg,Y +SAMAN,김선환,shkim9@samaneng.com,shkim9,223273.jpg,c20a080e8b76c03ef918d5bbfa4528ad4040dc436145847e566db606170e5c5d.jpg,ad6845d7-931b-4df8-8a3d-420f51629836,ad6845d7-931b-4df8-8a3d-420f51629836.jpg,Y +SAMAN,김성광,skkim6@samaneng.com,skkim6,223044.jpg,eeff74ba67503fe6a7ff0d5428b133ad4ff2e9896deefe95b51363ec095eb0ec.jpg,56703eaf-6d6f-486a-bbeb-6fd6ad1e0a47,56703eaf-6d6f-486a-bbeb-6fd6ad1e0a47.jpg,Y +PTC,김성규,skkim1@brsw.kr,skkim1,P09306.jpg,baa7bc2393036885f6b740c0522323555ec30e6526b27df530ce71a92fa8ed23.jpg,2308b7a1-14fd-49f5-b4cc-6ad42b05db3c,2308b7a1-14fd-49f5-b4cc-6ad42b05db3c.jpg,Y +SAMAN,김성규A,sgkim1@samaneng.com,sgkim1,218163.jpg,a4d92b9cce9febd4c17de9ddd147600008298d41d05090a23a8ff76542b2f570.jpg,603e80e2-e505-48c4-8ff5-8c91238717da,603e80e2-e505-48c4-8ff5-8c91238717da.jpg,Y +SAMAN,김성규B,sgkim3@samaneng.com,sgkim3,220082.jpg,5b861a3c1a080b7174e4ae40b0dcf16ea4c7fc0cb092741a44eab55f9cbeb2b8.jpg,ce043f57-5caa-465d-b2b5-21f906d5bd86,ce043f57-5caa-465d-b2b5-21f906d5bd86.jpg,Y +SAMAN,김성덕,sdkim@samaneng.com,sdkim,199115.jpg,12d20320c2eb44396b8df48f9473c4e4eb3c401dd257c8ea3de62c835b11823f.jpg,9a00eaca-fefe-4327-89af-3bc49bed4e24,9a00eaca-fefe-4327-89af-3bc49bed4e24.jpg,Y +HANMAC,김성도,sdkim4@hanmaceng.co.kr,sdkim4,M21439.jpg,b59f88abeeb4e7fab0ace5da74b50ff9f0a657510fd63ede39a0e776f2f5c27e.jpg,f720bbce-a3c9-44f7-8af3-60f88cdd9a13,f720bbce-a3c9-44f7-8af3-60f88cdd9a13.jpg,Y +SAMAN,김성룡,srkim1@samaneng.com,srkim1,216074.jpg,a04e7ea51dbf54b24c75c125af2b451b2b3bb1257302ae5b11c07bb65b1a0ab8.jpg,d931989d-5745-4521-aa5c-9f20a4c5209d,d931989d-5745-4521-aa5c-9f20a4c5209d.jpg,Y +SAMAN,김성민,smkim2@samaneng.com,smkim2,224006.jpg,36c54ebfade74efd2413de41e74c971ea659bfeed01b6caf67f9797233672c23.jpg,19a0b6f5-4b18-47e0-9dc8-decc32226d57,19a0b6f5-4b18-47e0-9dc8-decc32226d57.jpg,Y +SAMAN,김성배,sbkim5@samaneng.com,sbkim5,223237.jpg,f1e70e549c19a2b42d5906151078bb8f795a2505c066f9f48572af27252f0bef.jpg,52827a9c-8060-47ef-80ee-cbca734c86ce,52827a9c-8060-47ef-80ee-cbca734c86ce.jpg,Y +SAMAN,김성수,sskim1@samaneng.com,sskim1,225337.jpg,bff8ebcf416fd9b90a36c809be0a0c5ed82c5e8bfbbf08bfa357f5fbbf12ae56.jpg,0e53f70d-67ce-43a4-82f3-932b1b5e6588,0e53f70d-67ce-43a4-82f3-932b1b5e6588.jpg,Y +HANMAC,김성수,sskim7@hanmaceng.co.kr,sskim7,M12204.jpg,f0067c7f53d608ddaab9f5b69b3d83908e3697515736227fd74f255578f0aac7.jpg,5adecfef-c91f-4305-b6a2-55aba4540682,5adecfef-c91f-4305-b6a2-55aba4540682.jpg,Y +SAMAN,김성식,sskim5@samaneng.com,sskim5,213036.jpg,c95233f9d727ae4679dcb39e8dc48dcc8e34f9a8ad3912a27efd3650ad0c5b1d.jpg,5992c6c7-096c-4aea-b105-a59b4eebcd10,5992c6c7-096c-4aea-b105-a59b4eebcd10.jpg,Y +SAMAN,김성엽,sykim3@samaneng.com,sykim3,225110.jpg,de22d4aa16231de75569e742113b9f7e9b95bc23fb9cc97a682c01b2d1ec8535.jpg,3c42129b-86ff-4bc9-8879-603d3c936e33,3c42129b-86ff-4bc9-8879-603d3c936e33.jpg,Y +SAMAN,김성욱,sukim@samaneng.com,sukim,211047.jpg,062d34bf5c8eb4a0d5bb2865b78b7786dae48f409a89dafe96fa77d2d4b394b3.jpg,fab32256-f70e-4513-a15f-78b8d37ee1c6,fab32256-f70e-4513-a15f-78b8d37ee1c6.jpg,Y +SAMAN,김성욱,swkim2@samaneng.com,swkim2,226110.jpg,167c1212403a6ae9f32b3aa25d44cef563d01ff3e5685c3ffb564eb53fbc021e.jpg,51eff138-57ed-4c2f-9faf-da4983b9e30f,51eff138-57ed-4c2f-9faf-da4983b9e30f.jpg,Y +SAMAN,김성웅,swkim@samaneng.com,swkim,210114.jpg,1cfec5de44e2f8f331c8e1c3fd45ab5abdb25b7506951240085e628b426ad106.jpg,ab90b79d-9057-41c3-8943-eec5f5fced62,ab90b79d-9057-41c3-8943-eec5f5fced62.jpg,Y +SAMAN,김성원,swkim1@samaneng.com,swkim1,221284.jpg,f47c50d835be043200d075cf986fd66312c463eec3477f7e270a07630cb0c930.jpg,62db0f38-e4b0-4984-b5e3-554054ade757,62db0f38-e4b0-4984-b5e3-554054ade757.jpg,Y +JANGHEON,김성원,swkim5@brsw.kr,swkim5,J17205.jpg,eedf59ecb4768746133dab9aaf4507f90fb1b58a5b6c699c984fa020329d8d57.jpg,a3e6632a-8ef5-4bc0-9319-43a6c39d0f3b,a3e6632a-8ef5-4bc0-9319-43a6c39d0f3b.jpg,Y +HANMAC,김성주,sjkim10@hanmaceng.co.kr,sjkim10,M23055.jpg,72cd13398e44246f0b08391927cb08fcf7a6764d06dedeeef5891416d3ce8af6.jpg,23096609-48ed-488d-be16-7195f60076a7,23096609-48ed-488d-be16-7195f60076a7.jpg,Y +SAMAN,김성중,sjkim4@samaneng.com,sjkim4,223277.jpg,c6e43c0f4fffd93c7238e43c9ad408839ff1b80bbd86e57748b04f54327a1771.jpg,bf562084-c884-4e0a-bce2-61799093f158,bf562084-c884-4e0a-bce2-61799093f158.jpg,Y +SAMAN,김성직,sjkim7@samaneng.com,sjkim7,225245.jpg,67bff0ae7d63b8e66b97fd170c014e3a10d3131ad8b27839bbadfeb197028ace.jpg,7ada524f-a736-4fae-adc5-2a7a8592748c,7ada524f-a736-4fae-adc5-2a7a8592748c.jpg,Y +SAMAN,김성진,sjkim2@samaneng.com,sjkim2,225007.jpg,0898a88386b0c2543bd17a6acbd745b54d93fa2624ea05f429d7a30ad09d7bc9.jpg,e6c4f141-9dcc-40c6-a9b4-295f57dad3d3,e6c4f141-9dcc-40c6-a9b4-295f57dad3d3.jpg,Y +SAMAN,김성철,sckim@samaneng.com,sckim,188003.jpg,5f06ace86d5cb4b1e36480fefa9e12459db880779888bc49f3df0d63428d8df0.jpg,22d3283e-8c3a-4448-b783-5608f89657f6,22d3283e-8c3a-4448-b783-5608f89657f6.jpg,Y +SAMAN,김성철,sckim1@samaneng.com,sckim1,225124.jpg,17e55bb35566ababaf95b458ed8d437f32475776741f4f21f58f5d85bb32f0ee.jpg,88e768e6-6022-49ef-b142-4cfbdde5ecc3,88e768e6-6022-49ef-b142-4cfbdde5ecc3.jpg,Y +SAMAN,김성택,stkim@samaneng.com,stkim,201080.jpg,8af6aec7a5d0cd0baddc32f081d5173db0fb40d79053a40da26672d7e24cef25.jpg,8959c919-44b1-47c1-ace8-46881c192d66,8959c919-44b1-47c1-ace8-46881c192d66.jpg,Y +SAMAN,김성호,shkim2@samaneng.com,shkim2,221090.jpg,3bba806ec57fe4f2049c846bf78616fcbfedc959943b61806b3dfc5ff06b2b74.jpg,6321a2b6-70bb-4a2d-9380-d330b77355ea,6321a2b6-70bb-4a2d-9380-d330b77355ea.jpg,Y +SAMAN,김성환,shkim11@samaneng.com,shkim11,223354.jpg,636784fdafb7ead2477c9749e2560eefbf838b8ca95e93cec58b88933a068442.jpg,6470a4ab-63ac-4731-8257-e87f3e31eceb,6470a4ab-63ac-4731-8257-e87f3e31eceb.jpg,Y +JANGHEON,김성환,shkim7@brsw.kr,shkim7,J25301.jpg,a0e4c980c6174a6ad26d40b1cbfd433200d9b900bc964df6e34635bb1b8daf24.jpg,5f1ee748-290c-4be5-916d-0f9c7ac4ccc1,5f1ee748-290c-4be5-916d-0f9c7ac4ccc1.jpg,Y +SAMAN,김세경,skkim@samaneng.com,skkim,218021.jpg,48aa442e3fea2be32be71708f4010ac1807a233a2e94e127a0730de780c8d4ce.jpg,3e982ac2-bc41-415b-b7a6-b8127a83ee01,3e982ac2-bc41-415b-b7a6-b8127a83ee01.jpg,Y +HANMAC,김세열,sykim5@brsw.kr,sykim5,J15306.jpg,9088b28682aa2bc7cac7909979b3fb5562a2058af9d4c9a1dd7c61751b35f390.jpg,64df21d8-b134-4d6d-873b-a0a4c8d27585,64df21d8-b134-4d6d-873b-a0a4c8d27585.jpg,Y +SAMAN,김세은,sekim@samaneng.com,sekim,226051.jpg,fbf51e465eaaa781c6b4701c81faf77f3b408056bb909ed735098664474399c7.jpg,a3848201-b771-423b-b2c6-0d898bef08df,a3848201-b771-423b-b2c6-0d898bef08df.jpg,Y +SAMAN,김세환,kimsh@samaneng.com,kimsh,222222.jpg,268a37bad076f24c408429ecd2e1f646f0e9111ee7e14190dd844bfba76ebae0.jpg,0b3e4b11-3304-4b42-8b84-fd7e41142bb7,0b3e4b11-3304-4b42-8b84-fd7e41142bb7.jpg,Y +SAMAN,김소희,shkim12@samaneng.com,shkim12,224380.jpg,c73d7eac85b45a973407ed81fb6253dfc5004dc36c230659f479e614f9d95453.jpg,31de96c6-2765-489e-ba7b-f4461bb3fec3,31de96c6-2765-489e-ba7b-f4461bb3fec3.jpg,Y +PTC,김송은,sekim2@brsw.kr,sekim2,P19303.jpg,90e3a40192ecfe434c820e322f98ff4fa2399b19b243003235abdc8abf43ce5b.jpg,ad2858c9-1e0b-4be9-983e-504910286da8,ad2858c9-1e0b-4be9-983e-504910286da8.jpg,Y +SAMAN,김수정,sjkim9@samaneng.com,sjkim9,025128.jpg,f6f5de1c312e2a1a4fb00c29b83aa93c13255c5fac0a66919c8b5aa99e9c8794.jpg,ff45770b-b184-4c8e-b918-bfbdb9056fca,ff45770b-b184-4c8e-b918-bfbdb9056fca.jpg,Y +SAMAN,김수현,shkim4@samaneng.com,shkim4,225215.jpg,f4e7d9855fe7355f61799ed2696ba243f05c55bc0747df493ec78b69ca4fd369.jpg,e7f698ed-b6ae-41f7-8df3-c11397a7a0f5,e7f698ed-b6ae-41f7-8df3-c11397a7a0f5.jpg,Y +SAMAN,김순배,sbkim1@samaneng.com,sbkim1,220240.jpg,cf44cc2401c277c4c4e074fad6b1e4372a2a13e2a266b924ac6ab88f1ed8bcb8.jpg,40f32a37-22ea-497d-8a2c-ddce3d086cf7,40f32a37-22ea-497d-8a2c-ddce3d086cf7.jpg,Y +SAMAN,김순화,shkim1@samaneng.com,shkim1,024093.jpg,af1a0ab6a94186a312b9a7b07def00de4c1677b394ba0548839da91ba5af42ce.jpg,e3897f91-8552-46f9-b344-17d2bf3ee72a,e3897f91-8552-46f9-b344-17d2bf3ee72a.jpg,Y +SAMAN,김승구,sgkim@samaneng.com,sgkim,216109.jpg,fa5bb6528beca10afade4691452e06966e56c541efd32f7c2d2c55b9e3ed1fd0.jpg,5ebdc3e5-5ef6-460e-a884-073ba8476199,5ebdc3e5-5ef6-460e-a884-073ba8476199.jpg,Y +HANMAC,김승국,sgkim6@brsw.kr,sgkim6,M02302.jpg,40d64b58a9bfb2130c30afdd4634651c2e2969202bc212b19f50a38343809ee8.jpg,3c7a3b07-8257-4b0d-b6be-a7a589d668a6,3c7a3b07-8257-4b0d-b6be-a7a589d668a6.jpg,Y +SAMAN,김승범,sbkim4@samaneng.com,sbkim4,216024.jpg,340747f0441849e5d9c3dbfa92c6b9c271a0434670216d6dea5f4c131337e10d.jpg,3691c6b6-e1b8-44e0-b867-30a977b3512e,3691c6b6-e1b8-44e0-b867-30a977b3512e.jpg,Y +SAMAN,김승일,sikim@hanmaceng.co.kr,sikim,218052.jpg,01446e617cde35bba98df5e00d6a6e75306afe329c2da4affbcb8afa9dd9bdb7.jpg,8b9eaa9b-9807-4635-804e-15bd23d017a7,8b9eaa9b-9807-4635-804e-15bd23d017a7.jpg,Y +SAMAN,김승준,sjkim1@samaneng.com,sjkim1,224029.jpg,46165953f038b2f76943b8d4611be0a7bbbf6451e77410e579f78d30514f76ac.jpg,ca9c4920-6760-4881-82f1-a432e88b819b,ca9c4920-6760-4881-82f1-a432e88b819b.jpg,Y +HANMAC,김승호,shkim13@hanmaceng.co.kr,shkim13,M02248.jpg,550acbdd846546819106777e5439a4a66b5eaf8a003639f03965feaa8cde35f3.jpg,3f5a7415-7604-4049-a94b-5c444f4d8cef,3f5a7415-7604-4049-a94b-5c444f4d8cef.jpg,Y +SAMAN,김승화,shkim6@samaneng.com,shkim6,022105.jpg,50989382eff59924330c39a0144742660a87907301d31dce7e317cb121b885f6.jpg,e3eb40ea-8454-40b3-8fdd-a15369e28e26,e3eb40ea-8454-40b3-8fdd-a15369e28e26.jpg,Y +SAMAN,김시복,sbkim3@samaneng.com,sbkim3,195092.jpg,3d19a5c97abc00984a13a279c3771796f89809a8d4dfea420000c16cebf624ab.jpg,77eb5487-231e-4d58-b5d3-a245412b415d,77eb5487-231e-4d58-b5d3-a245412b415d.jpg,Y +SAMAN,김신교,skkim3@samaneng.com,skkim3,220051.jpg,33a8c736bb16a2da73eafe6ea8e9b7365e2e3e2acd3c9aace6cbe1276cb84222.jpg,fcd95d8d-f424-4e76-8324-bef1861f37db,fcd95d8d-f424-4e76-8324-bef1861f37db.jpg,Y +SAMAN,김신지,sjkim6@samaneng.com,sjkim6,223361.jpg,1463e5d19894a38f84c8fea8a8435148462e69bb5a7455a75f1f1ce9911c1252.jpg,21486871-97ad-4630-9a2d-681d565c60c1,21486871-97ad-4630-9a2d-681d565c60c1.jpg,Y +SAMAN,김신혁,shkim5@samaneng.com,shkim5,221318.jpg,cc4ce3d73224d02fa3b43cc5005162de844b8e6efb78af2aece0f29e5a7499ab.jpg,3300289d-4d23-4c7b-aa34-2dc8c73b902b,3300289d-4d23-4c7b-aa34-2dc8c73b902b.jpg,Y +SAMAN,김아람,arkim@samaneng.com,arkim,026051.jpg,41a72a627b51b88b60a7531ee8c99d74f2ab9c063eb1b72e5bd0db61fc7496ef.jpg,2927371a-6c99-405a-9d17-c6828731c904,2927371a-6c99-405a-9d17-c6828731c904.jpg,Y +SAMAN,김아연,aykim@samaneng.com,aykim,215059.jpg,e71371df6d10703ddd69e61e870c42eba4353757385f6a9f730bd83a80fc4f07.jpg,5efe162a-3254-4e16-87ab-0ceb004acab0,5efe162a-3254-4e16-87ab-0ceb004acab0.jpg,Y +SAMAN,김아연,aykim1@samaneng.com,aykim1,225047.jpg,eae61b94cde3b090c84a7c8e1db7895fb75e48bf12c93e78c38a788a0f3cd87e.jpg,16ae66e0-c2ee-4a01-afda-c7326bdf8b8e,16ae66e0-c2ee-4a01-afda-c7326bdf8b8e.jpg,Y +HANMAC,김양국,ygkim3@hanmaceng.co.kr,ygkim3,M16503.jpg,7dbecb97c4c8ef9943d882ac09d4c275d9dbfbfd50c2cc596748576248284369.jpg,4018ebb3-2206-4c65-a090-17cc590003bb,4018ebb3-2206-4c65-a090-17cc590003bb.jpg,Y +HANMAC,김양석,yskim11@hanmaceng.co.kr,yskim11,M11502.jpg,8460c5586c8a5fb43c79331f3120d110beca47a8e48f15cfbf8b8e93f15bb3b8.jpg,ab932615-3059-422d-b3d4-b9136df8984b,ab932615-3059-422d-b3d4-b9136df8984b.jpg,Y +SAMAN,김연겸,ykkim@samaneng.com,ykkim,225318.jpg,81244b94a7e2713dfa9e87ede685f35345e953255d56d230823a0f7597721ec4.jpg,f9b23dee-ee12-46b2-a56d-562d05b8796c,f9b23dee-ee12-46b2-a56d-562d05b8796c.jpg,Y +SAMAN,김연석,yskim5@samaneng.com,yskim5,224039.jpg,d2f060b03e4ac9250954fc963415376417d5f3220ed782d30fd8ad2d5a9bdc00.jpg,0ad2f30f-47dd-4201-bdb1-2942038a4613,0ad2f30f-47dd-4201-bdb1-2942038a4613.jpg,Y +SAMAN,김열규,ygkim@samaneng.com,ygkim,215015.jpg,399fa6b62f16fc04e44cdba128a8087d32cec17c7db3dacb183994a97de065c1.jpg,4eac89f4-8648-48b5-ad14-de1197709bd5,4eac89f4-8648-48b5-ad14-de1197709bd5.jpg,Y +HANMAC,김영권,kkimyk@hanmaceng.co.kr,kkimyk,M02259.jpg,72d4661ce7a322b205cde9c80d844ff5f89536f8195c2f353d6a5effc65b403d.jpg,b88f7551-19a9-44a1-9226-28167f5c3e07,b88f7551-19a9-44a1-9226-28167f5c3e07.jpg,Y +SAMAN,김영기,ykkim2@samaneng.com,ykkim2,190009.jpg,ef4d800b31362482b4d99f88d5226132772f92e67a1d1270029360504937d3c4.jpg,83fbc272-70d5-4c22-9dcf-a1b91d5817f3,83fbc272-70d5-4c22-9dcf-a1b91d5817f3.jpg,Y +SAMAN,김영목,ymkim7@samaneng.com,ymkim7,223087.jpg,50770dee8074eff9b6a7cd987677204ab9cb7f36f58b470bd0f79f56f798e67d.jpg,00ce7392-10e9-4b7f-be15-4e8444990c29,00ce7392-10e9-4b7f-be15-4e8444990c29.jpg,Y +SAMAN,김영민,ymkim3@samaneng.com,ymkim3,222199.jpg,0d1368c0b32a0ee2e91010403af2b8b6086102d5c9eb7c8201bd9b697ec97cf7.jpg,dca763a9-254d-4453-9bfb-580685c9328c,dca763a9-254d-4453-9bfb-580685c9328c.jpg,Y +SAMAN,김영민,ymkim1@samaneng.com,ymkim1,223390.jpg,5018f04e94e4a1568d3836d697a2a9c0872f9ccab7c0b5a3b3f05123f736c653.jpg,58346e9f-bd2a-42bf-94bb-25376e095fbe,58346e9f-bd2a-42bf-94bb-25376e095fbe.jpg,Y +HANMAC,김영배,ybkim1@brsw.kr,ybkim1,B20327.jpg,d3b9882f897b10119b5150f060eb2d1dc763dc8de1b6131d2c5430a4de6b5fa5.jpg,07eec688-3f60-4f05-bc72-7a632ced8877,07eec688-3f60-4f05-bc72-7a632ced8877.jpg,Y +SAMAN,김영석,yskim6@samaneng.com,yskim6,225021.jpg,26253a2fdbf07a54ff3aafba172fe09dfa35ab61b13c17bf27dfcba45987be4b.jpg,e8ef8e78-ad81-4e8c-ba01-d82700a48b10,e8ef8e78-ad81-4e8c-ba01-d82700a48b10.jpg,Y +SAMAN,김영석,yskim8@samaneng.com,yskim8,225126.jpg,9de669fb42de57520351aaa01bd8c79cfcebdb0a6a1870a57d1a30d4e7d7c635.jpg,b519543e-f63a-4832-9a2f-9c67e9872372,b519543e-f63a-4832-9a2f-9c67e9872372.jpg,Y +SAMAN,김영수,yskim@samaneng.com,yskim,216072.jpg,ebc70f0659ccc92bbabb0ff8d8d22781f573e82fbad11e0ee005830800ec614d.jpg,8a648143-a005-4a4e-afc7-a27b1e2090be,8a648143-a005-4a4e-afc7-a27b1e2090be.jpg,Y +SAMAN,김영신,yskim9@samaneng.com,yskim9,025110.jpg,d33b3ad68a5d84d8394d5bcb7d1628ba8578f1fb4ab2568df44e807d2c073841.jpg,b79d6b78-ab55-4a25-84ba-8c50469a88cf,b79d6b78-ab55-4a25-84ba-8c50469a88cf.jpg,Y +SAMAN,김영욱,ywkim1@samaneng.com,ywkim1,226045.jpg,2d6ba600e67fdce069455dadfab6f9b71366a871d39837e7f8f4e95888e2d44b.jpg,55625b94-e433-4d8d-b2b5-0e50948cb8a2,55625b94-e433-4d8d-b2b5-0e50948cb8a2.jpg,Y +SAMAN,김영운,ywkim@samaneng.com,ywkim,223142.jpg,ab42fae80a4f32ee029498345f816978a0c0bb311b6ffaecb6ba74e6f8746bbf.jpg,957484e5-d29d-4bf5-83bf-d302d17c6da2,957484e5-d29d-4bf5-83bf-d302d17c6da2.jpg,Y +SAMAN,김영은,yekim1@samaneng.com,yekim1,026061.jpg,0fdf11ffa28d58c61e29cf0a1024d3fa60671fa67269b9a32d142668333420f4.jpg,d011abac-795f-48d7-950f-ed1aa723b546,d011abac-795f-48d7-950f-ed1aa723b546.jpg,Y +SAMAN,김영임,yikim@samaneng.com,yikim,024015.jpg,cff54d93781dd329f4863910b75661dcdd260556f8180d976bf7c4e783056a7d.jpg,4a7d2eb9-ad01-4810-92f2-21985d30e40b,4a7d2eb9-ad01-4810-92f2-21985d30e40b.jpg,Y +SAMAN,김영준,yjkim2@samaneng.com,yjkim2,221269.jpg,c7de3fa3abbf296211d806fa6db0192e19c797984f65b31d61c0d6c3cc81c591.jpg,b9035c48-ee4e-4ca4-ae39-1122ae2c7817,b9035c48-ee4e-4ca4-ae39-1122ae2c7817.jpg,Y +SAMAN,김영준,yjkim6@samaneng.com,yjkim6,224247.jpg,87554eadff060f1d356bd452136b8210a0e86c02146854ce13f4095abe240c64.jpg,de52a2e6-4e5b-4cd6-ad63-fcfd75ddf9e9,de52a2e6-4e5b-4cd6-ad63-fcfd75ddf9e9.jpg,Y +SAMAN,김영진,yjkim5@samaneng.com,yjkim5,216140.jpg,bdac805b6c4c2f8463c886660757aea9d945a1b89c3491be5094e9fb29469f67.jpg,92ee1c0a-6975-467a-a025-b5677b2a62a5,92ee1c0a-6975-467a-a025-b5677b2a62a5.jpg,Y +SAMAN,김영진,yjkim24@samaneng.com,yjkim24,224206.jpg,9735edf8b69d1f49f0987e4bf4c5125be7a88c4de44f6f91bf81b8f9fb28d49b.jpg,7f47cbb5-867a-49ea-b7eb-511c21b3064d,7f47cbb5-867a-49ea-b7eb-511c21b3064d.jpg,Y +SAMAN,김영호,yhkim5@samaneng.com,yhkim5,222038.jpg,50a4c73c67f91579806009ab9aea7664963e5cf6da7032fa86d0270c373d9a54.jpg,93250b72-0339-470e-96b5-f042f4282dd9,93250b72-0339-470e-96b5-f042f4282dd9.jpg,Y +SAMAN,김예빈,ybkim@samaneng.com,ybkim,224332.jpg,f2d3b43e417237fdd2cb26d4e6db65a6cb536b97f54efb616f4433587bce82d9.jpg,44968ab0-c8c6-4c86-9d9d-39e56a3c853a,44968ab0-c8c6-4c86-9d9d-39e56a3c853a.jpg,Y +SAMAN,김예서,yskim3@samaneng.com,yskim3,223280.jpg,8a8ea042e0ba387a208e0fa8c5da50f16e6a3fae528dbd4119c810cc2f77646a.jpg,4c4cc566-ad69-4372-aba0-74593fd91640,4c4cc566-ad69-4372-aba0-74593fd91640.jpg,Y +SAMAN,김예슬,yskim2@samaneng.com,yskim2,220279.jpg,d0ca4e7b55839c3c213f0dd15477a56c9bfc0bed80e045c7ba0adf4d326adc56.jpg,6c56ff1b-8ce5-4bb1-9beb-79a4e9270367,6c56ff1b-8ce5-4bb1-9beb-79a4e9270367.jpg,Y +SAMAN,김예은,yekim@samaneng.com,yekim,223213.jpg,d9a3bb821e31b424824a8afc7f91308050b50e7b4881f1244a5c927226fb9921.jpg,5126be49-942b-4948-a7bd-54c1153d4518,5126be49-942b-4948-a7bd-54c1153d4518.jpg,Y +SAMAN,김용구,ygkim2@samaneng.com,ygkim2,224327.jpg,2a3e7f53f9c85c246977b02367fcfaa1f768829276533562e544f497f376acc5.jpg,24ca7aaa-3ebf-4d4a-9c41-7576516c6685,24ca7aaa-3ebf-4d4a-9c41-7576516c6685.jpg,Y +SAMAN,김용민,ymkim@samaneng.com,ymkim,197055.jpg,87428e5da04ba0a77d0730fbc50c1b07ae07ec3a190008225ada5de37348c5a0.jpg,94e9bd04-e29d-4e55-8a1f-dbebde5a6700,94e9bd04-e29d-4e55-8a1f-dbebde5a6700.jpg,Y +SAMAN,김용석,yskim4@samaneng.com,yskim4,226062.jpg,61f29521d272d2a9d1516d87d17b63684ccae909bcfc1c7e8ca094d441ea6274.jpg,65e1d770-af94-4fbe-bb8f-b9df565d5c1f,65e1d770-af94-4fbe-bb8f-b9df565d5c1f.jpg,Y +HANMAC,김용석,yskim10@hanmaceng.co.kr,yskim10,M19329.jpg,f7ae731207d38728e03135fa716d28b7f79fdbfe1e7896d319669c55f7f9f86e.jpg,277bd57c-f1e3-49e8-8f7a-83b622007e51,277bd57c-f1e3-49e8-8f7a-83b622007e51.jpg,Y +HANMAC,김용선,yskim14@brsw.kr,yskim14,M09319.jpg,5d205780ab5d0d1342c6bd6bf667d4456b384285a7e5bcc12af8616238d8b253.jpg,27250cb5-17ba-4763-8b91-b425445e177c,27250cb5-17ba-4763-8b91-b425445e177c.jpg,Y +HANMAC,김용연,yykim@brsw.kr,yykim,B24053.jpg,65919bead0632ca81a320b7fdc7862266ef0a43e3c0167cb41d30c10251d4444.jpg,27e50eeb-a231-459a-b4e3-a69db0107b94,27e50eeb-a231-459a-b4e3-a69db0107b94.jpg,Y +SAMAN,김용종,yjkim8@hanmaceng.co.kr,yjkim8,217064.jpg,9a0adc7d47e207cd0351f13524e2c2dc89880be738b7688a1f88853a55185405.jpg,d23257cc-e7aa-4c08-aac1-a7f13d1f0b8c,d23257cc-e7aa-4c08-aac1-a7f13d1f0b8c.jpg,Y +SAMAN,김용종,yjkim1@samaneng.com,yjkim1,223309.jpg,d8a18d1b35727f99a8cad96dfab357319ff53ee813a81f53a94b0d043a1588a8.jpg,d71a3002-7f3e-4add-8e7a-b241170e0d58,d71a3002-7f3e-4add-8e7a-b241170e0d58.jpg,Y +HANMAC,김용혁,yhkim2@hanmaceng.co.kr,yhkim2,M21402.jpg,40cf58fc167e8ac3fc68ab1a745a411598dbd55072751968bfdd1b0c7928d09a.jpg,89730cb9-e6b1-4d7f-8f66-624b73bce9fe,89730cb9-e6b1-4d7f-8f66-624b73bce9fe.jpg,Y +SAMAN,김용현,yhkim7@samaneng.com,yhkim7,223027.jpg,3da07e67cc3d150e319b896c09c22b57193ccda849e73087b82ef50685ee33ac.jpg,df68e731-c701-4763-9396-45306a99ac13,df68e731-c701-4763-9396-45306a99ac13.jpg,Y +HANMAC,김용현,yhkim@hanmaceng.co.kr,yhkim,M18205.jpg,f8ea4cfb44040b7c02ae68b6088fc74fe3b61431306ea75ce0fb61da590112c6.jpg,7b391c7f-c526-4c0f-9218-0bf737cb5cca,7b391c7f-c526-4c0f-9218-0bf737cb5cca.jpg,Y +SAMAN,김용희,yhkim3@samaneng.com,yhkim3,218135.jpg,f20737edbbd0c3885ba6b79fcf6985e36f6800f487b08e27e71e8de93a868da3.jpg,442e1c13-aa95-401e-8d1b-7d1cb63956c7,442e1c13-aa95-401e-8d1b-7d1cb63956c7.jpg,Y +SAMAN,김우섭,wskim1@samaneng.com,wskim1,224148.jpg,c4327c5703cfb080ea34f0d3da3fed444f7f80e95c77ca02cb8ed5498bb8f8d6.jpg,bbd58fdd-0e56-41e3-9974-1e89ddd6bd45,bbd58fdd-0e56-41e3-9974-1e89ddd6bd45.jpg,Y +HANMAC,김우진,wjkim2@hanmaceng.co.kr,wjkim2,M08401.jpg,50e70c7e5a604c83de7a2277e42b57fca024de77be4c31cd130c5e82c1b7134a.jpg,ca46feb8-e8d5-4ad2-abdc-ffb258cdfb91,ca46feb8-e8d5-4ad2-abdc-ffb258cdfb91.jpg,Y +SAMAN,김욱영,uykim@samaneng.com,uykim,225106.jpg,af02f62e6f5391e8c92586960c86f039efa05f7e96a6a845b37e1e94fac32bab.jpg,4b4265bb-daba-4658-b20d-56443126957c,4b4265bb-daba-4658-b20d-56443126957c.jpg,Y +SAMAN,김운걸,wgkim@samaneng.com,wgkim,221149.jpg,f42a5c166c6ddc135649513ec2b91347878f3468b7d9e86e3c4c4c87a11b43bb.jpg,c41e48e4-4524-4f4f-8d54-b11f119feffc,c41e48e4-4524-4f4f-8d54-b11f119feffc.jpg,Y +SAMAN,김운경,ukkim@samaneng.com,ukkim,223369.jpg,1effcdc735adc145bfc7bf6034b093f163e751aaafcbfdf479c14b5abae1db3e.jpg,c05914aa-380e-485a-9e7b-614686c6d4c5,c05914aa-380e-485a-9e7b-614686c6d4c5.jpg,Y +SAMAN,김운배,ubkim@samaneng.com,ubkim,222254.jpg,c7591f2838feb68cfc861387f605b3fba9f0dbc0c9056df2283a00ed5fe5182d.jpg,5f00b339-d956-4e39-860d-56c35fe74571,5f00b339-d956-4e39-860d-56c35fe74571.jpg,Y +HANMAC,김웅기,wkkim2@hanmaceng.co.kr,wkkim2,M24050.jpg,b6a94c64ee5ff262efb83061872a3310d9c511b9d69c0400879775ed6741a9d9.jpg,be312e50-4993-4952-8e27-ad63ddc103d2,be312e50-4993-4952-8e27-ad63ddc103d2.jpg,Y +SAMAN,김웅환,whkim@samaneng.com,whkim,223147.jpg,ea337b5530f1f7852816b0656c4050f91d0ad29e14b40d16e825aa9e57a3244c.jpg,176826b1-4d0c-4e4d-addc-8d8261cbb4df,176826b1-4d0c-4e4d-addc-8d8261cbb4df.jpg,Y +SAMAN,김원근,wgkim1@samaneng.com,wgkim1,226057.jpg,887a4cb8b98311db9f5d9f2decf9bb2bd33ce5e1d7b0ff3df4e1f6952deb40ce.jpg,ac183db6-f255-41b7-ac54-1e255c411f91,ac183db6-f255-41b7-ac54-1e255c411f91.jpg,Y +HANMAC,김원근,wgkim3@hallasanup.com,wgkim3,M02206.jpg,66b76248069e28e4418651f1452daec9b932c25c650735f972b5233d42f896b3.jpg,dfa3c1b0-2261-4148-86e4-e79f6aeb42ef,dfa3c1b0-2261-4148-86e4-e79f6aeb42ef.jpg,Y +SAMAN,김원기A,wkkim@samaneng.com,wkkim,222242.jpg,4d3e4b70d57a8e9d475580eba22f6a1b7a1eb90d95b6efd352615120255fe32d.jpg,cf5c27ce-02cc-4124-8bde-aac024276068,cf5c27ce-02cc-4124-8bde-aac024276068.jpg,Y +HANMAC,김원기,wgkim2@hanmaceng.co.kr,wgkim2,M07318.jpg,ff139303c824ca4d15a3950fd7bd5d657225c1a254ccfc811225866269274224.jpg,69dfe81d-b8f4-493c-b05f-d487ffb32736,69dfe81d-b8f4-493c-b05f-d487ffb32736.jpg,Y +SAMAN,김원석,wskim@samaneng.com,wskim,200118.jpg,209f8e72a21babf83ef47a8c5b111e5adb3697f2f94d637653a6f3986ed1f4c2.jpg,e99390cf-ee37-4bb9-b1e8-a0f9ba30cb0c,e99390cf-ee37-4bb9-b1e8-a0f9ba30cb0c.jpg,Y +HANMAC,김원섭,wskim4@hanmaceng.co.kr,wskim4,M24062.jpg,a9604b3402b7f473109dc460c0f9eb5466c79567a2a01e3c13b493798246bc53.jpg,383ee328-0c60-49d4-aaf5-0e90c91e6dc9,383ee328-0c60-49d4-aaf5-0e90c91e6dc9.jpg,Y +SAMAN,김원숙,wskim2@samaneng.com,wskim2,226070.jpg,23545382cc8920b754750bce997c2427240ebf772bdc432016a0f22341a3cd74.jpg,ebe57e32-c4dc-4e45-85ad-12f4efa810db,ebe57e32-c4dc-4e45-85ad-12f4efa810db.jpg,Y +HANMAC,김원식,wskim3@hanmaceng.co.kr,wskim3,M19202.jpg,04503a0b781b67a017ba817a1f169128395759b02e0eca986040eb2f3ce791b4.jpg,73dd59f8-f5e0-4cd2-a0b1-3d55f94aba0e,73dd59f8-f5e0-4cd2-a0b1-3d55f94aba0e.jpg,Y +SAMAN,김유식,yskim13@hanmaceng.co.kr,yskim13,226042.jpg,622a9823890508f11572eff6d959b59125c60012b046013e5ef7283616ec53eb.jpg,a41a8c07-c42d-4219-a278-2b3c90204aae,a41a8c07-c42d-4219-a278-2b3c90204aae.jpg,Y +SAMAN,김유진,yjkim3@samaneng.com,yjkim3,025089.jpg,1b33a83355ac07f3f5cc62025d16a9dc068f6dead45bac1b5aa3db84b74dde99.jpg,0a81919f-453c-43e8-bfbb-1012213198a8,0a81919f-453c-43e8-bfbb-1012213198a8.jpg,Y +HANMAC,김유진,egkim@hanmaceng.co.kr,egkim,M24069.jpg,40de54fa0dccf2808a17dcf0691c974b7182e239573c12e4240ef3df81e7ad78.jpg,1d6b7ad7-6713-4ba9-8445-63cd4f93feb3,1d6b7ad7-6713-4ba9-8445-63cd4f93feb3.jpg,Y +SAMAN,김윤권,ygkim1@samaneng.com,ygkim1,220266.jpg,36092e72ccf128661e412f1fbba82247624aafdc594a75cf12b4cad0f580700f.jpg,e35fb8bf-56ca-44b2-a8c9-e088938a522e,e35fb8bf-56ca-44b2-a8c9-e088938a522e.jpg,Y +SAMAN,김윤민,ymkim4@samaneng.com,ymkim4,220034.jpg,a1e32333d70b669af414518f0b0d07f2d15133762ee86c51be8e7a24bcefdbe7.jpg,9a69deee-178f-4bc0-8bf2-b479494ea4de,9a69deee-178f-4bc0-8bf2-b479494ea4de.jpg,Y +SAMAN,김윤성,yskim1@samaneng.com,yskim1,220029.jpg,1b1cec88176f86084cc3c2deecb824fa633616a0cab4cdd56220bc213a43f56b.jpg,f63ece1c-9caf-43fb-9cdb-793207eb7d39,f63ece1c-9caf-43fb-9cdb-793207eb7d39.jpg,Y +HANMAC,김윤성,yskim12@hanmaceng.co.kr,yskim12,M19504.jpg,3bf6495221b504d07a745531022089c2097585e6c6bef3d2ddb83b46aeff95e5.jpg,226eeefd-93ad-4321-b918-93fabcfca07d,226eeefd-93ad-4321-b918-93fabcfca07d.jpg,Y +SAMAN,김윤재,yjkim@samaneng.com,yjkim,222099.jpg,951deedfc110b05f07564beee03b61449d31dac637aa74468ed906f41b37721b.jpg,fc64fc3c-bb48-4a73-b4af-55aa772afbc4,fc64fc3c-bb48-4a73-b4af-55aa772afbc4.jpg,Y +HANMAC,김윤지,yjkim26@hanmaceng.co.kr,yjkim26,B21361.jpg,ccab27fbc01bb7c9b69ad18d523fee9a9df60f3c498b5f14ef9b310e82be9c16.jpg,e4ac404e-a6ea-4271-820c-0ae5aa5d878e,e4ac404e-a6ea-4271-820c-0ae5aa5d878e.jpg,Y +SAMAN,김윤찬,yckim2@samaneng.com,yckim2,225054.jpg,ebcd0db334d8e72182143d4302fadf2f97cdaf1acaa51d63a747954ac6e75f2c.jpg,ea77b5f3-caf0-4fd7-8849-2eeb3b154eed,ea77b5f3-caf0-4fd7-8849-2eeb3b154eed.jpg,Y +SAMAN,김윤하,yhkim8@brsw.kr,yhkim8,216171.jpg,4393703d82fe639ebf307cca828310336f5d75df0fd3f06e06c6f64ce1969b41.jpg,d5c58883-63aa-4626-9292-bb320ed4ed19,d5c58883-63aa-4626-9292-bb320ed4ed19.jpg,Y +SAMAN,김은대,edkim@samaneng.com,edkim,225333.jpg,8de77e24b8f27da8a59229c3ef71d94cb6091480acf9304c5f2be3b639a56317.jpg,57981232-d119-4860-a69c-841c59b9430a,57981232-d119-4860-a69c-841c59b9430a.jpg,Y +SAMAN,김은영,eykim@samaneng.com,eykim,223043.jpg,9bf9903d504e56af35f11cbc116c6236219a083af881f5398045485dd3a62bb3.jpg,1d01da67-7f1c-40ef-83c6-728b5a366bd3,1d01da67-7f1c-40ef-83c6-728b5a366bd3.jpg,Y +SAMAN,김은희,ehkim@samaneng.com,ehkim,024106.jpg,bd161553e2e1938d80748ed46f8b16d6c31ad2776504fe4023dae69cb8100f05.jpg,1d81a679-314d-4f97-a558-9c593786d6fb,1d81a679-314d-4f97-a558-9c593786d6fb.jpg,Y +HANMAC,김응진,ejkim@hanmaceng.co.kr,ejkim,M21457.jpg,82d4b3dae48f58e5507fa51ec2fcd5a86b39dc6b7d1e0b55c47fcee90a03e2e3.jpg,b5e873ba-a63c-4d58-a6af-5cf63ac80969,b5e873ba-a63c-4d58-a6af-5cf63ac80969.jpg,Y +SAMAN,김의섭,eskim@samaneng.com,eskim,223274.jpg,c46ba18a13d96a493d32445a65d9202784b216291fc0e40e1514dce18ed12b43.jpg,3d495332-57a5-4580-ac72-16c2a89e1f21,3d495332-57a5-4580-ac72-16c2a89e1f21.jpg,Y +SAMAN,김의진,ejkim1@samaneng.com,ejkim1,225041.jpg,3098fe0139a4aeb01b1db8028f2d5dbb55ac2312d02dde446313254dd393d985.jpg,09dc3c1f-e941-48cd-ba8b-a9b92fe7422e,09dc3c1f-e941-48cd-ba8b-a9b92fe7422e.jpg,Y +SAMAN,김의철,eckim@samaneng.com,eckim,222039.jpg,bc54a7ab0d6f633bae8456aa80469859a6da998fb8e65048f719ff8908b446b7.jpg,61d7c4bf-39f9-4c63-8422-5316d972f33b,61d7c4bf-39f9-4c63-8422-5316d972f33b.jpg,Y +TDC,김이훈,lhkim1@brsw.kr,lhkim1,B25032.jpg,e7c56e0eb4c350f9383d27434cb7290bef3879b019ee6cff2f55a97ea400cae2.jpg,dfaf9e3e-2af5-45ea-9168-e80781ea5986,dfaf9e3e-2af5-45ea-9168-e80781ea5986.jpg,Y +SAMAN,김익기,ikkim@samaneng.com,ikkim,223060.jpg,5a168e471ee94d55b4d31cc79380e2493dc5165984d591ad8bc432e2d8f15c1d.jpg,5e0b72fc-80bc-4f44-9c7f-9b0d6d5c2757,5e0b72fc-80bc-4f44-9c7f-9b0d6d5c2757.jpg,Y +SAMAN,김익수,iskim3@samaneng.com,iskim3,225160.jpg,6c96820afde891d6c9bed69ae92fe3cc6507bed015a5213851777fdf25398286.jpg,04fb218c-fbee-415d-8621-556a081f7d1b,04fb218c-fbee-415d-8621-556a081f7d1b.jpg,Y +SAMAN,김익환,ihkim1@samaneng.com,ihkim1,220220.jpg,53eb17ae5eacbca6b830a810bd75a68a8677403ceaaca45eda559d3ebdd69da8.jpg,4fd0f808-99ff-41ad-9d54-af203f3099ac,4fd0f808-99ff-41ad-9d54-af203f3099ac.jpg,Y +SAMAN,김인,ikim@samaneng.com,ikim,218087.jpg,bbb8997d1ba0a785f9d34a099135058c8217093f19d75ad417dcee5e3b29f352.jpg,2c0e78e9-9c70-4b87-8648-8ae568b5a102,2c0e78e9-9c70-4b87-8648-8ae568b5a102.jpg,Y +SAMAN,김인경,ikkim1@samaneng.com,ikkim1,025095.jpg,b875c5b1b4ae0c2ac05c094da6906f30a25b0d0645a15a3aad61eda228112a24.jpg,a655855d-a421-45fb-95cb-adf0eb3bbdef,a655855d-a421-45fb-95cb-adf0eb3bbdef.jpg,Y +SAMAN,김인섭,iskim1@samaneng.com,iskim1,224011.jpg,d0b68920cda1797c7bcc5f20a20a70d2cddbe0c23825203d46973cfc2c34c389.jpg,39c6beb3-5d81-4374-87e2-394e5fc7b0cf,39c6beb3-5d81-4374-87e2-394e5fc7b0cf.jpg,Y +JANGHEON,김인수,iskim2@brsw.kr,iskim2,J18203.jpg,c063a5a41c1f8b5a423cffbf85be15a32cc35d5e9f04a0dc1e3ce5c08fe78dc4.jpg,2f5e7582-86b5-4e07-9ab2-0513f92f0218,2f5e7582-86b5-4e07-9ab2-0513f92f0218.jpg,Y +SAMAN,김인식,iskim@samaneng.com,iskim,195153.jpg,a9d65d22bdab146c679e417a3b251c8ecd621ed2c0a416e26485419bea0bcf10.jpg,7262b853-c4b0-4241-b3f1-3042ac834f7d,7262b853-c4b0-4241-b3f1-3042ac834f7d.jpg,Y +JANGHEON,김인열,iykim@brsw.kr,iykim,M05510.jpg,c778775384f38acd352d3b65ebcf3e5cdde5f56ea2f20edef5d04446a75b33c8.jpg,90555af8-d7c3-4d0d-adad-b7e4b838509f,90555af8-d7c3-4d0d-adad-b7e4b838509f.jpg,Y +SAMAN,김인중,ijkim@samaneng.com,ijkim,221244.jpg,dae797e8ccd892860f3ca556dc7445b1ad634f971e83aa0f996e96d266492ce5.jpg,bd5183bc-f81f-40d9-b009-394cc1616f5f,bd5183bc-f81f-40d9-b009-394cc1616f5f.jpg,Y +SAMAN,김인홍,ihkim@samaneng.com,ihkim,220079.jpg,e8ba1e8aadb15025564b73a72118d1ecd3fd522294ede07dc670fab47293cff1.jpg,6e6ad963-c479-4beb-ade9-6a892f6b4c7e,6e6ad963-c479-4beb-ade9-6a892f6b4c7e.jpg,Y +SAMAN,김일태,itkim@samaneng.com,itkim,218027.jpg,def5cd00a65235730c9382757caaa9e3da0599b4af160ef96c5e3719d06194e2.jpg,7cd7086b-f972-4f5c-b9b9-686dbb0e67e0,7cd7086b-f972-4f5c-b9b9-686dbb0e67e0.jpg,Y +SAMAN,김임동,idkim@samaneng.com,idkim,221336.jpg,058e44849e10169b1dacb28d362a9ff3a760c38415f4c1ceac8221d921e2e82a.jpg,27c5e60e-4994-4b52-97c0-b769b1bf36d6,27c5e60e-4994-4b52-97c0-b769b1bf36d6.jpg,Y +SAMAN,김장온,jokim@samaneng.com,jokim,203249.jpg,4c246542d5ac10d4914739d500dccf7048cbbd4229efafc523a214e4fa10d91e.jpg,4e5949ad-9308-4597-be69-0229a9d26bbd,4e5949ad-9308-4597-be69-0229a9d26bbd.jpg,Y +SAMAN,김장욱,jwkim1@samaneng.com,jwkim1,205092.jpg,e0182046d05ef4d44c9bc0151a0ab8b5940e29e7ec42a4b0e90d427ad6f643e9.jpg,d15f5177-0c16-4c80-b3fd-7b9cd881c07a,d15f5177-0c16-4c80-b3fd-7b9cd881c07a.jpg,Y +SAMAN,김장현,jhkim7@samaneng.com,jhkim7,211024.jpg,910a2f29e2a3d77346c434b63ad07a4d31e15a8b1be3265901f7f743763b3ca2.jpg,9d3f9c9d-0274-4984-9419-1be62b509ebb,9d3f9c9d-0274-4984-9419-1be62b509ebb.jpg,Y +SAMAN,김재림,jlkim@samaneng.com,jlkim,220209.jpg,b3d550d717f033dd1da81037f13606177dbb5f0343a47179beecb9f588cee01e.jpg,e67996e2-d70a-4b21-b946-142a028496db,e67996e2-d70a-4b21-b946-142a028496db.jpg,Y +SAMAN,김재상,jskim6@samaneng.com,jskim6,224193.jpg,24ce2416fd8edf4926d82c854db3e695c021a1727b6840f4768b3211feb7c84b.jpg,2e413c95-bb5e-40cf-bd22-dc6e949da02b,2e413c95-bb5e-40cf-bd22-dc6e949da02b.jpg,Y +HANMAC,김재용,jykim9@hanmaceng.co.kr,jykim9,M03228.jpg,26053ff810967ab6b106a6693e123810c05d54bab63640d26b5c730f4f6958b5.jpg,dce8e404-312e-4096-a2dd-8c9d1f09ecd9,dce8e404-312e-4096-a2dd-8c9d1f09ecd9.jpg,Y +SAMAN,김재욱,jukim1@samaneng.com,jukim1,226004.jpg,1e51462f8ca92ab7742e27780219d9f29689d6732b74f03dd5583bb422768560.jpg,4c7dd3b7-f842-4d28-98c1-7fd8a044221a,4c7dd3b7-f842-4d28-98c1-7fd8a044221a.jpg,Y +SAMAN,김재원,jwkim5@samaneng.com,jwkim5,216150.jpg,be78e9c991578203832f13f840f98fa5d5d19be02addfa3630273b902425481f.jpg,6361ade7-f9c5-4cd0-8fd9-862140a19fc2,6361ade7-f9c5-4cd0-8fd9-862140a19fc2.jpg,Y +HANMAC,김재헌,jhkim35@hanmaceng.co.kr,jhkim35,J08206.jpg,3eaafc4faec8f23da6005d8e83e0129a175f2e927b8545c62b284fedb0fa26a7.jpg,8721303c-930c-4dfb-aa5c-25c20ff9ed79,8721303c-930c-4dfb-aa5c-25c20ff9ed79.jpg,Y +SAMAN,김재현,jhkim14@samaneng.com,jhkim14,222231.jpg,2eba9156ce66c617fb2ab8922fe6571ac7b3d4930bd99d4f04a4961d38eb4437.jpg,64d4a839-ee04-4c47-b7b3-4ac6428c56b1,64d4a839-ee04-4c47-b7b3-4ac6428c56b1.jpg,Y +SAMAN,김재홍,jhkim22@samaneng.com,jhkim22,222061.jpg,da93432084c0b129a476565dc26c30c5dd858e8a036aa6dc7e5abdfc75d711a4.jpg,d2d2c6d9-206f-4839-9fa5-7ef790be0780,d2d2c6d9-206f-4839-9fa5-7ef790be0780.jpg,Y +SAMAN,김재환,jhkim25@samaneng.com,jhkim25,223229.jpg,d41eb7831b45169da0af950591284b89d7eac2940b3fafa95b20801e7c61781f.jpg,f33d57c5-37e3-47c6-b8e4-d51545afbc56,f33d57c5-37e3-47c6-b8e4-d51545afbc56.jpg,Y +SAMAN,김재환,jhkim11@samaneng.com,jhkim11,225335.jpg,50742ee7e8e8ef8b9087fe4ade8f16d6ce0d7bed072fa217df6e7e0e175c9bff.jpg,770ddc52-4acc-4017-a903-6aade7c1be24,770ddc52-4acc-4017-a903-6aade7c1be24.jpg,Y +SAMAN,김재훈,jhkim27@samaneng.com,jhkim27,223293.jpg,a7997c3a2379b3747795342eb9e94cecb81b184d6c0cafd7f3a130a9aa75d9c0.jpg,9e61280a-a6d1-4b31-9dd0-e77df3241afc,9e61280a-a6d1-4b31-9dd0-e77df3241afc.jpg,Y +SAMAN,김재휴,jhkim3@samaneng.com,jhkim3,195052.jpg,af18503b650d1558f080fd76d6002eb091056407a9ce98369e0bdadf1b7de4f3.jpg,b5a437b7-6f22-40a1-ae8e-5bae934853bd,b5a437b7-6f22-40a1-ae8e-5bae934853bd.jpg,Y +HANMAC,김재흥,jhkim36@hanmaceng.co.kr,jhkim36,M25071.jpg,2ba780eaf4c3e949f292f47cddfa67d102361f72c8b91cb85918c52a052ea7ef.jpg,39240bb4-4d94-4736-8e14-f797d73a52da,39240bb4-4d94-4736-8e14-f797d73a52da.jpg,Y +SAMAN,김정구,jkkim4@samaneng.com,jkkim4,201150.jpg,b5dd8f1608e29efe5bf5e38d8493de9b1524dddd15b2502e22bb3705d6a67217.jpg,300e7a32-0999-49b4-8f27-cda65eceb26d,300e7a32-0999-49b4-8f27-cda65eceb26d.jpg,Y +SAMAN,김정규,jkkim7@samaneng.com,jkkim7,222062.jpg,5db776eb438920e9e5d9ebf84cef48a196225545060c6c58e3a739f3818821fe.jpg,62b59ca4-fb07-47b5-990a-dba61f07d773,62b59ca4-fb07-47b5-990a-dba61f07d773.jpg,Y +SAMAN,김정균,jkkim3@samaneng.com,jkkim3,220030.jpg,bcec29587cef9be0c2bb5c616293b686380e92357366776f70a8d4ed2db58ec1.jpg,2b67a7d9-862d-49c8-a434-5ca7a45d4447,2b67a7d9-862d-49c8-a434-5ca7a45d4447.jpg,Y +JANGHEON,김정기,jgkim2@hanmaceng.co.kr,jgkim2,J10310.jpg,754b78139d3b1845bd8cc80771ce6392a6d33de8cc9b5a8582046019aea648ca.jpg,c6928947-390c-4643-8d22-ed20dcde17e6,c6928947-390c-4643-8d22-ed20dcde17e6.jpg,Y +SAMAN,김정길,jkkim2@samaneng.com,jkkim2,213047.jpg,d30ba746b631263606e0c3915bd55e78f0e7c733ef77da74ffc93e73367f21ad.jpg,4c851f17-df54-43b1-ae30-5d9e7d60dea6,4c851f17-df54-43b1-ae30-5d9e7d60dea6.jpg,Y +SAMAN,김정덕,jdkim@samaneng.com,jdkim,218020.jpg,b29f9e7d44a74340fe5e7844f276f1cedaeb8667da6e978e83edfc9f4d286252.jpg,5f3e1804-8f0d-420c-94e5-ff5fbd782614,5f3e1804-8f0d-420c-94e5-ff5fbd782614.jpg,Y +SAMAN,김정래,jrkim@samaneng.com,jrkim,224152.jpg,20f6e506ab62c45ec56d7f8470ed82779a7c4c5a460e3577f37bcfa4ac1e873b.jpg,9a6d5e2f-ed36-4b9c-b765-ac9e475dcbc4,9a6d5e2f-ed36-4b9c-b765-ac9e475dcbc4.jpg,Y +SAMAN,김정만,jmkim1@samaneng.com,jmkim1,223223.jpg,3d99e2ee30cf8f50d2bfe3f4b0ceac4489d7f8a98f95fc9179ad07d4574f9df0.jpg,d6283634-9159-4ecd-b121-930b952b3ca5,d6283634-9159-4ecd-b121-930b952b3ca5.jpg,Y +HANMAC,김정문,jmkim7@hanmaceng.co.kr,jmkim7,M23008.jpg,b0535b68383bad611e4e01e483f1e12eacb5cdf496caf05f21e19b38d17d4ebc.jpg,abe7138f-a3fc-4d70-85db-e2d5e86f4e63,abe7138f-a3fc-4d70-85db-e2d5e86f4e63.jpg,Y +SAMAN,김정미,jmkim5@samaneng.com,jmkim5,026037.jpg,c70319753e14a3d0a6d66b342ff629c2ed67d1f6fa0c9be19b6a759cd7fbd15e.jpg,fb5e0c30-65a2-4b99-bd25-8c6498bc356f,fb5e0c30-65a2-4b99-bd25-8c6498bc356f.jpg,Y +SAMAN,김정민,jmkim@samaneng.com,jmkim,223365.jpg,8484d28403753b02781b9a1fcfb4350a7b043414951f2196bacbc53ce8108099.jpg,aaddd457-2e2b-4dca-a7f6-5d595c220296,aaddd457-2e2b-4dca-a7f6-5d595c220296.jpg,Y +SAMAN,김정민,jmkim6@samaneng.com,jmkim6,226120.jpg,75e20a96413dd87db426fcbd57f0ca0bf7723691a997c0914f9aaaa61fdf9b6c.jpg,b1b1fb93-0ed1-40fb-bf15-1c9ade719dfb,b1b1fb93-0ed1-40fb-bf15-1c9ade719dfb.jpg,Y +SAMAN,김정배,jbkim@samaneng.com,jbkim,223299.jpg,a2fbb9f09b6c3730ce31d12ad80c196a20dda97a5c8d9610fa67a122d3ccc52e.jpg,e5641145-cb25-40d9-be05-6cbce0d02e12,e5641145-cb25-40d9-be05-6cbce0d02e12.jpg,Y +SAMAN,김정배,jbkim1@samaneng.com,jbkim1,225326.jpg,4f8ae73db1e0b0649475b27cee69a52b7715e2f368c653482e19d73b5649673a.jpg,79321be5-2bad-4ca1-88cb-0ef8e313afe5,79321be5-2bad-4ca1-88cb-0ef8e313afe5.jpg,Y +HANMAC,김정석,jskim12@brsw.kr,jskim12,B24049.jpg,47d1e2e97ceaac758c953f556ef8c77daf73e11b8c8287d6ab31457e812810c9.jpg,38d1f968-8891-4041-b178-35ca2bdea502,38d1f968-8891-4041-b178-35ca2bdea502.jpg,Y +SAMAN,김정아,jakim@samaneng.com,jakim,220212.jpg,d3a44ab146e84b7ca64c20703b1fc2eb26a235155410aa68f13584546ac9384c.jpg,34ed66a1-8b39-4d62-a89b-8f085743d721,34ed66a1-8b39-4d62-a89b-8f085743d721.jpg,Y +HANMAC,김정열,cykim2@hanmaceng.co.kr,cykim2,J05215.jpg,7363bab23a1d78c52a1b21341d15ab86932a7a24a352145342cb3740d80ab802.jpg,4baae2aa-6c85-4c3e-ac75-4061d940a8ad,4baae2aa-6c85-4c3e-ac75-4061d940a8ad.jpg,Y +SAMAN,김정원,jwkim@samaneng.com,jwkim,224264.jpg,760c5ab94edb030c02f05344ace06c5c2bfbda87971cddaf34e6db39d3a5808b.jpg,642228c4-4f2c-4437-a74e-7e47d91c49f5,642228c4-4f2c-4437-a74e-7e47d91c49f5.jpg,Y +SAMAN,김정은,cukim@samaneng.com,cukim,224378.jpg,724f7c2f6a84424393a34201eb62b3c0c3df65a46711dd2ef99e332fab0afed7.jpg,0bc02290-8824-4a0f-83b4-98f8c5c0a546,0bc02290-8824-4a0f-83b4-98f8c5c0a546.jpg,Y +SAMAN,김정태,jtkim1@samaneng.com,jtkim1,225197.jpg,9768099a7c830be0bd3e113fe1755227bcb0c7f3b2683352a9410ea9445c20c4.jpg,baf4e309-204f-4cd0-af1b-a4b09e2da82f,baf4e309-204f-4cd0-af1b-a4b09e2da82f.jpg,Y +SAMAN,김정태,jtkim@samaneng.com,jtkim,226133.jpg,5d6c54cb83cd39bb4ca0faac77d1a3ca5e5f218132e025e0fb7b6b97089991b5.jpg,954bca51-57b7-4bf2-a92c-2d8bd61acd5a,954bca51-57b7-4bf2-a92c-2d8bd61acd5a.jpg,Y +SAMAN,김정현,jhkim10@samaneng.com,jhkim10,214050.jpg,4b313c0e8171034136f601b7df888a868d7541121c72440e64fcbbce4798553f.jpg,c731db9a-9b59-4926-93cf-effa2721ffed,c731db9a-9b59-4926-93cf-effa2721ffed.jpg,Y +SAMAN,김정현,jhkim30@samaneng.com,jhkim30,025138.jpg,8675ebf32f1282edc7fdf82dc3dc57e7d85ce90cdc3b4f31713f392ae0aafe20.jpg,7a4a3c53-feb3-47a2-a9f1-63a3f76077d9,7a4a3c53-feb3-47a2-a9f1-63a3f76077d9.jpg,Y +SAMAN,김정호,jhkim1@samaneng.com,jhkim1,216001.jpg,5be32b5b04e4bb2db28daac13ffe1f71b3295601faa50800b7234d84643c22dd.jpg,f0986d9a-18cf-43a3-9a41-c639111b35d6,f0986d9a-18cf-43a3-9a41-c639111b35d6.jpg,Y +SAMAN,김정훈,jhkim24@samaneng.com,jhkim24,224253.jpg,89489c1dfd25c3f047156b4cd85fea2a50075f6d7a2c65c6c790c342ae0236b3.jpg,cab70f18-3b8f-4f6b-a738-8e94c0c38d98,cab70f18-3b8f-4f6b-a738-8e94c0c38d98.jpg,Y +HANMAC,김정훈,jhkim32@hanmaceng.co.kr,jhkim32,M04308.jpg,db81deff0404f6d8ffb3edf41e9cc0d1de3e00cd2d71e6bc1ebd75a12a10513f.jpg,907e3b03-423b-4df6-aa00-9dd382e8501a,907e3b03-423b-4df6-aa00-9dd382e8501a.jpg,Y +HANMAC,김정훈A,jhkim33@hanmaceng.co.kr,jhkim33,M24067.jpg,2455eb171a84dbb70fcab0370fcf655158c1d4f0a6b14591cb01300ebd5e9e4d.jpg,f4a804d7-fbbc-42ff-8bea-feebfb3061f8,f4a804d7-fbbc-42ff-8bea-feebfb3061f8.jpg,Y +SAMAN,김정희,jhkim4@samaneng.com,jhkim4,217028.jpg,b926b4de90ec2600ed0cc93234bf04a96e31a7557b4a8af8c5c52f4baece40c0.jpg,1c55c357-6fbf-4b38-9a83-fe54ea17e750,1c55c357-6fbf-4b38-9a83-fe54ea17e750.jpg,Y +SAMAN,김정희,jhkim15@samaneng.com,jhkim15,224350.jpg,a6bf09c4c458efa4745f7f91e8ab28fe06668bdb0a8a5283fdc3f26d5faf8e0f.jpg,30f48df4-f7ed-4633-b974-702545985a78,30f48df4-f7ed-4633-b974-702545985a78.jpg,Y +SAMAN,김제숙,jskim10@samaneng.com,jskim10,026002.jpg,d6a57ab8add094b3f1afb74cb960d212cafb3f46b8dd6ad9eda1c0a9e0a4474a.jpg,fb86fea2-4be9-47c1-8844-2473490e64d4,fb86fea2-4be9-47c1-8844-2473490e64d4.jpg,Y +SAMAN,김제웅,jukim@samaneng.com,jukim,225219.jpg,5ed79b69ff29478e79c1502270541b86b0f64d24e53dd7c8d411f9bcb6c77644.jpg,8f1d15ed-1e7f-408c-b63b-6924725d0a83,8f1d15ed-1e7f-408c-b63b-6924725d0a83.jpg,Y +SAMAN,김제훈,jhkim20@samaneng.com,jhkim20,223201.jpg,a3e027ff1f9842ca4d6bd297cf2880838f851995e292343cdc7161765dc5b2a7.jpg,dd2c6f54-b594-4a1f-9091-1c807092e736,dd2c6f54-b594-4a1f-9091-1c807092e736.jpg,Y +HANMAC,김종계,jgkim1@hanmaceng.co.kr,jgkim1,M24032.jpg,8ca70d11027990147f748956c1e20436b2c5e416a3286a51d24558a0427c10b1.jpg,163c2154-c7f6-4e0e-ae93-92eb7ea5024b,163c2154-c7f6-4e0e-ae93-92eb7ea5024b.jpg,Y +SAMAN,김종권,jkkim1@samaneng.com,jkkim1,224228.jpg,985c244535c66aec7e89b68cd950093c2848de86fe83267fa84b0e35c6d34279.jpg,fec42ee3-1fd8-44b6-b880-26cf6a59fb6b,fec42ee3-1fd8-44b6-b880-26cf6a59fb6b.jpg,Y +SAMAN,김종규,jgkim@samaneng.com,jgkim,220085.jpg,a8ac8c27d2d65f8bfe3817591179599745322f8eba7fe4288df9d78c38faf17f.jpg,ef18a403-34ad-4bef-bd49-3651904ffa41,ef18a403-34ad-4bef-bd49-3651904ffa41.jpg,Y +SAMAN,김종남,jnkim@samaneng.com,jnkim,226046.jpg,10b41d19b5d185f7178eacbc2db79aa46d9ec90d5fc7e404657dd9c271d5dc90.jpg,c1df545e-49b0-4fc1-9c45-e130219d017f,c1df545e-49b0-4fc1-9c45-e130219d017f.jpg,Y +SAMAN,김종대,jdkim2@samaneng.com,jdkim2,221201.jpg,d270f9843e540ec6246afa7105c6effb7dfbccb8200aca8ab2826fc56843bb4b.jpg,c4bf8595-50dd-4bd8-8089-a55cd5539a04,c4bf8595-50dd-4bd8-8089-a55cd5539a04.jpg,Y +SAMAN,김종문,jmkim4@samaneng.com,jmkim4,220179.jpg,58a043b10ab4a6ee5026e014fd38c472302ce13769c3da1998d05ca2ad7329ca.jpg,0056d6b0-b73f-41c8-bd81-12867d13b88b,0056d6b0-b73f-41c8-bd81-12867d13b88b.jpg,Y +SAMAN,김종석,jskim2@samaneng.com,jskim2,225156.jpg,c3877558d90859579af91c8e2e4d06b35ede5e5185e64252991691a6553a180d.jpg,de3a7840-eba7-451a-94fc-b4b735974196,de3a7840-eba7-451a-94fc-b4b735974196.jpg,Y +SAMAN,김종완,jwkim6@samaneng.com,jwkim6,220066.jpg,2680ec372e7c8f972bb105134b8722a716adcdf575fb1cc332a20768e698d4c0.jpg,53b8f3f2-f1f2-4387-854b-ef48a6f501c5,53b8f3f2-f1f2-4387-854b-ef48a6f501c5.jpg,Y +HANMAC,김종용,jykim10@hanmaceng.co.kr,jykim10,M24035.jpg,36488bf7f525e1e50388fbc7347be6fc3518d743eac4ae1ee7d18b247ea296fb.jpg,a9a52252-3f58-44d3-a889-e64c3651ca57,a9a52252-3f58-44d3-a889-e64c3651ca57.jpg,Y +SAMAN,김종우,jwkim8@samaneng.com,jwkim8,225322.jpg,c3a37f64f2ab08ce8c9fafab65e4def9c9d4c4931c2d048a7fb1736115e295b8.jpg,ad831d2a-2cde-4d14-9d58-2635c536d77c,ad831d2a-2cde-4d14-9d58-2635c536d77c.jpg,Y +HANMAC,김종우,jwkim12@hanmaceng.co.kr,jwkim12,M24082.jpg,3ca9fb90e8fda659ab904633a480954e45a0c8121572067e59667424d758f5cd.jpg,8e7d26b5-347d-4bed-8f51-b4a46499d1d6,8e7d26b5-347d-4bed-8f51-b4a46499d1d6.jpg,Y +SAMAN,김종준,jjkim4@samaneng.com,jjkim4,223206.jpg,b7d44de31f2ab329dd36a84c5bf307f62cd29d5db6643e43f0162fa8494f0e19.jpg,27e2a894-9bc1-4ff0-b195-509d02fe7fc1,27e2a894-9bc1-4ff0-b195-509d02fe7fc1.jpg,Y +SAMAN,김종혁,jhkim2@samaneng.com,jhkim2,225075.jpg,9605e01c9f2787e6ae19c13dae97d37f33948d84cf25a5e39f9dcb06a5550a15.jpg,1a363f17-29e6-4892-a09e-06fbd02ecb78,1a363f17-29e6-4892-a09e-06fbd02ecb78.jpg,Y +SAMAN,김종환,jhkim9@samaneng.com,jhkim9,218072.jpg,46fc8a55a8883c40231c23d036ca98896368f674b5494f78b52ff1c53fa6a97b.jpg,3691b2fa-3b14-4349-accb-7f2c6df2247f,3691b2fa-3b14-4349-accb-7f2c6df2247f.jpg,Y +SAMAN,김주신,jskim9@samaneng.com,jskim9,225178.jpg,17d0882872bc72d739327949a2ec2f3a3d39875c5b2abdb8383917e70b282771.jpg,a9ef9c48-ca80-4067-8748-a17af2d51e04,a9ef9c48-ca80-4067-8748-a17af2d51e04.jpg,Y +SAMAN,김주영,jykim4@samaneng.com,jykim4,223138.jpg,865ea63540872ca639c06378eacb28930e26c3368b40d7c08f48277a75b8c220.jpg,6edf2a5c-43ef-490b-9e0a-27b50ae3316b,6edf2a5c-43ef-490b-9e0a-27b50ae3316b.jpg,Y +SAMAN,김주찬,jckim3@samaneng.com,jckim3,224293.jpg,7eb84b8c49c06a475bf4f834d2ead6a7c0cfc353482dc4e84149db8cac00d1f8.jpg,b54685cc-6714-4b86-93a4-84e3da110de2,b54685cc-6714-4b86-93a4-84e3da110de2.jpg,Y +SAMAN,김주철,jckim1@samaneng.com,jckim1,217036.jpg,de047d92a081c4d6ca0ac60059239ce48f3a4d37c47b2bc12d90cc1fb567ea43.jpg,fbcb10db-0ffb-418e-bd21-315ed8b8f070,fbcb10db-0ffb-418e-bd21-315ed8b8f070.jpg,Y +SAMAN,김주철,zckim@samaneng.com,zckim,225097.jpg,f2330b01d1cac8c882d608c81ce1ff49a69315860a20017dafe1b822a64cf111.jpg,cf89f839-86cb-455d-8994-e06705e64e73,cf89f839-86cb-455d-8994-e06705e64e73.jpg,Y +SAMAN,김주현,jhk@samaneng.com,jhk,202115.jpg,d6deb3e2410bf885e68cc9ca6a501cb644a67f10909d327d192c0eb141d92e49.jpg,2477abdf-c996-4b95-86c9-6ee93a2cad4f,2477abdf-c996-4b95-86c9-6ee93a2cad4f.jpg,Y +SAMAN,김주형,jhkim18@samaneng.com,jhkim18,220162.jpg,b263879981f0624ac0476375523c9406a3062c3431f15b3d2a935a5fe014101b.jpg,7fbb18c9-57e6-451a-bfce-da98f3bdac2d,7fbb18c9-57e6-451a-bfce-da98f3bdac2d.jpg,Y +SAMAN,김주호,jhkim28@samaneng.com,jhkim28,223308.jpg,4d7ec241f1268c80cbf87dd9af3bffed52bdabc8f7c71fc08cb68b488d0a293a.jpg,76ab1ff5-64a7-4c8b-beec-57324f576778,76ab1ff5-64a7-4c8b-beec-57324f576778.jpg,Y +SAMAN,김준규,jkkim@samaneng.com,jkkim,191017.jpg,b96aa5594d97d4c3869336027ebd6d8054086585338b474c35a32f93bff28bec.jpg,b01bc4d8-3511-46a5-8eb4-91803457c998,b01bc4d8-3511-46a5-8eb4-91803457c998.jpg,Y +SAMAN,김준성A,jskim@samaneng.com,jskim,210131.jpg,ac83e7f4ea74a7f23ec8b176e424cda24f9b6bf08a4b00eedf718447fc96874d.jpg,5cbc987b-866d-4cbc-a25f-3a516d0b835a,5cbc987b-866d-4cbc-a25f-3a516d0b835a.jpg,Y +SAMAN,김준성B,jskim8@samaneng.com,jskim8,225090.jpg,c4c5fd9979b89bb681a2a72eb8b83ce7b98264299ec75128715374220b98ca6e.jpg,988efbc2-c1c2-4237-8965-7698393992ec,988efbc2-c1c2-4237-8965-7698393992ec.jpg,Y +SAMAN,김준우,jwkim4@samaneng.com,jwkim4,222018.jpg,f2eac3d575d1fdde89a8fc500fa8fb85a716cf0d81c22515803dd79222cbc963.jpg,39c41fb2-5f3b-4a89-93aa-ac781a61d2cf,39c41fb2-5f3b-4a89-93aa-ac781a61d2cf.jpg,Y +SAMAN,김준일,jikim@samaneng.com,jikim,226124.jpg,6f2125416f9d327dfab6da5ee6e2a6f962fdc6e11771498ec9f98577646d7cbe.jpg,fb9223df-dab7-4bf2-b6fa-f7c6d7153cfc,fb9223df-dab7-4bf2-b6fa-f7c6d7153cfc.jpg,Y +SAMAN,김준학,jhkim19@samaneng.com,jhkim19,226019.jpg,3126dc390f29d45df3bcc3a1fc96d71bdfe0da647d5f7b73f4496d28a90b85f1.jpg,43c3d687-42f7-4a0e-981d-db29631a2c97,43c3d687-42f7-4a0e-981d-db29631a2c97.jpg,Y +SAMAN,김준혁,jhkim6@samaneng.com,jhkim6,221192.jpg,41b2236bda39f3b420c054efb2be19bd32c61c61a78b7a7f205177e2e3b4baff.jpg,17779a92-e6bf-4f9b-86b3-a2f60750d39e,17779a92-e6bf-4f9b-86b3-a2f60750d39e.jpg,Y +SAMAN,김준혁,jhkim23@samaneng.com,jhkim23,223013.jpg,469cab317dd4956b72b104b8910ff2e6067e72f1efce51484f32cbe625ccd5ce.jpg,43d9dabb-f7c9-453f-9a27-58592f1a74c7,43d9dabb-f7c9-453f-9a27-58592f1a74c7.jpg,Y +HANMAC,김준형,jhkim12@hanmaceng.co.kr,jhkim12,M21435.jpg,d0bf9d39ab69100e96e443a24ade032e84c27d326d279674059124fce10b9520.jpg,e11234f0-32ef-4a78-b6ba-a49988339ca8,e11234f0-32ef-4a78-b6ba-a49988339ca8.jpg,Y +SAMAN,김준호,jhkim29@samaneng.com,jhkim29,223373.jpg,5f699c12060fd0ca756b828147fd2b5ee88b2be7b91354e8772d1e3f73862e5e.jpg,7fdc9641-2323-4f5f-878b-f906af2ad5b7,7fdc9641-2323-4f5f-878b-f906af2ad5b7.jpg,Y +SAMAN,김중기,jkkim6@samaneng.com,jkkim6,203122.jpg,52b83dd6ed70db58887518bb910d0ab445d42c954222e706f66df07059a1b002.jpg,7fc5e746-4c86-4b0e-b29e-2c7bcc32fbb9,7fc5e746-4c86-4b0e-b29e-2c7bcc32fbb9.jpg,Y +SAMAN,김중석,jskim5@samaneng.com,jskim5,194071.jpg,fead04917f23a9801985e162b962312eb9d28566aa492d544423eb577da2cde0.jpg,6380ab8a-6e0c-46f6-9b65-657879c062bc,6380ab8a-6e0c-46f6-9b65-657879c062bc.jpg,Y +SAMAN,김중재,jjkim3@samaneng.com,jjkim3,216141.jpg,8b47fae4d1e00440d6a697c0f0608ca207314d9699255d6236467c036cc361d6.jpg,4adad9be-17b7-4d05-b532-fa2983930762,4adad9be-17b7-4d05-b532-fa2983930762.jpg,Y +SAMAN,김지수,jskim4@samaneng.com,jskim4,221017.jpg,bc579af9da0b3d120c318ae999e1af731fa9a6cd84f367a1500fb599f0fe28e9.jpg,690fa3de-8e67-4d28-9657-c04620a18145,690fa3de-8e67-4d28-9657-c04620a18145.jpg,Y +SAMAN,김지열,jykim@samaneng.com,jykim,225349.jpg,6abb03d27e709a51e599cab1850f681a23558e6ee62df7ab4bcd0945443c3c96.jpg,0e5151b2-2903-447a-ad8a-309de0f6730d,0e5151b2-2903-447a-ad8a-309de0f6730d.jpg,Y +SAMAN,김지영,jykim6@samaneng.com,jykim6,224156.jpg,38544c1e3dbe0b7dc75d37352230e2bd43507dd1ad6c82de5d086bee9f60f901.jpg,170c6c9d-30d5-4d54-afbe-fdeb29dd99f4,170c6c9d-30d5-4d54-afbe-fdeb29dd99f4.jpg,Y +HANMAC,김지영A,jykim8@hanmaceng.co.kr,jykim8,B19306.jpg,6dd63a1821ac207b0a4edbfd897b1fd2fec3f8b9dfec76648b428d8e5160ea06.jpg,59f0f8bb-a1dc-4627-92ec-ea35ad994d0e,59f0f8bb-a1dc-4627-92ec-ea35ad994d0e.jpg,Y +HANMAC,김지영,jykim5@brsw.kr,jykim5,M17208.jpg,9ec492085fb6321e4bd8df38e6e39820bda08b82681fb54d34ffc007143238cf.jpg,1391afc3-939f-4481-8b12-9bd6444bb6f5,1391afc3-939f-4481-8b12-9bd6444bb6f5.jpg,Y +SAMAN,김지우,jwkim2@samaneng.com,jwkim2,199106.jpg,396a5327d2dc26f127493d23c563e69e4ab8f8a86354877220cfd319433b73b4.jpg,44813202-28de-4709-b1d0-385bd02fc0b1,44813202-28de-4709-b1d0-385bd02fc0b1.jpg,Y +HANMAC,김지우,jwkim10@hanmaceng.co.kr,jwkim10,T02328.jpg,822a25984f47df787e06423dafd96d20b4c8639c496f7bde1766511fa086894b.jpg,524fd147-a3d4-42f6-947b-8d85cd6d20bc,524fd147-a3d4-42f6-947b-8d85cd6d20bc.jpg,Y +HANMAC,김지웅,jwkim9@hanmaceng.co.kr,jwkim9,B13301.jpg,2275451341737720e46fddff5c15173a79e160e42e2437ed0dc16e88cb86c8de.jpg,0106dafb-07b6-43fa-8b2f-ddb81d14d54d,0106dafb-07b6-43fa-8b2f-ddb81d14d54d.jpg,Y +SAMAN,김지은,jekim@samaneng.com,jekim,202063.jpg,5dd7debc8238b79d0d6ee39ae42be049f49909904b0a022210a3db504a0eb629.jpg,a2c2bf2b-f7e6-46d7-ad63-94434b1074d9,a2c2bf2b-f7e6-46d7-ad63-94434b1074d9.jpg,Y +SAMAN,김지현,jhkim8@samaneng.com,jhkim8,201082.jpg,18085f3181188fb927722bab08939753f81f2f919cc3d27f49a302f0ccb896a0.jpg,c2dbc85a-29a9-4dd1-aa64-8c90cd4ebfaa,c2dbc85a-29a9-4dd1-aa64-8c90cd4ebfaa.jpg,Y +SAMAN,김지혜,jhkim@samaneng.com,jhkim,025111.jpg,a99af5990e35f459faa534fe67fa6d65ce42c371286da49773da49c041d35621.jpg,8b14f41f-85e2-4514-b1c9-2edd59f100df,8b14f41f-85e2-4514-b1c9-2edd59f100df.jpg,Y +SAMAN,김지훈,jhkim5@samaneng.com,jhkim5,211103.jpg,64a28b9ebcdf1477563718ad4b5e47e54085d836c09c33ceed50d6d843f3058a.jpg,d6125c34-163a-46f6-aeed-37ebe808afbe,d6125c34-163a-46f6-aeed-37ebe808afbe.jpg,Y +JANGHEON,김진,jkim@brsw.kr,jkim,J10314.jpg,513b195ae1141a66516b705d6d2540fa0313bf6f3fdd5554073af5278a8c0e68.jpg,64123625-b99e-4b3a-a0c8-d8ac11847020,64123625-b99e-4b3a-a0c8-d8ac11847020.jpg,Y +JANGHEON,김진규,jgkim3@brsw.kr,jgkim3,J26302.jpg,d96a14e51c5700552eb2f0c7a1de7d7dd70a906f052b6aa63891551a47a72070.jpg,559ad323-fca5-4809-8417-24e6a7822c40,559ad323-fca5-4809-8417-24e6a7822c40.jpg,Y +SAMAN,김진선,jskim1@samaneng.com,jskim1,223158.jpg,e6255234fbe88a44f32bcb98deef32eed08a72570bf6b2e95d0dce0393217ec8.jpg,433c1a66-2edb-43ba-bf38-e0da504cfc6f,433c1a66-2edb-43ba-bf38-e0da504cfc6f.jpg,Y +SAMAN,김진섭,jskim3@samaneng.com,jskim3,191023.jpg,159f2928575c0c1db8e3286c49ee1397422a961080fa5cc9a57cbc439df38201.jpg,0226b8fa-add1-4afe-880c-383b362639da,0226b8fa-add1-4afe-880c-383b362639da.jpg,Y +SAMAN,김진세,jskim11@samaneng.com,jskim11,226050.jpg,66143a1006408691da7d921f552dc597f85313bbdc40d0457a5ba14cb7c3d8de.jpg,65e1b6e0-b5e4-4d5c-aaa6-9896babcedd6,65e1b6e0-b5e4-4d5c-aaa6-9896babcedd6.jpg,Y +SAMAN,김진욱,jwkim3@samaneng.com,jwkim3,225179.jpg,7d113c59c0858876fa10c1377765a72547d8805f8af0eec6496735a48fba435d.jpg,dc50d3db-f28d-4912-b587-c50739a15cc2,dc50d3db-f28d-4912-b587-c50739a15cc2.jpg,Y +SAMAN,김진율,jykim2@samaneng.com,jykim2,214004.jpg,4fabfe82086260549897938174ae0449cb1e2dec701e3bc80a9caac229af056d.jpg,170857a9-32e2-4c58-9911-e39cdf2e0e49,170857a9-32e2-4c58-9911-e39cdf2e0e49.jpg,Y +SAMAN,김진찬,jckim@samaneng.com,jckim,213082.jpg,af692f94217ab3ec4efc1515bc347d748a177c6b3629cd1f79d18ae532dcfb68.jpg,65ae680e-256a-4029-90ae-8772ff6c6f35,65ae680e-256a-4029-90ae-8772ff6c6f35.jpg,Y +SAMAN,김진철,jckim2@samaneng.com,jckim2,223101.jpg,6718ec57d9eca4d4d1ef65c5b54068daf2e94ec0e2a82bd44ec1083358ee3c9d.jpg,78f651bb-829d-4290-ab27-3d3ed27c67c7,78f651bb-829d-4290-ab27-3d3ed27c67c7.jpg,Y +HANMAC,김진토,jtkim2@hanmaceng.co.kr,jtkim2,M26014.jpg,2a577d742af02d557781fba65ab973de0e2d61e57c338620aaa523ac8c2927b9.jpg,99ebe8dd-89e6-475d-a510-86142fcde0e5,99ebe8dd-89e6-475d-a510-86142fcde0e5.jpg,Y +SAMAN,김진혁,jhkim16@samaneng.com,jhkim16,218125.jpg,e6b193262b73e5fe852ff6f2dfdd7fc2962ea5c5f4663746aff180a8b5eeae9c.jpg,462cfff0-8ea0-4fae-9374-562942c80194,462cfff0-8ea0-4fae-9374-562942c80194.jpg,Y +SAMAN,김진현,jhkim26@samaneng.com,jhkim26,223256.jpg,fa57e231df621086a0d740b1be4268a2024bcb4fe90ab5cda081306fb5a2c239.jpg,204227d8-f3aa-4478-a8a3-2d23adb57921,204227d8-f3aa-4478-a8a3-2d23adb57921.jpg,Y +HANMAC,김진호,jhkim34@hanmaceng.co.kr,jhkim34,M24022.jpg,7a6cfe4cf3f60d21169d8497249f6a18d0adad03d170ecb753742f0d106e8ffe.jpg,4426515e-2e86-4f02-a168-d2722c799270,4426515e-2e86-4f02-a168-d2722c799270.jpg,Y +SAMAN,김진환,jhkim21@samaneng.com,jhkim21,222037.jpg,36302d8948ea16bb835f94ae51518f8319edf0673f09564ec0b6ea775fa84df7.jpg,8707f4ec-0e78-4673-af34-44240970a079,8707f4ec-0e78-4673-af34-44240970a079.jpg,Y +SAMAN,김진훈,jhkim17@samaneng.com,jhkim17,218165.jpg,ed7dc57b529030606499d5797202da4e597de2035297d272867d44d238840d8e.jpg,253fa02f-cfe4-4c23-a943-19be3b529357,253fa02f-cfe4-4c23-a943-19be3b529357.jpg,Y +HANMAC,김찬웅,cwkim@hanmaceng.co.kr,cwkim,B20303.jpg,88e7934605c30e080806ba65362fd6b6f91e3f44f2040380cbd7c1de79b2ae92.jpg,7d6cd7b2-8634-454c-a085-b644b62950c7,7d6cd7b2-8634-454c-a085-b644b62950c7.jpg,Y +HANMAC,김찬호,chkim4@hanmaceng.co.kr,chkim4,M23052.jpg,a5c7b973522d5a1bf8bd7732af2cf55266777dd150b7420a82bef9a2d05c3408.jpg,e1b49f53-6101-481f-9afe-a7407ae337ea,e1b49f53-6101-481f-9afe-a7407ae337ea.jpg,Y +HANMAC,김창섭,cskim@hanmaceng.co.kr,cskim,M22035.jpg,91774a751e3f073c0c0d527bb304430193aad29bdd2833fee1fda5171758c6aa.jpg,19a595b9-48d9-43d4-be7d-a97b2db8625a,19a595b9-48d9-43d4-be7d-a97b2db8625a.jpg,Y +SAMAN,김창업,cekim@samaneng.com,cekim,221106.jpg,685090cc5f1943f7479d02fe6c698494e0312289b0418c0eb8361355673e1164.jpg,1355c700-b6b6-4dd9-90dc-ad824392373e,1355c700-b6b6-4dd9-90dc-ad824392373e.jpg,Y +SAMAN,김창환,chkim3@samaneng.com,chkim3,205249.jpg,7e0771d6772aa62c16f4723ce135412fe306cbb64dd946ac8b0bf655983d0776.jpg,6356eeb4-4855-49f5-9784-751cb017345b,6356eeb4-4855-49f5-9784-751cb017345b.jpg,Y +SAMAN,김채윤,cykim@samaneng.com,cykim,224333.jpg,4a3273d63d0224d52e6e33d170be5b10076269661dfb75fbc2db38614d6e5353.jpg,6e11aa75-7446-4ad5-90be-0e1b89a9f7a8,6e11aa75-7446-4ad5-90be-0e1b89a9f7a8.jpg,Y +SAMAN,김천주,cjkim@samaneng.com,cjkim,223236.jpg,def1ca7aa6b0d8595d76ed7e94d0341dd1e1524503c1e2b75b63f64246cf3186.jpg,acfec4f8-4589-4dec-9915-59f5c3ecd04b,acfec4f8-4589-4dec-9915-59f5c3ecd04b.jpg,Y +SAMAN,김철규,ckkim@samaneng.com,ckkim,223074.jpg,9d1c17d9488e8b60242273904d18eefe7e708fc2b245587b01a243f5935409af.jpg,f8953aa4-9543-4e6c-8324-c899e52b9f20,f8953aa4-9543-4e6c-8324-c899e52b9f20.jpg,Y +SAMAN,김철년,cykim1@samaneng.com,cykim1,225249.jpg,cdee1deac5766ec068197620116f4879d4ebed4a1f4f934678d5429f1e2194e3.jpg,08dc823d-6d9a-42e3-9900-e69dd062f0f2,08dc823d-6d9a-42e3-9900-e69dd062f0f2.jpg,Y +SAMAN,김철호,chkim@samaneng.com,chkim,224127.jpg,2c1d65bec65cff63c2af17c13e429f22f79fc39172a6dbd3bb91d0f3e59cdf72.jpg,f0a9cb22-adef-40f6-a43e-c8123207278b,f0a9cb22-adef-40f6-a43e-c8123207278b.jpg,Y +HANMAC,김춘근,cgkim@hanmaceng.co.kr,cgkim,M21413.jpg,7d34814f5f04172e26c49566d836476074aa1c5dcafe3f62802f754a443a6196.jpg,6afe5cc1-cf03-4cbe-9a7f-68ff08adb7d5,6afe5cc1-cf03-4cbe-9a7f-68ff08adb7d5.jpg,Y +SAMAN,김치은,cekim1@samaneng.com,cekim1,224021.jpg,a867dd5b8f353b7dbb1bd37255cc28f49e0d15d4a8c3b6c1c3e63cd8bcefdb36.jpg,4077eb5e-fe13-4e62-8a85-5eba3aa70e1f,4077eb5e-fe13-4e62-8a85-5eba3aa70e1f.jpg,Y +SAMAN,김태상,tskim1@samaneng.com,tskim1,225255.jpg,290c2f66359249c00bca76fa3e063fc4210961e34664de769115ed98d9c12eee.jpg,2ab9e960-d4c1-46e2-8e7c-290bcf9d861f,2ab9e960-d4c1-46e2-8e7c-290bcf9d861f.jpg,Y +SAMAN,김태식A,tskim@samaneng.com,tskim,222182.jpg,1e379b7473441e209c49d91575f5b744ac4fa81fd567d3b70d26967503d776bf.jpg,f6a3c374-9619-4d69-855f-3e8dbd3acf50,f6a3c374-9619-4d69-855f-3e8dbd3acf50.jpg,Y +HANMAC,김태식,tskim2@hanmaceng.co.kr,tskim2,M21451.jpg,adbe2493516fc60cff97d199706d919cb6fac2425bc82d26a88cc8bc0a8c7144.jpg,e3f2b94a-881c-4986-b558-e0525f6d19eb,e3f2b94a-881c-4986-b558-e0525f6d19eb.jpg,Y +HANMAC,김태연,tykim3@hanmaceng.co.kr,tykim3,M20306.jpg,b4314fab21c16c70c82cff236dca215636447819db876563dbe22d6644338138.jpg,5caba327-7c52-46e2-b1bc-da50fd47a420,5caba327-7c52-46e2-b1bc-da50fd47a420.jpg,Y +SAMAN,김태용,tykim@samaneng.com,tykim,226107.jpg,159afe499412c785446e69ddb9b01f26996a60c76553cba966c16f2508e88cf6.jpg,a3d2b24d-fd04-4d4a-95ff-ba29cfbd0273,a3d2b24d-fd04-4d4a-95ff-ba29cfbd0273.jpg,Y +HANMAC,김태우,twkim@hanmaceng.co.kr,twkim,M20327.jpg,434a76c3ef95a0ea6816a130c1d55848c50509fbe675aeed30f935a72612ed69.jpg,138506c0-6432-4b11-b9ef-19882089d4f8,138506c0-6432-4b11-b9ef-19882089d4f8.jpg,Y +SAMAN,김태욱,tukim@samaneng.com,tukim,225380.jpg,68f121dc4dbae1ad374af4eaede3f0831036c05c2d4927bd34b2d0a64736112e.jpg,3f8335c7-36cd-44b8-afca-b5999585e809,3f8335c7-36cd-44b8-afca-b5999585e809.jpg,Y +HANMAC,김태욱,twkim2@hanmaceng.co.kr,twkim2,M23006.jpg,646585ed3b1382b725542419219cebbf45da8ebf52034c4d271b46d8f82a3833.jpg,6fb32a0e-2493-4db6-bc46-e8b8e3d09cf4,6fb32a0e-2493-4db6-bc46-e8b8e3d09cf4.jpg,Y +HANMAC,김태윤,tykim2@hanmaceng.co.kr,tykim2,M20312.jpg,8744fee10a93d91a9f8ee2062caf3575c0702000be2a5a98cd7cae27bd7abc91.jpg,bb540531-e4bd-4d55-a5b3-30e2987c4d93,bb540531-e4bd-4d55-a5b3-30e2987c4d93.jpg,Y +SAMAN,김태헌,thkim4@samaneng.com,thkim4,221236.jpg,67e8114c3464ddc06ae8d1e43467b52e4ad78477505091254d0a1e76c66eba9c.jpg,0e319818-444a-4091-bce3-a038b044672c,0e319818-444a-4091-bce3-a038b044672c.jpg,Y +SAMAN,김태현,thkim5@samaneng.com,thkim5,223022.jpg,55a40f77e821c100fceaa5ba44a76dd297b9d2633cdb8c370d4e33825622969e.jpg,755c9e82-4030-4100-bab3-26e7a8ba8d75,755c9e82-4030-4100-bab3-26e7a8ba8d75.jpg,Y +SAMAN,김태호,thkim@samaneng.com,thkim,218083.jpg,f18f9bdaf502736e008a6e7a50325c7ac5638ae888efd93ec715a233f2a62625.jpg,4e1bf9b4-cbe9-402a-9aac-36f69f89e37c,4e1bf9b4-cbe9-402a-9aac-36f69f89e37c.jpg,Y +SAMAN,김태훈,thkim1@samaneng.com,thkim1,217041.jpg,97dcb69fe520120db41a9d361909a43e738b843b103217f3d8c37bd860d8755e.jpg,d9f3c0fa-3144-4582-b385-3292cbee9277,d9f3c0fa-3144-4582-b385-3292cbee9277.jpg,Y +SAMAN,김택규,tkkim2@samaneng.com,tkkim2,207253.jpg,76feac3a5fa7fd15d2703825d4f3892c6487348104c4a3fb8d8d5eabe9f39688.jpg,6b011ebe-0057-4f2b-bf99-b5bf7ea31365,6b011ebe-0057-4f2b-bf99-b5bf7ea31365.jpg,Y +SAMAN,김택중,tjkim2@samaneng.com,tjkim2,216145.jpg,4000134c7ecbf89b649917d407bd6a393a12a59c74ac8a79d590cc5b8eeadabc.jpg,ceb29a5b-9ee4-4b7a-8f6a-99fcd0341b3d,ceb29a5b-9ee4-4b7a-8f6a-99fcd0341b3d.jpg,Y +SAMAN,김하은,hekim@samaneng.com,hekim,193023.jpg,bea245e6c2841e03245981ff05b4c974743243a957a2ecaa347ecd9c1f45d334.jpg,b38ff7c1-9093-42b2-b55a-ab536659f52c,b38ff7c1-9093-42b2-b55a-ab536659f52c.jpg,Y +SAMAN,김학성,hskim8@samaneng.com,hskim8,220182.jpg,f0489acfb6a791756d321f0fa21144b73289f66bcc2724172d14f015c46b3bed.jpg,25662356-98fd-4d6e-95bf-411bc44e7431,25662356-98fd-4d6e-95bf-411bc44e7431.jpg,Y +SAMAN,김학재,hjkim9@samaneng.com,hjkim9,225059.jpg,733d02d98942bf39d11f240544d7d2a5cfdaa276a52f3edd125c4d77ccaee19b.jpg,6a78222d-664f-43ae-9bbc-c04fb9138426,6a78222d-664f-43ae-9bbc-c04fb9138426.jpg,Y +SAMAN,김한결,hgkim5@hanmaceng.co.kr,hgkim5,217081.jpg,faaa3b8bae0e6eaa858c8d4b59bc3ebca0e1b447782c32ce89758232cf670861.jpg,0bbf8c79-05af-4f2a-871e-7d3bd6c648e7,0bbf8c79-05af-4f2a-871e-7d3bd6c648e7.jpg,Y +SAMAN,김한별,hbkim@samaneng.com,hbkim,226077.jpg,84ad84c3677f3c31b88c813d28714dbddfc4fbab0ec895107fbe80e5fdc1bc90.jpg,e3b70ab2-b677-46c8-8385-a2bcd9aeef53,e3b70ab2-b677-46c8-8385-a2bcd9aeef53.jpg,Y +SAMAN,김해강,hkkim3@samaneng.com,hkkim3,225096.jpg,9ae9588a4c724b1c233ec66847f1a3fd23756191a71210a9a5acaf8139591f5a.jpg,c9f1862e-501e-4269-b5a7-2d9370607ef2,c9f1862e-501e-4269-b5a7-2d9370607ef2.jpg,Y +SAMAN,김해동,hdkim@samaneng.com,hdkim,225064.jpg,a9efb953bd1607a657a91364b1d401ba3057af00e082ba4ad53befed1b79e647.jpg,88a6c787-6546-4f7a-ba1f-e3519e179ff7,88a6c787-6546-4f7a-ba1f-e3519e179ff7.jpg,Y +PTC,김해성,hskim15@brsw.kr,hskim15,P17202.jpg,32676ba9bc4d45e2e71eed94d305807a1c0f888086da1b12d1da3c4c4e39bfc4.jpg,8363b252-c1ad-4bd5-81df-7e90532a4e71,8363b252-c1ad-4bd5-81df-7e90532a4e71.jpg,Y +SAMAN,김혁,hkim@samaneng.com,hkim,225341.jpg,9b60e90cbcece323e16906f46a8431d0f28442389a3b9b4a27479ba73a4a9d8c.jpg,8b2addb7-8c64-471e-94ec-97b5001b8c7c,8b2addb7-8c64-471e-94ec-97b5001b8c7c.jpg,Y +SAMAN,김현경,hkkim1@samaneng.com,hkkim1,199044.jpg,6c5213db15e53512d675e3ec9afba3e588a8e8fa0c7e62aa6c573870d5db0f85.jpg,7df22d12-0d6a-43d9-ae20-1476e17ea9d6,7df22d12-0d6a-43d9-ae20-1476e17ea9d6.jpg,Y +SAMAN,김현길,hgkim2@samaneng.com,hgkim2,221056.jpg,8c042144dce9ad6092a4e76eef008443791c7844fd3236770d1709056c941de5.jpg,a241b09c-46ce-4064-b1e9-96289bc13bed,a241b09c-46ce-4064-b1e9-96289bc13bed.jpg,Y +SAMAN,김현민,hmkim@samaneng.com,hmkim,225062.jpg,dfe4463b3e7f03114b27880f3d4ade6f64f8dc76017659029d41482db6c512bd.jpg,4863879f-6200-41be-976c-722a019a9009,4863879f-6200-41be-976c-722a019a9009.jpg,Y +SAMAN,김현섭,hskim7@samaneng.com,hskim7,219054.jpg,79e14e82b97b96a17cddcae416c591a0539b8647f706ee8658f988ae8b96ea55.jpg,c3839ec0-4db2-48fe-833f-2e988be28a70,c3839ec0-4db2-48fe-833f-2e988be28a70.jpg,Y +SAMAN,김현수,hskim11@samaneng.com,hskim11,221299.jpg,15d00aa4fa64593f2c799d91bb546c4b69bb5cf06e6689754edef166115717f1.jpg,2977e3a4-1085-4290-bbef-f0cb5c652d20,2977e3a4-1085-4290-bbef-f0cb5c652d20.jpg,Y +SAMAN,김현수,hskim9@samaneng.com,hskim9,224143.jpg,ae42108b016aa1e2ed8b8ef4769c3c6322ae2a15a1fb545800273beec9d071e6.jpg,c2075a0b-0ab9-4577-9821-99507729f03b,c2075a0b-0ab9-4577-9821-99507729f03b.jpg,Y +HANMAC,김현수,hskim14@hanmaceng.co.kr,hskim14,M22033.jpg,fe0a0194fe8bd73a3db4a8019b21af13f01f76aab3c4fdd58ff6fe270f545c34.jpg,382cb33a-2681-493e-b80b-c675d0c61ae7,382cb33a-2681-493e-b80b-c675d0c61ae7.jpg,Y +SAMAN,김현아,hakim@samaneng.com,hakim,024086.jpg,4d95d683d4d561f2705c3eccbd41332c7d715e24036ec97534e825137f9c71d0.jpg,fc9f9aa6-b4df-4ca0-8373-1512b1971c9d,fc9f9aa6-b4df-4ca0-8373-1512b1971c9d.jpg,Y +SAMAN,김현일,hikim@samaneng.com,hikim,219001.jpg,343c7fea11fa8917d4014cc90b646f30752a4b0fb726b0c5957402a51af55982.jpg,05b2b4e4-c07a-4e8a-bacd-a13313e5e6a8,05b2b4e4-c07a-4e8a-bacd-a13313e5e6a8.jpg,Y +SAMAN,김현철,hckim@samaneng.com,hckim,205275.jpg,2606efadd6025909f2437a0b8255804739fda31d96516cc6a9461afdaf86d77c.jpg,939628c1-6498-4fc8-a5e5-e20a2dec3807,939628c1-6498-4fc8-a5e5-e20a2dec3807.jpg,Y +SAMAN,김형건,chunryung@samaneng.com,chunryung,221168.jpg,0b39495ebbd6ee1ca534383c014122df73f6ae6fa2be81099733efaf29ae9576.jpg,1818cabc-c043-49ff-a890-7b5503b488f2,1818cabc-c043-49ff-a890-7b5503b488f2.jpg,Y +SAMAN,김형규,hgkim3@samaneng.com,hgkim3,224364.jpg,037189dacb86cbbe35674b5227916e8a0167123ade11f482501a3b5d065a342b.jpg,843b1665-3458-41ea-94c9-5f8ed35cf6c0,843b1665-3458-41ea-94c9-5f8ed35cf6c0.jpg,Y +SAMAN,김형기,hgkim1@samaneng.com,hgkim1,220260.jpg,9439e44656416a89b8426b8739342c62147937b1d578a5119c70e19821110f6f.jpg,d9dc8303-876a-4046-bd60-27871a7881e9,d9dc8303-876a-4046-bd60-27871a7881e9.jpg,Y +SAMAN,김형배,hbkim87@samaneng.com,hbkim87,223106.jpg,b13dccb899b21b86d2bde948e8553cce4caa80c3ed6f9a1992e4c1a97ec3ef09.jpg,9aeaccbb-57b5-417a-945f-5899610a9f1c,9aeaccbb-57b5-417a-945f-5899610a9f1c.jpg,Y +HANMAC,김형주,hjkim13@hanmaceng.co.kr,hjkim13,M24052.jpg,5a929355bcbdcdf7287506a3fe481ef956fd30348cca5d09abcbd3b2d50cec84.jpg,87ad6ed0-890e-4690-9166-ea93b2f32451,87ad6ed0-890e-4690-9166-ea93b2f32451.jpg,Y +SAMAN,김형준,hjkim@samaneng.com,hjkim,199120.jpg,7d138e0a2442e813cdf744f8f33487c48d39143398ba852db3f2df3190089d0d.jpg,bfad7caf-0949-4853-acaa-22967b0241a2,bfad7caf-0949-4853-acaa-22967b0241a2.jpg,Y +SAMAN,김형준,hjkim2@samaneng.com,hjkim2,221044.jpg,9a30db941a34eb37a26e6b4d05e162040ce7de438b7e85cee216627d73ffe119.jpg,9982dba7-056e-4a53-bc1f-04cf9e6c6a09,9982dba7-056e-4a53-bc1f-04cf9e6c6a09.jpg,Y +SAMAN,김형준,hjkim11@samaneng.com,hjkim11,225217.jpg,73724466f35e94fe33a7d0d951e084b7be008ff8a32c88087c629a9e0e5e5447.jpg,fafa80f7-ded8-4bf3-bcd3-c8a47a0ace1f,fafa80f7-ded8-4bf3-bcd3-c8a47a0ace1f.jpg,Y +SAMAN,김형진,hjkim7@samaneng.com,hjkim7,225330.jpg,2293a67d536568a6a7b1652bc59763b7fd3a0a8a2a3ba21cffe14683fc75c759.jpg,2c6f5c16-182e-40fb-b1ef-0fa83f3a4ff5,2c6f5c16-182e-40fb-b1ef-0fa83f3a4ff5.jpg,Y +SAMAN,김혜미,hmkim1@samaneng.com,hmkim1,025030.jpg,f690deada5a3374ebbc50e1512cc6268f892a9fe9cfa9f2f85556c87e1d617ec.jpg,2ce113a4-4a26-4734-ba03-71bfc890866e,2ce113a4-4a26-4734-ba03-71bfc890866e.jpg,Y +SAMAN,김혜민,hmkim2@samaneng.com,hmkim2,226125.jpg,110ae1bcae06511ffe75b7e75e0a2648c028adc11cb2f593e85182e255c5a919.jpg,ca352ce2-b8ba-4bee-a8c2-73221c5b8a1d,ca352ce2-b8ba-4bee-a8c2-73221c5b8a1d.jpg,Y +SAMAN,김혜인,hikim2@samaneng.com,hikim2,222123.jpg,db291e07bfd146c54100ea68f5b27a331d294f5d51f95ff5eec10284dca73d28.jpg,d501825a-b805-4a4d-8258-faab2723534d,d501825a-b805-4a4d-8258-faab2723534d.jpg,Y +SAMAN,김혜지,hjkim1@samaneng.com,hjkim1,220225.jpg,5c9811c045520fb6725a431cd394e60cf2c7a831b12510069ecc781b09fb15e9.jpg,e2132b43-1773-4514-9fd8-13386f3c378f,e2132b43-1773-4514-9fd8-13386f3c378f.jpg,Y +SAMAN,김호영,hykim1@samaneng.com,hykim1,205002.jpg,e22de1a32e0a06df06869790bc9952d44ce0aea068fdd35f0a39f7aec5017d7c.jpg,4d61ed5b-0761-438d-88f8-bbad8de70ffb,4d61ed5b-0761-438d-88f8-bbad8de70ffb.jpg,Y +SAMAN,김호중,hjkim10@samaneng.com,hjkim10,210077.jpg,3dbdac400690ea04e269bdfb3fe84563d8638fddfbe23752a2de99ebeba9efb2.jpg,1e64e3f4-949a-4960-a0f9-5644da441b18,1e64e3f4-949a-4960-a0f9-5644da441b18.jpg,Y +SAMAN,김홍석,hskim4@samaneng.com,hskim4,203189.jpg,881843b72e4ed9a2829f815e6821cb64de210edc4f3a47a3cfe78006fc25016b.jpg,7d9ee669-9d99-4e6e-ba13-102ddf829c7e,7d9ee669-9d99-4e6e-ba13-102ddf829c7e.jpg,Y +SAMAN,김홍석,hskim13@samaneng.com,hskim13,222180.jpg,f21502a4262bcc2f352e266f274757057f84a0a9b59be0c3c9e98ccc2a032889.jpg,5b091add-12eb-4cc5-8f6f-6923de7f5743,5b091add-12eb-4cc5-8f6f-6923de7f5743.jpg,Y +HANMAC,김홍태,htkim@hanmaceng.co.kr,htkim,M16513.jpg,8e526df8c5b37806dfe3a2fcfb914bb80d3a29d45a5327a357a5cd5a81af5c88.jpg,bc52d3b3-6d87-4483-b50c-61f5d37bf074,bc52d3b3-6d87-4483-b50c-61f5d37bf074.jpg,Y +SAMAN,김화영,hykim@samaneng.com,hykim,223202.jpg,cd744778f0dcd69c6f7ddf2040147b049e7fe38714eaec5c37bd8512bf8c5d99.jpg,f75658bd-5fa6-4477-ae37-de824e4fc48a,f75658bd-5fa6-4477-ae37-de824e4fc48a.jpg,Y +SAMAN,김화영,hykim2@samaneng.com,hykim2,025117.jpg,6e8451203007d4d94678d4226eb295b98ac496a04b01949f35e1fcdd558f5bc7.jpg,d609d703-5f04-42f8-991d-54568101bd16,d609d703-5f04-42f8-991d-54568101bd16.jpg,Y +SAMAN,김효근,hgkim4@samaneng.com,hgkim4,226063.jpg,584199f36632668bb6faaad3dc216c7e94a1c0162b949c08e0ee7432a4ecd982.jpg,c4c5a726-78b3-4b90-b0ad-ee4c5fa93e22,c4c5a726-78b3-4b90-b0ad-ee4c5fa93e22.jpg,Y +HANMAC,김효진,hjkim12@hanmaceng.co.kr,hjkim12,M25038.jpg,7c1837d3c86476c3419e4b14c6aea73bbefeb28a6588e8710ca034e008e00ede.jpg,3bbeaf14-1c75-4704-972e-1d2bbd67474e,3bbeaf14-1c75-4704-972e-1d2bbd67474e.jpg,Y +SAMAN,김희각,hkkim2@samaneng.com,hkkim2,225331.jpg,e9a6c2408995e446c4283d86db30cabb828f1c361afef84d936a9ffa9dfc3527.jpg,18614ce7-7af4-4b57-916c-54b0f21d5853,18614ce7-7af4-4b57-916c-54b0f21d5853.jpg,Y +SAMAN,김희석,hskim3@samaneng.com,hskim3,215040.jpg,d1224a932ccf12f7842e343d16b6737bd3ad2cbf9fa7d720778d4d56a1a10242.jpg,13734374-cfce-4348-b948-f9e3b6d6ba61,13734374-cfce-4348-b948-f9e3b6d6ba61.jpg,Y +SAMAN,김희석,hskim5@samaneng.com,hskim5,226145.jpg,3b2a560cae8a02a8bbc33b35f1c446dcd6e7197e78d8fbf9b98a42997c2bd8c7.jpg,e5e54e9c-b2cf-4cfd-9b8c-319b2337cf3d,e5e54e9c-b2cf-4cfd-9b8c-319b2337cf3d.jpg,Y +SAMAN,김희선,hskim@samaneng.com,hskim,209231.jpg,58ae013dc6638e7ca515d8bb364cf4e2a2c285ad6ff135acf0d877789147bb16.jpg,c7c7f789-8227-44f2-a012-8f2119c43d2a,c7c7f789-8227-44f2-a012-8f2119c43d2a.jpg,Y +SAMAN,김희찬,hckim3@samaneng.com,hckim3,224089.jpg,d48a271c1ef3ba089dfae825f7c86bdedeb9dbd64c88636fd172cd70f6a8cd88.jpg,b913264d-e4b0-4a4f-94a8-37195171ca1e,b913264d-e4b0-4a4f-94a8-37195171ca1e.jpg,Y +SAMAN,김희철,hckim4@samaneng.com,hckim4,225083.jpg,12045d338588ab87cf6287327dbf813c78d512d1b76210e3de76e3f291ecc853.jpg,2aff539e-3bc8-4c7f-99c9-2ebce4aee531,2aff539e-3bc8-4c7f-99c9-2ebce4aee531.jpg,Y +SAMAN,나광호,khna@samaneng.com,khna,225233.jpg,cbbd58cc2fed5a84b8f39915b4a5fff0804d66f93ad11c277a36bddbdf202466.jpg,f851ae0c-47dd-438a-a8a9-0b72a897a387,f851ae0c-47dd-438a-a8a9-0b72a897a387.jpg,Y +SAMAN,나금란,krna@samaneng.com,krna,026065.jpg,e90c4a7fca44cd51e53cb53c9d6cee71d205db9fcc58e4c980f562838f1ec24e.jpg,07b4a17f-b228-4539-9bbd-602c71b14704,07b4a17f-b228-4539-9bbd-602c71b14704.jpg,Y +SAMAN,나대성,dsna@samaneng.com,dsna,226081.jpg,6766bb5714c03369b30950f4c0b355f53b38e3d5898e38071332281038809fa3.jpg,6d6d2764-e706-411f-8488-dcae27012440,6d6d2764-e706-411f-8488-dcae27012440.jpg,Y +SAMAN,나선채,scna@samaneng.com,scna,225164.jpg,19e5fd59039c08fb5c4cfbeeb8909a3dea379b1b04a49405215fcef3e521149e.jpg,d77b8c0d-8f44-42f1-bab6-d87a6981c6e8,d77b8c0d-8f44-42f1-bab6-d87a6981c6e8.jpg,Y +SAMAN,나쉬,reyes@samaneng.com,reyes,223350.jpg,c56a3781c6de79a1121348fec28e82467fcab043050c23447d4895abffbf06be.jpg,3c56ccf6-d3e0-44a7-aeb6-c461c06c9f5b,3c56ccf6-d3e0-44a7-aeb6-c461c06c9f5b.jpg,Y +SAMAN,나영희,yhna@samaneng.com,yhna,024073.jpg,21ce279d6ac124883bd62096f17fab3a198e658dbd224e2a31a5922560c62216.jpg,3ef1bf15-4dfc-4af9-be59-abbcdb521e2e,3ef1bf15-4dfc-4af9-be59-abbcdb521e2e.jpg,Y +HANMAC,나원준,wjna@hanmaceng.co.kr,wjna,M25014.jpg,364a479d627e53259967a54b051aaeb534a227194299862e2d5b5b3021218880.jpg,e34d9d37-f4cc-4ea4-b9ec-14496f764d1e,e34d9d37-f4cc-4ea4-b9ec-14496f764d1e.jpg,Y +SAMAN,나한범,hbra@samaneng.com,hbra,220166.jpg,35a61e353839febefc1d2a4d89e4176dee13cc51f46caa1f39f4a43ef2d5946d.jpg,ce827500-27f2-467f-ae3c-2150c171758f,ce827500-27f2-467f-ae3c-2150c171758f.jpg,Y +SAMAN,남건호,ghnam@samaneng.com,ghnam,225296.jpg,eefabe8e7ec05dab5df80ca7d742744f1da20e2c4397ff20efc0436711300195.jpg,f58d36c4-cc20-4c0e-a646-0d8bffce528b,f58d36c4-cc20-4c0e-a646-0d8bffce528b.jpg,Y +HANMAC,남궁성,snamkung@brsw.kr,snamkung,B15306.jpg,0488b10147fecc3a40c9cb004ada030c956afba030c3c24585a49c152eef53e8.jpg,23772de9-a408-46e7-8f53-ae7cfb01c09b,23772de9-a408-46e7-8f53-ae7cfb01c09b.jpg,Y +SAMAN,남궁영환,yhnamgoong@samaneng.com,yhnamgoong,225088.jpg,42f83c06822d68ad39b74142e4e97905cc03dde971afc3d5f693bc6d602652c8.jpg,6f841095-6261-487e-9639-6fb7e80fda91,6f841095-6261-487e-9639-6fb7e80fda91.jpg,Y +HANMAC,남궁찬,cnamgung@hanmaceng.co.kr,cnamgung,M22032.jpg,7da0facd2424eedb3fc44e5553905dfd555bb86a708166d3b397235f59c79bed.jpg,afec7d83-1eaf-4aa6-a102-39cddb995c53,afec7d83-1eaf-4aa6-a102-39cddb995c53.jpg,Y +HANMAC,남동윤,dynam@hanmaceng.co.kr,dynam,M14219.jpg,c3005fa9a476954f923fa8d7a17efc17762b8c1e9367bdcd421c91feafeba20b.jpg,97aa6e7c-cb17-4ee2-ab50-646a3f4b0485,97aa6e7c-cb17-4ee2-ab50-646a3f4b0485.jpg,Y +SAMAN,남명우,mwnam@samaneng.com,mwnam,226044.jpg,73a8af92997d9941fbf161101bdb79a7870afc5a47fc5f30e4fb4d4c9dc056d3.jpg,68529429-5dba-46c9-b99b-4717f3b7b0dd,68529429-5dba-46c9-b99b-4717f3b7b0dd.jpg,Y +JANGHEON,남수용,synam@brsw.kr,synam,J25506.jpg,24d266e34884a098b1f1b46f09695ea4a2fad045f2cc51baf66d6ed971eea5dc.jpg,747a260b-0f41-4c95-91f6-d44f696381d3,747a260b-0f41-4c95-91f6-d44f696381d3.jpg,Y +SAMAN,남웅비,wbnam@samaneng.com,wbnam,224150.jpg,0d5475d1bcef1fb871052c079a506d2a51b6a6715ea0fab7e0c0d3392417f2ab.jpg,61043d41-e829-486b-8b45-6a4a1cf23eec,61043d41-e829-486b-8b45-6a4a1cf23eec.jpg,Y +SAMAN,남윤우,ywnam@samaneng.com,ywnam,221282.jpg,1417d8576aab2768278cf9575ed5fa388b665bd68645524601db38c5134ed2d5.jpg,09d58fd7-a7a5-4f71-b897-2159909d945d,09d58fd7-a7a5-4f71-b897-2159909d945d.jpg,Y +SAMAN,남일우,iwnam@samaneng.com,iwnam,218058.jpg,230617c7aedc9f9654b0722fa698f025abb831a694bd236f53b95fc4029f3f10.jpg,d0cba740-e1a6-469a-ae7b-615cab2c0477,d0cba740-e1a6-469a-ae7b-615cab2c0477.jpg,Y +SAMAN,남재준,jjnam@samaneng.com,jjnam,218140.jpg,d333495888a116614d85cb52d84b8c8c67a255c8eb17960d02f5f6b42e16d074.jpg,1047adcf-f508-4931-b062-63d1eedcd93b,1047adcf-f508-4931-b062-63d1eedcd93b.jpg,Y +SAMAN,남지호,jhnam@samaneng.com,jhnam,223186.jpg,2e8173ece280ad00bd9491777ee7d24051389bf6d400108f62d573ebe9f618f3.jpg,aa67bd95-30a0-4cde-8bf7-0d4bcce81ca4,aa67bd95-30a0-4cde-8bf7-0d4bcce81ca4.jpg,Y +HANMAC,노경국,ggnoh@hanmaceng.co.kr,ggnoh,M07313.jpg,4e647e77b05cd2dce7d8c8dde9dcfdaf06006d4dd4977473c97fb41ba4b2fe6a.jpg,a0296698-4a02-46c2-bfe0-9c1a9e8d8e11,a0296698-4a02-46c2-bfe0-9c1a9e8d8e11.jpg,Y +SAMAN,노경희,khnoh1@samaneng.com,khnoh1,223346.jpg,f7c10242c14c00b1ddc592a5b0cb6a08949054bc9382a7cf2288f35ad61b25f9.jpg,532a010a-de9a-4dd8-aa67-c26c85a97e0d,532a010a-de9a-4dd8-aa67-c26c85a97e0d.jpg,Y +SAMAN,노근호,khnoh@samaneng.com,khnoh,223063.jpg,b9bb0dc883fa9aa96732d451755b25eee2c8b4a7d6c48cc25e413e10634cf333.jpg,9a37df24-7a8d-4ba4-87d1-c9fba91e1a0c,9a37df24-7a8d-4ba4-87d1-c9fba91e1a0c.jpg,Y +SAMAN,노남욱,nwro@samaneng.com,nwro,221308.jpg,131faf0a13d68ebd965cd373eba2d3b048f04cf1dda79f84caaacd88734793eb.jpg,4d3a59e1-ee5c-4e39-93de-4783daa542c3,4d3a59e1-ee5c-4e39-93de-4783daa542c3.jpg,Y +SAMAN,노동환,dhnoh@samaneng.com,dhnoh,220235.jpg,c2356725af813346cfb063be4b4888217d7b181892297c21deea2d79c9d139f3.jpg,675d2a6c-7e14-4fef-94b1-a551dc25739e,675d2a6c-7e14-4fef-94b1-a551dc25739e.jpg,Y +SAMAN,노성호,shnoh@samaneng.com,shnoh,219158.jpg,4324d39a4e6c07296bfed8a6ad4df0aa9e8f5bb341538e2455224ceb458d451a.jpg,3cbfc2b3-1bb2-4b17-92a3-b225bfe9098c,3cbfc2b3-1bb2-4b17-92a3-b225bfe9098c.jpg,Y +SAMAN,노세종,sjnoh@samaneng.com,sjnoh,207255.jpg,263b2dcf8b72a5a2f300216afc5514272d82239fb7725f10b5292637eb9bd059.jpg,1faec360-34db-44b0-89ae-baed54ab0e2c,1faec360-34db-44b0-89ae-baed54ab0e2c.jpg,Y +SAMAN,노윤경,yknoh@samaneng.com,yknoh,207104.jpg,2aeab1cb775450457d8b4cba5e07b022bc7793f84855aef2789d001f4884f2c0.jpg,d86fa5ff-cb29-4ae5-95a4-d3c882c15b3c,d86fa5ff-cb29-4ae5-95a4-d3c882c15b3c.jpg,Y +SAMAN,노인호,ihnoh@samaneng.com,ihnoh,225182.jpg,817382646fcee93464d99444283e3b5fbaddb277a84e0dee335566e4cb276f66.jpg,c2103316-6fcd-4436-9ee2-82b32f1f7306,c2103316-6fcd-4436-9ee2-82b32f1f7306.jpg,Y +SAMAN,노정훈,jhroh@samaneng.com,jhroh,220007.jpg,ae12cb8e76586da3ee8e7f862b0b70002b1ff4fffd5713ee41da3806a4c4e592.jpg,acce5dae-86ed-424b-b7ba-36515e0ad584,acce5dae-86ed-424b-b7ba-36515e0ad584.jpg,Y +SAMAN,노주환,jhnoh1@samaneng.com,jhnoh1,189008.jpg,be902a325f339fc9fcb4260e7d20e9cd60935ac189e0593383e84e35c75b1430.jpg,6316af8b-0441-4974-8b36-25e1ec92dae5,6316af8b-0441-4974-8b36-25e1ec92dae5.jpg,Y +SAMAN,노준,jnoh@samaneng.com,jnoh,217155.jpg,c1bdc7a7b2f49d87e667bccf4c4abcbec3d690de47b3ddbf7b794ecb5f5a002f.jpg,a3af706f-e844-4835-90e6-2ba2b67ed7fe,a3af706f-e844-4835-90e6-2ba2b67ed7fe.jpg,Y +HANMAC,노태수,tsnoh@hanmaceng.co.kr,tsnoh,B21363.jpg,1dd06e43cd865593a53801c3b5d1eb8ba5bf2264c423d41d85b1b1cbdfed504d.jpg,49e30e7a-17dd-429f-97b1-ca0b021d4a6f,49e30e7a-17dd-429f-97b1-ca0b021d4a6f.jpg,Y +SAMAN,노해성,hsnoh1@samaneng.com,hsnoh1,225067.jpg,fee464e9cbbc773ab3db9fc56ed93db12894646e4e37338cd05cc34f86024b0d.jpg,b317ca8e-9157-4c98-92b5-ca470562a52b,b317ca8e-9157-4c98-92b5-ca470562a52b.jpg,Y +SAMAN,노현주,hjno@samaneng.com,hjno,215092.jpg,fab71733dfd1a07378911ec02b89f0ec0645dce43a9814c3f5f37b198b193aad.jpg,3e44ad35-2cf8-4509-bd84-510ba86b2152,3e44ad35-2cf8-4509-bd84-510ba86b2152.jpg,Y +SAMAN,노호석,hsnoh@samaneng.com,hsnoh,194061.jpg,61f5acd2582eb016e0e350b7c9de158f60ba406a6eeda5f84a30b85f3f711482.jpg,612810fd-cf9e-4938-bc4e-fda1c11ed1ee,612810fd-cf9e-4938-bc4e-fda1c11ed1ee.jpg,Y +SAMAN,류경애,karyu@samaneng.com,karyu,026016.jpg,aef6d00dd075c6982b7f8ce08dfee23e3f3763cdf7bf828ad9b82f000786e5fe.jpg,81e2695a-b376-4293-a6e5-0266dbe57497,81e2695a-b376-4293-a6e5-0266dbe57497.jpg,Y +SAMAN,류나경,nkryu@samaneng.com,nkryu,220031.jpg,3374104d4ff3b226a6e192b6a5dd9c6febd5b6192f4d37072aec14e941c38de1.jpg,b635a3eb-8913-47eb-8159-41e4e6d194a7,b635a3eb-8913-47eb-8159-41e4e6d194a7.jpg,Y +SAMAN,류동균,dgryu@samaneng.com,dgryu,222286.jpg,dac4712740f96c4ccb3c2aa868d294e50931045135311a28f262b09408187a08.jpg,9c2a0195-23db-4911-9ac0-659d7a1cae08,9c2a0195-23db-4911-9ac0-659d7a1cae08.jpg,Y +HANMAC,류동일,diryu@hanmaceng.co.kr,diryu,M24076.jpg,e2b32a1f7bff26cce9fcf8f90c39522f147dc3d756505179ec95d0c4ac00f179.jpg,47d34a30-7171-4681-8540-feede5bfc0fe,47d34a30-7171-4681-8540-feede5bfc0fe.jpg,Y +HANMAC,류성균,skryu@hanmaceng.co.kr,skryu,M25022.jpg,5b14a0da657d47df0371b3e8fda0a56b7712ae83c17d571f73a27c75f4e801ef.jpg,22967c34-601d-456f-bf10-9a8f0312e3d0,22967c34-601d-456f-bf10-9a8f0312e3d0.jpg,Y +SAMAN,류소열,syryu@samaneng.com,syryu,221023.jpg,ab570c46e2c934506971055816bc5a277bc37e2115bd61d79c4f72032eaa53f6.jpg,8c225e5c-23af-4472-a984-bdfed9446e98,8c225e5c-23af-4472-a984-bdfed9446e98.jpg,Y +SAMAN,류승하,shryu@samaneng.com,shryu,178006.jpg,8fba503104564654f0f6eb858fcb5d1285c04707d62ccb84806e12049108fb09.jpg,f35ac3ce-10fd-452b-bba4-a5f110db02ae,f35ac3ce-10fd-452b-bba4-a5f110db02ae.jpg,Y +HANMAC,류시우,swryu@hanmaceng.co.kr,swryu,M24057.jpg,a47f36f21bdf7f700f354c374de582f4cd807088b6e0d5f127fc85c33d264244.jpg,1a0414a7-730b-4198-a6c2-cb1b4611d5bd,1a0414a7-730b-4198-a6c2-cb1b4611d5bd.jpg,Y +SAMAN,류아현,ahryu@samaneng.com,ahryu,026067.jpg,c7bdadde6a8cd5bdcfef79ce2045c6f64bbe2b2ba4286ef66a2b1ce61eaed220.jpg,faff8ac8-549b-4c19-99e9-02a0a21b5916,faff8ac8-549b-4c19-99e9-02a0a21b5916.jpg,Y +HANMAC,류원준,wjryu@brsw.kr,wjryu,B24063.jpg,6b80fc805e11665f343cfbec20e145b6eed97fc02a7ecde0ba1a7138ae32def6.jpg,7f13daf2-fd19-47f1-8e3a-3f7d396b3d1a,7f13daf2-fd19-47f1-8e3a-3f7d396b3d1a.jpg,Y +SAMAN,류정현,jhryu@samaneng.com,jhryu,217127.jpg,b66dd758b0f0dc284ec648fc735490d9d6d1ae98906e40aa306165fa4d41ed4f.jpg,75c2a348-3166-4087-85f8-39e5c687dd48,75c2a348-3166-4087-85f8-39e5c687dd48.jpg,Y +SAMAN,류창수,csryu@samaneng.com,csryu,218088.jpg,6f100e9d16efd783de99b67f147f2b41899579699bb6ea250cc5aebdc80160de.jpg,1a6f7ae2-67f3-4061-80bc-b35713efa678,1a6f7ae2-67f3-4061-80bc-b35713efa678.jpg,Y +SAMAN,류태열,tyryu@samaneng.com,tyryu,225369.jpg,cf93f25e1bbcd4916035e3cd7dfc97fd8025f539e0c960a55d3e27ee8a5253e2.jpg,70d3366a-46a9-4a4c-857b-a32ee3d74fdf,70d3366a-46a9-4a4c-857b-a32ee3d74fdf.jpg,Y +SAMAN,류한솔,hsryu1@samaneng.com,hsryu1,218144.jpg,498d458db6a1c42c608188befefc8ac6db7bf758dbbc1a673a84dca54e35d2a3.jpg,8a0a26be-9210-457d-86b1-ac177ab6c1ce,8a0a26be-9210-457d-86b1-ac177ab6c1ce.jpg,Y +SAMAN,류호성,hsryu2@brsw.kr,hsryu2,216172.jpg,8727f0c34cb26224c724acac3671ba8089c835705305e38225584ef9ee91fe14.jpg,52c5340c-882a-44a3-aa88-6dacaa86de7e,52c5340c-882a-44a3-aa88-6dacaa86de7e.jpg,Y +SAMAN,류호진,hjryu@samaneng.com,hjryu,226056.jpg,2e0a22820880767b8e7f7d9cdfa451d837f61f4133766a4cdfe1963a10cb90d8.jpg,f53bd3a6-565b-41ec-aafe-a42f06d14b70,f53bd3a6-565b-41ec-aafe-a42f06d14b70.jpg,Y +SAMAN,마길동,kdma@samaneng.com,kdma,203119.jpg,82e87c51b07c54e9835c1dfc927d31b80281b914faa67a6072c74ca90f92d6cf.jpg,268992d2-62f7-4ca8-b48c-1f6f3e594fbb,268992d2-62f7-4ca8-b48c-1f6f3e594fbb.jpg,Y +SAMAN,마르코,marco@samaneng.com,marco,223105.jpg,99e120d4780abcff4142a15a599cc47089d85c674668462018cc38986c6ab54f.jpg,1d963202-2889-4470-b661-2cb31c358b92,1d963202-2889-4470-b661-2cb31c358b92.jpg,Y +SAMAN,마아람,arma@samaneng.com,arma,212098.jpg,e78761b3dcf77402de9c3b438105bdc7d2f50ba89c448ccbda817ccd6beebf12.jpg,db78c820-69b6-4592-a162-bc57da4815d2,db78c820-69b6-4592-a162-bc57da4815d2.jpg,Y +SAMAN,마준혁,jhma@samaneng.com,jhma,224040.jpg,380aba111a71629ed4d43a22b5690983a938d60fc88a5863b78adf05a4f9681c.jpg,34aec425-eb92-4d13-9fdc-5ea8952fd9ad,34aec425-eb92-4d13-9fdc-5ea8952fd9ad.jpg,Y +SAMAN,마희연,hyma@samaneng.com,hyma,223089.jpg,409612ce5a16f1ea1cc7438ebd80ed18bacb746695f36d18edd6336d4cd97534.jpg,fe58b60c-b004-4109-aead-6ae8c4aff7cc,fe58b60c-b004-4109-aead-6ae8c4aff7cc.jpg,Y +SAMAN,만경록,krman@samaneng.com,krman,220055.jpg,75fc5117bc465b1381a3357b3fb2f4b3eec2238ce1510af2057501680bc86f43.jpg,93bdcb15-a12d-4c0e-b282-3970f726f955,93bdcb15-a12d-4c0e-b282-3970f726f955.jpg,Y +SAMAN,명지홍,jhmyeong@samaneng.com,jhmyeong,218085.jpg,c259c0ae5f5cc01d89fb9ba6e85efab952051c3b31938de5134462674e45c8c3.jpg,ae9e732d-b9bd-4f01-b4f3-b50d45169223,ae9e732d-b9bd-4f01-b4f3-b50d45169223.jpg,Y +SAMAN,문경식,ksmoon@samaneng.com,ksmoon,190013.jpg,16ac5cf59f14af25791728ad1e06a537a493d9169fa12f75c8884410046eed49.jpg,bf0c9f8f-2071-4ad2-ac7a-fd5ce761f02b,bf0c9f8f-2071-4ad2-ac7a-fd5ce761f02b.jpg,Y +SAMAN,문광욱,gumun@samaneng.com,gumun,223214.jpg,5c9d0d470ebd8ff81152bd328ca91a011b1ab188014617bbfb48fd45cfa51dfe.jpg,84929a5a-6578-4fa3-9147-b30d361c5f73,84929a5a-6578-4fa3-9147-b30d361c5f73.jpg,Y +SAMAN,문규정,kjmoon@samaneng.com,kjmoon,222184.jpg,8d13b7491334a31bf294a18a88e186f15ea993a98c694db15be3d1bee4619b4c.jpg,bc0589f5-75f9-4e8b-94c5-a08a04b267ca,bc0589f5-75f9-4e8b-94c5-a08a04b267ca.jpg,Y +SAMAN,문기주,gjmoon@samaneng.com,gjmoon,225315.jpg,f51c4f980286cda15ee4d3afe4b4a110fef0d17168667eb32b4ec8dbf6a12174.jpg,803d9f66-2e8e-43bf-9d16-6d631bd977b4,803d9f66-2e8e-43bf-9d16-6d631bd977b4.jpg,Y +HANMAC,문남연,nymoon@hanmaceng.co.kr,nymoon,T04306.jpg,9130dcad13e508cb8afea88496ab5c8b2f195c6bda114e2db891a57842af42c4.jpg,7e30daf6-f912-4306-befc-478feb7b74cc,7e30daf6-f912-4306-befc-478feb7b74cc.jpg,Y +SAMAN,문미애,mamoon@samaneng.com,mamoon,210119.jpg,1ccf5d3491df3aa9274a877beba4d7c7f5e35d0f3686a78fe805160dda84bae8.jpg,72b4cfbf-5f8c-42bb-9489-ddda19fbf58f,72b4cfbf-5f8c-42bb-9489-ddda19fbf58f.jpg,Y +HANMAC,문백용,bymoon@hanmaceng.co.kr,bymoon,M02606.jpg,456d2bae51978c2b26e1030ef044d69a7767e0091b9c80370f2f213e3a253b9a.jpg,26861548-16e0-4ed1-b54b-627951ba73ec,26861548-16e0-4ed1-b54b-627951ba73ec.jpg,Y +SAMAN,문병묵,bmmoon@samaneng.com,bmmoon,224244.jpg,2eb19a0b462afbe94e8030bf2166bd14e57be4c34f3d8d5cbeca5df7945cc1fd.jpg,e2ce5179-ed1c-48cd-80a2-bf19a191bc65,e2ce5179-ed1c-48cd-80a2-bf19a191bc65.jpg,Y +SAMAN,문병창,bcmoon1@samaneng.com,bcmoon1,224292.jpg,550ff436e2f1eb3927a8d37e8be35bd551338715aa307a01c56047c3612f1381.jpg,9e03ac3d-b6cb-4ecc-a659-768d4a8e87d7,9e03ac3d-b6cb-4ecc-a659-768d4a8e87d7.jpg,Y +SAMAN,문병철,bcmoon@samaneng.com,bcmoon,204328.jpg,d1182db43c5b56fa09d8882f006fd852b695907cf4983e59d2971cddae006953.jpg,47fbfdb9-a58f-485a-8a0a-9b5488f9b908,47fbfdb9-a58f-485a-8a0a-9b5488f9b908.jpg,Y +SAMAN,문상봉,sbmoon@samaneng.com,sbmoon,220018.jpg,4aac0f1c602e27cc72c86c3f6d6b4cfec92f788ac606d7b936bbce27836b142c.jpg,71fa2410-71c6-4c68-acfa-4e72dc9edba3,71fa2410-71c6-4c68-acfa-4e72dc9edba3.jpg,Y +SAMAN,문석준,sjmoon@samaneng.com,sjmoon,225237.jpg,93b5a017ebe8ae9456987a21a5d50570e5c109cd31ac9f6f0ab2f15306514c23.jpg,2e920d9b-404a-42f8-ba8f-7e17e3e97cc6,2e920d9b-404a-42f8-ba8f-7e17e3e97cc6.jpg,Y +SAMAN,문성진,sjmun@samaneng.com,sjmun,216076.jpg,b3612a491fd2f8d758a8282b7acfcfa69011bcc84bd9cf6ad381cd90159ffe1d.jpg,d9fa5da9-636f-460e-99e1-2c18f620ce3a,d9fa5da9-636f-460e-99e1-2c18f620ce3a.jpg,Y +SAMAN,문소양,symoon@samaneng.com,symoon,220276.jpg,6dc513e82c2453e362f9fc3a6d118f9d8b8eb1c57836e9d11fa0fb97f151ac5b.jpg,3f35feba-e8fe-4bc8-9abd-9caf51900291,3f35feba-e8fe-4bc8-9abd-9caf51900291.jpg,Y +HANMAC,문수하,shmun@hanmaceng.co.kr,shmun,M25068.jpg,9ce1468987ebd62e6b06f1a097ba75413ff4bcaed9ec56d2f07c14b850fae9c5.jpg,22e70d85-59bd-44bf-bc15-821049615fb7,22e70d85-59bd-44bf-bc15-821049615fb7.jpg,Y +SAMAN,문수혁,shmoon1@samaneng.com,shmoon1,221206.jpg,724ceac80e0e913509ac284fbcaecf11618cf836fc86a1d9661de7d051247c53.jpg,d41720e7-54ff-480d-9e6f-e69b5d55ad02,d41720e7-54ff-480d-9e6f-e69b5d55ad02.jpg,Y +SAMAN,문영란,yrmoon@samaneng.com,yrmoon,222046.jpg,1f0fcf73bd996c6d3cc1dff8009031e59d482f8355192832beffc3cf9666d696.jpg,dfd4c028-444e-4752-abed-747b294398d3,dfd4c028-444e-4752-abed-747b294398d3.jpg,Y +HANMAC,문영석,ysmun@brsw.kr,ysmun,B20309.jpg,0bd3d15498c05d551996a2bfecc7f025e897b6b7a7746ddbbf7e3c27f1cadce0.jpg,9ebffde7-cdc4-4262-b5da-db18418c5212,9ebffde7-cdc4-4262-b5da-db18418c5212.jpg,Y +SAMAN,문용주,yjmoon@samaneng.com,yjmoon,202117.jpg,9340240d7d9478935afec07707ed564e4d81ae72e447c5fc9ebedceb2036877f.jpg,d4382742-857f-4678-a195-a91f0b0b4937,d4382742-857f-4678-a195-a91f0b0b4937.jpg,Y +SAMAN,문재훈,jhmoon1@samaneng.com,jhmoon1,226082.jpg,75dae7e57556b5dabd78451740952e15632ac2f3cec8fa8da39c72feeeefd1e5.jpg,d81a6b75-2d88-4012-adfa-2759bb952311,d81a6b75-2d88-4012-adfa-2759bb952311.jpg,Y +SAMAN,문제현,jhmoon@samaneng.com,jhmoon,217072.jpg,ae124cdccf994d01eb28818f819ffc8242e32fe9ff53a25e5b4e73d808b984ef.jpg,fe33b320-c1f4-4e66-ad20-db43585b2744,fe33b320-c1f4-4e66-ad20-db43585b2744.jpg,Y +SAMAN,문종근,jkmoon@samaneng.com,jkmoon,224159.jpg,53cb773c0889452a58938087427a810a80699d42b201081a8732b2fdf209e31d.jpg,f0d0b902-7239-48ae-ad9a-10cc87f5a5d7,f0d0b902-7239-48ae-ad9a-10cc87f5a5d7.jpg,Y +SAMAN,문종천,jcmoon@samaneng.com,jcmoon,224224.jpg,38889b31e402e19eafa743ca3529111aba94d8708af0a94a207a97985ef175e5.jpg,2040e5f1-5480-48f2-9dbd-95e4eae1f356,2040e5f1-5480-48f2-9dbd-95e4eae1f356.jpg,Y +JANGHEON,문종탁,jtmoon@brsw.kr,jtmoon,J13201.jpg,f9e86d233ed9c4d77215600e99e4cfff03a74f13619c73903499837b3083a731.jpg,fb3a2857-e2ab-491f-93c4-a9715e6eb1e8,fb3a2857-e2ab-491f-93c4-a9715e6eb1e8.jpg,Y +SAMAN,문준석,jsmoon@samaneng.com,jsmoon,215089.jpg,cc45355a9ae2ca60e15f5564eb78e6c40f9aec4af546ea3a9e4716c60d27cd66.jpg,2b6da602-1fe6-4aec-bc5c-9c24c0cf9792,2b6da602-1fe6-4aec-bc5c-9c24c0cf9792.jpg,Y +HANMAC,문준혁,jhmoon2@brsw.kr,jhmoon2,B25028.jpg,b140143c2932e3f1ad29797c96172793d064a33e5224814f02a476f6b13be2e9.jpg,ac26dd7d-fd3b-4a41-9e23-4178fed8087b,ac26dd7d-fd3b-4a41-9e23-4178fed8087b.jpg,Y +SAMAN,문창록,crmoon@samaneng.com,crmoon,222040.jpg,e502bb56560050e3a0138dff59a4b80eaf87954f5132c4fcb946391277cb7a1c.jpg,e9a6604b-ec10-4026-957c-0285181b4e73,e9a6604b-ec10-4026-957c-0285181b4e73.jpg,Y +SAMAN,문천수,csmun@samaneng.com,csmun,219019.jpg,fa4e00d05f371ef8d4c0859cd270caf90e1801c03c6deca69c8886415c597075.jpg,0994ebb0-8307-46c9-8ce3-36a86ae6dee7,0994ebb0-8307-46c9-8ce3-36a86ae6dee7.jpg,Y +SAMAN,문현석,hsmoon1@samaneng.com,hsmoon1,213024.jpg,4f4acd3020f495f09cf1d72aafb92d944ad385c729f02498bd279912b8d58423.jpg,56c226be-76f0-43d2-9d36-573fa8f50721,56c226be-76f0-43d2-9d36-573fa8f50721.jpg,Y +SAMAN,문현주,hjmoon@samaneng.com,hjmoon,224225.jpg,262122268a2899e7347329e29f87f00c26b9d69536afbbcdd7e664f423b6cf87.jpg,46b3276b-4096-483b-be06-2c0f1ce6b107,46b3276b-4096-483b-be06-2c0f1ce6b107.jpg,Y +SAMAN,문형석,hsmoon@hanmaceng.co.kr,hsmoon,216173.jpg,872409c1e856a080eeccb3df3f7cfb762f2add188fbfbe4e56e7dcbb6b7e95db.jpg,b3d3fe22-9ee0-4dad-9135-549bae81172c,b3d3fe22-9ee0-4dad-9135-549bae81172c.jpg,Y +SAMAN,문형장,hjmoon1@samaneng.com,hjmoon1,212149.jpg,aa51c979b1019c562352b335cac3e475ae38f1d7d3d868eeb579609ccefb30c9.jpg,f248e0d8-9366-4716-8f18-72d84a5787e6,f248e0d8-9366-4716-8f18-72d84a5787e6.jpg,Y +SAMAN,민경록,grmin@samaneng.com,grmin,224234.jpg,db4a9ca3ce8b1bd89e6645b85a5c5c867a9d51dacaca06f80f7e154b0f203a6c.jpg,1ea0ea3b-ec0f-41ce-b5e9-14537a70d288,1ea0ea3b-ec0f-41ce-b5e9-14537a70d288.jpg,Y +SAMAN,민경진,kjmin@samaneng.com,kjmin,220123.jpg,f8c0cb50ab9827540ea3b395626b9a47d7617b4e50ad1a42bb1b8ced43d51a6b.jpg,1b90a39f-b6af-46c0-98d2-bc26e8e53c0b,1b90a39f-b6af-46c0-98d2-bc26e8e53c0b.jpg,Y +SAMAN,민다송,dsmin@samaneng.com,dsmin,026020.jpg,0c0dfc02ff82e69da2895c72e69f8fc88c1e709bf86c2359a52df7fa4836f717.jpg,63dd4332-bff3-4963-a13c-31f5f6d6a7da,63dd4332-bff3-4963-a13c-31f5f6d6a7da.jpg,Y +SAMAN,민동욱,dwmin@samaneng.com,dwmin,224016.jpg,aea669f5ff7bd1c5cf55295f7c1783e4c7e7c78ee411806176a4e5d76064facc.jpg,132195f0-2a87-4738-a49c-321b8625da27,132195f0-2a87-4738-a49c-321b8625da27.jpg,Y +SAMAN,민만경,mkmin@samaneng.com,mkmin,220009.jpg,72be0829945ed4575170ee1a0612b3a3839a12f3717eb8908b704aae6aa83be4.jpg,c29e060a-64ac-45e1-a69a-4d8e2f82c2c1,c29e060a-64ac-45e1-a69a-4d8e2f82c2c1.jpg,Y +SAMAN,민범홍,bhmin@samaneng.com,bhmin,225061.jpg,b94ba02a7baf8af8a3532e417349f86c1bdd03b2163972cc3b8ec6e126a312b2.jpg,98bfe9fa-2855-4087-bc3b-b7ac1a214a47,98bfe9fa-2855-4087-bc3b-b7ac1a214a47.jpg,Y +SAMAN,민소연,symin@samaneng.com,symin,224335.jpg,2ab9bc074a538eb1b09a832084097b0c858bb1db33cd7e620d6a129a322eb906.jpg,fe790a88-8d12-497f-9f5b-d069b2f366cb,fe790a88-8d12-497f-9f5b-d069b2f366cb.jpg,Y +SAMAN,민식,smin@samaneng.com,smin,221043.jpg,2e4a7c5d06a8ac926a6192099d058c4c3ee8c47d1456521591d2019b3eba7740.jpg,27350814-74c9-4398-8e21-5cb05c308865,27350814-74c9-4398-8e21-5cb05c308865.jpg,Y +HANMAC,민인홍,ihmin@hanmaceng.co.kr,ihmin,M24034.jpg,27a087aeef3ffe682d59802a2980755220c1553e57634bf4ce139ea71d1b8ffb.jpg,38f8d1c5-edb1-40bb-91f4-dba81cc89eab,38f8d1c5-edb1-40bb-91f4-dba81cc89eab.jpg,Y +SAMAN,민진기,jkmin@samaneng.com,jkmin,212003.jpg,f670c10c48804643a1ead00e8d84e1f7b1057e3edf77a45b678570b44b67a990.jpg,d1e7f343-3b8a-43af-b72f-223844a8a533,d1e7f343-3b8a-43af-b72f-223844a8a533.jpg,Y +SAMAN,민진홍,jhmin1@samaneng.com,jhmin1,225102.jpg,e1f31f6db978cc3f7d46e87431339c5251cf5d1a42de07cca967ed3247a7595e.jpg,7e746741-305c-4db6-8fa1-a1e035052256,7e746741-305c-4db6-8fa1-a1e035052256.jpg,Y +SAMAN,민진희,jhmin@samaneng.com,jhmin,224063.jpg,89646aa1bf7b6e9408b8e874d110f64bca6f5fbf31eb8bfc9ed5567ef9ef5dbe.jpg,ea4cf607-9a86-4191-9a9c-1c575ab17fa5,ea4cf607-9a86-4191-9a9c-1c575ab17fa5.jpg,Y +SAMAN,민창식,csmin@samaneng.com,csmin,216147.jpg,619994fffa0906e8fbc6c81d9c05d135c6a6aa55766339d8fca5f5ca6d2c1410.jpg,ac4abab3-9635-4f00-8e62-8f5a5420a46f,ac4abab3-9635-4f00-8e62-8f5a5420a46f.jpg,Y +SAMAN,민홍,hmin@samaneng.com,hmin,223313.jpg,23729bd80ea9d181c1f4252be8c66373169ceae0943b12fd6aadd4fc6ed2f9f2.jpg,ab8b123b-0dde-4b7f-b623-425f8a1f63e1,ab8b123b-0dde-4b7f-b623-425f8a1f63e1.jpg,Y +HANMAC,박건석,gspark3@hanmaceng.co.kr,gspark3,M25015.jpg,d05416aded966ba03af95964df23ae86b6c99b0aaadfd6c569e8e931be808a7a.jpg,aa7f60e1-f730-4d2c-b100-61d7e173c88e,aa7f60e1-f730-4d2c-b100-61d7e173c88e.jpg,Y +HANMAC,박건희,ghpark4@hanmaceng.co.kr,ghpark4,M25016.jpg,1d900870ccc058ca55856a721f47809e1a49e7f87f1dfc4a8f2f57d87dd2700e.jpg,92e7d093-0d12-435e-9841-4f54284e2ad5,92e7d093-0d12-435e-9841-4f54284e2ad5.jpg,Y +SAMAN,박경근,kgpark@samaneng.com,kgpark,221272.jpg,78f2207abb7c02ef648149af3251bc82039fbf77e99a57f589f497f9cc21f72d.jpg,ec4ab7d4-99ae-4c43-a923-5e94572e30cb,ec4ab7d4-99ae-4c43-a923-5e94572e30cb.jpg,Y +SAMAN,박경빈,kbpark@samaneng.com,kbpark,224053.jpg,2b51592cfe7db6a84ff8a779843669b479116eb60c38ee14f4f8a4e4f737a368.jpg,0bdf30a2-3638-4be4-9ce3-5c43ed0d7e2c,0bdf30a2-3638-4be4-9ce3-5c43ed0d7e2c.jpg,Y +SAMAN,박경원,kwpark@samaneng.com,kwpark,225001.jpg,a3d0846ea4665b126a2096e8d110fe67f685b44d452b1ecb637cd188e5ff5846.jpg,cb5ca6f5-a683-4d00-b125-e12162f0b54d,cb5ca6f5-a683-4d00-b125-e12162f0b54d.jpg,Y +SAMAN,박경원,kwpark1@samaneng.com,kwpark1,225107.jpg,7bffc07a8af42afa7054b147863c1f7e9594ca663b0fee3e4936ab51bd4445ab.jpg,e6f90ca0-0dfb-4aca-a903-b5da7a175914,e6f90ca0-0dfb-4aca-a903-b5da7a175914.jpg,Y +SAMAN,박경태,gtpark@samaneng.com,gtpark,222071.jpg,153002b4692d7692872767465ed6152bac27730e23cb8bbb2639194ab217d95a.jpg,13c9a141-5b6a-4b5e-bd02-b8217b76aadb,13c9a141-5b6a-4b5e-bd02-b8217b76aadb.jpg,Y +SAMAN,박경화,kwpark2@samaneng.com,kwpark2,204084.jpg,8f00e0f93db5a3de87e5cd21e54be5361de381956a1cb762f8314c56249389f0.jpg,888de5e9-b3c7-49ee-adc7-8e21b56e6de1,888de5e9-b3c7-49ee-adc7-8e21b56e6de1.jpg,Y +SAMAN,박광수,gspark2@samaneng.com,gspark2,225048.jpg,b9d5dca97cad0d8d627d8660847d2fcd175eaa55c0e608911f91b08fc5631c73.jpg,4e7197d1-5821-48a8-bde2-b1c5889db123,4e7197d1-5821-48a8-bde2-b1c5889db123.jpg,Y +SAMAN,박광욱,kupark@samaneng.com,kupark,222250.jpg,4870d1ad438a6c08aeed2a551df0a7b9fa7bb17db0a6bcddfcf0cc1c33aed7a1.jpg,15ca2ff6-ba5b-4a1e-b23d-bda0187b2586,15ca2ff6-ba5b-4a1e-b23d-bda0187b2586.jpg,Y +SAMAN,박광현,khpark4@samaneng.com,khpark4,223351.jpg,67709d2ea1b6d8ab9135efe465231cd720940986c67f8afa71cfb069b26cf481.jpg,255205ae-18cc-404b-a5a4-6723a972e4d6,255205ae-18cc-404b-a5a4-6723a972e4d6.jpg,Y +HANMAC,박광환,ghpark@hanmaceng.co.kr,ghpark,M26005.jpg,064ba698cf0f9d4374c64eec8ebf8195993e6d1c743edaffb5e9faab3cc62469.jpg,f4413e33-f4e0-4964-9b80-1660c123c9a6,f4413e33-f4e0-4964-9b80-1660c123c9a6.jpg,Y +SAMAN,박광희,khpark1@samaneng.com,khpark1,193562.jpg,d5b5457b9ae65ceb143db98e46c2368fdd7296ff7b57a038674673378d31a9f9.jpg,c14871da-e8f7-4870-bffa-77d1940d6e48,c14871da-e8f7-4870-bffa-77d1940d6e48.jpg,Y +SAMAN,박교,kpark@samaneng.com,kpark,206017.jpg,21be223d3298e2f3cee2d908a472063e631e5f1fb82a54e7141bdfbd0f866196.jpg,74b83637-0856-4836-a512-d6f27588f1be,74b83637-0856-4836-a512-d6f27588f1be.jpg,Y +SAMAN,박귀한,khpark3@samaneng.com,khpark3,219144.jpg,b8d0358819181a0f308a30704e464aa3345b6aa55ef4b3abb5ae0cd9c592ac91.jpg,5a888cb3-7b8a-4c3c-9c83-f92245375962,5a888cb3-7b8a-4c3c-9c83-f92245375962.jpg,Y +SAMAN,박기순,kspark@samaneng.com,kspark,225363.jpg,25133eb79075dee09626ca8b7f52558b218572befa03ce5d8230f853cb574f10.jpg,7d4b7dfb-edf1-4b0a-9f14-bac4f418b66e,7d4b7dfb-edf1-4b0a-9f14-bac4f418b66e.jpg,Y +HANMAC,박기철,kcpark@hanmaceng.co.kr,kcpark,M25020.jpg,aa3926f9b7f691b5af8a8e57aebb82c1e4aa9ef29903c43a7e7e103b56820dcd.jpg,7a34d324-9f9f-48e5-9438-671978f8d126,7a34d324-9f9f-48e5-9438-671978f8d126.jpg,Y +SAMAN,박기현,khpark5@samaneng.com,khpark5,225020.jpg,ea7bd806dea3c13ad241735c7e994103f23291ef33398dcd3767d3116ee59321.jpg,0cbe18cf-3cec-49ac-bcb7-2fefe6e09946,0cbe18cf-3cec-49ac-bcb7-2fefe6e09946.jpg,Y +SAMAN,박길상,gspark@samaneng.com,gspark,206114.jpg,4604b3d3824afdb2500f4fb0bf946ecf592741ab5a17596a8b31b3732652c0fb.jpg,9a1f2a0a-1b56-4f2b-8a15-5d76b5894fdd,9a1f2a0a-1b56-4f2b-8a15-5d76b5894fdd.jpg,Y +SAMAN,박노석,nspark@samaneng.com,nspark,217039.jpg,2f04798fb81a41f30c08f49f90aaf40c30222c16b6b7880da08965ba92a19741.jpg,58f0c56e-e0bb-4840-b87e-6b708c0de529,58f0c56e-e0bb-4840-b87e-6b708c0de529.jpg,Y +JANGHEON,박대원,dwpark@brsw.kr,dwpark,J26501.jpg,773b134ce580f154efc19eebf617871b76f35172395f96534a26d5f094e4aff8.jpg,6c7cbbc7-5723-4f03-b154-2a9b0ff30444,6c7cbbc7-5723-4f03-b154-2a9b0ff30444.jpg,Y +SAMAN,박대정,djpark@samaneng.com,djpark,196167.jpg,65c48bafbd04212498f7916c0362b4e619bd7f8526b700b4cb67272741fe34f9.jpg,b8ddbfd3-92ee-4cc9-b50d-77aaade63ae0,b8ddbfd3-92ee-4cc9-b50d-77aaade63ae0.jpg,Y +SAMAN,박덕재,djpark1@samaneng.com,djpark1,221151.jpg,26c3b48bba5adb3e35e0e5106c4c1e5fa409d5c52e2aa7768fcbb6dd5fd97535.jpg,00c39007-0f54-4c72-bc63-ea45fa5cf988,00c39007-0f54-4c72-bc63-ea45fa5cf988.jpg,Y +SAMAN,박도현,dhpark@samaneng.com,dhpark,221018.jpg,1af9bfb50fbe6c134c48f848f0236e2848ba9723a9a787e913dfb39683b6c8e0.jpg,23c04670-6da6-4f99-9c86-7afe3ca4fecd,23c04670-6da6-4f99-9c86-7afe3ca4fecd.jpg,Y +SAMAN,박동길,dgpark@samaneng.com,dgpark,222171.jpg,9435696e115ae0e2268d31ed4744db7b4a29a3cafa7ae5c3b41a3d6332416580.jpg,c4360cc7-766f-4241-8b9e-6b36c56bbb27,c4360cc7-766f-4241-8b9e-6b36c56bbb27.jpg,Y +SAMAN,박동열,dypark@samaneng.com,dypark,224214.jpg,c6c99342d800b34fd84051dc3eb5597fe6d609d388e2c2faf4ba4597b276764b.jpg,55a3d0d8-7a68-40da-bccc-9fb395a5f003,55a3d0d8-7a68-40da-bccc-9fb395a5f003.jpg,Y +SAMAN,박동인,dipark@samaneng.com,dipark,225317.jpg,be20cb99473cf9c0ba3b73576e5e1f7009a563c382310714fedb690902e8cd32.jpg,b8d59266-27eb-4fab-96d9-17b67038389b,b8d59266-27eb-4fab-96d9-17b67038389b.jpg,Y +SAMAN,박동헌,dhpark1@samaneng.com,dhpark1,224196.jpg,efcf701e213765209f15a4cd239980d68462541a551633cbc389102d1e5fd1ba.jpg,7a6211ed-322d-4a51-b496-97183a7e5dc2,7a6211ed-322d-4a51-b496-97183a7e5dc2.jpg,Y +HANMAC,박명주,mjpark@hanmaceng.co.kr,mjpark,M25034.jpg,c51862a35ee8ee20c7d13703022c89bbb34f73339d3fd51f737f9e279789995e.jpg,6669155c-a65a-4b7c-bcfd-7d40ab58cfbd,6669155c-a65a-4b7c-bcfd-7d40ab58cfbd.jpg,Y +SAMAN,박명희,mhpark2@hanmaceng.co.kr,mhpark2,218069.jpg,637ae4091a8b804f7986b85f7735794a9288c31bbc696733ec3c6a183c54efb5.jpg,f8006bf0-e739-4cf9-a103-d481393ed97d,f8006bf0-e739-4cf9-a103-d481393ed97d.jpg,Y +SAMAN,박문범,mbpark@samaneng.com,mbpark,224295.jpg,f755da0609436c64b71fde41984121ae424f3f0ae6b408fbe579a77905fb887a.jpg,2ccefd53-c769-441d-97fe-20a157546652,2ccefd53-c769-441d-97fe-20a157546652.jpg,Y +SAMAN,박미숙,mspark1@samaneng.com,mspark1,025063.jpg,ef21993fd50238fdd90a209adbb7dcd7ecb3f3d0d78525176a781e8da6224e56.jpg,6eb707e0-1159-41f4-984f-385a48dc2478,6eb707e0-1159-41f4-984f-385a48dc2478.jpg,Y +HANMAC,박민상,mspark2@hanmaceng.co.kr,mspark2,M18308.jpg,0100377028923d9cf6954180055108b4a034d362215ec7c821231519e36214bc.jpg,06402ac5-0771-41b9-ac41-0a8ba6fde787,06402ac5-0771-41b9-ac41-0a8ba6fde787.jpg,Y +SAMAN,박민선,mspark@samaneng.com,mspark,224353.jpg,3ade3b595e330f5561187a2e6756c7464693fb6c37d5e5fd9a3f58ef17df3cab.jpg,3529d7eb-08f6-4554-ac9d-4035d30f9b42,3529d7eb-08f6-4554-ac9d-4035d30f9b42.jpg,Y +HANMAC,박민수,mspark3@hanmaceng.co.kr,mspark3,M20305.jpg,3e74ec8b744368d7acce6e422dba83ba05d27393fd21818e7e119fc8c1712d4a.jpg,07619d78-c4cf-4063-9e2c-2de601832dbc,07619d78-c4cf-4063-9e2c-2de601832dbc.jpg,Y +SAMAN,박민정,mjpark3@samaneng.com,mjpark3,025057.jpg,50cce4874cb59e48f9e44a80d9c8845f7fc427b68b17de6f228c0893830e78fb.jpg,d8d8abea-29e4-4675-90e6-80120c6e48af,d8d8abea-29e4-4675-90e6-80120c6e48af.jpg,Y +SAMAN,박민지,mjpark2@samaneng.com,mjpark2,223039.jpg,8d0087a4e2fc286ba50a2ebe6d4d9597df29bbabf34c103c0d54a1ed3ef8e6e7.jpg,dc114072-3d93-4be9-880e-ab95854726e5,dc114072-3d93-4be9-880e-ab95854726e5.jpg,Y +SAMAN,박민희,mhpark1@samaneng.com,mhpark1,225085.jpg,40ffd8a8e2a4c925eadfdb101e6d977b5a5068fd64129122c6c60898cda5afd9.jpg,f995dabc-b393-40d7-a3d8-3f4cfb5a286f,f995dabc-b393-40d7-a3d8-3f4cfb5a286f.jpg,Y +SAMAN,박민희,mhpark@samaneng.com,mhpark,026056.jpg,91f8ae6f6b10f164912e58a2b270c2fa45b8e4c591c64d009003a11f432e49c7.jpg,8d5aa43c-475c-4405-9f81-046a11e69855,8d5aa43c-475c-4405-9f81-046a11e69855.jpg,Y +HANMAC,박범진,bjpark@hanmaceng.co.kr,bjpark,M23002.jpg,da9eff9142d40cb6596b10b495355c9f3cd43b9d7d864bedabeae1a6fdcd8ee7.jpg,c88ae4b6-c578-4c5b-985a-01f8cbcffd6e,c88ae4b6-c578-4c5b-985a-01f8cbcffd6e.jpg,Y +SAMAN,박보경,bkpark@samaneng.com,bkpark,225016.jpg,5a6951da6fcd80e4561ff316d742797c24de08f9b8b4520d3e9a61d6e10fd019.jpg,01874ff8-b166-42b9-9b16-0a05addfe534,01874ff8-b166-42b9-9b16-0a05addfe534.jpg,Y +SAMAN,박봉기,bkpark2@samaneng.com,bkpark2,217113.jpg,2134decccf7a1118caf408b1a2dfe0ec793d64cd2fc3fc8264dcc9faada9d8f0.jpg,af1fa080-86d1-43f2-ba33-48a04510da26,af1fa080-86d1-43f2-ba33-48a04510da26.jpg,Y +SAMAN,박사무엘,spark@samaneng.com,spark,221012.jpg,c188873170fa69b3586c7b6b54c8f8796fa98e8f5ed07844a4ed4a5dfb0340f8.jpg,5aa503d1-7d3d-4c2f-bfbc-be67de127bdf,5aa503d1-7d3d-4c2f-bfbc-be67de127bdf.jpg,Y +SAMAN,박상민,smpark2@samaneng.com,smpark2,225247.jpg,a592316e7893ee381eaa132f38ebb4a9734c0a8683bdaf24089f6e8d0942bfc4.jpg,9660d226-9e4f-423a-8ed2-05a846858dc8,9660d226-9e4f-423a-8ed2-05a846858dc8.jpg,Y +HANMAC,박상빈,sbpark2@hanmaceng.co.kr,sbpark2,M23076.jpg,3a73f0fdf3707c525a4daf5212c89321e8050dac6488023bbd9091a48233980d.jpg,548531ac-ac3e-42cd-bece-36cbcf3f0ca8,548531ac-ac3e-42cd-bece-36cbcf3f0ca8.jpg,Y +SAMAN,박상수,sspark1@samaneng.com,sspark1,221265.jpg,71846d9fc0e42e1585e2dfe7c61782b29ed2ab573cdef81e482368b20018bad8.jpg,0e65429d-6ac0-489f-8d00-90a0567357c6,0e65429d-6ac0-489f-8d00-90a0567357c6.jpg,Y +SAMAN,박상원,swpark1@samaneng.com,swpark1,202126.jpg,666f0e39d550282a7c37cb2073ee74b3eb4c3e8916d4d164a9d5afbf49ac1985.jpg,3d941d9c-abf5-43eb-926e-92687d366269,3d941d9c-abf5-43eb-926e-92687d366269.jpg,Y +SAMAN,박상원,swpark3@samaneng.com,swpark3,225336.jpg,49c543f882ae1395abc31e54b05bafa9027d4d1eca0d2c4237fc0c17d4525087.jpg,8ee9342e-6574-4040-b0ff-11de69fb3a0c,8ee9342e-6574-4040-b0ff-11de69fb3a0c.jpg,Y +SAMAN,박상제,sjpark2@samaneng.com,sjpark2,224222.jpg,045f03d0e7409ea41a23425015b0a9c4928057e66472b855c663ac6e6f42cc16.jpg,d6302e43-6e26-4878-87fd-0ea5d2b6444f,d6302e43-6e26-4878-87fd-0ea5d2b6444f.jpg,Y +SAMAN,박상준,sjpark@samaneng.com,sjpark,222206.jpg,c93ceb01c76b581038865bca7a4e6ac64bb3067d8b8eb9324853e4e5459ec21e.jpg,3f124b95-b83b-4bdf-a4d3-ba1589100ac7,3f124b95-b83b-4bdf-a4d3-ba1589100ac7.jpg,Y +SAMAN,박상준,sjpark3@samaneng.com,sjpark3,224347.jpg,d0fbd31f79aac54d98767716f5fb8854eb299a369d9f8847a11f93207f032f81.jpg,a093b516-7bb9-48f1-8165-9628d1087b0e,a093b516-7bb9-48f1-8165-9628d1087b0e.jpg,Y +SAMAN,박상철,scpark@samaneng.com,scpark,201060.jpg,1cda515847a16e09cf5c250723ffbe790709af945e5c1f42e386d798959db97b.jpg,9802d6d6-7653-4fbd-90fb-bf926bf1136d,9802d6d6-7653-4fbd-90fb-bf926bf1136d.jpg,Y +SAMAN,박상호,shpark4@samaneng.com,shpark4,196125.jpg,7f06f17bc052b8a0be5fc415037875a9ccd8f34137e78c1340c419c7d9d80828.jpg,b1da7faa-27af-4113-953f-74dae355d675,b1da7faa-27af-4113-953f-74dae355d675.jpg,Y +SAMAN,박상훈,shpark7@samaneng.com,shpark7,224194.jpg,929c59957ff1bae6070e96328946e95083faaf76f91c0b488310147316dd0304.jpg,6bda230e-4405-457e-9b85-40f186043f62,6bda230e-4405-457e-9b85-40f186043f62.jpg,Y +SAMAN,박상흠,shpark6@samaneng.com,shpark6,223397.jpg,ac96c4321a2e459cd3c0228e18e81ccf69310e253d21bfd04ad69c72a630688a.jpg,899b8475-99b1-4781-8a4d-b474f0489571,899b8475-99b1-4781-8a4d-b474f0489571.jpg,Y +SAMAN,박석현,shpark10@samaneng.com,shpark10,225161.jpg,1b473e945e08b173be7d50c91f554d1bdd92020f3413eb653aa48fa009727c94.jpg,c17d145e-4418-41ae-9dc5-57faf96e36bd,c17d145e-4418-41ae-9dc5-57faf96e36bd.jpg,Y +SAMAN,박선량,slpark@samaneng.com,slpark,221031.jpg,e763aa6963d778ad877a66f3a705b3f1fcebb785ab2300717d8256ef0ebf985b.jpg,af32bb21-e9bf-4994-9768-a68177b23ec2,af32bb21-e9bf-4994-9768-a68177b23ec2.jpg,Y +JANGHEON,박선우,swpark5@brsw.kr,swpark5,J24301.jpg,0fe761d4c0665546ae8d69878eec6015d2b5ba114f058c9a5b750207f7da4249.jpg,0ce53edd-0056-4cfc-8b40-4324586dc68c,0ce53edd-0056-4cfc-8b40-4324586dc68c.jpg,Y +HANMAC,박선우,swpark4@hanmaceng.co.kr,swpark4,M20321.jpg,0ebf5d1cf26ca7b36db029ab8eace4be00f70d5521849df829e5b0a0ac9f5529.jpg,215b2a0e-75b1-4dd3-8dcc-2b7363ef56ec,215b2a0e-75b1-4dd3-8dcc-2b7363ef56ec.jpg,Y +SAMAN,박성걸,sgpark2@samaneng.com,sgpark2,224033.jpg,64ce7bf167b62bf54a94a5b3e8be7190ee05b00a9bc482c1728b4e4ced8a6f5b.jpg,640cabae-d0c3-4f5e-aa47-4e36ddb33132,640cabae-d0c3-4f5e-aa47-4e36ddb33132.jpg,Y +SAMAN,박성록,srpark1@samaneng.com,srpark1,224251.jpg,0eca4319c12161b1951a23ef2694f8f65aa27e834f3a11185a170a3f52e53ca0.jpg,46a77d2a-4d28-48b7-8fb4-702359fbf8d1,46a77d2a-4d28-48b7-8fb4-702359fbf8d1.jpg,Y +SAMAN,박성섭,sspark@samaneng.com,sspark,219027.jpg,b0ffde2981df08b51e2fb528887e9efd841388b7c75b823b42d28ee600c2c978.jpg,0c266c71-7e5f-448b-ac2a-af11903ee650,0c266c71-7e5f-448b-ac2a-af11903ee650.jpg,Y +SAMAN,박성수,sspark3@samaneng.com,sspark3,226136.jpg,3e7780e90ee9fd8715a22f2e16688ef168b55eb34d976c104d82effaa3651aa5.jpg,f739c8dd-f34d-4b38-8504-0cc3f5dc48a3,f739c8dd-f34d-4b38-8504-0cc3f5dc48a3.jpg,Y +SAMAN,박성연,sypark3@samaneng.com,sypark3,025083.jpg,b458f930c2d6b8090885baac21a88f501cf82c3d44805cebf40e4d8065f86ba3.jpg,4df8ee7f-e0e8-4d1f-b6e3-f7c0082d2742,4df8ee7f-e0e8-4d1f-b6e3-f7c0082d2742.jpg,Y +SAMAN,박성원,swpark2@samaneng.com,swpark2,225084.jpg,fd0b5f9d0546d43ba6ac71757a608c50ab9a16bada1b00e42019f17d647b0b52.jpg,47fd0787-c8ce-4db0-9c0e-5e9d48bb77d6,47fd0787-c8ce-4db0-9c0e-5e9d48bb77d6.jpg,Y +SAMAN,박성인,sipark@samaneng.com,sipark,223294.jpg,ee7a94d1a612002eb46b33ec7b4f9105de385270801a3f090896a0cffe665afb.jpg,ea68a138-e524-47fe-97a2-0f23510ab615,ea68a138-e524-47fe-97a2-0f23510ab615.jpg,Y +JANGHEON,박성일,sipark2@brsw.kr,sipark2,J24501.jpg,4410597aa6b4ec21373a3086631b30ebb3ebdfbcb848944f2f47115aec12ff83.jpg,5d856282-6f00-46fa-996b-2f04bed91135,5d856282-6f00-46fa-996b-2f04bed91135.jpg,Y +SAMAN,박성주,sjpark4@samaneng.com,sjpark4,225139.jpg,6a3aba90c9ba1f5b6ff60ac75f303d0086f1514c86ec072c263922828080c08a.jpg,c4dee64e-3255-4552-ad3b-fe5b58c754a4,c4dee64e-3255-4552-ad3b-fe5b58c754a4.jpg,Y +SAMAN,박성중,sjpark1@samaneng.com,sjpark1,213076.jpg,233b7c44fcd2e86f028dcc54a37ab1b9e538d42661d6c639c3fc2a8668faa1c3.jpg,777fc239-c25f-4089-93e2-0d46a56faa6a,777fc239-c25f-4089-93e2-0d46a56faa6a.jpg,Y +SAMAN,박성혁,shpark11@samaneng.com,shpark11,226018.jpg,a44b51b7b061533749b5f72e0fa6a155c2b6a91fdedbd9ccb6c92af7a3a8aa5b.jpg,0fd3eaf2-f9ba-4576-b3b7-1d539f142364,0fd3eaf2-f9ba-4576-b3b7-1d539f142364.jpg,Y +SAMAN,박성호,shpark@samaneng.com,shpark,217160.jpg,1450cd13511c063ed2b5479e9a3e4f64ee8d2209c7c710c39d5c6e90d0774053.jpg,f0e6f7cc-7db0-4d7f-8393-90c518a6d6ec,f0e6f7cc-7db0-4d7f-8393-90c518a6d6ec.jpg,Y +SAMAN,박성훈,shpark1@samaneng.com,shpark1,205178.jpg,48460de48b364599de22b0f3626d15001d0c535751d4a29d75c1a279d12e5179.jpg,0503aa9d-dad6-4193-9ff1-7a2a454dd3d8,0503aa9d-dad6-4193-9ff1-7a2a454dd3d8.jpg,Y +SAMAN,박세림,srpark@samaneng.com,srpark,223197.jpg,f401e181fbda16228b58960bb62ff2bd221b7c646d4db8447467b8ea93a7c679.jpg,a3f631e2-7cca-4511-9c74-938f35ff981f,a3f631e2-7cca-4511-9c74-938f35ff981f.jpg,Y +SAMAN,박세은,separk@samaneng.com,separk,026004.jpg,ba033e644eec5f013684ef64447d811337c93123d89ee1c48be134eb22451fc7.jpg,8f481ff1-9841-446b-8830-e1f7b1e16474,8f481ff1-9841-446b-8830-e1f7b1e16474.jpg,Y +SAMAN,박세환,shpark2@samaneng.com,shpark2,219044.jpg,986749cb2c683381eeb9c96e560a4fc30d08ad9ab079e1e6a4134b54815a9f85.jpg,9ab34faf-1f75-4e1f-b0ed-0d01e9d94718,9ab34faf-1f75-4e1f-b0ed-0d01e9d94718.jpg,Y +SAMAN,박수빈,sbpark@samaneng.com,sbpark,225005.jpg,fb469c5c9898995a8f230885fa42f205252706c43797848ca58e51cdd7952444.jpg,755eab4b-72a3-461f-97b1-297e202b22f2,755eab4b-72a3-461f-97b1-297e202b22f2.jpg,Y +SAMAN,박수훈,shpark3@samaneng.com,shpark3,221191.jpg,2f1d314edd98b845726eb59ba1356b0c82e9d006a4b16e453b5f8498f221bd73.jpg,9f4d72c0-56f8-43d0-81b2-b349577ae21f,9f4d72c0-56f8-43d0-81b2-b349577ae21f.jpg,Y +SAMAN,박순석,sspark2@samaneng.com,sspark2,225252.jpg,a658cf9e5b4d68298aba6f98778d48b63f95e389566a2babf481f9a80fc61ce6.jpg,b72989ed-b351-42dd-90b7-3038245a4433,b72989ed-b351-42dd-90b7-3038245a4433.jpg,Y +SAMAN,박승건,sgpark@samaneng.com,sgpark,222226.jpg,b6f3f901c66b2c7d04ef45a62ca648b3e7e983c52ffad2a4d64233296e72c89b.jpg,443c0b0e-37d6-4689-b205-603e51f1b7fb,443c0b0e-37d6-4689-b205-603e51f1b7fb.jpg,Y +SAMAN,박승규,sgpark1@samaneng.com,sgpark1,223049.jpg,c427e59000c13379a49274ec68200ec38fbf36255e363f930e64ea1136aa059d.jpg,b61022be-71d8-43f4-b4c1-62bfe76a3a7e,b61022be-71d8-43f4-b4c1-62bfe76a3a7e.jpg,Y +HANMAC,박승신,sspark4@hanmaceng.co.kr,sspark4,M22009.jpg,2832008afe2523b94ef59bcee84f5c9355e914dd11fbcf57c2c93fadd4ca0891.jpg,dc5f26c4-da47-46d2-bc61-554c12805921,dc5f26c4-da47-46d2-bc61-554c12805921.jpg,Y +SAMAN,박승양,sypark@samaneng.com,sypark,223398.jpg,08fd5fca35414e4b3e4325706658c910b875a07317e54dc711af524787f78490.jpg,995a96bc-ec0b-45a0-a780-d0a8198af86c,995a96bc-ec0b-45a0-a780-d0a8198af86c.jpg,Y +SAMAN,박승우,swpark@samaneng.com,swpark,223195.jpg,62756b2391b19b40b582a0d735a8a1cc7b1631b6b51c5ebd864dc73f27214748.jpg,ff44cb7f-a584-4d60-a493-bc2c64e500e3,ff44cb7f-a584-4d60-a493-bc2c64e500e3.jpg,Y +HANMAC,박연수,yspark5@hanmaceng.co.kr,yspark5,M07507.jpg,fd39e918915bf95e4632b4e4701353ded671c2cf1c51fc8f87bd4bb7e4b94707.jpg,6a52debb-57e1-4bc9-9d0c-d6a9d605c55d,6a52debb-57e1-4bc9-9d0c-d6a9d605c55d.jpg,Y +SAMAN,박영규,ygpark@samaneng.com,ygpark,215029.jpg,7ad050abd32c4dca84871da3bd934ecd16cd4257e1935a49f99737559f8b16b6.jpg,b4009c05-2095-40ea-af29-fe1ef234ce92,b4009c05-2095-40ea-af29-fe1ef234ce92.jpg,Y +SAMAN,박영남,ynpark@samaneng.com,ynpark,225153.jpg,152993afce80bbf2fc7017c013e9603d49a33aa1cc127e4a8159a76998b6a704.jpg,4628054f-c9b8-4491-8e90-c4eb7e39a1a3,4628054f-c9b8-4491-8e90-c4eb7e39a1a3.jpg,Y +SAMAN,박영문,ympark@samaneng.com,ympark,223149.jpg,f177bf472c0c410ba03669c4bc576c49257f80709b7b89651f4c982a83c96b9f.jpg,7ff9477a-aded-4c62-afca-9d2510376a2b,7ff9477a-aded-4c62-afca-9d2510376a2b.jpg,Y +SAMAN,박영산,yspark1@samaneng.com,yspark1,224227.jpg,8fbe76fe9b914b638a11d3a8adb6cb3ba385ff1b1ffbe0927f151d16f9e8eba7.jpg,76e263fa-bff4-467d-b9cd-41439f335415,76e263fa-bff4-467d-b9cd-41439f335415.jpg,Y +SAMAN,박영선,yspark2@samaneng.com,yspark2,222101.jpg,eadb96637ca69646b66dbaad6669f8191efdb25a522e9a725118130ac7c4451d.jpg,d01771e6-e236-4921-8458-8c57f02dc3ee,d01771e6-e236-4921-8458-8c57f02dc3ee.jpg,Y +SAMAN,박영수,yspark4@samaneng.com,yspark4,226118.jpg,458224861b9b1617f8b8aafff2d314f55f139d875b5ce699179739c012306736.jpg,9d3aea8d-a90b-420f-9aac-bf8d4451cf15,9d3aea8d-a90b-420f-9aac-bf8d4451cf15.jpg,Y +SAMAN,박영욱,ywpark@samaneng.com,ywpark,224342.jpg,665da63b7de3c3f8c433a5ac7c3d6a8d3b838e80663f2066e817908ad78b4444.jpg,5963b876-05ba-4325-99ce-43385c53f01b,5963b876-05ba-4325-99ce-43385c53f01b.jpg,Y +SAMAN,박영진,yjpark@samaneng.com,yjpark,220232.jpg,4222155480c72ad17bff7561572a9b7c772dc33ecb0dd65e1904103e31016ebc.jpg,17fdeead-eda2-4994-a01e-4ab2b73df5d7,17fdeead-eda2-4994-a01e-4ab2b73df5d7.jpg,Y +SAMAN,박영진,yjpark1@samaneng.com,yjpark1,224369.jpg,1415afcaa07fea290bdd0de3fc4d9d3371acce6f54874941c778eaf7b9be5b64.jpg,8a4ecb35-d42d-4b49-ba7b-f617d1c27765,8a4ecb35-d42d-4b49-ba7b-f617d1c27765.jpg,Y +SAMAN,박용규,ykpark@samaneng.com,ykpark,224084.jpg,56afb520df9f8a7838e3aefc749a82d7cc56f3301efe133e580f721542f6f0e6.jpg,795f2718-a9f4-4be2-b9b9-b55224d0cf3c,795f2718-a9f4-4be2-b9b9-b55224d0cf3c.jpg,Y +SAMAN,박용철,ycpark@samaneng.com,ycpark,218104.jpg,b9e6836c978715da8e766c62dadef68f2209282dcf867f4b2077437b78e94501.jpg,5349aee5-c10a-4dbe-8ad1-7bf5172e584d,5349aee5-c10a-4dbe-8ad1-7bf5172e584d.jpg,Y +SAMAN,박원배,wbpark@samaneng.com,wbpark,220127.jpg,ebf4bce50fbb16dcc8ed1873b346b469b165af03c68c83154384dd2f7b6b210c.jpg,5136f148-8157-4f78-bbe5-491d51ad9422,5136f148-8157-4f78-bbe5-491d51ad9422.jpg,Y +SAMAN,박원준,wjpark1@samaneng.com,wjpark1,225150.jpg,418d4a30a42a325a6caf682f173ff936ed0987ffebf1fa765fa869156e99384b.jpg,50a71565-0e26-4961-b9c3-b0f83dad8c8f,50a71565-0e26-4961-b9c3-b0f83dad8c8f.jpg,Y +SAMAN,박원효,whpark@samaneng.com,whpark,225180.jpg,e50e8ad88dcca84d035fe312930cdcc0b3e24689248f00e0d7a9e0d24fa89a36.jpg,777ac05a-1e20-4928-a780-900aa1dfb918,777ac05a-1e20-4928-a780-900aa1dfb918.jpg,Y +SAMAN,박유진,yspark@samaneng.com,yspark,224273.jpg,be714cc2927048af0bbbb7c555678b36517b992be9e27a012bb198c4c0216da1.jpg,31903221-0dc7-449f-ae7b-cc73ca5a2df1,31903221-0dc7-449f-ae7b-cc73ca5a2df1.jpg,Y +SAMAN,박윤,ypark@samaneng.com,ypark,225186.jpg,91bb86ae3f7788714deb72af9eb7a68d5a04051ec9d4bbfbfd5218ce9e8a6083.jpg,e0cda0c3-ee53-4639-be48-17792b4fd4da,e0cda0c3-ee53-4639-be48-17792b4fd4da.jpg,Y +JANGHEON,박은별,ebpark@brsw.kr,ebpark,J25305.jpg,b1b76da87108bea7406d40dd532194bd8396b25b85daf8c8ed519f4ec86a98ab.jpg,2ce79366-4a25-4c34-ac4b-152fd8fac713,2ce79366-4a25-4c34-ac4b-152fd8fac713.jpg,Y +SAMAN,박은정,ejpark1@samaneng.com,ejpark1,024074.jpg,b65a83fb9a5307f0db5b8b378550cd848224189cedb1e052c3e5dc16a9593b1b.jpg,c8ef625c-071d-4fef-bd32-49d27da5382d,c8ef625c-071d-4fef-bd32-49d27da5382d.jpg,Y +HANMAC,박익수,ispark2@hanmaceng.co.kr,ispark2,M24041.jpg,38bdc95de15f522813566e991c63fc42467bdd1a2a1fbc548b45807d4867d6aa.jpg,b9972942-c566-48bb-a54d-7bb8575bbf4a,b9972942-c566-48bb-a54d-7bb8575bbf4a.jpg,Y +HANMAC,박인규,igpark@hanmaceng.co.kr,igpark,M22016.jpg,ae1e5190225739d746845a0dae33c0888f93e3ff63487be63df998232afd38f2.jpg,935d955a-d05d-4f58-b302-cafc8a1bf6c5,935d955a-d05d-4f58-b302-cafc8a1bf6c5.jpg,Y +SAMAN,박인수,ispark@samaneng.com,ispark,220164.jpg,b7095755d2dcaf021e9d6249efcaffd3e2eafb782b6ea7cac5a72f4e53a0ea9a.jpg,5ab70e92-5e07-4d88-9753-acfffb3616b3,5ab70e92-5e07-4d88-9753-acfffb3616b3.jpg,Y +SAMAN,박인애,iapark@samaneng.com,iapark,025133.jpg,3aeb948d67d94a4f9ef0289df122aeff0916bd4b9daddc7a1a0f6c346e56a8ef.jpg,64c4b52d-3722-48be-95dd-fe9464998ec9,64c4b52d-3722-48be-95dd-fe9464998ec9.jpg,Y +SAMAN,박인철,icpark@samaneng.com,icpark,224164.jpg,a7954d05626f895734377da46f9cf18fa9784c41fa7b11e1ebf02732edba7925.jpg,71e84327-750a-4984-abd3-ceb3a06e0ceb,71e84327-750a-4984-abd3-ceb3a06e0ceb.jpg,Y +SAMAN,박인태,itpark@samaneng.com,itpark,218154.jpg,b70da491572c02f2b0f53fe1debb4fe58ba486625e3212e98793bd39fff3fc6c.jpg,2b7cbb68-b3a7-481e-ade5-fb42d1c9dbcf,2b7cbb68-b3a7-481e-ade5-fb42d1c9dbcf.jpg,Y +SAMAN,박일,ipark@samaneng.com,ipark,223307.jpg,69dcec41caee093cb153dff26580042fd435d83fe40cfddb4b6d7777bee6edf0.jpg,8854dc95-de30-41db-8f5b-957d3d6754c8,8854dc95-de30-41db-8f5b-957d3d6754c8.jpg,Y +SAMAN,박일석,ispark1@samaneng.com,ispark1,224282.jpg,126df2c5ee28eaf6737063c066a679686e11054a0cc53be24f24206269befea0.jpg,19d6ca0c-c20a-4c9f-badd-2163726e917a,19d6ca0c-c20a-4c9f-badd-2163726e917a.jpg,Y +SAMAN,박장호,jhpark7@samaneng.com,jhpark7,224005.jpg,9ff0a09defbe134ed605acae22c967547de6c873f4c064e0af0ea915689ac50a.jpg,86a08555-8c6a-4c79-9cc6-1c87e7dd0d94,86a08555-8c6a-4c79-9cc6-1c87e7dd0d94.jpg,Y +SAMAN,박재성,jspark9@samaneng.com,jspark9,224141.jpg,1fe833c9bf8669868aa552e6f6f11fd90a83b7e998099b252f44181c6ba70b54.jpg,313e9871-990e-4bd5-bb2e-b827116b3702,313e9871-990e-4bd5-bb2e-b827116b3702.jpg,Y +SAMAN,박재신,jspark5@samaneng.com,jspark5,224231.jpg,ed4287c4f110b924b4d210d7e6e620bad9ea2abfe5d1a1c0e127c6a648e576a1.jpg,c7a1b635-f0e1-4a66-96f6-0e91518b3345,c7a1b635-f0e1-4a66-96f6-0e91518b3345.jpg,Y +SAMAN,박재원,jwpark3@samaneng.com,jwpark3,218100.jpg,8f63bae6bade02f19353ee433efd7370f5abcd330a809864b51f7f3f892f5db6.jpg,182ea609-a950-4f8d-bcdd-58d8d447678e,182ea609-a950-4f8d-bcdd-58d8d447678e.jpg,Y +SAMAN,박재원,jwpark7@samaneng.com,jwpark7,220259.jpg,ab277dedca7857ce545c574020f1c7938182c63a7b1c9bc302c641e1d59937a1.jpg,6d46029a-6fe8-41bf-9cdf-72ea63697500,6d46029a-6fe8-41bf-9cdf-72ea63697500.jpg,Y +SAMAN,박재호,jhpark2@samaneng.com,jhpark2,221316.jpg,2184b4e8252f004e305308d9842c47d5243db3f12a4df4d1c3b9b7f1ddbc61ac.jpg,47095f81-21bd-4bbb-8bd0-eee5499d83b2,47095f81-21bd-4bbb-8bd0-eee5499d83b2.jpg,Y +SAMAN,박정근,jkpark2@samaneng.com,jkpark2,203047.jpg,cb73443ce8358b9dc581df8ecb76e01b8b3c8464257f4ed99dd47ee0adc414cd.jpg,1cd40fad-5eaa-4339-905f-6b1aadad159d,1cd40fad-5eaa-4339-905f-6b1aadad159d.jpg,Y +SAMAN,박정근,jgpark@samaneng.com,jgpark,224280.jpg,73edac00d5f1c73ca49dd6d86bf1ae44a6ee4736396c2c15d986f1134ee7cb6b.jpg,0a4f9f9d-f19f-48ae-856b-64ce32ea56e8,0a4f9f9d-f19f-48ae-856b-64ce32ea56e8.jpg,Y +SAMAN,박정석,jspark1@samaneng.com,jspark1,222183.jpg,010819b6620501bf17908be2848ae2d9b0b91ae9c3a1b55a0250c64073ca4670.jpg,5429110c-c4f8-47e8-b7cb-13e4c11471d9,5429110c-c4f8-47e8-b7cb-13e4c11471d9.jpg,Y +SAMAN,박정우,jwpark@samaneng.com,jwpark,195043.jpg,bde690682a66916c7203a5f9449bdfb390b8917ef93f7ad332215f46c7d003e1.jpg,d7be51aa-5260-4e82-b948-f458428d1446,d7be51aa-5260-4e82-b948-f458428d1446.jpg,Y +SAMAN,박정우,jwpark8@samaneng.com,jwpark8,221055.jpg,fbc5c1c79000bc759af8ad1df1186efd941fd768480f064845be1160d45ff694.jpg,070b9fc6-ba07-4963-8d24-596d3691d6a3,070b9fc6-ba07-4963-8d24-596d3691d6a3.jpg,Y +SAMAN,박정원,jwpark5@samaneng.com,jwpark5,216062.jpg,402b99696bcc57585d6f60aeb24dd1cab5fdfd035e2b6cfb6a3c3fb42c117837.jpg,310f67f9-8cd1-4913-a1a1-6e1ff342fb92,310f67f9-8cd1-4913-a1a1-6e1ff342fb92.jpg,Y +SAMAN,박정호,jhpark@samaneng.com,jhpark,221169.jpg,8f68eedc9857c246554df64efbf9b2bc53ddd032e8919d29831013fd9d98df30.jpg,804f1aa7-0d62-4ca3-8844-3a3c4d3bee17,804f1aa7-0d62-4ca3-8844-3a3c4d3bee17.jpg,Y +SAMAN,박정환,jhpark3@samaneng.com,jhpark3,223323.jpg,3ced6e8deb3afe93f22659c126337ec6dc48e796045aabdc633c8c3d2d19d13b.jpg,b616ade6-3dc5-4d98-a68e-680a686dd882,b616ade6-3dc5-4d98-a68e-680a686dd882.jpg,Y +SAMAN,박정환,jhpark11@samaneng.com,jhpark11,226065.jpg,3747bf782a7aee53a1fc73ab0df88362c0a7368ead91fcf6896593d6e55d4a22.jpg,595b6f43-7a9d-462a-b7d2-ed4c22588c91,595b6f43-7a9d-462a-b7d2-ed4c22588c91.jpg,Y +SAMAN,박제용,jypark2@samaneng.com,jypark2,223190.jpg,d8a1a9a8f9cba5393a7a1528fac733b297adf88b72352639bb4b29dba952d2e7.jpg,221045aa-b8bb-4389-a5de-389e45b3feff,221045aa-b8bb-4389-a5de-389e45b3feff.jpg,Y +SAMAN,박종렬,jypark3@samaneng.com,jypark3,223235.jpg,e297b4162ff4748a7380983b43b250497c2bcd379eed006e28ac02f4b1277fbb.jpg,dbe0971b-da24-475b-a9fc-d86fbe6c2e91,dbe0971b-da24-475b-a9fc-d86fbe6c2e91.jpg,Y +SAMAN,박종민,jmpark@samaneng.com,jmpark,211081.jpg,cb0f6d1f5cc8342ec1add62e80874ad00bad60dca83e3eaa1d0ea0f39490e7d0.jpg,bd2c3a6c-fd49-4a3a-a2d5-101288c95f1e,bd2c3a6c-fd49-4a3a-a2d5-101288c95f1e.jpg,Y +SAMAN,박종민,jmpark1@samaneng.com,jmpark1,221174.jpg,789cecdcc9b144cbc4aa9bf9195501d2616c70439d80d25f424d6992a7c2d19d.jpg,51ca7cee-8161-4bd9-ae90-18b37182de2c,51ca7cee-8161-4bd9-ae90-18b37182de2c.jpg,Y +SAMAN,박종범,jbpark2@samaneng.com,jbpark2,204075.jpg,70c18110e3516b943777c14d40abe11f48d2a8cdcb6d29cfbaa69114bc2e25da.jpg,4ca0b4b8-a1d9-41ef-80f4-61ecbf5bf39c,4ca0b4b8-a1d9-41ef-80f4-61ecbf5bf39c.jpg,Y +HANMAC,박종시,jspark10@hanmaceng.co.kr,jspark10,M26029.jpg,d244f052c5a7f626bc47fea8af9680e9b7c9e2b174a6f0a7899b24f21c8dfad3.jpg,aac0fabb-db89-4113-a26d-7ef264a1f3a3,aac0fabb-db89-4113-a26d-7ef264a1f3a3.jpg,Y +SAMAN,박종인,jipark@samaneng.com,jipark,225207.jpg,7c732a997d98f1719e1837be0cc7f92b5216e1daaf56c4681d3f922255c7ea4e.jpg,a26bf973-5344-47c6-b882-3a3ad3691cc9,a26bf973-5344-47c6-b882-3a3ad3691cc9.jpg,Y +SAMAN,박종혁,jhpark4@samaneng.com,jhpark4,226072.jpg,a458b1db325d502de03b8cb9af995e463187bd3fed8aa51b041a55e69d257e9b.jpg,85dbf537-cdfa-49d3-89a8-352c69995c64,85dbf537-cdfa-49d3-89a8-352c69995c64.jpg,Y +SAMAN,박종현,jhpark12@samaneng.com,jhpark12,226119.jpg,809090bf0fd78bb8b7b7abc0bb21e088b5078f7c4428e4f4223414322110d419.jpg,4ffc0c11-9bdc-4dc8-a393-87d53a12c617,4ffc0c11-9bdc-4dc8-a393-87d53a12c617.jpg,Y +SAMAN,박종호,jhpark5@samaneng.com,jhpark5,225044.jpg,b05c1bf764688f8479d9497931a1d90aaf81d4f783d913e150d1481272662bc7.jpg,aa799f75-64a2-4182-afe7-2afaea9e7601,aa799f75-64a2-4182-afe7-2afaea9e7601.jpg,Y +SAMAN,박종환,jhpark14@samaneng.com,jhpark14,212128.jpg,ed57966660ef436ca1dd5aded7398e25f3404f83e681d2209e7d306a1b517625.jpg,d0dbd47c-789b-40bc-8f94-f0a24ba14911,d0dbd47c-789b-40bc-8f94-f0a24ba14911.jpg,Y +SAMAN,박종훈,jhpark8@samaneng.com,jhpark8,223345.jpg,a4e55fd98ad1defb7064e859c6c290a3310d61faa9333e7e00a0fb51022af278.jpg,9a1ad9ad-1829-4f42-9b2c-03399be5f563,9a1ad9ad-1829-4f42-9b2c-03399be5f563.jpg,Y +SAMAN,박주경,jkpark3@samaneng.com,jkpark3,221148.jpg,7e0a23e9e50195d3b8d530673186eaa0f67266c53af47cc237a68b72c22c2bfc.jpg,15c5bb01-431b-422d-ba54-173fd0e510e1,15c5bb01-431b-422d-ba54-173fd0e510e1.jpg,Y +HANMAC,박주한,jhpark13@hanmaceng.co.kr,jhpark13,M22006.jpg,4c16607ed727c1d425ece71868e20c03a9c46eedd1e9f6f856ebd43b6e91f4a2.jpg,8347160f-0d74-4cfb-b877-dfd453a1617b,8347160f-0d74-4cfb-b877-dfd453a1617b.jpg,Y +HANMAC,박준동,jdpark@hanmaceng.co.kr,jdpark,M25074.jpg,736d27ba58a65b5fa3cf48f59767f9dfe3eb9787a691a34fce3a596af1c62def.jpg,f6a10d36-e771-43f4-9a5a-5222a1a50afd,f6a10d36-e771-43f4-9a5a-5222a1a50afd.jpg,Y +SAMAN,박준서,jspark8@samaneng.com,jspark8,224015.jpg,fe55ef6e8dca1470f6f888589bca9ed41e77467ad8adac8089c33afa7675b08f.jpg,0a088648-ecd3-4cdf-acb8-5664070b0785,0a088648-ecd3-4cdf-acb8-5664070b0785.jpg,Y +SAMAN,박준석,jspark@samaneng.com,jspark,220213.jpg,8a81b42e9a148152f5c636ddaafd900bc9bf3544a9c93e7c67fc2dbca5aeb6e0.jpg,3d4f6525-39d3-4828-ab20-95a4499745fc,3d4f6525-39d3-4828-ab20-95a4499745fc.jpg,Y +SAMAN,박준성,jspark7@samaneng.com,jspark7,207172.jpg,e22e5d7a7fccc2f4a34a32a86681d1ca8be68df0232b7834107e6c0a10bfc56f.jpg,569276b3-6d22-43dd-98ad-9a3e9540c2b5,569276b3-6d22-43dd-98ad-9a3e9540c2b5.jpg,Y +SAMAN,박준영,jypark1@samaneng.com,jypark1,223150.jpg,5f8cae2ca9b27083658b08282465f655cd5b1a7aed968ae565eca8243d13f167.jpg,53d8f2bc-39b5-443e-af82-1b587dc32b91,53d8f2bc-39b5-443e-af82-1b587dc32b91.jpg,Y +SAMAN,박준영,jypark4@samaneng.com,jypark4,223379.jpg,093d38e4aeb5608777bd96ca1a553822767c3860fd2570b4282cdf6822a8b1b9.jpg,46bbf7a7-e4f2-4d79-8a71-27266e265d3e,46bbf7a7-e4f2-4d79-8a71-27266e265d3e.jpg,Y +SAMAN,박준영,jypark6@samaneng.com,jypark6,225158.jpg,4cae9cee7444debcfb2fb8fd7bc10207f2d8a504b261376df2fb26c4df2dea17.jpg,c6d040bb-7074-422d-8bab-6cb0b16e4cae,c6d040bb-7074-422d-8bab-6cb0b16e4cae.jpg,Y +SAMAN,박준호,jhpark1@samaneng.com,jhpark1,221305.jpg,22cd0d157c4b333b16ef543ab6e4fa0aa8a63c5508258378163dc54106b9a852.jpg,da761ecb-44bf-4a4f-a08d-1528ddb8f00d,da761ecb-44bf-4a4f-a08d-1528ddb8f00d.jpg,Y +SAMAN,박준호,jhpark6@samaneng.com,jhpark6,223012.jpg,d83be09d0feaab72c6f8e041b7faf171775799df0d5545eef0714b7a0ed2a321.jpg,7fedc829-4342-4cd9-b7d1-f7df3e9d9f4f,7fedc829-4342-4cd9-b7d1-f7df3e9d9f4f.jpg,Y +SAMAN,박지나,jnpark@samaneng.com,jnpark,025073.jpg,d33031bc6b9c4d79bd737993f11803b6ce1d99d4e1ba2d27b7ae5be7718e72c1.jpg,d92847fc-4c08-42a1-8dd9-21deeddf186f,d92847fc-4c08-42a1-8dd9-21deeddf186f.jpg,Y +SAMAN,박지연,jypark@samaneng.com,jypark,223031.jpg,916d8aad2d3103a8667d634044a96c25db0e9c9306bdbf26f40dbc023976e6b1.jpg,439b60fe-3b55-42cb-9b32-b93f4dba8e42,439b60fe-3b55-42cb-9b32-b93f4dba8e42.jpg,Y +HANMAC,박지영,jypark7@hanmaceng.co.kr,jypark7,M21438.jpg,1ea53af5a8bef9f7c18a32d1f8379de7f685c952734293a1d9ee66496e12e3fd.jpg,2bd9479f-606d-44f6-8b1d-f141e20e4528,2bd9479f-606d-44f6-8b1d-f141e20e4528.jpg,Y +PTC,박지우,jwpark1@brsw.kr,jwpark1,P25301.jpg,460dfeab47c2a56afe7dfe138d561447932c41a332433bf8b5fcede93e03df28.jpg,a6b636ff-cfad-4e59-9c72-a5cafb2a5907,a6b636ff-cfad-4e59-9c72-a5cafb2a5907.jpg,Y +SAMAN,박지원,jwpark2@samaneng.com,jwpark2,220040.jpg,ae95484a07e84e244fbe50f557f009b5d1d44adb69ee9fcc5293dde61b4d1213.jpg,c0588d36-d73d-45e7-bcd5-46c448413c8b,c0588d36-d73d-45e7-bcd5-46c448413c8b.jpg,Y +SAMAN,박지은,jepark1@samaneng.com,jepark1,224058.jpg,b8270ace5e4bae48d687e0af4f9eeb7e374eb97b243d6fd55330f36e1199c96e.jpg,bbeb4274-c748-4d00-a84a-723758906d0d,bbeb4274-c748-4d00-a84a-723758906d0d.jpg,Y +SAMAN,박지현,jhpark9@samaneng.com,jhpark9,225087.jpg,311e85a4f4f121ae5cde4fe4c382c4afd4551ad92dc6139be5e6d8b475dd2c89.jpg,8f327f4d-b6f8-4405-b372-0481ab92281e,8f327f4d-b6f8-4405-b372-0481ab92281e.jpg,Y +SAMAN,박지훈,jhpark10@samaneng.com,jhpark10,226064.jpg,b5c6bc02e107286cecd6bdaba9de91c1214d9057fe71c564715dbe3a610b1fb8.jpg,b188269a-b46a-4fdd-891f-3476d5518696,b188269a-b46a-4fdd-891f-3476d5518696.jpg,Y +SAMAN,박진,jpark@samaneng.com,jpark,220190.jpg,515e559aaf23ee00846c223105496f9ab0bbfcf323772c0a2fa7caab848d1a17.jpg,25353f89-be0a-4b71-a943-3b1231dfe017,25353f89-be0a-4b71-a943-3b1231dfe017.jpg,Y +SAMAN,박진규,jkpark1@samaneng.com,jkpark1,213057.jpg,f60d630a6f73146e1b985705eba44323b367335ec68db839b4f400bcbdcaf8b7.jpg,1d457f8c-69ef-4d6e-b8c3-aa8c242d9733,1d457f8c-69ef-4d6e-b8c3-aa8c242d9733.jpg,Y +SAMAN,박진규,jkpark4@samaneng.com,jkpark4,221302.jpg,eae98775d02aa792f79f9c59626aa549f32005a6e6c669d09a58c6f153127ecf.jpg,f077f71d-693e-4ea2-8d55-a2ad1dfe7b55,f077f71d-693e-4ea2-8d55-a2ad1dfe7b55.jpg,Y +SAMAN,박찬제,cjpark@samaneng.com,cjpark,203096.jpg,c4924aa84a855f4c0eed3c2022e27fce29cf3394eedaea853bbf1646785fddc4.jpg,21ea40e0-f6d5-43a1-9ff5-fcfcb6ada994,21ea40e0-f6d5-43a1-9ff5-fcfcb6ada994.jpg,Y +SAMAN,박찬홍,chpark1@samaneng.com,chpark1,224132.jpg,d3f9a8ca3ee2eb5579a04979743a149e4b6821c6509ccef601b1cae222e0abcf.jpg,5ab64dd0-4d2e-43ff-b809-aa76636580e6,5ab64dd0-4d2e-43ff-b809-aa76636580e6.jpg,Y +SAMAN,박찬희,chpark@samaneng.com,chpark,221146.jpg,7a699f16a83b1884dd8d33dfb780825d41d934623621727484a683f290e51a38.jpg,a37601f5-ef07-4c9f-a5b2-cf5757d0f219,a37601f5-ef07-4c9f-a5b2-cf5757d0f219.jpg,Y +SAMAN,박창열,cypark@samaneng.com,cypark,184002.jpg,7b50ff2c4ed8ec9ebdcf20e0e0e6cfd298d3ff3b955da2b85b7ce7d91a7a049d.jpg,a6ede7c0-49c0-470a-9a3e-62f6613b8704,a6ede7c0-49c0-470a-9a3e-62f6613b8704.jpg,Y +HANMAC,박창종,cjpark2@hanmaceng.co.kr,cjpark2,M24010.jpg,9792c68164479f1f29e69f21e53cd2e3e06abb3d46c431fa5894503c322e7bd9.jpg,664ca931-a3b2-42a3-9482-068f813eaa1d,664ca931-a3b2-42a3-9482-068f813eaa1d.jpg,Y +HANMAC,박채영,cypark2@brsw.kr,cypark2,B24026.jpg,79b851505f8cba65a1fe1dd5f856571eaac298bfcbbe541ee820737cd4b5d892.jpg,a76caede-10cd-431d-ac1f-c846265bb206,a76caede-10cd-431d-ac1f-c846265bb206.jpg,Y +SAMAN,박천원,cwpark@samaneng.com,cwpark,220092.jpg,aea0478a0e9e8d44f8da3fcc066bbd164df74889bf94b7a778345e3cc9ea85c0.jpg,bdefd7db-1498-44d9-8d1a-e91a212290d2,bdefd7db-1498-44d9-8d1a-e91a212290d2.jpg,Y +SAMAN,박철승,cspark1@samaneng.com,cspark1,216167.jpg,13ee8e26a66cea416f1cfe35acfe7780a294ad05c805e3b65fca1b4859bdff8d.jpg,1da87bde-bb12-47da-93b4-e25c78c4accb,1da87bde-bb12-47da-93b4-e25c78c4accb.jpg,Y +HANMAC,박춘선,cspark2@hanmaceng.co.kr,cspark2,M17503.jpg,58a36b1f461ad9f3d9d3ee6a399609e6c4c301dd3ca837140e4b14905e97e9ce.jpg,0f2f74c5-b8e4-468f-a201-ed0af5dbc464,0f2f74c5-b8e4-468f-a201-ed0af5dbc464.jpg,Y +SAMAN,박춘식,cspark@samaneng.com,cspark,205240.jpg,c988c892d3a21bbf78d6cd0add2d90593d1841663c0fd308593403d2278a7cfd.jpg,fd4f913c-931c-4381-ae5f-7a00b92383e4,fd4f913c-931c-4381-ae5f-7a00b92383e4.jpg,Y +SAMAN,박치영,cypark1@samaneng.com,cypark1,225060.jpg,6c3e1f8ff3e40ff3b528a90c659b0f2c0498d53ee44556aa3e7a341c42bdd4d6.jpg,e87c53d6-cc63-4156-8f4d-5e2a94d41dc9,e87c53d6-cc63-4156-8f4d-5e2a94d41dc9.jpg,Y +HANMAC,박택규,tkpark@hanmaceng.co.kr,tkpark,M21444.jpg,8c4dca7ae7a0bca2a24c1c1ab4e7f4a39347234fa06a4c2dd8121c8051121478.jpg,2895ce3f-0561-44a6-b5e1-e58efaf2539f,2895ce3f-0561-44a6-b5e1-e58efaf2539f.jpg,Y +SAMAN,박하연,hypark2@samaneng.com,hypark2,024091.jpg,0a0a2792ec3289523f509ffd3d1f4a6e8af50ef709a96a2d80a79d66a366daaf.jpg,4e791bfb-407a-44f9-bf69-53cbfeeae67e,4e791bfb-407a-44f9-bf69-53cbfeeae67e.jpg,Y +SAMAN,박해균,hkpark4@samaneng.com,hkpark4,226101.jpg,40742808d596dd3c46e2a125bb29eabd00d648362d292fbe0d0114f9af743cd9.jpg,83651c2f-ede0-4163-a44e-5d76c0811bfd,83651c2f-ede0-4163-a44e-5d76c0811bfd.jpg,Y +SAMAN,박해림,hlpark@samaneng.com,hlpark,223238.jpg,6430c8ee4d5da25f768049e6ee36800a0b08bb049f24e0bfdc962f78fd7e5eb1.jpg,3022a127-c499-4680-a890-32f42e79ce37,3022a127-c499-4680-a890-32f42e79ce37.jpg,Y +SAMAN,박현구,hkpark@samaneng.com,hkpark,203095.jpg,84829aeb7661f43a342a76e835a91610a8c817d8572c4f4736b54328ed7df806.jpg,6fe0b2cd-2ba2-4541-8c8c-567d060aeac0,6fe0b2cd-2ba2-4541-8c8c-567d060aeac0.jpg,Y +SAMAN,박현규,hkpark1@samaneng.com,hkpark1,220020.jpg,80ea288649daf9d4efc037771c77a54648fa1d72c5c72b3148d20d6017878fb7.jpg,7f0d24ac-ddbc-4316-b44a-e4a0a6a73f7e,7f0d24ac-ddbc-4316-b44a-e4a0a6a73f7e.jpg,Y +SAMAN,박현규,hkpark2@samaneng.com,hkpark2,222255.jpg,11272ccaddc67e588f1130b32984881cf4312e62468cdf436cc1507a50f6af88.jpg,b80f87b5-1fe0-441b-8116-298243eedccf,b80f87b5-1fe0-441b-8116-298243eedccf.jpg,Y +SAMAN,박현근,hgpark@samaneng.com,hgpark,220035.jpg,dc3e583010ea1493a4047e3388d22b6387f18c6c3cd71179fc86e4b365489d6f.jpg,1f3ef42b-37ff-4146-aa9b-083070334302,1f3ef42b-37ff-4146-aa9b-083070334302.jpg,Y +SAMAN,박현배,hbpark@samaneng.com,hbpark,225148.jpg,eb28b6262bb9b48e098b6997f6cb2d957dcd8b083af15008e4a016df6a03672d.jpg,5e96ffa3-6103-403a-9086-b9fc6612716d,5e96ffa3-6103-403a-9086-b9fc6612716d.jpg,Y +SAMAN,박현수,hspark1@samaneng.com,hspark1,207241.jpg,3757a2046b72efb03680f5fb2868301901dbf044b9c066404ec432875e46e05c.jpg,f4f7babc-3357-478a-8ea4-abfbf18dee9b,f4f7babc-3357-478a-8ea4-abfbf18dee9b.jpg,Y +HANMAC,박현옥,hopark@hanmaceng.co.kr,hopark,M24084.jpg,ed79b7f34ba36405ed18dfa5aafcbe1f48d02a506c5ebf0c1353f4609da2008e.jpg,0c7bcc53-4405-478a-9645-6d2eb51202ea,0c7bcc53-4405-478a-9645-6d2eb51202ea.jpg,Y +SAMAN,박현준,hjpark@samaneng.com,hjpark,225277.jpg,a477d7b69235fa833523bb5d64de5520bc9eb6ac2c6fbf328f6dc2aa70998454.jpg,5ffb84ae-798e-4de5-81f6-bbb776ed2dac,5ffb84ae-798e-4de5-81f6-bbb776ed2dac.jpg,Y +SAMAN,박형열,hypark1@samaneng.com,hypark1,223239.jpg,f78f97008a6c7407712cd823ace431d75460a8a894459798573506f9910d2fce.jpg,73fe52b2-5904-449f-b870-0d7d838bf5c5,73fe52b2-5904-449f-b870-0d7d838bf5c5.jpg,Y +SAMAN,박혜란,hrpark2@samaneng.com,hrpark2,025126.jpg,b3b7372e5a15bb81ad8abc3d4b3561bbac635e50450201a2a693eaf3d377a88d.jpg,21443028-004b-4e2f-b3f6-d990d54c5e89,21443028-004b-4e2f-b3f6-d990d54c5e89.jpg,Y +SAMAN,박호국,hkpark3@samaneng.com,hkpark3,224136.jpg,d856524d5edcd28e47fa482994b91a8166f8d5310b8e53fd20072fd0bae8a61a.jpg,cffae801-a15a-4c95-bf2a-71ad17fe4a1d,cffae801-a15a-4c95-bf2a-71ad17fe4a1d.jpg,Y +SAMAN,박호식,hspark3@samaneng.com,hspark3,219091.jpg,588b22e05b25428b81cdac942aee28d06e6da987429f59af783734dbb6ea6d36.jpg,a1b4a6ea-d783-43f2-8ded-dd9400c9dd73,a1b4a6ea-d783-43f2-8ded-dd9400c9dd73.jpg,Y +SAMAN,박호연,hypark@samaneng.com,hypark,224215.jpg,162390c948601cdd8cda22aba04569342e8f95fc2b83651f8cdb9b795dcbde53.jpg,13dd954d-58fe-41a1-a5d6-9d436ed86bf7,13dd954d-58fe-41a1-a5d6-9d436ed86bf7.jpg,Y +HANMAC,박호진,hjpark2@hanmaceng.co.kr,hjpark2,M22064.jpg,83b3c0d0332fd56bb7d58e55189e6264b701b248e9fc195f05052b0df1fbef6d.jpg,242a147c-b873-4d26-bbe4-c2a997a2e09b,242a147c-b873-4d26-bbe4-c2a997a2e09b.jpg,Y +SAMAN,박희찬,hcpark@samaneng.com,hcpark,216023.jpg,9b4910fbedc49a45ede9fe36b17e846d7384f189c667b3371bc69ecee7ac5e49.jpg,a60cbd14-6967-4a98-ac20-2e052f78b7eb,a60cbd14-6967-4a98-ac20-2e052f78b7eb.jpg,Y +SAMAN,반용섭,ysban@samaneng.com,ysban,216083.jpg,4bf6cf09d5b89fcdad4a962cd8fce20f865d2a37daa623ecb89f29280571e4c9.jpg,bd687705-5319-4565-90b4-9d03e6028df6,bd687705-5319-4565-90b4-9d03e6028df6.jpg,Y +HANMAC,반진관,jkban@hanmaceng.co.kr,jkban,M21407.jpg,fec3124ef1c3df1432210d8781d4d137c558c1d957719d251527d19a4ffb4d85.jpg,67f7a43d-5034-4084-b44e-ebf3a6b8faf7,67f7a43d-5034-4084-b44e-ebf3a6b8faf7.jpg,Y +SAMAN,방노성,nsbang@samaneng.com,nsbang,219126.jpg,486b645c8ff2b8284ded792c26079371343f51cbdbac3f69f0761c613993abd9.jpg,96214aaf-27a9-42f9-9032-cd67477f6e97,96214aaf-27a9-42f9-9032-cd67477f6e97.jpg,Y +SAMAN,방승준,sjbang@samaneng.com,sjbang,223023.jpg,b7c48cec5ea806dd3edc16be63c52cefa3cef768678a05da7ca480b7e501e054.jpg,1bc09d0e-a667-427b-89f2-a61fc016b150,1bc09d0e-a667-427b-89f2-a61fc016b150.jpg,Y +SAMAN,방시영,sybang1@samaneng.com,sybang1,221153.jpg,15ac64aa79ccc64a4abaf2b2675fcfddece088333c7399b3875da7fddc98a447.jpg,1c400b7e-1e4c-41cf-b905-34bd68d2b67a,1c400b7e-1e4c-41cf-b905-34bd68d2b67a.jpg,Y +SAMAN,방찬종,cjbang@samaneng.com,cjbang,222075.jpg,1c894d9e2bdb87f8ec3b653d7ccbc6a964d2122d30cda972a012da0d9f0c5dc6.jpg,04da1f8b-9bfa-4f97-bfb8-f28df570bce4,04da1f8b-9bfa-4f97-bfb8-f28df570bce4.jpg,Y +SAMAN,배경민,kmbae@samaneng.com,kmbae,226024.jpg,781473f01cddbba14d39b8d3da300190d2619f25c9f0909c31d656e13670e2c7.jpg,44732a41-f01f-455c-a91f-6203dfe6f799,44732a41-f01f-455c-a91f-6203dfe6f799.jpg,Y +SAMAN,배경태,ktbae@samaneng.com,ktbae,220173.jpg,8d9dd0e864a59d484df5889b878c145a0fa02effff7a5ddce18742f736669f09.jpg,6630bf5a-e981-4559-bddc-53d24607a7d3,6630bf5a-e981-4559-bddc-53d24607a7d3.jpg,Y +SAMAN,배기석,ksbae@samaneng.com,ksbae,223066.jpg,b74be69d0c53a017b3da19756b9ca5d0d526e5c605e6b23f38df242793182618.jpg,424dbf12-4472-4f44-aa71-0ed344ac1a50,424dbf12-4472-4f44-aa71-0ed344ac1a50.jpg,Y +SAMAN,배길민,gmbae@samaneng.com,gmbae,225172.jpg,1581712282cf3e1821ce745a47e6ed3fab9005cb53a5547a8c9ef05a316d1710.jpg,218ee227-3715-4614-9116-67c2bcdb290e,218ee227-3715-4614-9116-67c2bcdb290e.jpg,Y +SAMAN,배도희,dhbae@samaneng.com,dhbae,209263.jpg,e4105f156f39f4e9dd17b694040a562c9f6f5805cf6897f21960350bef586869.jpg,121cf97e-480a-48f0-a03b-9afab0f2d475,121cf97e-480a-48f0-a03b-9afab0f2d475.jpg,Y +PTC,배문교,mgbae@brsw.kr,mgbae,P19204.jpg,2afb31f326f788b6711866eb3dbdd8bfc88965d144b8f6b73ffd301d09ad9ba8.jpg,cb0f4d00-7bc4-4990-bb39-cd49d1fcee26,cb0f4d00-7bc4-4990-bb39-cd49d1fcee26.jpg,Y +SAMAN,배민경,mkbae@samaneng.com,mkbae,025134.jpg,b6c949e0465a84e488d9c9b1d501244ac29067e57b1c0f0ee7841e184efa9099.jpg,c961f4af-8c3c-4015-b260-2246d2be92d9,c961f4af-8c3c-4015-b260-2246d2be92d9.jpg,Y +SAMAN,배민식,msbae@samaneng.com,msbae,216057.jpg,430302b66b6260ea13de91d952eb15521cb8dba671a53dd911ffec330a4c74f4.jpg,4be8e573-078a-43c0-9fda-1cf3b89a17a4,4be8e573-078a-43c0-9fda-1cf3b89a17a4.jpg,Y +SAMAN,배병관,bgbae@samaneng.com,bgbae,204305.jpg,7d540aeb673180cad6c5c87064abf93ac5d13a197b6fdda3b8bf4941d907863a.jpg,3631f243-6b0b-4b0f-bbdc-3eccdd87f9ac,3631f243-6b0b-4b0f-bbdc-3eccdd87f9ac.jpg,Y +SAMAN,배병탁,btbae@samaneng.com,btbae,207089.jpg,7ed460189771776b50f5b76f640989da6f9be029e3670160becfa721eaf93201.jpg,0871de27-5036-41a4-b33d-bcacdc7e19b1,0871de27-5036-41a4-b33d-bcacdc7e19b1.jpg,Y +SAMAN,배상우,swbae@samaneng.com,swbae,215032.jpg,8ba6ee3da4cf9f2bbd36e1dffef8e137e7b1c1815b369eb86ea51254a0fb8cc9.jpg,9da10203-4846-4e4a-b1f5-3ab40d19a3ff,9da10203-4846-4e4a-b1f5-3ab40d19a3ff.jpg,Y +SAMAN,배승환,shbae@samaneng.com,shbae,213027.jpg,0567b19eab6a54b27d9c9b5cd657c08c5906a5e06dc8839960fabe19677a0930.jpg,f8d1b7e7-8eb6-4b3e-a08e-a16ef26367ae,f8d1b7e7-8eb6-4b3e-a08e-a16ef26367ae.jpg,Y +SAMAN,배을호,ehbae@samaneng.com,ehbae,217056.jpg,e7030270208b6ece429dd50d6b6d3bae2d2a2bd64b2ef5acf1a833a8c106cbcf.jpg,f89c96fd-adc3-40d9-b1fd-70834c3c0811,f89c96fd-adc3-40d9-b1fd-70834c3c0811.jpg,Y +SAMAN,배정빈,jbbae@samaneng.com,jbbae,026062.jpg,e807a0bc0fa650f4526bcc794aabf3c03c5a008e58f0ac6aa5000cf59e9349bd.jpg,50ba8e05-a25e-4bb3-9add-79086c4d80cd,50ba8e05-a25e-4bb3-9add-79086c4d80cd.jpg,Y +SAMAN,배정원,sdbae@samaneng.com,sdbae,223058.jpg,1d49c38412ba18a3bc96ef098bfe1ce6926d9aee6e78924715042dc391cc336f.jpg,a2b0b63c-5573-41b9-a61a-c6b3cb0a197c,a2b0b63c-5573-41b9-a61a-c6b3cb0a197c.jpg,Y +SAMAN,배준식,jsbae@samaneng.com,jsbae,219089.jpg,d7fb4322808cf7abf39e1c31a8fbe41a27fa7e48be845512f68fa3231ea4756f.jpg,641dd1e7-66d6-424b-a128-cd5a1741bb19,641dd1e7-66d6-424b-a128-cd5a1741bb19.jpg,Y +SAMAN,배지원,jwbae@samaneng.com,jwbae,025077.jpg,cf214d59e3b9446d5bd8b5559aaafd018d56fbfff8ff1c91857c6ddc6d64036e.jpg,abc1e09b-91eb-4e14-9779-564b3cff89bc,abc1e09b-91eb-4e14-9779-564b3cff89bc.jpg,Y +SAMAN,배지윤,jybae@samaneng.com,jybae,220155.jpg,4ae768ca486da7d574b95894f3db16b032fce65a7eb5ba5fac3ab5a686793dad.jpg,e5eb4449-952c-4593-8b8f-5a5cf2766ef3,e5eb4449-952c-4593-8b8f-5a5cf2766ef3.jpg,Y +SAMAN,배지혁,jhbae@samaneng.com,jhbae,225073.jpg,6975c4f137fd037ba2cc25924fa1c007f97e73eb4f51c74a4e0eb132f12e9fb4.jpg,06f857d6-6a77-46f4-bbc2-703d39af8d34,06f857d6-6a77-46f4-bbc2-703d39af8d34.jpg,Y +HANMAC,배진우,jwbae2@hanmaceng.co.kr,jwbae2,M24073.jpg,dff5895206bed033343e6dbcb7654756cad630beff745e2b6a3118543c3324d1.jpg,bd2fca32-0b69-4d9d-ab8a-1ccd8b33f3e1,bd2fca32-0b69-4d9d-ab8a-1ccd8b33f3e1.jpg,Y +SAMAN,배창국,ckbae@samaneng.com,ckbae,207062.jpg,da24acb02aebf9aa906eba872f8ce213dea081eeab01e9701ed569aeb663be66.jpg,0ca7bae4-8474-444e-8ce2-4367edc2c9d4,0ca7bae4-8474-444e-8ce2-4367edc2c9d4.jpg,Y +SAMAN,배한수,hsbae@samaneng.com,hsbae,222131.jpg,e8f1362b5ffd5426fe1acfb4fbf673f0752cf2b280cf7f1a7729682b5212231e.jpg,f3d54565-b931-4412-b515-8d4267d4a7d3,f3d54565-b931-4412-b515-8d4267d4a7d3.jpg,Y +SAMAN,배형원,hwbae@samaneng.com,hwbae,215074.jpg,24ad62c0ba3f22f38173ce382aeac63e4688bc7e1440e975bf4c83acf9ca83ab.jpg,d0b543f5-9734-40da-a266-a1310306030d,d0b543f5-9734-40da-a266-a1310306030d.jpg,Y +HANMAC,백건휘,ghbeak@hanmaceng.co.kr,ghbeak,M23001.jpg,b63573afaaacf7ccae73cf962f9c58576b756d5f364dcfacca24c85bb80dd978.jpg,5f135d8c-ad01-44d0-b158-8fbe88d4d954,5f135d8c-ad01-44d0-b158-8fbe88d4d954.jpg,Y +SAMAN,백순교,sgbaek@samaneng.com,sgbaek,223152.jpg,255340767a06494d0e88a69f527ac1e72ba8c3dde97ad7641f2ef71fb4a0a24f.jpg,23f1ff83-2b3c-42e6-8f29-9f307811f15a,23f1ff83-2b3c-42e6-8f29-9f307811f15a.jpg,Y +SAMAN,백순철,scbaek@samaneng.com,scbaek,223045.jpg,a7b3bb79f9b8cc09840f41fc9a03525d06dfb5cf5987687c884c6532698e543d.jpg,a766facc-0f81-46c6-811a-5d769ba8cf41,a766facc-0f81-46c6-811a-5d769ba8cf41.jpg,Y +SAMAN,백승민,smbaek@samaneng.com,smbaek,225319.jpg,7b1e2a7e50ccb8e30d81c7e258435557bdc0f6c844ea4f791016b314b8b45b2b.jpg,a43dd39f-d371-470f-92b9-df7294f66b37,a43dd39f-d371-470f-92b9-df7294f66b37.jpg,Y +SAMAN,백승범,sbbaek@samaneng.com,sbbaek,226104.jpg,be53d310c337ad3714ece902d4134083ba103e2b8cb4585f42adb30a7fe18b3e.jpg,65531e92-f0af-4442-a3c7-ee569d8c68c3,65531e92-f0af-4442-a3c7-ee569d8c68c3.jpg,Y +SAMAN,백승혁,shbaek1@samaneng.com,shbaek1,224352.jpg,eda780a48cc3b2a97315a661d95d8bbdc820d6a6cd6c93092e2b244e8a79eece.jpg,bc32d8b0-a388-41cf-a0f4-fe7c348ca817,bc32d8b0-a388-41cf-a0f4-fe7c348ca817.jpg,Y +SAMAN,백승희,shbaek@samaneng.com,shbaek,220067.jpg,35fb400ccfb207a13630ce837dbfa412d7b74b4af5a0598615909544928053bb.jpg,2a45a829-1c44-4c6a-9f0f-d3cc5b1adffb,2a45a829-1c44-4c6a-9f0f-d3cc5b1adffb.jpg,Y +SAMAN,백예은,yubaek@samaneng.com,yubaek,224162.jpg,f66e58c8713d5e2e0b119a22075a83b8e07961631c7f9a136fa2a3f8225a3b3f.jpg,978dd57d-f7c7-4eea-8b11-3fb3c17cbc2b,978dd57d-f7c7-4eea-8b11-3fb3c17cbc2b.jpg,Y +SAMAN,백운기,wgbaek@samaneng.com,wgbaek,222209.jpg,c06051d117bb1bb88a224323b4e14f1587ec96a19cbbc53202223f2396dc3a6c.jpg,17c6b006-94ff-42fe-8542-97e238c92cf0,17c6b006-94ff-42fe-8542-97e238c92cf0.jpg,Y +SAMAN,백운영,uybaek@samaneng.com,uybaek,215085.jpg,5b42fd9c8146783f04b954d8a416806cd03d34770ac579897f54f9e7a1c81c6c.jpg,5fd15ae4-a6ea-4793-98d3-83840226246a,5fd15ae4-a6ea-4793-98d3-83840226246a.jpg,Y +SAMAN,백주희,jhbaek@samaneng.com,jhbaek,026011.jpg,e23e414d8ce19df90563397a2be108397bed80fc8656de59758771b304f4cfd4.jpg,52b622a9-aed8-441b-a932-fe9f76bd7ac6,52b622a9-aed8-441b-a932-fe9f76bd7ac6.jpg,Y +SAMAN,백태용,tybaek@samaneng.com,tybaek,217075.jpg,7206b42643893dbcdaed0a5a13b773fdd16969970f749cc0046f6dc07e3c927a.jpg,399dca19-cdd3-4665-9a3a-b43a212fcb77,399dca19-cdd3-4665-9a3a-b43a212fcb77.jpg,Y +SAMAN,백효석,hsbaek@samaneng.com,hsbaek,182003.jpg,fbc6c8aa3c16b996207768d8d619cdcf3ad9771b4116a115a202f18050086d8d.jpg,e00be3ad-a274-4cde-ae56-2b4900eef70f,e00be3ad-a274-4cde-ae56-2b4900eef70f.jpg,Y +SAMAN,백희경,hkbaek@samaneng.com,hkbaek,025058.jpg,bd87b1fb6a4fd40b8bd25b5b9c3c300b358f49306b49d42a3d7c8903f67304e4.jpg,5d8c3783-267f-4726-b168-c5dba1c2963f,5d8c3783-267f-4726-b168-c5dba1c2963f.jpg,Y +SAMAN,백희선,hsbaik@samaneng.com,hsbaik,189517.jpg,0641c1c19022be4a90ac8ab828d2d1d167902528abd8af76bc78d632bf57ed92.jpg,4ded2e9c-df28-4a01-9c5d-ddfb738a1fd4,4ded2e9c-df28-4a01-9c5d-ddfb738a1fd4.jpg,Y +SAMAN,변기상,ksbyun@samaneng.com,ksbyun,218073.jpg,f9cdd7b7f3c8aee24802deac3dc44526570d33d684852ec7cbdd38302cb391af.jpg,2ad3ae55-ee84-4923-828d-6174b281307e,2ad3ae55-ee84-4923-828d-6174b281307e.jpg,Y +SAMAN,변상우,swbyun@samaneng.com,swbyun,226048.jpg,84c1f7f0a06bf2759c188dba4712f8304ab5d9c9cbd050e74653c537959bf3a4.jpg,22fbefde-482c-4142-8aac-04998d861943,22fbefde-482c-4142-8aac-04998d861943.jpg,Y +SAMAN,변상현,shbyeon@samaneng.com,shbyeon,223034.jpg,9101990efc1a12404b164b0a35a073517a38b1c28af06a6402a004cbabe8a8f5.jpg,ac7b0abc-1445-4de3-81eb-a655d001c7fb,ac7b0abc-1445-4de3-81eb-a655d001c7fb.jpg,Y +SAMAN,변성주,sjbyun@samaneng.com,sjbyun,225290.jpg,1f317ed1131338cf2884c108c6ae95bf4adec3fae8741e4697e3b18e407c486c.jpg,91a5d64e-8199-4e41-906d-d8e258b2e0ff,91a5d64e-8199-4e41-906d-d8e258b2e0ff.jpg,Y +SAMAN,변성철,scbyeon@samaneng.com,scbyeon,225108.jpg,91ddff2b653b4e16b7214626219fb663db442f4556bc48cc48a7cc7e942ca014.jpg,a7ce6ef5-7362-4f6a-b79f-5b4741f4b506,a7ce6ef5-7362-4f6a-b79f-5b4741f4b506.jpg,Y +SAMAN,변역근,ykbyun@samaneng.com,ykbyun,217159.jpg,990da8144923cafb3c19c75738f2d6315ca5f001e8a7d649921ca4e5d1852380.jpg,4bb3b675-2114-4faa-a1c0-677a9e083456,4bb3b675-2114-4faa-a1c0-677a9e083456.jpg,Y +SAMAN,변정석,jsbyun@samaneng.com,jsbyun,225306.jpg,7850aea1aef8df2c9f7195f1eae14b9c31da7790e80d9a228b7c99b4df071744.jpg,60f8f21f-ec46-440f-8d67-ec0f0b548d2a,60f8f21f-ec46-440f-8d67-ec0f0b548d2a.jpg,Y +SAMAN,변정안,jgbyun@samaneng.com,jgbyun,224361.jpg,8155d429252f0e0588d0e9ba71f92c1d580d9b40f40c29baf9b4a97efb2b69f3.jpg,b3ede945-d5c0-41a4-badd-752c7589d108,b3ede945-d5c0-41a4-badd-752c7589d108.jpg,Y +SAMAN,변정운,jwbyun@samaneng.com,jwbyun,222034.jpg,2c9dd4726356acc6d39fb9b2e08ad9c4b5f1fd26f6877cf8bf95929548d507c9.jpg,3966c318-9f35-47bf-bea5-9d115f7b15ab,3966c318-9f35-47bf-bea5-9d115f7b15ab.jpg,Y +HANMAC,변한석,hsbyoun@hanmaceng.co.kr,hsbyoun,M22057.jpg,412eb48a716791bb31a2a0ae1ab3104ab11f715a17698684038d53b0184a4aad.jpg,f8ad0316-7cb8-4ea0-bd0e-ddfe3f450ecd,f8ad0316-7cb8-4ea0-bd0e-ddfe3f450ecd.jpg,Y +SAMAN,복진청,jcbok@samaneng.com,jcbok,222193.jpg,6d7d67e083e36e1ba1594bbcf6e6e8be656241e81f01fd81ffdca7a8dbe69434.jpg,6cf1ea97-f5c1-488d-8606-0d8f5278fc5a,6cf1ea97-f5c1-488d-8606-0d8f5278fc5a.jpg,Y +SAMAN,복진훈,jhbok@samaneng.com,jhbok,221238.jpg,c22969da0bea93588cee0631cd098dd4a0adc8fd8f6e43a45e8dad605061d0aa.jpg,2cf572b7-39ef-48b0-b76d-60835ff64a4f,2cf572b7-39ef-48b0-b76d-60835ff64a4f.jpg,Y +SAMAN,서건,gseo@samaneng.com,gseo,225046.jpg,8d67b8775553eacac2c2fa8f311f792af86e80760ea526faf168677e2769bac3.jpg,16450bf7-f416-4dc2-a55c-dfe5146bb0f2,16450bf7-f416-4dc2-a55c-dfe5146bb0f2.jpg,Y +SAMAN,서경석,ksseo@samaneng.com,ksseo,218076.jpg,8cad6b40f6c21a77d4076f49c65b26d9514cd3c669238ea22d9777cb76256a13.jpg,7fdb0a0a-b99b-4a90-8558-0c624976e16c,7fdb0a0a-b99b-4a90-8558-0c624976e16c.jpg,Y +SAMAN,서기섭,ksseo1@samaneng.com,ksseo1,223110.jpg,c29274df10138f521652535fa203ef65fdb8ac4726a53206c12474671a680f14.jpg,73234bb3-eaec-4eec-a2ab-6f9b16f73a90,73234bb3-eaec-4eec-a2ab-6f9b16f73a90.jpg,Y +HANMAC,서남호,nhseo@hanmaceng.co.kr,nhseo,M23035.jpg,5c0cbcded47d33518ca9284af9323e01edee15d58480e01a8f89f4b1e303fd42.jpg,a4b9af80-31a8-4aea-92ff-08554d0673ee,a4b9af80-31a8-4aea-92ff-08554d0673ee.jpg,Y +SAMAN,서동석,dsseo1@samaneng.com,dsseo1,223132.jpg,89693c94926139132c67af034db62f5a23f2c7b763f576b3219eb928482a44b7.jpg,63e8ad9f-2b6f-4faa-b8ae-3d47875748f5,63e8ad9f-2b6f-4faa-b8ae-3d47875748f5.jpg,Y +SAMAN,서동수,dsseo@samaneng.com,dsseo,216132.jpg,f583baee6aafc7d689b90240d1474b44f8a1f82ae920a548feea87bd97bb157a.jpg,545187da-0973-4601-881b-7576574839db,545187da-0973-4601-881b-7576574839db.jpg,Y +SAMAN,서동일,diseo@samaneng.com,diseo,224037.jpg,e931f931fd8218235795c070fa13076578dbab68f92c80206c412dd2c28767be.jpg,312fa42f-bb9c-44b3-bd01-119ac31f9ef1,312fa42f-bb9c-44b3-bd01-119ac31f9ef1.jpg,Y +SAMAN,서동진,djseo@samaneng.com,djseo,224146.jpg,fa2256c9b640c8432397b2accefd60cd35536a1cb7d9c6e03900e5dc568848c8.jpg,7b0fb7b5-a64f-4e6b-a659-4be7387e3790,7b0fb7b5-a64f-4e6b-a659-4be7387e3790.jpg,Y +HANMAC,서동해,dhseo@brsw.kr,dhseo,B24023.jpg,01aa5d0991b42c77f25c3dc247c17908f923466da2d2a696a6ff3b64c627c0b1.jpg,6885e0e4-87c3-42fb-9178-2a5233ca28a2,6885e0e4-87c3-42fb-9178-2a5233ca28a2.jpg,Y +SAMAN,서민수,msseo@samaneng.com,msseo,215096.jpg,5997a7c875a281ba2d4843e7bb020693451b739dec0a86c92eaa0430d6039911.jpg,261c40fe-686a-4983-b7d8-5380ec2f0438,261c40fe-686a-4983-b7d8-5380ec2f0438.jpg,Y +HANMAC,서병철,bcseo@hanmaceng.co.kr,bcseo,M12207.jpg,56bba3848341ebf5ea991b9aeaf585f007ae9f03fa6d6869ec550818a8dc33dd.jpg,63cbb87d-cf4d-42c8-a72a-1ac73af01d54,63cbb87d-cf4d-42c8-a72a-1ac73af01d54.jpg,Y +HANMAC,서상모,smseo@hanmaceng.co.kr,smseo,M20513.jpg,88d715f65144c5a8472521b8e57a26b13d074fb9213c42c945e7539982f1af8f.jpg,69c772a6-924b-4f69-8e7c-04f7f4264539,69c772a6-924b-4f69-8e7c-04f7f4264539.jpg,Y +HANMAC,서성열,syseo@brsw.kr,syseo,M01103.jpg,800f27f7f22badc98bf7f72ada4bdfbff5b0d3b58f3d2653dd47a160c2d248eb.jpg,ee27fae1-aa3d-452b-9e5f-e0a700df0723,ee27fae1-aa3d-452b-9e5f-e0a700df0723.jpg,Y +SAMAN,서세창,scseo1@samaneng.com,scseo1,226149.jpg,33e826f20c05331be6137bd2d1ab9706239e91517c89a8b86cad86b1a21cde5f.jpg,2f5ceefa-37ab-43af-a282-25f7a9307251,2f5ceefa-37ab-43af-a282-25f7a9307251.jpg,Y +SAMAN,서순임,siseo@samaneng.com,siseo,199031.jpg,4d04dd863cc894c47bceef0784327e7e68dfcf214659e1f4abd2cd4a9f029a89.jpg,8f4e78cd-3c79-4c0d-8886-39050e9a81a9,8f4e78cd-3c79-4c0d-8886-39050e9a81a9.jpg,Y +HANMAC,서순창,scseo@hanmaceng.co.kr,scseo,M21425.jpg,f385f7e8879027daf6b7340814f7c1a99eb7b37413ca4d6b6bfadb8f976cc982.jpg,9dda4599-c5a2-44c4-ab92-2c8cb0d2ac44,9dda4599-c5a2-44c4-ab92-2c8cb0d2ac44.jpg,Y +SAMAN,서승완,swseo@samaneng.com,swseo,223135.jpg,eb044628fe593a1944d3c348b3bda30c142835ff2650cdb7b4fc9e7ab26453f5.jpg,eb232017-3f3b-47f8-ae27-6afdb14dffba,eb232017-3f3b-47f8-ae27-6afdb14dffba.jpg,Y +SAMAN,서승필,spseo@samaneng.com,spseo,203288.jpg,701dcb4a33195ed774ccf29b9dbac59a3874e1159814649cc1b3d42c376d5972.jpg,c5a3f05c-34ac-4c68-8bb1-a44cdf81ad58,c5a3f05c-34ac-4c68-8bb1-a44cdf81ad58.jpg,Y +SAMAN,서영제,yjseo@samaneng.com,yjseo,192012.jpg,03ca40e3b0a09578c334267124464dedd89ca13d9080347bf9a1e6ef24a5d18c.jpg,312c00d1-d6ef-4d45-96f6-4dfb2d92dbde,312c00d1-d6ef-4d45-96f6-4dfb2d92dbde.jpg,Y +SAMAN,서우빈,wbseo@samaneng.com,wbseo,221229.jpg,4b47d5972e651812132595ba42d2c480584dfba5b9e441ff2861636aee885d22.jpg,8d6559a1-3a1f-4ffa-986f-efb12ba38a62,8d6559a1-3a1f-4ffa-986f-efb12ba38a62.jpg,Y +HANMAC,서우석,wsseo@hanmaceng.co.kr,wsseo,M24046.jpg,513b2b11aa5441aeaaf36455fffbb9da4710982934fa056c99e5b3d66d4b651e.jpg,cd6d4cf2-c11e-41bb-9ecb-f8f8a65b4e21,cd6d4cf2-c11e-41bb-9ecb-f8f8a65b4e21.jpg,Y +SAMAN,서유동,ydseo@samaneng.com,ydseo,225192.jpg,e6babc7ab4c05697e3686d61025b271c727ec8b298833ee3a6be8da6b6417889.jpg,9532a5d3-69df-45ac-a313-93a81b2fad21,9532a5d3-69df-45ac-a313-93a81b2fad21.jpg,Y +SAMAN,서윤회,yhseo@samaneng.com,yhseo,025070.jpg,19010473770f4d0c47f02dda4c7e4a330c8cd43724824f6d81a9b5494442d7ae.jpg,512d6bd3-1bf9-49c4-a46e-99c6df5f49cd,512d6bd3-1bf9-49c4-a46e-99c6df5f49cd.jpg,Y +SAMAN,서은애,easeo@samaneng.com,easeo,024101.jpg,209761836a9276f41ff214efdd3034dcfeaa3ff422f12ed576b5451be088799e.jpg,055bd539-5ce7-4180-a4af-46c3840275b7,055bd539-5ce7-4180-a4af-46c3840275b7.jpg,Y +SAMAN,서재희,jhseo2@samaneng.com,jhseo2,221155.jpg,018646891536dcf3be53ff71e0fd8dc84b27138ba7447a55f02a06caa4d2908a.jpg,e8768e2f-d95b-491d-85ed-d783c5b9fef7,e8768e2f-d95b-491d-85ed-d783c5b9fef7.jpg,Y +SAMAN,서정민,jmseo@samaneng.com,jmseo,026074.jpg,2a6f8c87f9a45b52e85f9b5ad55fea3686633bf7b60454f317db835d06a52b67.jpg,e1e7b5f7-0731-4fd2-b2b7-37c7de5f14f4,e1e7b5f7-0731-4fd2-b2b7-37c7de5f14f4.jpg,Y +SAMAN,서정아,jaseo@samaneng.com,jaseo,225033.jpg,16b0df5964299333f30d593c4bcb3000f4c5b3b7f390d39cff6cda89490cec7f.jpg,6d238f0e-232b-4bea-afde-cf44b9b3f359,6d238f0e-232b-4bea-afde-cf44b9b3f359.jpg,Y +SAMAN,서정택,jtseo@samaneng.com,jtseo,218031.jpg,1f743cb8ee9ac2e4a36cb6ca3b36af5ebaf13e844b67c195c70076319f636ef0.jpg,bfefd442-f625-4537-8e72-56f919764ea1,bfefd442-f625-4537-8e72-56f919764ea1.jpg,Y +SAMAN,서태원,twseo@samaneng.com,twseo,225029.jpg,1aba49f3d722bf2f819b97db9407ad1c2516fac10fbb6b17507731e7c33860db.jpg,d49a9659-ac0e-4866-ab34-deb8ff3634ec,d49a9659-ac0e-4866-ab34-deb8ff3634ec.jpg,Y +SAMAN,서하연,hyseo@samaneng.com,hyseo,221009.jpg,49c6c50ef45693cd073dc8a130b6cca171edd8b2d2cc998c71547740fd7e43e0.jpg,62548191-1715-459f-ac4e-38a86d711d6d,62548191-1715-459f-ac4e-38a86d711d6d.jpg,Y +SAMAN,서현오,hoseo@samaneng.com,hoseo,226005.jpg,057c21aa8123a690a9a7625888ee72cca19e6361fb52e228aea544224b615dbf.jpg,7311850b-f943-4dea-bf62-d7dd21136778,7311850b-f943-4dea-bf62-d7dd21136778.jpg,Y +HANMAC,서현옥,hoseo2@hanmaceng.co.kr,hoseo2,B15203.jpg,d2a7b3653b565fa069a63ab50b96c7fe96c07b4459046450877283f055f90e2c.jpg,6f7f975e-5f63-41fa-afbb-d558cddc837a,6f7f975e-5f63-41fa-afbb-d558cddc837a.jpg,Y +SAMAN,석융원,ywsuk@samaneng.com,ywsuk,224054.jpg,caebc88637fefd0a01394ccb96aa6688921067cb6a07aef6afb974d117e68bf2.jpg,0d68bdc2-5697-4b1a-aa1f-4a8deab0d7cd,0d68bdc2-5697-4b1a-aa1f-4a8deab0d7cd.jpg,Y +SAMAN,석재우,jwseok@samaneng.com,jwseok,222019.jpg,79bab7c79f68d90f95d1d7ba78c8b74d9acbf520a35845f325daa8ee754e49f4.jpg,e8e7fb0c-148d-4a96-84e1-a1b32ca20b57,e8e7fb0c-148d-4a96-84e1-a1b32ca20b57.jpg,Y +SAMAN,선현진,hjsun@samaneng.com,hjsun,193024.jpg,801f7435c5c1ea42b53ee112a3156d17d48d88bcc3e9a0e76185af37e4987741.jpg,46862b1b-aa7f-4eca-af94-0c1dec79d159,46862b1b-aa7f-4eca-af94-0c1dec79d159.jpg,Y +HANMAC,설문형,mhseol@hanmaceng.co.kr,mhseol,M24014.jpg,b905c15d7cc86cf54cc744fabfb771675260727d73e73c6148c7ed899ff2721e.jpg,f913eec0-a9b3-42ec-80ce-739b5ce37e5d,f913eec0-a9b3-42ec-80ce-739b5ce37e5d.jpg,Y +SAMAN,성기건,kksung@samaneng.com,kksung,226098.jpg,d6b07e783fda17d7b38a119bb90168d4d5f80e1b483420d754ebf0e6fe0ba015.jpg,07598f9c-5711-4ca1-99fd-3c15dce0de69,07598f9c-5711-4ca1-99fd-3c15dce0de69.jpg,Y +SAMAN,성기천,gcsung@samaneng.com,gcsung,202181.jpg,bcc3d6742155e68d35e0aea4807ddc49cdececf7b60d1d70527be1d7fa16a57b.jpg,b4487c84-7e90-483b-afad-9e1e00d73f23,b4487c84-7e90-483b-afad-9e1e00d73f23.jpg,Y +SAMAN,성몽식,mssung@samaneng.com,mssung,196064.jpg,8c6ae506425fd5a43de128473be8cb4b31c3585e3a30c7cc94b26fedac3458d4.jpg,bd25bb84-6e7a-4ead-9904-6977a466de3d,bd25bb84-6e7a-4ead-9904-6977a466de3d.jpg,Y +SAMAN,성봄,bsung@samaneng.com,bsung,026025.jpg,d270be6e6c52b6cfde055b98c5f184763f23bbab60eedc22aa3bc0ee31f58fe4.jpg,1b28ad9c-190d-4f96-91fb-da3508efc2d1,1b28ad9c-190d-4f96-91fb-da3508efc2d1.jpg,Y +SAMAN,성세현,shsung@samaneng.com,shsung,225373.jpg,c8ea11467b9ae1203daf3038b018964e16042e9179f20bcab57a34802b02eda3.jpg,bf4fdc12-f50f-4e9f-939e-0975dfb13b5f,bf4fdc12-f50f-4e9f-939e-0975dfb13b5f.jpg,Y +SAMAN,성열용,yysung@samaneng.com,yysung,216101.jpg,51e347117086bd0efac6565961ede9dc1c38d408423af270332ad3556d087866.jpg,88795dae-39c3-4ac9-b25d-bf5beba5b4ee,88795dae-39c3-4ac9-b25d-bf5beba5b4ee.jpg,Y +SAMAN,성유정,yjsung@samaneng.com,yjsung,225099.jpg,63c95067cb254232eee39c9ab7a88e54f8fba91b93179c5e6802089e2c19b518.jpg,993735b4-2c2b-48ea-8749-1c40e79c8a1f,993735b4-2c2b-48ea-8749-1c40e79c8a1f.jpg,Y +HANMAC,성형일,hisung@hanmaceng.co.kr,hisung,M06203.jpg,8c67f6c17f88028413f1478b50c04c17fc53010dd612e4e8565e77133f5fdd99.jpg,40d4ca58-8f34-4c99-923d-63e7097086b3,40d4ca58-8f34-4c99-923d-63e7097086b3.jpg,Y +SAMAN,소다연,dyso@samaneng.com,dyso,222016.jpg,cbb77fb045bc4e94b187513bb27a2efec64124531ab4626009431b93aeba7534.jpg,d99888f0-5e4d-467f-ac5a-b7368703de37,d99888f0-5e4d-467f-ac5a-b7368703de37.jpg,Y +SAMAN,소민수,msso@samaneng.com,msso,222008.jpg,970db819bd747db9b9eff2df0225d023136c325a6fd53ed3e9dd4e4d16d50cca.jpg,5f46c4d9-f149-4c89-8495-f27649e80ed3,5f46c4d9-f149-4c89-8495-f27649e80ed3.jpg,Y +SAMAN,소순옥,sosoh@samaneng.com,sosoh,222069.jpg,40cdea54601b6a9585622a58bed7399ebf04171fcefec88dd56a80c96b65b165.jpg,f615a848-8586-4ed6-bdbe-c69fc4540086,f615a848-8586-4ed6-bdbe-c69fc4540086.jpg,Y +SAMAN,소윤섭,ysso@samaneng.com,ysso,224370.jpg,9369474e6fa693898e3299a0a08ca23658838c9465c7b1db8202337e3a3b27b3.jpg,48647595-fa33-42b2-b4a8-b1fc2d3af32f,48647595-fa33-42b2-b4a8-b1fc2d3af32f.jpg,Y +SAMAN,소의건,ugso@samaneng.com,ugso,226006.jpg,49a6b36f761e01285c43bc667d22cfa3831919f6bb8001da523c11a523b03425.jpg,9a45f7be-8fad-4400-aa47-4dc6e30d44e0,9a45f7be-8fad-4400-aa47-4dc6e30d44e0.jpg,Y +SAMAN,손명덕,mdson@samaneng.com,mdson,226069.jpg,b04504fbff155e0b5d5326278b03b7f7db1aefce59f7069067b4139c09fbb16c.jpg,f2749d23-4af6-4ffe-acd7-6bac6a3a3c07,f2749d23-4af6-4ffe-acd7-6bac6a3a3c07.jpg,Y +SAMAN,손민기,mkson@samaneng.com,mkson,209102.jpg,f08bd94c48b3b78857f5c121e713a991b1559b54b659d53e5c9dc3f925a4fe5c.jpg,23c09413-eda8-4bef-aee3-fd8effbaba92,23c09413-eda8-4bef-aee3-fd8effbaba92.jpg,Y +SAMAN,손봉수,bsson@samaneng.com,bsson,225230.jpg,e732d6ef5885b1a67a6605e5393c40ab28e35cb37754477e438a3d50f27ddef2.jpg,db5ef5b4-55bd-4760-b21c-a83d98317d36,db5ef5b4-55bd-4760-b21c-a83d98317d36.jpg,Y +SAMAN,손석훈,shshon@samaneng.com,shshon,221105.jpg,776b5d081697a026c8cc745e2f1fa0c4889a71b14640d69a466326608ab363b0.jpg,152f814f-4b72-4bba-b526-f675e97ab53c,152f814f-4b72-4bba-b526-f675e97ab53c.jpg,Y +SAMAN,손성택,stson@samaneng.com,stson,220157.jpg,c00a0edf0e9073617afdd7c846e92a8cd476797d70e0ed625b265c754674fa0a.jpg,0302df3f-67d5-4f50-9a27-47a60a406fe8,0302df3f-67d5-4f50-9a27-47a60a406fe8.jpg,Y +SAMAN,손영준,yjson@samaneng.com,yjson,221204.jpg,462f6d539975390593849ec1a876903b1879dbf41694aded658fd9f16259b47c.jpg,73e34e5c-ed3d-4684-a634-1efebafe18a5,73e34e5c-ed3d-4684-a634-1efebafe18a5.jpg,Y +SAMAN,손원일,wison@samaneng.com,wison,219155.jpg,a1dc1cf7c73169e9252ff7e75ad3ce8083dd2024e80360d73713b50d29b3d516.jpg,582bdaa5-d4e0-4a47-b913-619eedfa882a,582bdaa5-d4e0-4a47-b913-619eedfa882a.jpg,Y +SAMAN,손은환,ehson@samaneng.com,ehson,223347.jpg,addac39756a37cbe893cd928a81d7429272802c3605bff5efe73e80f010dbc2f.jpg,c25baab9-d023-4860-84cc-c62ac3be102c,c25baab9-d023-4860-84cc-c62ac3be102c.jpg,Y +SAMAN,손일민,imson@samaneng.com,imson,225142.jpg,b3d1d88ad9972b5eb1b57caac5f83f406922359c8447dcddd415eccbe59f1525.jpg,95ca8978-edd9-4b34-ad39-591f74e33918,95ca8978-edd9-4b34-ad39-591f74e33918.jpg,Y +HANMAC,손재용,jyson2@hanmaceng.co.kr,jyson2,M08306.jpg,868a50f9a1239a593c2c8f65f8e3e8f1ec00e3db2a3fd50cec7b0c4de7ab1d7f.jpg,7ae9bb67-9e72-44a7-860c-ded64ab62401,7ae9bb67-9e72-44a7-860c-ded64ab62401.jpg,Y +HANMAC,손제근,jkson@brsw.kr,jkson,B24022.jpg,721ae7cd336f9208445e9a195c6c3867f93133157bc258d3a4440d17d7f29108.jpg,6b08e1e3-7fe7-4d75-989f-8aafa26067eb,6b08e1e3-7fe7-4d75-989f-8aafa26067eb.jpg,Y +SAMAN,손종욱,jwson@samaneng.com,jwson,221177.jpg,ad3947459c1c79099d8e8c52907f880f5989f1bd9b2d88e9fca6d019f2cb0172.jpg,d31db777-8a0b-487f-b783-6dd6fcd59bba,d31db777-8a0b-487f-b783-6dd6fcd59bba.jpg,Y +SAMAN,손주열,jyson@samaneng.com,jyson,225091.jpg,c4726ce6e4e19c5a7747ae46e39396093a6a2580ff462e9e37989025b7f8be6f.jpg,b3c59f91-4bb0-4944-8ae5-d2f138c8119b,b3c59f91-4bb0-4944-8ae5-d2f138c8119b.jpg,Y +SAMAN,손주호,jhson1@samaneng.com,jhson1,192022.jpg,868d2b31c76406f10fee8457d50cd84cc5adb687de69d3deb90c74e4bbbf87e0.jpg,bcd4b1b5-abb4-4dc0-b4c3-209bc64f7ed5,bcd4b1b5-abb4-4dc0-b4c3-209bc64f7ed5.jpg,Y +SAMAN,손준우,jwsohn@samaneng.com,jwsohn,225031.jpg,026d9771ddb5a08c259c617feccef39491703c8f2f2ecea09e8cbb9e922ead68.jpg,ee14e977-edb8-4da3-896d-788e0dc72fdb,ee14e977-edb8-4da3-896d-788e0dc72fdb.jpg,Y +SAMAN,손준혁,jhsohn1@samaneng.com,jhsohn1,221083.jpg,15614e87b083e4e466a35bdcf598891a8469df9538e5d917e0e58b6b6adf68bb.jpg,ce78096b-2ea8-4a97-a141-518664f27402,ce78096b-2ea8-4a97-a141-518664f27402.jpg,Y +HANMAC,손지민,jmson@hanmaceng.co.kr,jmson,M22055.jpg,3bfb5096885626f713fcd019c0eccbfeee38357f8795ace6f17010c143f650dd.jpg,2b36839b-47fe-4d75-b590-374130e011ab,2b36839b-47fe-4d75-b590-374130e011ab.jpg,Y +SAMAN,손진수,jsson@samaneng.com,jsson,221079.jpg,e0cd8b1ba353da892f5b1f9ea2d82e47addc7e7a825907f88b52cb06f4f5206b.jpg,f24e6219-2a9c-40d9-8c6d-28e0adae29db,f24e6219-2a9c-40d9-8c6d-28e0adae29db.jpg,Y +SAMAN,손창국,cksohn@samaneng.com,cksohn,225284.jpg,c3a213ac25cc372306110852be206752d71aec7c8ed254cc4dea6f7652b8c9ab.jpg,9dcd3c11-d98e-4dbd-b1b4-90bb0f1dd192,9dcd3c11-d98e-4dbd-b1b4-90bb0f1dd192.jpg,Y +SAMAN,손채라,clson@samaneng.com,clson,224046.jpg,b0e10ea45ebcf43fb7a8b99900f8d3e6d33348ce9c05da7bee8e1c548599b295.jpg,6cfc42ee-9ccb-475b-ab6f-98801e0220a2,6cfc42ee-9ccb-475b-ab6f-98801e0220a2.jpg,Y +SAMAN,손태섭,tsson@samaneng.com,tsson,204047.jpg,45453e2476d6becfcc8db06f2ec6a54d48c7991dba7f51ca95805411b8ce5e15.jpg,2775b03e-b40f-41a3-b9a6-783749aad4a9,2775b03e-b40f-41a3-b9a6-783749aad4a9.jpg,Y +SAMAN,송광수,kssong@samaneng.com,kssong,221001.jpg,6168e8406d591291cb8827169f8c42e50d32bbcf61b0f0f9dec29949be1f7c1b.jpg,d5083706-4be3-4a83-94c7-b0deca0a1946,d5083706-4be3-4a83-94c7-b0deca0a1946.jpg,Y +SAMAN,송근광,gksong@samaneng.com,gksong,225226.jpg,fb5cc121a29be79584ad510ff3063bb958112da7c2b5de7693ea7150ce8796ac.jpg,0cf2e462-b85a-45cf-971f-d8ad49897eb6,0cf2e462-b85a-45cf-971f-d8ad49897eb6.jpg,Y +HANMAC,송기영,kysong@hanmaceng.co.kr,kysong,M07231.jpg,de5e0ec8d12f775f8f06bb03cd2c994913ae36fdff15b6d1a9ab5461200c9d56.jpg,3ed42639-57b5-4698-a0c8-439451d3c195,3ed42639-57b5-4698-a0c8-439451d3c195.jpg,Y +SAMAN,송다운,dwsong@samaneng.com,dwsong,209226.jpg,65665c479b55c018600d5388ce72dc4b1f5a568b9e0f22b54969a76d9a72ec1e.jpg,64c1c454-75bd-4d98-9b9e-217936c9abd7,64c1c454-75bd-4d98-9b9e-217936c9abd7.jpg,Y +HANMAC,송대일,disong@brsw.kr,disong,B24014.jpg,7a08ea5c1245c92060d75dab3124314253aeaf90c51fceb756184638bff7b4fc.jpg,f9cc8c60-6545-43fd-824f-f96c2b61c7e5,f9cc8c60-6545-43fd-824f-f96c2b61c7e5.jpg,Y +SAMAN,송명주,mjsong@samaneng.com,mjsong,222172.jpg,c8ed74f69dd48bf18091d90021ab133c2e7573a834cb38775e113c0021f4e422.jpg,03c6c847-41de-455b-af74-b241f5245723,03c6c847-41de-455b-af74-b241f5245723.jpg,Y +HANMAC,송미성,mssong@hanmaceng.co.kr,mssong,M25027.jpg,9adb149fe650f3bf286df308a4240382d98c3b50aa1a4368173c788bc92b95d8.jpg,727d245c-d22d-4c53-bd17-15db797ff49b,727d245c-d22d-4c53-bd17-15db797ff49b.jpg,Y +SAMAN,송민경,mksong1@samaneng.com,mksong1,219061.jpg,e3987e0536001ddfbae334d99d7d18fbdd0396bfb3dcb1641b3fd2fc81d224ae.jpg,ea35bfe2-bdc6-471b-8933-1bc0c64a68bd,ea35bfe2-bdc6-471b-8933-1bc0c64a68bd.jpg,Y +HANMAC,송민제,mjsong2@hanmaceng.co.kr,mjsong2,M22022.jpg,0ae541073736e808520195cb99908e2e34a48e4bf47c43175c126dea92a12219.jpg,eca0226f-0730-4aeb-aff7-f97941c88410,eca0226f-0730-4aeb-aff7-f97941c88410.jpg,Y +SAMAN,송민철,mcsong@samaneng.com,mcsong,221322.jpg,08ec2771d8109695dc6655c4f27537fd3da03c0b595c4f439774e30c93b84917.jpg,4af14dfd-7d76-4eaf-9831-e09b7b9010a9,4af14dfd-7d76-4eaf-9831-e09b7b9010a9.jpg,Y +SAMAN,송백헌,bhsong1@samaneng.com,bhsong1,219162.jpg,cb517d3299249c6c526ffc63ccfcf01dd59f1e9f652a22d109174cc7556b93fd.jpg,bace00cb-aa9a-40a4-b68a-3ad06b243dc4,bace00cb-aa9a-40a4-b68a-3ad06b243dc4.jpg,Y +SAMAN,송병화,bhsong@samaneng.com,bhsong,196067.jpg,e7b06ba33759772ef8d45adb67d577fe3299ba5147d53f5faad8b6f2c9e792ed.jpg,ab46d1bd-3103-497c-b33b-05dce5da372e,ab46d1bd-3103-497c-b33b-05dce5da372e.jpg,Y +SAMAN,송삼규,sgsong1@samaneng.com,sgsong1,222066.jpg,104c06eedd2d8a163fe462a8da66baf3ca2b65fa653d90c7ef47f9288b5cc426.jpg,32b61890-07f5-46c4-90b5-4fa44f9028e9,32b61890-07f5-46c4-90b5-4fa44f9028e9.jpg,Y +SAMAN,송상민,smsong@samaneng.com,smsong,223243.jpg,532b7d8342cc6ad52fa140571bafac14376c5df5867fac31aef4fc4cf204c798.jpg,50f730fc-e868-47da-b6a3-5fa7e00f9888,50f730fc-e868-47da-b6a3-5fa7e00f9888.jpg,Y +SAMAN,송석근,sksong@samaneng.com,sksong,200003.jpg,76c1976e1175f91f94b7700e3e7c02b4be7087adad4c7365ec41047a9b32e630.jpg,b194cbba-2d5e-4b23-99be-7b3973c9f085,b194cbba-2d5e-4b23-99be-7b3973c9f085.jpg,Y +HANMAC,송세화,shsong2@hanmaceng.co.kr,shsong2,M16507.jpg,df0d0065af3c8f37a356d14b1e346fccdd0e3c0afebe13afe929c2720a792ba8.jpg,da6fecdc-482c-4bc0-be42-2d801401d632,da6fecdc-482c-4bc0-be42-2d801401d632.jpg,Y +SAMAN,송승호,shsong@samaneng.com,shsong,214024.jpg,6dbb5ea1b6db13b05f7158488b427bdf4dc4d1ee9a630c6adfefda2fb24e037a.jpg,715c9a12-7c84-4da8-8328-bb58b903b907,715c9a12-7c84-4da8-8328-bb58b903b907.jpg,Y +SAMAN,송옥주,ojsong@samaneng.com,ojsong,025072.jpg,a990421b1837cfa5c2317caf596b09ef79eca562e4d9d4ff51c71d769cb46a75.jpg,6b2c4efb-6f98-45d9-bd2e-e9afe22bc94f,6b2c4efb-6f98-45d9-bd2e-e9afe22bc94f.jpg,Y +SAMAN,송용철,ycsong@samaneng.com,ycsong,208141.jpg,ac2a53608a7787f77240f00de0ce66d2fed45911b099832a923194553d4952f3.jpg,1df745d7-5b91-43fb-97b7-4709424beeea,1df745d7-5b91-43fb-97b7-4709424beeea.jpg,Y +SAMAN,송용철,ycsong1@samaneng.com,ycsong1,226097.jpg,1d932fa67c2e35ea94de7d39aba118ae0a64194cf2b4086d562b763bb0854375.jpg,a2055940-5c7f-481c-a695-00c9c1127c1e,a2055940-5c7f-481c-a695-00c9c1127c1e.jpg,Y +PTC,송유석,yssong1@brsw.kr,yssong1,P22306.jpg,3c1f6f2789ae634ca3e9ee7c9ff25bd67248e6f5c12bfb270b66091602e4e28b.jpg,32049b2c-e44e-4b10-a4d4-7819ce73c435,32049b2c-e44e-4b10-a4d4-7819ce73c435.jpg,Y +HANMAC,송재명,jmsong@hanmaceng.co.kr,jmsong,M24017.jpg,5fa774261ba95062c1bcee36770bd9a385b34d159554efbf87986244951af644.jpg,1bd96c82-5b91-4205-ae98-5ed24e4ce4e7,1bd96c82-5b91-4205-ae98-5ed24e4ce4e7.jpg,Y +SAMAN,송주하,jhsong1@samaneng.com,jhsong1,223050.jpg,36a90aa83d0c6ed407deab44b7ab266561570f619a4b3235d421268fddcd25cc.jpg,7951a7bf-7c98-4113-b8b1-10c801359e8e,7951a7bf-7c98-4113-b8b1-10c801359e8e.jpg,Y +HANMAC,송주호,jhsong2@hanmaceng.co.kr,jhsong2,M25007.jpg,dda1d64bb7cce91033fc6abc836339436cdd836ea179ec53c2a7e925e11f41a8.jpg,49af7761-1214-4068-aacf-52f51b22895c,49af7761-1214-4068-aacf-52f51b22895c.jpg,Y +SAMAN,송진호,jhsong@samaneng.com,jhsong,223026.jpg,3d2cc9e12254718d49546bc026b78faf5220941dc75afb9f64e3b047aef9f4d4.jpg,9c0c4dbb-a8f7-4194-86b1-621a1cd19ad2,9c0c4dbb-a8f7-4194-86b1-621a1cd19ad2.jpg,Y +SAMAN,송호준,hjsong@samaneng.com,hjsong,221162.jpg,0003a71b2bed9667e9e1362da7ac69805acddddee53dbde3c0940b16af58e566.jpg,d07ed326-1c0c-47a6-9302-e31e83a1b285,d07ed326-1c0c-47a6-9302-e31e83a1b285.jpg,Y +SAMAN,신경섭,ksshin1@samaneng.com,ksshin1,222083.jpg,b39bcdc1b82c35c0541c1caaf9679fedb465f60cf028e0c15c623ef60bfe9b3c.jpg,c2a0f66f-3085-4a1f-b00b-5ffbe8a48544,c2a0f66f-3085-4a1f-b00b-5ffbe8a48544.jpg,Y +SAMAN,신계범,kbshin@samaneng.com,kbshin,223207.jpg,c32e58e1f6f3551d593d23765e59e705bb1607ded545954ef279ce119d4b2ae5.jpg,195ddc30-d103-4c80-bac0-bcb89e0b8a4d,195ddc30-d103-4c80-bac0-bcb89e0b8a4d.jpg,Y +HANMAC,신광수,ksshin@hanmaceng.co.kr,ksshin,M04602.jpg,0d8a5eccd1d03016d09d09a813ca5fdf7136a69e6c45418f64069afc954daddc.jpg,2db06689-4beb-4a12-a99a-a4894ef612e1,2db06689-4beb-4a12-a99a-a4894ef612e1.jpg,Y +SAMAN,신광철,kcshin@samaneng.com,kcshin,213023.jpg,a692ef22b4740cba8ffe85d4dc611dc704aa2c4ade9733f568f9663fefe079d8.jpg,c1a81ffe-f1f8-496a-b504-9a05542c9d8e,c1a81ffe-f1f8-496a-b504-9a05542c9d8e.jpg,Y +SAMAN,신광호,khshin@samaneng.com,khshin,222095.jpg,571c0f64c61fc5fce3b6b1bce32cc5e509bb993f21b941d40768ffeac0426941.jpg,79eb4785-21a6-4f49-aa4d-a966b0e8b84f,79eb4785-21a6-4f49-aa4d-a966b0e8b84f.jpg,Y +SAMAN,신기호,khshin1@samaneng.com,khshin1,223002.jpg,9bcbcef70fdebd7c92b246ae827df63bdfab4feb3e9a4bc4635aff5dce384ba8.jpg,5f2c6d89-d01e-4d7e-8248-14cef4713b70,5f2c6d89-d01e-4d7e-8248-14cef4713b70.jpg,Y +SAMAN,신대호,dhshin3@samaneng.com,dhshin3,208138.jpg,5b633fcc85733c740d793f194e93903f613713a94d811bc193be10188bc25de2.jpg,a6a87555-e19d-439c-ba1c-30188ce87a02,a6a87555-e19d-439c-ba1c-30188ce87a02.jpg,Y +SAMAN,신도현,dhshin2@samaneng.com,dhshin2,202197.jpg,1bb215a79a47da122476fd249228f1b1c951ad50a504f124ac4ac7447a47d23d.jpg,2d4577ff-d696-446d-a42c-e3abc801099c,2d4577ff-d696-446d-a42c-e3abc801099c.jpg,Y +SAMAN,신동열,dyshin@samaneng.com,dyshin,218043.jpg,50446b0c95b46e53e36af571bd418cd4a2385c6c5bdaeb7379bc993c11040df2.jpg,5c5fa9a4-ad38-4a49-bd15-f152b128e2dd,5c5fa9a4-ad38-4a49-bd15-f152b128e2dd.jpg,Y +SAMAN,신동옥,dwshin@samaneng.com,dwshin,208048.jpg,83b51b7cf0f5cd724b73bd9bb8c8932848b9849b96235af4e8806ef261678ee7.jpg,5f4af814-175a-4bb5-970e-399059a69005,5f4af814-175a-4bb5-970e-399059a69005.jpg,Y +SAMAN,신동인,dishin@samaneng.com,dishin,225166.jpg,02363576d43fea80385fb4dafab0a347f18275ab7d9ab7e4752d3ee87ccbdccd.jpg,7bdae4fe-3d40-46eb-8255-17ee0d1f96e6,7bdae4fe-3d40-46eb-8255-17ee0d1f96e6.jpg,Y +SAMAN,신동호,dhshin1@samaneng.com,dhshin1,222063.jpg,6fce1d307d774c298c308e102214350d2a169c52503fea17dc3cf76c26fd9a23.jpg,c2c8c5e9-b7b6-40e5-9041-738c82a5f039,c2c8c5e9-b7b6-40e5-9041-738c82a5f039.jpg,Y +SAMAN,신동환,dhshin@samaneng.com,dhshin,220050.jpg,33db0c4cca4a90e45cf65308fe53b8ad6c8d0ebb067ec86331a923ae9ee2a26b.jpg,0c9ea24c-6b32-4a45-8b15-96e280715816,0c9ea24c-6b32-4a45-8b15-96e280715816.jpg,Y +SAMAN,신동훈,dhshin4@samaneng.com,dhshin4,224317.jpg,e743f8299f5171b4e2b4d8781a677057c24d8efc65a0b591701504b4279fe281.jpg,9ccbc4ba-3a28-4aeb-9b50-0c086152a191,9ccbc4ba-3a28-4aeb-9b50-0c086152a191.jpg,Y +SAMAN,신명석,mssin1@samaneng.com,mssin1,226043.jpg,da2eee6e3fc48fb89ee6b9bc639ad601c54676ec94c9aec418179a7ae94a5146.jpg,19a0ed89-6deb-4faf-92dc-c917aa34a41b,19a0ed89-6deb-4faf-92dc-c917aa34a41b.jpg,Y +SAMAN,신명식,msshin@samaneng.com,msshin,225356.jpg,c36ffe1b6118d9f8fdce55bb9806a93ea6c7d6cc9f79aade0ab3c3d2f6bafdd2.jpg,ccd75412-ffa0-4c68-8692-27be5e13b1ac,ccd75412-ffa0-4c68-8692-27be5e13b1ac.jpg,Y +SAMAN,신명자,mjshin1@samaneng.com,mjshin1,225013.jpg,9666ba5fe6d42b8942f2a6246c9a9ca4af085a1442a442699ad65e1e1cb3f0d9.jpg,1a57420d-9959-42fb-af35-5e22037ee82c,1a57420d-9959-42fb-af35-5e22037ee82c.jpg,Y +SAMAN,신명주,mjshin@samaneng.com,mjshin,207070.jpg,6b7412dfffd06f37da82466fa8baa667209b3b7463b56c476feddbde29760cd6.jpg,7320e3a0-6d40-4b29-8ada-4f3be57ac81c,7320e3a0-6d40-4b29-8ada-4f3be57ac81c.jpg,Y +SAMAN,신미영,myshin@samaneng.com,myshin,024118.jpg,cc5f30be2f27931c3641ba3253d408e82e02d3d835a8bc48cbe22513266121c2.jpg,8430e2c5-ef55-4920-bf1a-4481f50982d8,8430e2c5-ef55-4920-bf1a-4481f50982d8.jpg,Y +SAMAN,신배헌,bhshin@samaneng.com,bhshin,216136.jpg,2cbfcd5b61651489c6796e57343964e7e1e7b961b29b5ec66f31804fe3ebed43.jpg,cf611bfc-757b-4d30-9190-1e531e49a9a6,cf611bfc-757b-4d30-9190-1e531e49a9a6.jpg,Y +HANMAC,신봉진,bjshin@hanmaceng.co.kr,bjshin,M17203.jpg,adf810b71669e3c40d0182e15dfda091b1fa7fbf702dbbdbadb226b82d153aa7.jpg,723d3a92-a8e8-4be5-9780-91d0be31ba31,723d3a92-a8e8-4be5-9780-91d0be31ba31.jpg,Y +SAMAN,신선영,syshin@samaneng.com,syshin,025040.jpg,4dd61b0b09ec8b06effe1cc6b5489e7f4e29f3c0a809e548f102b1b6505ab9d7.jpg,e8f0c23e-4b79-46a4-9320-7923ca4d4e96,e8f0c23e-4b79-46a4-9320-7923ca4d4e96.jpg,Y +HANMAC,신송희,shshin@hanmaceng.co.kr,shshin,M21422.jpg,3bd78771202ef4666cd91216d6a865d4c82f46a5ce99b3038214e1713eacaf30.jpg,0134aad4-685a-4140-adea-ffbf975ea9a8,0134aad4-685a-4140-adea-ffbf975ea9a8.jpg,Y +SAMAN,신순녀,snshin@samaneng.com,snshin,024019.jpg,e3c4249fbaff7f55a58d7c20e1f0d0770b1ecc865be321a44d5621e9ef3c0f3c.jpg,cf51e80c-44e9-4170-a3bd-a1c611c63ffc,cf51e80c-44e9-4170-a3bd-a1c611c63ffc.jpg,Y +SAMAN,신안식,asshin@samaneng.com,asshin,212158.jpg,032d0d35b82933840ac0a75b4063d15c872026944fd1f48e276a5cb12a64ab8c.jpg,74c11623-4c65-4dfd-8e73-415496e47d73,74c11623-4c65-4dfd-8e73-415496e47d73.jpg,Y +HANMAC,신영각,ykshin2@hanmaceng.co.kr,ykshin2,M16208.jpg,a97ef23755ad14934e09ce76053d1c20908741f2958d688418540d314b11c45e.jpg,7621d814-eda9-4a63-80f0-f16a9d819cff,7621d814-eda9-4a63-80f0-f16a9d819cff.jpg,Y +HANMAC,신영교,ykshin@hanmaceng.co.kr,ykshin,M24068.jpg,2b45ffc2bd33470838db2f040ca61ae932bfb85b18f3b7cbbb8449355f120096.jpg,e7b02274-6061-42bf-af04-d3baedd4fd35,e7b02274-6061-42bf-af04-d3baedd4fd35.jpg,Y +SAMAN,신영준,yjshin1@samaneng.com,yjshin1,219120.jpg,ef1b1bd55768a8e06b982ce82cbeb551adeda703d154d10a3c24782148bdf231.jpg,7f7b50a7-9f64-4568-944a-22fb5c8cda02,7f7b50a7-9f64-4568-944a-22fb5c8cda02.jpg,Y +SAMAN,신영호,yhshin@samaneng.com,yhshin,204022.jpg,86b0d4f41f57143cf86a9d9623ec2656ede21ab377181d632b03d9e57f059675.jpg,6e1158be-b17e-4390-bdb1-c63e56f200e8,6e1158be-b17e-4390-bdb1-c63e56f200e8.jpg,Y +SAMAN,신예찬,ycshin@samaneng.com,ycshin,223037.jpg,6bde69d654c0b77bd433936cdf2537049a6a947cd6bb5a04fe564838c9b743c9.jpg,cd1dc659-b71b-4d2d-8c04-502849499f53,cd1dc659-b71b-4d2d-8c04-502849499f53.jpg,Y +SAMAN,신용희,yhshin2@samaneng.com,yhshin2,224007.jpg,2a59dda90cee11d9dd9a06cffd62429b287502860b83fe04d4ea38de31249210.jpg,e5866cf3-ed66-449d-bb83-464e897ee471,e5866cf3-ed66-449d-bb83-464e897ee471.jpg,Y +SAMAN,신원태,wtshin@samaneng.com,wtshin,219080.jpg,a853b0410343d5231808509c98717b37a9d668a8e20b2cb693fcfc4680007dcd.jpg,7ea7710d-30a7-4d95-9b0d-ef2390a4e1b0,7ea7710d-30a7-4d95-9b0d-ef2390a4e1b0.jpg,Y +SAMAN,신윤섭,ysshin1@samaneng.com,ysshin1,225038.jpg,3b36bcfd38082df3b499b2daec2be08be136b91ecfd89ecdf6fa00d339ac0ea6.jpg,3e39278d-330a-4a97-8dca-1ed3e5e24d73,3e39278d-330a-4a97-8dca-1ed3e5e24d73.jpg,Y +SAMAN,신윤수,ysshin@samaneng.com,ysshin,223205.jpg,ab79688ebd2cc1ca7797e1377ba960fc5548f587d385773aafd25e1421ea3d06.jpg,9093a436-5a5e-4a09-8f53-a1b4d213609d,9093a436-5a5e-4a09-8f53-a1b4d213609d.jpg,Y +SAMAN,신은화,ehshin@samaneng.com,ehshin,224366.jpg,96f5cee8424a5f021115066965223e362f2d3c3c8b9c53172304d85f66089b91.jpg,758aa92b-68f8-4d47-ad9f-2842a3d3643e,758aa92b-68f8-4d47-ad9f-2842a3d3643e.jpg,Y +SAMAN,신인재,ijshin@samaneng.com,ijshin,224263.jpg,a1966f39b3668513cf952e190021570c2a830a2fd577b879d3ef88685c09999c.jpg,82afaae7-4712-4177-9eb4-9ef2750163a5,82afaae7-4712-4177-9eb4-9ef2750163a5.jpg,Y +SAMAN,신재원,jwshin@samaneng.com,jwshin,220038.jpg,854b9b02c0315c0cab497b9df39186a054f55e47ed307f573d7e3795b303a1f6.jpg,eec70184-0930-478b-b60b-9c18d87ae4ec,eec70184-0930-478b-b60b-9c18d87ae4ec.jpg,Y +SAMAN,신정민,jmshin@samaneng.com,jmshin,224329.jpg,122762bf8e6965ed58a2af8540212e2552c86d3e449035bbf9160ca4b7b74441.jpg,95000306-22ef-4255-9045-b00be41da5cd,95000306-22ef-4255-9045-b00be41da5cd.jpg,Y +SAMAN,신정식,jsshin1@samaneng.com,jsshin1,225368.jpg,4511d649ff5281cfee150edd5b42909376b2adb38d07419705a1ca26c30ad60e.jpg,75d2d097-9094-4b0d-bcae-0ff7fe3536b9,75d2d097-9094-4b0d-bcae-0ff7fe3536b9.jpg,Y +SAMAN,신정하,jhshin2@samaneng.com,jhshin2,222168.jpg,a376a87feec092513aeee96c18a7ed638bbbd67516248c9a4b8bd724595bb5ac.jpg,a5226e20-64a6-4882-8650-b1bd021fd925,a5226e20-64a6-4882-8650-b1bd021fd925.jpg,Y +SAMAN,신제원,jwsin@samaneng.com,jwsin,222252.jpg,e0f173df63e641a11b41e9338233bbfb2fca819ac7567f418bfaaad038508fdb.jpg,203933a5-4197-4a44-ba1d-6fc40631bb44,203933a5-4197-4a44-ba1d-6fc40631bb44.jpg,Y +SAMAN,신종욱,jwshin1@samaneng.com,jwshin1,226135.jpg,6a2c93316777df5e4fefaf5836a2d86146416c0f76102ea79f441fbecad57f0e.jpg,b4ee7583-0f1e-45b5-b2cc-176edad1530a,b4ee7583-0f1e-45b5-b2cc-176edad1530a.jpg,Y +SAMAN,신주원,jwshin2@samaneng.com,jwshin2,225036.jpg,52c0dd76f03bc3a098ca7eb026984e0af4ba25a965cc35ca4b969f3dbb5a7e94.jpg,a4fbcdab-e63b-4860-8353-3033b7159c05,a4fbcdab-e63b-4860-8353-3033b7159c05.jpg,Y +SAMAN,신준철,jcshin@samaneng.com,jcshin,224379.jpg,9265198ddd2452eb039078ae01b61b49dc2c2bb835638230d7aba7554f516062.jpg,f5133684-9d60-4b6e-810e-41065032ea5f,f5133684-9d60-4b6e-810e-41065032ea5f.jpg,Y +SAMAN,신준호,jhshin1@samaneng.com,jhshin1,225145.jpg,1d5b81710f0114f65258503f73ca549c0798204e79a937e31d0dfbf624bebc3d.jpg,16411b2e-24f0-4dcd-9d1d-ce0ee71a43d8,16411b2e-24f0-4dcd-9d1d-ce0ee71a43d8.jpg,Y +SAMAN,신지호,jhshin@samaneng.com,jhshin,209171.jpg,ddea08252a442d7029deb0b6570fa63ac34ca40af39be935cfd0c99948d988d9.jpg,acaba97d-ec2f-4ce7-9465-4f4082e773aa,acaba97d-ec2f-4ce7-9465-4f4082e773aa.jpg,Y +SAMAN,신진건,jgshin@samaneng.com,jgshin,220090.jpg,d3c00ee29b9a57196acacc5fbc46c216a0f78124c5e35c9ce3fdb66504a91d28.jpg,93b671c9-aad3-4762-8937-62304d0f412e,93b671c9-aad3-4762-8937-62304d0f412e.jpg,Y +SAMAN,신진승,jsshin@samaneng.com,jsshin,222012.jpg,dacca1e9025007ddb1b9aca82e11bccc6f1c1d3c4d70d31fc8b8dbe31611b4f3.jpg,fe46eb25-4edb-4d25-ac79-f7c565a48eac,fe46eb25-4edb-4d25-ac79-f7c565a48eac.jpg,Y +HANMAC,신진우,jwshin3@hanmaceng.co.kr,jwshin3,M21414.jpg,5e8db13542eafa31d54377aef8313c1ebabdbd380c176295150513e2a511afca.jpg,c6669e9a-7e7c-4a5a-ba54-d637c84b5add,c6669e9a-7e7c-4a5a-ba54-d637c84b5add.jpg,Y +SAMAN,신진호,jhshin3@samaneng.com,jhshin3,220159.jpg,31f3d7030825f9d2f3ab75aea6f61aff936d5c3d67423a1b3cbcfca2bf9a4c67.jpg,36b5a052-6760-4cc7-841f-960d97f5481e,36b5a052-6760-4cc7-841f-960d97f5481e.jpg,Y +SAMAN,신찬웅,cwshin@samaneng.com,cwshin,225141.jpg,193a818d3e88e739b7de519abdc4b01bfda75966050461a6a743e1ab3fa3963c.jpg,e3ef25fa-08e6-4652-bc3a-c1374b3b1822,e3ef25fa-08e6-4652-bc3a-c1374b3b1822.jpg,Y +SAMAN,신창건,ckshin@samaneng.com,ckshin,204257.jpg,7e9cdf0ffcf2c55c28aa7e9c4fbe659074d9bb1774a5c85231bb980b43b93870.jpg,3a5baabf-a5b9-42df-9104-5f84e7d036db,3a5baabf-a5b9-42df-9104-5f84e7d036db.jpg,Y +SAMAN,신창수,cschin@samaneng.com,cschin,225358.jpg,ebbdf131721ae940390a10a445729d9aac2524c8a13875430d19d6a39d16d67c.jpg,b01084fb-3c83-4d88-b1e3-b6bd5ab41de8,b01084fb-3c83-4d88-b1e3-b6bd5ab41de8.jpg,Y +SAMAN,신현승,hsshin@samaneng.com,hsshin,225200.jpg,960165aa5e3b54ca911a971e283e59200bf6c304eb3ec36d43923e2b9a0fd805.jpg,599ad8bd-c213-4813-9adb-201c96fcfcfc,599ad8bd-c213-4813-9adb-201c96fcfcfc.jpg,Y +HANMAC,신현우,hwshin2@hanmaceng.co.kr,hwshin2,T02303.jpg,3805296813a086bd47b33c048564bab249bf0b4d8a51c70ac3c5c3c30607c978.jpg,2b7fd276-b25f-45ef-b691-ea9d72e701e1,2b7fd276-b25f-45ef-b691-ea9d72e701e1.jpg,Y +SAMAN,신현웅,hwshin@samaneng.com,hwshin,224362.jpg,f6ca40246f0d32412f0b979946838bfcbce1e45b2d73d1d2c385bfda0a276ca0.jpg,2bef73bb-7356-4ae3-9324-b3daa61441e8,2bef73bb-7356-4ae3-9324-b3daa61441e8.jpg,Y +SAMAN,신현진,hjshin@samaneng.com,hjshin,225127.jpg,14bf2b8b52a2feb8b1320d63b0ee29d9a5f5a45c9dd5775c31e6a485579dbe90.jpg,1ac900a1-b62e-403c-961f-6e3f6ef4973e,1ac900a1-b62e-403c-961f-6e3f6ef4973e.jpg,Y +HANMAC,신현호,hhshin@hanmaceng.co.kr,hhshin,M21458.jpg,fc12569464b852079f2f83c6851f427c62e5709d59300ea43ddf61ef6291d47d.jpg,ba111e0a-173a-4d6c-9f9d-318181ffe59b,ba111e0a-173a-4d6c-9f9d-318181ffe59b.jpg,Y +SAMAN,신혜영,hyshin@samaneng.com,hyshin,218145.jpg,94fb537e5f14c6f55810eaa97b2a1407b913c76adcc23522be388a7df7df05b1.jpg,6c1a44be-7c5b-48e6-8e7b-af8473d4642a,6c1a44be-7c5b-48e6-8e7b-af8473d4642a.jpg,Y +SAMAN,신효식,hsshin1@samaneng.com,hsshin1,221268.jpg,8c6a9f78d9d3e8b1fdda47d6dc17166d4f43ffbbbe3b4a99f00a5fc255c910ab.jpg,8de1478d-1a8e-43e1-869b-a0db5a4224fe,8de1478d-1a8e-43e1-869b-a0db5a4224fe.jpg,Y +SAMAN,신후복,hbshin@samaneng.com,hbshin,226059.jpg,64e391b063603f0f962f7ae59e64f2382550e0b3cca49c7407ad5f6a89eea5fa.jpg,7d4358b3-1e68-4b3d-818d-df6274710a91,7d4358b3-1e68-4b3d-818d-df6274710a91.jpg,Y +HANMAC,신흥섭,hsshin2@hanmaceng.co.kr,hsshin2,M15317.jpg,a9d74b28c7553bd27f2ae2c10aa24d16e5e509f914cafaba0fea1aef5fc5cc47.jpg,7a861af2-6cca-46f8-8370-4f71ca679811,7a861af2-6cca-46f8-8370-4f71ca679811.jpg,Y +SAMAN,심계섭,gssim@samaneng.com,gssim,225361.jpg,186c2dae262d45d415dce5f7767f571840831314e94d38b8ecf0e1c88765574b.jpg,41e9ac5e-014d-4740-ab76-be67ef4ff426,41e9ac5e-014d-4740-ab76-be67ef4ff426.jpg,Y +SAMAN,심명선,msshim@samaneng.com,msshim,221025.jpg,99a68682bc22d2d8301f8683a727bf4b6fdd3f802c81353823d0805e9d81e473.jpg,e699cfb7-81fb-4075-b0a5-72ea36bf60a2,e699cfb7-81fb-4075-b0a5-72ea36bf60a2.jpg,Y +SAMAN,심상철,scshim@samaneng.com,scshim,190022.jpg,d01a90d54dc97e7423af9f12136fb1717481f86ea56d05f48b4baac4be53740d.jpg,ba030002-c437-4723-a15a-6b1c7236bf9f,ba030002-c437-4723-a15a-6b1c7236bf9f.jpg,Y +SAMAN,심선용,syshim@samaneng.com,syshim,225118.jpg,9542af8edbeac531d53e0ed0a5fb45ffad9dc45b7d373b19de423089b228b01f.jpg,20d4adec-5ee9-4e73-b682-9c383a2a2a48,20d4adec-5ee9-4e73-b682-9c383a2a2a48.jpg,Y +SAMAN,심성만,smsim@samaneng.com,smsim,202083.jpg,483484455095cf3e64bfb66cb77e8e76fdd98bc55d5dac23c6efbab0db933121.jpg,e710d706-ead2-4572-bde0-6813621e3075,e710d706-ead2-4572-bde0-6813621e3075.jpg,Y +HANMAC,심성보,sbsim@hanmaceng.co.kr,sbsim,M24036.jpg,c0b991887d0680e05eaab9a0720fd0e8987ec0c04992e4dfa2848392bb78289a.jpg,c9c74085-f551-4ecf-b80f-2258e06efe21,c9c74085-f551-4ecf-b80f-2258e06efe21.jpg,Y +SAMAN,심승철,scshim1@samaneng.com,scshim1,196190.jpg,2a709cd815db0671ec15e9c9eb4bfea8c914b8200c53e63288914d28fce9635d.jpg,d576502f-6fff-4666-86de-822aa900b170,d576502f-6fff-4666-86de-822aa900b170.jpg,Y +SAMAN,심영표,ypshim@samaneng.com,ypshim,216164.jpg,e5b3ced9b9ab05484f0ff0a536be4dfd78f7eb3e8d6fb0c0a0fece8bb536c943.jpg,4d83d79f-184e-4013-be96-f0f63a0ea128,4d83d79f-184e-4013-be96-f0f63a0ea128.jpg,Y +HANMAC,심우석,wsshim@hanmaceng.co.kr,wsshim,M25017.jpg,cb1c73fec2d44042b827cbf9658ab5677dbeebbc40877525428c098fa03216fe.jpg,449e1feb-0471-4758-bbe3-c823fbab6407,449e1feb-0471-4758-bbe3-c823fbab6407.jpg,Y +HANMAC,심윤보,ybsim@hanmaceng.co.kr,ybsim,M24065.jpg,03d916767c8c92607fc2900d16cc0269597ced0a1e18b643230647e2b6816a1a.jpg,3d3e55be-a04a-4225-9aa4-9e735c76f6d0,3d3e55be-a04a-4225-9aa4-9e735c76f6d0.jpg,Y +SAMAN,심재윤,jysim@samaneng.com,jysim,225267.jpg,8f85e6fadc88f556f00f8155f7c384f39e4114bf3b5bdc430f88a09fdc36b235.jpg,1764267e-38be-49c9-94a0-227fd46bbb61,1764267e-38be-49c9-94a0-227fd46bbb61.jpg,Y +SAMAN,심정택,jtshim@samaneng.com,jtshim,223067.jpg,a6593bb1b14d0e01f097050d3feca48cb511c65c1e19e6144fa8da459573ddfe.jpg,4dcce185-bfa2-4b70-aff6-11e736123ef5,4dcce185-bfa2-4b70-aff6-11e736123ef5.jpg,Y +SAMAN,심현우,hwshim@samaneng.com,hwshim,217107.jpg,40ec0ec6ee5009508a5051a468c800270926b1da077808ba65db1716c7916b44.jpg,91591624-1a3e-4b1a-ae23-f222c2687cbe,91591624-1a3e-4b1a-ae23-f222c2687cbe.jpg,Y +SAMAN,심형섭,hsshim1@samaneng.com,hsshim1,209153.jpg,5ec59299d9c12816dbeaad7b1d69da0b8316cc720e437d95583ed7aad1419d82.jpg,d1268707-e1c7-45ea-9961-e0c55ca08781,d1268707-e1c7-45ea-9961-e0c55ca08781.jpg,Y +SAMAN,아르디안사 비키,vicki.ardiansah@samaneng.com,vicki.ardiansah,225208.jpg,9975a2dde07d8e86471706c717d89c8cae41ee00efc96f0f3d2052fb8f1b1912.jpg,aaebee8b-f3cd-40e6-bf1b-f0210994a72f,aaebee8b-f3cd-40e6-bf1b-f0210994a72f.jpg,Y +SAMAN,안경환,khann@samaneng.com,khann,207016.jpg,1929bdd47c1168f04286a47db700d5fc8cd4b5dd95c5dcfd30a86f2638de3bb1.jpg,6d0acf08-0871-4af8-a1ad-af8f66d17972,6d0acf08-0871-4af8-a1ad-af8f66d17972.jpg,Y +SAMAN,안길진,gjan@samaneng.com,gjan,226122.jpg,03c4bdbecd9b07abbbc2b288e9f4bf58b6ca8def49954dd17be6c5a3994f5527.jpg,cae2c931-a590-45af-b5c4-1ea8cc336cc5,cae2c931-a590-45af-b5c4-1ea8cc336cc5.jpg,Y +SAMAN,안대욱,dwahn@samaneng.com,dwahn,217157.jpg,442b5de4a9c88bcfd6fdac815ef19c496117aded338b97b6603c7ae57220d119.jpg,d0d43338-150b-4cfc-997d-5e6bd2292c1b,d0d43338-150b-4cfc-997d-5e6bd2292c1b.jpg,Y +SAMAN,안대원,dwan@samaneng.com,dwan,209075.jpg,f8b144eac6e2fecd5caef4fb2941caa171c4812f252ea0ccf81e1b1a1ef5d148.jpg,e3a7bf70-65b7-4efc-bc52-079e4133d5a9,e3a7bf70-65b7-4efc-bc52-079e4133d5a9.jpg,Y +SAMAN,안동열,dyan@samaneng.com,dyan,223344.jpg,bbfce5e2cc9f87acb88fde0694176ad45d5e790d5fa69b6e1676002a71f3fb4a.jpg,02fa6371-f0dd-4bc7-bd8d-66abefcf7738,02fa6371-f0dd-4bc7-bd8d-66abefcf7738.jpg,Y +HANMAC,안동현,dhahn@hanmaceng.co.kr,dhahn,M24040.jpg,b904ff5c38403a5af1b40ecd170a6088aa14f0ec29add093fe0c450cdf479b62.jpg,28ae3c2d-7bd8-4f33-8ca0-9478da002440,28ae3c2d-7bd8-4f33-8ca0-9478da002440.jpg,Y +HANMAC,안민형,mhahn@hanmaceng.co.kr,mhahn,M22003.jpg,6fd6e1090a4f042981efc6fb936957c510a1f3fd5914a9203f2cef1e43055c78.jpg,a7076402-23cb-4a32-8f12-1f083cf604b8,a7076402-23cb-4a32-8f12-1f083cf604b8.jpg,Y +HANMAC,안병구,bgahn@hanmaceng.co.kr,bgahn,M24071.jpg,348549638a477eac2f80c25c49f5a32e99b194039dcfcb3014b84849cb6abcaf.jpg,e7adacda-591f-42fd-a92c-cf0488dc371d,e7adacda-591f-42fd-a92c-cf0488dc371d.jpg,Y +SAMAN,안병학,bhahn@samaneng.com,bhahn,225241.jpg,2f1064bc6e0e207ea01dd12a835bdbaadd8675331e1f3846d14d3c515b9b7673.jpg,2e7c5b2d-ac3d-4e9a-932c-5ce41e145b00,2e7c5b2d-ac3d-4e9a-932c-5ce41e145b00.jpg,Y +SAMAN,안병호,bhan@samaneng.com,bhan,218133.jpg,817094ddd9b973945d4ebf4fe9f05c455886fe40251eda54b94e4ad306862b03.jpg,7b0967d8-86d9-4798-9895-080a897fd5d5,7b0967d8-86d9-4798-9895-080a897fd5d5.jpg,Y +SAMAN,안병호,bhahn1@samaneng.com,bhahn1,225346.jpg,5bca20d42c5ebe02495557d1122a496c6923a07cd82061243b6d6d0630858d45.jpg,76101f1e-dda9-4d05-88a3-efc9188ba0bd,76101f1e-dda9-4d05-88a3-efc9188ba0bd.jpg,Y +SAMAN,안상수,ssahn@samaneng.com,ssahn,226086.jpg,b8524fb63a74d41306b978d2cdbde8ac1c762aa5a0a6d2d5b46042da0bc1f3c8.jpg,08bec097-8790-428e-a432-a3b791da7be5,08bec097-8790-428e-a432-a3b791da7be5.jpg,Y +SAMAN,안상준,sjahn@samaneng.com,sjahn,223339.jpg,3504ec11399e37e8bee1d178fe7d6c60cf17a2b74a03e978e19d76f33e8bfcc8.jpg,679aa017-ad62-47bb-a7b6-8ded0a196f0e,679aa017-ad62-47bb-a7b6-8ded0a196f0e.jpg,Y +SAMAN,안석영,syahn@samaneng.com,syahn,226010.jpg,2ae77d709891615da09fa210e998204f31b1b52f8bfa132e2cc77f31b03bef37.jpg,2935c94f-69e1-460d-b1ba-d6a90061c46f,2935c94f-69e1-460d-b1ba-d6a90061c46f.jpg,Y +SAMAN,안선경,skan@samaneng.com,skan,222024.jpg,26505698b0c4b1da31e5a7a865250f2f8d9409088eb6125d94aab3cb92a1d2ca.jpg,0ed604ba-e487-47e4-928d-3e7ed99daa55,0ed604ba-e487-47e4-928d-3e7ed99daa55.jpg,Y +SAMAN,안성칠,scahn@samaneng.com,scahn,221134.jpg,55f4ec8d2c747e08e7a15047a9a1e41b654bf2979bf68e2526be775eb739ebc3.jpg,27b037be-36f5-4180-a078-acdc37339ebb,27b037be-36f5-4180-a078-acdc37339ebb.jpg,Y +SAMAN,안세진,sjan@samaneng.com,sjan,207047.jpg,e7170c8a448f548fd6f23d4d13875588b017a6a6614fe9703687952daaa61bb2.jpg,11617259-c03b-4dc9-97e4-f86d167ee6ad,11617259-c03b-4dc9-97e4-f86d167ee6ad.jpg,Y +SAMAN,안수현,shahn@samaneng.com,shahn,217051.jpg,0f784e26ab706b893aa8a6f83c3d18ac4ad84aa67c55ca46cccf412d66af6112.jpg,ca6a426c-4e1e-4ab4-85ab-1641b8cbe47f,ca6a426c-4e1e-4ab4-85ab-1641b8cbe47f.jpg,Y +SAMAN,안영식,ysahn@samaneng.com,ysahn,195115.jpg,c1f20883dea9edfd68363be2058664351c44763cad2f251e5bd65573e06c9e00.jpg,a3a9631f-6739-409f-a385-04be0c3433e3,a3a9631f-6739-409f-a385-04be0c3433e3.jpg,Y +SAMAN,안영준,yjan@samaneng.com,yjan,225187.jpg,b8c9c4b72cd308e329f2062288f2792ff2f3eff04caf28c1caf61fd9fee1ac28.jpg,7d771b6e-a7c5-48f9-b962-9bb93def7cc8,7d771b6e-a7c5-48f9-b962-9bb93def7cc8.jpg,Y +SAMAN,안우정,wjahn@samaneng.com,wjahn,224120.jpg,29ad8a57cf0ae1b54a800abcebf75c0acbc98611233b55b93ef270cab661aa66.jpg,f20e9f48-c40b-4512-b4bb-c4385e04296f,f20e9f48-c40b-4512-b4bb-c4385e04296f.jpg,Y +SAMAN,안유미,yman@samaneng.com,yman,026015.jpg,6f0e97c066bde9330ba08df69b3b84aca312fc64ce4a5730379a713bb54b0419.jpg,d68abf47-9b27-4ee3-8a2b-e0737f65e1f9,d68abf47-9b27-4ee3-8a2b-e0737f65e1f9.jpg,Y +SAMAN,안윤준,yjahn@samaneng.com,yjahn,201034.jpg,e751fc470d42b9ce49391fbb0278e0af0db5bf615f7fe85f461aa1e4f7482177.jpg,c4974d91-dd96-42da-8fab-6d74a23c329e,c4974d91-dd96-42da-8fab-6d74a23c329e.jpg,Y +SAMAN,안은미,eman@samaneng.com,eman,025076.jpg,8b0d622de722499de0bfb607ba594b5e661fe010cad444354e2a539d52e3c750.jpg,dc6725fc-ca96-4881-ac54-9b1d1921f9ba,dc6725fc-ca96-4881-ac54-9b1d1921f9ba.jpg,Y +SAMAN,안은수,esahn@samaneng.com,esahn,221102.jpg,bcb3e1cf117268cbfb3afe84aa9b8e2243bc344b871223aa2f634713c712edd9.jpg,2979cd37-d2cb-4c6d-ba1e-88e86a7f7794,2979cd37-d2cb-4c6d-ba1e-88e86a7f7794.jpg,Y +SAMAN,안은정,ejan@samaneng.com,ejan,026042.jpg,90cc7ebae63427cfca021851e020302f4180bd4229eecb0e31f18978f46f6375.jpg,89d7129f-4808-4e82-ab80-764febd9f1ab,89d7129f-4808-4e82-ab80-764febd9f1ab.jpg,Y +SAMAN,안재영,jyan@samaneng.com,jyan,203002.jpg,321ce0bc95397575f194b08ef256e8842dc2366f3c8c9e027a26afd76a923784.jpg,5c19205d-bbea-4236-a92d-05aed53159c3,5c19205d-bbea-4236-a92d-05aed53159c3.jpg,Y +SAMAN,안재준,jjan@samaneng.com,jjan,224351.jpg,48cc47dfc10043f3df45e5c7ca86024a21421015e091f8694690c71714487e47.jpg,71d078eb-e571-4ec3-90da-6dcdac279b6e,71d078eb-e571-4ec3-90da-6dcdac279b6e.jpg,Y +SAMAN,안정민,jmahn@samaneng.com,jmahn,223025.jpg,435a0aabdf0d1e17b1219ec14d3841836e627952087bb9ee52feef9c0b0195c6.jpg,720177f9-ad48-4696-8f9e-278bb6389c0d,720177f9-ad48-4696-8f9e-278bb6389c0d.jpg,Y +SAMAN,안정우,jwan@samaneng.com,jwan,221226.jpg,931de30c90992f09ab760c2bc2a5f559ff2e583b9b69617fab54dfb00733b505.jpg,2a95864d-3109-4706-bc01-f54b1f0a8a25,2a95864d-3109-4706-bc01-f54b1f0a8a25.jpg,Y +JANGHEON,안종기,jgan@brsw.kr,jgan,J25504.jpg,8e936fc1dd8cda2b4936ce06eade139ad7416f220b74d6e8b93b42ab7d5f44fe.jpg,6f71a23b-a92c-4fa0-a4bc-a7d76960a9a5,6f71a23b-a92c-4fa0-a4bc-a7d76960a9a5.jpg,Y +SAMAN,안준희,jhahn1@samaneng.com,jhahn1,224340.jpg,83a45be432a3c667fee868786211dc256f1d13a18d3ff0a156a861d8f976135e.jpg,b6153490-c3d1-46f7-8c9e-2798f59a9dcb,b6153490-c3d1-46f7-8c9e-2798f59a9dcb.jpg,Y +SAMAN,안지용,jyahn@samaneng.com,jyahn,216065.jpg,747c5a35fe62effa36096812ed795446476fa968d396d88cdbcf24d364aa6776.jpg,e651f58e-b9ea-46de-8e99-d52c676693d5,e651f58e-b9ea-46de-8e99-d52c676693d5.jpg,Y +SAMAN,안찬욱,cuahn@samaneng.com,cuahn,220077.jpg,04be4aa51cf9edff367d46c3534a7c30f67f6d999e2514a609b323cd9b80451e.jpg,efe620d6-b4ec-401d-9476-da3b0d587432,efe620d6-b4ec-401d-9476-da3b0d587432.jpg,Y +SAMAN,안태경,tkahn@samaneng.com,tkahn,220233.jpg,6e4db013cec240115dd114a3ad43fc95309c9154930f60966df30272e1ec0b57.jpg,ec4be096-9d30-4ee2-acc3-bd60f7896050,ec4be096-9d30-4ee2-acc3-bd60f7896050.jpg,Y +SAMAN,안헌,han1@samaneng.com,han1,218129.jpg,59009e671c61b175fff07207bae7e57ba75bd433ddd5deb5427e84d1b3c4664a.jpg,08d6b18b-33ca-4178-b3b6-496fe779c1b6,08d6b18b-33ca-4178-b3b6-496fe779c1b6.jpg,Y +SAMAN,안현빈,hbahn@samaneng.com,hbahn,225045.jpg,8a0d10f530a6d346b1e446ffa9a039f93d5e4c0862d7500c11f3f5035e7e04a7.jpg,eeeae113-0e4f-4522-a01d-097e6fe0dca5,eeeae113-0e4f-4522-a01d-097e6fe0dca5.jpg,Y +SAMAN,안호성,hsan@samaneng.com,hsan,215053.jpg,716ffda19be1b91d55b47984bc0e52dc5c99fa764f0ca6f21eead710a4f745e9.jpg,066f8646-935a-4325-ba20-7f0729ef509b,066f8646-935a-4325-ba20-7f0729ef509b.jpg,Y +SAMAN,안호진,hjan@samaneng.com,hjan,221003.jpg,3cfc3f236cdce88494f83d32588dc8eb524caff2828a9444bdea28501befdeb7.jpg,14291360-3814-4b3d-ab8e-e476a31d19fd,14291360-3814-4b3d-ab8e-e476a31d19fd.jpg,Y +SAMAN,안효래,hrahn@samaneng.com,hrahn,224014.jpg,8c250df5d28c505f7c1055e5a51c6fe11d2fc8d8034e856fffa76607b53b7335.jpg,e8501a76-c676-498a-9d16-26b3e92e146e,e8501a76-c676-498a-9d16-26b3e92e146e.jpg,Y +SAMAN,안효석,hsan1@samaneng.com,hsan1,225224.jpg,92d332be92f3110ef614b5d9aafd36cad8c53dc582a50c62bed60543d6599d0d.jpg,47940166-795c-4e6c-815e-10b9a1c4a397,47940166-795c-4e6c-815e-10b9a1c4a397.jpg,Y +SAMAN,안효식,hsahn@samaneng.com,hsahn,224103.jpg,f6a9326542e84f3586e1a8134b99c1020e3565dad447f6b8127466edbd85954a.jpg,4abf10e7-dcea-420b-9098-27051e949287,4abf10e7-dcea-420b-9098-27051e949287.jpg,Y +SAMAN,안효원,hwan@samaneng.com,hwan,223228.jpg,abc53575305e44ff22cd1a1981787c7171d2ac35d011bac03b9f62a663ab72a8.jpg,abaf0788-2d68-4b7d-b40a-c0251f38ae21,abaf0788-2d68-4b7d-b40a-c0251f38ae21.jpg,Y +HANMAC,안흥권,hgan@hanmaceng.co.kr,hgan,M24063.jpg,27a4e8e63870a3f9d58acace20011ddf351f1e64c2ed8b93f5a7b50b646255bb.jpg,c3f37473-5a13-4c7e-86c7-829aaa81b2e7,c3f37473-5a13-4c7e-86c7-829aaa81b2e7.jpg,Y +SAMAN,안희원,hwahn@samaneng.com,hwahn,226085.jpg,b624b0a8b11b5a62f5b69b8442b1a323e63dcb20633daccd6efd1c187acbec4b.jpg,03218d8c-090f-4551-a64b-01cc4fd80c1c,03218d8c-090f-4551-a64b-01cc4fd80c1c.jpg,Y +SAMAN,양관섭,ksyang@samaneng.com,ksyang,208011.jpg,b30c2610ba08cffea23ff46a1680a86f08ba0bf2beb8a5a6f0c15e6becb108f3.jpg,9129ddbd-6c2a-4cf2-b8fc-1aed44f916e2,9129ddbd-6c2a-4cf2-b8fc-1aed44f916e2.jpg,Y +SAMAN,양규순,gsyang@samaneng.com,gsyang,218034.jpg,6953f4fb41fbbd4cf6197dbba7443c2ba9946fa2d27b1e5fd5364ae1f0855254.jpg,f3491b85-fd6b-486a-96cb-5bb009837529,f3491b85-fd6b-486a-96cb-5bb009837529.jpg,Y +SAMAN,양동록,dryang@samaneng.com,dryang,225273.jpg,fbcb2f4ca263cd8c760fb28bf87b0e7a87e498980aa65c9c91dfefe3c7a8a6fa.jpg,804e433a-9374-452c-9f01-e01070e1f607,804e433a-9374-452c-9f01-e01070e1f607.jpg,Y +HANMAC,양미연,myyang@brsw.kr,myyang,B25015.jpg,3642210fc7ece3ba3f9d48059a5f74ed478459731c3570aa3035ef93a67228c3.jpg,01e437a9-dede-43ba-8d0c-f8c68e8026f5,01e437a9-dede-43ba-8d0c-f8c68e8026f5.jpg,Y +SAMAN,양병수,bsyang@samaneng.com,bsyang,226089.jpg,571e03c64f577fc2f13c6a3ffdf4563f96a98a901904960df80959644f58c05b.jpg,f1f0eecf-d2e0-4ba3-86b3-0764c57477b6,f1f0eecf-d2e0-4ba3-86b3-0764c57477b6.jpg,Y +SAMAN,양병홍,bhyang1@samaneng.com,bhyang1,219018.jpg,276f0a7844a159aef3acb463a8153fd4a80681ea90d172d30a515d83ffe9e61c.jpg,772dc823-32a9-4720-8eb9-890629cf89c4,772dc823-32a9-4720-8eb9-890629cf89c4.jpg,Y +SAMAN,양성모,smyang1@samaneng.com,smyang1,223278.jpg,2c801217ed34dfc543354fc8593d5b5b6b401156c1a7b8fb293068a674138b03.jpg,7be51dcb-2ade-4451-b614-6c0f434ec803,7be51dcb-2ade-4451-b614-6c0f434ec803.jpg,Y +SAMAN,양성우,swyang@samaneng.com,swyang,206028.jpg,1d8d2c2b2610a13b3b03c808fb901434bdcb5842b760c210519ed127f23e5c0b.jpg,f8d1b4d2-2b98-482a-b6df-47d7493f82ae,f8d1b4d2-2b98-482a-b6df-47d7493f82ae.jpg,Y +SAMAN,양소희,shyang1@samaneng.com,shyang1,026072.jpg,afb1b10831627dc8526c6fc83792faae11c7fc7d23cecaae8e90a0a07f81b25d.jpg,ecb9ac0e-472e-49fc-a879-8e668df3aed1,ecb9ac0e-472e-49fc-a879-8e668df3aed1.jpg,Y +HANMAC,양숙영,syyang@brsw.kr,syyang,B24012.jpg,38da400338e70672e3c940f8f5b20bc48d859789689f3ee2d3e053df2ddb94f5.jpg,d2952271-72ba-4e7b-af9f-544ff91194b9,d2952271-72ba-4e7b-af9f-544ff91194b9.jpg,Y +SAMAN,양승수,ssyang@samaneng.com,ssyang,200021.jpg,b07d1e186545ac009bf5efd006f2d9b224a09714ef746f211f420b0c78eafa7f.jpg,cd7957fb-fec0-48a6-a005-305834132534,cd7957fb-fec0-48a6-a005-305834132534.jpg,Y +SAMAN,양승일,siyang@samaneng.com,siyang,210102.jpg,0e470b3ee9e704ee2297a66027ff48c813827daffdb1e227631d96650eddaa2c.jpg,4175adba-fc41-480f-bf00-0493bb3809f2,4175adba-fc41-480f-bf00-0493bb3809f2.jpg,Y +SAMAN,양승현,shyang@samaneng.com,shyang,203039.jpg,966177d4e1b2d01c2d227e95f0f46a2d1056af7e485794b02a23a45d00ca980d.jpg,fb0d7460-6e16-46fe-bad5-5f4e15c77785,fb0d7460-6e16-46fe-bad5-5f4e15c77785.jpg,Y +SAMAN,양영섭,ysyang1@samaneng.com,ysyang1,225236.jpg,ea6b9fae4c10402298bea4c285d6ff75c14f2d5ca56ca4204350733a151e7e3e.jpg,02390127-a041-4cb7-a4f5-61e0156b352f,02390127-a041-4cb7-a4f5-61e0156b352f.jpg,Y +SAMAN,양유홍,yhyang@samaneng.com,yhyang,206029.jpg,87c43ccb88e7f731bdf1f4d8617291986ec7c97422a3171d085a9007b86e6740.jpg,16060fce-dee8-4a3d-b19e-8030f937e59b,16060fce-dee8-4a3d-b19e-8030f937e59b.jpg,Y +SAMAN,양일영,iyyang@samaneng.com,iyyang,221069.jpg,a61c86b5dc713a77b1d85b159746d1e89f9d889ce7141fa247e87dc42a5358bc.jpg,9702ac2c-c2b8-415a-9ec8-e5183ed3a2b4,9702ac2c-c2b8-415a-9ec8-e5183ed3a2b4.jpg,Y +SAMAN,양정모,jmyang@samaneng.com,jmyang,220158.jpg,16904b70c5f78ad5de4e1f0e1ccfd9c54faa5c96d37817e90e2e1aa10aa7c6d5.jpg,9e048ebb-2176-4822-b222-9de4a25a97d0,9e048ebb-2176-4822-b222-9de4a25a97d0.jpg,Y +HANMAC,양정선,jsyang@hanmaceng.co.kr,jsyang,M20406.jpg,8e427d235719edfae78f534d32d9762150ae092eafb40bba574d4dd2c4b0e504.jpg,45440fce-6a55-4efe-abf8-ba70b9398eb4,45440fce-6a55-4efe-abf8-ba70b9398eb4.jpg,Y +JANGHEON,양종식,jsyang1@brsw.kr,jsyang1,J11202.jpg,4ce45d08c9cb4d81332d8e621d1aec952ded09a03c1dd884c7e7bbcbcd9c8d87.jpg,a16b4338-ac64-465e-a6fc-fb68dea87f55,a16b4338-ac64-465e-a6fc-fb68dea87f55.jpg,Y +SAMAN,양지현,jhyang1@samaneng.com,jhyang1,206144.jpg,73bbc553b5c9474cbf76351c02b04b214deef561585a866e95c78a3b62eac45d.jpg,37aeb78b-baf4-4839-b20f-bb9516ffdc6c,37aeb78b-baf4-4839-b20f-bb9516ffdc6c.jpg,Y +SAMAN,양진웅,jwyang@samaneng.com,jwyang,225201.jpg,49bad63aa1cc64211d91e5b3ed1251b8d742cb4b5cfd5fea79e0456b1213f9b6.jpg,c4644329-8f99-401c-ae0d-6f6b7372f1d5,c4644329-8f99-401c-ae0d-6f6b7372f1d5.jpg,Y +SAMAN,양현,hyang@samaneng.com,hyang,225279.jpg,3087c61f00671c4225ddf03c6743d3bd1c2139fab3d775b062bb9c4b5e2512a9.jpg,d9dbdc73-198a-4ae0-9a4e-fe7aeae86f2b,d9dbdc73-198a-4ae0-9a4e-fe7aeae86f2b.jpg,Y +SAMAN,양현승,hsyang1@samaneng.com,hsyang1,221187.jpg,30fd07826ac9a9661fea5931c59f15d118799e50f6d7b2d73eb70d38dffa4f30.jpg,0a71b260-cd77-481c-9a3f-2bc760ae96c5,0a71b260-cd77-481c-9a3f-2bc760ae96c5.jpg,Y +SAMAN,양현준,hjyang@samaneng.com,hjyang,226012.jpg,a6ec85ebb9c11e372132dfd8638b66f72c6720358a9cae6d1b0b98df52bacb4c.jpg,68aebdcb-8870-4491-aa81-d55f0db564ca,68aebdcb-8870-4491-aa81-d55f0db564ca.jpg,Y +SAMAN,양현진,hjyang1@samaneng.com,hjyang1,222055.jpg,4f22b7c27aede20e45ea55a5397e68f32aa8449ae029d3e9c0afe3136ab05010.jpg,edf33802-b7a8-4dad-997b-aa9c0a75a4a9,edf33802-b7a8-4dad-997b-aa9c0a75a4a9.jpg,Y +SAMAN,양현휘,hhyang@samaneng.com,hhyang,197089.jpg,a22f1ba007adc29844b4ec00d0d519e069f83c33bef938f94b2a002ee127ea72.jpg,6ce4b221-a57f-487d-9db1-4304bf5a9a56,6ce4b221-a57f-487d-9db1-4304bf5a9a56.jpg,Y +SAMAN,양호석,hsyang@samaneng.com,hsyang,219156.jpg,a1a96b558b1d177fb728b612d9fa130385425a05998ab1f9fd43615c6ba15cf7.jpg,d2b92f20-2f3c-4751-8862-a2b3384e7ac1,d2b92f20-2f3c-4751-8862-a2b3384e7ac1.jpg,Y +SAMAN,양희석,hsyang2@samaneng.com,hsyang2,223096.jpg,d63888e3ba340b5ece05ca562683710306627708e7748dc2d38e0b39a0e381bf.jpg,1a3f0c6e-f8eb-4abb-a639-17f33af664db,1a3f0c6e-f8eb-4abb-a639-17f33af664db.jpg,Y +HANMAC,양희찬,hcyang@hanmaceng.co.kr,hcyang,M23065.jpg,79d3b3dd7a24f9d78b7f924bf043725792343e979f62cb2f94e4b8a5047dbcf2.jpg,f799e66f-d1d7-41ba-a88c-ca770e93f21a,f799e66f-d1d7-41ba-a88c-ca770e93f21a.jpg,Y +SAMAN,엄성현,sheom@samaneng.com,sheom,222122.jpg,39c2e1f88e2e9e3da75a504916ef0ae4187fc13aa2099cedeefbca9f414a6ed6.jpg,49ed8f78-b0f5-47db-9e67-b6b165ff5dfd,49ed8f78-b0f5-47db-9e67-b6b165ff5dfd.jpg,Y +SAMAN,엄지숙,jsuhm@samaneng.com,jsuhm,224048.jpg,962f43f6c03c8ff50a44a50558e94dbd3f3d965d90ad264d2d41f9cbda20459b.jpg,8911ed9c-e6f8-466c-9f49-d95f8eec91f3,8911ed9c-e6f8-466c-9f49-d95f8eec91f3.jpg,Y +SAMAN,엄진용,jyum@samaneng.com,jyum,225095.jpg,345aaf32d7a87377dfc6da72214edc0d00f312c45f3ed890ca49fdf4ae27c84d.jpg,72184eb7-fe7e-4459-9668-d4973c61f3f2,72184eb7-fe7e-4459-9668-d4973c61f3f2.jpg,Y +SAMAN,엄희지,hjeom@samaneng.com,hjeom,025026.jpg,72edd2693a926af305772e415239eb61c4c850f639ebe45da74584e7b3fc76d4.jpg,7700e28a-954a-4b79-94aa-8e793897d8f1,7700e28a-954a-4b79-94aa-8e793897d8f1.jpg,Y +SAMAN,여영탁,ytyeo@samaneng.com,ytyeo,225204.jpg,6e4ab8c4fecc33730d75e65fd5b97e924dae3c2ac80f1ba7924df8bb6c30de6d.jpg,6294a7ba-285d-43f1-b53e-97cc64bed16b,6294a7ba-285d-43f1-b53e-97cc64bed16b.jpg,Y +SAMAN,여형구,hgyeo@samaneng.com,hgyeo,225117.jpg,3456db8b1824db8668838be79afca854d5ea71cbf0b0810c267733a3236da251.jpg,fdbe4d03-221c-4966-b37e-fb4f8557420e,fdbe4d03-221c-4966-b37e-fb4f8557420e.jpg,Y +SAMAN,여환익,hiyeo@samaneng.com,hiyeo,225129.jpg,389c64014db07c159c68d2626d34576efbc483677094812d0ee9cf570e766126.jpg,fc3f3417-c278-447d-8f76-787e38b200c1,fc3f3417-c278-447d-8f76-787e38b200c1.jpg,Y +SAMAN,연영흠,yhyon@samaneng.com,yhyon,224309.jpg,9123d243c54dd6e77d56bb71c18cf395d2ef3724f7896e5fb00dd6009a4b2c1c.jpg,8df9a6a6-ae20-4a46-a5ba-5962a67de6bd,8df9a6a6-ae20-4a46-a5ba-5962a67de6bd.jpg,Y +HANMAC,연훈모,hmyeon@hanmaceng.co.kr,hmyeon,M17301.jpg,3484601ef76765ff468b8dde70be21bb8aef738b4aaa6f3e97e7784120a7c8ad.jpg,a098318b-d8f1-427c-8f55-b92d7c965847,a098318b-d8f1-427c-8f55-b92d7c965847.jpg,Y +SAMAN,염광섭,ksyeom@samaneng.com,ksyeom,221225.jpg,8027f04e70211e67b52b5dd96c5f43e1e1956d4609a8b20b4ae374b93644d064.jpg,c84d1acc-c360-4ccd-9e4d-2da23efb28ad,c84d1acc-c360-4ccd-9e4d-2da23efb28ad.jpg,Y +SAMAN,염승운,swyeom@samaneng.com,swyeom,225159.jpg,9c68afc9ae50117e883f6ac3ea636b0bfad5911cf94dd6332150f0fa1b254e8f.jpg,ac17803c-4177-4514-b63b-c78436fa3bd1,ac17803c-4177-4514-b63b-c78436fa3bd1.jpg,Y +SAMAN,염승호,shyeom1@samaneng.com,shyeom1,223070.jpg,7ecbb451015cd0e88075f302e9ea505b2f876b00ed059847ed41a87a9fa41230.jpg,2f567f1b-384f-47f5-ae8b-6a622ae93443,2f567f1b-384f-47f5-ae8b-6a622ae93443.jpg,Y +SAMAN,염창열,cyyeom@samaneng.com,cyyeom,225103.jpg,7741705b5821f50e3a80645e2a4cb9762f290e0f4c9a4f8069ba2987807306bd.jpg,b990a2b3-2c00-47e2-80f1-0f1f6a14f846,b990a2b3-2c00-47e2-80f1-0f1f6a14f846.jpg,Y +SAMAN,예상민,smye@samaneng.com,smye,221279.jpg,43675ae481e8f560785b740bd09b586cb993ef550be5320b6a8daed83540c0fa.jpg,2f81d324-a273-4130-b519-8849de79f2c8,2f81d324-a273-4130-b519-8849de79f2c8.jpg,Y +HANMAC,오관식,ksoh@hanmaceng.co.kr,ksoh,M14504.jpg,1fc6767d43a5f747d22576f5964c97b76fd64685cdad7cfbaf57d0dc84c3e630.jpg,d177a624-3e3c-47ca-9245-b02b4cbe7760,d177a624-3e3c-47ca-9245-b02b4cbe7760.jpg,Y +SAMAN,오남수,nsoh@samaneng.com,nsoh,224191.jpg,cdd295a08e23078cc114b884bc4e40b11cb531d4c779e94aac46b26001cbf069.jpg,2a2a5e3e-f380-4a15-b567-0028f61dc0cf,2a2a5e3e-f380-4a15-b567-0028f61dc0cf.jpg,Y +SAMAN,오동규,dkoh1@samaneng.com,dkoh1,225089.jpg,f538f0696760d053e28094da63b0838a394f5e70f05caedf8bd4fba93fb70f0a.jpg,03dcff13-1cfc-4a12-9962-faf0c2367e08,03dcff13-1cfc-4a12-9962-faf0c2367e08.jpg,Y +SAMAN,오동기,dkoh@samaneng.com,dkoh,224034.jpg,ac620f0b5ef4eb0d59e58807987113ce7c175143ba6fffeccef5d636c13815bc.jpg,b0b7811b-13a0-4fa9-b7f5-6936d6aa4f3b,b0b7811b-13a0-4fa9-b7f5-6936d6aa4f3b.jpg,Y +SAMAN,오동수,dsoh@samaneng.com,dsoh,207150.jpg,3c5abc64ea3393b245abc852c3c1c971acade5284185458830a1ad2c104be24d.jpg,8f647b0b-46d7-409e-8d5e-af397916832c,8f647b0b-46d7-409e-8d5e-af397916832c.jpg,Y +SAMAN,오동운,dwoh@samaneng.com,dwoh,196061.jpg,fbb2f180294fc8779674e735518511f694fb207340791cb0e6d20ce6e0a3141a.jpg,1169d6c3-8d03-4e9d-8391-8c94e6d0ba80,1169d6c3-8d03-4e9d-8391-8c94e6d0ba80.jpg,Y +SAMAN,오명환,mhoh@samaneng.com,mhoh,225011.jpg,cdf7ac8beb559b5129d3dc6e38b98fe53b5130503dbdeacc889bdc252861c285.jpg,e16713c8-9aa8-4e73-93b6-75bbb0429fc1,e16713c8-9aa8-4e73-93b6-75bbb0429fc1.jpg,Y +HANMAC,오문성,msoh1@hanmaceng.co.kr,msoh1,M18201.jpg,c89737c23201f13cac4c890adb9e0bd5d2de2bd43e2cfa3fac3193a1444e4415.jpg,45b7f473-bf58-48e1-bdff-45e182a4e99c,45b7f473-bf58-48e1-bdff-45e182a4e99c.jpg,Y +SAMAN,오미란,mroh@samaneng.com,mroh,026044.jpg,55dba8cc3cacc11d6952815f6cb66ea6f84b6dd85f006395cef9f5b3a06d7571.jpg,4e97566f-c39e-4cd8-a44b-e855caff548d,4e97566f-c39e-4cd8-a44b-e855caff548d.jpg,Y +SAMAN,오민섭,msoh@samaneng.com,msoh,223321.jpg,0c26002d42634f2990c25ea408cd134ec603490e07b0b6e02de89f67a4b939cf.jpg,a07f05ae-0778-4aa9-ac7a-5d18c5dab010,a07f05ae-0778-4aa9-ac7a-5d18c5dab010.jpg,Y +HANMAC,오민종,mjoh@hanmaceng.co.kr,mjoh,M23054.jpg,189e2d8e3383e3ff58471940a31e3dc47ccb1eb7203d4a65324de19c09cd0e57.jpg,52190324-252a-4b8a-aba1-7fcf67568908,52190324-252a-4b8a-aba1-7fcf67568908.jpg,Y +HANMAC,오방일,bioh@hanmaceng.co.kr,bioh,M24006.jpg,f433298dca25e2d1de0cb0eca94bfc9d095e25db9ea0a65e0a3e05da20725cb0.jpg,5f9c91df-0dd6-4bc3-8d2f-ce69f6f1f09f,5f9c91df-0dd6-4bc3-8d2f-ce69f6f1f09f.jpg,Y +SAMAN,오봉섭,bsoh@samaneng.com,bsoh,224116.jpg,b66455767fa16323abd0681fa7470c652847d2942135248c4c974fc426f7dd4f.jpg,1ee35048-3a05-4f51-8cbf-4b5eeb509ab5,1ee35048-3a05-4f51-8cbf-4b5eeb509ab5.jpg,Y +SAMAN,오상현,shoh1@samaneng.com,shoh1,223094.jpg,fd98e3d344dbdea3c2c3ed4727b365b5cc65612a3940fb9f06bd3f0a3357520d.jpg,ebbb260c-db7c-4e3b-9486-f43a18a9f585,ebbb260c-db7c-4e3b-9486-f43a18a9f585.jpg,Y +SAMAN,오성주,sjoh@samaneng.com,sjoh,024112.jpg,d58c4ce139f7c606b67e2584509dd025dec3f42000cb76e74635af585f686ddb.jpg,bc9924b6-3bb1-4286-8e46-f35ab69301fb,bc9924b6-3bb1-4286-8e46-f35ab69301fb.jpg,Y +SAMAN,오성준,sjoh1@samaneng.com,sjoh1,220226.jpg,23fc900007a2c1de3b2fe2876e0f56ae115930d2e38e6e660f94ff059920bee2.jpg,4a57dd84-db94-4dd2-8ce2-db9348ef34eb,4a57dd84-db94-4dd2-8ce2-db9348ef34eb.jpg,Y +SAMAN,오성하,shoh@samaneng.com,shoh,226080.jpg,9210c8aa98db1669920cb40d547bc90857231348ff80a4c2657cda344cbe0b10.jpg,f19fadb7-45c9-4d6b-b7b9-52769ebba14a,f19fadb7-45c9-4d6b-b7b9-52769ebba14a.jpg,Y +HANMAC,오세걸,sgoh@hanmaceng.co.kr,sgoh,M26032.jpg,63e14b74cc2bddbb9d5777df3b7b4a01d40cb316ff3c4909e84c4500248623ca.jpg,3d37bd3c-4b15-4a0b-a176-ec087b67b6aa,3d37bd3c-4b15-4a0b-a176-ec087b67b6aa.jpg,Y +SAMAN,오세민,smoh2@samaneng.com,smoh2,226067.jpg,4da7a8cb5d260d8f436e969c75000737b478a95ddfddd5cdb712a0e2a83fb134.jpg,4f742385-2cd2-4477-b832-3af5f768e3b2,4f742385-2cd2-4477-b832-3af5f768e3b2.jpg,Y +SAMAN,오세영,syoh1@samaneng.com,syoh1,223185.jpg,e5789664cab7f0e21a5178c1e88d06229ba22e65798925676d71ad5b3c21a4eb.jpg,803b9c7f-fb41-4721-825f-7894dea49f93,803b9c7f-fb41-4721-825f-7894dea49f93.jpg,Y +HANMAC,오세임,sioh@hanmaceng.co.kr,sioh,M15406.jpg,0d12bdc40d56c1542ee695eead92c1c0178b186f68b4d77d57951462dafb12d4.jpg,370f7e03-fa4a-40a7-898a-32ea0b845c26,370f7e03-fa4a-40a7-898a-32ea0b845c26.jpg,Y +HANMAC,오세현,shoh2@hanmaceng.co.kr,shoh2,M24049.jpg,d9dcfbaf9654e2846353e0c5fc0f3ade07d10319749283222ed095a9fcca9f5f.jpg,7eaddda7-cd7c-4438-890a-58a6b41f051d,7eaddda7-cd7c-4438-890a-58a6b41f051d.jpg,Y +SAMAN,오수미,smoh1@samaneng.com,smoh1,025114.jpg,8ac4aeb63082fd0e36cd083d3fd6100aae74f38869eca1e747493b81bbfccd9d.jpg,5ce56e61-489c-4167-9d56-fd5c36d8c57b,5ce56e61-489c-4167-9d56-fd5c36d8c57b.jpg,Y +SAMAN,오승문,smoh@samaneng.com,smoh,209077.jpg,27dc3cd1c92ef6c3020862055e61d9eb487b30f1f697fad830aa8431d9f26b01.jpg,1839b0cd-7420-4cb5-a045-99eac291c129,1839b0cd-7420-4cb5-a045-99eac291c129.jpg,Y +SAMAN,오승우,swoh@samaneng.com,swoh,226031.jpg,0b91a8f0187efefe3c7d1b724bbcf410c9f040d25077a18a793fac24c7796778.jpg,aaf283e8-2418-4828-878c-a1111d307907,aaf283e8-2418-4828-878c-a1111d307907.jpg,Y +SAMAN,오승택,stoh@samaneng.com,stoh,195086.jpg,b48b88324ad69a15d9a232e3e4555fabf2deabc5a4d8d3d30edfb3452693080c.jpg,73b9f69a-55e8-4d2e-9401-10d87f16f47e,73b9f69a-55e8-4d2e-9401-10d87f16f47e.jpg,Y +SAMAN,오영진,yjoh@samaneng.com,yjoh,222105.jpg,e82c3e66a821df1d243d297b0c258b1731a57ae270d7c6457997f34cde9f7597.jpg,3c4bc3a5-2e62-4f60-a964-f0e36008fccc,3c4bc3a5-2e62-4f60-a964-f0e36008fccc.jpg,Y +SAMAN,오원진,wjoh@samaneng.com,wjoh,225209.jpg,e2326fa7e5deb69326e3b7ea6d1a044dc0e42672196920f2416f6dab0b6e3a0c.jpg,b530fe9a-1892-4d32-9b5e-05d1654dcdbf,b530fe9a-1892-4d32-9b5e-05d1654dcdbf.jpg,Y +SAMAN,오윤실,ysoh@samaneng.com,ysoh,025116.jpg,a54d1b66eee14f10350d2f7bf0fbe437ce1484fc9f001a5d995ce4e63fe69ac9.jpg,0a04d6e0-2681-4ff1-94cc-42e97402b315,0a04d6e0-2681-4ff1-94cc-42e97402b315.jpg,Y +HANMAC,오윤익,yioh@hanmaceng.co.kr,yioh,M23040.jpg,eb474e32d416726d1cf13c2493470151e5774e8f8c6639da4c16760d9771ba12.jpg,cea4daeb-a486-4f11-ba2f-e4d760c1d83e,cea4daeb-a486-4f11-ba2f-e4d760c1d83e.jpg,Y +SAMAN,오은선,esoh@samaneng.com,esoh,222032.jpg,cf0279375026cd95d6918ebd05a4301346dcaec301d99d9f9a9c58ee879c1ada.jpg,b5bc50c3-1cbb-4aa0-bd20-55ee835dfb47,b5bc50c3-1cbb-4aa0-bd20-55ee835dfb47.jpg,Y +SAMAN,오익균,ikoh@samaneng.com,ikoh,214090.jpg,a2ce0afc0713a73b1df8b10a09e85289e67c5ac5ef4fb9e8558832c29f75b148.jpg,b54cd6c6-070f-4c20-b4cf-c0a52fe72e0a,b54cd6c6-070f-4c20-b4cf-c0a52fe72e0a.jpg,Y +SAMAN,오인관,igoh@samaneng.com,igoh,225282.jpg,63752f797c1feeb9e376ecd3cebc2265195d9725fb68ebe6eff927d551d654d7.jpg,dc705d17-515e-49b2-881a-78b4c3c82b36,dc705d17-515e-49b2-881a-78b4c3c82b36.jpg,Y +SAMAN,오재민,jmoh@samaneng.com,jmoh,221247.jpg,9c6e1da60649bc4a92831840efb69d545fe192a3f856621964559281d319f0f6.jpg,c5d4114b-f0ba-4d81-8a00-9e50d62e2a20,c5d4114b-f0ba-4d81-8a00-9e50d62e2a20.jpg,Y +HANMAC,오재범,jboh@hanmaceng.co.kr,jboh,M03202.jpg,7b23dfd818355e7676117a09fe1ad528e25414e9eaef5d644db2d4ac35bc7471.jpg,737e11e4-3213-4051-af4b-00a1cd7b4970,737e11e4-3213-4051-af4b-00a1cd7b4970.jpg,Y +SAMAN,오정식,jsoh@samaneng.com,jsoh,219113.jpg,6cb75dc973240acf6e79facb75ed7a379159b3e717010022155fa02b1aac8606.jpg,f39688d2-5fb6-424f-af62-8bcebd6a0c34,f39688d2-5fb6-424f-af62-8bcebd6a0c34.jpg,Y +SAMAN,오정회,jhoh1@samaneng.com,jhoh1,221057.jpg,1f7c449441843c67acf6c03e466e654f0755a5198c9d234314933303d042f699.jpg,5437b15c-8df6-42f7-903b-52a96f381e56,5437b15c-8df6-42f7-903b-52a96f381e56.jpg,Y +SAMAN,오제훈,jhoh@samaneng.com,jhoh,220258.jpg,27cf4914ddeee05e6774bc9a80642411789e19b585e097cf2f184cc37328ce4a.jpg,fe694458-bdfa-4fe3-8c43-2b017f7241b4,fe694458-bdfa-4fe3-8c43-2b017f7241b4.jpg,Y +SAMAN,오종우,jwoh@samaneng.com,jwoh,191033.jpg,587b558ce6434b365e55fb2d3a2b64564059d1977018ffc05ae870282d77f384.jpg,e0f13f57-bd9d-4c05-8c23-415b35dfd0dd,e0f13f57-bd9d-4c05-8c23-415b35dfd0dd.jpg,Y +SAMAN,오종현,jhoh2@samaneng.com,jhoh2,221333.jpg,c7f7d50489d2941d94856a28069f79a1245c9da2d79785f49637dfb57fe77652.jpg,b0bc0d1a-5c48-4997-95bc-aef5c3fc49e9,b0bc0d1a-5c48-4997-95bc-aef5c3fc49e9.jpg,Y +SAMAN,오치영,cyoh@samaneng.com,cyoh,220004.jpg,20a3ae671ad6f235c5ebcd7edf2ab8c46e37dc01dbdc3a756ef4fa0b1a76dc0b.jpg,dc4d780d-5f21-4897-adf5-7f18e126a1f4,dc4d780d-5f21-4897-adf5-7f18e126a1f4.jpg,Y +SAMAN,오하나,hnoh@samaneng.com,hnoh,026027.jpg,5def55375952defb4609628a6849f2fcf72943e09fbf621a4666c8f1b84134b2.jpg,2ae73304-7bfa-45e8-ab73-21cfd6e1d0a3,2ae73304-7bfa-45e8-ab73-21cfd6e1d0a3.jpg,Y +SAMAN,오한빈,hboh@samaneng.com,hboh,222015.jpg,18ef1710010e12e960e42dde4af732c595f919689db29dec492ee543a0678fec.jpg,08e28d47-d0f9-4b18-b6d2-538757e10bf2,08e28d47-d0f9-4b18-b6d2-538757e10bf2.jpg,Y +SAMAN,오현영,hyoh@samaneng.com,hyoh,221178.jpg,1630da44e51f8a38f54799b52c9524493472ca82b1a9dff4b0dcba3e74a3981c.jpg,3382e390-faff-4f15-bd67-0d6c1a97f31b,3382e390-faff-4f15-bd67-0d6c1a97f31b.jpg,Y +HANMAC,오혜성,hsoh@hanmaceng.co.kr,hsoh,B21303.jpg,4e410e9b6f0ae16b333065c318af4f50ed48bf8c7db2945015343a574aabf4aa.jpg,c3a70f68-f57f-492d-8de5-411174221483,c3a70f68-f57f-492d-8de5-411174221483.jpg,Y +SAMAN,오흥배,hboh1@samaneng.com,hboh1,224074.jpg,e39a8c70505f99c6413453545872d097b7928a5ed62b29d277b213f9b7133ab8.jpg,fabfbad9-9a6d-4551-a732-4bbf0ce58f01,fabfbad9-9a6d-4551-a732-4bbf0ce58f01.jpg,Y +SAMAN,왕진영,jywang@samaneng.com,jywang,194047.jpg,7968b03b829a4f471feaab8c9e7f48bb8b87951226fdf65fc9d1218faef66849.jpg,36d0a4c0-ba12-404f-bfbf-5c26f49a1aa7,36d0a4c0-ba12-404f-bfbf-5c26f49a1aa7.jpg,Y +SAMAN,용태순,tsyong@samaneng.com,tsyong,220138.jpg,902ca2029eb40675123af8c9f9d66c1367fba4611098b0ed5bab28828e7e7f8f.jpg,e231eaa7-9988-4984-acc1-f3e3a1181c73,e231eaa7-9988-4984-acc1-f3e3a1181c73.jpg,Y +SAMAN,우대성,dswoo@samaneng.com,dswoo,181002.jpg,26fd5b9ee0fd5f29bc75e5c557c0fe56923637a7bad48625e07b4ff5c1ee19e6.jpg,a8be52e3-fa9d-4a5c-8002-2190bde5e0da,a8be52e3-fa9d-4a5c-8002-2190bde5e0da.jpg,Y +SAMAN,우상벽,sbwoo@samaneng.com,sbwoo,221172.jpg,4fcbe9c8988e1f8dd676f8ac1ed1899fb8ef128311b498d0f928d26ea3e807ac.jpg,6cd64678-503d-4947-8c15-3e0e68a18bee,6cd64678-503d-4947-8c15-3e0e68a18bee.jpg,Y +SAMAN,우성원,swwoo@samaneng.com,swwoo,225080.jpg,add31a4b73d6d9e53307070a20a09304834b07bf3e10329bf91bf27dfaef2862.jpg,9b8d740a-9385-4d21-89f7-2ca3000ef67c,9b8d740a-9385-4d21-89f7-2ca3000ef67c.jpg,Y +SAMAN,우양근,ykwoo@samaneng.com,ykwoo,221160.jpg,37700d805340ea671cf580a9221fbe0bb8139768b45b9f51f214b998bac0b192.jpg,c425728d-24e4-4dcc-9eda-fdfbf09ce4e7,c425728d-24e4-4dcc-9eda-fdfbf09ce4e7.jpg,Y +SAMAN,우영현,yhwoo@samaneng.com,yhwoo,225042.jpg,868fe7d7db772499cc8a402e94428cbd20c37d76ac6c2027f2aa113d2c93bc7f.jpg,083bd7a8-9095-4f92-a1ef-4262057a3cf2,083bd7a8-9095-4f92-a1ef-4262057a3cf2.jpg,Y +SAMAN,우종국,jkwoo@samaneng.com,jkwoo,212058.jpg,a89fce14b20f23079c7f89ee63f7927ce3ec2de88d64e8178850bea299d5460d.jpg,dd2fb54b-41d3-4909-a8e9-d7210ff50f98,dd2fb54b-41d3-4909-a8e9-d7210ff50f98.jpg,Y +SAMAN,우희준,hjwoo@samaneng.com,hjwoo,208130.jpg,033580a11bfa2a8214a44720178bccbe0f26ee18fbf5f626b7bf6d06dcee8de7.jpg,9778108e-acf8-441c-9a3b-656f87405ccd,9778108e-acf8-441c-9a3b-656f87405ccd.jpg,Y +SAMAN,원경식,kswon@samaneng.com,kswon,219159.jpg,968e6ab20b53c32f3b2d9fdc7facb6c1b17b6383280f5701051079b1187aefe5.jpg,b6a995d9-d96e-440e-9fcc-77c33cdae05e,b6a995d9-d96e-440e-9fcc-77c33cdae05e.jpg,Y +SAMAN,원보희,bhwon@samaneng.com,bhwon,224338.jpg,2c05eb0d99bc3f64dfa51c5c0bf14ae591ee38c759fe361778a1b3c4c27a01c6.jpg,d5c28267-a190-49bc-b1c6-bddc9b8aadc9,d5c28267-a190-49bc-b1c6-bddc9b8aadc9.jpg,Y +SAMAN,원영철,ycwon@samaneng.com,ycwon,222177.jpg,65dd420407753392efe258904205393f1ab5933cf7b8f49167310c30e1a27e86.jpg,e80b55b3-bdb2-41ff-82f8-f23abe535cf7,e80b55b3-bdb2-41ff-82f8-f23abe535cf7.jpg,Y +SAMAN,원영학,yhwon@samaneng.com,yhwon,225198.jpg,fb3a0f25ebbe104561f60f9881c7c770737835a2fa0fc3acfc7873d58dceea5c.jpg,2afe3698-aa2c-4fb5-a770-e7b900a714ca,2afe3698-aa2c-4fb5-a770-e7b900a714ca.jpg,Y +SAMAN,원종환,jhwon@samaneng.com,jhwon,216094.jpg,b7ec0526bc011c838ee033c98b00aaf6ebec8e9b4d769a930adac1c53658626f.jpg,a17dfc0b-93d6-400f-ab75-2652e580e064,a17dfc0b-93d6-400f-ab75-2652e580e064.jpg,Y +SAMAN,원충연,cywon@samaneng.com,cywon,222208.jpg,c545c6d584e1de40ce4ab7d8afa5dda05a9a6a2b1b24822084589994865a81f2.jpg,996eb9d3-bd62-487f-bf65-2f95aaa0f3b7,996eb9d3-bd62-487f-bf65-2f95aaa0f3b7.jpg,Y +SAMAN,위성식,sswie@samaneng.com,sswie,196192.jpg,7a11cc019b12c59cabbf6bdf3ac09d42d296d7a10acd278e118fffd4d50debb5.jpg,68160e6f-ae39-4ae3-a1d7-0605a7b64856,68160e6f-ae39-4ae3-a1d7-0605a7b64856.jpg,Y +SAMAN,유경한,ghyou@samaneng.com,ghyou,222264.jpg,14f90b1ae4cd617a85bfa5838f534dd3868fc68949a8c2cc0b6ac9e951600eaf.jpg,bbff5bd8-38bf-46b2-8880-47fb1000eccb,bbff5bd8-38bf-46b2-8880-47fb1000eccb.jpg,Y +SAMAN,유고호,ghyu@samaneng.com,ghyu,206185.jpg,566768a433624850f5b6ff56f7817e090ad2647c74d24f7ac33356926be809f4.jpg,9729325b-ec22-4756-9598-15a5b806887c,9729325b-ec22-4756-9598-15a5b806887c.jpg,Y +HANMAC,유광열,gyyu@hanmaceng.co.kr,gyyu,M09512.jpg,b052723ffbaa93f44119636088454c15b57d47a24f4fdc4eb0b7935aceebaaf4.jpg,dd4e3670-4773-4745-9176-fa4221c4358c,dd4e3670-4773-4745-9176-fa4221c4358c.jpg,Y +SAMAN,유규상,ksyou@samaneng.com,ksyou,200001.jpg,d912a6fc779c2478746918fbd3db82f4757013685cf67639a19543eec70cf05d.jpg,ef60b4cb-a3ed-4859-89b3-503d8b974d17,ef60b4cb-a3ed-4859-89b3-503d8b974d17.jpg,Y +SAMAN,유근우,gwyoo@samaneng.com,gwyoo,225357.jpg,f0cf288edbbff7867301c6c663007d81592eb2d1864eaef1f5f1613eceefcc62.jpg,c845e809-4e91-41f4-8ae3-b9a5a6094e43,c845e809-4e91-41f4-8ae3-b9a5a6094e43.jpg,Y +SAMAN,유기종,gjyu@samaneng.com,gjyu,225228.jpg,c01f4266ab5a14a421cfc69c13bcfb9a7ca09dd7191149ce6ea67b77eacc2b66.jpg,12b75228-24a7-42fd-91f7-53070a8d631d,12b75228-24a7-42fd-91f7-53070a8d631d.jpg,Y +SAMAN,유도희,dhyoo@samaneng.com,dhyoo,225072.jpg,c768b5df6e5185f9de2eb4d0c51025e9e29eb6a0b5e4f35d9da2b8d8f885882b.jpg,17fa7d1f-028b-4b0e-b881-3147a65ade18,17fa7d1f-028b-4b0e-b881-3147a65ade18.jpg,Y +SAMAN,유동현,dhyu@samaneng.com,dhyu,221104.jpg,d071fbc9b40f5a72c1e4ef20d05cb23d314a33add97146b5b358e9a91cd3cb88.jpg,461208f3-4e35-41a1-9527-49fc9f71cc9b,461208f3-4e35-41a1-9527-49fc9f71cc9b.jpg,Y +SAMAN,유동형,dhyu1@samaneng.com,dhyu1,224331.jpg,873618d95b4b1e22a70ed3f83a8b44848aa4610a1b19da1c6e5ccc7ad0ca0cf4.jpg,1032bff8-54c7-4506-8874-fea50ff56a66,1032bff8-54c7-4506-8874-fea50ff56a66.jpg,Y +SAMAN,유미,myu@samaneng.com,myu,025060.jpg,6ff1e0b939154503c21783537445b4b00584172b9255772d3770393664f1fde4.jpg,3bdf69b0-e802-493a-ab57-45aa55e51ffe,3bdf69b0-e802-493a-ab57-45aa55e51ffe.jpg,Y +SAMAN,유병남,bnyoo@samaneng.com,bnyoo,216006.jpg,dea87cfb3043b98dfc74c9fc6c47d515096eae5945b24e0c8a9d4d50c52f5358.jpg,e7448b9d-ae3b-4625-97f6-a3bcbbdc3c9e,e7448b9d-ae3b-4625-97f6-a3bcbbdc3c9e.jpg,Y +SAMAN,유병욱,bwyu@samaneng.com,bwyu,220228.jpg,6705319e0765e0ed3b219829e30237e697ce7f78f733d645420da4ed63c9144e.jpg,092065e0-97b8-4e0d-8bb3-d46e99045a95,092065e0-97b8-4e0d-8bb3-d46e99045a95.jpg,Y +SAMAN,유병욱,boyoo@samaneng.com,boyoo,225170.jpg,157de8498b1f781c1b2b42339b7063168e513fba878046c460dc92aecc5fda33.jpg,dd3b2cc1-69dd-48c7-bf9e-0907d67ee27b,dd3b2cc1-69dd-48c7-bf9e-0907d67ee27b.jpg,Y +SAMAN,유봉희,bhyou@samaneng.com,bhyou,223175.jpg,88ee8edd525d6167bc32e101f841aca754b6440522eee747519414a908084104.jpg,aeba5f70-2c8a-47fc-a413-3eb4c1612c6c,aeba5f70-2c8a-47fc-a413-3eb4c1612c6c.jpg,Y +SAMAN,유상길,sgyoo@samaneng.com,sgyoo,223375.jpg,28a590aa4a0a9640b08d42f4c88e0b4965ec528815689b61ad21eaeab59efb2b.jpg,870aa763-de8c-437b-a8d2-b1a9b2d131a7,870aa763-de8c-437b-a8d2-b1a9b2d131a7.jpg,Y +SAMAN,유상연,syyoo1@samaneng.com,syyoo1,209108.jpg,c818ed48977974311a5d5623042b69ea4068cb1eb5f9408e45bd0363349d9df5.jpg,4d6bc3e1-fd6c-4525-8d3d-7a4c08bbc038,4d6bc3e1-fd6c-4525-8d3d-7a4c08bbc038.jpg,Y +SAMAN,유서진,sjyou1@samaneng.com,sjyou1,225100.jpg,ac2143e5cb1519a7adb9c53723a9737f38391c075a8453ff7d46c4ebe62d3797.jpg,3094f36f-7fdb-4724-b5de-68d02b4e300e,3094f36f-7fdb-4724-b5de-68d02b4e300e.jpg,Y +SAMAN,유선규,skyu@samaneng.com,skyu,221061.jpg,fe4afaf2475331848858ad5a0b81872e50d2516c9f0539647abf94c8de31209e.jpg,f62f63dc-2065-4697-87a0-31573c8e5e9f,f62f63dc-2065-4697-87a0-31573c8e5e9f.jpg,Y +SAMAN,유선혁,shyou@samaneng.com,shyou,221010.jpg,a998a359a3053dea66769989735dcf3e3ea46b8af28a83a7b58e98bf9ea950fb.jpg,b2e4ea61-76d3-43fe-bad2-ce764177d7ed,b2e4ea61-76d3-43fe-bad2-ce764177d7ed.jpg,Y +SAMAN,유성수,ssyoo@samaneng.com,ssyoo,225098.jpg,ac634d8242971b0b679e2a3a4f9cd6a2aa1bc355649903f28349025b03f48315.jpg,e20b35e3-b73f-4044-b8cc-98513618b306,e20b35e3-b73f-4044-b8cc-98513618b306.jpg,Y +SAMAN,유성재,sjyoo@samaneng.com,sjyoo,224212.jpg,e02cf9e4b5de9ab3a8eba4e34201a0fdc79d5f3b03bcb00079d3d655949977cc.jpg,17c86754-e8e3-4812-8eea-f533d084a20a,17c86754-e8e3-4812-8eea-f533d084a20a.jpg,Y +SAMAN,유세연,hsyou2@samaneng.com,hsyou2,201009.jpg,1cd85848d7fe359a418e602cfc237451dd8c564d24f1e54f9d05827332c00b73.jpg,c5dd56d8-cb92-402c-8ff0-374920f16eb9,c5dd56d8-cb92-402c-8ff0-374920f16eb9.jpg,Y +SAMAN,유송현,shyoo@samaneng.com,shyoo,225328.jpg,e8a87ac8a611ba135947f96b6809bc59caa97849a53455f76e0d40b444342e7a.jpg,08220cfe-8b95-48be-a637-df6e068db2aa,08220cfe-8b95-48be-a637-df6e068db2aa.jpg,Y +HANMAC,유수지,sjyu@hanmaceng.co.kr,sjyu,M22056.jpg,75be95395264fcadecd890a991f8ec0a0c477298d254a5bd58fb265eead4fbce.jpg,49daa03c-fa3c-4b16-964b-9720bbab53f7,49daa03c-fa3c-4b16-964b-9720bbab53f7.jpg,Y +SAMAN,유승민,smyoo@samaneng.com,smyoo,222244.jpg,b8ed2e8aa894ba047f6d615b13f90ca0322902c7488205d7e2cdfc0d2592fa85.jpg,95ad1621-e940-4dfb-a0fe-88beb79204f9,95ad1621-e940-4dfb-a0fe-88beb79204f9.jpg,Y +HANMAC,유승민A,smyu@hallasanup.com,smyu,B23048.jpg,55339c509de3f577f4e05dd6d7fb76eb66bd3337231d84762ce68cd62f7a4dc5.jpg,bcedefde-99ab-4d0c-9937-30e270d6b70d,bcedefde-99ab-4d0c-9937-30e270d6b70d.jpg,Y +HANMAC,유승열,sryou@hanmaceng.co.kr,sryou,M10102.jpg,7ee792fc5ff2628ad89cae3ac5462712460b47448c91d13c20123dfef3a7fc5c.jpg,35b75d82-f9d2-4aed-998a-a3ad6cf97e56,35b75d82-f9d2-4aed-998a-a3ad6cf97e56.jpg,Y +SAMAN,유승용,syyoo@samaneng.com,syyoo,205094.jpg,58f12e5847fc07b42d9bf99de972435d0700deae80d029f96fba542af462c2ce.jpg,e137e33e-1abf-4d00-853d-68f2e6adc365,e137e33e-1abf-4d00-853d-68f2e6adc365.jpg,Y +HANMAC,유영석,ysyu@hanmaceng.co.kr,ysyu,M15407.jpg,d317c2c81c5bd4de9c7bb7d41e37c728fa41d72e724e2e8a0cc86470f0670a6a.jpg,9ba32929-6b7c-42cb-9884-797fb209acef,9ba32929-6b7c-42cb-9884-797fb209acef.jpg,Y +SAMAN,유영진,yjyoo@samaneng.com,yjyoo,224320.jpg,be152914c9be1b72009becb38e76d6b50249ab94b15a40512fa9e7ac6770e446.jpg,90eaccac-05c0-4ed2-ab88-84acc70fce64,90eaccac-05c0-4ed2-ab88-84acc70fce64.jpg,Y +SAMAN,유영찬,ycyu@samaneng.com,ycyu,221254.jpg,b582dccb5a35d0b34ea7c0354c930a8b79347504621011faa2cb65d5bda43035.jpg,9273b3f9-56e3-4813-ad87-16253daabc1c,9273b3f9-56e3-4813-ad87-16253daabc1c.jpg,Y +SAMAN,유영춘,ycyou@samaneng.com,ycyou,196095.jpg,1c417d8d9dfed9ce5cb2a5f9cff23721151dc554bee7e54c8d6bcc2695ff29b6.jpg,b44074a0-464b-4e7f-8299-877d908c776c,b44074a0-464b-4e7f-8299-877d908c776c.jpg,Y +SAMAN,유원효,whyoo1@samaneng.com,whyoo1,224209.jpg,bd51bbf9d0c61894db308144430b77f008d6a6aff39ff0e81726d3919aa8f7d6.jpg,a6f93078-12f4-4e54-b896-482d27bec7f7,a6f93078-12f4-4e54-b896-482d27bec7f7.jpg,Y +SAMAN,유원희,whyou@samaneng.com,whyou,205202.jpg,3b9561e54d1f637075c1ae3f6b51dd9ed9420e44bbc068b3c34d2a9a514b3dfb.jpg,ca243276-0987-48d5-8522-f71e28b45b5a,ca243276-0987-48d5-8522-f71e28b45b5a.jpg,Y +HANMAC,유유민,ymyu@hanmaceng.co.kr,ymyu,M24013.jpg,8f2e79c28abea178e27c815324ca45116cddce24792870c2be316b04ef3cf9cc.jpg,260abb1d-f114-4ab0-a61f-f62c7505dbc2,260abb1d-f114-4ab0-a61f-f62c7505dbc2.jpg,Y +HANMAC,유재극,jkyu@hanmaceng.co.kr,jkyu,M20211.jpg,a41c70f04dbf0ccc483f017b15e342e38d2944db0c09f0bc1c3d7e6f7790c3e0.jpg,0ecdfc9e-2b76-4322-9d81-210b7e77b906,0ecdfc9e-2b76-4322-9d81-210b7e77b906.jpg,Y +SAMAN,유재무,jmryou@samaneng.com,jmryou,224192.jpg,5ed2a5679cf4709df228c053b13989c5f706e7555894f6aaf5cddce968c115b8.jpg,ec963e53-16da-4d6c-ab60-6c2735442f0a,ec963e53-16da-4d6c-ab60-6c2735442f0a.jpg,Y +SAMAN,유재민,jmyoo@samaneng.com,jmyoo,224240.jpg,2472df14973ab84994a1412dc70528eb105f0e34ba55477438ca2d5146a3e85e.jpg,9a87f258-6374-40cb-b7a3-31caea29cef7,9a87f258-6374-40cb-b7a3-31caea29cef7.jpg,Y +HANMAC,유재범,jbyoo@hanmaceng.co.kr,jbyoo,M16308.jpg,321cf6713a6b42fed28547f6a709bba949cabd30fcc52eef40560ae39a47bcd4.jpg,c74dafd1-4059-4cfe-bb95-f8e5284487c5,c74dafd1-4059-4cfe-bb95-f8e5284487c5.jpg,Y +SAMAN,유재봉,jbyou@samaneng.com,jbyou,226096.jpg,aa186395c21ba4180317e366dac16c0e19e76bdb2bc684db3a09ce89b94d1cf9.jpg,74c30785-1548-4721-bec1-ec2ae1ee7378,74c30785-1548-4721-bec1-ec2ae1ee7378.jpg,Y +SAMAN,유재산,jsyou@samaneng.com,jsyou,223081.jpg,8ad3e52b7e7afd53d4af8f6ac674e75ca79beefedb38b7f16ebb2f3b26f4bd49.jpg,3f4ef2c2-00a3-4810-ae76-70232279417c,3f4ef2c2-00a3-4810-ae76-70232279417c.jpg,Y +HANMAC,유재욱,jwyu@hanmaceng.co.kr,jwyu,B20334.jpg,63523d411033f08083704405d2ca4928cf0f167466b6aa069e99af4db759c6ac.jpg,951c8210-652c-4d44-960d-44d8a769b44e,951c8210-652c-4d44-960d-44d8a769b44e.jpg,Y +SAMAN,유재호,jhyoo@samaneng.com,jhyoo,220230.jpg,580592c3dd56c5a6063c4364269c273260d6e89e8ed69e2b1d8150b6fbb4281c.jpg,56f748ed-e394-4feb-ba94-db8b7b7b231d,56f748ed-e394-4feb-ba94-db8b7b7b231d.jpg,Y +HANMAC,유정진,jjyu@hanmaceng.co.kr,jjyu,M10502.jpg,7d236ef669d3dba27208657ed705fda4920ce3cbff6f566910c325017f4936a5.jpg,7a7b73b0-af19-4afe-89a0-728a8f9ec4c5,7a7b73b0-af19-4afe-89a0-728a8f9ec4c5.jpg,Y +SAMAN,유정호,jhlyu@samaneng.com,jhlyu,226147.jpg,3224a4da83d4257c9017e1dbca09bbc41c982cd6f98eeee0431f6c137be7d0b5.jpg,a89e215f-8c86-4f5c-886d-a457e6931683,a89e215f-8c86-4f5c-886d-a457e6931683.jpg,Y +SAMAN,유주연,jyyu@samaneng.com,jyyu,026052.jpg,45ba17c6b5ef1ec182b498bab08cb5ac25715af569c87a00e206bd7ced3205b1.jpg,139a9fc2-3d58-4c6e-82c3-1d6ffdda6599,139a9fc2-3d58-4c6e-82c3-1d6ffdda6599.jpg,Y +SAMAN,유준상,jsyoo@samaneng.com,jsyoo,219103.jpg,a64be97c2c544a02ffff18fd90f16020b303d1350c77070c189dd5a5628f7958.jpg,835cd628-ab8e-4f63-b767-4765be053dde,835cd628-ab8e-4f63-b767-4765be053dde.jpg,Y +SAMAN,유준희,jhyu@samaneng.com,jhyu,225094.jpg,d14e6abdedcb829513f6c40f98ccd3487dd52ff0f42a6ce8b06f7858e78d6b94.jpg,79e115a5-ffb2-4eb2-8730-216a9602c20b,79e115a5-ffb2-4eb2-8730-216a9602c20b.jpg,Y +HANMAC,유지성,jsyu@hanmaceng.co.kr,jsyu,M23037.jpg,5a80505e74a78f839ce7acb5e77c180911805f08441ca1eccbcb541eebb108bd.jpg,cb1cced5-edb8-45b8-a248-b6b577981773,cb1cced5-edb8-45b8-a248-b6b577981773.jpg,Y +HANMAC,유지훈,jhyu2@hanmaceng.co.kr,jhyu2,M25069.jpg,7b79260a4b8d005ab1753a3f04adaa35400948bdc7d9bcf679c5419497649f3d.jpg,5ca9dee7-32bb-43eb-9ea2-80868e53e1ed,5ca9dee7-32bb-43eb-9ea2-80868e53e1ed.jpg,Y +SAMAN,유차정,cjyou@samaneng.com,cjyou,223335.jpg,3799afb1ba2a0fa6b8bb57d43ad9556b343fc2b34104f8c99b4edd95fb1a9906.jpg,e6a73580-8931-4b22-822b-210a13eccb54,e6a73580-8931-4b22-822b-210a13eccb54.jpg,Y +HANMAC,유찬근,cgyu@hanmaceng.co.kr,cgyu,M25059.jpg,8cf26e72381c4e217a1761e1023636320c218799e80b75ff3879d68c4ba5335d.jpg,7aba45fd-4e0e-4b76-9fc1-f6387942e825,7aba45fd-4e0e-4b76-9fc1-f6387942e825.jpg,Y +HANMAC,류한규,hkryu@brsw.kr,hkryu,M02309.jpg,af12d4d3e98f1f91c36034fc8c02f6f8dee369284452b7834eae90bb63e97923.jpg,3625211a-4589-4c00-b2a1-1bcd8d2fee3f,3625211a-4589-4c00-b2a1-1bcd8d2fee3f.jpg,Y +SAMAN,유호진,hjyoo2@samaneng.com,hjyoo2,225055.jpg,d0d9b6905927165a6f2eab36713ff9bf4212158b9ba761d79e2c7bbc95d146eb.jpg,7d9dda6d-c510-4554-9561-bffd5e060e05,7d9dda6d-c510-4554-9561-bffd5e060e05.jpg,Y +SAMAN,유환주,hjyu@samaneng.com,hjyu,225297.jpg,2c17530ea20af41ca9c819595e34531661b2a33d03b1383808b3a017a928d4de.jpg,91bda724-5fb8-4753-a61d-3a337bbd530e,91bda724-5fb8-4753-a61d-3a337bbd530e.jpg,Y +SAMAN,유효식,hsyu@samaneng.com,hsyu,218151.jpg,c3c372d3d4a21c7262d62fdd096c499a906301e35e4a9e4197baf75dc4554de8.jpg,d3192bef-2b66-4592-83fe-3f46a52f4366,d3192bef-2b66-4592-83fe-3f46a52f4366.jpg,Y +SAMAN,유훈,hyoo@samaneng.com,hyoo,220243.jpg,83f9434c0de7ac6ae9e5a52eb354e1633fc508285db4236a2da96c7f98c38be2.jpg,1836a228-53eb-4b80-987a-126c40685d73,1836a228-53eb-4b80-987a-126c40685d73.jpg,Y +SAMAN,유희종,hjyoo1@samaneng.com,hjyoo1,218089.jpg,5848e53d0a30cc2bddae6014f765e651dc455957e12c4f8000fc024c0f40fe70.jpg,130a3316-5dd4-4da3-ba01-c43c81b03904,130a3316-5dd4-4da3-ba01-c43c81b03904.jpg,Y +SAMAN,윤경근,kkyoun@samaneng.com,kkyoun,225320.jpg,b4ff5c06c523005021badd02d8d546de4124faa22edcc4d1ab4aa4a9701386a2.jpg,45b67621-3ae6-42b7-bdbe-85b3d576bbce,45b67621-3ae6-42b7-bdbe-85b3d576bbce.jpg,Y +SAMAN,윤구순,gsyoon@samaneng.com,gsyoon,226083.jpg,a07a4c95052af3616beba4b97eab8aec34a7958242c7388808773b225490cbb1.jpg,e3216a61-90f9-45a8-8914-49520cc25871,e3216a61-90f9-45a8-8914-49520cc25871.jpg,Y +SAMAN,윤남선,nsyoon@samaneng.com,nsyoon,225003.jpg,810e43e23bd450ca0b7d22bcb18f679a1a6e7ae744b6bcb2d8998c11bc68c9aa.jpg,ab44494e-9a4f-48b6-8960-4642e8334f3a,ab44494e-9a4f-48b6-8960-4642e8334f3a.jpg,Y +SAMAN,윤대희,dhyoon@samaneng.com,dhyoon,217021.jpg,de908d5c81aea98b9bc7babbdf9a4c891e02402ac7d946a54e33988def86113c.jpg,07eac669-27b0-4684-ad56-0cbd50cefa0d,07eac669-27b0-4684-ad56-0cbd50cefa0d.jpg,Y +SAMAN,윤도현,dhyoon1@samaneng.com,dhyoon1,221016.jpg,ef01d7ddfd1dae63964ace270587c23452820bcbf0d753036b7f87359855eee8.jpg,34f0e2c2-fd28-430c-8138-96faaf4f9d1b,34f0e2c2-fd28-430c-8138-96faaf4f9d1b.jpg,Y +JANGHEON,윤두현,dhyun@brsw.kr,dhyun,J13305.jpg,0504fb5c1864d25bccbe0c065124e6bafcb3ab6f8fee27f5c41eddbeae3db82e.jpg,bf7e8bcf-5fd2-491d-bb21-e2dfd2207f28,bf7e8bcf-5fd2-491d-bb21-e2dfd2207f28.jpg,Y +SAMAN,윤만희,mhyoon@samaneng.com,mhyoon,221260.jpg,7f4144d8cfc21d07d9cbf8ef479f0b970f891597616b261df35ae6ec7da1402d.jpg,14ee9cfb-3f71-46c0-a0db-09ef51ca87e3,14ee9cfb-3f71-46c0-a0db-09ef51ca87e3.jpg,Y +SAMAN,윤미나,mnyoon@samaneng.com,mnyoon,221120.jpg,24ddee070dd1c5e3298bd919039c1d64e7cb010fa549a256c68cb27f9b28dcd7.jpg,aeecb5a7-24cc-4aa3-a4ff-6c6cdf98ebcb,aeecb5a7-24cc-4aa3-a4ff-6c6cdf98ebcb.jpg,Y +SAMAN,윤미정,mjyun@samaneng.com,mjyun,205034.jpg,d3ffe2c028b88700b6666540ccd264d5cb8abbb5d50676bd2c31468479350f5c.jpg,f860cfdc-71a7-4698-bd84-3f162b36366c,f860cfdc-71a7-4698-bd84-3f162b36366c.jpg,Y +HANMAC,윤봄이,biyun@brsw.kr,biyun,B24016.jpg,302157735d10bb7ded0558a317706472d2f20d9925ef3bacbde0a0cffaf218ae.jpg,544a6c8a-de45-440e-aa7d-f58c24a5b6f7,544a6c8a-de45-440e-aa7d-f58c24a5b6f7.jpg,Y +SAMAN,윤서호,shyun2@samaneng.com,shyun2,201025.jpg,ab7e9da0388ed7cb745104a127a93d20c7ffe40b43bebc845181d7819b8f0abb.jpg,a6c65c62-1131-43fb-9d9e-aa3a922d0329,a6c65c62-1131-43fb-9d9e-aa3a922d0329.jpg,Y +SAMAN,윤석무,smyoun@samaneng.com,smyoun,226049.jpg,cd4d344f7ee6f67bbc723b76ce5f469e8ec93333d828a1e94749b0a6cf40294f.jpg,7be88bd8-dfcf-4d9a-bc48-5887802d3b22,7be88bd8-dfcf-4d9a-bc48-5887802d3b22.jpg,Y +JANGHEON,윤선일,siyoun@brsw.kr,siyoun,J09302.jpg,ec8d655254a3d751797aa17c4f38d574480a69e559d9ccce1a90ccf5057f21fa.jpg,086f9b46-ee95-4e61-8725-db1d455c0f5c,086f9b46-ee95-4e61-8725-db1d455c0f5c.jpg,Y +HANMAC,윤선일,siyoon@hanmaceng.co.kr,siyoon,M23010.jpg,b31114af981eeed93e6235be39bb7e3a21be4e39c7a07aafa5d9fea900420596.jpg,ee0b1290-b453-4f88-8024-f3874661583d,ee0b1290-b453-4f88-8024-f3874661583d.jpg,Y +HANMAC,윤성욱,swyoon@hanmaceng.co.kr,swyoon,M22049.jpg,a61d02fca4ceec3b4a704cd985fb21a8ad1109dc1c9536f7d8acec128d57aa67.jpg,f4e70725-58b5-42f4-bdf4-eafd0ef8b638,f4e70725-58b5-42f4-bdf4-eafd0ef8b638.jpg,Y +PTC,윤성재,sjyoon@brsw.kr,sjyoon,P17201.jpg,0fff682e5af724f53f3cd75be372d73b54a66939ef5881dd3f908f8a3ed2138f.jpg,b6b65318-ad9a-4be7-86ce-708ba9fb8ab8,b6b65318-ad9a-4be7-86ce-708ba9fb8ab8.jpg,Y +HANMAC,윤성찬,scyoon@hanmaceng.co.kr,scyoon,B21321.jpg,099026cd836a236bd6559cd4879c7def0fab7f0b1c9e2643ae74f13e7dd74dad.jpg,214e7f01-a5d0-439c-a44d-61c19542b5ad,214e7f01-a5d0-439c-a44d-61c19542b5ad.jpg,Y +SAMAN,윤성현,shyoon1@samaneng.com,shyoon1,225119.jpg,f725612b9fe1d464267a4d156f629e3fc6050dce14daf9b0c7408e1af93030b7.jpg,5eedf4a2-d7fd-4f48-b17c-aca1af69345d,5eedf4a2-d7fd-4f48-b17c-aca1af69345d.jpg,Y +SAMAN,윤성호,shyoon@hanmaceng.co.kr,shyoon,216079.jpg,3c39bd6e44353e1161da7264c0ca0e6000b1391274d38775fbadfffbe8dcc9be.jpg,cdbf3703-56e9-4239-ac8a-c13e81017bea,cdbf3703-56e9-4239-ac8a-c13e81017bea.jpg,Y +SAMAN,윤성화,shyoon2@samaneng.com,shyoon2,221278.jpg,4de8b7967a1b42fd6fa42133347c64ab39a69d44d30c42a7c697e5f25b81143e.jpg,07320805-576d-47ce-8ff1-9b9af56e6868,07320805-576d-47ce-8ff1-9b9af56e6868.jpg,Y +SAMAN,윤수근,skyoon@samaneng.com,skyoon,223327.jpg,2001531cbe6470a628d978626b48a93634b54285311b2500335acef70edaeaab.jpg,47588091-330a-482f-9862-f0d526aa9cc8,47588091-330a-482f-9862-f0d526aa9cc8.jpg,Y +SAMAN,윤시중,sjyun@samaneng.com,sjyun,218157.jpg,45c437baaf9b9a4984c070de44e342773eadbb4d1a35d2c26a404df5b07935a0.jpg,8479163d-8578-4fbf-928b-f10b08f99ef6,8479163d-8578-4fbf-928b-f10b08f99ef6.jpg,Y +HANMAC,윤여길,ygyoon@hanmaceng.co.kr,ygyoon,M26009.jpg,3223dab214cc2f4461955caffdf34f2857eeb605701bb98392d987dff0c1ad6c.jpg,fd5081f8-978f-4c2b-bc45-ddfac762d6cc,fd5081f8-978f-4c2b-bc45-ddfac762d6cc.jpg,Y +SAMAN,윤여준,yjyun@samaneng.com,yjyun,225052.jpg,b4ca90e43a1f303681bf6e0d702cf3b8baa0313c8c00f698eec2cbab201b2a83.jpg,d79c12e8-8b59-40a5-be9f-42c82384c171,d79c12e8-8b59-40a5-be9f-42c82384c171.jpg,Y +SAMAN,윤영덕,ydyoon@samaneng.com,ydyoon,221301.jpg,436965a0972da20ccc029fed0ac24e066e174802544d57345eec6d2a965fd3b1.jpg,1dac7ddf-d4bb-4422-bcaa-4d67619cd724,1dac7ddf-d4bb-4422-bcaa-4d67619cd724.jpg,Y +SAMAN,윤영도,ydyun@samaneng.com,ydyun,225032.jpg,6cf6aa554e09ff419eba0c81d1e654e3f5b4b351c9bdf40e9ac5f5fe7c09dc96.jpg,87f2f5db-6bef-4d8e-9f86-47d9372fa0f8,87f2f5db-6bef-4d8e-9f86-47d9372fa0f8.jpg,Y +HANMAC,윤영주,yjyoon@hanmaceng.co.kr,yjyoon,B14303.jpg,606930137d7074a292945e8f3387670630643d45a7ffdf745a76f097e5f6e372.jpg,c6ac492a-d4f3-4fff-8409-b50e317ca793,c6ac492a-d4f3-4fff-8409-b50e317ca793.jpg,Y +SAMAN,윤용선,yysun111@samaneng.com,yysun111,217031.jpg,9729d1a5371618786db9bcf72348caea3ff1cf77ec24bce1f158b982524b31d0.jpg,67538929-cf43-449d-8b7b-d51ce6cf1045,67538929-cf43-449d-8b7b-d51ce6cf1045.jpg,Y +SAMAN,윤의혁,ehyoon@samaneng.com,ehyoon,222223.jpg,e3ae6e937a6c54c08b13fc2f1d517ab7621cf25b2df117b4cc0cee50c5c03457.jpg,4ce8ec45-fb67-4f45-9f5b-8b2ee5ef7121,4ce8ec45-fb67-4f45-9f5b-8b2ee5ef7121.jpg,Y +SAMAN,윤재효,jhyoon1@samaneng.com,jhyoon1,225039.jpg,56fbf4b2307f39ded3fe83c53eb9c9035a50f2670ebf434064e1fc1aff5de1dd.jpg,54f6b624-c75b-4cc0-aced-f1330942ab2a,54f6b624-c75b-4cc0-aced-f1330942ab2a.jpg,Y +SAMAN,윤정섭,jsyoon@samaneng.com,jsyoon,225344.jpg,fd4b9a189a9b452e9c75777d937b5f9389fcf67f5b8c4e0d1951622229a78e49.jpg,6d0795fe-9e54-4c80-b1e9-39630723fa98,6d0795fe-9e54-4c80-b1e9-39630723fa98.jpg,Y +SAMAN,윤정일,jiyun@samaneng.com,jiyun,222213.jpg,7f176d4bd57c989a9a453bba79e05ff447cb931606d6f4eb05f9d129d0b9d34c.jpg,1eef145c-6c23-4d29-a084-edf06b87ea58,1eef145c-6c23-4d29-a084-edf06b87ea58.jpg,Y +HANMAC,윤종대,jdyoon@hanmaceng.co.kr,jdyoon,M20405.jpg,c4d81823d0ac8001abc8f2e1e04d03a96ad8b2e0d23297ff64014b1e9ff3612f.jpg,6d953c3b-ad77-4396-a877-46371119e891,6d953c3b-ad77-4396-a877-46371119e891.jpg,Y +SAMAN,윤종춘,jcyun@samaneng.com,jcyun,222273.jpg,9ec55dc1124dc38f35a203bfd63faeba990b21fc17df02a3732584365d14a347.jpg,1b0dbcec-af44-4af5-ab61-5bb341c1e3d4,1b0dbcec-af44-4af5-ab61-5bb341c1e3d4.jpg,Y +SAMAN,윤주혜,jhyun@samaneng.com,jhyun,226066.jpg,5997cb80a9b50a5135bc585c3e9f88eacad5a36d1335d6743038e3091efb6462.jpg,c22facb8-7e2d-48c8-8141-3c49bab15c13,c22facb8-7e2d-48c8-8141-3c49bab15c13.jpg,Y +SAMAN,윤준수,jsyun@samaneng.com,jsyun,221293.jpg,412608e3692b24a47b29340df78106adc589e6c01b9c40ef1930a2489c00b5e3.jpg,475d0cc0-50af-4bcf-aa94-035a0ec0b0f0,475d0cc0-50af-4bcf-aa94-035a0ec0b0f0.jpg,Y +SAMAN,윤지헌,jhyoon@samaneng.com,jhyoon,221259.jpg,ae1f44c5d56eee5e4bd114bfe3834a288d846d2df48e02057067dbe2001ca60a.jpg,ab63cea1-311b-4a15-a20a-a1806ffeced0,ab63cea1-311b-4a15-a20a-a1806ffeced0.jpg,Y +SAMAN,윤찬영,cyyun@samaneng.com,cyyun,203055.jpg,ce6ecf1b1787855366748b786719d3381f51ef62b042765c53cb4aa2aeea0af2.jpg,8d660664-573c-45d7-b3da-7bc8914c374a,8d660664-573c-45d7-b3da-7bc8914c374a.jpg,Y +SAMAN,윤창한,chyoon@samaneng.com,chyoon,224310.jpg,9fc3fa52ba94069737b8f5aa0283e0d480a967ce33dce40b299e9e94a0f83a27.jpg,516dcd47-3417-41d5-b5ea-c63bcb84544e,516dcd47-3417-41d5-b5ea-c63bcb84544e.jpg,Y +SAMAN,윤채연,cyyoon@samaneng.com,cyyoon,219038.jpg,df2e5f2f6b73a225f5ec560954b1d34e9dee316ba87403737e1b273381c8438d.jpg,39d871b5-e097-4e77-8f3d-550d6ac8f68b,39d871b5-e097-4e77-8f3d-550d6ac8f68b.jpg,Y +SAMAN,윤철,cyun@samaneng.com,cyun,203056.jpg,f5ae45eed16d9ecb315e252d80268384ae27f7078f663f68e49292d64fde7e1d.jpg,90326114-920e-4880-95bd-ca4ec7a04072,90326114-920e-4880-95bd-ca4ec7a04072.jpg,Y +SAMAN,윤철원,cwyoon@samaneng.com,cwyoon,222148.jpg,01cd04c5af2f483d18b687daf76c5fe28194403e095d7351da6352d45894a7f3.jpg,bec7fb22-9985-4da6-b802-a266b066d4ca,bec7fb22-9985-4da6-b802-a266b066d4ca.jpg,Y +JANGHEON,윤충열,cyyun2@brsw.kr,cyyun2,J25601.jpg,c7caa0b9dabc35e578f26110a25421414b3bf390fbe53911ca6a2e4f3fed5104.jpg,a40aa2dc-f2b6-4791-96d3-3458ad64ae17,a40aa2dc-f2b6-4791-96d3-3458ad64ae17.jpg,Y +SAMAN,윤현경,hkyoon@samaneng.com,hkyoon,224057.jpg,4e3d8d6427fcdf48371d999fd70791300bf4cb0aa6eb789aeb27faeaa914ffb8.jpg,a426f9bc-6e04-4072-add2-7ad262f56cf6,a426f9bc-6e04-4072-add2-7ad262f56cf6.jpg,Y +SAMAN,윤현식,hsyun1@samaneng.com,hsyun1,212120.jpg,bf36b1a13aedfe5bb3454d2150b2d9317119af09be78b9195097c2ddb2d8af8b.jpg,870769eb-cde8-4425-8dc6-c7f343a92fc8,870769eb-cde8-4425-8dc6-c7f343a92fc8.jpg,Y +SAMAN,윤현우,hwyoon@samaneng.com,hwyoon,223030.jpg,01759c30270462146b48c382b85dc943740ea78a48efe551abba20cba17ba330.jpg,b0b9d1bc-8253-4520-a47e-a85fa64b64cf,b0b9d1bc-8253-4520-a47e-a85fa64b64cf.jpg,Y +HANMAC,윤현욱,huyoon1@brsw.kr,huyoon1,B25030.jpg,ba2eb9b8c9187a0c1caa60deff322a8d7c21262d32ea55db3d7f6b1e4af845c6.jpg,109d25d5-c066-4dad-abc9-f36d33cd7694,109d25d5-c066-4dad-abc9-f36d33cd7694.jpg,Y +HANMAC,윤현철,hcyun@hanmaceng.co.kr,hcyun,M23017.jpg,077a2173b89a98badf4f473ec55b2028a77cc8f005ded4039347519731f0eb53.jpg,92ba66fe-05f8-48d3-b42d-fe237136670f,92ba66fe-05f8-48d3-b42d-fe237136670f.jpg,Y +SAMAN,윤호연,hyyoon@samaneng.com,hyyoon,224124.jpg,d775062e0149cf96d5946a1dbe182d9ce220790db79c305c5ac8c6400738fc02.jpg,a016087e-5514-412b-9f37-54ab106b41c5,a016087e-5514-412b-9f37-54ab106b41c5.jpg,Y +SAMAN,윤호진,hjyoon@samaneng.com,hjyoon,216154.jpg,c86c6829845638afd77f39c61599bc1831cdf448610e16c915f792d2265c5301.jpg,d48becce-cb57-4f0b-a328-30e5fa2558db,d48becce-cb57-4f0b-a328-30e5fa2558db.jpg,Y +SAMAN,윤홍산,hsyun@samaneng.com,hsyun,194044.jpg,22c3822d59899abbe567a90d173b5be253583524377f22e6afa566a1d6c80e4c.jpg,c8d8b91a-0f13-4bfe-a2c1-f12a71a9ad9c,c8d8b91a-0f13-4bfe-a2c1-f12a71a9ad9c.jpg,Y +SAMAN,윤환진,hjyoon1@samaneng.com,hjyoon1,224027.jpg,b17ec3decc6e5d5e67408a228b6d576f9297d23f60ecb0d7461bac38946fa489.jpg,31e49b58-5cad-4900-ae64-e371948dccaf,31e49b58-5cad-4900-ae64-e371948dccaf.jpg,Y +SAMAN,윤황의,huyoon@samaneng.com,huyoon,223125.jpg,2d4baedc9604f8ff83d0c018d6c71dd0c5597eaed6776fdd63967699d3890c1c.jpg,2af99f20-5464-4dce-a498-ef68fc920f22,2af99f20-5464-4dce-a498-ef68fc920f22.jpg,Y +SAMAN,윤희민,hmyoon@samaneng.com,hmyoon,218162.jpg,98185a4a0ea41e17b5f5062f0cf087bad9d3e9f32b8a418819a0bec98e3669a6.jpg,39d3dbe3-9fd7-4749-ac4d-e701f82e41bb,39d3dbe3-9fd7-4749-ac4d-e701f82e41bb.jpg,Y +SAMAN,윤희섭,hsyun2@samaneng.com,hsyun2,223376.jpg,982925e1e6a84547f72e75422750da5ecae7ff8b0b83c1fce79aa2657090138d.jpg,37ae3666-da32-44bd-a3b5-4d496ea0eea0,37ae3666-da32-44bd-a3b5-4d496ea0eea0.jpg,Y +SAMAN,이가연,gylee1@samaneng.com,gylee1,223269.jpg,b5158cae903dbb2d43669bd39b9e143abded718b2c9afe941393d576fdd2923b.jpg,1215f1e8-08ff-4776-b954-f4948d020710,1215f1e8-08ff-4776-b954-f4948d020710.jpg,Y +SAMAN,이가현,ghlee3@samaneng.com,ghlee3,025097.jpg,2b08121515da7803adfe7d6ca322cb5752407bbd0da4fbc045c213f62416bd46.jpg,2096881d-9c21-4d4e-a5b4-86e4b2edca3c,2096881d-9c21-4d4e-a5b4-86e4b2edca3c.jpg,Y +HANMAC,이가형,ghlee5@hanmaceng.co.kr,ghlee5,M17209.jpg,eb0c1333b7c564473186b655341cea735ff2ed3528b4412cc9be84fabd0de134.jpg,cddf77fa-ed40-404a-95e8-c2e8a551541e,cddf77fa-ed40-404a-95e8-c2e8a551541e.jpg,Y +SAMAN,이강욱,kwlee@samaneng.com,kwlee,217154.jpg,88d8b7e54c11ae492413b67bb5ea8a942f2d4be9390350a4639d0dd05486697d.jpg,b5875b74-f677-41e2-a847-a1bb1f4f9328,b5875b74-f677-41e2-a847-a1bb1f4f9328.jpg,Y +SAMAN,이강준,gjlee@samaneng.com,gjlee,224375.jpg,0263c8179be30c98a1fdb252c7bf41288228bd45164f41ca7ec7827f6ba29784.jpg,6c21c864-704b-443d-a452-52d73fd07110,6c21c864-704b-443d-a452-52d73fd07110.jpg,Y +SAMAN,이건,glee@samaneng.com,glee,224020.jpg,855b4c653343152b87271238f96872b14530ab52363a757e203792db96894bd3.jpg,f43c4dad-20be-44b8-9d2f-45062d396dea,f43c4dad-20be-44b8-9d2f-45062d396dea.jpg,Y +SAMAN,이건기,kklee1@samaneng.com,kklee1,217101.jpg,3fe6a421d682fa1a83d15a2bcf8d91a079ab437224d0ba0c780f6b72bb375d00.jpg,07aceff7-c461-4780-8223-9064357cde66,07aceff7-c461-4780-8223-9064357cde66.jpg,Y +SAMAN,이건일,gilee@samaneng.com,gilee,225360.jpg,142b0cda3ea13d1f6329011a7649873402f410b07534dd0e408ef7a9105113e5.jpg,b0f1e43b-b069-408e-8b09-7ba98d139c46,b0f1e43b-b069-408e-8b09-7ba98d139c46.jpg,Y +SAMAN,이경록,krlee@samaneng.com,krlee,221242.jpg,0b8d77eb7d3fd6bbea5581503e9e95fb26b53100f19db706e5f544a0d5a7239c.jpg,a70e427e-f0be-471e-80bf-886105a1e5d9,a70e427e-f0be-471e-80bf-886105a1e5d9.jpg,Y +SAMAN,이경민,kmlee1@samaneng.com,kmlee1,224069.jpg,6b90e4a2643cf64a2aabe9b3879bf8ce1210f4ee3b2b180db9d3a3a972c75eeb.jpg,d441f043-75d7-43f8-88a7-1920681ae213,d441f043-75d7-43f8-88a7-1920681ae213.jpg,Y +SAMAN,이경민,kmlee2@samaneng.com,kmlee2,225116.jpg,53e83454481274f1d5f53330f891124a18b4da8699ae99ff5b889a1a87215eec.jpg,dc00cb18-57e6-4415-82ec-fbdaaa8d1420,dc00cb18-57e6-4415-82ec-fbdaaa8d1420.jpg,Y +SAMAN,이경임,kilee@samaneng.com,kilee,025019.jpg,2ae67f04326bc140bf81aa91cf2434c938e8695938fb5b7c03fda1959b116fc9.jpg,ba4bb7a3-a954-4f18-b329-eb24f1fbdc9d,ba4bb7a3-a954-4f18-b329-eb24f1fbdc9d.jpg,Y +PTC,이경환,khlee6@brsw.kr,khlee6,P25502.jpg,bfff978cc0cd8f2021d9b4f4e15f522732deacaab3e8e859574d3a234ae03ef4.jpg,ebdbea57-039b-432a-8978-ea5e8684bf89,ebdbea57-039b-432a-8978-ea5e8684bf89.jpg,Y +SAMAN,이경훈,khlee2@samaneng.com,khlee2,224081.jpg,4965d65233328847296bdf9640ae42fadbfd0b584c4cada78a5442dcaca4d7e9.jpg,31ae63da-a19f-43c0-a07f-5921117551d3,31ae63da-a19f-43c0-a07f-5921117551d3.jpg,Y +HANMAC,이경훈,khlee5@hanmaceng.co.kr,khlee5,M02107.jpg,29256a0acfeb702542889b6fde8fc2a607ae78007ddd60561950f5db935285b9.jpg,61e10484-1821-4926-b1bd-a7ea1fcea7dc,61e10484-1821-4926-b1bd-a7ea1fcea7dc.jpg,Y +SAMAN,이관행,khlee4@samaneng.com,khlee4,225309.jpg,3d7f60499a46fcb6c69d2cc31b74e1a3274d03502776abdb258a63ee136f4114.jpg,1ac04d6d-4294-463f-bc3b-893ad47c18c2,1ac04d6d-4294-463f-bc3b-893ad47c18c2.jpg,Y +SAMAN,이광래,krlee1@samaneng.com,krlee1,224160.jpg,7534d4115dd155af7db516f933d87903f4944d14f25177034731eeb0ee683ca1.jpg,84751128-2df1-4e6c-8546-d81c7923d1e5,84751128-2df1-4e6c-8546-d81c7923d1e5.jpg,Y +SAMAN,이광수,kslee2@samaneng.com,kslee2,221195.jpg,ffab5205aa074a760f185ebc445dab9f690119396737fa5fdb7006d9b04dbe47.jpg,935f3e4d-7f14-45a6-b70c-cfabae418144,935f3e4d-7f14-45a6-b70c-cfabae418144.jpg,Y +SAMAN,이광업,kulee@samaneng.com,kulee,225359.jpg,492f59e5cc96b43b636fb94c1d215e1ecf60a67e7f86f1afabe3efac7181bff4.jpg,b39d46cd-3e8c-4779-85e8-3d060c03b481,b39d46cd-3e8c-4779-85e8-3d060c03b481.jpg,Y +HANMAC,이광태,ktlee1@hanmaceng.co.kr,ktlee1,M13301.jpg,b5e75003edb237c31a03d8df44f6c4bc279928e2e63ece8e359ea233fdc6ac33.jpg,9268a1ba-7e5e-4a8f-ab85-611c26510193,9268a1ba-7e5e-4a8f-ab85-611c26510193.jpg,Y +HANMAC,이교호,ghlee6@hanmaceng.co.kr,ghlee6,M23005.jpg,a5024b54e93b9a33b156f1646cb2b69adfdd998d56f2582474b21eec12a2eb40.jpg,a670ef4a-8d61-4138-884d-f2f1e976072b,a670ef4a-8d61-4138-884d-f2f1e976072b.jpg,Y +SAMAN,이구화,ghlee2@samaneng.com,ghlee2,223362.jpg,79778d5cf2945993682da2f88a07273194079892c5b28a331b9e23bf7dad79a0.jpg,2535e6f5-20ac-4def-bd8d-00c38340f55a,2535e6f5-20ac-4def-bd8d-00c38340f55a.jpg,Y +PTC,이권수,kslee1@brsw.kr,kslee1,P15101.jpg,9e8ac64de26c531a9de540782e47e07b993d7a7c88dfac716881abbdce9c493d.jpg,726cd8f5-dd80-4e7f-8f0b-836e8a24bf5b,726cd8f5-dd80-4e7f-8f0b-836e8a24bf5b.jpg,Y +SAMAN,이귀웅,gwlee@samaneng.com,gwlee,220006.jpg,62a6f211fa77cbbfdd92e96497a35e8daef0d69d0d2d8dbbb839632a0093a308.jpg,cd4a02ab-3a11-48dd-a80a-2821c9eb0015,cd4a02ab-3a11-48dd-a80a-2821c9eb0015.jpg,Y +HANMAC,이규,glee2@hanmaceng.co.kr,glee2,M26027.jpg,9aed21b9a20868f8b728573a51929d06f90360d2a064c00c3c6ee3c390fe6713.jpg,2c1e7e04-63f0-4ba9-9e82-4ba94008ce42,2c1e7e04-63f0-4ba9-9e82-4ba94008ce42.jpg,Y +HANMAC,이규남,knlee@hanmaceng.co.kr,knlee,M21102.jpg,577b37536d1ef60412cb2210a24f9b24ea427ba686c7a292048994449b2b1a1e.jpg,2ce1a778-f859-4c55-a24d-efda293c848e,2ce1a778-f859-4c55-a24d-efda293c848e.jpg,Y +SAMAN,이규수,kslee@samaneng.com,kslee,223140.jpg,b43c90e867b4fb93dc354b01ada743521a4268b94d098e39f482e7fb045123cc.jpg,0d8dd493-3342-4c6e-ba48-58ad13c143f4,0d8dd493-3342-4c6e-ba48-58ad13c143f4.jpg,Y +SAMAN,이규호,ghlee@samaneng.com,ghlee,224173.jpg,1a228b65f0e84fe422f9d1624acfdeea007d5f457ce7a2fa374bd87d3a117bab.jpg,5cdb5b42-1cec-4087-be32-a91d2c663368,5cdb5b42-1cec-4087-be32-a91d2c663368.jpg,Y +SAMAN,이근호,khlee@samaneng.com,khlee,225199.jpg,1d8230e61f36c80f6a5fd61e0a9f6286dafab174072b40e7b9bc9d5f97518c35.jpg,90842be3-e789-460f-8c2b-4304f236852a,90842be3-e789-460f-8c2b-4304f236852a.jpg,Y +SAMAN,이긍희,ghlee4@samaneng.com,ghlee4,226034.jpg,6563e6b0b2a7de7c5ed5d2a89d51ad98083ce31df37ec6d4fa21973209645bab.jpg,63538c64-4df6-4ed7-b75b-3109338d60c2,63538c64-4df6-4ed7-b75b-3109338d60c2.jpg,Y +SAMAN,이기민,kmlee@samaneng.com,kmlee,222006.jpg,deac5bb5ba42ba7fc528ce8a41f185f6dc6212134172ab48f45bd165585252e1.jpg,45e50685-84ef-4654-b5c3-afb97b4c9e8f,45e50685-84ef-4654-b5c3-afb97b4c9e8f.jpg,Y +SAMAN,이기영,kylee@samaneng.com,kylee,220223.jpg,aed9fabb2dca25ba7e083dfdd84cbe8ec8c56fd75e8d63bb51a319fc861f8904.jpg,be45a1c7-b54d-49e6-ad03-6ee1b351f50d,be45a1c7-b54d-49e6-ad03-6ee1b351f50d.jpg,Y +SAMAN,이기영,kylee2@samaneng.com,kylee2,222026.jpg,812db36ada200a032b0ac4b85fc6c210e9be96a2f1f5d150a55e92f91dec0e36.jpg,c57c18da-0846-4473-803d-a6bde8928940,c57c18da-0846-4473-803d-a6bde8928940.jpg,Y +SAMAN,이기윤,gylee@samaneng.com,gylee,223028.jpg,cab32614943655fd6ea50865b9a83679eec00a5626e27c7b396ab8cdb6efbb87.jpg,3ceba726-eb86-4e8d-878d-8c9f09f788b6,3ceba726-eb86-4e8d-878d-8c9f09f788b6.jpg,Y +HANMAC,이기종,kjlee2@hanmaceng.co.kr,kjlee2,M06505.jpg,58489feabbf0a19a6b474a1b99ec2514406d8cf5ddb9b35a9bdbf97c7365b97d.jpg,7aa4180d-6d5b-437a-a3f8-e0b9bfe92db9,7aa4180d-6d5b-437a-a3f8-e0b9bfe92db9.jpg,Y +HANMAC,이기주,kjlee@hanmaceng.co.kr,kjlee,M15207.jpg,f536812e8b387bfc870b6b48c35107ded8b117de445907808cd6393568c32a09.jpg,a58e379e-215a-494b-ab4d-6ccb574266e3,a58e379e-215a-494b-ab4d-6ccb574266e3.jpg,Y +SAMAN,이기태,ktlee@samaneng.com,ktlee,219107.jpg,4cc7527671ba3d69d533c1a8bb80a143d93f0b8e6d8c5c05ad9cc47e881b1fa7.jpg,fa93d9ff-7a55-4e52-8078-aeb63a6eab1b,fa93d9ff-7a55-4e52-8078-aeb63a6eab1b.jpg,Y +SAMAN,이기호,khlee3@samaneng.com,khlee3,222236.jpg,70e265e6a7991d77028c0597b4bc7ce97290baefb1767ddd285e0951c4a45663.jpg,df5b42d8-45c4-4cd9-a70b-35aded08f729,df5b42d8-45c4-4cd9-a70b-35aded08f729.jpg,Y +SAMAN,이길도,kdlee@samaneng.com,kdlee,212076.jpg,82a4c9f1be451581bd69d0564771d8401c3c26cc24f20b9844d907dc5e3fcc71.jpg,f69eedfc-9925-432c-9973-0e8625b4fc8d,f69eedfc-9925-432c-9973-0e8625b4fc8d.jpg,Y +HANMAC,이난희,nhlee@hanmaceng.co.kr,nhlee,M25044.jpg,e8aec52d8423915294123480565a8afa664588b07122a44ec3dfde8b0066d5be.jpg,2f9b53e5-d395-41ad-b196-e4cfd956c925,2f9b53e5-d395-41ad-b196-e4cfd956c925.jpg,Y +SAMAN,이남천,nclee@samaneng.com,nclee,224266.jpg,0b1ab1c04a4fed13bddf5717af1aa918a838a10c0d2a6e63ff4beb09316286ce.jpg,46d75a5e-bfc1-413e-b90c-a9c87b3e0d5b,46d75a5e-bfc1-413e-b90c-a9c87b3e0d5b.jpg,Y +HANMAC,이다빈,dblee@hanmaceng.co.kr,dblee,M25011.jpg,cf81d476d3a33f5b18fecb5cdc08b0440334744493a5ea81fcb99669b5e28914.jpg,01767452-aea2-4fee-b50b-62f6da183d01,01767452-aea2-4fee-b50b-62f6da183d01.jpg,Y +SAMAN,이다솜,dslee2@samaneng.com,dslee2,024017.jpg,f1dd4fc5f36e9fbca03affed1c122073390b455b2ac1eaae990cfcdf584a2962.jpg,809db378-136b-4e80-b5bd-7f5abf010e2b,809db378-136b-4e80-b5bd-7f5abf010e2b.jpg,Y +SAMAN,이대우,dwlee@samaneng.com,dwlee,222134.jpg,ec9dd9191b148064d4b13402a262cc57a478ea380e996f72b0de903185fdb0ee.jpg,ee48a172-b869-47b4-915f-0a43767d26f6,ee48a172-b869-47b4-915f-0a43767d26f6.jpg,Y +SAMAN,이대욱,dulee@samaneng.com,dulee,223174.jpg,127a3ce64bffd174666bcd9390ba2c3b74d5558a24d85d7091e960a9a52846a7.jpg,5ecf9b36-07a4-4eb3-84f6-227a81185812,5ecf9b36-07a4-4eb3-84f6-227a81185812.jpg,Y +SAMAN,이대주,djlee@samaneng.com,djlee,222260.jpg,4bfc5c1047673ff3bf493a8d44f4393a449a59ccf703618ec5f7e0d33002288e.jpg,661a9dab-9cea-46e8-8b19-d63fc1bca44c,661a9dab-9cea-46e8-8b19-d63fc1bca44c.jpg,Y +SAMAN,이도근,dklee1@samaneng.com,dklee1,209118.jpg,75521160545cf4239fb1053e1c3e47d6b47f777f92f58ddef969131a320509ab.jpg,dc727939-ec23-404e-a2d3-7c907e8478ad,dc727939-ec23-404e-a2d3-7c907e8478ad.jpg,Y +SAMAN,이동렬,dllee@samaneng.com,dllee,222116.jpg,30876ec32ce80b66c2dc081bb79f2befbf34b98a4c40452b9ab3998638a78bfc.jpg,62142a80-c807-4278-94a1-b5a5ad939910,62142a80-c807-4278-94a1-b5a5ad939910.jpg,Y +SAMAN,이동석,dslee@samaneng.com,dslee,225364.jpg,752662c642afcf3bb0bf64d8929a3da25b0ceaf27e1a1c946faaaee662e6f4bc.jpg,f0ac6533-2ffc-4edc-bd7d-9bebb3b6bd20,f0ac6533-2ffc-4edc-bd7d-9bebb3b6bd20.jpg,Y +HANMAC,이동선,dslee4@hanmaceng.co.kr,dslee4,M26020.jpg,2c6281773c582a44e1a98c8f28d313da41eee107c2021f856d1c1abb306f47a9.jpg,eb65f8dd-c718-4348-a80a-d5c0d8517543,eb65f8dd-c718-4348-a80a-d5c0d8517543.jpg,Y +HANMAC,이동식,dslee3@hanmaceng.co.kr,dslee3,M23011.jpg,c491f2756ab5517aa994d4aba5b785b112126d17409ab098cf271597dbd8fcfa.jpg,ea790ecc-28de-47a2-a088-bd9382c02273,ea790ecc-28de-47a2-a088-bd9382c02273.jpg,Y +SAMAN,이동엽,dylee1@samaneng.com,dylee1,222210.jpg,65d17cc3f6b93219f5bfbd06a76caf36f3ecb544ef556ba6c9ccff92ef9b1a69.jpg,4c2e5a14-0274-4394-8820-9639a769dea9,4c2e5a14-0274-4394-8820-9639a769dea9.jpg,Y +SAMAN,이동영,dylee@samaneng.com,dylee,217085.jpg,ab8792e5aac0311d1696b90c7c62280631ac1bdcb9e8ef16137708501d5c2466.jpg,17c4ff6c-4572-49a9-8ba3-5aef7e229c5e,17c4ff6c-4572-49a9-8ba3-5aef7e229c5e.jpg,Y +SAMAN,이동우,dwlee3@samaneng.com,dwlee3,223008.jpg,73d8fdac0a216c5afdccd1225159ec3e90ab1423a5a2e732e40d4f01f06f6b6f.jpg,c77cce06-5971-43b8-9c64-d50e09d4f55b,c77cce06-5971-43b8-9c64-d50e09d4f55b.jpg,Y +SAMAN,이동욱,dwyi@samaneng.com,dwyi,224149.jpg,619ef7d27bf965e0e8430a4b5dd112500d94c76d0f64456a8329cd5d6c89012c.jpg,fe4a8b9c-5c2a-488d-b4f7-7470b14f5d4b,fe4a8b9c-5c2a-488d-b4f7-7470b14f5d4b.jpg,Y +HANMAC,이동욱,dwlee4@hanmaceng.co.kr,dwlee4,M20104.jpg,9c1e8a0720b3cf6b1df28ec3ac99fb2c6c4d883c5229fcf0f7e46542f3dcbb71.jpg,8adb9bf1-3250-4e23-b819-420cf424c1ac,8adb9bf1-3250-4e23-b819-420cf424c1ac.jpg,Y +SAMAN,이동원,dwlee2@samaneng.com,dwlee2,219152.jpg,dac1c357a55a2aa9f7ce39e371bc2a604bb58aba7d2e23eca9cabc47f5c9c3a4.jpg,4b3572c4-e089-4037-b564-a7245b1e2e7d,4b3572c4-e089-4037-b564-a7245b1e2e7d.jpg,Y +SAMAN,이동윤,dylee2@samaneng.com,dylee2,220073.jpg,12fb9766e16710cb98a25808d00c3d1b3827d02fe81ae0b5e5608fa71c87141c.jpg,12d45fee-e5f7-4c07-9385-4fc3d9fb69b6,12d45fee-e5f7-4c07-9385-4fc3d9fb69b6.jpg,Y +SAMAN,이동준,djlee1@samaneng.com,djlee1,224098.jpg,40e003b953fe4b2987f18f25e31eaa0312e8ad26c9d221122c1021ffb42559cf.jpg,3f9cf4ca-0d52-4e19-a8cd-d5b51881e655,3f9cf4ca-0d52-4e19-a8cd-d5b51881e655.jpg,Y +HANMAC,이동준,djlee2@hanmaceng.co.kr,djlee2,M20205.jpg,a471fbc6fb3e7ce6520da6c66cb51355826ffe79e97f16ace0e7219458587f54.jpg,67c01816-ad5f-4261-8082-42c6a4d7bc38,67c01816-ad5f-4261-8082-42c6a4d7bc38.jpg,Y +SAMAN,이동하,dhlee1@samaneng.com,dhlee1,226022.jpg,fb5470cf0427565a334cb0dd786353929a8f48f0b870d1a67f4c6ceb508ee465.jpg,ea8d07a4-8638-4ef6-b4a8-a1e7a2882f65,ea8d07a4-8638-4ef6-b4a8-a1e7a2882f65.jpg,Y +SAMAN,이동현,dhlee3@samaneng.com,dhlee3,224108.jpg,7e4a317235c626c0a275471b5d9fadc34550324c4957774e89ae7cf9933ff947.jpg,6c796029-f9b7-42b3-b3b2-69dff3fa512d,6c796029-f9b7-42b3-b3b2-69dff3fa512d.jpg,Y +SAMAN,이동현,dhlee5@samaneng.com,dhlee5,224187.jpg,1c8332b18af6c3f41ba8537fc73562bf5503b66fc94c6b8166db5762e18bb5e2.jpg,d5f0c122-3d9c-446f-82e8-ad00df7b0e65,d5f0c122-3d9c-446f-82e8-ad00df7b0e65.jpg,Y +SAMAN,이동호,dhlee@samaneng.com,dhlee,220047.jpg,ec5fc33fe7d80def6a806a88fa7604af4bbd3755c747f52cf014c13426be47d8.jpg,1b77f0b8-6a8d-4a44-988c-42abbe093086,1b77f0b8-6a8d-4a44-988c-42abbe093086.jpg,Y +HANMAC,이동훈,dhlee8@hanmaceng.co.kr,dhlee8,M03201.jpg,6202e29b496e73d983941f84810e4098298892ef1c3084d3b34799af70f0f3a1.jpg,9d47d1ff-f238-4a5e-aa73-5bc52f86f6c3,9d47d1ff-f238-4a5e-aa73-5bc52f86f6c3.jpg,Y +HANMAC,이동희,dhlee7@hanmaceng.co.kr,dhlee7,M16504.jpg,78cba1c345409cb6fdb0d5729c58903bfa3be555ae4f720536eb1ed4ac515f32.jpg,c4bbb75d-c636-426d-85e6-e0a8d94dfe62,c4bbb75d-c636-426d-85e6-e0a8d94dfe62.jpg,Y +SAMAN,이득수,dslee1@samaneng.com,dslee1,226103.jpg,b2bdb4151c94765e052e0c55cfcdc6f5f2316815d7f6fd02429017767d633b0c.jpg,cb7c6a34-90a8-4d1a-a865-2e430792fb11,cb7c6a34-90a8-4d1a-a865-2e430792fb11.jpg,Y +SAMAN,이만석,mslee@samaneng.com,mslee,222194.jpg,f37bdeda294b572dd2c484ea7a3f3b79d2fd467a10cd6dbc15862c3195f97fd7.jpg,3d583443-d050-4d4a-ace9-cff9b3aa8a56,3d583443-d050-4d4a-ace9-cff9b3aa8a56.jpg,Y +SAMAN,이만희,mhlee3@samaneng.com,mhlee3,218110.jpg,f8cecbbf15d11df6a9c83cd8aae966645a60d302c9ab5eeaae6febdf33996ffb.jpg,4a0830ba-f060-4105-b4d5-fdcf702fbe7e,4a0830ba-f060-4105-b4d5-fdcf702fbe7e.jpg,Y +HANMAC,이명진,mjlee2@hanmaceng.co.kr,mjlee2,M24023.jpg,56558b80ef9fbc3ad0abf4bbbaad8898f8137e1367956c851df8a7d4131af15a.jpg,2dea4d6a-7070-486d-bbad-ee4c746384b7,2dea4d6a-7070-486d-bbad-ee4c746384b7.jpg,Y +SAMAN,이명철,mclee@samaneng.com,mclee,217034.jpg,25ba594177dce6e8070dd774d38d8863a45c054333330197b369c0aa6d99263c.jpg,082f8887-d575-4dd2-ad88-0d56d1b697eb,082f8887-d575-4dd2-ad88-0d56d1b697eb.jpg,Y +SAMAN,이명회,mhlee4@samaneng.com,mhlee4,225008.jpg,ac859a3c11dbc4a086f578862c14b0925594541f4ff24daa27283cf033fab076.jpg,944a0f57-f7dd-455a-9d74-b296962600ff,944a0f57-f7dd-455a-9d74-b296962600ff.jpg,Y +SAMAN,이문영,mylee1@samaneng.com,mylee1,223318.jpg,71aece7f465af972229428a7c13e2d643048c5d290d4ad08065f8c05d0821c7d.jpg,c0a5f5fe-0515-45aa-8cf0-d53ab420da01,c0a5f5fe-0515-45aa-8cf0-d53ab420da01.jpg,Y +SAMAN,이문희,mhlee@samaneng.com,mhlee,224068.jpg,f029e55f90526beb15823b86662971eda7f6d9bd4291d267b424119472f739fb.jpg,73f9cb4b-60e0-4d70-a63c-e1ebae15baa1,73f9cb4b-60e0-4d70-a63c-e1ebae15baa1.jpg,Y +SAMAN,이미영A,mylee2@brsw.kr,mylee2,222175.jpg,6aaab38d03e83574b4abef2afa5f33552bec976f5c93151ba6cf761967397cc5.jpg,e076518c-c3fc-43f1-bc02-72e95d1ee46b,e076518c-c3fc-43f1-bc02-72e95d1ee46b.jpg,Y +SAMAN,이민규,mklee@samaneng.com,mklee,224398.jpg,2b2f917caf6eb838ffca79d825af5cc6c68ff536d2fcfc1b2629dc648973dc8e.jpg,b23af7de-84ad-4211-8017-2e04f9ec09fd,b23af7de-84ad-4211-8017-2e04f9ec09fd.jpg,Y +SAMAN,이민애,malee@samaneng.com,malee,223164.jpg,11986f8a3fed312228203f4ac01515244300e6daddd3bf7bb5215ac2c6664b49.jpg,0b5e75aa-7644-4d23-948a-0d643fecd562,0b5e75aa-7644-4d23-948a-0d643fecd562.jpg,Y +SAMAN,이민지,mjlee@samaneng.com,mjlee,224392.jpg,1c3463b5c9301463f898eff750f44d9ed3432d1f66df6f28c4dcaf8d6b7dcd0d.jpg,cb24e012-db7f-435c-a1d8-5ab4c2a8e4ec,cb24e012-db7f-435c-a1d8-5ab4c2a8e4ec.jpg,Y +SAMAN,이배성,bslee1@samaneng.com,bslee1,220237.jpg,ca734a811857d2edbb8b9ccd963851440351217690f5628cdbb46f825668fb87.jpg,e8c786b5-bf9b-4352-9753-e8223331f437,e8c786b5-bf9b-4352-9753-e8223331f437.jpg,Y +TDC,이배승,bslee2@brsw.kr,bslee2,B25031.jpg,81f931388c85da0ec18cac730231827f58e5338cb1bf4751d472af413d5c557e.jpg,0dca6e36-66e1-485c-88bb-f0566ee30068,0dca6e36-66e1-485c-88bb-f0566ee30068.jpg,Y +SAMAN,이범기,bglee1@samaneng.com,bglee1,225138.jpg,bd5f180e200b04c16f98c23b561bebdc8c94502b294b9018a882ab927bb2a1e3.jpg,ebab36d1-52e4-47ce-b86e-70b2f1c4260e,ebab36d1-52e4-47ce-b86e-70b2f1c4260e.jpg,Y +SAMAN,이범주,bjlee2@samaneng.com,bjlee2,206131.jpg,45967dcafc49d3068d801ea45de26de67611b31dc5d24a837b3ac3a15d73a2a2.jpg,a9480d48-6ab8-47cf-9c9d-c918943e3d9d,a9480d48-6ab8-47cf-9c9d-c918943e3d9d.jpg,Y +SAMAN,이범주,bjlee@samaneng.com,bjlee,219176.jpg,c202f64f87dada0457ff7a4e54203768bfafee1ced7eb5e4acaf47529d7a54d2.jpg,a329f62d-6a51-40a6-9d60-3cf913976bea,a329f62d-6a51-40a6-9d60-3cf913976bea.jpg,Y +HANMAC,이병권,bglee2@brsw.kr,bglee2,B21369.jpg,f524b2f4a365e87bfe620d9c66597a163f3e364afe2f05b69d930c4fbecde538.jpg,b293b5e5-4c24-4e62-bd0b-952ab2d8d044,b293b5e5-4c24-4e62-bd0b-952ab2d8d044.jpg,Y +HANMAC,이병도,bdlee@hanmaceng.co.kr,bdlee,M20101.jpg,293db08820c96169ab2e9b536605b651ca685252b3299bb9f2c11f9f7b4fe469.jpg,8a7be2d2-55bc-492c-a410-cf886e6aad1e,8a7be2d2-55bc-492c-a410-cf886e6aad1e.jpg,Y +SAMAN,이병민,bmlee1@samaneng.com,bmlee1,221126.jpg,306f1f3056d789ed41e5e28ddddb4ce75f902f221ef4418972c355d7587e33b9.jpg,1d4c110d-98d2-4b0a-824c-7a88a35449a2,1d4c110d-98d2-4b0a-824c-7a88a35449a2.jpg,Y +SAMAN,이병설,bslee@samaneng.com,bslee,214011.jpg,7e98a394a3a90058871f67f11185736f133715e118de404bdc004e7a1b7845d6.jpg,542f6860-a4de-4f43-898e-4ef8d730e02e,542f6860-a4de-4f43-898e-4ef8d730e02e.jpg,Y +HANMAC,이병욱,bwlee2@hanmaceng.co.kr,bwlee2,M16216.jpg,169bfa26d2d56abd47cbcfb7846a5ae0f1635334b8f0ccb1b60fa0f090ab873d.jpg,3617c973-3401-4cc4-ac0e-0b3c773c5e04,3617c973-3401-4cc4-ac0e-0b3c773c5e04.jpg,Y +HANMAC,이병욱A,bwlee1@hanmaceng.co.kr,bwlee1,M25013.jpg,f2cd5ce268b2d952112a503dd3e7be2ca37fe3f76c34091078c2aa346a8c7a08.jpg,0ae23eec-bb61-427c-9c16-bedad058c25d,0ae23eec-bb61-427c-9c16-bedad058c25d.jpg,Y +SAMAN,이병찬,bclee1@samaneng.com,bclee1,223137.jpg,345394c4cca8ae7cea13b79dada0d2b90edb870a9eef6449c9720f9efc16af6e.jpg,07134399-611b-49d3-9408-e0ededeee0cb,07134399-611b-49d3-9408-e0ededeee0cb.jpg,Y +SAMAN,이병철,bclee@samaneng.com,bclee,219171.jpg,ee3f2bf0865bbef81db1fcd88d55bfe5b0325c6fa6114837356ba9fc70ec0da3.jpg,d83d8bc7-5d75-4490-aa5e-e362e7384923,d83d8bc7-5d75-4490-aa5e-e362e7384923.jpg,Y +HANMAC,이병화,bhlee@hanmaceng.co.kr,bhlee,M21428.jpg,fc4c0576a14180657984142c6333df1cc2bb085a1b55cfb145149ff82a42e3e8.jpg,9c68a21e-1c60-4c50-9639-322bb07d03c7,9c68a21e-1c60-4c50-9639-322bb07d03c7.jpg,Y +SAMAN,이보영,bylee@samaneng.com,bylee,222051.jpg,ef0664ddbe7bfdcaa7ebe7bc815a267db4b52cb57aba5ef76fd512d3cf3177ce.jpg,fa5466dd-1942-454b-9ce0-36f32a9ee0a1,fa5466dd-1942-454b-9ce0-36f32a9ee0a1.jpg,Y +SAMAN,이보용,bylee1@samaneng.com,bylee1,222191.jpg,e21faeb74814c477813dcf70d0922f2b1dbeaa4faef7fe4445bc377eac94a027.jpg,4bdef757-99c8-4ec4-9bad-576a6c6137c8,4bdef757-99c8-4ec4-9bad-576a6c6137c8.jpg,Y +SAMAN,이봉우,bwlee@samaneng.com,bwlee,219148.jpg,024f6c8fbfeedf8f6f0762911a28767f86c09458a0cf82552b892808375f5cf5.jpg,7e0c7a36-4646-4afa-ad56-c5bf035e56d1,7e0c7a36-4646-4afa-ad56-c5bf035e56d1.jpg,Y +SAMAN,이상길,sgyi@samaneng.com,sgyi,216111.jpg,07ab59e476a1165282c8e8ade7d719d4294729c24fd8153ca136bedccc92c2f6.jpg,e7ab23de-01ea-4662-9fd5-faa48db16f19,e7ab23de-01ea-4662-9fd5-faa48db16f19.jpg,Y +SAMAN,이상덕,sdlee1@samaneng.com,sdlee1,225176.jpg,b2dc6e92b4c1f9061db5e64db56d902b4e028a29662b2d498000c89d92475b18.jpg,6405b9e8-34cf-48d0-a0b4-38e17e85dad5,6405b9e8-34cf-48d0-a0b4-38e17e85dad5.jpg,Y +HANMAC,이상록,srlee2@hanmaceng.co.kr,srlee2,M26002.jpg,1d0b91d218190f89d97f1cd1c26653af266c3107f72ed8178278e4b16b21ade9.jpg,57fb15a4-4d90-4452-bd24-064dfbac5a99,57fb15a4-4d90-4452-bd24-064dfbac5a99.jpg,Y +SAMAN,이상룡,sylee2@samaneng.com,sylee2,220091.jpg,c16c2ea0098a02d9c11aa62345e8656c154c030e6a4e830b57cb5901ed06bd94.jpg,10ae4d66-dda0-4179-93e8-bb8971860eec,10ae4d66-dda0-4179-93e8-bb8971860eec.jpg,Y +SAMAN,이상만,smlee1@samaneng.com,smlee1,219163.jpg,ece2fd1da61fb466f7fe903fa477f71ccd86728eed543afb747df949fc2f43af.jpg,7e3c6df1-d9b4-4cb5-864f-1174d441d20c,7e3c6df1-d9b4-4cb5-864f-1174d441d20c.jpg,Y +SAMAN,이상범,sblee@samaneng.com,sblee,201048.jpg,3f824235f2afbe3d4b0b77b41c7e9833137ea3f3cb07f1cde213c433cf71aa7d.jpg,44688aa6-c6ed-41a0-9161-5f5f34bea650,44688aa6-c6ed-41a0-9161-5f5f34bea650.jpg,Y +SAMAN,이상복,sblee4@samaneng.com,sblee4,226132.jpg,34bd9508ccfe6c2edca1f078368ebb1047e9e23c2d6ca2429c9fb3241cef8ad2.jpg,d0f6209f-0edd-45e6-9f56-86483d83f61c,d0f6209f-0edd-45e6-9f56-86483d83f61c.jpg,Y +HANMAC,이상세,sslee2@hanmaceng.co.kr,sslee2,M23048.jpg,9bed29e0118d5c11e1cbb86beb60ce8250925289feea4d2f17b1d05a96d53a25.jpg,740fcdbf-3bc8-44cf-99dc-f60be78577c1,740fcdbf-3bc8-44cf-99dc-f60be78577c1.jpg,Y +SAMAN,이상술,sslee@samaneng.com,sslee,224218.jpg,d3acb1c05fad98008e495d828be77ed1a22738133a8909d7631ade4700bff274.jpg,81efd6b2-2ba9-4af4-954b-8eff6059dc88,81efd6b2-2ba9-4af4-954b-8eff6059dc88.jpg,Y +SAMAN,이상언,selee3@samaneng.com,selee3,225154.jpg,042233ddaa0dc6bb2e3127e152db0bce2e951eb9c4ac881af5e13953090d8374.jpg,051cf594-b911-4883-8934-3444817257e4,051cf594-b911-4883-8934-3444817257e4.jpg,Y +SAMAN,이상열,sylee8@samaneng.com,sylee8,216104.jpg,74394661d78fe854112af6e8c5641ccb544c3b810bdfa5a32e4d3e7c6fda02a4.jpg,ff5fb965-ba0e-4523-8e55-ec9d157abc4a,ff5fb965-ba0e-4523-8e55-ec9d157abc4a.jpg,Y +SAMAN,이상엽,sylee@samaneng.com,sylee,220219.jpg,162930e6f85354913180b60321bf04022393a4ae7dc6431ab298da39f6fe5eae.jpg,70b40a52-f6da-42cb-b888-934bbda22647,70b40a52-f6da-42cb-b888-934bbda22647.jpg,Y +SAMAN,이상엽,sylee9@samaneng.com,sylee9,222085.jpg,ef65b1d168bc96cb5f21ce47b5bd4825b35e3e0475f809d4ba47f332786b3f23.jpg,d80411ec-598e-4b81-85ba-ba0ee44e44c6,d80411ec-598e-4b81-85ba-ba0ee44e44c6.jpg,Y +SAMAN,이상영,sylee3@samaneng.com,sylee3,207014.jpg,b1980ad4a3764af4c903f0422c7705e3e91d03f404377d469a0dc2c26b3c061a.jpg,14ad4176-2c24-4ac1-8bb1-40f5ffe74e19,14ad4176-2c24-4ac1-8bb1-40f5ffe74e19.jpg,Y +SAMAN,이상용,sylee7@samaneng.com,sylee7,223172.jpg,cdaa2fec670576cb7ba42945baa9c3dda80d83155e23dd45e9d6f96b8cb0e352.jpg,e8ba7110-aa62-477c-ac47-777f14255232,e8ba7110-aa62-477c-ac47-777f14255232.jpg,Y +HANMAC,이상원,swlee5@hanmaceng.co.kr,swlee5,M20407.jpg,0c38a231e22a4aef6f779a83ca6fcb37f1b6148db386cc59f8985c1648c5687a.jpg,d48611f9-58d7-442e-833c-67578cf87122,d48611f9-58d7-442e-833c-67578cf87122.jpg,Y +SAMAN,이상윤,sylee5@samaneng.com,sylee5,207265.jpg,e854fdfa874591548a9f12afd086965d7b9e6a72d7c63860aa0bce6131cb75de.jpg,d82674a3-7a0f-44c2-9546-f10cd3dcb6df,d82674a3-7a0f-44c2-9546-f10cd3dcb6df.jpg,Y +SAMAN,이상준,sjlee2@samaneng.com,sjlee2,221251.jpg,f7b66d8426b666357d573ff6acb01d892ea00acca5e4719d897388f57a322cb1.jpg,066e5a4e-f721-4c36-bc8b-baa5a42a7baf,066e5a4e-f721-4c36-bc8b-baa5a42a7baf.jpg,Y +SAMAN,이상태,stlee@samaneng.com,stlee,223177.jpg,7724ecf1202b26f4b451e90f622b67ba227e411985f51d39370f3f4cd879b84a.jpg,9678a2bc-8854-402a-b67f-a3e5c0b28a83,9678a2bc-8854-402a-b67f-a3e5c0b28a83.jpg,Y +SAMAN,이상현,shlee9@samaneng.com,shlee9,217124.jpg,7eb018507f50735b783a840183f20dd0b9022a00ca5af5fa207249f0b6564812.jpg,c60ac756-7a38-404d-b304-15bd94440650,c60ac756-7a38-404d-b304-15bd94440650.jpg,Y +SAMAN,이상현,shlee4@samaneng.com,shlee4,221248.jpg,e590bc1b2846a1bf88b9b83ec9e37d4ae8d368886df484b6472a9e65f7b9e248.jpg,054ccb42-d195-447b-aa39-0131984e6dee,054ccb42-d195-447b-aa39-0131984e6dee.jpg,Y +SAMAN,이상화,shlee22@samaneng.com,shlee22,223384.jpg,dde8ec51dc81a2ff54d622975d1e5533c343f0973d1e93d0bc30796cbffe0f9e.jpg,436b5eaa-c47d-4f16-be34-5d9d3e0e5794,436b5eaa-c47d-4f16-be34-5d9d3e0e5794.jpg,Y +SAMAN,이상희,shlee@samaneng.com,shlee,216034.jpg,df948b1c8a42ff09ef2760adf5056babe3611613a8168af58e73ef785f1945ed.jpg,7f7a72ac-0129-4e11-a960-272622e6a7a7,7f7a72ac-0129-4e11-a960-272622e6a7a7.jpg,Y +SAMAN,이상희,shlee12@samaneng.com,shlee12,218045.jpg,7ce804b1af47e1048bf0313762e3043615ee62e102f0bc17b61a080516d96ef2.jpg,da041161-a402-4472-92d6-1b0de217a078,da041161-a402-4472-92d6-1b0de217a078.jpg,Y +SAMAN,이상희,shlee21@samaneng.com,shlee21,226102.jpg,e44e64988e06490fdae5e194c03a3c34e237c89f70637e1f225f3e07277ea5b0.jpg,482bc0f0-b888-4472-801e-41df49810534,482bc0f0-b888-4472-801e-41df49810534.jpg,Y +SAMAN,이서연,sylee1@samaneng.com,sylee1,213042.jpg,949f0332d02fa8d22cab9c0529ecc326812d3c2ff6838085e5f3f868ff42f445.jpg,f7294a9c-f4ce-4829-8c18-b91b998e7903,f7294a9c-f4ce-4829-8c18-b91b998e7903.jpg,Y +SAMAN,이서준,sjlee8@samaneng.com,sjlee8,223374.jpg,b47aa6049bd15714411fc955651e6dbff5123beab04811e09962dcc48ff37e3a.jpg,4f6967b0-5aa4-4bf4-99d7-367dda3482e8,4f6967b0-5aa4-4bf4-99d7-367dda3482e8.jpg,Y +SAMAN,이석상,sslee1@samaneng.com,sslee1,222198.jpg,6527f35d16edd6162128042b2f5e83807cf2849b2966dab5e795f27c83d7f2c1.jpg,ddc65462-fd17-4ddc-bb59-5a357e957fad,ddc65462-fd17-4ddc-bb59-5a357e957fad.jpg,Y +SAMAN,이석준,sjlee3@samaneng.com,sjlee3,201014.jpg,54c5d281a848d6f110dcdd5252fff098ff89176528c099b2b0c6778a3ca5f9ac.jpg,71d54880-35f2-4559-90d9-9a1e6a5e0384,71d54880-35f2-4559-90d9-9a1e6a5e0384.jpg,Y +SAMAN,이석환,shlee5@samaneng.com,shlee5,202161.jpg,530ac66c34d5c18d26e28a8380d3cd5961713f1dd9f3e5c5791264ef14a169ff.jpg,383e240a-6393-47d5-9d84-5d1117245634,383e240a-6393-47d5-9d84-5d1117245634.jpg,Y +SAMAN,이석훈,shlee10@samaneng.com,shlee10,218032.jpg,5da8d1a475181603552bb83b0a8bad945cbf530b8425ae4f3090fb413832b81d.jpg,ad52971d-d65a-44ec-9a59-c56176206eac,ad52971d-d65a-44ec-9a59-c56176206eac.jpg,Y +SAMAN,이석훈,shlee17@samaneng.com,shlee17,222142.jpg,8dd1056a363a156242b5529cda01e1ec91e76f10ea1ea433c1cd5ef32e2cf41d.jpg,54af1119-410f-47fa-92a7-9b5047427f19,54af1119-410f-47fa-92a7-9b5047427f19.jpg,Y +SAMAN,이선구,sklee@samaneng.com,sklee,223115.jpg,ef685dd3c9c2da529e423296eb36a359903121dbd1de01ce751a9ff3e129b4d4.jpg,5e0feb4b-93eb-4928-8d46-ae636d7cba9c,5e0feb4b-93eb-4928-8d46-ae636d7cba9c.jpg,Y +SAMAN,이선영,sylee4@samaneng.com,sylee4,207123.jpg,2fda3bd9ff316e4d9cc78456b898b9ec83efbfa169df88020e18c3eab33c67de.jpg,343c6b99-4c93-4c61-bedb-eaa50fed5e36,343c6b99-4c93-4c61-bedb-eaa50fed5e36.jpg,Y +SAMAN,이선우,sulee@samaneng.com,sulee,224241.jpg,52cf7ab3b5c079ba510a7d7f9258d62756bc8164c10073a40720f363c390ff93.jpg,5d47dc0d-0acd-4284-879f-0ba2dae6b1ad,5d47dc0d-0acd-4284-879f-0ba2dae6b1ad.jpg,Y +HANMAC,이선욱,swlee6@hanmaceng.co.kr,swlee6,M02203.jpg,22563e99c13c4996fc51066668b87eecd11ac2de6246fbd8b4b2ab1c04e56372.jpg,4183a88e-c603-41dd-94dc-cd1b13484521,4183a88e-c603-41dd-94dc-cd1b13484521.jpg,Y +SAMAN,이선재,sjlee10@samaneng.com,sjlee10,226093.jpg,c79f9bdc9a57829740a0686514b01a1ad1c6050ef33bdb40b4f45e43abb9eb91.jpg,d4eabebf-70f3-4e6d-96b9-9d221ab6d8fb,d4eabebf-70f3-4e6d-96b9-9d221ab6d8fb.jpg,Y +SAMAN,이선호,shlee7@samaneng.com,shlee7,217123.jpg,7bd64d3c9935996124178c881ccc6ee2a3b522a691954520965d2a4f5785a90e.jpg,5f251abb-b15c-48b7-bdfe-fda17f555fb0,5f251abb-b15c-48b7-bdfe-fda17f555fb0.jpg,Y +SAMAN,이선화,shlee11@samaneng.com,shlee11,024108.jpg,789487c3e89c54a5e74c6da11aee70f5c3a2a57a4866dc7b4e18317eb6229fdd.jpg,68b3c27b-108b-48d9-8e0d-22535300fb74,68b3c27b-108b-48d9-8e0d-22535300fb74.jpg,Y +HANMAC,이성규,sglee3@hanmaceng.co.kr,sglee3,M09503.jpg,75130967921a9ad44bddcae411193dbb566980611529117a7ce832c2424d6bd3.jpg,2edc87f2-fcd0-4b8d-be8e-8a9ae9e43eb5,2edc87f2-fcd0-4b8d-be8e-8a9ae9e43eb5.jpg,Y +SAMAN,이성기,sglee1@samaneng.com,sglee1,222119.jpg,ddedb50aaf2e948b8c8fddab973c211ea752c5cea18eba3c899f55ca7949643c.jpg,2685020b-d73e-4f2b-8029-0654fc07a08f,2685020b-d73e-4f2b-8029-0654fc07a08f.jpg,Y +SAMAN,이성범,sblee3@samaneng.com,sblee3,223163.jpg,e7a2bd31221d61419827e906e3f5bba21d732c57fc0d20f15ab64ab02b2ec300.jpg,f1e53e11-f392-4289-bf17-192495bf5c56,f1e53e11-f392-4289-bf17-192495bf5c56.jpg,Y +SAMAN,이성언,selee@samaneng.com,selee,214070.jpg,d2907525f7048a05dd9664571afb8905f67d2cc9f93b86bfe76e6722d0b6bf8f.jpg,7a89abc4-86e9-4ee2-90f6-9171a77668c8,7a89abc4-86e9-4ee2-90f6-9171a77668c8.jpg,Y +SAMAN,이성우,swlee2@samaneng.com,swlee2,220249.jpg,c99f1d6886aa257af9c1a2da9ecca6b4e2e5d2b5a17d09317368735d6fc85dfa.jpg,da37ce55-f8b0-42fc-be6d-c5adedd6450d,da37ce55-f8b0-42fc-be6d-c5adedd6450d.jpg,Y +SAMAN,이성원,swlee4@samaneng.com,swlee4,226123.jpg,8217520183dfea2b26ba52fd85e8bb8967feccffbc019987666efbf347750359.jpg,f01b342c-9d0d-4ef4-bd74-674e0cfc9039,f01b342c-9d0d-4ef4-bd74-674e0cfc9039.jpg,Y +SAMAN,이성재,sjlee5@samaneng.com,sjlee5,203148.jpg,8fcee7bbe256dbafa8fd877d0e823560682b9b14583551eb538ea55eb7c18df7.jpg,22514227-8ea9-47e1-996f-5f0e44b3e44e,22514227-8ea9-47e1-996f-5f0e44b3e44e.jpg,Y +SAMAN,이성재,sjlee@samaneng.com,sjlee,221024.jpg,780502c75196dd2eb921d96299494a5fa053b9a9f01f534eb79c557cfc6e1096.jpg,89eb7707-4191-4d7a-8e0b-e2a9e2aebafe,89eb7707-4191-4d7a-8e0b-e2a9e2aebafe.jpg,Y +SAMAN,이성준,sjlee1@samaneng.com,sjlee1,215005.jpg,5c820b7dc58a9d5b57c402a76982ca7c9d411287902378134378a394b5ff4dd4.jpg,be8f8d3b-c8ae-4f85-ae97-c6ff967f77bc,be8f8d3b-c8ae-4f85-ae97-c6ff967f77bc.jpg,Y +SAMAN,이성학,shlee14@samaneng.com,shlee14,219070.jpg,8ffd48e638c8fcc855df94813d67f453973ac67276e5515f876fdae62d5cfc72.jpg,d4337f01-ef7a-4756-970a-e191572cbace,d4337f01-ef7a-4756-970a-e191572cbace.jpg,Y +SAMAN,이성현,shlee20@samaneng.com,shlee20,225173.jpg,37d40793c13cbee51aef1a53fdea9110952fac10dfb65b7cf55823cda807040a.jpg,54f1523b-7f38-4d3f-981b-1e2500bcdacc,54f1523b-7f38-4d3f-981b-1e2500bcdacc.jpg,Y +SAMAN,이성호,shlee16@samaneng.com,shlee16,222081.jpg,3ffdc68b307596567a438761bc9be97a54ae944e72c79ecde349d6b96c86f6a3.jpg,98e9d5cd-34a8-4398-a069-bdbfa1e535b2,98e9d5cd-34a8-4398-a069-bdbfa1e535b2.jpg,Y +SAMAN,이성훈,shlee18@samaneng.com,shlee18,224183.jpg,618905324a5bad22f6ad314e8ca0501ea834f2ff632f0adc5dfeda3729087bac.jpg,30ac0e72-93af-4019-99c8-5bc960123c61,30ac0e72-93af-4019-99c8-5bc960123c61.jpg,Y +HANMAC,이세민,smlee3@brsw.kr,smlee3,P13302.jpg,504f9b73e65ab3ec04d22662f5ec2b6aa5f0e064747e1e09477fd8f15ffe9541.jpg,95c26c5f-9123-4a4c-b8d5-6fc9cd33e743,95c26c5f-9123-4a4c-b8d5-6fc9cd33e743.jpg,Y +SAMAN,이세호,shlee13@samaneng.com,shlee13,216087.jpg,8e5318cb5199e3be25b50782f9eddcf1f618435812027c148555fcb30c42d02e.jpg,952dd1ae-8875-47f9-a844-19f08b0179e3,952dd1ae-8875-47f9-a844-19f08b0179e3.jpg,Y +HANMAC,이세화,shlee24@hanmaceng.co.kr,shlee24,M18204.jpg,1088e3303f6b48ab1ff0ff7bd6eaca7915ec37479361946cb280084251eb7932.jpg,3994b783-9a29-44e6-bf9a-a5d4075e747d,3994b783-9a29-44e6-bf9a-a5d4075e747d.jpg,Y +SAMAN,이수문,smlee@samaneng.com,smlee,222158.jpg,86a818dd21dd37682185a1c5466796a53977ca6d901de436de5e0cd1c1d6ff7b.jpg,f7784a95-990e-4682-bf75-d26b246107d8,f7784a95-990e-4682-bf75-d26b246107d8.jpg,Y +JANGHEON,이수식,sslee3@brsw.kr,sslee3,J24503.jpg,66f1f9ffa1d795670bde9ff97425cccbbfe66eec2f1d2e6c3b677f594b1d367c.jpg,ab460070-107c-4fee-bc9f-6125c19cbd87,ab460070-107c-4fee-bc9f-6125c19cbd87.jpg,Y +SAMAN,이수연,sylee6@samaneng.com,sylee6,026076.jpg,f9cbdbbc14d3c085652990aadb4d1493543bb66b5aeb65f7b018c3154afd67cc.jpg,b2b10890-25b0-4fd2-a442-a553eeccc1f7,b2b10890-25b0-4fd2-a442-a553eeccc1f7.jpg,Y +SAMAN,이수영,sylee10@samaneng.com,sylee10,223024.jpg,4ef94c5d9e2cfdbdfe9eb10663bf97c00f607497a86e62d2b8cc2eaae923aa48.jpg,8b90b132-77fb-4d5e-8197-171895076c82,8b90b132-77fb-4d5e-8197-171895076c82.jpg,Y +SAMAN,이수우,swlee3@samaneng.com,swlee3,225316.jpg,d83094800f97abffcfe0813fb150cd6a4b38d9e00b6cb0e582724030388c230d.jpg,17a85514-d2b0-43ca-be32-1873ab962a3d,17a85514-d2b0-43ca-be32-1873ab962a3d.jpg,Y +SAMAN,이수정,sjlee4@samaneng.com,sjlee4,224064.jpg,ad4f6708efe98559a9e0f542c26a7f58ea535f57173286c01561d4443a03aeea.jpg,48ed7e5d-4066-4b34-8d98-4dca2b6b4121,48ed7e5d-4066-4b34-8d98-4dca2b6b4121.jpg,Y +SAMAN,이수진,sjlee6@samaneng.com,sjlee6,025056.jpg,e297d0db4325608ec1477b85c9b392e9f277632d884c24359b86d0ab329a267d.jpg,e64b20a5-3eba-40bc-bedd-6b93c36e638c,e64b20a5-3eba-40bc-bedd-6b93c36e638c.jpg,Y +SAMAN,이수창,sclee1@samaneng.com,sclee1,205222.jpg,455c1c103783e8531db53e2d1336ac2d4543fcd57f9643c357e1ca27a9648a46.jpg,7444c297-449b-4931-a5bd-7c5a4fc914bd,7444c297-449b-4931-a5bd-7c5a4fc914bd.jpg,Y +SAMAN,이수창,sclee@samaneng.com,sclee,222150.jpg,4d7c6780f9a664e4e346e7e5472ac3d33b0cfa0191db77761edd898ad34d14dd.jpg,c40eac16-5d14-41ec-8eae-2842a6ad56a6,c40eac16-5d14-41ec-8eae-2842a6ad56a6.jpg,Y +SAMAN,이숭령,srlee@samaneng.com,srlee,220111.jpg,a24b2cdfba3302dac5179260c2309108ca81ce70726cd54d116150cf6083589f.jpg,80745e89-9de0-4ee4-b4bc-ed1e3abcc3ff,80745e89-9de0-4ee4-b4bc-ed1e3abcc3ff.jpg,Y +SAMAN,이숭희,shlee15@samaneng.com,shlee15,221019.jpg,0b8f1306bcdd64521e59b1476bea2781d4aba86cf7ab7f299317a670319233b2.jpg,d4e13c2c-b602-4525-b28f-a18b23e7a273,d4e13c2c-b602-4525-b28f-a18b23e7a273.jpg,Y +SAMAN,이승근,sglee2@samaneng.com,sglee2,220001.jpg,96e8bb6ae486a7a2d74b091d4572c5854274de9ba0f0ba00370fd71a4ff62075.jpg,8c3e363a-00d2-47ce-8114-9d5f7835f75a,8c3e363a-00d2-47ce-8114-9d5f7835f75a.jpg,Y +SAMAN,이승기,sglee@samaneng.com,sglee,224174.jpg,5182aa95499427862cdc60f98d0be1c54d4266f1ea8ec5ff8c93aadf37297488.jpg,70d0f1df-4b7c-43b9-8a36-9f40cd73e2dc,70d0f1df-4b7c-43b9-8a36-9f40cd73e2dc.jpg,Y +SAMAN,이승렬,srlee1@samaneng.com,srlee1,223312.jpg,9d152ba83ac968f7119ecf247c048938f9680448cc484a5bd26816d8fd552839.jpg,44bd737f-539e-48c3-8900-b02254a37d2c,44bd737f-539e-48c3-8900-b02254a37d2c.jpg,Y +SAMAN,이승배,sblee2@samaneng.com,sblee2,215021.jpg,57549e14838a1bcb99339a32010c5249b6d427e18736d37a5114df16d3533e73.jpg,30d208a4-16ed-4777-bc73-4d84efb5df11,30d208a4-16ed-4777-bc73-4d84efb5df11.jpg,Y +SAMAN,이승범,sblee1@samaneng.com,sblee1,216005.jpg,c61973e53a6eded7bb7b5a1653290b22926673cbc41e412aa4503ba97f482d8b.jpg,8eea2347-2b7f-47d7-9a94-df644b4e87e1,8eea2347-2b7f-47d7-9a94-df644b4e87e1.jpg,Y +SAMAN,이승원,swlee1@samaneng.com,swlee1,220201.jpg,38bd8ac48c2d3dd71a533ac11342328a03a8c1f135e014d19dd345767c7c7738.jpg,a8f45ad8-2d06-4e46-b774-d5ccc6db0f50,a8f45ad8-2d06-4e46-b774-d5ccc6db0f50.jpg,Y +SAMAN,이승원,swlee@samaneng.com,swlee,224226.jpg,8798ca47da21331ba38a7f11a0d21abf68c734c2503ec549086528090ffff2dc.jpg,a571102a-1b1d-4456-b672-453cbaf2bce0,a571102a-1b1d-4456-b672-453cbaf2bce0.jpg,Y +SAMAN,이승종,sjlee7@samaneng.com,sjlee7,218064.jpg,86f17a680ea34a4474498270591b1ae1b081e58eeed35dd6044671850dfab6e5.jpg,572780ad-33de-4cae-933d-473719a600ef,572780ad-33de-4cae-933d-473719a600ef.jpg,Y +SAMAN,이승철,sclee2@samaneng.com,sclee2,205081.jpg,13bad46de0375ffa00c3dc3e51c0835a4427e60729bee63cccdff094e87f7c10.jpg,6e9efa47-6ee5-46eb-bf51-fdc2963b3658,6e9efa47-6ee5-46eb-bf51-fdc2963b3658.jpg,Y +HANMAC,이승철,sclee3@hanmaceng.co.kr,sclee3,M24008.jpg,d53d19816c71a3556982d5286f6dc41485c279593fb3f415c19c9f2dc5ac7770.jpg,35ca8527-c4a1-42dd-842a-714d57722638,35ca8527-c4a1-42dd-842a-714d57722638.jpg,Y +SAMAN,이승하,shlee8@samaneng.com,shlee8,217119.jpg,35ba0065c6671fb49f4083b144096cc42800ab541cad4d31804d86bd3da123ab.jpg,e6521a02-cc38-4424-bc02-1f3dbbf92c3e,e6521a02-cc38-4424-bc02-1f3dbbf92c3e.jpg,Y +SAMAN,이승한,shlee19@samaneng.com,shlee19,223041.jpg,50727f7afa276c4e78f53fde0e6dca2d51c458c1476b1b49bdaeefd1b7aeaeb2.jpg,402db3b4-bc5e-4511-9e43-9cf3fcf64cf1,402db3b4-bc5e-4511-9e43-9cf3fcf64cf1.jpg,Y +SAMAN,이승현,shlee25@samaneng.com,shlee25,226141.jpg,ab75c97c2361d0970ae3565cd5bfbca28f294bcb17510295346c1667f5294fe9.jpg,2f45bc81-826f-4dd2-8588-01ede648b88d,2f45bc81-826f-4dd2-8588-01ede648b88d.jpg,Y +SAMAN,이승현,shlee3@samaneng.com,shlee3,026073.jpg,cb22711c0132344b45f18141018f843ecf81f27f482ae8674486155404e0e050.jpg,30ce11f4-33d7-466f-92a5-6b89a95fabce,30ce11f4-33d7-466f-92a5-6b89a95fabce.jpg,Y +SAMAN,이승훈,shlee6@samaneng.com,shlee6,222049.jpg,860f48e59a856932648a6d93571f63bb8b097cbc6836fe366a16fe52322df280.jpg,575ea690-5d66-4b77-ad38-a834db133c92,575ea690-5d66-4b77-ad38-a834db133c92.jpg,Y +SAMAN,이시동,sdlee@samaneng.com,sdlee,215041.jpg,fa9ee3f76ee2f24db31087c9e64c9baaa485d8dfe3c574f61dcf3bee26d63b01.jpg,15d3dafd-c6c3-4ad6-a928-d92ed1f32c1b,15d3dafd-c6c3-4ad6-a928-d92ed1f32c1b.jpg,Y +SAMAN,이시은,selee2@samaneng.com,selee2,224012.jpg,a05f142bd14ac9064701731f48fdae3716fc4fb56188f17dedc500e1bf6b2d23.jpg,b565cfd0-4004-4f1c-9c4c-5b24c92e5182,b565cfd0-4004-4f1c-9c4c-5b24c92e5182.jpg,Y +SAMAN,이시의,selee1@samaneng.com,selee1,225327.jpg,edad4b73e89755410afde1a89960fe26e5dda8d9bedefa1da9be62d9b1e191a0.jpg,636f4afe-d761-4ff0-bcad-105370488def,636f4afe-d761-4ff0-bcad-105370488def.jpg,Y +SAMAN,이신혁,shlee2@samaneng.com,shlee2,210116.jpg,3f0ef44eb61e4cf752b01cd5c3c2130781f0a3cd5f61099b97ea777e1fe179b0.jpg,a8d0fdb4-4ce7-4d47-a415-4ba1eb4cd1ba,a8d0fdb4-4ce7-4d47-a415-4ba1eb4cd1ba.jpg,Y +HANMAC,이애연,aylee@hanmaceng.co.kr,aylee,M02323.jpg,fe27853a0f4f6da2641035ce30d753a9a782274e48f5e4ff3a99eb5d92001158.jpg,1a85beab-6753-4c11-91c7-5621caa44aea,1a85beab-6753-4c11-91c7-5621caa44aea.jpg,Y +SAMAN,이에녹,anlee@samaneng.com,anlee,224402.jpg,de0512f4b9e4783f17458a5dbdfa0148e53cc0c320101eea4a4f40da383f13aa.jpg,807f9580-3be8-4275-9583-758e01e438d3,807f9580-3be8-4275-9583-758e01e438d3.jpg,Y +SAMAN,이연실,yslee3@samaneng.com,yslee3,224297.jpg,2780018db2353c4fe5e5c45c1fa615e538d14541bedabf634d398c88ac0c2fab.jpg,5d7c3bba-fb08-47d4-91ac-1beacbdc7567,5d7c3bba-fb08-47d4-91ac-1beacbdc7567.jpg,Y +SAMAN,이연재,yjlee3@samaneng.com,yjlee3,218009.jpg,085409230b18390c90090bb9ff27cf127d15f1b4fdda1c2bc1ee246a520cf9fe.jpg,f57ea174-43be-4d52-87a3-5f80ba89099f,f57ea174-43be-4d52-87a3-5f80ba89099f.jpg,Y +HANMAC,이영경,yglee3@hanmaceng.co.kr,yglee3,M02213.jpg,592f334a59fc4ca0102d8ca7de3ace76b3392d4172f7fe2756ab17a8f236f032.jpg,41eb427a-b98c-4732-83bf-3a4a7ca15bd7,41eb427a-b98c-4732-83bf-3a4a7ca15bd7.jpg,Y +HANMAC,이영규,yglee2@hanmaceng.co.kr,yglee2,M23084.jpg,d3aa78b6c1f4c4f9ad30126dc07ea0588772b6012ab3dbe2dc7c98a1992907bb.jpg,105922a2-8a04-4944-9a14-743ecfa50ee9,105922a2-8a04-4944-9a14-743ecfa50ee9.jpg,Y +SAMAN,이영근,yglee@samaneng.com,yglee,221294.jpg,a9478e872934c432951403a753f5f979899c1dd8282607dc24502c5d390eac9d.jpg,0158a2f9-50f0-4038-8f16-81ee428fb42b,0158a2f9-50f0-4038-8f16-81ee428fb42b.jpg,Y +SAMAN,이영석,yslee1@samaneng.com,yslee1,212085.jpg,841d923b187c000788c23317ed36704d451f7d7e3a9fa66e790dbce00441bd63.jpg,b79be621-b759-4173-894b-8edfa87ee29e,b79be621-b759-4173-894b-8edfa87ee29e.jpg,Y +SAMAN,이영석,yslee4@samaneng.com,yslee4,226079.jpg,64d100368b24cf7a24616131aea83f5a18bf420aaacfb7999b7e57469a15c2d2.jpg,570c80d8-74d2-4b4e-b708-53658ca24db7,570c80d8-74d2-4b4e-b708-53658ca24db7.jpg,Y +SAMAN,이영식,yslee@samaneng.com,yslee,215072.jpg,07fa681d95493e42b79c180d3c0e5d4cba747c905df724661c563ac92e9ce8c6.jpg,83400d65-9549-494d-8429-c8ec561da707,83400d65-9549-494d-8429-c8ec561da707.jpg,Y +SAMAN,이영준,yjlee@samaneng.com,yjlee,220203.jpg,1403dbd3328305489ae273b0e31014dc0bdab6d379ad8a167445b52c6083d585.jpg,e7c206b3-75e3-4dd4-b790-481c1709fc76,e7c206b3-75e3-4dd4-b790-481c1709fc76.jpg,Y +SAMAN,이영준,yjlee6@samaneng.com,yjlee6,225030.jpg,4fc18f0b00d450731402f8b89eceb1d97aa8c0510f60e0e79772f0069e079ff6.jpg,dbc63905-dd9e-402e-ac96-cba6bb9df7dc,dbc63905-dd9e-402e-ac96-cba6bb9df7dc.jpg,Y +SAMAN,이영진,yjlee1@samaneng.com,yjlee1,220278.jpg,abc5ac2773989aad0b5a22c49ee094657eafce6ea5aa8e62eaea05e42b7f1d3e.jpg,d4c8b02b-282d-4f97-8935-df85be9624c3,d4c8b02b-282d-4f97-8935-df85be9624c3.jpg,Y +SAMAN,이영찬,yclee@samaneng.com,yclee,225374.jpg,9c8d0d29ca7e3c145acf07eee3799819a0d2e023fbda2dabe64cb6be677bed0b.jpg,c7b91b34-1e0e-4d8d-b2d7-36dacfc93061,c7b91b34-1e0e-4d8d-b2d7-36dacfc93061.jpg,Y +SAMAN,이영환,yhlee3@samaneng.com,yhlee3,225308.jpg,2dc6e263d078dc48fdbc18b059c0752becec5be9010d0bc3fe6443fadc34f7b4.jpg,5c768d86-4491-4527-b134-3e6a837b3404,5c768d86-4491-4527-b134-3e6a837b3404.jpg,Y +SAMAN,이영훈A,yhlee1@samaneng.com,yhlee1,222219.jpg,49aa327f71c512f027206efcbeb1b3937c694f328ca167f7571ab2e67e6c78d2.jpg,70bd4c1e-7614-44e5-a9c9-5b7de798728a,70bd4c1e-7614-44e5-a9c9-5b7de798728a.jpg,Y +SAMAN,이영훈B,yhlee6@samaneng.com,yhlee6,224096.jpg,58c7e0ac1eaccb55e5021ee66160d65674941f2d94c80845ba7a70568c24955e.jpg,153068d0-71fa-4208-8d4e-3d5164381b2e,153068d0-71fa-4208-8d4e-3d5164381b2e.jpg,Y +SAMAN,이영희,yhlee2@samaneng.com,yhlee2,223154.jpg,50c1025f357470ebdecf3bb30619905bef5cfee8379c297d2e93864f60fbe5cf.jpg,a6c3fc9f-ebba-4ec6-9d42-c6ffd0e054a4,a6c3fc9f-ebba-4ec6-9d42-c6ffd0e054a4.jpg,Y +HANMAC,이예지,yjlee7@hanmaceng.co.kr,yjlee7,M21462.jpg,7d8861fd17f874017c03d256f2ed8e5ee2b579c136cddea8f87550983f9beefb.jpg,07dbae80-a160-4b3f-b51e-cd4f96632d84,07dbae80-a160-4b3f-b51e-cd4f96632d84.jpg,Y +HANMAC,이예찬,yclee1@hanmaceng.co.kr,yclee1,M24059.jpg,6dfe4f2ed873b899f9926130258d16949c0adcea6b22e213c01882e0f3451fd0.jpg,04031a53-878d-4281-bd21-390c7c916e13,04031a53-878d-4281-bd21-390c7c916e13.jpg,Y +SAMAN,이용목,ymlee@samaneng.com,ymlee,225002.jpg,f20d9ca56bbd503ea8bf964e60069a06f227bc6982c518c4b70cc0f29f43e74c.jpg,9548473a-1cf0-400e-be4d-ffc428700858,9548473a-1cf0-400e-be4d-ffc428700858.jpg,Y +SAMAN,이용우,ywlee@samaneng.com,ywlee,222201.jpg,6b10c017b91737bc8ac90285cc00cb5380b4f59cde0067fea815672cd6a0c980.jpg,ed10c350-fdbb-4e76-9566-c92a3002ae32,ed10c350-fdbb-4e76-9566-c92a3002ae32.jpg,Y +SAMAN,이용운,ywlee16@samaneng.com,ywlee16,216009.jpg,8f46b21c7fc3b42671fe1df081623b10d30e38a65880af99e2a33fe7021e4d01.jpg,64231465-d5c0-4085-b4a2-603b90834f86,64231465-d5c0-4085-b4a2-603b90834f86.jpg,Y +SAMAN,이용희,yhlee4@samaneng.com,yhlee4,025137.jpg,4d7d9a7021db415a896f3beb0f0720ce79effc095459cba69d2ac6b3a50ba72d.jpg,b1f987a9-20f7-4dce-b125-6215e368727a,b1f987a9-20f7-4dce-b125-6215e368727a.jpg,Y +HANMAC,이웅,wlee@hanmaceng.co.kr,wlee,M24054.jpg,c3275ddff2a1cb03d3a5064ebe963e6b95b0bfd8ab0942d953b02b4b1d3dab93.jpg,e13d115a-9496-48d8-bc6e-5be30c1ac59e,e13d115a-9496-48d8-bc6e-5be30c1ac59e.jpg,Y +SAMAN,이웅규,wklee1@samaneng.com,wklee1,222092.jpg,b7e935dac1b0b7171dbdef68e958b38f301941098dcc111400785375951c7e0b.jpg,5e3fd815-73a9-4f94-871b-8921aa2dc9c5,5e3fd815-73a9-4f94-871b-8921aa2dc9c5.jpg,Y +SAMAN,이웅기,uglee@samaneng.com,uglee,220177.jpg,8b17792b84a86c5432942e5c7ca88699ec51c405f25c8f2201d22cf4d94bea2a.jpg,e13c7478-2022-454a-8e94-212b08ad4079,e13c7478-2022-454a-8e94-212b08ad4079.jpg,Y +SAMAN,이원기,wklee@samaneng.com,wklee,218048.jpg,6d7181fd48781d5e3130367891a9e9e1a3dea03f2ed2877c5cd4d94c70d6617f.jpg,92eccbc3-b905-4212-a343-1a0bb766e8ec,92eccbc3-b905-4212-a343-1a0bb766e8ec.jpg,Y +SAMAN,이원돈,wdlee@samaneng.com,wdlee,225227.jpg,10870dd2b0928517ad9820db1f8d90b2d490442f32a7e44bdd7944ad37b2225e.jpg,ed29d91b-64a6-413b-833f-6a1581e025a0,ed29d91b-64a6-413b-833f-6a1581e025a0.jpg,Y +SAMAN,이원배,wblee@samaneng.com,wblee,206058.jpg,5749951ba267d953dbbf420024f3a9027eea0a7c45f251b2b82dc6609f1a2197.jpg,e8d58f57-839e-41ac-a264-3256bb3cf086,e8d58f57-839e-41ac-a264-3256bb3cf086.jpg,Y +HANMAC,이원용,wylee@hanmaceng.co.kr,wylee,M21460.jpg,048f62c7bb7f1b1ececde3ab832368bcc075decc6ef13221a2633abf556defd2.jpg,bbffbd9f-4a07-48a7-a4dd-300e27f03195,bbffbd9f-4a07-48a7-a4dd-300e27f03195.jpg,Y +SAMAN,이원재,wjlee@samaneng.com,wjlee,200079.jpg,1a6d5c4dd64f4133281e6c6005e5d990307d1c4ea920d7df743f1c110030294b.jpg,2b5c6ca8-fc5d-4621-b923-9f153893aa9e,2b5c6ca8-fc5d-4621-b923-9f153893aa9e.jpg,Y +SAMAN,이원재,wjlee1@samaneng.com,wjlee1,223145.jpg,6bd9a6d305652894370a3d0136de83a55f301671475a02447096d75ac249b2cc.jpg,14974d72-8c04-4212-b076-b39eaaec929a,14974d72-8c04-4212-b076-b39eaaec929a.jpg,Y +SAMAN,이유현,yhlee5@samaneng.com,yhlee5,226112.jpg,3ebd7649eeae77587980fb85734d97f75a10c85cce29703910ada857b97ca29d.jpg,81034e38-e1fa-4810-b0c6-966727f9136c,81034e38-e1fa-4810-b0c6-966727f9136c.jpg,Y +SAMAN,이유현,yhlee@samaneng.com,yhlee,025124.jpg,e277c9635543974f8d041b75ae28113a74be3a12e654174122f9f726335ed149.jpg,f1504257-10a7-425c-83f4-ddf3eeaafc25,f1504257-10a7-425c-83f4-ddf3eeaafc25.jpg,Y +SAMAN,이윤정,yjlee4@samaneng.com,yjlee4,219039.jpg,a7ff3a06f831dabed37e27c3169ef0b0d062e5eb949eb2dc45b3d66c7dc6dd88.jpg,b9ab2b8d-a4ee-4b69-8849-7be20fc6b27d,b9ab2b8d-a4ee-4b69-8849-7be20fc6b27d.jpg,Y +SAMAN,이윤택,ytlee@samaneng.com,ytlee,225379.jpg,89e2c042bbfd005692b98cd8ac92f60209d26063b5b50275963e85dc517e2348.jpg,1be43e8f-321c-4675-aaf4-ae2ead83abe0,1be43e8f-321c-4675-aaf4-ae2ead83abe0.jpg,Y +SAMAN,이은경,eklee@samaneng.com,eklee,221214.jpg,72ecdc9479d9ec56e13fce3a50555d44114c013a59f4edc33f061809f7916df9.jpg,e0016518-6857-477c-921d-f7b972f70cfb,e0016518-6857-477c-921d-f7b972f70cfb.jpg,Y +SAMAN,이은구,eglee@samaneng.com,eglee,219072.jpg,02518b87aaeca0a533b65bb37ce72d456a003df2112da03d8858cc3ce8d43a77.jpg,8f296252-5f9c-4b11-ad7e-938be3f071aa,8f296252-5f9c-4b11-ad7e-938be3f071aa.jpg,Y +SAMAN,이은섭,eslee@samaneng.com,eslee,218131.jpg,48d067762b7f8b56b14e6666abbbc204a3a03f5c11643f05bb231ccc617f6646.jpg,89bdab4d-9d1c-4360-966c-63ef1f675be4,89bdab4d-9d1c-4360-966c-63ef1f675be4.jpg,Y +SAMAN,이은주,ejlee@samaneng.com,ejlee,025119.jpg,cff4aa10bb28ae1a30db07590b35cf6668b0117b2ee818c139278120374c627c.jpg,d9bf0e54-21e7-47d6-b166-b7491387963f,d9bf0e54-21e7-47d6-b166-b7491387963f.jpg,Y +SAMAN,이은택,etlee@samaneng.com,etlee,211073.jpg,8ed00bf15755c36bdadece45a94762a9eb4e4477fa75461bbf1b8cc7f94f1988.jpg,6a2c8310-6d55-452e-bfb9-d58a211cc701,6a2c8310-6d55-452e-bfb9-d58a211cc701.jpg,Y +SAMAN,이은환,ehlee@samaneng.com,ehlee,224123.jpg,af3d23e9da64fdcfbd1d585e1ad907bd7498e20ef117233568b1501c7f2223f6.jpg,1e98ca99-1706-4e42-8e33-25b7b3ccffb9,1e98ca99-1706-4e42-8e33-25b7b3ccffb9.jpg,Y +SAMAN,이응채,eclee@samaneng.com,eclee,224381.jpg,effcc3461a8ae045c569a88bd9898050fe874373007fafc5c55811fe458089cf.jpg,a2d5270c-5c2a-4b3c-a2af-bb88d75311d9,a2d5270c-5c2a-4b3c-a2af-bb88d75311d9.jpg,Y +JANGHEON,이의환,ehlee25@brsw.kr,ehlee25,J13308.jpg,fa98db533b3c66944e89a7f2da4cc763c4fbe243ac92f442771cd913823cb43b.jpg,dbc219ab-dbbb-4aa0-a4f8-17fb4b23801c,dbc219ab-dbbb-4aa0-a4f8-17fb4b23801c.jpg,Y +JANGHEON,이인갑,iglee@brsw.kr,iglee,J25510.jpg,d6d0a054d9618e0b2fe27a15b7ab15c133b2091c1f722d8965554dddd0ea47ee.jpg,070e488c-9a52-495b-b4f1-c18864a238fd,070e488c-9a52-495b-b4f1-c18864a238fd.jpg,Y +SAMAN,이인록,irlee@samaneng.com,irlee,213088.jpg,f1f00a60991e762af63f2e5b0e7606e516b7877593f58d64ac261e89e21f7230.jpg,45ba1eae-c53f-45c9-bc35-86508fb7b74e,45ba1eae-c53f-45c9-bc35-86508fb7b74e.jpg,Y +HANMAC,이인상,islee2@hanmaceng.co.kr,islee2,M21403.jpg,63d4e050d4d746e1f2dc3f9f140052845e79e716a7ef317f593c793046e3bd44.jpg,74553fd8-7f8d-4bb8-a619-dd0ed6ad1fbf,74553fd8-7f8d-4bb8-a619-dd0ed6ad1fbf.jpg,Y +SAMAN,이인수,islee@samaneng.com,islee,223291.jpg,e39be1b0bd79380ca5843fe015f203e41e7840f7dc315023bb82e8896c4f762d.jpg,da287e0c-cf8a-410c-a02e-216d8bbfcd6c,da287e0c-cf8a-410c-a02e-216d8bbfcd6c.jpg,Y +SAMAN,이인우,iwlee@samaneng.com,iwlee,218007.jpg,16d934d99824b21cee439acf91b0c0bcf9009960d97827275b0f19fa802f6beb.jpg,07fea4aa-cf46-4555-b3a0-e7520d1e08bf,07fea4aa-cf46-4555-b3a0-e7520d1e08bf.jpg,Y +SAMAN,이장원,jwlee4@samaneng.com,jwlee4,224356.jpg,14971105096d67d0b6e44bf7040879f622d0863a6d3a5149bcbb0b0dba985801.jpg,a3fecc22-ff77-4e05-a1ef-7eee69905caa,a3fecc22-ff77-4e05-a1ef-7eee69905caa.jpg,Y +SAMAN,이재국,jklee5@samaneng.com,jklee5,217009.jpg,af8bbe137f0dc797e614dce35cd4acb2b3f19e6d34c4f0ade6268ad3f71ae763.jpg,67397d48-3f52-4074-932d-abf1dcbc1c37,67397d48-3f52-4074-932d-abf1dcbc1c37.jpg,Y +SAMAN,이재규,jglee@samaneng.com,jglee,213048.jpg,e0333cc821a87487d13e449ce4741a0bcd003a5546f1e511a5c21d200dfa7a97.jpg,04270886-7881-43e9-ba29-ef85aa61194f,04270886-7881-43e9-ba29-ef85aa61194f.jpg,Y +SAMAN,이재근,jklee1@samaneng.com,jklee1,217004.jpg,33aa13ad6d238e314be3bfef5c62e81ec6928d7d442f4172eaf815e7bc313c12.jpg,e2717c32-5efe-491f-9bf7-844e92640794,e2717c32-5efe-491f-9bf7-844e92640794.jpg,Y +SAMAN,이재석,jslee4@samaneng.com,jslee4,225280.jpg,11b990f1bf6c09691d2ef4d973e470ac06ece296fcc88d086fa09a8f59562613.jpg,0fec0090-bf31-40e6-b38c-94667e6f8f18,0fec0090-bf31-40e6-b38c-94667e6f8f18.jpg,Y +HANMAC,이재성,jslee6@hanmaceng.co.kr,jslee6,M19501.jpg,dfbb39fe79bee145d364b0a78d4e1aff9c332f8299e6e9323cdb8a8fdc04a9a1.jpg,fee5c94d-810d-4717-a843-4c7e36e4e31d,fee5c94d-810d-4717-a843-4c7e36e4e31d.jpg,Y +SAMAN,이재열,jylee5@samaneng.com,jylee5,224277.jpg,220dac57005270463f4d6f22d7e39955f10f892c7270bbed8916699a795c70db.jpg,f55df6d7-bea4-4915-87f1-240c7ba4db52,f55df6d7-bea4-4915-87f1-240c7ba4db52.jpg,Y +JANGHEON,이재영,jylee9@brsw.kr,jylee9,J18301.jpg,5ecc5d8cac63e399b17d9006c0a43fd21b77589696d31bf499d76fbb681f0caf.jpg,cb42d548-864f-44c7-823c-e69041fc3a90,cb42d548-864f-44c7-823c-e69041fc3a90.jpg,Y +SAMAN,이재오,jolee@samaneng.com,jolee,224229.jpg,e5c4104929ff66b42f4b633b137dfacde14850e5099b2c0b39b7b7de30f9a108.jpg,4e1ed3d3-b185-444c-8074-391e2bae0c1e,4e1ed3d3-b185-444c-8074-391e2bae0c1e.jpg,Y +SAMAN,이재완,jwlee6@samaneng.com,jwlee6,223055.jpg,5887da4f67d55b330f5ecce3c7794f32d1fd371b22888161aef01d13dde946ae.jpg,233a2c78-8eec-4391-b149-1db76bddf8fa,233a2c78-8eec-4391-b149-1db76bddf8fa.jpg,Y +SAMAN,이재원,jwlee1@samaneng.com,jwlee1,220271.jpg,f40277b29c0d7ccf453f9e0f6ec13e0ab90c64c83ebafc949fbf1025a65372b6.jpg,09658503-1cc9-4336-88dc-07af6e98b586,09658503-1cc9-4336-88dc-07af6e98b586.jpg,Y +SAMAN,이재진,jjlee3@samaneng.com,jjlee3,226011.jpg,18139d67e2d8d5d4a1ad6c57c1b097c8ddc3fb6e468b0230ab9adc3ad33bc8fa.jpg,9780fdc7-1df3-4ff5-aa0a-135d4a59def2,9780fdc7-1df3-4ff5-aa0a-135d4a59def2.jpg,Y +HANMAC,이재진,jjlee4@hanmaceng.co.kr,jjlee4,M08206.jpg,99c45f7071eb28e54ee42f056f76d105ed32d8b872143c6e6e2522d1cf478b0d.jpg,6e166b6e-3602-486d-b475-f088f179d2ce,6e166b6e-3602-486d-b475-f088f179d2ce.jpg,Y +SAMAN,이재현,jhlee12@samaneng.com,jhlee12,226008.jpg,a3554acf2e72e493aa559b27dc9ebc541fb53b33c01f5442c6561bfb7f34a8a0.jpg,68ce155a-f743-40f7-badc-47329d2bc1a6,68ce155a-f743-40f7-badc-47329d2bc1a6.jpg,Y +SAMAN,이재형,jhlee6@samaneng.com,jhlee6,217019.jpg,78d5ffbc9e5ebd7973d15d7aedf3ade2fa0bd8d710d32ad589417145f58e6452.jpg,3ec511bd-cd72-48f5-842b-5793d4bf2f16,3ec511bd-cd72-48f5-842b-5793d4bf2f16.jpg,Y +SAMAN,이재형,jhlee11@samaneng.com,jhlee11,220005.jpg,ba795d2c7e96e325e1cafee59086769a09a3be0f34e6beba70181fbb448cc4eb.jpg,55387560-45d2-4c57-894f-16de30bdf71d,55387560-45d2-4c57-894f-16de30bdf71d.jpg,Y +SAMAN,이재흔,jhlee19@samaneng.com,jhlee19,224236.jpg,1db095daabbaf9d7025b9b9f79c738ce9eec055b919d22b598bc1e0b021aad90.jpg,eb1cfd4f-dba5-4da0-aff8-e7a761e9cfbb,eb1cfd4f-dba5-4da0-aff8-e7a761e9cfbb.jpg,Y +SAMAN,이재희,jhlee20@samaneng.com,jhlee20,225220.jpg,6abbddb405fb09a95ea2393528d26aab1602a043aa2bd45e2e9c13a8aea0a570.jpg,4ccb999a-8442-436f-b0e0-8ce50308da67,4ccb999a-8442-436f-b0e0-8ce50308da67.jpg,Y +SAMAN,이전진,jjlee1@samaneng.com,jjlee1,220125.jpg,5c14d8ad5c3c8ef1daad25e0726e84b22261fde8c6f065e77cfc756a43f080a7.jpg,6d679f14-6f39-4a9b-9e02-0dfb72424c62,6d679f14-6f39-4a9b-9e02-0dfb72424c62.jpg,Y +SAMAN,이정곤,jglee1@samaneng.com,jglee1,223184.jpg,715bc4df94d517a5ecb3626a98c6388ac271ad365492e42aaf89532e497f4525.jpg,754a84d3-7ef9-4485-bd7a-7fd12a8dbf41,754a84d3-7ef9-4485-bd7a-7fd12a8dbf41.jpg,Y +SAMAN,이정구,jklee6@samaneng.com,jklee6,219029.jpg,246abcb191b1f7218d9cfde0617969764500cfe6b3a368ecf5cc65332b2b2a70.jpg,f4180785-eb88-42d0-b0b2-63c74077f8ed,f4180785-eb88-42d0-b0b2-63c74077f8ed.jpg,Y +SAMAN,이정섭,jslee3@samaneng.com,jslee3,224294.jpg,4566d30028ba682a12c33909bd7a6a2f263ac6f5e116cacf93cae0d6834bb826.jpg,6dd169e8-2740-4acc-a4db-3b8244af2f77,6dd169e8-2740-4acc-a4db-3b8244af2f77.jpg,Y +SAMAN,이정용,jylee6@samaneng.com,jylee6,224281.jpg,db9c69cf01f3fb7a4fd6c6743608b600d289ad312f9985df771546e4bd204bcb.jpg,3e35a10d-cd6a-425a-afb2-0629a2423e11,3e35a10d-cd6a-425a-afb2-0629a2423e11.jpg,Y +HANMAC,이정우,jwlee7@hanmaceng.co.kr,jwlee7,M06207.jpg,bb820921226d2650e681d136a0f89287d9c06624b9ec5a35541a1e0c10a84c9f.jpg,d4c4bfad-b858-4f49-86e1-e3a12c092782,d4c4bfad-b858-4f49-86e1-e3a12c092782.jpg,Y +SAMAN,이정욱,jwlee3@samaneng.com,jwlee3,224328.jpg,7a142cfe70e91f768f661c8b9c456a7177af062c0538436b5965202c4a3f94e1.jpg,9e5a8b1e-424f-4fc9-94d4-33d8ee25596d,9e5a8b1e-424f-4fc9-94d4-33d8ee25596d.jpg,Y +SAMAN,이정원,jwlee2@samaneng.com,jwlee2,220116.jpg,8eaf8302b18f083b6c82e7147d198d69bedb39655ca48cc038a207c88e8dd692.jpg,2a36cee8-6a3f-47a5-bf5d-41b64c1916fb,2a36cee8-6a3f-47a5-bf5d-41b64c1916fb.jpg,Y +HANMAC,이정원,jwlee8@hanmaceng.co.kr,jwlee8,M15206.jpg,e86cfef3a4a7fa038f6ad4e55dd38a24006d43d605461a551ed19652864ea959.jpg,25a29dc0-1b97-4991-9fe8-183cff503bc1,25a29dc0-1b97-4991-9fe8-183cff503bc1.jpg,Y +SAMAN,이정인,jilee@samaneng.com,jilee,218038.jpg,68697fa0069c37bb9c181c2bbc39b553e0d1ef58eea738dad316def3f6ff954c.jpg,2625d94f-2a8d-4610-b52d-b3c8a344c4ab,2625d94f-2a8d-4610-b52d-b3c8a344c4ab.jpg,Y +SAMAN,이정직,jjlee@samaneng.com,jjlee,220080.jpg,69e73f169f56414a5f0479a7885208bae7721b0e9c0c48f11cad012191582765.jpg,359ce9a2-7230-4dac-aa7a-995c0fa17d1f,359ce9a2-7230-4dac-aa7a-995c0fa17d1f.jpg,Y +JANGHEON,이정훈,jhlee9@brsw.kr,jhlee9,J07210.jpg,4665d9ff9d6f86fcfb9e30c4675ee7b5caf0986ddfa8fd8d03aa27d0a1ff682d.jpg,60b4a1b0-4aa3-47d1-a713-60a8834b161d,60b4a1b0-4aa3-47d1-a713-60a8834b161d.jpg,Y +SAMAN,이종경,jklee3@samaneng.com,jklee3,224017.jpg,31a797aa4f3b8b019c3d1df25947966abfd4688a3ba5eddb281a1fd635a85d68.jpg,7f7ca1a2-26c2-4c14-8e01-87c1a2f450cf,7f7ca1a2-26c2-4c14-8e01-87c1a2f450cf.jpg,Y +SAMAN,이종관,jklee8@brsw.kr,jklee8,216014.jpg,8ba6eaea2045aebd6aae9e26a270e134c8a4a0e9e556b6c1a0b5c45aba194672.jpg,0e7baa1d-c99d-46b6-b075-4dae868e5c41,0e7baa1d-c99d-46b6-b075-4dae868e5c41.jpg,Y +SAMAN,이종구,jklee2@samaneng.com,jklee2,221215.jpg,c1c4e0a1bc499d54b60c5b84ff96822d76651544e6863660983f9fa83060b032.jpg,89029db2-5036-4c07-9191-4f936dd97ec3,89029db2-5036-4c07-9191-4f936dd97ec3.jpg,Y +SAMAN,이종구,jglee3@samaneng.com,jglee3,224326.jpg,ea4c1c843ee5e7b37f004c181a8a3c172bf79c8c887a9426f8f80718770b37de.jpg,8dde684e-a9c6-46b6-8473-0f26ee1d5ee6,8dde684e-a9c6-46b6-8473-0f26ee1d5ee6.jpg,Y +SAMAN,이종균,jglee2@samaneng.com,jglee2,215003.jpg,167d99001c3d895ba56fce3c3239a914d39c7cc0e8490ceb60c2d83b6e84fb0f.jpg,e071e1ee-c993-4100-b34e-55a0ab4d6d2e,e071e1ee-c993-4100-b34e-55a0ab4d6d2e.jpg,Y +SAMAN,이종민,jmlee1@samaneng.com,jmlee1,225221.jpg,e1ff1839019f2e8cebd903cd228b274ebfb2ffd98cd14295692c31afb3465ca8.jpg,cc8c1bda-355e-4910-8150-0ee69a3b42a8,cc8c1bda-355e-4910-8150-0ee69a3b42a8.jpg,Y +HANMAC,이종범,jblee@hanmaceng.co.kr,jblee,M25048.jpg,beb1ed8106f16519de4181f4e904ca58e7941ca2b1750fd696c80bf989155956.jpg,b3279ec3-bccd-4161-87b6-ffe93ec711da,b3279ec3-bccd-4161-87b6-ffe93ec711da.jpg,Y +HANMAC,이종익,jilee2@hanmaceng.co.kr,jilee2,M07223.jpg,ad3dbf719abaac2e3f8dff5c0252a59d7ae0a604657ac39b8ac84474ace5a984.jpg,0a4c0717-e4b9-43c4-9747-2b8f9dfebec1,0a4c0717-e4b9-43c4-9747-2b8f9dfebec1.jpg,Y +SAMAN,이종진,jjlee2@samaneng.com,jjlee2,224233.jpg,683c64521fd26db45e8f4dcbfd5e6b8d9ea384b846528d165ac00ca1143b8f36.jpg,d3fd2658-62b8-434c-bb8d-2f3ae557de20,d3fd2658-62b8-434c-bb8d-2f3ae557de20.jpg,Y +SAMAN,이종철,jclee@samaneng.com,jclee,216113.jpg,fb190ad30dc240eb74b0e05856d8453b62226609126b4d321b62832cdf96a9f3.jpg,95e26196-c4ff-436a-b5cd-c4f0393f2f06,95e26196-c4ff-436a-b5cd-c4f0393f2f06.jpg,Y +SAMAN,이종태,jtlee@samaneng.com,jtlee,215046.jpg,773ebbe55d6f4bf842c6c9d54a05c67fc65d4c3b6cafe7ad70aea84eb5b6196f.jpg,3819f9c1-55c5-41fb-adfb-ab0b4f046f0b,3819f9c1-55c5-41fb-adfb-ab0b4f046f0b.jpg,Y +SAMAN,이종하,jhlee7@samaneng.com,jhlee7,218126.jpg,1402cc28706caafdb936318697fcde9f6dadb303c16608b9f038f857a992bfff.jpg,ec2112ba-184a-4a73-93b9-26f8ddc17213,ec2112ba-184a-4a73-93b9-26f8ddc17213.jpg,Y +SAMAN,이종현,jhlee15@samaneng.com,jhlee15,226014.jpg,57f21391e5b7e7d0ef753ee1d809a484b1645bc0bf4165e9999ced8542959501.jpg,7c6957a6-9fe6-45a9-a317-980a0f54a891,7c6957a6-9fe6-45a9-a317-980a0f54a891.jpg,Y +SAMAN,이종호,jhlee5@samaneng.com,jhlee5,202107.jpg,ef44851531b5f9716531cdaf3dce6ecf606ff02a58fb541cb200b83383ef5247.jpg,0ca2d683-e0b4-4acc-b765-998259feaaf2,0ca2d683-e0b4-4acc-b765-998259feaaf2.jpg,Y +SAMAN,이종호,jhlee17@samaneng.com,jhlee17,222109.jpg,d4b4f3a1a02451ca27cd949ef26319c8a9ae8ab17116237b503d7f6812f99410.jpg,04e9d1f8-1570-455c-b710-19a75f4f311b,04e9d1f8-1570-455c-b710-19a75f4f311b.jpg,Y +SAMAN,이종훈,jhlee13@samaneng.com,jhlee13,220021.jpg,0814dfe7cf20c344a1db42359c00d7012d34c419edf0d93b77dd0f63c283d407.jpg,891e7c96-bc7f-460e-ade4-265cc59a6eb9,891e7c96-bc7f-460e-ade4-265cc59a6eb9.jpg,Y +SAMAN,이주민,jmlee@samaneng.com,jmlee,224313.jpg,81da5a640353ebdc2a3450fb416a77f740274678458934ece5b5f106620b95d6.jpg,824ddd5a-45aa-4f75-92cc-bc6c7b17f7f0,824ddd5a-45aa-4f75-92cc-bc6c7b17f7f0.jpg,Y +SAMAN,이주영,jylee7@samaneng.com,jylee7,225112.jpg,1516c0978d9f8c50b43695741327c39f5abd6ff5c58f5f91edaba1d6017b39ce.jpg,daee2898-8f9b-46a8-a80a-0143b66ccb35,daee2898-8f9b-46a8-a80a-0143b66ccb35.jpg,Y +SAMAN,이주형,jhlee2@samaneng.com,jhlee2,221022.jpg,8d3d93d6c96464a51dbe34571c7108c228710ddc6ad02f80943dab4a79ab8293.jpg,3e990d8f-0391-4255-a413-fb45ec654ae8,3e990d8f-0391-4255-a413-fb45ec654ae8.jpg,Y +SAMAN,이주호,jhlee1@samaneng.com,jhlee1,219095.jpg,a16dc97f1b54dd2fc1cebee4e4bd7190ba2fb30c97e3a373933aeb6d7dd39c5e.jpg,9d30951f-da08-4390-861c-7702a35648b4,9d30951f-da08-4390-861c-7702a35648b4.jpg,Y +SAMAN,이주환,jhlee14@samaneng.com,jhlee14,226003.jpg,afbcb7cc89668c8c9884df5a21581eceedaa312f998fe0ceffb07b8e22d3ef0e.jpg,71c5c6a5-7d4b-4026-91fb-86657780c1bd,71c5c6a5-7d4b-4026-91fb-86657780c1bd.jpg,Y +SAMAN,이준규,jklee@samaneng.com,jklee,222174.jpg,8aaa2155acc2372568f5aa1d29d2613cce0bcaebb44ff7cabacb7f17db8dd676.jpg,c190dfe0-60e9-45ab-a693-05d2c30b3c53,c190dfe0-60e9-45ab-a693-05d2c30b3c53.jpg,Y +SAMAN,이준석,jslee@samaneng.com,jslee,225377.jpg,a9e73018b36b8ba236b55df838b865ef590074f63703e5b7158332324779dfee.jpg,0488c715-85e6-4e18-9183-ded280e7235f,0488c715-85e6-4e18-9183-ded280e7235f.jpg,Y +SAMAN,이준석,jslee5@samaneng.com,jslee5,226137.jpg,fe8ea55760be0ccde6de85e5f9832c75d13852581df67090da35a2bff2049370.jpg,1f734b19-194c-4411-8874-2f5111be4af6,1f734b19-194c-4411-8874-2f5111be4af6.jpg,Y +SAMAN,이준섭,jslee2@samaneng.com,jslee2,221249.jpg,01f8682a37433d72805a945c6ad48bfdb232817300724386c891f23df2aa986c.jpg,30c2fc22-d0cf-40ea-b3bb-d2d9278aca13,30c2fc22-d0cf-40ea-b3bb-d2d9278aca13.jpg,Y +SAMAN,이준호,jhlee@samaneng.com,jhlee,223046.jpg,1072c3af97cff94b42cd69f5c3b2dd4a586b2e603f320ad9e2dcfb934e10658b.jpg,43d65909-620e-4018-9d98-e6713c7f8cda,43d65909-620e-4018-9d98-e6713c7f8cda.jpg,Y +HANMAC,이준희,jhlee22@hanmaceng.co.kr,jhlee22,B18302.jpg,bacd0e84201e9c9f8d9425695f4902c632795ea36b2df83d686ce961ed86b05f.jpg,2f78f539-75d9-4bf2-b609-c145e2c303d6,2f78f539-75d9-4bf2-b609-c145e2c303d6.jpg,Y +JANGHEON,이중경,jklee9@brsw.kr,jklee9,J16202.jpg,99b9245a36c989b52dc1c63494e57cce998bb88a46f4ecf666155466ad246ee7.jpg,fdb7bab8-11e0-4de6-9f69-e6978a08bc4f,fdb7bab8-11e0-4de6-9f69-e6978a08bc4f.jpg,Y +SAMAN,이중희,jhlee16@samaneng.com,jhlee16,221210.jpg,2c0cd065e7a66b518f7021322207edbe312b713de89ff4d6bbc4f616d9c63ed6.jpg,cd092e1e-67c8-4673-b09e-9587ece32025,cd092e1e-67c8-4673-b09e-9587ece32025.jpg,Y +HANMAC,이지명,jmlee3@hanmaceng.co.kr,jmlee3,M23014.jpg,92dcc6b90acb67e29378d4fd56daf915b07b0f9a7479a2a68b3cf91dd83f9e1b.jpg,8d185359-504d-4367-be3e-fd4b860dad5b,8d185359-504d-4367-be3e-fd4b860dad5b.jpg,Y +HANMAC,이지율,jylee8@brsw.kr,jylee8,B24021.jpg,f7e98509204e6c0aad8d5771fa59885cd0127588f51a9fe59549889d7cede4f9.jpg,ba25111f-40cb-49a2-8ed3-83c705f5835b,ba25111f-40cb-49a2-8ed3-83c705f5835b.jpg,Y +HANMAC,이지혜,jhlee21@hanmaceng.co.kr,jhlee21,J14306.jpg,b6e468e942995f6f62bf6a4360a89007f25e36540da325544c80303a9b41387f.jpg,516cee61-f9ef-457b-98ac-61401ea8fe8d,516cee61-f9ef-457b-98ac-61401ea8fe8d.jpg,Y +SAMAN,이진수,jslee1@samaneng.com,jslee1,221040.jpg,0ad0a179d43f52daf904958e5c6bfe7dc2af9cc5b44e777d2156c237885ddeee.jpg,c10dcb3e-4bbd-4ded-9bf9-8f3c738b3dd0,c10dcb3e-4bbd-4ded-9bf9-8f3c738b3dd0.jpg,Y +SAMAN,이진영,jylee@samaneng.com,jylee,205091.jpg,4cf2875ee5a62a31853e719deaf1953c88e9d8b0036a9e3b77b2e9377eb4eb44.jpg,6869652e-5226-4ce0-8401-ee8592a4443d,6869652e-5226-4ce0-8401-ee8592a4443d.jpg,Y +SAMAN,이진용,jylee1@samaneng.com,jylee1,223020.jpg,6de612a3b6af239f0d9ab76b31e4cb60e1bc9b5510de654419de73f50fe7a352.jpg,a1955781-753a-4e0d-9188-a3de2f253d77,a1955781-753a-4e0d-9188-a3de2f253d77.jpg,Y +SAMAN,이진우,jwlee5@samaneng.com,jwlee5,225371.jpg,ad8a14ad2bed49b6f7a9cafead0f0f7f246ac152249fdc3095fcd7f669063cbd.jpg,956ca127-8a5f-4cde-8679-d94470f9f807,956ca127-8a5f-4cde-8679-d94470f9f807.jpg,Y +SAMAN,이진웅,jwlee@samaneng.com,jwlee,216116.jpg,f8499fbd9e97fb6361c24e7500f527d80b58db3e56b2cfefe26c449b25e8e74f.jpg,685414f2-779f-4cc7-886b-5a6fdeff8beb,685414f2-779f-4cc7-886b-5a6fdeff8beb.jpg,Y +SAMAN,이진형,jhlee10@samaneng.com,jhlee10,222028.jpg,1b51c6ce7a381db0b0a6092f79760262c8d6e7dec720d6c71a48010313373c1a.jpg,5ccc7abe-e151-4bed-a0ca-32d5c3571f69,5ccc7abe-e151-4bed-a0ca-32d5c3571f69.jpg,Y +HANMAC,이찬우,cwlee2@hanmaceng.co.kr,cwlee2,M05207.jpg,14e20d3449081409f2576b119253a6c1779ce18655d23c29570cf7e7ea6ab534.jpg,6a3ef331-ca74-4a14-b752-fbc4a314e3a8,6a3ef331-ca74-4a14-b752-fbc4a314e3a8.jpg,Y +SAMAN,이창,clee@samaneng.com,clee,222031.jpg,26ef1ddabc5be19a4ed119876dec4982b800d17a5ab3a753e099f59896de02bf.jpg,7bac9ac2-12be-4dd7-aff0-8b4a35576fcd,7bac9ac2-12be-4dd7-aff0-8b4a35576fcd.jpg,Y +SAMAN,이창걸,cglee1@samaneng.com,cglee1,224181.jpg,76e467ca1b5ca2fba6373bbe24ea89e4b32fdbf95182a4c5da3ec522ea4a4909.jpg,be716588-f469-41c8-87d0-0ba09a07a25e,be716588-f469-41c8-87d0-0ba09a07a25e.jpg,Y +SAMAN,이창영,cylee1@samaneng.com,cylee1,224211.jpg,89d179ab589a46007bd30b7086f6912f984904c7cda5ea8374f67a7bbfb9bccc.jpg,15847784-0b63-46f9-953e-abab0330ee06,15847784-0b63-46f9-953e-abab0330ee06.jpg,Y +SAMAN,이창영,cylee2@samaneng.com,cylee2,224383.jpg,9c272587268111d6f19ba703df89e4c0fc8093727183461d0304ade104384289.jpg,98c3ccee-32e3-4023-aa54-35a01d76a380,98c3ccee-32e3-4023-aa54-35a01d76a380.jpg,Y +HANMAC,이창용,cylee3@hanmaceng.co.kr,cylee3,M05508.jpg,5f73c0ccfa0e79488263d36d792a7948779376813969a4b930dd345a170e888e.jpg,b2424ae3-a6a5-45bc-a54d-8e223e98d0ff,b2424ae3-a6a5-45bc-a54d-8e223e98d0ff.jpg,Y +SAMAN,이창욱,culee@samaneng.com,culee,222009.jpg,f9c7b9ceb4f56cba5c718678672965715636db6f82cae76f134493e3548a6163.jpg,0a55c63e-65ca-4079-b347-9bede739bcd8,0a55c63e-65ca-4079-b347-9bede739bcd8.jpg,Y +SAMAN,이창원,cwlee1@samaneng.com,cwlee1,226058.jpg,b6c3ff31fe2c4c79f2b0ba40a95a104067d6f7958d152a5c44603bff531fe6f0.jpg,1b4a8c01-a480-4b7e-b0ec-44a5d40050a4,1b4a8c01-a480-4b7e-b0ec-44a5d40050a4.jpg,Y +SAMAN,이창호,chlee2@samaneng.com,chlee2,200067.jpg,62a415a1739a479b09eeac03e9fd3e4b42ae2deb7dd08d783e570fd91e7815e1.jpg,6d0c299c-c213-4b0c-a881-161288208307,6d0c299c-c213-4b0c-a881-161288208307.jpg,Y +JANGHEON,이창호,chlee7@brsw.kr,chlee7,J24502.jpg,6455c258d1335a8903287acbc591c2f3c137499bbf05da7bd64c6ddf3253a5ba.jpg,b5cb0496-c0d5-44ca-8ad0-9ddcb5bdf42f,b5cb0496-c0d5-44ca-8ad0-9ddcb5bdf42f.jpg,Y +SAMAN,이창효,chlee@samaneng.com,chlee,222078.jpg,5078125d4cb0a33eaa3c2026f215e5db02eeec03cea4f40b1d87c4aa4b1a7f51.jpg,de706342-39b2-4384-b9e4-5e4f0c03b4ab,de706342-39b2-4384-b9e4-5e4f0c03b4ab.jpg,Y +SAMAN,이창훈,chlee4@samaneng.com,chlee4,209210.jpg,6b0bdb46638d56e17cbf5610c91daf9ec9471d72869513ef22492cc0834f2ee3.jpg,48362c0d-cd4b-4156-a649-908cb8c5007a,48362c0d-cd4b-4156-a649-908cb8c5007a.jpg,Y +SAMAN,이천기,cglee@samaneng.com,cglee,219024.jpg,39e56405e018aa7d39af88e0405a38415547ebc55af019f5619ddebf20a55366.jpg,f6eee772-ca01-4090-94fb-10523798f52f,f6eee772-ca01-4090-94fb-10523798f52f.jpg,Y +SAMAN,이철웅,cwlee@samaneng.com,cwlee,219136.jpg,058736da7a93b908ab488a259b1260328bd871cde8d0e5ec7ddf97814694f0a2.jpg,7702cb1b-ad79-4449-b425-f680424b3e64,7702cb1b-ad79-4449-b425-f680424b3e64.jpg,Y +SAMAN,이철재,cjlee@samaneng.com,cjlee,222003.jpg,c9135566e06ccd45fceb12a57fa7b2883d9acd8c3dec59e47d369e7810737c61.jpg,83fd6399-09f4-4601-a4dc-44eeaf5b40d2,83fd6399-09f4-4601-a4dc-44eeaf5b40d2.jpg,Y +SAMAN,이철중,cjlee2@samaneng.com,cjlee2,225214.jpg,24bb3e32fe3f15265b9fe611b29caf60e16483056391e13623de373320942aa6.jpg,047f0378-224d-4b07-a266-e82582fce42e,047f0378-224d-4b07-a266-e82582fce42e.jpg,Y +SAMAN,이철호,chlee10@samaneng.com,chlee10,194041.jpg,f7ae43c1943bd5deedcdb2045b6f8389c7d7173d9e1625c24ea9ade09eb3620b.jpg,6552f548-d724-4968-a359-434578fa4164,6552f548-d724-4968-a359-434578fa4164.jpg,Y +SAMAN,이철호,chlee3@samaneng.com,chlee3,224217.jpg,fd0adf9e6bd52f525cacddc6304595466a3f9646aa2a6cc9cffbbaffb4536d1c.jpg,c6bf8e5c-a3c6-4140-aea1-1906bd1db3ae,c6bf8e5c-a3c6-4140-aea1-1906bd1db3ae.jpg,Y +SAMAN,이충열,cylee@samaneng.com,cylee,221331.jpg,2fe7fd7a2a6e7eba5f3acb277fc86dc14934aabbf31d29a21bf674edb743774c.jpg,b1a0f004-b091-4dce-b4a3-c2910c81f00e,b1a0f004-b091-4dce-b4a3-c2910c81f00e.jpg,Y +SAMAN,이충호,chlee1@samaneng.com,chlee1,224208.jpg,f0859472543aa871c5732333d8eb0bc284f9766255d0bfa239f31fd3978f893e.jpg,77df1488-53bd-405b-bc15-1ea629bfd05c,77df1488-53bd-405b-bc15-1ea629bfd05c.jpg,Y +SAMAN,이충호,chlee5@samaneng.com,chlee5,225248.jpg,5384d7e3ce64319d0deb854bd1e2024edc34e9cece6af0639b6a69438382567f.jpg,c45e7f65-e023-48b6-bc02-fa98e38d54fa,c45e7f65-e023-48b6-bc02-fa98e38d54fa.jpg,Y +HANMAC,이태환,thlee6@hanmaceng.co.kr,thlee6,M24053.jpg,12a084ed525965a1f38fa499143fb142352ddb5023c1e652d77da764c9a613cb.jpg,3d17564e-92bd-4cb5-a8de-0ecc0d0440d4,3d17564e-92bd-4cb5-a8de-0ecc0d0440d4.jpg,Y +SAMAN,이태효,thlee4@samaneng.com,thlee4,223377.jpg,ecddc490398f8de37bba1c28b6dab24e52dca30179f8ba16ff07aa903aadc78f.jpg,a79ad27c-f06a-4fc7-a1de-7d86511481ea,a79ad27c-f06a-4fc7-a1de-7d86511481ea.jpg,Y +SAMAN,이태훈,thlee@samaneng.com,thlee,194048.jpg,9b76783d3bd1264d281a3a4a5f7e9088de96b5825202521cd3dcb2ce7fadf6b0.jpg,51ba0dbe-13e9-40ef-9deb-c309c6ebf5f2,51ba0dbe-13e9-40ef-9deb-c309c6ebf5f2.jpg,Y +SAMAN,이태훈,thlee1@samaneng.com,thlee1,213014.jpg,75d7c26f3ad5c948b600d72413241a5af8b695b38d297aa2ebf5aefdbf0762ee.jpg,0ebc7694-2d79-491b-8f75-eb8f8328479c,0ebc7694-2d79-491b-8f75-eb8f8328479c.jpg,Y +SAMAN,이태훈,thlee3@samaneng.com,thlee3,221270.jpg,b27fc3f39b2123474a2ce7cc29f208000515637195d091991457191a56df83ad.jpg,cc2db80c-5a18-4439-8026-22dd06d6452f,cc2db80c-5a18-4439-8026-22dd06d6452f.jpg,Y +SAMAN,이태희,thlee2@samaneng.com,thlee2,216010.jpg,057309f0701558f4cf51f39f9078d9d9a19e4a92cf1c646a9532213dbd844201.jpg,876b4804-a09a-4d71-9328-ccac218ef4b7,876b4804-a09a-4d71-9328-ccac218ef4b7.jpg,Y +SAMAN,이태희,thlee5@samaneng.com,thlee5,224268.jpg,530f4545a7f2b368c9790eb7fdcd557836a31db75c63c69179822a5d512f27f5.jpg,1e55aae4-9195-422c-a431-bfed9906d3fc,1e55aae4-9195-422c-a431-bfed9906d3fc.jpg,Y +SAMAN,이하연,hylee3@samaneng.com,hylee3,026049.jpg,cac4f4aa357fb1d6f83be6db45442fe8a3fba07d0ebfc9526cd4867239e5144f.jpg,b9da7648-ecd6-45e4-992b-885457e55c7d,b9da7648-ecd6-45e4-992b-885457e55c7d.jpg,Y +SAMAN,이학노,hnlee1@samaneng.com,hnlee1,224129.jpg,1dc173f85ce8de55bf8ead27a077233cc8f721414b9ef828ea20f641b539679e.jpg,efded780-1f12-4b77-bef1-b1a77c89b2e0,efded780-1f12-4b77-bef1-b1a77c89b2e0.jpg,Y +SAMAN,이학렬,hrlee@samaneng.com,hrlee,213025.jpg,60e30b52467b2b0fe85b8c8d80c9bab2584cad8ad9af6368078204a4a4ea3862.jpg,e637293c-6a66-4f65-a808-bcd2f3c2a86d,e637293c-6a66-4f65-a808-bcd2f3c2a86d.jpg,Y +HANMAC,이한민,hmlee3@hanmaceng.co.kr,hmlee3,M20105.jpg,b717660012e86167175e39f2e92c76a28c9e583d82e8adcdb62477008ba65a5b.jpg,fd9e1e7f-c2ef-4080-bbe8-f0836948fbc8,fd9e1e7f-c2ef-4080-bbe8-f0836948fbc8.jpg,Y +SAMAN,이한울,hulee1@samaneng.com,hulee1,222294.jpg,dc54bf265c2cd53d0294532fab34c1e18553c86b9785534b886b4ad2bdab88bf.jpg,3d4f553f-1d92-4bd1-b23b-19a88d59839c,3d4f553f-1d92-4bd1-b23b-19a88d59839c.jpg,Y +SAMAN,이해광,hglee@samaneng.com,hglee,218092.jpg,c13cd0b9dd4f0df0736afa56cacc0b54fb0cc0752113f885c17f0d36882896e5.jpg,576bc3aa-51cf-404f-b978-0cdf13e2c9e8,576bc3aa-51cf-404f-b978-0cdf13e2c9e8.jpg,Y +SAMAN,이해랑,hrlee1@samaneng.com,hrlee1,225175.jpg,1ef44eeffa1f82ae441a3f3663de64843774e8295a104896bc76a90caca97a0b.jpg,bd5c7bdc-7b26-4a1e-9fc7-90b35dd2b218,bd5c7bdc-7b26-4a1e-9fc7-90b35dd2b218.jpg,Y +SAMAN,이혁,hlee@samaneng.com,hlee,225271.jpg,9ff9abf745c94596dd8b40022f99a22c427bbf48f1134670563357c34738f9be.jpg,4b2a8c74-5101-4658-8d76-c6021108ec51,4b2a8c74-5101-4658-8d76-c6021108ec51.jpg,Y +SAMAN,이혁우,hwlee1@samaneng.com,hwlee1,214084.jpg,9d89e43c147157a1731d0322614ed385611c935a51bfafaed1da071df6e1809b.jpg,ade14eee-3d1d-4abf-86e8-e323e12ccab1,ade14eee-3d1d-4abf-86e8-e323e12ccab1.jpg,Y +HANMAC,이현건,hglee2@hanmaceng.co.kr,hglee2,M22067.jpg,d70e5718e2a321404feacbbb8c595467f55f85c578dbd7a745679bd6bfa2304a.jpg,59a0687e-330c-42fa-88aa-46771b3e4864,59a0687e-330c-42fa-88aa-46771b3e4864.jpg,Y +SAMAN,이현경,hklee2@samaneng.com,hklee2,224265.jpg,c14b3929744b72b0aa58d19ada98d6ad8c4a36aba83c03c0cb2f8b3a6418e434.jpg,833ce1c7-8c2a-4ba0-8242-2882aebfd8d3,833ce1c7-8c2a-4ba0-8242-2882aebfd8d3.jpg,Y +SAMAN,이현구,hklee3@hanmaceng.co.kr,hklee3,203009.jpg,b1bbfdec7e148eb50bcd8f65431ac03141192b3db0baef5ecbf591783fc146a0.jpg,eafdaf84-bfd4-4a3d-8eec-8487ee87620e,eafdaf84-bfd4-4a3d-8eec-8487ee87620e.jpg,Y +SAMAN,이현규,hklee1@samaneng.com,hklee1,225128.jpg,fac15d4035574420ed273e0a967649201e69946efbbbaaa82ce7d7689276b7df.jpg,6a9853ad-98dd-49bc-99c0-a08f56b1bfb9,6a9853ad-98dd-49bc-99c0-a08f56b1bfb9.jpg,Y +SAMAN,이현동,hdlee@samaneng.com,hdlee,222107.jpg,8c2145b7d7890c810ffccd4a40b4a1654c2eb29ffa3d743b5efc500029a2e5c3.jpg,91eb9d0e-edcb-4a7a-accf-628ffc058df0,91eb9d0e-edcb-4a7a-accf-628ffc058df0.jpg,Y +SAMAN,이현무,hmlee@samaneng.com,hmlee,220100.jpg,cbe0c89ebab482013f74f36be9cbec46e00608fa5f3b3171d25c1f348e783e8b.jpg,1484b8b5-6b63-4c3f-bbe6-93a34dc06d2e,1484b8b5-6b63-4c3f-bbe6-93a34dc06d2e.jpg,Y +SAMAN,이현욱,hylee2@samaneng.com,hylee2,225235.jpg,4be94b5bdc503ddf5d4eb5308ad8ff483b6fbe0e8c789f62e3e85494f87efc69.jpg,b78ae9aa-12c9-4aff-9d4a-ac9182ca5c94,b78ae9aa-12c9-4aff-9d4a-ac9182ca5c94.jpg,Y +SAMAN,이현주,hjlee4@samaneng.com,hjlee4,025054.jpg,51a7dacb215d63920d59b4e2b8099148acf6baeeacf8de7c4ba8fe42ec1c4aec.jpg,cbb83ff3-decc-4fc2-b6dd-e0cc94460f35,cbb83ff3-decc-4fc2-b6dd-e0cc94460f35.jpg,Y +SAMAN,이현중,hjlee@samaneng.com,hjlee,225050.jpg,2e717d002f48b7bde7a57cef3f175ad5f26ad4d9749d0303956139f81c4bef99.jpg,b1275420-c5fb-45ad-85d3-9cb50b5c2528,b1275420-c5fb-45ad-85d3-9cb50b5c2528.jpg,Y +SAMAN,이현희,hhlee1@samaneng.com,hhlee1,225246.jpg,58d33f60b2c9ed7ad3605eebd609f483568a205b9d4aed1eeab25af5f8192a6e.jpg,530960e7-56b5-456b-9d44-b6aee3d5775e,530960e7-56b5-456b-9d44-b6aee3d5775e.jpg,Y +SAMAN,이형석,hslee3@samaneng.com,hslee3,225332.jpg,3db8cb08fd042b696b3cba8a2dea59b285d072d9efd1d679ee00e14c783a0574.jpg,87f41806-be21-4630-99c2-4d0e12633194,87f41806-be21-4630-99c2-4d0e12633194.jpg,Y +SAMAN,이혜선,hslee2@samaneng.com,hslee2,225184.jpg,6dc5c5f241b4a1c2919fd2c3a33a58be476781a51902dd647905417e70213008.jpg,98e72223-ac28-44f7-886f-bf4869569c90,98e72223-ac28-44f7-886f-bf4869569c90.jpg,Y +SAMAN,이호경,hklee@samaneng.com,hklee,218141.jpg,abbec9efdcf0dca9bdef656461a8db68c2544528091df923e7317df56f437cde.jpg,c9f0cf1a-ea5e-487d-985a-71a8d70bbaf6,c9f0cf1a-ea5e-487d-985a-71a8d70bbaf6.jpg,Y +JANGHEON,이호범,hblee@brsw.kr,hblee,J23301.jpg,86f010cc41424da6e42ccc885bf182bd0e6bd88ce363b101dab3d2396df4e930.jpg,737fd7c7-39a4-45c2-87ea-5e95a2d9f60c,737fd7c7-39a4-45c2-87ea-5e95a2d9f60c.jpg,Y +HANMAC,이호성,hslee5@hanmaceng.co.kr,hslee5,M08303.jpg,2636bbdb662e86847479bba6c1af707da69597406561a36d38be9883fc636226.jpg,3b59e314-051b-4c1d-9bbd-9b6f43035406,3b59e314-051b-4c1d-9bbd-9b6f43035406.jpg,Y +SAMAN,이호준,hjlee2@samaneng.com,hjlee2,209093.jpg,1914fb13e80a0d41c31bac6e29b07712fd29b6348e74882083e706b3548198c7.jpg,f462cd0c-5747-4a1d-bf62-e2ee6ba80ba9,f462cd0c-5747-4a1d-bf62-e2ee6ba80ba9.jpg,Y +HANMAC,이홍규,hglee4@hanmaceng.co.kr,hglee4,M19103.jpg,5f2500dd26c4f6b9e51474af5a3e315866b5f2773be6e0d9130ecace0ce94560.jpg,2e47e6ec-00e3-4c2b-8bf7-a57f2c6c6048,2e47e6ec-00e3-4c2b-8bf7-a57f2c6c6048.jpg,Y +SAMAN,이홍의,helee@samaneng.com,helee,224404.jpg,196c91108f01665ac4cef43b0ebc35db727ade24477c9b8217fc96b11787ab0e.jpg,cfcfd215-a75f-4be4-9f00-d500910b6bd1,cfcfd215-a75f-4be4-9f00-d500910b6bd1.jpg,Y +HANMAC,이화영,hylee4@hanmaceng.co.kr,hylee4,M12205.jpg,84e6f13fea505f88821ac5a101cb996fd8d1d4f65e2365a985662c67f1e38a5e.jpg,1ba1fdd6-9461-409c-a74a-380fd31bfa77,1ba1fdd6-9461-409c-a74a-380fd31bfa77.jpg,Y +SAMAN,이화창,hclee@samaneng.com,hclee,222298.jpg,42be26f92abc2bcb2b33aefba973b7b050e1a37b2e08a10775363cd0cc49f562.jpg,7ceb34f2-1036-4805-80cc-09a4226d0074,7ceb34f2-1036-4805-80cc-09a4226d0074.jpg,Y +HANMAC,이환섭,hslee6@hanmaceng.co.kr,hslee6,M22031.jpg,4c85261470cea32a172eb4867af94a774ad03e6c96369aca214b060063c8562c.jpg,2e3df6ff-029b-4781-bcb0-1be2069786f3,2e3df6ff-029b-4781-bcb0-1be2069786f3.jpg,Y +PTC,이효상,hslee7@brsw.kr,hslee7,P10301.jpg,e162d5dc3648ae11b6d6249a9494be56bf6603c7bc96c9c7c452f2231672cbd2.jpg,6ce9c95d-4758-4e26-ab44-75c08e319abb,6ce9c95d-4758-4e26-ab44-75c08e319abb.jpg,Y +SAMAN,이효석,hslee@samaneng.com,hslee,216066.jpg,2f6039906b6889250837b3fdf8307dfdbb19ff11d414c31589b940b88dea9e5f.jpg,c517511e-bf4f-4999-9aa2-70966da05536,c517511e-bf4f-4999-9aa2-70966da05536.jpg,Y +JANGHEON,이훈재,hjlee5@brsw.kr,hjlee5,J24101.jpg,b1090ac6179a283ab09150d95a09b94b049fe056f454c1e291c10be8c9024ef4.jpg,9425dd2d-23c1-4666-b7c7-347429d30f5c,9425dd2d-23c1-4666-b7c7-347429d30f5c.jpg,Y +SAMAN,이흔석,hslee4@samaneng.com,hslee4,226032.jpg,39d6ec60bab008ad3297f94a2c98db6b57070ebef2c6ee9275e014f4c9a8b302.jpg,5cd479a3-3d6d-41d0-8ecb-3826bdd81df7,5cd479a3-3d6d-41d0-8ecb-3826bdd81df7.jpg,Y +SAMAN,이흥래,hryi@samaneng.com,hryi,219104.jpg,d06cb8f36b03c4d963fd58d356b493245b798cded4194453d52c98bb0dde3a0d.jpg,1af44f0c-ebec-4a1f-9a45-70a0619b1d0a,1af44f0c-ebec-4a1f-9a45-70a0619b1d0a.jpg,Y +SAMAN,이희남,hnlee@samaneng.com,hnlee,222052.jpg,14c0ef01c6642d4f63a256c746a47512f9617c2c7f1eab7add40acb0cc429758.jpg,b26ebf7b-027e-4697-bf8e-af2703b1d692,b26ebf7b-027e-4697-bf8e-af2703b1d692.jpg,Y +SAMAN,이희명,hmlee2@samaneng.com,hmlee2,221307.jpg,f304c8bf39ec3146fa33af8157ee6a08fb45187247850d6c45b9175265d963da.jpg,1c4245eb-bf76-4576-bf44-cbe250297e2a,1c4245eb-bf76-4576-bf44-cbe250297e2a.jpg,Y +SAMAN,이희영,hylee@samaneng.com,hylee,217003.jpg,0133b8e3b929b3179c229a8669619cd538ac8ec33abd049a6b0d88705173cb1c.jpg,3e912453-93b9-46a1-9def-6a3e85327cf1,3e912453-93b9-46a1-9def-6a3e85327cf1.jpg,Y +SAMAN,이희용,hylee1@samaneng.com,hylee1,223193.jpg,ab49acd691efca2995ffb82425b8822f0d2b721c66b9e7f64092f56eae39ea73.jpg,163d8da6-047c-4702-9129-f12ef9652f75,163d8da6-047c-4702-9129-f12ef9652f75.jpg,Y +SAMAN,이희원,hwlee3@samaneng.com,hwlee3,224031.jpg,0452699a14e699de509befffc2740da83737bee23c011295ee380d4970f65eda.jpg,74383128-7e07-4e75-870c-0f9699507885,74383128-7e07-4e75-870c-0f9699507885.jpg,Y +SAMAN,이희일,hilee1@samaneng.com,hilee1,224115.jpg,d2460171ca49613b5d9b31440cb7ff146b2a388ae9a1108af8ce80ba34a4445c.jpg,cc0f086d-3247-4088-b2e1-625ee4943323,cc0f086d-3247-4088-b2e1-625ee4943323.jpg,Y +SAMAN,이희정,hjlee3@samaneng.com,hjlee3,221271.jpg,d0f9c20f156d44c822c627341cc0daa9b4c1019a14d22fd0e9026f1e2746be7b.jpg,aef62733-67f9-4a8c-b3f8-1f60e2229228,aef62733-67f9-4a8c-b3f8-1f60e2229228.jpg,Y +SAMAN,이희철,hclee1@samaneng.com,hclee1,225004.jpg,2d29460313a0023c1afe91a1a828e2da5a4ab3af14fae209a6e8128a5d4e8d6b.jpg,fc4774f3-5969-46a1-88a0-6a0501cad411,fc4774f3-5969-46a1-88a0-6a0501cad411.jpg,Y +SAMAN,인광진,kjin@samaneng.com,kjin,225035.jpg,fdf406affc9b0f89278fd331b1a082481c7e132e2355391895d52d3ed1398acf.jpg,a66f3347-ca11-42d5-954e-2bc4831faff5,a66f3347-ca11-42d5-954e-2bc4831faff5.jpg,Y +SAMAN,인디라,indira@samaneng.com,indira,223015.jpg,3b7744ade688d6de2541cf92f2020dbc54cc48806b4a2b8a7f70a1fc6f8859a5.jpg,24980139-b65f-4ad8-8dd6-7582d4b4d52b,24980139-b65f-4ad8-8dd6-7582d4b4d52b.jpg,Y +SAMAN,인치윤,cyin@samaneng.com,cyin,222022.jpg,2d69f7a766afb6968be4bd0795afc881e6b6b5148db60f9192056ca0664bbece.jpg,488782cb-8fb3-41f5-b9d9-ac252f7897d9,488782cb-8fb3-41f5-b9d9-ac252f7897d9.jpg,Y +SAMAN,임경진,kjlim@samaneng.com,kjlim,220199.jpg,43be0cf1b41c75af2f21274a97a99c07f44cf9319c0429cbf1c071bf5b1712e5.jpg,9f140a6d-02c3-4bb0-ab5b-971f78f67399,9f140a6d-02c3-4bb0-ab5b-971f78f67399.jpg,Y +SAMAN,임계종,gjim@samaneng.com,gjim,226100.jpg,55f29c962c8ae9a362cd98aa68467427a73590fc17e7e77eaf373a7cc10baa79.jpg,75436715-dbb9-4f3a-ba7e-ccb6a3fe25ca,75436715-dbb9-4f3a-ba7e-ccb6a3fe25ca.jpg,Y +SAMAN,임광수,kslim1@samaneng.com,kslim1,223203.jpg,8fa08b9cf1102ee1775e55b06ef1c2af6cfad3ce3480676e9d891ac3d538501c.jpg,632a16f0-11a9-425f-849a-270c62221b2f,632a16f0-11a9-425f-849a-270c62221b2f.jpg,Y +SAMAN,임근석,kslim2@samaneng.com,kslim2,225378.jpg,e90677eea01128a910372a484fc6afcbaafefb20e052929a973ec4e7934c7e32.jpg,79af7046-fc0a-461e-a172-dfad451c113a,79af7046-fc0a-461e-a172-dfad451c113a.jpg,Y +SAMAN,임근선,kslim@samaneng.com,kslim,216158.jpg,6b658ee3c23eb5e24eeca3de9f6913fff19892649899f45569f257aa7af73e4b.jpg,2fa7f2ab-9932-4081-b1c3-3859e6c66c8e,2fa7f2ab-9932-4081-b1c3-3859e6c66c8e.jpg,Y +SAMAN,임기봉,gblim@samaneng.com,gblim,219165.jpg,128156b1f4f4b10a90e3f853acc11f8a35038944d093ecd44e0795bb269f3075.jpg,05f6bf91-6310-4b96-a551-422c8a7bac65,05f6bf91-6310-4b96-a551-422c8a7bac65.jpg,Y +SAMAN,임동민,dmlim@samaneng.com,dmlim,217091.jpg,6a49c91139fbf3ae026c3741de71c9a5899f7d312ada9e5ce773436a58f397e3.jpg,f92279b8-0df7-4df0-8673-81206e3473fc,f92279b8-0df7-4df0-8673-81206e3473fc.jpg,Y +SAMAN,임동하,dhlim@samaneng.com,dhlim,220081.jpg,a522587c5fdd0142e41266173f64dfd87e85cffe3eef839f6ca31d46022eb785.jpg,880d210c-00cd-4c2b-a078-e784d911ca1b,880d210c-00cd-4c2b-a078-e784d911ca1b.jpg,Y +SAMAN,임명재,mjlim@samaneng.com,mjlim,224290.jpg,de87300aa1003f511e8f4908a59d9807978536a15eb4072b5dc3bb3c47bb0ef4.jpg,bb91d567-c1b9-4ce3-a90d-d8bdbdf35131,bb91d567-c1b9-4ce3-a90d-d8bdbdf35131.jpg,Y +SAMAN,임민경,mkim2@samaneng.com,mkim2,222087.jpg,219222946fcf7359628f5db2eca1bf6e900fa2c07d448724541687c1d07fa03d.jpg,889e7a6f-f99b-4401-8b54-0a94b0bf1851,889e7a6f-f99b-4401-8b54-0a94b0bf1851.jpg,Y +SAMAN,임병훈,bhlim@samaneng.com,bhlim,224083.jpg,b5fa46eaea79e1a2d44103dd261e470db306626f5ebb94b453f6bc44657fa3ec.jpg,73c586c9-f4a9-4054-8d4e-fa038d5b83ac,73c586c9-f4a9-4054-8d4e-fa038d5b83ac.jpg,Y +SAMAN,임성엽,sylim1@samaneng.com,sylim1,224070.jpg,3c8472d1dcc3deab852a78f3f878955ebf895e3f11c2d6f09c1499f42a8bec06.jpg,3cac14c1-e74e-4d30-8c29-3c410897bf65,3cac14c1-e74e-4d30-8c29-3c410897bf65.jpg,Y +SAMAN,임세교,sklim@samaneng.com,sklim,217037.jpg,1b60d4364932c3c40ed057acf9b95a7a18d6fefe782df1b0aa7020d5777d7daa.jpg,1e4c4664-0103-4961-b705-0821ac4abd8f,1e4c4664-0103-4961-b705-0821ac4abd8f.jpg,Y +SAMAN,임슬기,sglim@samaneng.com,sglim,0205075.jpg,c0c99575ba5026a47ea36c52a6463fbda7acacfd4dcf2fbb088063e2d7b2512c.jpg,bbdcf099-c26f-493f-b433-b747b279e964,bbdcf099-c26f-493f-b433-b747b279e964.jpg,Y +SAMAN,임승현,shlim@samaneng.com,shlim,196084.jpg,1c22c9c6268149c9f7f638354af4d95bd45066aeecd74f2bf808afcb7c420dcd.jpg,adeffa38-d03f-46fc-966e-a0f2ad5dd10d,adeffa38-d03f-46fc-966e-a0f2ad5dd10d.jpg,Y +SAMAN,임언수,eslim@samaneng.com,eslim,221176.jpg,d34eb83a4d6ea0d4e1f428fac4560d1f52da0f7d0c53ded2718d421470695a94.jpg,68b183c8-b4bf-43d9-9cb1-04522f1929dc,68b183c8-b4bf-43d9-9cb1-04522f1929dc.jpg,Y +HANMAC,임연재,yjim@hanmaceng.co.kr,yjim,M22066.jpg,31de0ab07a0768ba16229bbbb84168057a4f042a3314ed987b548a9e2ef38ce8.jpg,1fea2e33-01bf-4bc7-8e73-c4bb6dc27271,1fea2e33-01bf-4bc7-8e73-c4bb6dc27271.jpg,Y +SAMAN,임완수,wslim@samaneng.com,wslim,191007.jpg,c43bcb0d14e5d8b639de9b182a603f28e6c84af416443a932b18732a3795251d.jpg,08a5196b-eea2-410b-ba9c-78e0695e6357,08a5196b-eea2-410b-ba9c-78e0695e6357.jpg,Y +HANMAC,임유화,yhlim@hanmaceng.co.kr,yhlim,M23038.jpg,2f16da6855ceb91aef2ef5ed5b2c7a8d0ddde91608393bb1f3549bd931b69f9a.jpg,332725b3-266c-48f6-9133-64aac7602e7d,332725b3-266c-48f6-9133-64aac7602e7d.jpg,Y +SAMAN,임재덕,jdlim@samaneng.com,jdlim,220041.jpg,61b8d5c29f1d49b1e1cdd7a89f9c30664d923688c664258cc21f1eade4173283.jpg,4bfd6a8a-8809-4529-b431-937d97bd7e03,4bfd6a8a-8809-4529-b431-937d97bd7e03.jpg,Y +SAMAN,임재만,jmlim@samaneng.com,jmlim,207065.jpg,dece50ace89e5e8b391ad45a48097bedd24f19c753420105fba39fb284bac678.jpg,8835f5e6-79ab-4720-8380-2bff367ac274,8835f5e6-79ab-4720-8380-2bff367ac274.jpg,Y +SAMAN,임재성,jslim@samaneng.com,jslim,214034.jpg,4a23fc597b40045f64840cbb6b9c41fd47eee1156131d4b457154a2cc840cead.jpg,51b38c3e-a1cb-4324-922d-9178ae0d6d4d,51b38c3e-a1cb-4324-922d-9178ae0d6d4d.jpg,Y +SAMAN,임정남,jnlim@samaneng.com,jnlim,224179.jpg,0ae3461ad4a7da64e53bcca97c44676a894d23396c23321779ff1dcf0b4a041a.jpg,cc2b7e81-8629-4eff-b637-0b618b2f3a27,cc2b7e81-8629-4eff-b637-0b618b2f3a27.jpg,Y +SAMAN,임정택,jtlim@samaneng.com,jtlim,223353.jpg,241beea8663283f199b146df7eca9f50dcc6f0107c4d0b50230a31f2abaa611c.jpg,f2747118-dda0-4e5f-9ec7-4d7796eb23fd,f2747118-dda0-4e5f-9ec7-4d7796eb23fd.jpg,Y +SAMAN,임정희,jhlim2@samaneng.com,jhlim2,026017.jpg,3588e99346b3bee3fd80c942a5a54ad04a9bfcc626601f4bbda6a45822d51cd2.jpg,6a0a77b0-832f-456e-9337-f97034dc1821,6a0a77b0-832f-456e-9337-f97034dc1821.jpg,Y +SAMAN,임정희,jhlim1@samaneng.com,jhlim1,026039.jpg,f9026f1a53aca35a2347af807d79b15dab87636eac04fe6474cafc6330b1d921.jpg,9f72af18-0330-428d-bc32-2eca4e9b40d4,9f72af18-0330-428d-bc32-2eca4e9b40d4.jpg,Y +SAMAN,임종열,jrim@samaneng.com,jrim,223357.jpg,da8c9c6d18537d703e62ffb60ebe5c98656dfeab99986de88bba75acd4e7c5c6.jpg,2894fb13-2324-4ef2-9f20-f1eb5acb02bf,2894fb13-2324-4ef2-9f20-f1eb5acb02bf.jpg,Y +SAMAN,임지선,jslim1@samaneng.com,jslim1,224144.jpg,9b47fef48c9c570e545cd2e65cc09b8466b1af230c79276d9511d0dea223b47b.jpg,986797cf-dc36-4dc6-8a26-3778f864f08b,986797cf-dc36-4dc6-8a26-3778f864f08b.jpg,Y +SAMAN,임지은,jeeim@hanmaceng.co.kr,jeeim,224304.jpg,131bb29cde16567817ed1718f8cc0001b8167c3e602739ecdc2ab08cf4680725.jpg,3d69776e-7bd7-4f2a-a6e6-0f42465d3436,3d69776e-7bd7-4f2a-a6e6-0f42465d3436.jpg,Y +SAMAN,임지훈,jhlim@samaneng.com,jhlim,210096.jpg,afae241d833776d0e4344d41c4ea562d3a2f2380842f26d0d085efb0c7a4e23c.jpg,20fd8123-f537-4b57-9917-7f70a19eb176,20fd8123-f537-4b57-9917-7f70a19eb176.jpg,Y +SAMAN,임채규,cklim1@samaneng.com,cklim1,225212.jpg,2a37594952447792b1792fe067a5ad8a656eb679b024090e8e93df21a0cee3ec.jpg,75f79f45-29da-4a8e-8f1c-a512a34d9067,75f79f45-29da-4a8e-8f1c-a512a34d9067.jpg,Y +SAMAN,임철모,cmlim@samaneng.com,cmlim,223356.jpg,cada8976d320ed2db8690102b87b9fd0de800912ea2acb009ce2a854a47c7e92.jpg,99ac313f-4520-47d5-9614-3c1975cc6693,99ac313f-4520-47d5-9614-3c1975cc6693.jpg,Y +SAMAN,임철우,cwlim@samaneng.com,cwlim,225086.jpg,23a956fea8720999f8c42d0c7b926e1aa9c9beb996218a332507a185db339a99.jpg,dad87e1c-d497-4eee-b899-2db7d3be1f8b,dad87e1c-d497-4eee-b899-2db7d3be1f8b.jpg,Y +SAMAN,임철우,cwlim1@samaneng.com,cwlim1,225165.jpg,5c5701d828de28cf5737a90a51fed496259dcc5a9cfe74529c39802b6a835fe3.jpg,0d3b266f-b3e5-4859-99e9-cb18f1b9a69c,0d3b266f-b3e5-4859-99e9-cb18f1b9a69c.jpg,Y +SAMAN,임해선,hslim1@samaneng.com,hslim1,183503.jpg,49e8f63f97603ee26f66aebe067e93c19375e98c685d017a4227c368eed2ed68.jpg,4c25fd41-23ab-46bf-aed4-23fdf73b1fc6,4c25fd41-23ab-46bf-aed4-23fdf73b1fc6.jpg,Y +SAMAN,임헌목,hmlim@samaneng.com,hmlim,195150.jpg,fa65ba62104cf93535a37a1e02f8f341abbf19d95e1c1e1d0c5fe9ba8b9ad039.jpg,f8cefc88-0a32-492c-a56e-55552054490c,f8cefc88-0a32-492c-a56e-55552054490c.jpg,Y +SAMAN,임현석,hslim2@samaneng.com,hslim2,221221.jpg,286eba1a658e0133800d0151d1187d8f930a2c26a1159818a3fef509d82e0796.jpg,14198e99-64a5-4f59-baa0-ad1d403372fc,14198e99-64a5-4f59-baa0-ad1d403372fc.jpg,Y +SAMAN,임현식,hslim3@samaneng.com,hslim3,218063.jpg,f2223dd070a7a468076f0866570cc949c58a2000b18e2489c03bdee53cfa2137.jpg,e33476af-9d33-4893-b566-4f1ca543559e,e33476af-9d33-4893-b566-4f1ca543559e.jpg,Y +SAMAN,임현우,hwyim@samaneng.com,hwyim,225324.jpg,a267167a6d9b8613c60a6edea35350644a77687ca811e198b7cb3cd766ac4cba.jpg,92480d32-1212-46e8-9a9e-6ebca062e739,92480d32-1212-46e8-9a9e-6ebca062e739.jpg,Y +HANMAC,임현철,hclim@hanmaceng.co.kr,hclim,M21455.jpg,f413ad17c993b8348daf88568add837c69d5a4fa3146a22f807c1c1b4a76cfc3.jpg,e69b51be-c823-4a03-be00-9da845d8d8a5,e69b51be-c823-4a03-be00-9da845d8d8a5.jpg,Y +HANMAC,임호인,hiim@hanmaceng.co.kr,hiim,M26008.jpg,bf0c7e609f1da4dbcd13b6b1a59a5f8b0573187bd0c54c913583e557796d4790.jpg,44bba2a0-c7a6-4ef5-b56f-72543a4897b4,44bba2a0-c7a6-4ef5-b56f-72543a4897b4.jpg,Y +SAMAN,임효진,hjlim1@samaneng.com,hjlim1,204280.jpg,7f20934441fa9e5459d8819fa13d3d76ed076790e93fba78f78e86b4d6ccc4c3.jpg,4f99f34f-f9e5-4464-9ec5-0944a09eb2e0,4f99f34f-f9e5-4464-9ec5-0944a09eb2e0.jpg,Y +SAMAN,장경진,kjjang@samaneng.com,kjjang,226142.jpg,86c4da32f26a3674f67065651250ad86053eb495834af6df06f034f84fe0f6fd.jpg,7b33ff3a-70ba-4365-b1c4-7eae193293b8,7b33ff3a-70ba-4365-b1c4-7eae193293b8.jpg,Y +SAMAN,장기영,kyjang@samaneng.com,kyjang,212135.jpg,46f40e9e7389ab7932bd04a10aa058e5d4d7dca434eb9c39b008d5432bed3882.jpg,7357f84a-0ae8-4878-966f-7636bd53fe96,7357f84a-0ae8-4878-966f-7636bd53fe96.jpg,Y +HANMAC,장길상,gsjang@hanmaceng.co.kr,gsjang,M21452.jpg,818a04ce4918165099def2567aa7f71dcdfe1671ec8e56c5a19850c49b75d34c.jpg,a074f06d-1df5-4f1b-a016-9736356d7484,a074f06d-1df5-4f1b-a016-9736356d7484.jpg,Y +SAMAN,장덕진,djjang@samaneng.com,djjang,223209.jpg,7a8ba1c9391deaf31d715de86d2f3d66a201905dc93bf752cc2b999bdab90ac7.jpg,d9145b79-19b0-4f43-9dae-be0200530133,d9145b79-19b0-4f43-9dae-be0200530133.jpg,Y +SAMAN,장동화,dhjang@samaneng.com,dhjang,223196.jpg,a9e47a2c93f11e665a5e7dd368e66d9ad1bec2c052c3cf9f5b3f34d1e29b49cf.jpg,3f053836-3c54-4035-ab56-75dd1b72d268,3f053836-3c54-4035-ab56-75dd1b72d268.jpg,Y +SAMAN,장두진,djjang1@samaneng.com,djjang1,222029.jpg,f1f216289a2c6bcf81615582007b5066d3ce39609e7522ecd9e3a5940cdbeb2c.jpg,44c59223-b9ac-4e06-93d6-1975186ceb1a,44c59223-b9ac-4e06-93d6-1975186ceb1a.jpg,Y +SAMAN,장래욱,ruchang@samaneng.com,ruchang,217035.jpg,85d9a954f91d6e8be698fb33572af9fdedf2a0dfcbba76ace44a2a4adec92969.jpg,10d72a73-32ce-40d9-b106-d5439518781d,10d72a73-32ce-40d9-b106-d5439518781d.jpg,Y +SAMAN,장면학,mhjang1@samaneng.com,mhjang1,224376.jpg,8c0f10fa14af4f216b1772d71b1191aff4fd38f3cc6de79f8760035826cb8a17.jpg,eed4fc3b-3ed5-4ef8-b268-0bfab2b7ba5d,eed4fc3b-3ed5-4ef8-b268-0bfab2b7ba5d.jpg,Y +SAMAN,장명희,mhjang@samaneng.com,mhjang,194017.jpg,284ba50e09a91bb1db187fb132bf7d3ee69d0eb135c8fdc9b02702d666f0fcb7.jpg,d7db5751-4390-4e76-8c22-3686a93ff814,d7db5751-4390-4e76-8c22-3686a93ff814.jpg,Y +SAMAN,장미연,myjang@samaneng.com,myjang,025131.jpg,1c0193833affb0b9eb07d2117cccfc9bda0db6dd9881e327797a70598d301146.jpg,883e5e87-c47a-4565-94b6-f32cff9ec6cb,883e5e87-c47a-4565-94b6-f32cff9ec6cb.jpg,Y +SAMAN,장민수,msjang@samaneng.com,msjang,222256.jpg,ec10c2c39ec41080dc1eea6a42a74d30bf2cc3a110bf7e49fdb00a4fc54470b5.jpg,3cedf787-685e-4c4f-aff0-63993ed7ab7f,3cedf787-685e-4c4f-aff0-63993ed7ab7f.jpg,Y +SAMAN,장보식,bsjang@samaneng.com,bsjang,224377.jpg,2a29db52f6b0f7fb7c9add9c835d8a3e41d38274d77174693a6b35afc89c74e6.jpg,76295fe1-0e7e-4b06-b076-1ff658731664,76295fe1-0e7e-4b06-b076-1ff658731664.jpg,Y +SAMAN,장부식,bsjang2@samaneng.com,bsjang2,213059.jpg,74dd4302cd9d1d2a92decaaf532e0b7d13c999328491e80551ecb065550be7a2.jpg,00f952a0-5608-4f5a-b042-36b840736262,00f952a0-5608-4f5a-b042-36b840736262.jpg,Y +SAMAN,장상현,shjang1@samaneng.com,shjang1,219115.jpg,284dcf54d39900ebc2b1920cef6f2a5ad71d6dceb070eb80838a9f453f6984c1.jpg,768a9b9c-5a0f-4a15-8f10-cbecd096524c,768a9b9c-5a0f-4a15-8f10-cbecd096524c.jpg,Y +HANMAC,장석춘,scjang@hanmaceng.co.kr,scjang,M19101.jpg,ef6b88aedd702a9bb06c8a4d156d148c312fc7a91794b9fdba4f9dc2a3a51267.jpg,263f05da-f3c1-4b8b-8990-fc0ce058e6fa,263f05da-f3c1-4b8b-8990-fc0ce058e6fa.jpg,Y +SAMAN,장성현,shchang@samaneng.com,shchang,225177.jpg,39a7d34280adc1001c03cf74a0aab26e6a19758c740bdf9e97abc62b36bf07a3.jpg,94ffb63a-5eec-4d79-a30e-0d20054dc584,94ffb63a-5eec-4d79-a30e-0d20054dc584.jpg,Y +SAMAN,장세현,shjang3@samaneng.com,shjang3,223014.jpg,bb685570a5bfc90ecd18474e70c17558625e89edf38357054dc164276661c4ae.jpg,8419228a-f9d2-4f07-865a-6b94cd2dc56d,8419228a-f9d2-4f07-865a-6b94cd2dc56d.jpg,Y +SAMAN,장소희,shjang2@samaneng.com,shjang2,222289.jpg,46b47a37eda8e67bb0f0397e20a29df59460a736648d2d0b93ad3d710dee21af.jpg,85dbca06-9105-4637-8294-717f36d1e5fb,85dbca06-9105-4637-8294-717f36d1e5fb.jpg,Y +SAMAN,장연경,ykjang@samaneng.com,ykjang,219111.jpg,22dda3cec97c02150c0c9d2da9e353759889d1dc7adafc5de91e86f61bd44d84.jpg,8248936c-2d6e-4feb-9bb0-a90f843ffe0d,8248936c-2d6e-4feb-9bb0-a90f843ffe0d.jpg,Y +SAMAN,장연수,ysjang@samaneng.com,ysjang,217105.jpg,85458ea2a34bc391d52b2772a432a54b8a5d08b4a83ceed8a5d0328807fb97a0.jpg,0c4e5777-0c23-47d9-a79d-b52928f211fd,0c4e5777-0c23-47d9-a79d-b52928f211fd.jpg,Y +SAMAN,장영규,ykjang1@samaneng.com,ykjang1,225232.jpg,9fe578c100a816d71ce827fc78a3ee743983a97d46bc7d5339ec224573b594a0.jpg,fced1a08-8836-468d-af5a-7a1e3a675b6a,fced1a08-8836-468d-af5a-7a1e3a675b6a.jpg,Y +SAMAN,장영완,ywjang@samaneng.com,ywjang,225225.jpg,2e3f1a3671492680869c9c4c927f20d1cc69d3e8ab09ce5936b1f0abd51dbef9.jpg,cf9d9ac2-7a31-41cc-9161-6adb37c2705c,cf9d9ac2-7a31-41cc-9161-6adb37c2705c.jpg,Y +SAMAN,장완식,wsjang@samaneng.com,wsjang,195105.jpg,804e9a8b37a1bb5bf825105bf9e0813d5dc92f204de48c8dd138cb50790ead28.jpg,4d7af2ac-337e-4844-8a97-bbe2a4d3a81d,4d7af2ac-337e-4844-8a97-bbe2a4d3a81d.jpg,Y +SAMAN,장용섭,ysjang1@samaneng.com,ysjang1,220147.jpg,671865e94c1863cb0a118bf556d02364f3a25c53227fa3892306738e0c351db7.jpg,1d8a8d0e-8551-4fd0-8fa7-8024ea305abd,1d8a8d0e-8551-4fd0-8fa7-8024ea305abd.jpg,Y +SAMAN,장우현,whjang@samaneng.com,whjang,224305.jpg,2e5b223463688550d224bb06d239c3fa6650ee8a5cc0675941ec50e8c039133f.jpg,572cd34b-2ce4-4911-a86c-2da6a68a8d84,572cd34b-2ce4-4911-a86c-2da6a68a8d84.jpg,Y +SAMAN,장유선,ysjang3@samaneng.com,ysjang3,221147.jpg,ba6d58e2a0378ebebaeb0179724c9072d1dfbc3ef52991ead7e13fe545047b76.jpg,05fb4801-ff54-4fc2-9b24-06b01cbbc977,05fb4801-ff54-4fc2-9b24-06b01cbbc977.jpg,Y +SAMAN,장윤정,yjjang@samaneng.com,yjjang,223128.jpg,86d2270e5a9529c7e407c557f0e05d5a2eec86a9050eaf6811b64864f2ef080f.jpg,a6453a41-b0dc-4f97-a7ef-3bcaf3fd6a84,a6453a41-b0dc-4f97-a7ef-3bcaf3fd6a84.jpg,Y +SAMAN,장은경,ekjang@samaneng.com,ekjang,220136.jpg,74d4dfad9ef43bb4e56e8818616d44ef1e844dca84402416548cc3c42e2aea07.jpg,96ac6bad-a456-4bb6-8764-63b500c228db,96ac6bad-a456-4bb6-8764-63b500c228db.jpg,Y +SAMAN,장은호,ehjang@samaneng.com,ehjang,225372.jpg,f0d3d5436f93d003aa7937bfaf8027f31eb6f4c899e24103427f01589012df59.jpg,0b7c2ac0-871f-4ed0-a9d0-5c98a9c638ad,0b7c2ac0-871f-4ed0-a9d0-5c98a9c638ad.jpg,Y +SAMAN,장익근,igjang@samaneng.com,igjang,219056.jpg,54e759e16c66e52b549116f8afa10f33f9fac496a18835b119e0892a86827f71.jpg,9b472d26-70cc-4b15-94c2-10750b25f20d,9b472d26-70cc-4b15-94c2-10750b25f20d.jpg,Y +HANMAC,장종찬,jcjang@hanmaceng.co.kr,jcjang,M02210.jpg,6553022cc4c9e0c256bf1427caabb8512cd505a16a7ebb54afc160aeefca6ada.jpg,011b25b7-c062-41d7-aba3-964b066df42c,011b25b7-c062-41d7-aba3-964b066df42c.jpg,Y +SAMAN,장진영,jyjang@samaneng.com,jyjang,203015.jpg,3580086f9577b32864961b755bfcb4acc940d4fbc7651b0937c1158b2116df94.jpg,2bb1be69-0007-4d42-b9af-72f62b326530,2bb1be69-0007-4d42-b9af-72f62b326530.jpg,Y +SAMAN,장진영,jyjang1@samaneng.com,jyjang1,225063.jpg,c0b0def138a3e99058c2bd95cc0c97f640b62ff57532f369aa52d169738022ea.jpg,a5e8fedc-d5f5-4382-a4e8-e403ba2a8efd,a5e8fedc-d5f5-4382-a4e8-e403ba2a8efd.jpg,Y +SAMAN,장채운,cwjang1@samaneng.com,cwjang1,225066.jpg,b416c6d4da54ba728c631eb41f9ec6d1d1f02830850deb62fa98135a1bf2c95d.jpg,c18cbb8a-f162-4ffb-bb1f-1bec15449720,c18cbb8a-f162-4ffb-bb1f-1bec15449720.jpg,Y +SAMAN,장철원,cwjang@samaneng.com,cwjang,212068.jpg,cc209458237bf352263b47d2b66ca1c0ea7d675cb1a9dc5488899a36ad7cbc61.jpg,878a761e-b156-4fc3-bb41-af6b92f70570,878a761e-b156-4fc3-bb41-af6b92f70570.jpg,Y +SAMAN,장하영,hyjang@samaneng.com,hyjang,025052.jpg,b333d7356393e01ed540a661a5aac246f0ffa99c2ab3db676120b1a2a575c5a9.jpg,a9f209d8-a51a-4916-8f81-7156d7cc7304,a9f209d8-a51a-4916-8f81-7156d7cc7304.jpg,Y +SAMAN,장한규,hgjang@samaneng.com,hgjang,224080.jpg,eacb3035ea60cb0a7345930446c0a568946b360c84707b05b60f5bf69714dd7e.jpg,f0ea4ea0-02b9-444c-aab8-d1f2627b5fc6,f0ea4ea0-02b9-444c-aab8-d1f2627b5fc6.jpg,Y +HANMAC,장혁진,hjjang2@hanmaceng.co.kr,hjjang2,M25001.jpg,dbfdf1bba241fc759763fa122fcf08f2d6231a4ed7568a4663ec08f5cc24571f.jpg,f9c0e978-89ae-473e-9ba3-cd758d131c3e,f9c0e978-89ae-473e-9ba3-cd758d131c3e.jpg,Y +SAMAN,장홍준,hjjang@samaneng.com,hjjang,206019.jpg,9592cf2ccd1071a190ead76315c57f688f2c14258c71b5c264af73fd862a4d70.jpg,36682993-0388-4dfd-b9f4-e16288f91846,36682993-0388-4dfd-b9f4-e16288f91846.jpg,Y +SAMAN,장홍준,hjjang1@samaneng.com,hjjang1,221066.jpg,a9d1bdad1b2d54dbe2fca864dfa1b62c4d4c002e147483c2f348c420910ae546.jpg,84b36527-0db3-4e61-8b97-74b25ad6d065,84b36527-0db3-4e61-8b97-74b25ad6d065.jpg,Y +SAMAN,장효송,hsjang@samaneng.com,hsjang,224093.jpg,f01381d5640e13146e3bf2131aeb58f7d3933b95a6f73f9c94e7392827d47fdf.jpg,1060b99a-fe1b-411a-9d4c-4a9a88e807dd,1060b99a-fe1b-411a-9d4c-4a9a88e807dd.jpg,Y +SAMAN,장희원,hwjang@samaneng.com,hwjang,023088.jpg,d1607c4ec138b57debd5d674b053adcc10205756dec1e64c4df2c8d410a759c7.jpg,3c69a15a-0240-4237-868c-defbd5a6c0cd,3c69a15a-0240-4237-868c-defbd5a6c0cd.jpg,Y +SAMAN,전남희,nhjun@samaneng.com,nhjun,025025.jpg,8b2b0d093ae970a4e484453957461b046c4a35928ae91a2b978f9a7e680632ed.jpg,b9a36aaf-b38e-4456-ad21-29b6b48076b3,b9a36aaf-b38e-4456-ad21-29b6b48076b3.jpg,Y +HANMAC,전미현,mhjeon@hallasanup.com,mhjeon,B20328.jpg,3f3a47f98f113a55dc6a2aa632723d3ff3f1a3909e0ec20dc2a37925937754ed.jpg,81c2aa01-b564-43d7-ad86-53d78a079757,81c2aa01-b564-43d7-ad86-53d78a079757.jpg,Y +HANMAC,전민기,mkjeon@hanmaceng.co.kr,mkjeon,M24011.jpg,7329a98a08be9a006c7c339c319fe8e68ce42141931ea4f20f28fff50b543967.jpg,e72a85fc-ea32-456a-85c1-047b128881e8,e72a85fc-ea32-456a-85c1-047b128881e8.jpg,Y +SAMAN,전범식,bsjeon@samaneng.com,bsjeon,211040.jpg,b38d2abdd413554cac0a2e1e47eb8a2d9ce60378ece2116e1bc0adc2aebe5b81.jpg,f376599c-bfd2-4705-b4e1-06c993ead385,f376599c-bfd2-4705-b4e1-06c993ead385.jpg,Y +SAMAN,전범진,bjjeon@samaneng.com,bjjeon,204074.jpg,9e3ba67478cfb4c8664130841cd6c09480fd3097361ca9638c237c3cf8f15193.jpg,98f3a86f-b224-4061-995e-46bd8ef89e12,98f3a86f-b224-4061-995e-46bd8ef89e12.jpg,Y +SAMAN,전병익,bijun@samaneng.com,bijun,223162.jpg,1608b7fd4d45f4de314ed0649692c6b2ba98dd81cdc27c2a484287e3b758ee01.jpg,9f633bed-1c18-4417-85f4-e1d534004f16,9f633bed-1c18-4417-85f4-e1d534004f16.jpg,Y +SAMAN,전보민,bmjeon@samaneng.com,bmjeon,224200.jpg,371993afdbbb7e2c1b4816a20f724e4f3415c85a8c8af5c08ac640cc5d426220.jpg,4758503c-02f8-4253-811e-bc784e9c1ca7,4758503c-02f8-4253-811e-bc784e9c1ca7.jpg,Y +SAMAN,전상표,spjeon@samaneng.com,spjeon,225376.jpg,17ef4291aec34d6180b7a75950be7ad844ccec18e4d90df09901b9df0a8be93d.jpg,02ae554f-4164-4e26-a86a-c13ece8cf2e4,02ae554f-4164-4e26-a86a-c13ece8cf2e4.jpg,Y +HANMAC,전상현,shchun1@brsw.kr,shchun1,J05208.jpg,1f6d3ca24a51ee93ef402f2cf900068cc4c0f1ea41c6317c2b5774632c0903fb.jpg,484feca0-9ab2-4f24-ade5-b1c31773f0f5,484feca0-9ab2-4f24-ade5-b1c31773f0f5.jpg,Y +SAMAN,전성구,sgjeon@samaneng.com,sgjeon,223232.jpg,d8db72eec408178892a1348ad83a7ec00ad5258a7cafe0e70afddfc35b0b6aec.jpg,b3c19356-a324-4bc9-b1ce-e11919334ecc,b3c19356-a324-4bc9-b1ce-e11919334ecc.jpg,Y +HANMAC,전성구,sgjeon2@hanmaceng.co.kr,sgjeon2,M21429.jpg,4db192da9597f5ec4bb49e8d5bd0a8f0c617bc7cf455410f71f9bdb2249cbba1.jpg,d8a8f696-1322-4c69-9393-38ef8b4992df,d8a8f696-1322-4c69-9393-38ef8b4992df.jpg,Y +HANMAC,전성모,smjeon@hanmaceng.co.kr,smjeon,M24058.jpg,54e1e5bfef496e9644f87412dc102c417341218be3d68f76aded2526f19512a5.jpg,ebb308e3-aa9d-48ac-8c66-df0fbf42b109,ebb308e3-aa9d-48ac-8c66-df0fbf42b109.jpg,Y +SAMAN,전소라,srjeon@samaneng.com,srjeon,024121.jpg,191cd894ceb1168c727f0f2bd031ad85392795bdf80b2494f41eab6151f0dcff.jpg,263ec0c8-9ffe-4e3b-9369-c966014c7513,263ec0c8-9ffe-4e3b-9369-c966014c7513.jpg,Y +HANMAC,전수진,sjjeon@hanmaceng.co.kr,sjjeon,M21468.jpg,7b0a95f577b67dea3a05a6506768127d6a3021f45cd5858cb0246ffd84ada121.jpg,b63bd7ad-dc89-4399-96ff-60aa774960ad,b63bd7ad-dc89-4399-96ff-60aa774960ad.jpg,Y +SAMAN,전순환,swjun@samaneng.com,swjun,220028.jpg,8b7c3b4135b642ac35d8ee4045b41eef73368bf59560e72bb218c7d42df6f679.jpg,2359dc31-5226-4c68-91d9-dc9d4428bc6b,2359dc31-5226-4c68-91d9-dc9d4428bc6b.jpg,Y +SAMAN,전아은,aejeon@samaneng.com,aejeon,024064.jpg,5e36438f006edfd2f18cf4043a0aeb9b0a33d923c86b339fe2378b9a71dcde34.jpg,cce268b1-39af-4b19-a7e1-aaf2a9a981ac,cce268b1-39af-4b19-a7e1-aaf2a9a981ac.jpg,Y +HANMAC,전오현,ohjeon@hanmaceng.co.kr,ohjeon,M25067.jpg,592a95993c9c905bedd81f70d9694e6f5feeae4af9ef11f5a6101f1c46af1a45.jpg,85628a89-4297-40a8-b4c4-7ceb67572013,85628a89-4297-40a8-b4c4-7ceb67572013.jpg,Y +SAMAN,전윤희,yhjeon@samaneng.com,yhjeon,224308.jpg,9bae96c5e84481de958b0f0eee625d2a72d431758176d956d84ebe76599690c5.jpg,56d1f37d-93e3-4c5c-a1bd-2fbc9180ba9c,56d1f37d-93e3-4c5c-a1bd-2fbc9180ba9c.jpg,Y +HANMAC,전은수,esjeon@hanmaceng.co.kr,esjeon,M16401.jpg,b8500a3e029b9437df0a01192b3627f46bb6bf3a98551d2c85b944d2be0393ac.jpg,3b6ad4b4-b6b8-48ef-80b9-d4e7bf4a433b,3b6ad4b4-b6b8-48ef-80b9-d4e7bf4a433b.jpg,Y +SAMAN,전제경,jgjeon@samaneng.com,jgjeon,224091.jpg,50ec81b7e2e2cfe934b5d48fb875ca6dcbc776f5fb8e7f2fcbac6098505f8df9.jpg,ebea9ab6-85e7-45dc-b3b6-0b1b0a145945,ebea9ab6-85e7-45dc-b3b6-0b1b0a145945.jpg,Y +HANMAC,전준수,jsjeon@hanmaceng.co.kr,jsjeon,M16511.jpg,b9a1b9dc98cc172ff867ef817c638c36f074065be0b57f5ee69eb53a1e0448fb.jpg,f267186c-9ea7-4d07-b837-561b760e1491,f267186c-9ea7-4d07-b837-561b760e1491.jpg,Y +SAMAN,전지영,jyjeon@samaneng.com,jyjeon,026038.jpg,f26a36d441d6f84649db5cebec0d8b536002962438632e9ccc994e35ee95661a.jpg,c7f32c9c-b235-484f-9ef3-024675042dfd,c7f32c9c-b235-484f-9ef3-024675042dfd.jpg,Y +HANMAC,전찬성,csjeon@hanmaceng.co.kr,csjeon,M07317.jpg,15a42efff1f06373e98227d1a59299bc556f7d8326c1b5953efb2f91991c29af.jpg,3bd3c67e-713e-4d16-8b9a-eb00fa3126b0,3bd3c67e-713e-4d16-8b9a-eb00fa3126b0.jpg,Y +SAMAN,전태훈,thjeon@samaneng.com,thjeon,223255.jpg,a91ec40393ebcd61e97b9932b7d066584602865bb9c3d2be2a30b81ab0b2a93a.jpg,504ab98e-f8d9-419a-8865-a90d37b6fb3f,504ab98e-f8d9-419a-8865-a90d37b6fb3f.jpg,Y +SAMAN,전필성,psjeon@samaneng.com,psjeon,226078.jpg,3dde157ffc59598700f7b4fdd49a7c875d27c1d600557638c2b84e94de99d70a.jpg,c4463dff-a01a-4402-ae0e-41cbaa7efbb5,c4463dff-a01a-4402-ae0e-41cbaa7efbb5.jpg,Y +SAMAN,전한설,hsjeon@samaneng.com,hsjeon,219035.jpg,f32ff9bd8c59426920682fd819609caabc686314ec51180e00cf1b7d3dcbb826.jpg,5e5124f4-bffb-4dbc-839e-4587b3623007,5e5124f4-bffb-4dbc-839e-4587b3623007.jpg,Y +SAMAN,전현정,hjjeon1@samaneng.com,hjjeon1,025125.jpg,a34c514f5a7a62ae3ab3518921861bff84640e0021bf83209e775dad8e1648eb.jpg,623bd084-e97e-4a4f-aad4-a8e4e459065b,623bd084-e97e-4a4f-aad4-a8e4e459065b.jpg,Y +SAMAN,전형근,hgjeon@samaneng.com,hgjeon,224235.jpg,2fd9bc9452fd117b4936bc53ab4db21a7b529c0a3121be1d816951f43bc0470a.jpg,fcfee728-3b71-4fce-a713-714ceb3e4244,fcfee728-3b71-4fce-a713-714ceb3e4244.jpg,Y +SAMAN,전형민,hmjeon@samaneng.com,hmjeon,223367.jpg,7bc3e0ee2e10313ebd5b246889a53c594c5fa2325b8728f52e7f76d7f0319769.jpg,45ad04c0-e8d5-451a-8151-40dd6b99dcf9,45ad04c0-e8d5-451a-8151-40dd6b99dcf9.jpg,Y +SAMAN,전형섭,hsjeon2@samaneng.com,hsjeon2,225268.jpg,9fbca72da6b5c969d13829b9ac28d1ac828987d9e2f26a95028c2fab81391c08.jpg,a3baf885-8a43-4292-836d-18d29296e6ed,a3baf885-8a43-4292-836d-18d29296e6ed.jpg,Y +SAMAN,전형진,hjjeon@samaneng.com,hjjeon,224071.jpg,a18d01a8b3fdbe4ab94e46f5ffec347f548c090a5f62b0c2fc7ae8afb17f617c.jpg,927bfb60-f8c3-4572-89ed-cc6516a51bd3,927bfb60-f8c3-4572-89ed-cc6516a51bd3.jpg,Y +SAMAN,전호성,hsjeon3@samaneng.com,hsjeon3,226074.jpg,69bb6d565cb5ca97c6f75aab2f0e93add33854cb29277d5d213603b7d3325b72.jpg,cea9adf6-e97d-48e6-b3f2-3a903adfe4df,cea9adf6-e97d-48e6-b3f2-3a903adfe4df.jpg,Y +SAMAN,전홍찬,hcjun@samaneng.com,hcjun,220070.jpg,c3a45acf30b74a365d26f42a70b93f9ede9dfe89b3e28d6afdc451f5fe00e94e.jpg,cc17b352-97df-413b-907e-8d5b73ffd8c9,cc17b352-97df-413b-907e-8d5b73ffd8c9.jpg,Y +SAMAN,전효만,hmjun@samaneng.com,hmjun,208178.jpg,75f7da3d18e88a7cf7915510ce095235d66487614c4d93ac3dc2c608ec2c78a1.jpg,eeae6f8b-6a09-4d86-aaab-443aa57798b3,eeae6f8b-6a09-4d86-aaab-443aa57798b3.jpg,Y +SAMAN,전희숙,hsjeon1@samaneng.com,hsjeon1,024107.jpg,35469776c5cdc90d94c6afbf84202bda47a64cf5a06894df4b89e58ecfecbb34.jpg,26648142-14a9-4b39-bf2b-81c645e7f728,26648142-14a9-4b39-bf2b-81c645e7f728.jpg,Y +SAMAN,정갑균,ggjeong@samaneng.com,ggjeong,225256.jpg,0cc2f8745c0c233a3fbe8f673c28656aa599bbe91686699a24173274d6035fc9.jpg,59aa19b6-3223-48e8-825c-ec0b8ab342df,59aa19b6-3223-48e8-825c-ec0b8ab342df.jpg,Y +SAMAN,정경열,kyjung@samaneng.com,kyjung,223182.jpg,057ffacacbbd26cd0eaa8d0f17e4d1b7eccd1c8c08874ca9c15e169e0573da49.jpg,0f187592-6cab-47e4-af9e-3d1acef90122,0f187592-6cab-47e4-af9e-3d1acef90122.jpg,Y +SAMAN,정경조,kjjeong@samaneng.com,kjjeong,222265.jpg,d6458ad9374a31f00221907621e2e45caee869d5d9abfc5690aa3b0d1a875a21.jpg,fe93ec02-02db-4ae5-9375-9e1e22cb141c,fe93ec02-02db-4ae5-9375-9e1e22cb141c.jpg,Y +SAMAN,정계영,gyjung1@samaneng.com,gyjung1,225120.jpg,384c5f84a5431632d962899a04020345bc3b279db31c98f28c7fdb97d2835f6d.jpg,ab7db4bb-1b3f-46a5-9236-631daccdc568,ab7db4bb-1b3f-46a5-9236-631daccdc568.jpg,Y +SAMAN,정계완,kwjeong@samaneng.com,kwjeong,218001.jpg,1c15d77a0da015a67a2cf540b942d7ad84f1365c482a56b0acc85aaf0e8cb22e.jpg,e48f207b-d470-442e-8be4-a3fd7327fc5c,e48f207b-d470-442e-8be4-a3fd7327fc5c.jpg,Y +SAMAN,정광남,knjeong@samaneng.com,knjeong,226131.jpg,a37f91624e5de62c6484c89d059fca84bd5ac939b0990485837debce690b253d.jpg,f829a0cb-fa16-4d95-a53c-073dd9564a21,f829a0cb-fa16-4d95-a53c-073dd9564a21.jpg,Y +SAMAN,정광섭,kschung@samaneng.com,kschung,223329.jpg,a5e72b5e63c370fb0be9958a90ae838fb2277657faad0801e2a92012e36ef8fd.jpg,f69528ee-0956-4d7a-8a2b-3dbead8642b6,f69528ee-0956-4d7a-8a2b-3dbead8642b6.jpg,Y +SAMAN,정광호,khjung@samaneng.com,khjung,222239.jpg,51582c395fff0ffeb3ff03745bdbf4e12a3f423a363e044c3c28045f092aa3a0.jpg,92bb8d64-ae78-4de6-8a14-1b92b8eaec8c,92bb8d64-ae78-4de6-8a14-1b92b8eaec8c.jpg,Y +SAMAN,정국환,ghjeong1@samaneng.com,ghjeong1,220143.jpg,11779f6cd453d071a441da42935c7e8a07e19346ee6ea396cdda77f80b592ffa.jpg,6371aec3-2756-4846-9b73-3116aff80fa0,6371aec3-2756-4846-9b73-3116aff80fa0.jpg,Y +SAMAN,정권,kjeong@samaneng.com,kjeong,225234.jpg,26f48deeff7627f02ece9e48349006a24c1cf52f6b69035f66a0f8e1705f2d69.jpg,79fc3974-fc2f-4449-b58d-bc36c1cfdfd3,79fc3974-fc2f-4449-b58d-bc36c1cfdfd3.jpg,Y +SAMAN,정귀한,ghjeong@samaneng.com,ghjeong,219197.jpg,f80437d730de3f57759447ca024c050cbcb1dd3d07f09096440569bac5abe26f.jpg,102d7491-03eb-437d-bf69-61e64ba7ecdf,102d7491-03eb-437d-bf69-61e64ba7ecdf.jpg,Y +SAMAN,정규영,gyjung@samaneng.com,gyjung,222130.jpg,b8800b46a73f1485415abc90ace463f7bff586c47059887aa8f1399556b4131b.jpg,35ae81a5-cdbf-43b0-aae7-1eb7ba5a4d6d,35ae81a5-cdbf-43b0-aae7-1eb7ba5a4d6d.jpg,Y +SAMAN,정근식,gsjung@samaneng.com,gsjung,216168.jpg,cb8648d94bc49950c0fdaaa4c427ebb97677b99219621bd616d7a4b5e1474390.jpg,04268038-f776-4a97-9320-7b4c459385f7,04268038-f776-4a97-9320-7b4c459385f7.jpg,Y +SAMAN,정기일,kijeong@samaneng.com,kijeong,217114.jpg,fc2c9c04453c95ab1a50bb8ea633658d40b74fd63bf7663b719c2f081649172f.jpg,ede2916f-90bb-4ed2-8018-5b0699f43474,ede2916f-90bb-4ed2-8018-5b0699f43474.jpg,Y +SAMAN,정기철,kcjeong@samaneng.com,kcjeong,222144.jpg,5e7d3f5c6d07e865abdd1f0dd688f7192eee39dfb87a69f1445b174cfa396358.jpg,4bc9c6db-d67c-4618-89e4-207908546b2b,4bc9c6db-d67c-4618-89e4-207908546b2b.jpg,Y +SAMAN,정낙훈,nhjung@samaneng.com,nhjung,216135.jpg,20d817c73eb0d0b89ed4efc0e649a8f004e7d8365225decceeee5112ee346d1d.jpg,fe3105ad-6f47-4e27-9c34-ad34fe2bda74,fe3105ad-6f47-4e27-9c34-ad34fe2bda74.jpg,Y +SAMAN,정대환,dhjeong@samaneng.com,dhjeong,225262.jpg,e85fe9b8edad940f9b798d6fd0e913c5eb60f3f684c1922523b7c90a404c1b85.jpg,de70ec29-1c57-4f18-a79c-2cfd175bc804,de70ec29-1c57-4f18-a79c-2cfd175bc804.jpg,Y +HANMAC,정도영,dyjung2@hanmaceng.co.kr,dyjung2,M22074.jpg,664241ef84696850297704d1948252db4bc8ffd11869d3fbb957b55c06c6cb70.jpg,664b4f3a-9e46-49fc-b78f-4e5b3fb0f1a7,664b4f3a-9e46-49fc-b78f-4e5b3fb0f1a7.jpg,Y +SAMAN,정도윤,dyjung@samaneng.com,dyjung,224032.jpg,681636a9c42e51425575e3a7d0b864733b700dba0f6c707ed0c129a27a4b26d0.jpg,4c069ee8-d46e-491f-85ee-7c14cb2780ec,4c069ee8-d46e-491f-85ee-7c14cb2780ec.jpg,Y +SAMAN,정동언,dejeong@samaneng.com,dejeong,222221.jpg,24f6a58e614ceba70ec6f4b0940c4864e3ded2f2fd6bdb8968551cb2504db02e.jpg,d759bec4-3727-4eb3-8cb4-a0ef112a6cce,d759bec4-3727-4eb3-8cb4-a0ef112a6cce.jpg,Y +SAMAN,정동희,dhjung@samaneng.com,dhjung,223192.jpg,6474ef16103fcb5169ca4117c990483d0b65e111677ef3dc28e591af572ff11f.jpg,f268bef0-676d-4a70-9b88-3d9ff2e3b5b6,f268bef0-676d-4a70-9b88-3d9ff2e3b5b6.jpg,Y +SAMAN,정두휘,dwjung@samaneng.com,dwjung,223099.jpg,b2d6e8c686cfb413ecf4d7cc15570a26ec03275ca23b74ff0b00f401da6bb54c.jpg,32fbd9a5-88af-43aa-a682-a4e79bfe2c1c,32fbd9a5-88af-43aa-a682-a4e79bfe2c1c.jpg,Y +SAMAN,정만직,mjjeong@samaneng.com,mjjeong,221218.jpg,8e517a937cc661532d216ca4dbf6a6e2e1d8b4cc1a73563f047bb63173fb4115.jpg,5135f170-6473-421d-8fb2-c82d4f651fe8,5135f170-6473-421d-8fb2-c82d4f651fe8.jpg,Y +SAMAN,정명준,mjjeong1@samaneng.com,mjjeong1,216070.jpg,8aff6158eee006d4876ac80b4a45c6d3925ee0d25ed1d4a3402011be194cfe10.jpg,b0c8bb05-1e93-4810-bb58-2550ff492b6f,b0c8bb05-1e93-4810-bb58-2550ff492b6f.jpg,Y +SAMAN,정미경,mkjung@samaneng.com,mkjung,219174.jpg,e3a16e559cd856b0da1a888e1f4a3af9ec3aaac2e83a906bbb751e4dd1a24dd4.jpg,3a89bc85-d2c9-4e31-9caa-53cd237957d0,3a89bc85-d2c9-4e31-9caa-53cd237957d0.jpg,Y +SAMAN,정미정,mjjeong2@samaneng.com,mjjeong2,224391.jpg,bd6e7cfa4495cd17a5fb6ca41fa071cee5448fd42cb3395559aa89b45caf491a.jpg,5d623028-4082-445b-a60c-b40bd3f22b81,5d623028-4082-445b-a60c-b40bd3f22b81.jpg,Y +HANMAC,정미희,mhjeong@hanmaceng.co.kr,mhjeong,T05308.jpg,8e843a505838b6039748a4eacc796a0cf39daa16d7059281310a70a1058ff85b.jpg,6d5a9e34-427b-40a1-afec-62731b4c5e3d,6d5a9e34-427b-40a1-afec-62731b4c5e3d.jpg,Y +SAMAN,정상구,sgchung@samaneng.com,sgchung,207264.jpg,f8c1be0a8d3df5c1e4baf5d0686aa1c5447992458bf99c02858a410e4786a415.jpg,35a54f55-a161-4dce-a146-fe7cbdd060bf,35a54f55-a161-4dce-a146-fe7cbdd060bf.jpg,Y +HANMAC,정상범,sbjeong@hanmaceng.co.kr,sbjeong,M17402.jpg,bfb1214029418280cb937484160bced6f880020ee8c08688f483c78a9983e07a.jpg,2fce3fcf-af0f-425c-bffc-00469c5bbe1c,2fce3fcf-af0f-425c-bffc-00469c5bbe1c.jpg,Y +SAMAN,정상봉,sbjung@samaneng.com,sbjung,224337.jpg,81e689a7612771b8010318e6bca4ead88c8bbfac7e17be72cd789dac4d48ac02.jpg,a4abbdee-9cd2-4f72-a8dd-af2295442036,a4abbdee-9cd2-4f72-a8dd-af2295442036.jpg,Y +SAMAN,정서연,syjung1@samaneng.com,syjung1,226009.jpg,ac7f4a04d25b88a2feebdf1cb9d8b2c5c0a0297a5e9c4129680052727288ec0c.jpg,d17f2c4c-1362-4d1c-8a5c-42b2fec8b1f4,d17f2c4c-1362-4d1c-8a5c-42b2fec8b1f4.jpg,Y +SAMAN,정선진,sjjeong@samaneng.com,sjjeong,225070.jpg,cb686e6dd30cfcc7e5219d98172479784b4f67287f5e2f244f75a2bc0cb10426.jpg,d8a48797-4fc6-4bcf-9d80-fabce7ee7cb2,d8a48797-4fc6-4bcf-9d80-fabce7ee7cb2.jpg,Y +SAMAN,정성오,sojung@samaneng.com,sojung,220115.jpg,93c81b0f332fc5f62abb45caeaa7290d78aa5ce15589f909b0295098d4e60a02.jpg,3569908b-7f03-414a-8b39-837b0eacb19f,3569908b-7f03-414a-8b39-837b0eacb19f.jpg,Y +SAMAN,정성운,sujeong@samaneng.com,sujeong,222196.jpg,02833d365644f68a54d7e74aa41e76a43acb247d4e2e4abec561d84564bd1a64.jpg,89ff5f2d-269a-4b80-8397-aca29d4d868f,89ff5f2d-269a-4b80-8397-aca29d4d868f.jpg,Y +SAMAN,정성일,sijung@samaneng.com,sijung,223333.jpg,1fd58c5fabd8e4df991219539e62936ea53f83504859baa8ef7fb4fc48e35ce4.jpg,b3aea9ff-37d1-4fc7-878a-5d98e4994ed3,b3aea9ff-37d1-4fc7-878a-5d98e4994ed3.jpg,Y +HANMAC,정성호,shjeong@brsw.kr,shjeong,B24064.jpg,80c33da6e7247b0cdc25ba52e6d2e9a1f61b048457dfd6e78dabb0eace629216.jpg,6cec9e83-ea8a-4aaf-8442-80b8a60ae181,6cec9e83-ea8a-4aaf-8442-80b8a60ae181.jpg,Y +SAMAN,정소연,syjung@samaneng.com,syjung,217135.jpg,2150e2061a802c20761a461839838a880e60dc2a661dacdb724019ae1780d059.jpg,af952d48-67f2-45a4-86b2-8d77d0b9dad7,af952d48-67f2-45a4-86b2-8d77d0b9dad7.jpg,Y +SAMAN,정소연,sychung@samaneng.com,sychung,023124.jpg,f0431b15d0a7f0c4d5bfe3121d650a3d748be7eb185a72e9903cd1697b7d312f.jpg,9da6bf58-bdee-44ad-b845-a98d5513f166,9da6bf58-bdee-44ad-b845-a98d5513f166.jpg,Y +SAMAN,정송수,ssjung@samaneng.com,ssjung,219164.jpg,eabf2e3602467c7bdf759566ea61f6ae93a1d85a7db08bc884558a9b84a543f6.jpg,614456b2-7ccf-44ab-892a-8a4fad21657c,614456b2-7ccf-44ab-892a-8a4fad21657c.jpg,Y +SAMAN,정수지,sjjung@samaneng.com,sjjung,223342.jpg,732d3e9212b38475f3b5ca833f2e5625d24c8e87c93dae61f883823c45b74f8c.jpg,4e182235-6e4d-4958-badf-42fe4f4fee1f,4e182235-6e4d-4958-badf-42fe4f4fee1f.jpg,Y +SAMAN,정순철,scjeong@samaneng.com,scjeong,219022.jpg,c119967e87a3919ac68626a9116b60d9993ac57bcc6263fea83949206557aaa1.jpg,9aae7d20-e92d-4dda-a552-b67e6c3f9f47,9aae7d20-e92d-4dda-a552-b67e6c3f9f47.jpg,Y +SAMAN,정승엽,syjeong@samaneng.com,syjeong,217063.jpg,e6b915a408fad15e973f644e39f4891dfed80323702d960b635f5a2b96111d17.jpg,e3e81647-a84c-4064-ac8b-024ecec5838e,e3e81647-a84c-4064-ac8b-024ecec5838e.jpg,Y +SAMAN,정승조,scchung@samaneng.com,scchung,207086.jpg,71ded7e9cea143e82b2778f90c52ef0e91b2eb9fc7e6f69383cc2b727f2c6e24.jpg,b806c51b-3eac-4533-b79d-ff3f0d41676a,b806c51b-3eac-4533-b79d-ff3f0d41676a.jpg,Y +HANMAC,정승훈,shjung@hanmaceng.co.kr,shjung,M25012.jpg,a5523b33fd0dee68c83039a6783cf515052ffb48de90e5bd75516680a79fce53.jpg,5ff22e50-e2e0-4dea-ab59-a07037a132c4,5ff22e50-e2e0-4dea-ab59-a07037a132c4.jpg,Y +SAMAN,정양성,ysjung@samaneng.com,ysjung,195078.jpg,0d71c082d196f6247934ba9ae5767f84304e27670c4f8f57da64628f97067c1a.jpg,3448d2cd-4243-478f-9f9d-123f186326e6,3448d2cd-4243-478f-9f9d-123f186326e6.jpg,Y +SAMAN,정연배,ybjung@samaneng.com,ybjung,220246.jpg,82a25e537b38349b0622ac4a2390743f238e7fd9508bf44c03e91d9f12c81d4a.jpg,76885d97-83f6-4c1e-8ec3-49ebbbb73205,76885d97-83f6-4c1e-8ec3-49ebbbb73205.jpg,Y +SAMAN,정영기,ykjung@samaneng.com,ykjung,225163.jpg,8a819337829d905cfc1c016d91326d9e5681a1858ae77943e3883f6defdbe41d.jpg,294e69bb-32a4-4256-8199-5909ce938a42,294e69bb-32a4-4256-8199-5909ce938a42.jpg,Y +SAMAN,정완순,wsjung@samaneng.com,wsjung,223065.jpg,c4ec28518e68d43c8d38edb576276c7fa69a9c084f00e4af5c627936995ef2ff.jpg,9c6d421c-5cee-4ef2-9bf3-263ea7d25ac7,9c6d421c-5cee-4ef2-9bf3-263ea7d25ac7.jpg,Y +SAMAN,정요한,yhjung2@samaneng.com,yhjung2,220234.jpg,f2d0fbece634e0ef7f0ad9a9617623f3ccb5621e02888b864e1178ca657d6f84.jpg,92f9f069-1ddb-4b81-8088-b53ad53390f6,92f9f069-1ddb-4b81-8088-b53ad53390f6.jpg,Y +SAMAN,정용권,ykchung@samaneng.com,ykchung,225229.jpg,53fe106aa0665cec7aa7114a4e49c4d2f4459cec838d62ddeba17ee733cd1dbe.jpg,69546963-ea13-461b-8185-bc0659643774,69546963-ea13-461b-8185-bc0659643774.jpg,Y +SAMAN,정용주,yjjeong@samaneng.com,yjjeong,223349.jpg,93fdf2d397109247c6d3445c34e7bcd28a16529d58ddf3825661f28f6de633b6.jpg,0aa33b0a-7d90-4683-9090-df1c00351725,0aa33b0a-7d90-4683-9090-df1c00351725.jpg,Y +SAMAN,정용찬,ycjung@samaneng.com,ycjung,200025.jpg,9a2f9c65919e8870eef2cdf4ed419cd3c950e85be5c963b96d1053c46923c338.jpg,9308940d-b113-4354-8e39-7c1e50206dbf,9308940d-b113-4354-8e39-7c1e50206dbf.jpg,Y +SAMAN,정용헌,yhjung1@samaneng.com,yhjung1,204224.jpg,752c38fca22b4fbb514188a89303ef3af5c3b9af6e4e010385c0151962e46c7e.jpg,35c99308-5639-414a-8766-afa60fd908ec,35c99308-5639-414a-8766-afa60fd908ec.jpg,Y +SAMAN,정우성,wscheung@brsw.kr,wscheung,221082.jpg,2787736151e0fd6790c88f1f9447cd8a41c2b3feb86bb6ba84a21d2bc5e13dd7.jpg,60b183da-2464-44eb-9e4c-9589d79b79ea,60b183da-2464-44eb-9e4c-9589d79b79ea.jpg,Y +SAMAN,정우진,wjjung@samaneng.com,wjjung,212035.jpg,5bf27b3580b3f4f61f982eacf8c7aca721b6dd289c0aadcdb3c20209f9982380.jpg,75038dce-58ae-4adf-883b-8c5d269126cc,75038dce-58ae-4adf-883b-8c5d269126cc.jpg,Y +HANMAC,정우창,wcjeong2@hanmaceng.co.kr,wcjeong2,M25004.jpg,725242cb4aa7ef4590098710f89ad19ff73cdd20808465bafca2e9a6b72a9bd2.jpg,6ddf4251-709a-47dc-9448-c3c8bf370eed,6ddf4251-709a-47dc-9448-c3c8bf370eed.jpg,Y +SAMAN,정우철,wcjeong@samaneng.com,wcjeong,223395.jpg,1c3adbd9b536de4bdac9c9a772cf543ca5471f388f15c350c61f7e32f70237f8.jpg,d5d91b12-19ab-4b64-85db-5b5528082cc0,d5d91b12-19ab-4b64-85db-5b5528082cc0.jpg,Y +SAMAN,정우형,whjung@samaneng.com,whjung,224314.jpg,9d264210b9144acb8954ac84a71da319140650feb3df598d31d561fd3df31cec.jpg,fea89198-fb34-4d23-93a3-acd88561f0d9,fea89198-fb34-4d23-93a3-acd88561f0d9.jpg,Y +SAMAN,정원빈,wbjeong@samaneng.com,wbjeong,220152.jpg,1d851b4d894a1b5125514f92c5e8b2c4e2dfe084dc438f7444e3ea69ef485238.jpg,9dfa0eb5-6c20-4938-bcdd-e1accc5dc9e0,9dfa0eb5-6c20-4938-bcdd-e1accc5dc9e0.jpg,Y +SAMAN,정원준,wjjeong@samaneng.com,wjjeong,215082.jpg,5f021b578c8e5dce0d95914b7fa31bbd568ba3aabd19073832d78640fc9b4195.jpg,f9047983-f7c0-464e-8ba7-c70678a5f9b9,f9047983-f7c0-464e-8ba7-c70678a5f9b9.jpg,Y +HANMAC,정원호,whjeong@hanmaceng.co.kr,whjeong,M23018.jpg,27ab941a2f33dcf00961cacece9931eca8d50749b8f5a63fe3f1eb358c53c814.jpg,b256b6d3-19f7-4cd7-a00d-2a0aa35c75f1,b256b6d3-19f7-4cd7-a00d-2a0aa35c75f1.jpg,Y +SAMAN,정유석,ysjeong@samaneng.com,ysjeong,224119.jpg,b25f305a666f20163cf98d6a00d771b793d3813c6ed6b07d4576b0d65343f091.jpg,f42cf8f3-7482-43bc-80cc-ce72dafb8ab3,f42cf8f3-7482-43bc-80cc-ce72dafb8ab3.jpg,Y +SAMAN,정유숙,ysjung1@samaneng.com,ysjung1,026075.jpg,8e933b8df2d6fefc3f5f9aae1f5ba2565ab1d1852c11da1c16451b44de1b3958.jpg,f51507dc-ee8f-4ea9-9fdb-0fab33b968aa,f51507dc-ee8f-4ea9-9fdb-0fab33b968aa.jpg,Y +HANMAC,정유종,yjjeong2@hanmaceng.co.kr,yjjeong2,M25039.jpg,07280622d5d7f0e500392cd652c77904cb6050130066f42d573c4ba40808f9ee.jpg,4571a871-fc8e-4157-bf47-bd3f54b91668,4571a871-fc8e-4157-bf47-bd3f54b91668.jpg,Y +SAMAN,정윤호,yhjung@samaneng.com,yhjung,220101.jpg,e6d20d16a0dc654580d673c0e8e8b36b1905654958f4d57b43eb5616baf7c458.jpg,a7918efd-701f-4842-9fcc-7d5483c336a0,a7918efd-701f-4842-9fcc-7d5483c336a0.jpg,Y +SAMAN,정은구,egjeong@samaneng.com,egjeong,223059.jpg,515438cadffb435d3a295b0997d0b8f6b1c2c462c1fafa6c8a0f13bbc6d14e92.jpg,556cdb5e-7da9-4a1c-a533-026cf9731766,556cdb5e-7da9-4a1c-a533-026cf9731766.jpg,Y +SAMAN,정은선,esjung@samaneng.com,esjung,025068.jpg,fb37814da003688f5b29cdcaff658eff11cf1f48bf40ca8cf0091868b49df043.jpg,ca9b7424-2adb-4a3e-9d52-dd9c2c488d7b,ca9b7424-2adb-4a3e-9d52-dd9c2c488d7b.jpg,Y +SAMAN,정은택,etjeong@samaneng.com,etjeong,221131.jpg,9fcc859fe91c83135cb4a041da6f0235a3bd879d20b5ee8a64ad49384d772464.jpg,0e9f9767-1e90-453b-bc4c-8aec325afc54,0e9f9767-1e90-453b-bc4c-8aec325afc54.jpg,Y +SAMAN,정은혜,ehjung1@samaneng.com,ehjung1,221163.jpg,5018ddc007fb62859dc5b86f744916048f233af1ea8ec0c91fdd0784858cc6a8.jpg,4d512675-b0c4-4773-97b4-5eb0157b0bcb,4d512675-b0c4-4773-97b4-5eb0157b0bcb.jpg,Y +SAMAN,정은희,ehjung@samaneng.com,ehjung,224386.jpg,ec0eb97aec323ace9b17fb38d79b3028848c67dbe54646872a00f61f1d8dbf8c.jpg,891e3577-1e64-4e5e-a007-03b3cbb63b8e,891e3577-1e64-4e5e-a007-03b3cbb63b8e.jpg,Y +SAMAN,정의앙,eajeong@samaneng.com,eajeong,226023.jpg,af4081462f16c8219d4a6550e010f080a850e725c4c3c717907d87f4a28ed47e.jpg,0269e41f-76b0-44ea-82fc-39f83f5ce366,0269e41f-76b0-44ea-82fc-39f83f5ce366.jpg,Y +SAMAN,정의택,etjung@samaneng.com,etjung,223242.jpg,70c7fa6d30548c62ad9491cee35bd465e4dc4d58228a4e4d631513c927a9f16f.jpg,219aa7e5-68d7-4789-971a-172ef5722c29,219aa7e5-68d7-4789-971a-172ef5722c29.jpg,Y +SAMAN,정이준,ijjung@samaneng.com,ijjung,212119.jpg,e4b83330d4f999c1c5dccef75c15e4532bfb7e3fcf630685b0d35eb5a140351d.jpg,3256dd24-cb93-4997-b497-4fb5af7a5c97,3256dd24-cb93-4997-b497-4fb5af7a5c97.jpg,Y +SAMAN,정인식,ischung@samaneng.com,ischung,222207.jpg,6ac7595b098729835c90e7ec34b4c79128f3a18d291de313db7247f6394b8973.jpg,27faa022-b15a-46dc-bf55-42ac1b68b1a2,27faa022-b15a-46dc-bf55-42ac1b68b1a2.jpg,Y +SAMAN,정일구,ikjeong@samaneng.com,ikjeong,185005.jpg,145a1edb1072342a41830ac4a50a82fb500dd13fa99382f5b02e284983a0d584.jpg,8f89f56b-4815-48ff-99fb-43971d061845,8f89f56b-4815-48ff-99fb-43971d061845.jpg,Y +SAMAN,정일영,iyjung@samaneng.com,iyjung,025132.jpg,607591b941194d1543811b89968d2124201e1fff441b2ae66862dbff2c7cf67f.jpg,be4e6dd6-8b1e-49f8-bcd9-583f221f945d,be4e6dd6-8b1e-49f8-bcd9-583f221f945d.jpg,Y +SAMAN,정일훈,yhchung@samaneng.com,yhchung,226035.jpg,7c1cff71a128daaebe00fa552f55ef04b5aa1048eb8387906a56e415845ea916.jpg,c02e284e-3877-4e1e-ab31-497de4a3bce5,c02e284e-3877-4e1e-ab31-497de4a3bce5.jpg,Y +SAMAN,정재근,jkjung@samaneng.com,jkjung,225144.jpg,127061e1d3adfd0b7f4e13345040d25c35a1a47af728cfe2def31ab0da9999db.jpg,8a1640db-30db-4d82-b930-fe77d451d1c6,8a1640db-30db-4d82-b930-fe77d451d1c6.jpg,Y +SAMAN,정재령,jrjung@samaneng.com,jrjung,220139.jpg,9ea926d13ffd77516f712e75ded93cee9a548a0fca60ee427ed99b6522314e8b.jpg,4580d8da-2249-46e6-b23d-f0d2358f53ac,4580d8da-2249-46e6-b23d-f0d2358f53ac.jpg,Y +SAMAN,정재열,jyjung3@samaneng.com,jyjung3,203266.jpg,86dbdafd2c390c371efc9d7ca220209b61cccc710f6940b526341ca633986e7b.jpg,0e3cee4e-b1e6-4c8c-a72e-9e89047d9a94,0e3cee4e-b1e6-4c8c-a72e-9e89047d9a94.jpg,Y +SAMAN,정재욱,jwjeong@samaneng.com,jwjeong,224182.jpg,b9fc20cf4645685e2f2973a878700169f982451ffb006a5a4af1bd5687699227.jpg,2f1f93d3-b8e7-46a2-a130-7c40ce763eb9,2f1f93d3-b8e7-46a2-a130-7c40ce763eb9.jpg,Y +HANMAC,정재익,jijung@hanmaceng.co.kr,jijung,M05305.jpg,412055d2fb598d28b8b8672e1a258ce45968b46b466b16db761596a2d66fd358.jpg,a3af3186-400b-4794-a2e5-67b1fc6dbd3c,a3af3186-400b-4794-a2e5-67b1fc6dbd3c.jpg,Y +SAMAN,정재인,jijeong@samaneng.com,jijeong,223332.jpg,5f5c29e804adffa36b3bf945f3088f040106cccaaaf5e8e1c720ad827de73347.jpg,55e865d8-b83c-4269-9967-104e631d012e,55e865d8-b83c-4269-9967-104e631d012e.jpg,Y +HANMAC,정재혁,jhjeong2@hanmaceng.co.kr,jhjeong2,M26019.jpg,823c71e2d699dabc0d1cada600cc010361d5fa797346c75f6a8551bf6093b870.jpg,9f86f9d8-ff37-486f-88c4-d3ce9c88733f,9f86f9d8-ff37-486f-88c4-d3ce9c88733f.jpg,Y +SAMAN,정정열,jyjeong1@samaneng.com,jyjeong1,214023.jpg,f63f4d73af8abc127fa372222365d6b06e88ab38b54e04e613c5ea04f8eed82f.jpg,5e16108d-4d66-4145-b779-eb76748b87d2,5e16108d-4d66-4145-b779-eb76748b87d2.jpg,Y +SAMAN,정종문,jmjung@samaneng.com,jmjung,221141.jpg,e7ea40509b6f05aacfac2845917345682d37c931b285a9299e35b9a87382cb16.jpg,20ee2d1e-1c0b-460f-bdb7-8064fc2b4834,20ee2d1e-1c0b-460f-bdb7-8064fc2b4834.jpg,Y +SAMAN,정종용,jyjeong2@samaneng.com,jyjeong2,225278.jpg,4c89d53ad5317ff3efdd0364a735047da48bca56e068a4792f62aef5f9a318c4.jpg,f3cf3712-e2c5-48e3-adf0-1238f965e982,f3cf3712-e2c5-48e3-adf0-1238f965e982.jpg,Y +HANMAC,정종호,jhjeong3@hanmaceng.co.kr,jhjeong3,M23078.jpg,8334202683f768bde5f4910f83cdd518e44fb1e8f92f9cd391e41ff253091980.jpg,7e19e9b8-069b-4bc1-aff5-72109a8566a3,7e19e9b8-069b-4bc1-aff5-72109a8566a3.jpg,Y +SAMAN,정주현,jhjeong1@samaneng.com,jhjeong1,223007.jpg,a691f985977f5317efc9cfcd30e5bd815741e511063a327ce22101293654d0f1.jpg,6f39f998-d15c-4cf9-b766-42b5572d28dc,6f39f998-d15c-4cf9-b766-42b5572d28dc.jpg,Y +SAMAN,정주화,jhjeong@samaneng.com,jhjeong,221101.jpg,cdd629ea89deab7df08566be810b5d971dfb70802abeee9cc35b5cf0d79e1808.jpg,bd098177-6bf2-40f8-aae0-18959243c7d9,bd098177-6bf2-40f8-aae0-18959243c7d9.jpg,Y +SAMAN,정주희,jhjung1@samaneng.com,jhjung1,026068.jpg,a87934e043723bafbbd94ffff8e4cf6fe9e341b8f53f5a3c708d12776beaa570.jpg,5015c341-06ba-4d8e-9d4a-03a42f43eb09,5015c341-06ba-4d8e-9d4a-03a42f43eb09.jpg,Y +HANMAC,정준규,jkchung@hanmaceng.co.kr,jkchung,B25024.jpg,e19cca6f4a9fc525682a75c032d54e9cddf3602ae43e9462e1391318873abedc.jpg,b8bda85b-d9cc-40b6-b4f4-90fb297a5d74,b8bda85b-d9cc-40b6-b4f4-90fb297a5d74.jpg,Y +SAMAN,정준영,jyjeong4@samaneng.com,jyjeong4,220121.jpg,03a3ea4157e479560dcd1dd70d4950f1226d36dc192d9ddfa0d034971b29c28d.jpg,4acc1d7e-bc6d-4ebd-84b5-fb54cf547017,4acc1d7e-bc6d-4ebd-84b5-fb54cf547017.jpg,Y +SAMAN,정준표,jpjoung@samaneng.com,jpjoung,217161.jpg,bb4b19aff553f93473f28b6183c66703303ea1ba82cae8154b41425086546690.jpg,a0fa5372-6ffe-478c-b0b9-b739ae0232a8,a0fa5372-6ffe-478c-b0b9-b739ae0232a8.jpg,Y +SAMAN,정지영,jyjung2@samaneng.com,jyjung2,225136.jpg,553f4657a15f0de458d72a942c24da727ce60a52adaf3ff8027927cdc45fcb2e.jpg,eaa8e54f-7ed1-422d-be43-b553ea5fe15e,eaa8e54f-7ed1-422d-be43-b553ea5fe15e.jpg,Y +SAMAN,정지윤,jyjung1@samaneng.com,jyjung1,225140.jpg,18a41b8795e0cc775fe0c23cd15c4c1ee7b86bcfdd87377405a6ab85b5d6410a.jpg,573d0e9b-cd5e-46dc-aa32-10fa60480895,573d0e9b-cd5e-46dc-aa32-10fa60480895.jpg,Y +SAMAN,정지현,jhjung@samaneng.com,jhjung,225040.jpg,c3ac34df0e6fcc03bafba17448acbab2a4a7271134aed06b61c139c1b406a560.jpg,4e3b9f92-ad99-4821-b408-23ff8d4b2958,4e3b9f92-ad99-4821-b408-23ff8d4b2958.jpg,Y +SAMAN,정진우,jwjeong1@samaneng.com,jwjeong1,225122.jpg,112b685f822fc1d789a843842a424c047584be6af68d13f051bd798d71d1210d.jpg,fac140c4-4ca4-4cf0-aff4-5457ef78757b,fac140c4-4ca4-4cf0-aff4-5457ef78757b.jpg,Y +SAMAN,정진철,jcjung@samaneng.com,jcjung,221103.jpg,167ad4662e363d0de24b38ebba8de09d2cbfc307ec59090ad9405daccf683388.jpg,9c9e3de8-7423-49e6-931b-cf2dc627ccb5,9c9e3de8-7423-49e6-931b-cf2dc627ccb5.jpg,Y +SAMAN,정진호,jhchung54@samaneng.com,jhchung54,213001.jpg,9e06eb0683415855ada6059f1b11277500fe6040dabb82f10e51d792619357da.jpg,f6560e84-3ddb-454a-b64b-205edd79b906,f6560e84-3ddb-454a-b64b-205edd79b906.jpg,Y +SAMAN,정찬영,cyjeong1@samaneng.com,cyjeong1,224221.jpg,5b4118871ff1538bd6faa01b2cdd348c13a51563f55f1faa3068602559532a12.jpg,fdbb7a41-160d-4f6e-bccb-9122770820d6,fdbb7a41-160d-4f6e-bccb-9122770820d6.jpg,Y +SAMAN,정창근,ckjung@samaneng.com,ckjung,216134.jpg,5ed980bb4da29cf6fb99233e84899261ebda3552d88a8ae9d0ebf2d4ba67654c.jpg,e4e33983-eaba-4020-960d-a11657439819,e4e33983-eaba-4020-960d-a11657439819.jpg,Y +SAMAN,정창화,chjeong@samaneng.com,chjeong,212074.jpg,b9d49ef1cecadc5b00d7132a5cd1bc071c3e8a7ddd331b01af488803f1b1cb7b.jpg,f9b23072-b4a3-485b-977b-282b629af368,f9b23072-b4a3-485b-977b-282b629af368.jpg,Y +SAMAN,정청담,cdjeong@samaneng.com,cdjeong,222162.jpg,73d9de55395a7489ea9a6c439dca4a263342f67ac0f9d9fd8b85156597e7ec4e.jpg,b1c1528b-b656-4b93-817b-75cba0d4891c,b1c1528b-b656-4b93-817b-75cba0d4891c.jpg,Y +SAMAN,정충원,cwjung@samaneng.com,cwjung,216152.jpg,bc5e01a9b023ac07e89a66ef4e01b4dff331778c24aa9f113d0fb7a38ebe45d7.jpg,9884df36-da10-4db9-bace-8573e4d260b1,9884df36-da10-4db9-bace-8573e4d260b1.jpg,Y +PTC,정충화,chjung@brsw.kr,chjung,P06208.jpg,6fd527c7126d7677ca4675da14894e9dab3e3fb3a9827026c9c1685344583f85.jpg,1b409d2d-5ae1-49c0-9c2f-ca32ba66a5de,1b409d2d-5ae1-49c0-9c2f-ca32ba66a5de.jpg,Y +SAMAN,정태영,tyjeong@samaneng.com,tyjeong,224298.jpg,95486935c99d26372dd3731666bb4b0c768d26d01d29920e69928b73a5f078f7.jpg,76fe81f3-71ec-43cb-af2d-9f40df59c603,76fe81f3-71ec-43cb-af2d-9f40df59c603.jpg,Y +HANMAC,정태원,twchung@hanmaceng.co.kr,twchung,M21201.jpg,fcc86af296dbf9724c5d730d782b6a1a3092ef79560efb8fe742b7bd3490ba93.jpg,9eb2b03b-ec9a-4ba4-9d97-218baf491201,9eb2b03b-ec9a-4ba4-9d97-218baf491201.jpg,Y +SAMAN,정평기,pkjeong@samaneng.com,pkjeong,221223.jpg,0c4ad4fbf5aa7a16fd37db48869fac8c443cdfcda5dcd97c04bda3023c50290f.jpg,e8e4d288-3a62-4980-8208-1f0323183c6b,e8e4d288-3a62-4980-8208-1f0323183c6b.jpg,Y +SAMAN,정평회,phjeong@samaneng.com,phjeong,216058.jpg,6a890b5e0646f07012f0919cd90b44d514efb9ed981c3c30254e2fe415206532.jpg,486d82ef-bf25-4d91-9fb5-ee6898dd3fa0,486d82ef-bf25-4d91-9fb5-ee6898dd3fa0.jpg,Y +SAMAN,정학재,hjjung1@samaneng.com,hjjung1,225162.jpg,95c8f6a13bf0ba52746e3e9582e7b37b7d6b3899b89829dffd205cddeea98419.jpg,1f4da4df-d269-47e1-86eb-38fc08170758,1f4da4df-d269-47e1-86eb-38fc08170758.jpg,Y +SAMAN,정해진,hjjeong@samaneng.com,hjjeong,217079.jpg,a97e25f3b9f28fc82f14460005080d7db93c37f5f7912b68f0f44e4721a52b9f.jpg,3e52cdb7-a560-456b-9080-6d474721436e,3e52cdb7-a560-456b-9080-6d474721436e.jpg,Y +SAMAN,정현,hjeong@samaneng.com,hjeong,225130.jpg,6c5e302d912fa14263d3c047c8918892c761b6c9531e063d17119c6cca3b4d07.jpg,5e61f10e-98fa-4cc3-a86e-9f1b4ce57143,5e61f10e-98fa-4cc3-a86e-9f1b4ce57143.jpg,Y +SAMAN,정현교,hkjung1@samaneng.com,hkjung1,205267.jpg,1723280a76595f3c5315271de7b4efbc0a1d21d0402101380012a4f370a57019.jpg,96f9bb0b-4ee8-43a5-b920-89910e1d6fd8,96f9bb0b-4ee8-43a5-b920-89910e1d6fd8.jpg,Y +SAMAN,정현식,hsjeong1@samaneng.com,hsjeong1,224269.jpg,20a61364e099ddbd6be2c6a74d08f05e06ee830489cfd5cff3355f4f4c92b6d2.jpg,e4ab6e36-6693-410d-b73c-8a3dff52c479,e4ab6e36-6693-410d-b73c-8a3dff52c479.jpg,Y +HANMAC,정혜연,hyjeong2@hanmaceng.co.kr,hyjeong2,M14101.jpg,14ccc54a449e9acf73a11fcadacbaa9c700a579d40e7a3d832c57380670794ee.jpg,e0af591b-0768-44e5-8027-16059368129b,e0af591b-0768-44e5-8027-16059368129b.jpg,Y +SAMAN,정혜영,hyjung@samaneng.com,hyjung,224018.jpg,f207a986834def41bb909ff235944e410536d498a2615ab37d258bacb4a7f813.jpg,1960b861-dd62-4ec8-ac21-f7d4541e7ef7,1960b861-dd62-4ec8-ac21-f7d4541e7ef7.jpg,Y +HANMAC,정혜진,hjjeong2@hanmaceng.co.kr,hjjeong2,M16317.jpg,bf9d791dab20d466d59cbb2163d9d5b09ff061ec644e1b1950c83d444702088f.jpg,e9d9a5e7-0413-4e07-bb41-6f8f112e484c,e9d9a5e7-0413-4e07-bb41-6f8f112e484c.jpg,Y +SAMAN,정호진,hjjeong1@samaneng.com,hjjeong1,223114.jpg,182b1734fa8b555b2529d4cbfc974c848acdf2ef9f8d6adbfd07b63c524a4063.jpg,afafdcf6-0716-4966-9ac0-855518ef979a,afafdcf6-0716-4966-9ac0-855518ef979a.jpg,Y +SAMAN,정홍섭,hsjeong2@samaneng.com,hsjeong2,224288.jpg,6419f3546eca70c3ad9b448bfcd477eb3a842dae9e3aa8fed570b0a373df857f.jpg,56ee2c75-0a33-440e-9852-7cb02d62d482,56ee2c75-0a33-440e-9852-7cb02d62d482.jpg,Y +SAMAN,정홍택,htjeong@samaneng.com,htjeong,221311.jpg,87db2f6d2105d4a4e549236392836e63037cec818353245c716cec99bc096eec.jpg,ff69fcae-e13d-489d-8a53-77068bf1859a,ff69fcae-e13d-489d-8a53-77068bf1859a.jpg,Y +SAMAN,정환주,hjjung@samaneng.com,hjjung,224230.jpg,3e1e5635390e12c9ee2e2e3c5b5d7239517ae354b9f1b9d5b85008a393e3884f.jpg,9f7275f0-eb38-4732-a662-93cbab60c076,9f7275f0-eb38-4732-a662-93cbab60c076.jpg,Y +SAMAN,정희엽,hyjeong@samaneng.com,hyjeong,215094.jpg,1dcb2c42c2ddcab448ac4fd0fde9abd7f381a6d0915023261c11545c944ff3ad.jpg,edfa9b44-a365-43e0-b27a-449549761cd4,edfa9b44-a365-43e0-b27a-449549761cd4.jpg,Y +SAMAN,정희원,hwjeong@samaneng.com,hwjeong,225077.jpg,d9eb33616b95f7d3f64298e711ce368d31092159d2acc04ac78e089c832eb657.jpg,186032c1-4fd9-4f0f-a018-7705ed2b7f7b,186032c1-4fd9-4f0f-a018-7705ed2b7f7b.jpg,Y +SAMAN,조강주,kjcho2@samaneng.com,kjcho2,218019.jpg,07f343cd8b036ffc220581162858134d74eddefbf8b1e54cca6303b4750a62eb.jpg,a81f496e-bb25-4d1d-a961-4c1774718916,a81f496e-bb25-4d1d-a961-4c1774718916.jpg,Y +HANMAC,조규형,ghcho@hanmaceng.co.kr,ghcho,M23023.jpg,0d37fac8c1d28b55aa18ae56baa24e62413d6458f582402b712c9f935987ada6.jpg,6d00ee00-129c-4036-a71a-b3de292e2202,6d00ee00-129c-4036-a71a-b3de292e2202.jpg,Y +SAMAN,조길문,kmcho@samaneng.com,kmcho,202072.jpg,af01078fdce7c837f9278587286704d2e9b5f495a7f546f10aaefa7681fc3f2b.jpg,e13affa6-b6fa-4b31-a432-fde422cb1227,e13affa6-b6fa-4b31-a432-fde422cb1227.jpg,Y +SAMAN,조남욱,nwcho@samaneng.com,nwcho,225157.jpg,37b5c6f8faff892cd7c3f8fc1f0ccdfa195a6f95a91b7e984272a8ef14508314.jpg,c36ca711-e3c3-4a1c-8ed4-c4fd01883792,c36ca711-e3c3-4a1c-8ed4-c4fd01883792.jpg,Y +SAMAN,조대현,dhjo@samaneng.com,dhjo,220275.jpg,12930511c9fef9953f7427872efffb70d017f39dee8257ec42f5d5cdee44f7ea.jpg,15163bbd-40a2-43b7-a888-fae54edb10f8,15163bbd-40a2-43b7-a888-fae54edb10f8.jpg,Y +JANGHEON,조동일,dicho@brsw.kr,dicho,J21303.jpg,3795bc71bf32823f4baa1cdfdddfecf1da88dd4232b75f39e305ac774ebbffe9.jpg,54d22ef6-f1b0-4059-8bcf-14f6cacd4d66,54d22ef6-f1b0-4059-8bcf-14f6cacd4d66.jpg,Y +SAMAN,조동진,djcho@samaneng.com,djcho,218139.jpg,a04755284bdc157c45de334e24ae3b7456e406be7992b2d7486bb968258cb9a2.jpg,f5085dc2-88fa-466f-9216-5befbe2d117e,f5085dc2-88fa-466f-9216-5befbe2d117e.jpg,Y +SAMAN,조래수,rscho@samaneng.com,rscho,216127.jpg,7da43689ea4d0fe4802bcbdb903343a323c55a39559e326c24ec25c6628c6b35.jpg,242a8685-78ba-4cb3-b967-7b5974bcca47,242a8685-78ba-4cb3-b967-7b5974bcca47.jpg,Y +SAMAN,조명훈,mhcho1@samaneng.com,mhcho1,223148.jpg,0380e6f094cce88e62521eeb014ce5640be73e1725d1bccb95b6cd97e558e8e7.jpg,cfb89857-be8d-4548-aff2-a711f19ab6f1,cfb89857-be8d-4548-aff2-a711f19ab6f1.jpg,Y +SAMAN,조문국,mgjo@samaneng.com,mgjo,224270.jpg,f9463e3ed4ab4815e3a6ee5649496e4168d23781a2347d706586fb02a39134e7.jpg,4dafd11e-2e65-4605-8a70-a7f3c8389752,4dafd11e-2e65-4605-8a70-a7f3c8389752.jpg,Y +SAMAN,조미미,mmjo@samaneng.com,mmjo,026053.jpg,667ca4482333366f372895674583ea49fb557bba9434c67906ce133329c90e7a.jpg,d1a87cef-dce8-4721-92e2-e8760f65a992,d1a87cef-dce8-4721-92e2-e8760f65a992.jpg,Y +SAMAN,조민현,mhcho@samaneng.com,mhcho,221194.jpg,3accb912f25708b5ceea76720995b736bc4549872f255c99c11079efab645a09.jpg,9617d4ee-41ba-482d-a893-8a66f0624b00,9617d4ee-41ba-482d-a893-8a66f0624b00.jpg,Y +SAMAN,조병광,bkcho@samaneng.com,bkcho,223079.jpg,c9deb54c6ae115f8b59b696fd1c89c845580aeff768beeece1a71994e9bbf6b8.jpg,9d0938d1-85db-415d-9ac8-a1ba1636ee31,9d0938d1-85db-415d-9ac8-a1ba1636ee31.jpg,Y +SAMAN,조봉현,bhjo@samaneng.com,bhjo,210160.jpg,ec1d858100a0e40b0b4e05cd8e1b0a8faa6fe3635751cacd42b93feb1513869a.jpg,eae1c683-648e-401d-ab1e-bf5abd2d2681,eae1c683-648e-401d-ab1e-bf5abd2d2681.jpg,Y +SAMAN,조석규,skcho@samaneng.com,skcho,214083.jpg,c6317472f489b1d637f1af854ba3720c3e5f7f9aae326122d93e24ecb0631d33.jpg,37c487cd-d861-4023-879b-5c249b22a11d,37c487cd-d861-4023-879b-5c249b22a11d.jpg,Y +SAMAN,조선두,sdjo@samaneng.com,sdjo,222155.jpg,7d77e898924114807690ccb4e71d091f3a9214e625a406404b783e834c096117.jpg,5034175d-730d-4f1a-bb8f-c3bb6f65dc76,5034175d-730d-4f1a-bb8f-c3bb6f65dc76.jpg,Y +SAMAN,조성곤,sgjo@samaneng.com,sgjo,225281.jpg,9d9f168ba4077da9a2f8afaa9bf1d147963f4f2451f9a25b8f3ff56c6b066614.jpg,371402a4-1fd4-4a30-bd61-d08b96ac95db,371402a4-1fd4-4a30-bd61-d08b96ac95db.jpg,Y +SAMAN,조성복,sbcho@samaneng.com,sbcho,220185.jpg,971c7d98dc26ae6093c8c8c93aa7d1c820a925cdcf5e6acc2736a21081932c19.jpg,40743c44-cd2f-488a-b67e-56decee905d3,40743c44-cd2f-488a-b67e-56decee905d3.jpg,Y +SAMAN,조성선,sscho@samaneng.com,sscho,223208.jpg,f8d83bab7d6ba0e652534c676470c1ddae4d2efa348b653e773a24a8deaec9fd.jpg,fd45064e-3e2b-4410-a9db-d114dfe82f25,fd45064e-3e2b-4410-a9db-d114dfe82f25.jpg,Y +SAMAN,조성환,shjo@samaneng.com,shjo,217049.jpg,03df2f0c07b267b2afafe72130bcdb884a7e636c71278e8e2079650c6eba4893.jpg,c4869e63-e049-45b0-859b-8e01541dd735,c4869e63-e049-45b0-859b-8e01541dd735.jpg,Y +HANMAC,조수원,swcho2@hanmaceng.co.kr,swcho2,M02231.jpg,f2456fa77e9323f1950c3a94c9d79c86bab360519648e695a631befe1ea68135.jpg,8fdbdfcb-69a8-4877-97fa-0d981cda2acf,8fdbdfcb-69a8-4877-97fa-0d981cda2acf.jpg,Y +SAMAN,조안기,akcho@samaneng.com,akcho,224255.jpg,ce5503b9dbb3d8f2b421d30edb2fc71fa0e59f647b9f94de54c271ee2982834b.jpg,5aeaa422-df4e-4cd9-bbea-5f8036598402,5aeaa422-df4e-4cd9-bbea-5f8036598402.jpg,Y +SAMAN,조연경,ykjo@samaneng.com,ykjo,225342.jpg,0116e8d6bacb9e1b83d55cbd0329a9e021e55e07c59a6941ad8635860a2fd0a1.jpg,8d907e4b-9b9f-4b8b-8d43-f9c81e333368,8d907e4b-9b9f-4b8b-8d43-f9c81e333368.jpg,Y +SAMAN,조영민,ymcho1@samaneng.com,ymcho1,221034.jpg,3aff052454e717cb5a358b68c546da5dd7e6ba1aed63895a01fcfb4cd1df4038.jpg,cd1f9b56-90a2-4b16-8169-eb86e47eb76a,cd1f9b56-90a2-4b16-8169-eb86e47eb76a.jpg,Y +SAMAN,조영삼,yscho2@samaneng.com,yscho2,222295.jpg,de21587a145478f566310899072058332a80c4a893542b395038bd8be74ff8ce.jpg,02f830a1-c58c-4a8d-8107-0c9ba5ca31dc,02f830a1-c58c-4a8d-8107-0c9ba5ca31dc.jpg,Y +SAMAN,조영수,yscho1@samaneng.com,yscho1,224147.jpg,ce9115a6982ca1b26479b0879b83e3cfe8274d84cb587441aede9e11b4cd6cca.jpg,a8d3ae27-e543-49fc-9830-28c48f53e529,a8d3ae27-e543-49fc-9830-28c48f53e529.jpg,Y +SAMAN,조영훈,yhcho16@samaneng.com,yhcho16,216012.jpg,2155bd46fad8e2714480c2dd4307ee592c7282ca864cac5deb75a99d74373f08.jpg,e7019c8d-c2bd-410d-b1c2-3f1c7b5e42f7,e7019c8d-c2bd-410d-b1c2-3f1c7b5e42f7.jpg,Y +SAMAN,조용근,ykcho@samaneng.com,ykcho,196175.jpg,3a13879337ecb0ece325b0830b760efbf4ab5fa2c3999b9705e898cf31c5d0cb.jpg,416a5657-964e-4a16-a79b-f1a7b61a25a5,416a5657-964e-4a16-a79b-f1a7b61a25a5.jpg,Y +HANMAC,조용민,ymjo@brsw.kr,ymjo,B25019.jpg,16fbdd9894d3381abca071f598f7cd940b4c29332c049ac7e73d1e1aa62a5e8c.jpg,f4cf3cad-6ded-4c06-92b2-08e8ee08fb84,f4cf3cad-6ded-4c06-92b2-08e8ee08fb84.jpg,Y +SAMAN,조용익,yijo@samaneng.com,yijo,224003.jpg,9871fcb2bb47aaff8c00c378ee78c5e3ef49c938e5a43d499ea3c6dea2f7fe19.jpg,bdec0122-05cd-45af-94b8-a845a738ccd4,bdec0122-05cd-45af-94b8-a845a738ccd4.jpg,Y +SAMAN,조우진,wjjo@samaneng.com,wjjo,223249.jpg,97123e7104c8bf97094a61b0ac95defffd697511f9f03d50b50fec1f9420cf35.jpg,9769ff34-6193-4892-8631-22133eca0be4,9769ff34-6193-4892-8631-22133eca0be4.jpg,Y +HANMAC,조우진,wjcho@hanmaceng.co.kr,wjcho,M23058.jpg,03a3efdd716342090e6e373a337fcfadc63c711551fe726ee4f0fe92e6aa737c.jpg,10311d7a-9483-4ea6-8aaf-9558af95a0ef,10311d7a-9483-4ea6-8aaf-9558af95a0ef.jpg,Y +SAMAN,조원석,wscho@samaneng.com,wscho,226061.jpg,caa7d46db0996e5fbecbd424ab7a800e25f43c4d3ecb7c707f72b2340c74483b.jpg,1a1838d5-0955-4ea0-8f22-04b9336424a9,1a1838d5-0955-4ea0-8f22-04b9336424a9.jpg,Y +SAMAN,조윤상,yscho@samaneng.com,yscho,223057.jpg,08b7ebe2b873661cedad5023898cdbf11163e623003d146434ddf4115e3db900.jpg,2e227b70-20c9-45ec-9562-e226f5e71a13,2e227b70-20c9-45ec-9562-e226f5e71a13.jpg,Y +SAMAN,조은영,eycho@samaneng.com,eycho,225037.jpg,0e46e6ab36e40371dfaf52dc449e622ac085fc9325f5ff4c46ac25ab0932cd06.jpg,39e676d3-be17-4320-90f5-7935f897b16b,39e676d3-be17-4320-90f5-7935f897b16b.jpg,Y +SAMAN,조인철,icjo@samaneng.com,icjo,222002.jpg,4768f2d501fee19422c62e985cc9b3489c51c89032a589b3d50eb56b835ab482.jpg,4575ef1b-b222-462e-b423-72dbfb5d904d,4575ef1b-b222-462e-b423-72dbfb5d904d.jpg,Y +SAMAN,조인환,ihjo@samaneng.com,ihjo,225269.jpg,4341e61c2644e72721d67cd27c0680dd99a420039ae7e052ef293dc21a57257f.jpg,aa760e29-4692-4b12-93f3-14c2e92ca6c2,aa760e29-4692-4b12-93f3-14c2e92ca6c2.jpg,Y +SAMAN,조재영,jycho@samaneng.com,jycho,222086.jpg,db6104de61ca3eb46a067d5a49c520623e84417a318290f321970656e42343db.jpg,ae34f60e-1c47-46e7-b7af-fac6e5b2dba4,ae34f60e-1c47-46e7-b7af-fac6e5b2dba4.jpg,Y +SAMAN,조재유,jycho1@samaneng.com,jycho1,223146.jpg,0a03941419f7d6944d2e1d90b4ff0be9b47cd5c35c7f31cb959fe738a52f10d8.jpg,5a6a985a-774f-49bc-b7b3-d595a0b622c7,5a6a985a-774f-49bc-b7b3-d595a0b622c7.jpg,Y +SAMAN,조정묵,jmjo@samaneng.com,jmjo,224321.jpg,a679fa68fcbb1d50f92be08f784330c866251e3d776bb9912f3700440fd8fc65.jpg,779ea58b-839d-42f4-89c3-a714f3814cb6,779ea58b-839d-42f4-89c3-a714f3814cb6.jpg,Y +HANMAC,조증식,jsjo@hanmaceng.co.kr,jsjo,M23081.jpg,ea82cb42e369f96a09d3b9555e2ecac971ebc75a446e895e2ca1ba3342e86dad.jpg,881363b7-558d-4c14-b1c7-edb961c3c1d9,881363b7-558d-4c14-b1c7-edb961c3c1d9.jpg,Y +SAMAN,조진수,jscho1@samaneng.com,jscho1,214047.jpg,92f5c26e566bd63a580f8f05b7e64f893cc0613c7a85648b6e3363b0fd82826e.jpg,581c45b8-d26b-408e-a576-457c7e502940,581c45b8-d26b-408e-a576-457c7e502940.jpg,Y +HANMAC,조찬영,cyjo@brsw.kr,cyjo,B24028.jpg,cf2cee1c156b3dea96225b354f44abc25e5d353b35c42b152c2c039d05e21333.jpg,b542efad-34b1-424c-88ec-d075dc9c75a7,b542efad-34b1-424c-88ec-d075dc9c75a7.jpg,Y +SAMAN,조창형,chcho@samaneng.com,chcho,224354.jpg,0ad96f8eeaac42ce92526fc230429145edc3705763429521b0af1d650a1c2360.jpg,acbaf17d-a407-4111-9b1b-fef6331f0782,acbaf17d-a407-4111-9b1b-fef6331f0782.jpg,Y +HANMAC,조태희,thcho@brsw.kr,thcho,B22040.jpg,d8059173ba55120cf35f20315174c8f3f0e0171000433383e231bf9bdc03f72a.jpg,f91fe494-f8f4-404d-ae6c-2cbbff67ec82,f91fe494-f8f4-404d-ae6c-2cbbff67ec82.jpg,Y +SAMAN,조항언,hujo@samaneng.com,hujo,222096.jpg,11049683f22704b8def34bff1389136492dfdc454c3c2648c35e3be1bda6de7e.jpg,80a07018-c6f8-495a-97e5-098a498aa527,80a07018-c6f8-495a-97e5-098a498aa527.jpg,Y +SAMAN,조현선,hscho@samaneng.com,hscho,218161.jpg,6314d94bf66ad810a652799e2ff0a235964270145aa2796e6d9b00e89b0a5eb8.jpg,2883b205-05c3-40dc-ad36-f34f8bc1c527,2883b205-05c3-40dc-ad36-f34f8bc1c527.jpg,Y +HANMAC,조현준,hjcho2@hanmaceng.co.kr,hjcho2,M23022.jpg,4ac559d3216001eb4a873f70c1f32ac1a9d73aaa8b91499c9ea66a622a0c8a83.jpg,142ac5fc-6098-47b7-8180-0aedc492421e,142ac5fc-6098-47b7-8180-0aedc492421e.jpg,Y +SAMAN,조혜경,hkcho@samaneng.com,hkcho,024138.jpg,b75897dfd1d6b87f743d826906805185b19cfa2d1498f35812500b16fee7d1d3.jpg,bcf80c67-a414-4fd3-beec-b6e6192f781d,bcf80c67-a414-4fd3-beec-b6e6192f781d.jpg,Y +SAMAN,조혜정,hjcho@samaneng.com,hjcho,201210.jpg,2e727d71854e955c0ac57d90f88ccabecacd0f8dc59654d051fcc428cfa96b8e.jpg,638b9e00-bc83-4e3f-9637-a9e230cd0e1d,638b9e00-bc83-4e3f-9637-a9e230cd0e1d.jpg,Y +SAMAN,조호연,hycho@samaneng.com,hycho,223393.jpg,93a6cb4cf36c96a68ec99c0f6b8631b02b4686459f52922b3d7de4ad00dc24d9.jpg,c54a8119-e1b2-4767-90ca-d45b2eac65f8,c54a8119-e1b2-4767-90ca-d45b2eac65f8.jpg,Y +SAMAN,조호현,hhjo@samaneng.com,hhjo,224306.jpg,7b915df8937cc7081cdc9b5192bc9271c2571d1a24d19c00801e5b30a4858bd0.jpg,e42d6631-a5ad-4f6f-8beb-479b6931b893,e42d6631-a5ad-4f6f-8beb-479b6931b893.jpg,Y +SAMAN,조흥석,hscho1@samaneng.com,hscho1,221026.jpg,3626146b3af0d5d6c4d20811a9bb28db0ce337f9acc81a883f9096c4bb41eafe.jpg,1995c362-7ab3-4fae-9be8-3154d5245402,1995c362-7ab3-4fae-9be8-3154d5245402.jpg,Y +SAMAN,주삼언,sechu@samaneng.com,sechu,223143.jpg,b0006aac7c1b1f7fe3362e6be69dafb3a312e117fee00560eeb741871cee2030.jpg,0375a03f-8404-4778-90d9-51b8cd746a2d,0375a03f-8404-4778-90d9-51b8cd746a2d.jpg,Y +SAMAN,주상구,sgjoo@brsw.kr,sgjoo,220207.jpg,381f1d0ba8094bca5a775098dc84ec98d4fdca3f8dae240c724ce152efa29977.jpg,a5cc9510-b5eb-4cdf-bc64-a1fdb6ae15ae,a5cc9510-b5eb-4cdf-bc64-a1fdb6ae15ae.jpg,Y +SAMAN,주승민,smjoo@samaneng.com,smjoo,221021.jpg,aa2570982df7825d78e517d259581cb4563ec20c904a875496c0bbf646e37b03.jpg,dc9d6fc5-934d-44b1-8fe4-d418909b34e7,dc9d6fc5-934d-44b1-8fe4-d418909b34e7.jpg,Y +SAMAN,주영덕,ydjoo@samaneng.com,ydjoo,223165.jpg,653fa90e3fa31fc5fa78e2059eb91f8d81df27d2fb6151df1813ff30d6623150.jpg,5bca3ba9-2c54-4e75-84f9-ced9df54db2f,5bca3ba9-2c54-4e75-84f9-ced9df54db2f.jpg,Y +HANMAC,주완기,wgjoo@brsw.kr,wgjoo,B22067.jpg,aa360943b32e29993eb55140c692f0e5250e145347fdd035bb931160895f9835.jpg,09b74623-d323-4d86-9a0f-18e47e3ac12c,09b74623-d323-4d86-9a0f-18e47e3ac12c.jpg,Y +HANMAC,주재강,jgju@hanmaceng.co.kr,jgju,M16313.jpg,f9d64145a81538a12d1ad3c5cec76eadfa9f1e71716d1d009ac2c2199818b632.jpg,071b3069-d1e0-4d39-a095-a7dedfb70982,071b3069-d1e0-4d39-a095-a7dedfb70982.jpg,Y +HANMAC,주지한,jhju@hanmaceng.co.kr,jhju,M25006.jpg,e63f1b80ca9b953b90601a71793cb6b46af9e4fa8b29739d088950001901c835.jpg,f54fa983-14ad-4494-8d8e-52926bddcb3f,f54fa983-14ad-4494-8d8e-52926bddcb3f.jpg,Y +SAMAN,주현수,hsju@samaneng.com,hsju,220076.jpg,0d554cecc85d026b854ee36ab171b9e4e072818691c302c00c38bf699e176f36.jpg,c929ca70-9378-4385-a46b-6137d1cea9df,c929ca70-9378-4385-a46b-6137d1cea9df.jpg,Y +SAMAN,주호식,hsjoo1@samaneng.com,hsjoo1,213004.jpg,521c3cae0719c652e3a730f6d286f5fc736dd646df7203fe584cf877f878f40c.jpg,02b5e8be-447f-411a-9ab9-e0b2873c504d,02b5e8be-447f-411a-9ab9-e0b2873c504d.jpg,Y +SAMAN,지덕영,dyji@samaneng.com,dyji,224051.jpg,cebf693851cb4d811649750d18077c2667328639a754b7fdc18b642d9360e588.jpg,3c9b1821-30fd-48fa-96aa-af71b2c46836,3c9b1821-30fd-48fa-96aa-af71b2c46836.jpg,Y +SAMAN,지성현,shji@samaneng.com,shji,225056.jpg,0ab0251c1b6ac56f3cc1e81f49c3116acf8b3b3c42e5e4442f0f4c7d4485256b.jpg,1dba00e4-8024-46ee-8666-d80b1fc82fbf,1dba00e4-8024-46ee-8666-d80b1fc82fbf.jpg,Y +SAMAN,지승환,shjee@samaneng.com,shjee,025093.jpg,89118ed10800a40a6199254f25e3289288c713f6855ec17e474e85a8d8e397b5.jpg,a9cc40c6-ab59-45d4-8982-fd7f718f6a72,a9cc40c6-ab59-45d4-8982-fd7f718f6a72.jpg,Y +HANMAC,지인용,iyji@brsw.kr,iyji,M04102.jpg,15eccc55e09e304749be11a10c826300840d2916c4c41b83941d9d70e985f1e7.jpg,1e224437-c9b8-48c2-91eb-972f0f6be0eb,1e224437-c9b8-48c2-91eb-972f0f6be0eb.jpg,Y +SAMAN,지재구,jgji@samaneng.com,jgji,225260.jpg,4b9a043e319818335b89f0603e54965ec75cbbac07817eea4c4d135f61e02cf4.jpg,74977ee1-8c05-4427-98d1-5524e89b2708,74977ee1-8c05-4427-98d1-5524e89b2708.jpg,Y +SAMAN,지현욱,hwji@samaneng.com,hwji,223134.jpg,a2cfabc50c5bd87bd1a68c0ba11ca5820b7d1d92fd4683a918f9b0a9063820ce.jpg,d5f34cf0-ac4d-4cd0-a199-d2244897cf15,d5f34cf0-ac4d-4cd0-a199-d2244897cf15.jpg,Y +SAMAN,진민화,mhjin@samaneng.com,mhjin,025043.jpg,d6f9c59af9f21ab1d6f1d7ba8ad67ced022a96bc8d4adf371bc4e319a20fed9f.jpg,2a1717b4-35a6-433a-8930-b5089f5edae3,2a1717b4-35a6-433a-8930-b5089f5edae3.jpg,Y +HANMAC,진장현,jhjin@hanmaceng.co.kr,jhjin,M23064.jpg,33a3aea740536331ef155781d3d45c6281d8009034953bac647604bfa4725b43.jpg,823ba2c0-ab0f-43a4-8807-e58c35b9d8aa,823ba2c0-ab0f-43a4-8807-e58c35b9d8aa.jpg,Y +SAMAN,진충문,cmjin@samaneng.com,cmjin,319002.jpg,0347eb3d6ca44e8cc4cdfdb16b1b567cbd7591949f20a3a68fe138bf2d9b01bb.jpg,c61bc884-300c-470f-a48b-5f66f9f23e07,c61bc884-300c-470f-a48b-5f66f9f23e07.jpg,Y +HANMAC,진현범,hbjin@hanmaceng.co.kr,hbjin,M24070.jpg,6fee3ecf926ceda5c8d868443e8a64627c2503a94aa8881a02f731fbf64f3864.jpg,c722d0e4-8e55-4df6-b3ee-89fc02d8f42c,c722d0e4-8e55-4df6-b3ee-89fc02d8f42c.jpg,Y +SAMAN,진희성,hsjin@samaneng.com,hsjin,224291.jpg,225fa007171f8952fe5902cb62950566b4c7b0f33f83ea541312dde712c9e204.jpg,faedfa7b-f2f8-482d-be31-ff23711f56a4,faedfa7b-f2f8-482d-be31-ff23711f56a4.jpg,Y +SAMAN,차기준,kjcha1@samaneng.com,kjcha1,224274.jpg,837bd67cff8ef94e95e9412af32e8120bd875d0957f21bbe669e30e808339f58.jpg,0648d8b4-4308-43bc-8416-06e1d8378808,0648d8b4-4308-43bc-8416-06e1d8378808.jpg,Y +SAMAN,차문자,mjcha@samaneng.com,mjcha,023036.jpg,3acbc24d84de2838b3368f7d72012f895831ec55c7dd63264c1238c3ce5df02b.jpg,5c7f8bae-6eeb-453f-aebc-08542a47fe3c,5c7f8bae-6eeb-453f-aebc-08542a47fe3c.jpg,Y +JANGHEON,차성대,sdcha@brsw.kr,sdcha,J10308.jpg,a6b72c6ae84289cf93c4ede45b85afbf179be46bf14de53d01cfb6bb8ef6386b.jpg,3b3bb62e-cd5a-427c-94b6-fe73034b16e8,3b3bb62e-cd5a-427c-94b6-fe73034b16e8.jpg,Y +SAMAN,차승구,sgcha@samaneng.com,sgcha,219180.jpg,96b9cb4cfe24dd6e6cf49d8f81a6c9a32180318c3d5c1ea9f0cb4c382044ed78.jpg,d5e4716b-1a66-4cde-b2ea-244beaba352f,d5e4716b-1a66-4cde-b2ea-244beaba352f.jpg,Y +SAMAN,차영주,yjcha@samaneng.com,yjcha,223194.jpg,4bfc3799e7554bee4a87a04b65af170a82b0811d08ed4f087f84b82548256b87.jpg,670d267c-6166-4da1-ab47-e53c8ab6b6b6,670d267c-6166-4da1-ab47-e53c8ab6b6b6.jpg,Y +SAMAN,차진한,jhcha@samaneng.com,jhcha,202145.jpg,2f2aec0aad3fe38b4a33ba89a725b1ec4215a34d6369d69683d3a931721c81ae.jpg,99337cac-3fc8-4c98-a6e2-0c81b63046a3,99337cac-3fc8-4c98-a6e2-0c81b63046a3.jpg,Y +SAMAN,차호준,hjcha@samaneng.com,hjcha,219009.jpg,4a6941c3a88abf8e03f8ff942facb94eea4c49220625c09bb22cdb679087c755.jpg,6573e26f-c02d-44b0-a8db-34e21f541177,6573e26f-c02d-44b0-a8db-34e21f541177.jpg,Y +SAMAN,차홍근,hgcha@samaneng.com,hgcha,223215.jpg,0b8f3546dfa3c2fe7639afbcae5568c105b57f057df0a103f40ec159a4b9ff3a.jpg,da26c5d5-a80e-48ce-8f95-5d5ab325c53f,da26c5d5-a80e-48ce-8f95-5d5ab325c53f.jpg,Y +SAMAN,채병구,bkchae@samaneng.com,bkchae,222110.jpg,05f877568a5c446c525c084b08229ee6b257458d59049c94368adf00987159b2.jpg,6fe346cb-fb7d-48e9-8e83-0edd1b749d1f,6fe346cb-fb7d-48e9-8e83-0edd1b749d1f.jpg,Y +HANMAC,채선영,sychae@brsw.kr,sychae,B24027.jpg,ba82101437316ba367d3a9600195771b1c16a6032a7c6cd21dca7dd3eeeda0d6.jpg,d4a1485f-ff5e-4d98-95a7-4db7a2ab2ef7,d4a1485f-ff5e-4d98-95a7-4db7a2ab2ef7.jpg,Y +HANMAC,채일석,ischae@hanmaceng.co.kr,ischae,M06506.jpg,34e7180fdf036bcdd8cfe8ee3209957404e139183344477d6d2e39fbbf94153f.jpg,62bd7b21-2f86-46b7-916c-4d79f676652f,62bd7b21-2f86-46b7-916c-4d79f676652f.jpg,Y +SAMAN,채정기,jkchae@samaneng.com,jkchae,218096.jpg,25ef8b7a60aa60ea50dfa27aba91ed05ac6973fc8b325087a3edaa714edc401b.jpg,9a437c61-97a9-4f21-be47-f74ee899ad40,9a437c61-97a9-4f21-be47-f74ee899ad40.jpg,Y +SAMAN,채종현,jhchae@samaneng.com,jhchae,225261.jpg,90b39b6153b2864d627d3b0213576e0d25ff765c235e33d83fd94363e37f036a.jpg,0bf9da01-a81b-4238-b488-1796bac6aece,0bf9da01-a81b-4238-b488-1796bac6aece.jpg,Y +HANMAC,채호주,hjchae@hanmaceng.co.kr,hjchae,M23070.jpg,ca35e282aa7cfc951155184e1d7904931ec10da04f96287814a7a956ea17dd5c.jpg,cabda042-04cd-4dda-89cc-2e3cfc1c3e34,cabda042-04cd-4dda-89cc-2e3cfc1c3e34.jpg,Y +HANMAC,채희문,hmchae@hanmaceng.co.kr,hmchae,M21321.jpg,b5e5db6d82bb8519beb26049c517282584daca23e29536ff39e488e0a2873ec2.jpg,3d554296-c177-48e2-a1e5-c67559607234,3d554296-c177-48e2-a1e5-c67559607234.jpg,Y +SAMAN,채희웅,hwchae@samaneng.com,hwchae,223241.jpg,5cfde83739f651681933aabbbf4f64b4c7f11461ef17b6c0f20e75d211de0787.jpg,0e25bd7b-1668-443a-9d73-b408f891ad78,0e25bd7b-1668-443a-9d73-b408f891ad78.jpg,Y +SAMAN,천민규,mkcheon@samaneng.com,mkcheon,219096.jpg,4b5debe67cd4ccd969297cab132d26c50bb0b814a555596a049aad675985af6d.jpg,6484a0b2-b166-41a4-9f40-28fe6c04c96a,6484a0b2-b166-41a4-9f40-28fe6c04c96a.jpg,Y +SAMAN,천세현,shcheon@samaneng.com,shcheon,224287.jpg,728d19ebaa695e82f4d55c58354d891aa2a206f5a057e075bbb8a2b2a70c88cc.jpg,6afb9d42-b568-4c82-b9a7-705796ef83b7,6afb9d42-b568-4c82-b9a7-705796ef83b7.jpg,Y +SAMAN,천승호,shchun@samaneng.com,shchun,214077.jpg,d858a24300e4687242e25f0963f36339ef9f977ccb8a9214412e4abf574b47a3.jpg,2dd6ad11-5da5-43a0-9793-c6c13546f713,2dd6ad11-5da5-43a0-9793-c6c13546f713.jpg,Y +SAMAN,천영석,yscheon@samaneng.com,yscheon,222043.jpg,11101975a7ea438efc55727e00b96e1f0c29e96529a42bebf9369f5ba75fbc6f.jpg,1656fc5a-401e-442e-a7d2-99655bd6712f,1656fc5a-401e-442e-a7d2-99655bd6712f.jpg,Y +SAMAN,최경문,kmchoi1@samaneng.com,kmchoi1,221281.jpg,5883bccdd161f3185a09654b2ca889375d11141bd384fcceb4b1e412b13d918f.jpg,396e1771-501f-47a9-a14b-f6589387404b,396e1771-501f-47a9-a14b-f6589387404b.jpg,Y +SAMAN,최경수,gschoi@samaneng.com,gschoi,220015.jpg,dd31c25066aeb19011cdf2661b91eb13b5fffa8123150f347648b340639859e0.jpg,f94c377b-d1f2-40b5-8326-cd4a72c8cc83,f94c377b-d1f2-40b5-8326-cd4a72c8cc83.jpg,Y +SAMAN,최경호,khchoi3@samaneng.com,khchoi3,224157.jpg,8f1606a695a012c4fec4ea4e86ce4c5fc14f1aa60171973ac31b576641d01d6a.jpg,8926ec8c-1909-4df9-9c09-076a902ffe41,8926ec8c-1909-4df9-9c09-076a902ffe41.jpg,Y +SAMAN,최광민,kmchoi@samaneng.com,kmchoi,211148.jpg,d5d8ca63802c20e60949b87f60949b0ec6c96e796bcf44f0bf7fa7020e7640da.jpg,f897eb58-494e-4a61-a929-abe6b2cfea1d,f897eb58-494e-4a61-a929-abe6b2cfea1d.jpg,Y +SAMAN,최광수,kschoi@samaneng.com,kschoi,218103.jpg,2bc7df36755850f195b214cf931e706b3b8a25cd989e531d94b14236d3435728.jpg,4ecf9972-ac24-464d-898f-b1160bca27f7,4ecf9972-ac24-464d-898f-b1160bca27f7.jpg,Y +SAMAN,최광일,kichoe@samaneng.com,kichoe,216131.jpg,da5787c08c8deea6e5ad1f816247d8ba8061487769a8504ae56fa0ca6f275248.jpg,881fbbb1-c955-4ed6-8b2e-6bf9677afc7d,881fbbb1-c955-4ed6-8b2e-6bf9677afc7d.jpg,Y +SAMAN,최광현,khchoi@samaneng.com,khchoi,224104.jpg,2f529148ee07e1f6e95b99128c1dae99f8664d0f6084d4f10bd58000b254463e.jpg,6e5d3665-87b6-4d62-9e5c-0a95015a9023,6e5d3665-87b6-4d62-9e5c-0a95015a9023.jpg,Y +HANMAC,최규진,gjchoi@hanmaceng.co.kr,gjchoi,M26034.jpg,7d3c9313835615fc2c5cbba0f1f1b85e4052e1451e77150b931c6c1e15656904.jpg,b575e3d3-daa2-49a1-95b7-4053874bb852,b575e3d3-daa2-49a1-95b7-4053874bb852.jpg,Y +SAMAN,최근영,kychoi1@samaneng.com,kychoi1,224072.jpg,67d0f00be75333dc52bb44d8493490f0a9a16f0f6b3ec7f0aea7d31e65e50fbb.jpg,8fd2e4ad-4510-491a-a520-01ce9731371b,8fd2e4ad-4510-491a-a520-01ce9731371b.jpg,Y +HANMAC,최근혜,khchoi4@brsw.kr,khchoi4,B24008.jpg,8cd22b424028328cc29527bbb1729a92cb7dd7d548c9b88e3a12e4d1d873b6d3.jpg,9b7f38a3-fb71-432c-8b49-745c1c022c01,9b7f38a3-fb71-432c-8b49-745c1c022c01.jpg,Y +SAMAN,최기연,kychoi@samaneng.com,kychoi,221115.jpg,e55db6f428b16e5e94cf02ca26146afebddfaaa3bffe19b6b9dc38679be7aa6d.jpg,53c400d9-9533-484c-aad2-15e3b1c12811,53c400d9-9533-484c-aad2-15e3b1c12811.jpg,Y +SAMAN,최기평,gpchoi@samaneng.com,gpchoi,225329.jpg,513a60f03fbd67f1c7f2d10667792ffd395e30c8dc459bfff4e651d8f8422afb.jpg,ebe3d6e1-24cf-40f3-80ba-de1c1ba1c6c0,ebe3d6e1-24cf-40f3-80ba-de1c1ba1c6c0.jpg,Y +SAMAN,최기호,khchoi2@samaneng.com,khchoi2,203276.jpg,dc421cc545f7c2bcf47fcb18ce6b54f13403a2426fee5bd3d7ceb6803412584f.jpg,ab352fb1-9040-4447-9ea3-7ef463ff52b2,ab352fb1-9040-4447-9ea3-7ef463ff52b2.jpg,Y +SAMAN,최길용,kychoi2@samaneng.com,kychoi2,223126.jpg,e74af74ee862f23f6c67edc3e775474a94b35a5f4199f740236d5d2842f6b1bc.jpg,363b9837-0359-4f74-8f98-545fa5d30604,363b9837-0359-4f74-8f98-545fa5d30604.jpg,Y +SAMAN,최낙용,nychoi@samaneng.com,nychoi,223189.jpg,fe3a46f3c2078e6f6644b134b4b80a9309e14601ab683e3c39b6dc147462c0cd.jpg,299bfbb6-39a1-4212-9589-2cdffc4f8e9d,299bfbb6-39a1-4212-9589-2cdffc4f8e9d.jpg,Y +SAMAN,최난,nchoi@samaneng.com,nchoi,025129.jpg,123f0a5860276d584744487df0a4f1fef00e387d8e5528efeefc4114d77d6615.jpg,7d4a5583-faee-445d-90bb-0cf9d1978089,7d4a5583-faee-445d-90bb-0cf9d1978089.jpg,Y +SAMAN,최대선,dschoi@samaneng.com,dschoi,216016.jpg,2b422e54cbe0fb94ac78c38a3e84b4650315698801e5ce9a24854211afa21d13.jpg,fa3d0d72-e1cc-4101-8e95-dbe13a561a4f,fa3d0d72-e1cc-4101-8e95-dbe13a561a4f.jpg,Y +HANMAC,최대헌,dhchoi@hanmaceng.co.kr,dhchoi,M24038.jpg,119e754020223bfda280081d91c7ea470428f70cef111d12b52dc19780dc6103.jpg,89e72fd3-9e68-4b87-b780-7971d26845e9,89e72fd3-9e68-4b87-b780-7971d26845e9.jpg,Y +SAMAN,최도현,dhchoi1@samaneng.com,dhchoi1,224175.jpg,bdcac1c127a727726ab43c2f8824cc90c40d2cf9161b0d137a757d2ec9e6cf88.jpg,b8a44e3b-5e4b-47fd-b830-6b4da6a7b59b,b8a44e3b-5e4b-47fd-b830-6b4da6a7b59b.jpg,Y +SAMAN,최동규,dkchoi@samaneng.com,dkchoi,221156.jpg,fa7967b074b762f6ab554ffb7cd0ec04e03fe7f61782db196401ef4f7afc52c4.jpg,b8093104-ab89-49d9-a488-adc38880767e,b8093104-ab89-49d9-a488-adc38880767e.jpg,Y +SAMAN,최동석,dschoi1@samaneng.com,dschoi1,223381.jpg,141071a71c5e0726c6c4385070a8aeae5090128e08cdb1657ccc0956692e3dcc.jpg,362d33b1-8ad0-41ab-85a5-aa600bffa53d,362d33b1-8ad0-41ab-85a5-aa600bffa53d.jpg,Y +SAMAN,최동식,dschoi16@samaneng.com,dschoi16,216007.jpg,497392435cb4da486c40e8d8046c72c170609caf58b75e2d9d5b0fb8a9c543fa.jpg,d0209fc9-dfbe-4411-ada2-3d02929f6b99,d0209fc9-dfbe-4411-ada2-3d02929f6b99.jpg,Y +JANGHEON,최동찬,dcchoi@brsw.kr,dcchoi,J22301.jpg,530b1dd80e859f136df2bc90b1235f200b8b7de5da2b2e252b6de3f1391e5820.jpg,286ba161-7883-45e5-b2b5-83d765c7efce,286ba161-7883-45e5-b2b5-83d765c7efce.jpg,Y +SAMAN,최란,rchoi@samaneng.com,rchoi,221164.jpg,2b0d747cf9dec39eed426f30dde37c98b4996cc6f4efe110455ae1b1ce53a53a.jpg,3cbf4765-e147-4e99-a3b3-3e9853d406fc,3cbf4765-e147-4e99-a3b3-3e9853d406fc.jpg,Y +JANGHEON,최만규,mkchae@brsw.kr,mkchae,J22305.jpg,5fb9596abd95e38e3428902f30574e796c7e3cfb11817bcd761225697f6aa20d.jpg,f3801380-e91f-4303-acb3-51e05b70e858,f3801380-e91f-4303-acb3-51e05b70e858.jpg,Y +SAMAN,최무호,mhchoi@samaneng.com,mhchoi,214080.jpg,cefb95031d8a644f0ae9286efddb4e6982cfda671e1f0bf92480a1cc2f7e4027.jpg,ef33c824-b893-40ab-8e13-14400988e564,ef33c824-b893-40ab-8e13-14400988e564.jpg,Y +SAMAN,최민주,mjchoi@samaneng.com,mjchoi,025102.jpg,fb499ab52ed93c58e45611d848680d645910915e4941674aa1db08377148e2cd.jpg,4f8733a3-fe1b-4819-9002-c630af71102d,4f8733a3-fe1b-4819-9002-c630af71102d.jpg,Y +SAMAN,최병석,bschoi2@samaneng.com,bschoi2,220131.jpg,5c9ac1a91ad30a2350c804c09272673590f8b39f2cc2bce25cf85c52172c92b4.jpg,23e7b105-5479-4ae8-8835-6ebd6c941891,23e7b105-5479-4ae8-8835-6ebd6c941891.jpg,Y +SAMAN,최상민,smchoi@samaneng.com,smchoi,218039.jpg,57649558d7aeb01dcce0b96fa10507484eb01bbae20dded26c5ecba15ddd3b83.jpg,9512158d-66d4-4e68-9d7b-8aac5d00ac4c,9512158d-66d4-4e68-9d7b-8aac5d00ac4c.jpg,Y +SAMAN,최상인,sichoi@samaneng.com,sichoi,222080.jpg,10be7f11e50feb91dd851897df579034a8d66861669152735600b3d948ab01df.jpg,87d46987-c68a-44b5-a355-ea8e2eba7557,87d46987-c68a-44b5-a355-ea8e2eba7557.jpg,Y +SAMAN,최석문,smchoi2@samaneng.com,smchoi2,226146.jpg,6b98ca65050cde239fd6500a0a507026a8476e7a1c2675e3d02e84878261218b.jpg,2ed05ec3-5e1d-4f8c-b8ae-195e60a6571a,2ed05ec3-5e1d-4f8c-b8ae-195e60a6571a.jpg,Y +SAMAN,최선미,smchoi1@samaneng.com,smchoi1,026003.jpg,790e4a31ffce6f7a543a0c3c212c80efd0517041d86ca14e7890c6ad91ddf3f9.jpg,d1210c06-47a7-495b-89b1-1782ccbbddd2,d1210c06-47a7-495b-89b1-1782ccbbddd2.jpg,Y +SAMAN,최선아,sachoi@samaneng.com,sachoi,222156.jpg,4c35f61b65b8ac15d305aa2fa3602d39cec94270193eb5646ebff3256f33f5c7.jpg,dbb1c372-5a15-43d3-a33a-58346dbaba6b,dbb1c372-5a15-43d3-a33a-58346dbaba6b.jpg,Y +SAMAN,최선환,shchoi3@samaneng.com,shchoi3,226028.jpg,700c700cca2f3ca094ec5acefbe44811f66e399f40cf55fceb86b9255d375428.jpg,0330a54e-aafc-4897-b62e-2a00b9470c61,0330a54e-aafc-4897-b62e-2a00b9470c61.jpg,Y +SAMAN,최성균,sgchoi@samaneng.com,sgchoi,212137.jpg,7e962f4be462b54f51358da81dce9a00bc91c7f0b49093a82391ccc21d42925b.jpg,edf52d13-a023-479a-a19e-0424355de02c,edf52d13-a023-479a-a19e-0424355de02c.jpg,Y +HANMAC,최성길,sgchoi2@hanmaceng.co.kr,sgchoi2,M23031.jpg,4e547a27faa8d8907c2906e80a77b9e49fb6c32c670ff6d5407cf9d0ccad2bae.jpg,59ae6abb-0027-49bb-9800-87ab355846b5,59ae6abb-0027-49bb-9800-87ab355846b5.jpg,Y +SAMAN,최성배,sbchoi1@samaneng.com,sbchoi1,225302.jpg,971c5fca6f8f3e57fa4098d612ca204eab61b1bc1cb2016803020ff627faa559.jpg,b4dae592-91ee-4d05-a7e8-7df0a7d366e1,b4dae592-91ee-4d05-a7e8-7df0a7d366e1.jpg,Y +SAMAN,최성환,shchoi1@samaneng.com,shchoi1,224254.jpg,1a28c8d52110b03079bd68d9d280b91d509a35ebfeee226638b81abfdba78b2b.jpg,3880e333-b6ba-4275-8250-076767296210,3880e333-b6ba-4275-8250-076767296210.jpg,Y +SAMAN,최솔비,sbchoi@samaneng.com,sbchoi,222027.jpg,795d5fb773508036b7201c3489c0ed0e6d2d394b259bfdab6129f67e51d31cd2.jpg,265c39de-3265-4580-951a-0f953c854dff,265c39de-3265-4580-951a-0f953c854dff.jpg,Y +SAMAN,최수혁,shchoi4@samaneng.com,shchoi4,225049.jpg,160d597b41f409cf4cb0b90abb925e0a4d709615648782e6adb66a4eb1bdc162.jpg,61b29aa8-eae0-4c12-a3d3-3db8fddaa387,61b29aa8-eae0-4c12-a3d3-3db8fddaa387.jpg,Y +SAMAN,최순호,shchoi5@samaneng.com,shchoi5,225069.jpg,5f51e9237143e859f7c6c94169920934252b15d2e5f16590c232011466ca947b.jpg,d22fbd11-cb82-4ba1-a958-b4fe87262a73,d22fbd11-cb82-4ba1-a958-b4fe87262a73.jpg,Y +HANMAC,최승범,sbchoi2@hanmaceng.co.kr,sbchoi2,M21432.jpg,7dd00e40b6905dab97ca0e3b7ae0b7b966d53d147a92f76b48133e45f4ee9c2e.jpg,3b076902-0793-4201-bbd1-e45ae6c27756,3b076902-0793-4201-bbd1-e45ae6c27756.jpg,Y +SAMAN,최승우,swchoi1@samaneng.com,swchoi1,225167.jpg,8eb84109ac6fd4de7ed7fef1fc3e5499ed22f38da96def4cba9fbc19431b7e92.jpg,dcacf98b-7c9d-4ac6-9a39-0b7ccb48b78b,dcacf98b-7c9d-4ac6-9a39-0b7ccb48b78b.jpg,Y +SAMAN,최승제,sjchoi@samaneng.com,sjchoi,224343.jpg,5c020f4fa3f1ceb106f327bc1fddbabcb7c18452b1923ade9c24d308a8574146.jpg,93686abb-473c-4760-958a-33db8abffe7a,93686abb-473c-4760-958a-33db8abffe7a.jpg,Y +SAMAN,최연서,yschoi@samaneng.com,yschoi,223144.jpg,f43d5e1fa09555af908509f98720a686764cef23e4c5e2f67d63da4167d94527.jpg,14a96edf-3eb0-43fb-86ea-830398ee9e59,14a96edf-3eb0-43fb-86ea-830398ee9e59.jpg,Y +SAMAN,최영록,yrchoi@samaneng.com,yrchoi,217033.jpg,1ba7c5576dfff842ecbbca6c3992042da18f05e5a3a1bad89de5af77cb730554.jpg,b02178ea-4c73-49c3-a0c2-40241b95f463,b02178ea-4c73-49c3-a0c2-40241b95f463.jpg,Y +SAMAN,최영민,ymchoi@samaneng.com,ymchoi,224220.jpg,5fa9c2f5c1677a75c5ff7ed2bfef705310b9e66114af77efc327d0126341a89e.jpg,4ac8f4de-ccf4-4bdb-a3bb-5ebb1bed9c4d,4ac8f4de-ccf4-4bdb-a3bb-5ebb1bed9c4d.jpg,Y +SAMAN,최영욱,ywchoi@samaneng.com,ywchoi,224073.jpg,3461a5bb0a970a84502f5d87131293b05bdfa4db4934c0b64e9ae15ae681718f.jpg,f746e954-f4a0-4869-b39c-2ec989862648,f746e954-f4a0-4869-b39c-2ec989862648.jpg,Y +SAMAN,최영종,yjchoi@samaneng.com,yjchoi,215051.jpg,3b00bc60034e869bfcdd12430d6b8c4f920281bdb01452f634d923fabdec87b2.jpg,8e3b44d2-a728-4482-9e05-1072ca7fcde5,8e3b44d2-a728-4482-9e05-1072ca7fcde5.jpg,Y +SAMAN,최영주,yjchoi4@samaneng.com,yjchoi4,224153.jpg,0fbf44e96752accaaa86816543eedb6832be3a3aed16963932e168aaa583ea6f.jpg,2bc066ac-38d1-4275-929d-4e85f1e0e424,2bc066ac-38d1-4275-929d-4e85f1e0e424.jpg,Y +HANMAC,최영철,ycchoi@hanmaceng.co.kr,ycchoi,M25018.jpg,c5558739b02a267cf788bcda48f2c8bb3c18980cac461328724a1605f797cdc6.jpg,56422ca4-6db2-4b83-ae97-56edb66c1af2,56422ca4-6db2-4b83-ae97-56edb66c1af2.jpg,Y +HANMAC,최영환,yhchoi3@hanmaceng.co.kr,yhchoi3,B16302.jpg,2bd8879b1fdfa4d65bfa998fdce0fe7a5d238bbf5d6f495da3b786e249bea2b4.jpg,9e718b8b-446f-453f-96aa-1568a01f6819,9e718b8b-446f-453f-96aa-1568a01f6819.jpg,Y +SAMAN,최영훈,yhchoi2@samaneng.com,yhchoi2,224167.jpg,b6cbb0180d879cbdeda1ee253e53e6db6e4a0087be42827442b696976de5ff05.jpg,1080f04e-3430-415a-8613-daf0bb9a4b8a,1080f04e-3430-415a-8613-daf0bb9a4b8a.jpg,Y +SAMAN,최오혁,ohchoi@samaneng.com,ohchoi,226017.jpg,adfaccc305146c1c86aeb41c3e3dda418d3dd2429623989d89df6174466a05ed.jpg,96a7516d-cefb-4e27-8159-739bd73d5f0f,96a7516d-cefb-4e27-8159-739bd73d5f0f.jpg,Y +SAMAN,최완동,wdchoi@samaneng.com,wdchoi,224087.jpg,65a9e4ea9c45bfcbe8e408dae827f70fc5f02d293fd8d450eff029f4be72adc8.jpg,6150d74b-3188-405c-9eee-07ff854b315d,6150d74b-3188-405c-9eee-07ff854b315d.jpg,Y +SAMAN,최용준,yjchoi6@samaneng.com,yjchoi6,224372.jpg,c7540803884781e9117b4fd68af1a9768e20c959ce66edcd82b6a1f1d1507259.jpg,9c5aa551-090b-41e7-a0a9-5db73affeb27,9c5aa551-090b-41e7-a0a9-5db73affeb27.jpg,Y +SAMAN,최용혁,yhchoi@samaneng.com,yhchoi,222010.jpg,1e40e97464f6f554b28ec1e8fbb6297db43bf3e161ed679aa22001cf7d44000b.jpg,f236354c-9945-4f3c-a241-0e356ab6fa50,f236354c-9945-4f3c-a241-0e356ab6fa50.jpg,Y +SAMAN,최원석,wschoi1@samaneng.com,wschoi1,224001.jpg,718943e4111f177f3af99b55e1dd694ec79b9f7ab8eb7cbc63f2aeadb0abc308.jpg,c2496d9a-4ad0-4605-a93f-94643059a662,c2496d9a-4ad0-4605-a93f-94643059a662.jpg,Y +SAMAN,최원준,wjchoi@samaneng.com,wjchoi,226029.jpg,bb3428811ca50ee1c2079a55c89728056a7cf9b757c84fb2166180f666107ed2.jpg,070ace2f-4442-4431-b36c-d3f4e65b0677,070ace2f-4442-4431-b36c-d3f4e65b0677.jpg,Y +SAMAN,최원현,whchoi@samaneng.com,whchoi,207182.jpg,7acb99d43d989797f7b6dacda28f0652c3f19f75f62823dd2c6be02fc7773611.jpg,3df41a55-7a50-4ac6-b63e-32d2c0bad1da,3df41a55-7a50-4ac6-b63e-32d2c0bad1da.jpg,Y +SAMAN,최원형,whchoi1@samaneng.com,whchoi1,217130.jpg,606af137927674da4eb76a0b2103ea1b2f5376f9534be85b5a095d1914ec9d92.jpg,4b68644f-44c4-45ca-aeb2-6c94a3bde010,4b68644f-44c4-45ca-aeb2-6c94a3bde010.jpg,Y +SAMAN,최원호,whchoi2@samaneng.com,whchoi2,222288.jpg,60d13e9cf434973f6e4b8d6a532f7a061e5ff9d08cba94a9abf2e9adc195ed5a.jpg,87230909-b8f7-43f2-b6cc-9de5a9cfa862,87230909-b8f7-43f2-b6cc-9de5a9cfa862.jpg,Y +SAMAN,최윤주,yjchoi2@samaneng.com,yjchoi2,026001.jpg,1da962b007706c07937a0ac79cc92c3bd3328e2fc7e883952e1b7bf3f877ef4f.jpg,f44c0b08-ebf6-4cea-ab42-b7cbed111f61,f44c0b08-ebf6-4cea-ab42-b7cbed111f61.jpg,Y +SAMAN,최윤진,yjchoi1@samaneng.com,yjchoi1,222240.jpg,174d25247c33293ec8b53b50e6cd2f5848573a92c34c141bd4cd6cbaf4f7f99a.jpg,0f5f1641-e812-4791-bb79-38b9415a1496,0f5f1641-e812-4791-bb79-38b9415a1496.jpg,Y +PTC,최은석,eschoi1@brsw.kr,eschoi1,P11201.jpg,03c57da7dbd15bbffb631a07bfb916b1112eb2e110b818e15df735c895664060.jpg,37884b6e-b4e3-4c04-9f28-371ce412bf6c,37884b6e-b4e3-4c04-9f28-371ce412bf6c.jpg,Y +SAMAN,최은수,eschoi@samaneng.com,eschoi,220078.jpg,86580c9725ae0e994f92dd9352ec38c78da3d46664980b943e88273e3ad2877f.jpg,0bcd4d1c-72f6-4ed0-a389-73741afc167a,0bcd4d1c-72f6-4ed0-a389-73741afc167a.jpg,Y +SAMAN,최의균,ekchoi@samaneng.com,ekchoi,203125.jpg,832ab90b0f7186b381ff0abe80aee89cb4e842d3f5a6be0faef0ad60e9c9bc82.jpg,7fd412f2-c643-478e-84e3-2d96a00c96ba,7fd412f2-c643-478e-84e3-2d96a00c96ba.jpg,Y +SAMAN,최장규,jkchoi@samaneng.com,jkchoi,200092.jpg,e2743ee8faf0c2b381eba71700a3a188aa7e6cb3d0853e125be6d167e9cfba48.jpg,0a4b9a59-35be-4cd4-8e34-f4f27c4c30b2,0a4b9a59-35be-4cd4-8e34-f4f27c4c30b2.jpg,Y +HANMAC,최재곤,jgchoi2@hanmaceng.co.kr,jgchoi2,M25005.jpg,1aa5547f916b050c522fb38c28c1c7d312fcbf8df7ca20fc3b464254efdce174.jpg,24deb664-a369-45c9-9f6a-f04025c852dd,24deb664-a369-45c9-9f6a-f04025c852dd.jpg,Y +SAMAN,최재영,jychoi@samaneng.com,jychoi,221240.jpg,6e3ba38578dd0b5cc5001d16c9f1ee96533ef352a3a4129a88995d94908dee45.jpg,3830f512-5a7f-411d-b5b2-1a4db412c0a3,3830f512-5a7f-411d-b5b2-1a4db412c0a3.jpg,Y +SAMAN,최재우,jwchoi2@samaneng.com,jwchoi2,225367.jpg,60912787b0cb97060c0e66ec11a2e35f0ee3367047493556793b5f0a1b528b6d.jpg,73fd8b7e-5999-4cf2-ba4a-fa35cf10650d,73fd8b7e-5999-4cf2-ba4a-fa35cf10650d.jpg,Y +SAMAN,최재원,jwchoi6@samaneng.com,jwchoi6,226111.jpg,3a1e4b759932cc8abe846d97c05e618a9f5f452b11f4c68dab133c9e44122f8d.jpg,273c01f8-999a-44b9-9287-71fad5f04793,273c01f8-999a-44b9-9287-71fad5f04793.jpg,Y +SAMAN,최정균,jkchoi1@hanmaceng.co.kr,jkchoi1,221291.jpg,01e7ebfbbc0497324c46f1fc745f0f6d7cea7110cad0602f59f58ec32c9d6c3a.jpg,ba7cec83-723d-4cf1-9f05-fff24f5ad12f,ba7cec83-723d-4cf1-9f05-fff24f5ad12f.jpg,Y +HANMAC,최정길,jkchoi3@hanmaceng.co.kr,jkchoi3,M24064.jpg,43c2c698eb87aa74e29071bc56daa0c96e3ffc52dd1b2849a6931844909efd2e.jpg,80318d44-e08b-4375-9790-fb666c2f5f1e,80318d44-e08b-4375-9790-fb666c2f5f1e.jpg,Y +SAMAN,최정우,jwchoi3@samaneng.com,jwchoi3,221337.jpg,6bc2db2cb3b84201ccfa6d0daf6068d518fc47732d51b504d3c0abb5847cf6da.jpg,b3f992aa-94e6-40a0-ae27-26df553daa99,b3f992aa-94e6-40a0-ae27-26df553daa99.jpg,Y +SAMAN,최정호,jhchoi5@samaneng.com,jhchoi5,224249.jpg,e6a0f444162b7b9dbe9c0cbb4a3df87472db101fa18720d669de23bd0a8bb4ac.jpg,47f67ef4-b5aa-4846-96ff-1a03abe3362e,47f67ef4-b5aa-4846-96ff-1a03abe3362e.jpg,Y +SAMAN,최정훈,jhchoi4@samaneng.com,jhchoi4,224341.jpg,98bec83f01a93bf0c653e19dc9cbd9bd7d937d127d0a235cb963ecfea27acf55.jpg,c3494d32-a2cc-4144-832c-5e6ccc413f10,c3494d32-a2cc-4144-832c-5e6ccc413f10.jpg,Y +SAMAN,최제현,jhchoi7@samaneng.com,jhchoi7,225051.jpg,8ee27e1aaa97d6d76dd09b9904ba6b3b07148d73bc11c75382b98177c2876561.jpg,44294968-6628-41f7-909c-2d27eb7d215b,44294968-6628-41f7-909c-2d27eb7d215b.jpg,Y +PTC,최종석,jhchoi13@brsw.kr,jhchoi13,P17301.jpg,d39e341d8689353b9505134ac176ae855f05996f331ddd24b47b3ae70a2aaabd.jpg,9846f314-056c-4c95-8605-52a4d001d886,9846f314-056c-4c95-8605-52a4d001d886.jpg,Y +SAMAN,최종원,jwchoi5@samaneng.com,jwchoi5,226016.jpg,8f769725c1e2cd2295636fcfa3c725e8668c9968286f45733288619748a01433.jpg,ce5dcbd3-1a6c-40db-8687-27d87ebf6c68,ce5dcbd3-1a6c-40db-8687-27d87ebf6c68.jpg,Y +SAMAN,최종학,jhchoi9@samaneng.com,jhchoi9,225254.jpg,f27cd342f59068969024b5bd6baa1b7039b02c470350d2aaaeac44d66755971c.jpg,fa70eb83-f645-4ee6-90be-988a58918105,fa70eb83-f645-4ee6-90be-988a58918105.jpg,Y +HANMAC,최종현,jhchoi11@hanmaceng.co.kr,jhchoi11,M26030.jpg,1cc44b2f1e831f17b8c8a645d561f2a63cccf40a75e1b1f31d1deff997d439b6.jpg,1f60a976-aedd-4d76-94a0-63ddb9de438e,1f60a976-aedd-4d76-94a0-63ddb9de438e.jpg,Y +SAMAN,최종환,jhchoi@samaneng.com,jhchoi,223316.jpg,426988661183df88829bd8a2d5f1055448c0715bd8363e78ba2b6ee2eda7a024.jpg,1f24fcae-ebda-4a47-b5d9-8064a96d22c7,1f24fcae-ebda-4a47-b5d9-8064a96d22c7.jpg,Y +SAMAN,최종훈,jhchoi1@samaneng.com,jhchoi1,222263.jpg,7e61b34ea66ec489fd7df1ee5ed01cf98066b6977b094497113f89ee832afb08.jpg,7043a8b6-82af-46de-8b97-5daec967a55b,7043a8b6-82af-46de-8b97-5daec967a55b.jpg,Y +HANMAC,최준영,jychoi4@hanmaceng.co.kr,jychoi4,B17314.jpg,548414206de99d45165100e490201f4f263d9a9cc8ab92053ed00b8557003faf.jpg,28e9e9c7-798a-4b56-99bd-9e313dbad83d,28e9e9c7-798a-4b56-99bd-9e313dbad83d.jpg,Y +SAMAN,최준호,jhchoi6@samaneng.com,jhchoi6,224394.jpg,4410abdfb39067c2bf5a71f82e9a9ef37f0b7475960a3b13486f676b6e69b61a.jpg,c6faf1f8-3acd-40f2-a9d8-4dc39cbf7c1b,c6faf1f8-3acd-40f2-a9d8-4dc39cbf7c1b.jpg,Y +SAMAN,최준환,jhchoi8@samaneng.com,jhchoi8,225155.jpg,d0e8b2280ebbb8faceeea6a0993efb5401387298cd3a7b31a08052863515026d.jpg,edb1bfd7-ccfc-4d3a-9723-a00f11170a2c,edb1bfd7-ccfc-4d3a-9723-a00f11170a2c.jpg,Y +SAMAN,최지수,jschoi@samaneng.com,jschoi,223385.jpg,ae5b581887701e2fda979fe3efb3180d8957c4847b8557ea9983d83c14ccb1e6.jpg,e83978da-0a0c-41e2-9515-5ad1e8e9ce33,e83978da-0a0c-41e2-9515-5ad1e8e9ce33.jpg,Y +SAMAN,최지영,jychoi3@samaneng.com,jychoi3,222188.jpg,12a85fc63d4d2ad94d97e7a2d3e7df80f210ffbe0994e176ccc1222c4f013593.jpg,e644b1ad-4bb8-4179-a957-a5d429cc0528,e644b1ad-4bb8-4179-a957-a5d429cc0528.jpg,Y +SAMAN,최지훈,jhchoi2@samaneng.com,jhchoi2,224105.jpg,c900f3fce5edc9ead4021ef9c447591efae9565b17d13b01ebb17e411f03924d.jpg,17b72dcf-f81d-4082-b0da-c4bfaa1ef55f,17b72dcf-f81d-4082-b0da-c4bfaa1ef55f.jpg,Y +HANMAC,최진경,jkchoi2@hanmaceng.co.kr,jkchoi2,M24043.jpg,207f81579041fc49dbf08aa90617638b0a15df7f2c819e6b0f6cb25c89d13092.jpg,5c5233eb-4eb7-4c67-927f-093c40a8a091,5c5233eb-4eb7-4c67-927f-093c40a8a091.jpg,Y +SAMAN,최진영,jychoi1@samaneng.com,jychoi1,218118.jpg,12325e2f6dc42736f435970601ca653e9246f8c926f59dc49b48e541b3233f5d.jpg,e766e7ad-6fcb-4416-be6d-a6e1de7cfed3,e766e7ad-6fcb-4416-be6d-a6e1de7cfed3.jpg,Y +SAMAN,최진우,jwchoi@samaneng.com,jwchoi,194057.jpg,adeccc4b8e230a62411e8146092830e350e743e2f6b44208b1218259f80649ad.jpg,8f1b425e-1927-4498-be04-e8b1ccb2694b,8f1b425e-1927-4498-be04-e8b1ccb2694b.jpg,Y +HANMAC,최진우,jwchoi7@hanmaceng.co.kr,jwchoi7,M02310.jpg,edc46cf38cd04d08d6efe42743c9f170069f1582caff1a69faa32e8f78ad83da.jpg,f941f5b6-3c7b-434e-942b-a1c090dcebfc,f941f5b6-3c7b-434e-942b-a1c090dcebfc.jpg,Y +SAMAN,최진원,jwchoi4@samaneng.com,jwchoi4,223300.jpg,df54cb2faae4b53a9046fa805d0abc741fc88cea6d571787b3972e6e30461728.jpg,64ef6773-0ab3-4a10-a88c-e707e4303892,64ef6773-0ab3-4a10-a88c-e707e4303892.jpg,Y +HANMAC,최진태,jtchoi@brsw.kr,jtchoi,B24032.jpg,eb1951cfdec4d398e557e4302ca7b46c6527acbad3c1ac2b4ecbc2bd9b9f499f.jpg,25fd04de-a3a7-4bb5-a6a4-fee51f4fbedb,25fd04de-a3a7-4bb5-a6a4-fee51f4fbedb.jpg,Y +SAMAN,최찬수,cschoi@samaneng.com,cschoi,221143.jpg,995155d4305f3d36dbb4786cb8dbc0ab8554d6fffe390494e1498d8c10087b04.jpg,1dad0012-10b7-4ecd-b3ac-89b6b1caa15d,1dad0012-10b7-4ecd-b3ac-89b6b1caa15d.jpg,Y +SAMAN,최찬용,cychoi1@samaneng.com,cychoi1,222185.jpg,2ac81efe25e50037d66a96ebc001bb352fb7b55312c7d563ea9272fd51227e6a.jpg,e529feb0-31be-4229-8cff-680d07cac1eb,e529feb0-31be-4229-8cff-680d07cac1eb.jpg,Y +SAMAN,최창열,cychoi@samaneng.com,cychoi,221089.jpg,0ab5e68377971a1e464bd6a9f86617e233262f2dbbc7810932241a81cae49dd5.jpg,28abb7d0-fd90-4f58-9601-dde55ec96f08,28abb7d0-fd90-4f58-9601-dde55ec96f08.jpg,Y +SAMAN,최창인,cichoi@samaneng.com,cichoi,222089.jpg,09e41c337ed1ca418c5638c37356655f593e88b3ee72fb628fc30d41db438773.jpg,79e91954-9e45-49ba-bca6-6647d692c4bf,79e91954-9e45-49ba-bca6-6647d692c4bf.jpg,Y +SAMAN,최천동,cdchoi@samaneng.com,cdchoi,224210.jpg,78cb5ccfc1e820bd15ad3a82409179668f592b4db7f13bd8cf9d73ed3ca3cd3f.jpg,5eb428f0-1810-4d08-8acf-5a55eee27e9b,5eb428f0-1810-4d08-8acf-5a55eee27e9b.jpg,Y +SAMAN,최철준A,cjchoi@samaneng.com,cjchoi,224232.jpg,8f36f3436d500672da90eb16b61d3d69e03fa655de36927043a3503f00b916d9.jpg,4548d00a-a564-4b0c-8606-f089c1d0dee2,4548d00a-a564-4b0c-8606-f089c1d0dee2.jpg,Y +SAMAN,최철준B,cjchoi1@samaneng.com,cjchoi1,225381.jpg,ec005c71496eeee66f8282af71684dc56ceb6967c6dc6d08444b537f726ad254.jpg,242ac320-5c67-4876-bfd4-9ce1af89e321,242ac320-5c67-4876-bfd4-9ce1af89e321.jpg,Y +JANGHEON,최태순,tschoi@brsw.kr,tschoi,J10301.jpg,9a0bd6e518958610a8d5aa084ae6a3f1b0582d0bb471ad879b1e303ad99aa4e8.jpg,079ab5ce-c281-45fa-ad29-c41dad95c246,079ab5ce-c281-45fa-ad29-c41dad95c246.jpg,Y +HANMAC,최현근,hkchoi2@hanmaceng.co.kr,hkchoi2,M24045.jpg,7b18ed6adc7bbc3ae107919d48e7627d40eaa67d35706271d31a18084aa77db3.jpg,3c201ce4-3102-4c80-8f3e-cb8c97c866ce,3c201ce4-3102-4c80-8f3e-cb8c97c866ce.jpg,Y +PTC,최현기,hkchoi3@brsw.kr,hkchoi3,P23201.jpg,5139066c538bbd930d38f66ed01ebb7b87db162b3bdc923d8f4459dee2d2c46c.jpg,263980c8-144d-412d-9060-78a8182e0635,263980c8-144d-412d-9060-78a8182e0635.jpg,Y +SAMAN,최현민,hmchoi@samaneng.com,hmchoi,226054.jpg,f2ae04c92a99bf0ede7cd489ae882b5c33ab42a2e183bc0b0c77fe0b374855f9.jpg,330233dc-78e7-4903-9252-524383cb67eb,330233dc-78e7-4903-9252-524383cb67eb.jpg,Y +SAMAN,최현석,hschoi@samaneng.com,hschoi,215023.jpg,42aab65e503415624e0f6de6d0c65785220572157e5ac754d5a353e5a5b850db.jpg,e5e690a6-72b1-4418-80c7-feecfd43f3c6,e5e690a6-72b1-4418-80c7-feecfd43f3c6.jpg,Y +SAMAN,최현진,hjchoi1@samaneng.com,hjchoi1,225149.jpg,2acec4ab26d828c9c9d268cfa3b8804097ce51db0d35077ca83363cba941156d.jpg,8258b72e-61f7-44d0-8585-219fc7a520c6,8258b72e-61f7-44d0-8585-219fc7a520c6.jpg,Y +HANMAC,최현호,hhchoi@brsw.kr,hhchoi,B22064.jpg,68dbd8e86128aad2e399b747c450a59aa5479e44aa25721f9434982d62205c38.jpg,fdaec428-eb53-4095-8515-c3505649b26f,fdaec428-eb53-4095-8515-c3505649b26f.jpg,Y +SAMAN,최형규,hkchoi@samaneng.com,hkchoi,223266.jpg,79ba564873399ab0bdaa128e4432f971f780aeb6320488ba915e3e29fba7e0bd.jpg,a70a79d9-b1d4-4643-beff-f8e54d2c6291,a70a79d9-b1d4-4643-beff-f8e54d2c6291.jpg,Y +SAMAN,최형기,hkchoi1@samaneng.com,hkchoi1,226068.jpg,d70a0eac5f4345a238d853a98f4e5687a1e2601d7a9a838e674d2cb7e8d84cab.jpg,369a0276-c234-46d1-9315-b1ce3b3ae22b,369a0276-c234-46d1-9315-b1ce3b3ae22b.jpg,Y +HANMAC,최혜은,huchoi@brsw.kr,huchoi,B23060.jpg,d6d479c8bc82f2fe9dd57fe39e39e1b4a7a3534430bbc90f64450631475d4d2c.jpg,fce3c423-d465-4754-a25e-b2ba3ae88236,fce3c423-d465-4754-a25e-b2ba3ae88236.jpg,Y +SAMAN,최호삼,hschoi2@samaneng.com,hschoi2,225289.jpg,bc2be32150e832769c923dd40f3fc95499ec2add0219b4008ec75b81267ef0b5.jpg,1be53325-fcf2-46f3-af27-911b9d147b9f,1be53325-fcf2-46f3-af27-911b9d147b9f.jpg,Y +SAMAN,최홍찬,hcchoi1@samaneng.com,hcchoi1,223038.jpg,b62a64be00a008f63d609faed3be56c06e0be57f4400a3ff179ad9765b3e7184.jpg,2e047ede-f03d-4769-9ec9-e44b9c2af555,2e047ede-f03d-4769-9ec9-e44b9c2af555.jpg,Y +HANMAC,최희섭,hschoi3@hanmaceng.co.kr,hschoi3,M26011.jpg,a4ea9218f4ccb2ae45024c9fb34332b45200a3ab207f91fe67e1734268f8e856.jpg,8f746716-2a4c-41f9-acf3-a3071038f28a,8f746716-2a4c-41f9-acf3-a3071038f28a.jpg,Y +SAMAN,최희윤,hychoe@samaneng.com,hychoe,222285.jpg,d33369cae251b21241681087bea2afe4dce1a263c6f3bbe4694eaa4d906d4a87.jpg,61371ea1-f3a9-4d26-a30c-8973a4075528,61371ea1-f3a9-4d26-a30c-8973a4075528.jpg,Y +SAMAN,추경일,kichu@samaneng.com,kichu,225263.jpg,f0b43ed702eb489a3f9a2ee1a93f1903ead54837c0e0e71d4ae6fcf3f2570551.jpg,cd196fcc-2825-447c-944f-960c2197db80,cd196fcc-2825-447c-944f-960c2197db80.jpg,Y +SAMAN,추재영,jychoo@samaneng.com,jychoo,225238.jpg,75e0eefb30b682f8ddddf7f655e3489b28b20c82059b5885ce8d027a9648f315.jpg,87ec8e25-f10b-46f3-95a8-8c5f37aebd0b,87ec8e25-f10b-46f3-95a8-8c5f37aebd0b.jpg,Y +SAMAN,추정호,jhchoo@samaneng.com,jhchoo,220099.jpg,a9c9c0f68e265ba7027833d2b1722ad9d7497f2809148714aa912fdf250f2e53.jpg,264c9d82-b9f7-4d51-8a2c-2a0c54f9fce7,264c9d82-b9f7-4d51-8a2c-2a0c54f9fce7.jpg,Y +SAMAN,콰윰 아딜,adilqayyum@samaneng.com,adilqayyum,222017.jpg,13624382e35a8e96dd85cd3cadb02b5cd06afa340e543754388bd139bcca5c47.jpg,19d43439-c4e6-4068-b9ee-a898d507a529,19d43439-c4e6-4068-b9ee-a898d507a529.jpg,Y +SAMAN,태종태,jttae@samaneng.com,jttae,223400.jpg,d5683b21434ba49df17923e39fe2fdafef62cd9f15553185fd6d95cffdfb767c.jpg,db450ff8-8341-484c-a3e2-cc0cb1232660,db450ff8-8341-484c-a3e2-cc0cb1232660.jpg,Y +SAMAN,팔콘,falcon@samaneng.com,falcon,224099.jpg,4c5eb2781aa400c12719d5679f9b5fafd26fa9532a360cc89b0cfdb19376e138.jpg,8e1ae8f7-9d48-4f91-88de-a1ade5585639,8e1ae8f7-9d48-4f91-88de-a1ade5585639.jpg,Y +SAMAN,표범열,bypyo@samaneng.com,bypyo,224242.jpg,3d4d721afda66b3586537e0c42809b8eefa3253fe7c1a9d12ee9d8c69e24803d.jpg,724ffb07-f290-4683-b7b6-91c174e573d3,724ffb07-f290-4683-b7b6-91c174e573d3.jpg,Y +SAMAN,표연준,yjpyo@samaneng.com,yjpyo,225185.jpg,bb03ec30abc5641f7a81ce748f85d79b09188bd08a1e2e7d88e166964cf9f7be.jpg,1883e50b-f8ce-466b-b2e8-9d0d2a28e681,1883e50b-f8ce-466b-b2e8-9d0d2a28e681.jpg,Y +SAMAN,표재학,jhpyo@samaneng.com,jhpyo,223281.jpg,97de0a4a071289f7315a3912250de1d62738ec0193f0f337171ab6f2fbbc8f77.jpg,18cf89d0-3f69-492e-a4d5-833649bf8abe,18cf89d0-3f69-492e-a4d5-833649bf8abe.jpg,Y +HANMAC,표종진,jjpyo@hanmaceng.co.kr,jjpyo,M08301.jpg,941772e36ab9fa90920f8dad6f9fc4f89701727f98c58addcbdb657d44b9cbf3.jpg,05c8b014-de18-4841-ab60-1e5f4ac589da,05c8b014-de18-4841-ab60-1e5f4ac589da.jpg,Y +SAMAN,피태희,thpi@samaneng.com,thpi,225181.jpg,9467d209a280982b48c91c61aa9001138e48b43c5889428d5b7d0c83841f6a9a.jpg,b975bd4a-f340-4dde-a592-d251fd5d4a5b,b975bd4a-f340-4dde-a592-d251fd5d4a5b.jpg,Y +SAMAN,하광효,khha@samaneng.com,khha,221243.jpg,be5faf9aa3f1dd7d355348cee2fcc96c35b13b7d328fdefe6a45a081689d0e16.jpg,d8ca555b-5e7d-4a89-a6d3-7b7f519211ff,d8ca555b-5e7d-4a89-a6d3-7b7f519211ff.jpg,Y +SAMAN,하문수,msha@samaneng.com,msha,212010.jpg,96cebf8e72e31a052b8cfa78088fdc61f0497ad7408ea71da8fc4b11a8b7be3a.jpg,4502e988-9cb4-42df-9719-b6bc31067ee4,4502e988-9cb4-42df-9719-b6bc31067ee4.jpg,Y +SAMAN,하민호,mhha@samaneng.com,mhha,224025.jpg,1bb42d5494e2ee118c10c2d445851783894798f88ddd1648c98b7760b99b50d8.jpg,d50ee488-6c9d-4e0a-a812-73e18ddeb1e0,d50ee488-6c9d-4e0a-a812-73e18ddeb1e0.jpg,Y +SAMAN,하성호,shha1@samaneng.com,shha1,221062.jpg,26b0bd5c4d91d7bfbc7c18387b3c5ce52170b7bb831337a905f4ae63e5e8bd37.jpg,20699867-811e-4d90-9d93-16267a75fb64,20699867-811e-4d90-9d93-16267a75fb64.jpg,Y +SAMAN,하신용,syha@samaneng.com,syha,221114.jpg,fffceabc216097767c58ddff618238605441ed485fc9474a5395887d3b63ba54.jpg,91a6ee4b-78e7-45ae-8e1e-6aeffea421d4,91a6ee4b-78e7-45ae-8e1e-6aeffea421d4.jpg,Y +SAMAN,하연재,yjha@samaneng.com,yjha,223017.jpg,553229e776b96a6382ace5033358b1fdd1dbc779e5e8036cbedb61ee106c8d21.jpg,3f9593e1-28c9-4185-bf7b-e5e84b464d46,3f9593e1-28c9-4185-bf7b-e5e84b464d46.jpg,Y +SAMAN,하재성,jsha@samaneng.com,jsha,225168.jpg,368efbc3f16eaba9a65c3aa0b64c03780c3f2155ba58f981a8426f94ff900708.jpg,e60cb502-d623-4cc9-9f42-d83253772026,e60cb502-d623-4cc9-9f42-d83253772026.jpg,Y +SAMAN,하창봉,cbha@samaneng.com,cbha,225010.jpg,80617152e7d0b41cf94a9bb33aae55d4db06d90f78a342380e7fc739bce4d377.jpg,0d447a85-2696-419a-bd57-a2951cef0ae7,0d447a85-2696-419a-bd57-a2951cef0ae7.jpg,Y +SAMAN,한경섭,kshan@samaneng.com,kshan,220270.jpg,f9457604e6bd36ffaa4bf892998d5fc0283c4592974fe69cbca4c90395ff07de.jpg,8e1e8e7a-5b48-48ca-ab60-cdd20b05a1ae,8e1e8e7a-5b48-48ca-ab60-cdd20b05a1ae.jpg,Y +SAMAN,한국진,kjhan@samaneng.com,kjhan,221074.jpg,645ed7c8e5d8835a80024f85a76229c4ba254a3b0b11f6f761e73ff4e4b4fce1.jpg,6aff911c-b924-40cd-8c95-19673c89fa33,6aff911c-b924-40cd-8c95-19673c89fa33.jpg,Y +SAMAN,한나영,nyhan@samaneng.com,nyhan,221011.jpg,113956fe963c1718b8813fc56c3bdde7dab3e4a1aba33e23f1a930dfdf4e76db.jpg,0e5c82d9-a869-4095-8d75-8d6a9983638b,0e5c82d9-a869-4095-8d75-8d6a9983638b.jpg,Y +SAMAN,한대영,dyhan@samaneng.com,dyhan,223035.jpg,9830afe078124f263ea9ba73496cc8c4dc0a0b5693d4c0656e43a1f2ff607733.jpg,ef6f0141-e4d4-4376-af9b-3c6e0d932ea7,ef6f0141-e4d4-4376-af9b-3c6e0d932ea7.jpg,Y +SAMAN,한동윤,dyhan1@samaneng.com,dyhan1,224023.jpg,bde64c52d923ed5add437ca0ebb34736b812fc353a6139e7e7639088c217da63.jpg,d0e08856-9470-46ca-af69-b0c60cd021f5,d0e08856-9470-46ca-af69-b0c60cd021f5.jpg,Y +SAMAN,한동현,dhhan@samaneng.com,dhhan,224030.jpg,0ea1a79aa07f2550bd02f0360d9548a4c1cfb34cbf07bc1b3d14bc7fca5afd47.jpg,91989c9c-a42c-4e54-b469-afc6844779ce,91989c9c-a42c-4e54-b469-afc6844779ce.jpg,Y +SAMAN,한동현,dhhan1@samaneng.com,dhhan1,224385.jpg,713c5b0b18115e26360e6f83b75c557d8395ab07186e7a69e2c7adf81f9625fc.jpg,ec18ed9f-0ab0-419a-b283-7066ac58835a,ec18ed9f-0ab0-419a-b283-7066ac58835a.jpg,Y +HANMAC,한동호,dhhan3@hanmaceng.co.kr,dhhan3,M25073.jpg,c5129232ffd08b5c15036c1f431659585366c095b4d078b84253c50b3af5e808.jpg,1efa61a2-ba37-4b9f-8408-bc68b872331d,1efa61a2-ba37-4b9f-8408-bc68b872331d.jpg,Y +HANMAC,한동화,dhhan2@hanmaceng.co.kr,dhhan2,M25031.jpg,a9bbe93704c914d400dce127db681583ffb5a9ab4d1608075a2db0d4f5b7e7bb.jpg,c7dd211a-9897-4394-b024-addd26f27376,c7dd211a-9897-4394-b024-addd26f27376.jpg,Y +SAMAN,한명석,mshan@samaneng.com,mshan,217087.jpg,489b2594d1401bfb3444f970b1207f56aeec6c53438539b917854be344ec646b.jpg,8c116ce6-6d13-4ebe-891b-51fa9107947e,8c116ce6-6d13-4ebe-891b-51fa9107947e.jpg,Y +SAMAN,한민정,mjhan@samaneng.com,mjhan,224118.jpg,5af35058660ec628190622f9069839e56765fe4c16e88e26d77292edb87bbf41.jpg,f470af11-609c-4a0c-bec7-38143bd396cd,f470af11-609c-4a0c-bec7-38143bd396cd.jpg,Y +SAMAN,한반석,bshan@samaneng.com,bshan,225025.jpg,e49cee6febe580270fea0ea78a1092a3fa72b10c674b1a7bbb8bbe7e0883a17d.jpg,c14c99db-e8ea-473b-98c5-8b35c1f03cb6,c14c99db-e8ea-473b-98c5-8b35c1f03cb6.jpg,Y +SAMAN,한상연,syhan@samaneng.com,syhan,224204.jpg,e9f758252021439a7f3f790adf114d7fe30c960eee596913de82e1f0e4ed1398.jpg,cc1c094b-5ecc-47b0-9f6b-6ea293a0d569,cc1c094b-5ecc-47b0-9f6b-6ea293a0d569.jpg,Y +SAMAN,한상욱,swhan2@samaneng.com,swhan2,223212.jpg,f973396c0d33421d165f31ca4a7d784afe8078994350a313e044f95e0f76e934.jpg,424dfa4b-ae19-4150-865b-1dbe3a5897e4,424dfa4b-ae19-4150-865b-1dbe3a5897e4.jpg,Y +HANMAC,한상태,sthan@hanmaceng.co.kr,sthan,M23030.jpg,2beace3ef24a1ea9211a608d5f6417e4139feebcf98968883d008939943f54d7.jpg,27dd51b9-8513-452c-8a3f-ba29325c0022,27dd51b9-8513-452c-8a3f-ba29325c0022.jpg,Y +SAMAN,한새란,srhan@samaneng.com,srhan,221165.jpg,9e1f8296caf93057351eebebd215f8788a614b82929fa3f79780c2f7da562627.jpg,bf6a5882-c4a6-4e8f-a7b8-1943e59684d0,bf6a5882-c4a6-4e8f-a7b8-1943e59684d0.jpg,Y +SAMAN,한선구,skhan@samaneng.com,skhan,223315.jpg,56846a15122293d6363b08859a8132c64314871ec6badd0aa2d0c154e8b7c4c4.jpg,4a6eb70f-f17b-4003-be50-40e80f2b631f,4a6eb70f-f17b-4003-be50-40e80f2b631f.jpg,Y +SAMAN,한성숙,sshan@samaneng.com,sshan,224319.jpg,4cf7d23fd3a61f0595b534c233d05579e1927df948a534c86ce8304d1377c840.jpg,998893d2-e445-4644-9775-f9621c6b477d,998893d2-e445-4644-9775-f9621c6b477d.jpg,Y +SAMAN,한성원,swhan@samaneng.com,swhan,225264.jpg,f8856e031e3a29956f71bfa04bb23a375ee3e448a688f013b2bd00ea3052ff36.jpg,336bc6ad-6c4f-4d4b-9ef0-0804df6b8485,336bc6ad-6c4f-4d4b-9ef0-0804df6b8485.jpg,Y +SAMAN,한성일,sihan@samaneng.com,sihan,223226.jpg,248731732dd38c3bcfab5e4f72004ef2ff52b7979dfbe31cd8062b9b81205cb2.jpg,291789c3-9f92-4db4-8d9d-f5359c8c9987,291789c3-9f92-4db4-8d9d-f5359c8c9987.jpg,Y +HANMAC,한승민,smhan@hanmaceng.co.kr,smhan,B23070.jpg,996a8866c3acbb0e00d30f13ea21a552114a93acd6bf6744bb99dd29eee6f7f2.jpg,41d1216c-15f1-44b6-ae07-287b9a949cb2,41d1216c-15f1-44b6-ae07-287b9a949cb2.jpg,Y +SAMAN,한승완,swhan1@samaneng.com,swhan1,203233.jpg,1499d51ecbea953dcea5b2e41a3d76986ac79f9f6148a206e9a9f5e16fd104e4.jpg,da66bfa7-506e-41fa-908c-f48e6a257f2c,da66bfa7-506e-41fa-908c-f48e6a257f2c.jpg,Y +SAMAN,한승철,schan@samaneng.com,schan,222068.jpg,887fc08270c79816c4a221990c54d482164fb105b2faaa365ba465b80972c476.jpg,eaa56df1-6f77-4420-8482-80c4ca5c52b9,eaa56df1-6f77-4420-8482-80c4ca5c52b9.jpg,Y +SAMAN,한승한,shhan@samaneng.com,shhan,205073.jpg,f28933a241775c03b0ba590659d43e130363a63e83a7e01136f5fef3b81acd7e.jpg,6769daf3-a89f-4b27-8347-78e5f18aa308,6769daf3-a89f-4b27-8347-78e5f18aa308.jpg,Y +SAMAN,한영민,ymhan@samaneng.com,ymhan,201214.jpg,a08608bd3680c58844c5fcb8f72b1af1497a5d1cd9aa67bae0f850e0de30c720.jpg,728420dc-11c8-44bd-bc2c-1f8a4c926e57,728420dc-11c8-44bd-bc2c-1f8a4c926e57.jpg,Y +SAMAN,한용배,ybhan@samaneng.com,ybhan,206056.jpg,7c8927d97f619530e2b65f220baa8cb6bf0a90f22ae6d3d778098b653c859635.jpg,1f08c980-4007-4ab4-bd05-50413b68b8bd,1f08c980-4007-4ab4-bd05-50413b68b8bd.jpg,Y +SAMAN,한용우,yuhan@samaneng.com,yuhan,222237.jpg,83bf003983a293fb994a1cbfbfdf0c408f40d43ff7e1e53114a379a139c68ab9.jpg,25d57002-b751-4793-99cd-9bf06a040146,25d57002-b751-4793-99cd-9bf06a040146.jpg,Y +SAMAN,한은홍,ehhan@samaneng.com,ehhan,220069.jpg,81369bd7639d05b3b17bac5924c43421b664f94ce2077c9449691d5ff3ca1812.jpg,563cd1cf-849e-4ca8-b530-86871710429c,563cd1cf-849e-4ca8-b530-86871710429c.jpg,Y +SAMAN,한재욱,jwhan@samaneng.com,jwhan,224271.jpg,be415d5754914045717121c340170764c0292905274c71ba74e70087ac73d78c.jpg,3bf7b90c-e1c3-46d3-9c41-6bc53f93838a,3bf7b90c-e1c3-46d3-9c41-6bc53f93838a.jpg,Y +SAMAN,한재형,jhhan@samaneng.com,jhhan,225270.jpg,d8e8e3b65c812c2ab6ddcd77bde0491d5d2bede821456b3a42c0e89feca26685.jpg,f639bbad-8129-4f3f-b148-14a776f44d34,f639bbad-8129-4f3f-b148-14a776f44d34.jpg,Y +SAMAN,한정규,jghan@samaneng.com,jghan,203155.jpg,c0676f5da6deda2c0ed9f9576e10438ac53de18e91240a15971dc3aaf4a5d43c.jpg,4ba803c1-d1a0-4d32-a043-2c25e0186500,4ba803c1-d1a0-4d32-a043-2c25e0186500.jpg,Y +SAMAN,한정식,jshan@samaneng.com,jshan,197067.jpg,33118ac57af766a8969434008bcb506daf1602ef632c038749d5c2f261790063.jpg,372b48fc-3870-4c23-89fb-7ae0f98bd9a3,372b48fc-3870-4c23-89fb-7ae0f98bd9a3.jpg,Y +SAMAN,한정주,jjhan1@samaneng.com,jjhan1,225216.jpg,5a957ec32a4af3ca56a6d41eee9a9ae2a703718b02b5ed5b5621617088682ceb.jpg,82cc7064-49dd-43ba-b409-c41a0ca3eca3,82cc7064-49dd-43ba-b409-c41a0ca3eca3.jpg,Y +SAMAN,한주영,jyhan1@samaneng.com,jyhan1,224013.jpg,eda05ce09952b33f285300469b036ded02cd1a6c90cdc2d02d59c2db36b64b7b.jpg,a10d6f9f-93e2-4daa-82f1-290a185583c6,a10d6f9f-93e2-4daa-82f1-290a185583c6.jpg,Y +SAMAN,한준영,jyhan@samaneng.com,jyhan,220132.jpg,7f8d74c4117a7e836221349d99f94d81ae42142c142cd26eaf668a429c672689.jpg,6969a801-910e-4fbe-bcc6-e0e54b88daf5,6969a801-910e-4fbe-bcc6-e0e54b88daf5.jpg,Y +SAMAN,한지아,jahan@samaneng.com,jahan,222057.jpg,cdfa0e86749b7520237b230fc0e834509adb93348cf19918ea0c1b75e01cc646.jpg,31562d2d-bc17-4cf5-87de-01771313bdf8,31562d2d-bc17-4cf5-87de-01771313bdf8.jpg,Y +SAMAN,한지훈,jhhan1@samaneng.com,jhhan1,223021.jpg,db81279880336312631af8c5305aaf4e221d6f429b939ac7423cf86e90c94abb.jpg,b141e8ed-200d-4df9-98e0-f652e34e2c9c,b141e8ed-200d-4df9-98e0-f652e34e2c9c.jpg,Y +SAMAN,한창학,chhan@samaneng.com,chhan,223131.jpg,cf15351eeb703d93200963154dbe877409762d920e012627ceaf9ad683dfd1f4.jpg,2a19e3f0-02d4-4a87-9530-9a03d6053ba6,2a19e3f0-02d4-4a87-9530-9a03d6053ba6.jpg,Y +SAMAN,한치영,cyhan@samaneng.com,cyhan,224382.jpg,c6e84ea9dadb819a79f534c3854f6014d53b26820b9688c268ccefc90a16004a.jpg,675a3d46-45ad-4e8c-8c22-959a38302826,675a3d46-45ad-4e8c-8c22-959a38302826.jpg,Y +SAMAN,한택림,trhan@samaneng.com,trhan,221324.jpg,bf8a61853918890ce72712ed3829396153d1d84791c55286e31f3ca7e29a2508.jpg,e6d04423-81bc-45d7-b408-a85904390c1c,e6d04423-81bc-45d7-b408-a85904390c1c.jpg,Y +SAMAN,한하람,hlhan@samaneng.com,hlhan,026041.jpg,c95b365efdfb61064dd96cb1ec8073c5dafc2866d6ec613301f9d6e6fa243934.jpg,050beb86-f9c0-4da0-abef-9dd219639c28,050beb86-f9c0-4da0-abef-9dd219639c28.jpg,Y +HANMAC,한형관,han@hanmaceng.co.kr,han,M01106.jpg,58d2e94af555ffc31f09c1fee41278434f9665fe48b935d49fcf20f73673cb4a.jpg,3a1a9f4e-e619-48f3-be96-332c309c6c21,3a1a9f4e-e619-48f3-be96-332c309c6c21.jpg,Y +SAMAN,함덕재,djham@samaneng.com,djham,226114.jpg,70a9fdc846e37e70c4a5f077c2e283cbef581b084712d967bf342777a99e5fc4.jpg,3d144843-839a-477f-a89d-5ec44f6fc458,3d144843-839a-477f-a89d-5ec44f6fc458.jpg,Y +SAMAN,함도원,dwham@samaneng.com,dwham,224106.jpg,35580be2f80947c44a703a3c025af2cd5531f84e1f9f166b22a0a41c613fd8d3.jpg,6a91151b-dba3-43f0-adec-853b27381440,6a91151b-dba3-43f0-adec-853b27381440.jpg,Y +HANMAC,함창수,csham@hanmaceng.co.kr,csham,M23085.jpg,b002c99508cb9e5ddb883400c5cb14cba3d14c70eea1cb83ef7011fabc94b1d4.jpg,6d9463a1-498c-4dec-a584-c7abde9b6843,6d9463a1-498c-4dec-a584-c7abde9b6843.jpg,Y +SAMAN,함해운,huham@samaneng.com,huham,224022.jpg,d7beaf6d3a9cfa1521292a008204ccdda7d19e693472e27a8d1987f358f9180a.jpg,0b87ec32-5bf1-4dd8-b339-319dfcdd966d,0b87ec32-5bf1-4dd8-b339-319dfcdd966d.jpg,Y +SAMAN,함홍일,hiham@samaneng.com,hiham,221111.jpg,5226e6d072aa5ae0c49bab29ecfa26094552d5181331c16501279589b0b1ee6f.jpg,b7a1eab6-224e-4097-9101-83c2314b2fec,b7a1eab6-224e-4097-9101-83c2314b2fec.jpg,Y +SAMAN,허동우,dwheo@samaneng.com,dwheo,223325.jpg,306afd06920f735e8bafcdba64a463b4d8a721b87085ccc18d6ffe685e0db4ef.jpg,947bc01a-1b5b-4691-a93a-4c6f874efea0,947bc01a-1b5b-4691-a93a-4c6f874efea0.jpg,Y +SAMAN,허두홍,dhhur@samaneng.com,dhhur,218042.jpg,17694d9e87d750de666267e8226ed36ca3c86961e546b42646c3fb48201de017.jpg,8e7e9166-7546-4893-9f25-0c905b5f85e6,8e7e9166-7546-4893-9f25-0c905b5f85e6.jpg,Y +SAMAN,허만혁,mhhur@samaneng.com,mhhur,224355.jpg,25efdc49a5528338aed04679543ac76be20c730a5e2c60440ece86f7c5f2e720.jpg,55f420e6-b07b-4e55-a7f9-a0d4ad587f8f,55f420e6-b07b-4e55-a7f9-a0d4ad587f8f.jpg,Y +SAMAN,허봉주,bjher@samaneng.com,bjher,221295.jpg,c7039f8575ec244a2708ac567837e4e6fe3f3108247c9731fe3cf4e9e13a2917.jpg,1e52f79c-b898-4b69-9511-f9a1aa8993e5,1e52f79c-b898-4b69-9511-f9a1aa8993e5.jpg,Y +SAMAN,허성무,smhuh@samaneng.com,smhuh,211077.jpg,9b916005f91d99432b38de73132d7a361467f0070bd3f1ddfe61f8fb2485e8f4.jpg,6af92202-d267-47a0-9648-ee9833232219,6af92202-d267-47a0-9648-ee9833232219.jpg,Y +SAMAN,허세욱,swheo@samaneng.com,swheo,225006.jpg,a154dca5d497d519e4c2bc5a0788c3297130aa4275a77e6a99c0c9ca38817aa2.jpg,c5f54b25-3e3b-41ef-90f0-ef102cbe711c,c5f54b25-3e3b-41ef-90f0-ef102cbe711c.jpg,Y +SAMAN,허승,shur@samaneng.com,shur,198078.jpg,14877e2902cfd030bacc9f6b40c0402d5bf0f062c7a1287b88de3ed8d07daf6d.jpg,a6e4fb35-ef88-44c8-88fa-2905e7196389,a6e4fb35-ef88-44c8-88fa-2905e7196389.jpg,Y +SAMAN,허영회,yhhuh@samaneng.com,yhhuh,216142.jpg,b6299ee63c340b84aa402f070f4b54bd11231aba615f249fc9fac31487529551.jpg,0ca0b31e-a3ca-438d-8ee4-76804cbf9cf1,0ca0b31e-a3ca-438d-8ee4-76804cbf9cf1.jpg,Y +SAMAN,허용화,yhheo@samaneng.com,yhheo,221334.jpg,916003e56b0b9d1eecb435b1f7443befb456bace989837e69fbe175a1794871f.jpg,37b5b31f-74ce-4787-a5f2-201461c32761,37b5b31f-74ce-4787-a5f2-201461c32761.jpg,Y +SAMAN,허욱,wheo@samaneng.com,wheo,226088.jpg,eef155ae56deaba9a8f2187995fcda86615ed0051eb4d2fdc12839f13490df54.jpg,78dbc4a4-6456-4b61-be4b-d477b6c20518,78dbc4a4-6456-4b61-be4b-d477b6c20518.jpg,Y +SAMAN,허유나,unhuh@samaneng.com,unhuh,222073.jpg,656942dd3ff10b5fe21a930e5adcde0b029605ea338fb81d0a240831c4b98d7b.jpg,adf4a09c-10e7-4deb-ac68-15206127285b,adf4a09c-10e7-4deb-ac68-15206127285b.jpg,Y +HANMAC,허윤,yheo@hanmaceng.co.kr,yheo,M25042.jpg,301ed81856c2475fb7e146bf9b9373062dd073a8cc5cc39185b38b27f653ca43.jpg,1a4570b1-5fd5-4a1b-b12f-955fc8fcbb6f,1a4570b1-5fd5-4a1b-b12f-955fc8fcbb6f.jpg,Y +SAMAN,허정근,jkheo@samaneng.com,jkheo,213065.jpg,fb9400b7268633664cea48b90d4018e7d89f2d190c7842428b48b439fdb2f882.jpg,94858918-2b49-499c-8c86-82dd09eab9af,94858918-2b49-499c-8c86-82dd09eab9af.jpg,Y +SAMAN,허준호,jhheo1@samaneng.com,jhheo1,211050.jpg,303460cf9382bfa2aa41156ab7fcd493c275fc1cc186007a6828ce9a95e95f83.jpg,5a9f8547-d19c-4ea6-b956-71a28c1f7d2a,5a9f8547-d19c-4ea6-b956-71a28c1f7d2a.jpg,Y +SAMAN,허진경,jkhuh@samaneng.com,jkhuh,025036.jpg,ec11f7272fd4a7562ad811472bd86a1c48694f32ed349cf6a9ed406818153de7.jpg,1e26d3eb-e7a6-4e62-9afb-422b52c80f8f,1e26d3eb-e7a6-4e62-9afb-422b52c80f8f.jpg,Y +HANMAC,허찬행,chheo@hanmaceng.co.kr,chheo,M21322.jpg,de12a66567068ff4e8dbb4a79f88ab00dc3fe1c4418678fbc41d6a985d7018d2.jpg,1a90f86a-9f8a-4a25-a51f-9b41893742a1,1a90f86a-9f8a-4a25-a51f-9b41893742a1.jpg,Y +SAMAN,허창택,ctheo@samaneng.com,ctheo,224219.jpg,8d67e51695cb6a7c04d2af65e65805c61d759213d65c6bc0af6bb25e7a182311.jpg,8c912053-56c4-48ec-93b5-f84027a97f4e,8c912053-56c4-48ec-93b5-f84027a97f4e.jpg,Y +SAMAN,허한구,hgher@samaneng.com,hgher,224307.jpg,6f95f40fce0c4c02efb4b15ec13fedf950711a11b002e06020243ced6b04caf5.jpg,dbf055f0-9382-41c9-9e78-8ebdba970874,dbf055f0-9382-41c9-9e78-8ebdba970874.jpg,Y +SAMAN,허현,hheo@samaneng.com,hheo,225350.jpg,df99143712b4d4807d7b3a2c897d294ca013056b38a22064f6c202a53bf997cc.jpg,94ed703f-72aa-4a16-b4fe-11b47dd53c23,94ed703f-72aa-4a16-b4fe-11b47dd53c23.jpg,Y +SAMAN,허후,hhuh@samaneng.com,hhuh,223265.jpg,3cce4d9d2460f30c8ea1dc102778e3ff473c79e80896f8d5ae09a6007f7fb3fb.jpg,8c784ede-f0dd-4db6-add5-f5505fb841d8,8c784ede-f0dd-4db6-add5-f5505fb841d8.jpg,Y +SAMAN,허훈,hhun@samaneng.com,hhun,221096.jpg,4c5e2bcddae1f8f4e28761d6b62304a987b00ca298501d18edb3603ee31b4455.jpg,071f3e14-2191-411a-bd82-91c70496115b,071f3e14-2191-411a-bd82-91c70496115b.jpg,Y +SAMAN,현기림,krhyun@samaneng.com,krhyun,220192.jpg,ae32d37052095ee8a5b5611bbc86ade872a1e299d8c8b1e16007eb51a2bb3b62.jpg,de93fb65-19c1-477b-b73f-c55c21063060,de93fb65-19c1-477b-b73f-c55c21063060.jpg,Y +SAMAN,현도현,dhhyun@samaneng.com,dhhyun,225043.jpg,ddb170c07589625ef4686529f8e8c3836712203d2af98379dbbc4031ca1343ec.jpg,cccb2fff-7b6b-47d0-8494-e48a91e00d64,cccb2fff-7b6b-47d0-8494-e48a91e00d64.jpg,Y +HANMAC,현동규,dghyeon@hanmaceng.co.kr,dghyeon,B20305.jpg,46682343966a6aba61f796f96b2500117fc062a28ebd2689b8e108735840e1c6.jpg,7e3fddbf-bb95-46d9-9e74-232ca7745e2e,7e3fddbf-bb95-46d9-9e74-232ca7745e2e.jpg,Y +SAMAN,현민종,mjhyun@samaneng.com,mjhyun,226099.jpg,2453316cb303e0023fee5fae8999e8e0a547635a8a9b23190062fea34162662f.jpg,0c2c70a0-d39a-4792-b74e-1ac053b12211,0c2c70a0-d39a-4792-b74e-1ac053b12211.jpg,Y +HANMAC,현석훈,shhyun@hanmaceng.co.kr,shhyun,M21454.jpg,671f3a4787d4dd1414e920db98f2bdf4876b73f81ba585fb4749d687e33f3af8.jpg,2fe7270f-cd27-49d6-ba62-2fb04631eace,2fe7270f-cd27-49d6-ba62-2fb04631eace.jpg,Y +SAMAN,현종내,jnhyun@samaneng.com,jnhyun,225323.jpg,07526e7a194a020cc5d20bd67d6baf4495da62674df1d659fa5bb8b8f40ca26e.jpg,93457498-900b-41ac-a567-95933b2e9eff,93457498-900b-41ac-a567-95933b2e9eff.jpg,Y +HANMAC,현종철,jchyun@hanmaceng.co.kr,jchyun,M21410.jpg,765533c70e31be40bc0757266f50d7a1a83a60dd6b7d5d2f8392584f1e1d234a.jpg,6c212e83-9c60-4842-a4a9-853faf2a46c4,6c212e83-9c60-4842-a4a9-853faf2a46c4.jpg,Y +SAMAN,형남석,nshyung@samaneng.com,nshyung,225253.jpg,e91a7808896c3c11f9ff1712caf1f8b4a8d12c7fff8d4bd0b789913031aede21.jpg,71f1d301-ca4a-4eee-9ec1-01f44b28a7c2,71f1d301-ca4a-4eee-9ec1-01f44b28a7c2.jpg,Y +SAMAN,호샘물,smho@samaneng.com,smho,026057.jpg,87998562e6e125270175764a039eb0edc9debe08757d34d1bd69db87902e9385.jpg,ecf765df-6980-42d8-9124-8d2b0c9adc91,ecf765df-6980-42d8-9124-8d2b0c9adc91.jpg,Y +SAMAN,홍경의,kehong@samaneng.com,kehong,222125.jpg,495853ee76e0dd17ecd24817cf7b55815ec26a965671e2fe9df974a789f4c122.jpg,54150eb3-a8d3-4039-8a77-c376ab271013,54150eb3-a8d3-4039-8a77-c376ab271013.jpg,Y +SAMAN,홍경표,kphong@samaneng.com,kphong,217158.jpg,4cb9e41bbf17ed3187cfe821690567ac84289d64c29baf58409d11821033b0d9.jpg,0ef8cb6f-ade2-45dd-8af8-2422bf85f3c9,0ef8cb6f-ade2-45dd-8af8-2422bf85f3c9.jpg,Y +SAMAN,홍관영,kyhong@samaneng.com,kyhong,223181.jpg,d89419c217942459d3f5efe21bd72561086eb7382c66ec05a736fa6c46e233ba.jpg,75676056-b83d-43f4-b943-ead75ea28ab9,75676056-b83d-43f4-b943-ead75ea28ab9.jpg,Y +SAMAN,홍균표,kphong1@samaneng.com,kphong1,214033.jpg,12a12356a745a34ec353ce3e477b9bf1de09684e9e75c1065037e59cbe26039b.jpg,967d54e4-0857-4d4b-b990-fcb85067cc57,967d54e4-0857-4d4b-b990-fcb85067cc57.jpg,Y +SAMAN,홍기석,kshong@samaneng.com,kshong,220180.jpg,b889668e7082fe9eddd31b3f97fb52d6a8ac672c8ad88ce86830ee969d7f1ec4.jpg,63b50c40-a034-41eb-8a60-b73f5ac10b7e,63b50c40-a034-41eb-8a60-b73f5ac10b7e.jpg,Y +SAMAN,홍기훈,khhong@samaneng.com,khhong,226076.jpg,ed5552bfeb007fdef8e87e69275fea511676f7ae33c426fd572302f80bef30b7.jpg,f2bd3b27-6ea3-4913-b53d-5d30a18cdc8d,f2bd3b27-6ea3-4913-b53d-5d30a18cdc8d.jpg,Y +SAMAN,홍길수,gshong@samaneng.com,gshong,223100.jpg,8a494da6e6393782eea547ae8735fb287342db4141351f6c766baee20b38b2ef.jpg,d55489e9-2d7c-4760-956b-58d7374ac79e,d55489e9-2d7c-4760-956b-58d7374ac79e.jpg,Y +SAMAN,홍덕현,dhhong@samaneng.com,dhhong,226073.jpg,50750cf1034285bca32b88ec8f5e4f6b775e7c36a104fc054ffbe623a8a5bd1f.jpg,2b1a601f-8c08-4b14-925e-494838c455bb,2b1a601f-8c08-4b14-925e-494838c455bb.jpg,Y +SAMAN,홍도균,dghong@samaneng.com,dghong,225027.jpg,13eaaacdba8dd4ba3c90328574caa4d74ff6e842c29cbc4781ee735bf421d641.jpg,16fdf54f-f298-47c9-a76b-f4d2792a0606,16fdf54f-f298-47c9-a76b-f4d2792a0606.jpg,Y +SAMAN,홍두표,dphong@samaneng.com,dphong,222001.jpg,827e82ccd530715eb7f8e56a4f225a5cd5026358855b163ad93b624dcbe3005e.jpg,819618c2-45ca-4646-b69a-aa255b241006,819618c2-45ca-4646-b69a-aa255b241006.jpg,Y +SAMAN,홍만기,mkhong@samaneng.com,mkhong,224066.jpg,70354045dff6e368142ea0b876fad7018a753395513422135d211b5a0991d59d.jpg,3067f526-3903-429d-8930-912127beec80,3067f526-3903-429d-8930-912127beec80.jpg,Y +SAMAN,홍만표,mphong@samaneng.com,mphong,212112.jpg,1f6c85b02324eba88be8be57200a9d1af346a2ac7c01ba060a2cf33c445b6001.jpg,dfcd03f5-172e-4f54-816c-106b55675862,dfcd03f5-172e-4f54-816c-106b55675862.jpg,Y +SAMAN,홍석찬,schong@samaneng.com,schong,223396.jpg,914376cc94efe50749237122b9313c3722d72be08d8727f3f89f953deb0252d4.jpg,41f5e8f3-c5d7-4cd7-aa57-d69701145d94,41f5e8f3-c5d7-4cd7-aa57-d69701145d94.jpg,Y +SAMAN,홍성덕,sdhong1@samaneng.com,sdhong1,224345.jpg,767bbb8e73980f0c88ef7fc6ee7467cbde8df4b868dcd49d73623cb187b0d5b2.jpg,760f7fdb-363a-4ed3-b94b-390ae8520e6e,760f7fdb-363a-4ed3-b94b-390ae8520e6e.jpg,Y +SAMAN,홍성돈,sdhong@samaneng.com,sdhong,216100.jpg,49eb39260fa3b1b29c763dcda2116d817020b64621e8757a39c162eb8d888e78.jpg,110785d4-28b0-41b8-94cb-899e9e5bf3d1,110785d4-28b0-41b8-94cb-899e9e5bf3d1.jpg,Y +SAMAN,홍성빈,sbhong@samaneng.com,sbhong,224303.jpg,3d1faa84b9b7f98f8c6d8212da75f50912fb93fa9c225d85ee65444a405a64b0.jpg,62d463cb-c034-4cd9-aef7-62a346d353f6,62d463cb-c034-4cd9-aef7-62a346d353f6.jpg,Y +SAMAN,홍성일,sihong@samaneng.com,sihong,220122.jpg,0a916253f5318e7602436b7ac5392754733a689ab0b654b4d3304f82b71a256a.jpg,34a138a5-94f4-499f-b95f-6c47e72b84d4,34a138a5-94f4-499f-b95f-6c47e72b84d4.jpg,Y +HANMAC,홍세민,smhong@hanmaceng.co.kr,smhong,M20208.jpg,134acca0b4960b0e95e8503f5f1a747817984e636f712befe0b941bfb879502f.jpg,9b5e114c-082f-4126-b58f-c225f864a834,9b5e114c-082f-4126-b58f-c225f864a834.jpg,Y +SAMAN,홍승호,shhong@samaneng.com,shhong,223092.jpg,4e4e3b1272986c58389d8b7b7bce4baa5f9280de36dbfcd4ceee6aed7d94c85c.jpg,11971347-c3fc-43a6-885e-212ac22ed020,11971347-c3fc-43a6-885e-212ac22ed020.jpg,Y +SAMAN,홍아름,alhong@samaneng.com,alhong,221184.jpg,0d1a657c35f31c9827397ad79194c6893a4ecd79b3792c54de6e5254aed68614.jpg,ccf02ff2-3601-4a76-b37a-1d84e3e2355f,ccf02ff2-3601-4a76-b37a-1d84e3e2355f.jpg,Y +HANMAC,홍영철,ychong@hanmaceng.co.kr,ychong,M25032.jpg,8f667af0e6c166bca85c76f03412d87ee3449ad96269ca4fc79eae8e125ac687.jpg,2c031736-6653-4670-8db6-342adda3755c,2c031736-6653-4670-8db6-342adda3755c.jpg,Y +SAMAN,홍용의,yehong@samaneng.com,yehong,221205.jpg,b8975a4f3937b13303db92dac915390a0efafe0a47f74421c2a816c3e20faa5a.jpg,c3f57fe3-6af4-41cf-b9dd-bf415897c84e,c3f57fe3-6af4-41cf-b9dd-bf415897c84e.jpg,Y +SAMAN,홍원표,wphong@samaneng.com,wphong,224178.jpg,ad93d77073ac2cee80cc8602b39759d79079117e1256ac4014b0ccf7a613106f.jpg,16c91297-ab54-4fa4-8459-dbd79e223404,16c91297-ab54-4fa4-8459-dbd79e223404.jpg,Y +SAMAN,홍윤기,ykhong@samaneng.com,ykhong,225321.jpg,6b24492b0317f0751d27151450c96182a9059a8bac1539b91448af94aecdc7e4.jpg,15e01909-57ce-4c45-9087-0b3c3cb39532,15e01909-57ce-4c45-9087-0b3c3cb39532.jpg,Y +SAMAN,홍윤정,yjhong@samaneng.com,yjhong,224184.jpg,97f787edfab74ce5a9784b31d9c42ae54f9bd4445b8d1c269e80acbdcccb458a.jpg,eeb1fc7b-e2de-484b-aff4-d28c21c4bda8,eeb1fc7b-e2de-484b-aff4-d28c21c4bda8.jpg,Y +SAMAN,홍익표,iphong@samaneng.com,iphong,219014.jpg,ee5aa71574f2612f353c18039b20b2dbe8086cc77bd4366b85bf8334711e89a3.jpg,89336b21-6db0-4e19-965d-9914f2f5e631,89336b21-6db0-4e19-965d-9914f2f5e631.jpg,Y +SAMAN,홍정우,jwhong@samaneng.com,jwhong,219060.jpg,db7d4443c46c02ecefefb2facb12bdc7c87a292b0c33488eca83787b4777272d.jpg,49fe3fac-6698-447f-b587-2c6b596d4293,49fe3fac-6698-447f-b587-2c6b596d4293.jpg,Y +SAMAN,홍정우,jwhong1@samaneng.com,jwhong1,224399.jpg,bfdf321e6d0c48b8ffe501d2040d45dfbd1683832d2e3294933629c90b36fe7d.jpg,feb8437c-a633-4fb9-9864-1be93b49656d,feb8437c-a633-4fb9-9864-1be93b49656d.jpg,Y +SAMAN,홍종성,jshong1@samaneng.com,jshong1,217166.jpg,42f56b454c2e7811b4b2fa220fef41b710adae19379de5e2cd043d9c4f5d36b8.jpg,ea9622b0-bdaa-4133-ae89-ab0080a4bf88,ea9622b0-bdaa-4133-ae89-ab0080a4bf88.jpg,Y +SAMAN,홍준기,jkhong@samaneng.com,jkhong,225354.jpg,467572a9e644601d5d371c008e4e0203c4f27387f3981f5e96edf3c9deb08b30.jpg,07b6ba0e-9fb4-46d6-9509-b789b62b680f,07b6ba0e-9fb4-46d6-9509-b789b62b680f.jpg,Y +SAMAN,홍준영,jyhong1@samaneng.com,jyhong1,225057.jpg,1f03fac6be54e30f9aaef89846dab120138ea96958d93cf73ca51017487adfd0.jpg,869ea65e-0579-4c87-90c3-c99b822806b6,869ea65e-0579-4c87-90c3-c99b822806b6.jpg,Y +SAMAN,홍진엽,jyhong@samaneng.com,jyhong,216146.jpg,cf34a2f8e66dab0e53374703561d1d412a0bd2dfbd569a71ab4260651a8b5b41.jpg,638e70d0-43eb-40b7-8c45-2b315e164735,638e70d0-43eb-40b7-8c45-2b315e164735.jpg,Y +SAMAN,홍창선,cshong1@samaneng.com,cshong1,219030.jpg,ff7a1a8c0dda79bc39a2c0b208a7fa9a12436e76abe9e997fd47ef1885ec0230.jpg,98b74ebb-e50a-494c-8e09-1f2e9a1f988e,98b74ebb-e50a-494c-8e09-1f2e9a1f988e.jpg,Y +SAMAN,홍창수,cshong@samaneng.com,cshong,207067.jpg,b459f22a5a96e0de1f4ed0c095421bb7ec0e28c0c1b21b6ffe986cdc99310e0a.jpg,3bfc0fec-6dcc-4360-8976-678347575e78,3bfc0fec-6dcc-4360-8976-678347575e78.jpg,Y +SAMAN,홍창오,cohong@samaneng.com,cohong,202214.jpg,a0148ed8c7420ecc29c66969d78a1bece9b2f48b5a9f964ec4b6b9576a608083.jpg,8838a929-f134-4adc-9494-e1da1255b0a5,8838a929-f134-4adc-9494-e1da1255b0a5.jpg,Y +SAMAN,홍창의,cehong@samaneng.com,cehong,218055.jpg,909920efd8ebf2a34fa89447b2ff9f2d1e230ce36a53cec00121fdac21880af6.jpg,c0e314de-c571-4407-9cb3-8b947f2dabe5,c0e314de-c571-4407-9cb3-8b947f2dabe5.jpg,Y +SAMAN,홍현표,hphong@samaneng.com,hphong,220161.jpg,1dd8113ae216025fa9e36aaa37236f35b58861900466bdd64cb2a020938ec9a6.jpg,cf5eb409-f00c-46b4-9cfd-ec13cc44e793,cf5eb409-f00c-46b4-9cfd-ec13cc44e793.jpg,Y +SAMAN,황건욱,kwhwang1@samaneng.com,kwhwang1,217147.jpg,c19af4a9228813123bba02744d37ab115342b1fbefd37e7e91dae5c9f1ef6044.jpg,4a77d4b4-3185-4a93-949f-c7a610b9e8a1,4a77d4b4-3185-4a93-949f-c7a610b9e8a1.jpg,Y +SAMAN,황경우,kwhwang@samaneng.com,kwhwang,215109.jpg,a6aeb218a6e8fd545d7619de792d47380136a9895a7320000551b7235b1f2c64.jpg,8fa13de1-174b-4761-bc39-626a9c2e76d7,8fa13de1-174b-4761-bc39-626a9c2e76d7.jpg,Y +SAMAN,황길용,gyhwang@samaneng.com,gyhwang,223183.jpg,21b3d8b530554e41c38c745e69a5ac135061771c1255d09c1e6a513795d3ac70.jpg,6074b497-a30a-4a87-ad75-3be9f150a4cc,6074b497-a30a-4a87-ad75-3be9f150a4cc.jpg,Y +HANMAC,황대익,dihwang@hanmaceng.co.kr,dihwang,J05204.jpg,8af357030547ea3b753658b43cc029f996e64b930d0c591e141ac3c63bfa04cf.jpg,8cc6ea4b-2ec2-46ee-92e1-9ea6af8411d2,8cc6ea4b-2ec2-46ee-92e1-9ea6af8411d2.jpg,Y +SAMAN,황동규,dkhwang@samaneng.com,dkhwang,225338.jpg,d301c1aa71bbfb1b93f32a1a558d6627485869e0d1ac3ebbfc1c033b1b3b9c88.jpg,e7c57f8e-d436-4004-abd9-28c8495caef1,e7c57f8e-d436-4004-abd9-28c8495caef1.jpg,Y +HANMAC,황동환,dhhwang@hanmaceng.co.kr,dhhwang,M19314.jpg,cedf7e5c2d218f31dbe2f95da48124fc303284e5f121887278144fe5247ca378.jpg,5baa7f68-62bf-4000-a31d-3e20c2c00c1f,5baa7f68-62bf-4000-a31d-3e20c2c00c1f.jpg,Y +HANMAC,황동훈,dhhwang2@hanmaceng.co.kr,dhhwang2,M25043.jpg,9d065b7f3db7a8312ba91ca3ae3581046f9ee2fedaba344955e78e7d881293b1.jpg,b08c0f6d-38e9-4d6b-916c-84483e725d1f,b08c0f6d-38e9-4d6b-916c-84483e725d1f.jpg,Y +SAMAN,황서우,swhwang@samaneng.com,swhwang,026066.jpg,72c10ad4a84865fa853a7d5bf4247ff94ee92c915ba0568cdb899d2c247891f7.jpg,34ab5ecc-1b85-430b-8607-332cd20ee44e,34ab5ecc-1b85-430b-8607-332cd20ee44e.jpg,Y +SAMAN,황선필,sphwang@samaneng.com,sphwang,221292.jpg,22912be072c5e752abed4356e397d636ba30854736affcc8245f09af27265994.jpg,78155f41-31e2-4016-8a08-3a174f724989,78155f41-31e2-4016-8a08-3a174f724989.jpg,Y +HANMAC,황승현,shhwang@hanmaceng.co.kr,shhwang,M02308.jpg,f28ef94b04e6f7cd020e9e760ed40527231572c438568bb467a1bb4c7db236c6.jpg,5a85fbb6-6364-4db4-9ac5-1f2ea314179c,5a85fbb6-6364-4db4-9ac5-1f2ea314179c.jpg,Y +SAMAN,황윤성,yshwang@samaneng.com,yshwang,226007.jpg,3d4c6aa1c19681892e8236ce228b3ebbb8610ccae1e51677272664b1a99cfe4a.jpg,2f8622b8-7333-4437-8a2e-e254ebfc85be,2f8622b8-7333-4437-8a2e-e254ebfc85be.jpg,Y +HANMAC,황윤희,yhhwang2@hanmaceng.co.kr,yhhwang2,M24025.jpg,fa0c78a9b54c49310552f705ec12eb16e89b39e2603749a546d4c2a659052e6d.jpg,971a3767-b387-4596-9405-6227721e148c,971a3767-b387-4596-9405-6227721e148c.jpg,Y +HANMAC,황은식,eshwang1@hanmaceng.co.kr,eshwang1,M07302.jpg,9f15c0f8ebec438cccff0051ecbd5f0177b2924e18959fd885879cc76f5fbb92.jpg,27edef51-59f0-4079-a6cd-3c9936383b09,27edef51-59f0-4079-a6cd-3c9936383b09.jpg,Y +SAMAN,황의숙,eshwang@samaneng.com,eshwang,026064.jpg,50c677a618b261c4b0c3f7f24d699958a494668dabde62398a593cf2ef7caddf.jpg,288485ac-edba-4a03-8fd4-a3d779c951d3,288485ac-edba-4a03-8fd4-a3d779c951d3.jpg,Y +SAMAN,황인백,ibhwang@samaneng.com,ibhwang,216027.jpg,02bb0e3565360953711106de2efc88128f26ef379497a0c102440063e303a334.jpg,66a8f8ba-3fbe-481b-806a-3476a167d4d4,66a8f8ba-3fbe-481b-806a-3476a167d4d4.jpg,Y +SAMAN,황인성,ishwang@samaneng.com,ishwang,206010.jpg,3fb680a33d6e1684471410b370524b10b16968b188069ca8dd09e8c93c3fac25.jpg,58183ead-4ab2-4d22-93f9-bddb6140c33d,58183ead-4ab2-4d22-93f9-bddb6140c33d.jpg,Y +HANMAC,황재광,jkhwang@hanmaceng.co.kr,jkhwang,M22050.jpg,3de26d246ff11c8f9eacb1d532b10ccc56db0a27314d30c8b6cfc01e931cb1fb.jpg,b175d378-bc93-457f-8130-8aa289c0ec3e,b175d378-bc93-457f-8130-8aa289c0ec3e.jpg,Y +SAMAN,황재민,jmhwang@samaneng.com,jmhwang,210099.jpg,7fada7aede0eb2c7125221b5b04009034f4eca78987dce0e096dc7a3c42af740.jpg,d3e4811a-9cef-42e1-8dd1-99649d80aae1,d3e4811a-9cef-42e1-8dd1-99649d80aae1.jpg,Y +HANMAC,황재민,jmhwang3@brsw.kr,jmhwang3,J14202.jpg,8519aebe2240ab4e82e74cb9af797a121a724b3b48ef9e61192f90a039c39b2b.jpg,3008204e-9b76-41fe-a830-2bb494129244,3008204e-9b76-41fe-a830-2bb494129244.jpg,Y +SAMAN,황준호,jhhwang1@samaneng.com,jhhwang1,222269.jpg,eda369f6061537ce15ce977f6dcb5052b746294baf4890f33bdb1bdb2b8b4f5d.jpg,b1df8524-1e91-4f65-9733-27470932a5af,b1df8524-1e91-4f65-9733-27470932a5af.jpg,Y +HANMAC,황지만,jmhwang2@hanmaceng.co.kr,jmhwang2,M23042.jpg,ea263bec58d26d6b673c839ca780ce39ee79ad8edb7ca40fd7c4d0b1b0b25562.jpg,bb9efcff-f36a-4b58-9927-b3a8ce00f50b,bb9efcff-f36a-4b58-9927-b3a8ce00f50b.jpg,Y +SAMAN,황지영,jyhwang@samaneng.com,jyhwang,026043.jpg,2b6d5ea01ddcc6f684600c780c5f1d3e2db70f1c57b9526012cea02a66f7c7d4.jpg,28f81f74-f281-4b2e-9e54-d90fc28da3cb,28f81f74-f281-4b2e-9e54-d90fc28da3cb.jpg,Y +SAMAN,황태진,tjhwang@samaneng.com,tjhwang,222200.jpg,445ca5700730a8f66e23f0b0abbbd553b379bf1a1f81b8bb58c70d25f72abe77.jpg,346e9bea-0741-425b-95e5-b214537c846f,346e9bea-0741-425b-95e5-b214537c846f.jpg,Y +SAMAN,황하수,hshwang1@samaneng.com,hshwang1,225078.jpg,03464d93924a7f695f5fa73d25761db21d54740ae60c460ce5600ee40ef40bea.jpg,f9eb1507-cefb-40a9-8a34-abf02886e824,f9eb1507-cefb-40a9-8a34-abf02886e824.jpg,Y +SAMAN,황혜정,hjhwang2@samaneng.com,hjhwang2,225014.jpg,4c078065d7fe8b8b9c6915b02aba00baa67bde628bf25fb3fe74e2a4d6eb7e3c.jpg,69c2ab47-806b-4155-b00f-b53ebc373e61,69c2ab47-806b-4155-b00f-b53ebc373e61.jpg,Y +SAMAN,황혜진,hjhwang1@samaneng.com,hjhwang1,219132.jpg,3e0c7b3c3806fd85fa82f221323c68fbb9ce67c4f6307e43126faed4ab1f6747.jpg,70440976-5186-4f8f-b10e-2134885eded3,70440976-5186-4f8f-b10e-2134885eded3.jpg,Y +SAMAN,황호연,hyhwang@samaneng.com,hyhwang,224363.jpg,535568c1043a989644dddbc235502c0d100e18201f0229faf8d6cf9c77e0134b.jpg,80bca5cc-6b05-412b-b1fb-06a49e9ee82b,80bca5cc-6b05-412b-b1fb-06a49e9ee82b.jpg,Y +SAMAN,황효섭,hshwang@samaneng.com,hshwang,216114.jpg,67cc09fb7f98ba66440382c5976d7ed50752d11504408f8d13b278a0af501cc1.jpg,22d480f7-2443-49c2-8432-7cf490dff993,22d480f7-2443-49c2-8432-7cf490dff993.jpg,Y diff --git a/docs/references/saman_current_app_direct_employees_2026-07-16.csv b/docs/references/saman_current_app_direct_employees_2026-07-16.csv new file mode 100644 index 0000000..ad4141c --- /dev/null +++ b/docs/references/saman_current_app_direct_employees_2026-07-16.csv @@ -0,0 +1,1863 @@ +selected_tenant_id,selected_tenant_name,selected_tenant_slug,source_tenant_id,source_tenant_name,source_tenant_slug,employee_id,employee_name,employee_email,employee_phone,employee_grade,employee_position,employee_department_raw,is_current_app_direct_employee,included_reason +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d0209fc9-dfbe-4411-ada2-3d02929f6b99,최동식,dschoi16@samaneng.com,+821033604146,사장,대표이사,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c103c96c-931f-4344-bbd9-50dd96138066,강경석,kskang@samaneng.com,+821063650412,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bebb832c-052e-493d-b5a9-732518d67685,강경훈,khkang@samaneng.com,+821037814631,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27c8d394-36a4-454d-bab3-66bf806c6bb0,강광호,khkang1@samaneng.com,+821038768619,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4a6430a-2a35-460e-a764-f495e2b8ea1b,강기헌,ghkang@samaneng.com,+821039962168,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,13bf81d0-1d93-467d-938a-7c876efab5ee,강다원,dwkang1@samaneng.com,+821045405340,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1dc3a834-3b4a-4fc2-a0f4-0900ef8b671e,강대선,dskang@samaneng.com,+821090229410,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,add4cf4b-738a-4095-b5a7-3ecd34a92e31,강대식,dskang1@samaneng.com,+821028525529,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4b581942-b1b9-414d-bd46-2d564a25e5fe,강대엽,dykang@samaneng.com,+821071821790,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a013fbe5-f41e-4ff7-a41f-18f30b7a829d,강대완,dwkang@samaneng.com,+821087632279,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70eddd9b-473c-4aea-974c-aa4220415fa0,강동구,dkkang@samaneng.com,+821042132474,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75c96ec0-ca4d-4781-b04a-5c573460a964,강동우,dwkang3@samaneng.com,+821066655094,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1db2f664-a638-4b24-8c41-c9c1eb34a010,강동원,dwkang2@samaneng.com,+821034602226,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,590a91f1-c40b-46f3-b50c-3b214d32522a,강동진,djkang@samaneng.com,+821038275145,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,53acd47e-31cd-4930-918e-4d7215e553c0,강명지,mjkang@samaneng.com,+821033052509,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d9ccbe9-617d-41e1-84ba-2a49b9cd06e4,강명학,mhkang1@samaneng.com,+821062671925,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c611341-17af-46b2-b08a-924fcc7a8bfc,강무중,mjkang3@samaneng.com,+821085382048,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e013597-58e6-428c-bc89-651348fe3a83,강문태,mtkang@samaneng.com,+821022496734,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5741996b-d4ac-45bd-be6f-8b8393ddd687,강미선,mskang@samaneng.com,+821075081442,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,519d6ac2-fcc6-4dde-9220-196d3a0da674,강버들,bdkang@samaneng.com,+821051426361,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,040f39e1-c557-479a-8aa0-7fc0db193fff,강병산,bskang@samaneng.com,+821055134120,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1ee20281-a34f-4d6e-b851-15f975b7c982,강상균,skkang1@samaneng.com,+821035671314,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e559edc5-5ef0-4fdb-874c-6b673b1cd515,강상우,swkang2@samaneng.com,+821028728982,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b748f20e-71cb-4924-a9a4-b0783c2d623c,강상욱,swkang1@samaneng.com,+821037403584,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9ced50e3-bfae-4685-885e-085589e62b01,강상원,swkang@samaneng.com,+821072333909,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a7e69109-a7d8-4e41-aaf5-0aa24ef6c372,강상의,sekang@samaneng.com,+821054230283,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,885ba8d0-a069-4d68-bb70-87e98cf156c8,강석봉,sbkang1@samaneng.com,+821088516408,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f85e8351-c976-49d0-8807-b5312b0a1a52,강석준,sjkang@samaneng.com,+821099311701,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3128b4c6-35e1-4fd8-9df0-192f131aa586,강석훈,shkang1@samaneng.com,+821045479802,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,41fc3828-ba20-4ec5-b6f6-40b889e1ade4,강선태,stkang@samaneng.com,+821036785389,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92a50344-13b4-4376-a7b0-de5220eb6c3f,강성배,sbkang@samaneng.com,+821090807226,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7bf536e7-ecc8-4f18-9dfd-0f507a171c0c,강성일,sikang@samaneng.com,+821054797460,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,60f39887-ee4e-41b6-8147-528e88622c1e,강성찬,sckang@samaneng.com,+821050119455,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7c912910-3aee-4316-9792-8eb973f3121b,강수연,sykang@samaneng.com,+821091326143,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4125e23-a4c1-44f5-9150-2877306c1cd6,강순남,snkang@samaneng.com,+821080739798,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6497dd74-19da-4831-b926-a5404d10cb49,강순양,sykang2@samaneng.com,+821026686970,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f45f5dcb-5846-491b-a929-e2dd818ae7be,강승대,sdkang@samaneng.com,+821096827100,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e1f4e47c-26cd-4dd3-89e1-57e0660fbe99,강승열,sykang3@samaneng.com,+821089531934,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5fc04932-10d4-41c1-8554-beacf6195280,강승주,sjkang2@samaneng.com,+821026800362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8826b6c0-1f68-478f-923b-3fadeda20547,강시영,sykang1@samaneng.com,+821093309179,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0a8c6a2-2c87-40a8-ae30-f3b47ac5f385,강신길,sgkang@samaneng.com,+821036835751,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea4a42b8-5c84-4499-b0b8-4306c380016c,강원철,wckang@samaneng.com,+821025633275,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91e57cb8-ab87-4aed-88ce-5dd27531df93,강유경,ygkang@samaneng.com,+821025562975,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,22af3777-c756-4716-8eb1-6b743db6a6e1,강윤규,ykkang@samaneng.com,+821024094834,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b0091974-f4da-4ddd-9bb3-cc1daf698feb,강정연,jykang@samaneng.com,+821064794996,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ae01d86-9d9e-4109-b64f-b536599379f2,강종태,jtkang@samaneng.com,+821054999888,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,72cd2043-eafe-4b71-894f-f7291b62bff4,강준희,jhkang1@samaneng.com,+821036841963,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2808763c-cbbb-43fc-93c2-14fb7744f4ac,강진욱,jokang@samaneng.com,+821088698307,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7f74e4ce-d600-4ab2-9dac-c67f598f426f,강진화,jhkang2@samaneng.com,+821051386579,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,23a81759-8d0a-438e-ab7d-aa200de1f588,강태선,tskang@samaneng.com,+821034588105,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1eaa7e43-d760-4c10-bf45-b6694283c5de,강태현,thkang1@samaneng.com,+821029713202,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e05221f-17df-4a9c-8cfc-dad5c8180c7c,강태호,thkang@samaneng.com,+821045650411,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,683217cd-dd0d-4ebf-9f4c-5cb97812d519,강태희,thkang2@samaneng.com,+821026739593,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cae38a7b-39d7-4dfe-9b3f-eae9ef254d56,강평구,pkkang@samaneng.com,+821053544884,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7118dbbc-b295-4c24-b7c0-04e496282d8b,강필웅,pwkang@samaneng.com,+821036105368,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,589ddef3-86f0-41f0-8171-516d6a62ddf2,강형구,hgkang@samaneng.com,+821042630011,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4f16e73f-4c2e-4619-aeeb-168731be2b27,강혜진,hjkang@samaneng.com,+821093639538,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f09efc59-ab01-42cb-82b0-fbeaf34404ba,강호광,hkkang@samaneng.com,+821020415974,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7582c48b-715d-4f1e-8851-2bbc9c8d8054,강호문,hmkang@samaneng.com,+821087598195,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bfce5ae3-7c97-4b9c-ab7b-b9db0d5d820e,경민구,mgkyung@samaneng.com,+821091028653,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35a8b41d-8d79-4817-8dfc-aa5431d47c1f,고강수,ksko@samaneng.com,+821053208852,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f27978e1-bb5e-4479-b15c-03c64ce4ffa6,고경원,kwko@samaneng.com,+821085796549,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a39c5759-b980-472f-89dd-5715059e4776,고광민,kmko@samaneng.com,+821037516106,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b4b32a4e-b9be-4379-b804-e3baf9936e2f,고동인,diko@samaneng.com,+821051729906,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9387c620-91e6-4049-bcf5-9630424eca19,고민우,mwko@samaneng.com,+821040550886,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,78c8df9a-25a3-4208-9701-bbfe7766b3a1,고범홍,bhko@samaneng.com,+821034200915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,333b24aa-198e-4e61-9d48-309356bc8129,고상훈,shko@samaneng.com,+821032485708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3317748c-99d7-46e5-a96d-1a06f7f72885,고세일,siko@samaneng.com,+821073363543,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a881c934-bce0-4a7e-a6ae-15cda3aa5021,고승희,shkoh@samaneng.com,+821038905926,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0416fbd5-7d28-47e7-a077-52868d0a02e3,고연상,ysgo@samaneng.com,+821075335116,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d36f383-f164-422f-b113-17484b29c667,고영태,ytkoh@samaneng.com,+821087222774,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eab7ea84-218b-4b5a-b72a-6517d3ffdf49,고원태,wtko@samaneng.com,+821047425787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8fd760b8-2336-4685-a907-bd4f3e7822f8,고준연,jyko2@samaneng.com,+821087905953,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,feeb7dac-193c-428e-b477-63da16ea4b42,고준영,jyko1@samaneng.com,+821035311819,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1cebc5b3-3566-4c24-8c00-3a155d0b926b,고준호,jhko@samaneng.com,+821047414576,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d2161b65-6cca-4d3c-80da-a1b9a90af30a,고지영,jyko@samaneng.com,+821054006556,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aa66b943-156a-473e-9d90-992c641cfee1,고창석,csgo@samaneng.com,+821037771236,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8195cf48-c947-44b4-a006-1b256b57d354,고태호,thko@samaneng.com,+821024349128,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dd2ad8e7-7b0a-4f29-822f-c40792fb8015,고현우,hwko@samaneng.com,+821051009796,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,43a388f3-63b1-4310-8c43-0bf005ecab17,고효정,hjko@samaneng.com,+821091138393,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19a31647-5647-4e4f-a0ff-79e28a85cb28,고희수,hsko@samaneng.com,+821036989267,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4de141b4-927d-4daf-9201-ff62bdd87f51,공기원,gwkong@samaneng.com,+821063622272,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ba92e160-684c-4705-8b65-ff6087979b24,공병승,bskong@samaneng.com,+821037594372,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,60b53839-2484-44ce-9d8a-5e08f9d93e5f,공병화,bhkong@samaneng.com,+821085886635,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8063caf3-7a48-4bd6-a6cb-357245a9dd17,공석호,shkong@samaneng.com,+821028001917,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b388d208-0f24-499c-b97e-df3b79e241c1,공성문,smkong1@samaneng.com,+821026282246,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ac33b561-0cae-4dbf-9e6c-a0bf669e49e9,공용표,ypgong@samaneng.com,+821025538318,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,536f9e40-9f0a-40ed-8798-b790827a3e52,공태원,twkong1@samaneng.com,+821039006451,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fd38395f-a4c6-4ebb-9a55-fffb4d7a48f7,공태원,twkong@samaneng.com,+821063479298,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fff0b562-cb32-4e81-b20b-ddb5825bc4bb,공현우,hwkong@samaneng.com,+821085531568,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15d3788f-44bf-4b86-ab71-c914c128871b,공현호,hhgong@samaneng.com,+821035640284,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e87c24a8-5161-41e7-895d-eb92c538013b,공희연,hykong@samaneng.com,+821095729815,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e2490e75-8baa-4ca7-b4df-ea6ddb18768e,곽경호,ghgwak@samaneng.com,+821022827986,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8ce81d7-f682-4f7b-8ea8-75de62eac7ea,곽병구,bgkwak1@samaneng.com,+821035440756,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,21a601a2-df12-4d7e-8127-d672ba00e70c,곽억연,eykwak@samaneng.com,+821038916892,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c53a415b-01d0-4bc4-bfdc-d0de4510cde0,곽용규,ykkwak@samaneng.com,+821095352007,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5dff99e4-0a32-433a-a315-2742748f0eb7,곽은미,emkwak1@samaneng.com,+821075900325,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b8b1775b-ff82-4012-ae01-85310522a1a0,곽은미,emkwak@samaneng.com,+821094708534,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16769b44-9f9d-4a4f-8bb4-fecb07346339,곽준성,jskwak@samaneng.com,+821021027245,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eb32f447-83d5-4a2b-8c92-21044a265cbd,곽호성,hskwak@samaneng.com,+821089757069,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f23da4d8-a1fc-4c1b-8784-6b3617a943d0,구경자,kjkoo1@samaneng.com,+821088492876,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,945ba295-a88b-4d80-a707-e79f0427a4dd,구민재,mjkoo@samaneng.com,+821026140226,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9130294e-ed7b-40be-97f8-2b6ce4171608,구영민,ymkoo@samaneng.com,+821038826092,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83c1b116-e84d-4388-8436-95500b185a24,구영서,yskoo@samaneng.com,+821054210272,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2265ef93-b69a-400a-bae2-c555f9d2e7e3,구원일,wikoo@samaneng.com,+821092339802,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e9fde49-99ad-443b-a1de-5af4485adcdb,구자환,jhkoo@samaneng.com,+821042302229,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eb53cac1-5c15-4a99-a86f-a8ceb8c5bb94,구천회,chgoo@samaneng.com,+821035934852,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,58fea1b6-f96e-412c-84ef-7d1f8d4f86c0,구효완,hwkoo@samaneng.com,+821052674180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19887baa-38fd-4f93-87db-b8a58d32737d,권구현,khkwon@samaneng.com,+821033041663,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec744eea-ec34-4ff4-8022-da3edb38c953,권기옥,kokwon@samaneng.com,+821089635053,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,499469ac-9bcc-4078-be22-5b7876d2860e,권기철,kckwon@samaneng.com,+821093190742,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,373383b0-aae9-4fcb-a772-2df63d628139,권대경,dkkwon@samaneng.com,+821080314206,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,db137a65-bbba-421d-b9d1-23628b1a3033,권민근,mkkwon@samaneng.com,+821032120521,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f737a84f-414e-4a43-a447-d185edf3540e,권병근,bgkwon@samaneng.com,+821092589667,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c0556da1-efa2-4022-a240-eb522fc88206,권영국,ykkwon@samaneng.com,+821085398209,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5de163b0-0f6a-40ff-94d6-b62e8ba366f2,권영범,ybkwon@samaneng.com,+821026104546,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b643ddf4-47d0-4e8e-997a-98c0b88e8481,권오선,oskwon1@samaneng.com,+821099372368,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f74c41c-1e76-493a-b8d6-7bdc191701de,권오선,oskwon@samaneng.com,+821092455915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6eaf0f9-a4d9-466d-bf11-0f057ec281fc,권오영,oykwon1@samaneng.com,+821089963840,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ccece74-9ac1-4752-95e5-201250ddb407,권오윤,oykwon@samaneng.com,+821047106405,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62c5adfe-a9ec-4740-8f76-326c6e00703e,권오정,ojkwon@samaneng.com,+821057519880,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5a0c4cf8-29c7-43aa-9a81-a9cee3af2e2f,권오태,otkwon@samaneng.com,+821085877335,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,435c6a6a-2406-4ade-932d-b6d6861284e2,권이선,lskwon@samaneng.com,+821023356932,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a7c855f-0e16-43e9-b7cf-8d2b7dad3d26,권진주,jjkwon@samaneng.com,+821098291564,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4621f799-96b6-499b-9fff-01ca4c4e511f,권진하,jhkwon@samaneng.com,+821029275925,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fb9acd51-32d0-4282-aded-68e8e61ea3b0,권충영,cykwon@samaneng.com,+821062244319,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,647077b8-b0ad-4628-ac40-b63acab4658a,권태학,thkwon@samaneng.com,+821024230352,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e56c7a3-28b1-4779-b021-b0a8b87b0435,권혁민,hmkwon@samaneng.com,+821093477266,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9b4b74b6-b813-45cb-b14e-726e0d6c13aa,권혁수,hskwon@samaneng.com,+821086433057,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c318bf16-05bb-4b9f-aed4-67a7d38031cf,권혁조,hjkweon@samaneng.com,+821031359375,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f3469d30-5c83-4171-b71e-93509feb5873,권현진,hjkwon2@samaneng.com,+821038813791,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30359f72-10ac-4ef5-9c5e-a5c8bf2e76af,권형중,hjkwon1@samaneng.com,+821036612572,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6df39ba1-1428-46c9-9c37-67a7c22af9f8,기정호,jhki@samaneng.com,+821092292523,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,675b8323-9906-44ed-8be8-73b2a55ca2f5,김가영,gykim@samaneng.com,+821033579519,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2d330b99-291b-4848-bac7-2bbed6d3330d,김건도,gdkim@samaneng.com,+821020072147,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83b16afd-b691-40b5-b13e-d83a1a433e75,김건완,gwkim1@samaneng.com,+821033190458,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d896c402-1e2d-42ee-810d-c43ec47a3322,김경미,kmkim@samaneng.com,+821076045425,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2eafaee9-59cb-4981-a93f-5188e60b54d3,김경민,kmkim1@samaneng.com,+821034172402,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4310afd9-0bb4-42a5-aa5c-07434bbb85c7,김경석A,kskim@samaneng.com,+821092133086,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a1bf31d8-f763-452f-a384-220ccb7db1cc,김경석B,kskim5@samaneng.com,+821026648324,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,688974cc-8560-4023-8108-a5498d771c86,김경수,kskim1@samaneng.com,+821039061012,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a9d3f0af-946d-4e59-b29b-c5ae24fac2b7,김경수,kskim2@samaneng.com,+821027582771,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a916a3c4-7bbf-46b0-8dfe-c8573715ef00,김경아,kakim@samaneng.com,+821032007957,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5a8dea50-d4f2-4f31-849b-09355e86126f,김경호,khkim2@samaneng.com,+821038057560,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,54cb00ad-6795-40a6-83f9-72304d4c6db1,김경화,khkim5@samaneng.com,+821041425420,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,37980e10-48ad-47c0-a642-c3d4ff647b24,김경훈,khkim7@samaneng.com,+821034087227,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,efea1bc0-254f-4a36-85a5-62b839fafb2c,김계원,gwkim@samaneng.com,+821076464523,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4d01da9-7a2d-4daa-8f00-61d3fb2750e1,김공균,kkkim@samaneng.com,+821036016492,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf23d94b-eed0-45e9-a76f-417c5078fce4,김관영,kykim@samaneng.com,+821030905775,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,95b34a98-e4c3-4824-b0bd-9293e82431ee,김관중,kjkim3@samaneng.com,+821036490345,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d2eee8a1-2b43-432f-96f2-fb9de0abf58f,김광균,kgkim@samaneng.com,+821099503759,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e70e734a-988d-4c84-ba77-0392c1246292,김광남,gnkim@samaneng.com,+821094961351,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4dcd4cc2-6d0c-47b0-a29d-35e8a0268cd7,김광원,kwkim@samaneng.com,+821033028738,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f22d8bc5-c3e3-4385-b695-4a0837ac16e6,김광준,kjkim2@samaneng.com,+821046920114,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,daa685a6-3dfc-4646-9c1d-da80d1043d03,김광혜,khkim3@samaneng.com,+821053462725,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c1b53fab-342c-422e-a078-16963a7fee0d,김국태,ktkim1@samaneng.com,+821098847778,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,42d8fbe9-7b05-4e61-aa33-b8dec383dbf6,김국현,ghkim3@samaneng.com,+821095002825,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c6b21cb-6099-43a0-8b6e-3159e7a2316e,김규화,ghkim1@samaneng.com,+821080745085,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a08c6f21-3d83-4fd5-8fbb-0d7c304f1e8b,김균준,gjkim@samaneng.com,+821075742373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,038cbf44-9265-401e-8458-23ce4ea1964e,김기룡,klkim@samaneng.com,+821032594035,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c6a1cfa8-822c-4e6c-9ae4-c82cac12e2cb,김기봉,kbkim@samaneng.com,+821086911799,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3b586125-c515-4237-bf40-16856e112da1,김기영,kykim1@samaneng.com,+821044529619,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e50a9f00-ccaa-4484-9dc7-06a389fb8636,김기영,kykim2@samaneng.com,+821066121095,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e0d750d-31b1-43ef-ab97-cd3fce2b57e7,김기용,kykim4@samaneng.com,+821027361245,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70b801b6-2e68-45a5-ac42-40e5313020a7,김기원,kwkim1@samaneng.com,+821063577980,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eb084552-bc25-4173-9f84-1e62876372a5,김기호,ghkim2@samaneng.com,+821088212884,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ba881f22-0ffe-49fb-9169-8c16d6362669,김기호,khkim4@samaneng.com,+821073320866,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dd7924eb-7859-48f8-a160-89b9f1dbc55f,김기환,khkim@samaneng.com,+821054722294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ca69be8-3723-48ba-b0f1-fae33e50ac84,김기훈,khkim6@samaneng.com,+821082869063,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,42f1d842-c036-4c3f-9af4-a2585203bbb7,김기훈,khkim8@samaneng.com,+821055728179,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e1f36069-0da4-4ff8-8220-fea6de091e50,김길모,kmkim2@samaneng.com,+821062638411,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9fa75aad-8e08-4bc4-a617-85c3ce6758a6,김길웅,kwkim2@samaneng.com,+821037639658,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b95c13d0-a7e4-43f1-8c53-364416aa88cd,김나연,nykim@samaneng.com,+821038759147,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d024d21c-85ae-410d-ad8b-0fbc644dc3a0,김나현,nhkim2@samaneng.com,+821085510948,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e75c4a5e-71f4-4a94-b3bb-47d9bff3641b,김나현,nhkim5@samaneng.com,+821043438031,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,752ab0e5-d16d-4559-a9fc-94d3a80639f2,김나현,nhkim@samaneng.com,+821097240217,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d51edfe-b652-4e6b-8b9f-7f76d468961f,김남곤,nkkim1@samaneng.com,+821094048783,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,048defa9-d47c-4900-8c87-5b40f3e4d0e3,김남기,nkkim@samaneng.com,+821053780118,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8ff7d296-0846-4e88-a463-4c1ecdd05f05,김남옥,nokim@samaneng.com,+821021274964,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,008a1287-7955-4800-80c1-1b5205466f92,김남헌,nhkim3@samaneng.com,+821036440302,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,28357d77-a8b3-43f9-bc5a-454b9644c53b,김남훈,nhkim4@samaneng.com,+821035454602,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c50c8c0b-2ec4-4d30-b23f-495d875e40eb,김다은,dekim1@samaneng.com,+821082031316,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,63aaa1c6-fd54-428e-89f3-88b2e0235e0a,김대성,dskim2@samaneng.com,+821020629847,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,26bc52b9-8e06-4a6d-935d-e857500dfaf3,김대수,dskim@samaneng.com,+821089692722,이사,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8ec3b8b-1936-4a90-b4e6-def9a1fa7f8a,김대영,dykim1@samaneng.com,+821048409117,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f21f8a87-e23e-490a-bdd4-c59f8b365c08,김대영,dykim3@samaneng.com,+821033556497,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,297b7dd7-281d-4545-abc1-2a4564cee4ef,김대현,dhkim@samaneng.com,+821038189277,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dbca211e-b3bd-4d36-a2d5-ff8b430b1f82,김도연,dykim2@samaneng.com,+821041060886,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd5d2667-a340-486e-8b92-a2fb7d54d846,김도헌,dhkim1@samaneng.com,+821084597554,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eadb0ff9-da37-4b17-879a-ecc7e2d66c2d,김동규,dgkim2@samaneng.com,+821033337607,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,77573892-3c7c-4999-8472-fe7c9a50c7ae,김동길,dgkim1@samaneng.com,+821099462792,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b83c9db3-3ec6-4bf7-b2bf-26a63dc1e5af,김동길,dgkim@samaneng.com,+821056089377,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,20ae1f5f-4fa9-4335-bbfc-bbfddd3f1b88,김동렬,drkim@samaneng.com,+821036191931,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,371d2ac7-7831-4a1b-a47d-a1dd9b87ed4b,김동범,dbkim@samaneng.com,+821062444052,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c0fde2e2-9977-4f1c-ac1c-28dde7007197,김동수,dskim1@samaneng.com,+821087635332,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,efbc9122-6bec-436d-aa91-6af2b89a7aa2,김동우,dwkim4@samaneng.com,+821036102774,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1b5d06e4-455f-40df-a449-bfdeeb4f7b90,김동원,dwkim@samaneng.com,+821054183544,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4553a9fb-bea0-42bf-9f24-183f9c6eb0c8,김동은,dekim@samaneng.com,+821047498343,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7ed30eb0-d7e9-4ec7-b99a-b15ccfa2bed6,김동주,djkim@samaneng.com,+821037845941,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92d5205d-8c47-44e4-8212-c49676e134d8,김동진,djkim1@samaneng.com,+821051220538,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fdc45b04-5388-4a38-9d25-e0a37be08652,김동철,dckim1@samaneng.com,+821047982367,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd4592f6-8d39-4a15-a9b7-39a81cb9efea,김동하,dhkim5@samaneng.com,+821046159671,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70ae7382-be8b-49f2-a2f3-49f39bf0abb7,김동현,dhkim6@samaneng.com,+821039253179,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2c872c69-4909-4d3a-a9a0-c0e23838338c,김동휘,dhkim2@samaneng.com,+821062280937,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,424dc730-576c-46dd-8f4d-6c999d506070,김득수,dskim3@samaneng.com,+821036614477,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,96e6b69e-8bcf-48b6-b7c2-97289dc038a3,김리안,lakim@samaneng.com,+821050121512,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf1a7c9d-f81b-4cd7-bfd9-7911fe3946e7,김만규,mgkim1@samaneng.com,+821089797449,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1abcf122-83b9-45f1-a18c-6f49c2995c69,김만선,mskim2@samaneng.com,+821037054157,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fee3a2db-9656-469d-bf4d-2dc71bc3cd4a,김명,mkim1@samaneng.com,+821085177289,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bab85a19-35d2-4089-ba76-a05d5a6cbf95,김명수,mskim3@samaneng.com,+821036739737,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,88059b4f-790f-4e61-8191-4e6eb35ebb88,김명숙,mskim1@samaneng.com,+821051676778,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e8f9622-03c3-4e2b-aac7-f2fc1990edbd,김명조,mjkim@samaneng.com,+821076016841,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,04f0e187-4ded-4d80-8247-38cdd5a0dc37,김명준,mjkim4@samaneng.com,+821051179778,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a8f8c35-a3a2-455e-9cea-b57e352a89a4,김무섭,mskim6@samaneng.com,+821022844970,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9ee3f3bb-d519-4fcf-96a8-4d0c9933b014,김무언,mukim@samaneng.com,+821084701196,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0c9899c6-86f4-430c-a7a2-cf046e807317,김무영,mykim2@samaneng.com,+821067571673,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34669d42-5cc5-4e0a-9c1e-19f11b3c657d,김문기,mgkim2@samaneng.com,+821036474442,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a5b26213-3460-4c19-84a7-59c37d0e4e7c,김문수,mskim12@samaneng.com,+821064847690,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a34d130e-a796-4853-87b6-a020a3f81373,김미,mkim4@samaneng.com,+821026313647,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,af00e07f-0344-4cc7-a2e4-662805c331bd,김미라,mrkim1@samaneng.com,+821054966265,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19461f72-5307-4318-b7c6-7cb516d3a8de,김미리,mrkim2@samaneng.com,+821046040536,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,57c6ef62-5353-44a1-98cf-ca95b0b0e115,김미정,mjkim2@samaneng.com,+821089718479,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fd1b1e43-3281-43fe-bbfe-4e0436823e56,김미희,mhkim1@samaneng.com,+821053920617,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ac27a91-e09a-4787-91e0-c5b853f52348,김민,mkim@samaneng.com,+821028559956,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a15c8056-2dc7-4e49-b54c-c8666848d331,김민규,mgkim3@samaneng.com,+821063124855,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d1d09cd7-ce12-4c26-925b-7d449efadaec,김민규,mgkim4@samaneng.com,+821047766741,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35498e30-862b-47dd-9103-c889b95651aa,김민규,mgkim@samaneng.com,+821083839253,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,26b76793-f703-489b-ac2b-c0e5c6180ade,김민석,mskim9@samaneng.com,+821029971582,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c9c44cd8-d520-4892-986a-e948549a71bb,김민성,mskim10@samaneng.com,+821066148641,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,051d2457-0751-4ed1-849b-878f1f8ee9c8,김민성,mskim4@samaneng.com,+821054470343,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,be1dd8aa-ee90-435f-9e58-8b87e76c6b99,김민수,mskim5@samaneng.com,+821023170892,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1fe79bd3-4719-426b-a15f-4ab9dfecc5b4,김민우,mukim1@samaneng.com,+821050090470,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5049c21d-7d6d-4b7c-b84f-f13b9e43fde6,김민우,mwkim@samaneng.com,+821029666175,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f99d46ef-7205-4e7f-9cc4-66314b800212,김민재,mjkim6@samaneng.com,+821040071379,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,82ef7bd4-5692-4f7b-a499-175d53184c08,김민종,mjkim5@samaneng.com,+821035502436,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35f0b167-b8b0-4d23-9fea-516be7d64352,김민종,mjkim8@samaneng.com,+821097359214,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46cd0424-7f96-4d15-a852-20f01e70100a,김민주,mjkim1@samaneng.com,+821037503716,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e51f22eb-1b04-4f71-a937-8e5d397b5c0c,김민지,mjkim3@samaneng.com,+821039382336,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e96a8fb-1dd7-42da-9077-3e3b3e93808f,김민철,mckim@samaneng.com,+821057205415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,78273549-74d4-4681-ac93-9981c238ec29,김민혜,mhkim@samaneng.com,+821097351015,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8ff761b2-4cce-4ca8-a2ba-3dc4050e52c5,김백중,bjkim@samaneng.com,+821077595171,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,12e6d350-67bc-4705-8aec-6ae4da691782,김병국,bkkim1@samaneng.com,+821052593492,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0142485d-349f-4fc2-b502-5616aac9d190,김병근,bgkim1@samaneng.com,+821065582322,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2b8288be-c25d-4d17-8d89-b7230441f83e,김병문,bmkim1@samaneng.com,+821086957163,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e23e2181-e9aa-46b5-b19c-d9fc61d9c73c,김병수,bskim@samaneng.com,+821093920120,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fbdab962-0deb-4812-a920-4ac9bd496437,김병옥,bokim@samaneng.com,+821087686643,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b017bfe4-9bf7-4f30-ab09-23aa5b93ce7c,김병준,bjkim1@samaneng.com,+821047421670,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,084f8c6b-28e3-4c89-ac15-22a6089fb634,김보건,bgkim@samaneng.com,+821025736851,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,666ca71f-dc38-4ed7-829d-097086fb8dfa,김보국,bkkim2@samaneng.com,+821037654180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c17cc20-2d9f-4135-a45f-12e25bb4f188,김보묵,bmkim@samaneng.com,+821063371296,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e9a6f83d-a6e5-4891-a3c9-51a3e2430c45,김보성,bskim1@samaneng.com,+821093345360,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c1b1d9d-089d-455c-950c-7e179ab6a31b,김봉수,bskim3@samaneng.com,+821068202656,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3bf6cd28-480a-414e-8aae-62fddc6215ab,김봉식,bskim5@samaneng.com,+821031122338,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bcf0ee79-a9b1-4cff-ab64-122587996a45,김상구,sgkim2@samaneng.com,+821094242941,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8446632-fffd-4cf0-bf72-e3f15e89b353,김상규,skkim5@samaneng.com,+821037106327,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55c337eb-9185-42e4-956e-f7914181a87a,김상균,skkim4@samaneng.com,+821025470535,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,906d29f1-b69d-4e25-97a4-4606fa871a30,김상덕,sdkim3@samaneng.com,+821063343154,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,435c2414-7588-4299-b277-a791c00197a3,김상돈,sdkim2@samaneng.com,+821033439159,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6ae4338e-4544-42e6-aaa4-3bd12e492424,김상동,sdkim1@samaneng.com,+821025231050,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2d810060-63f8-47c3-a81c-0ca267bcb499,김상범,sbkim@samaneng.com,+821037959496,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6dc870b4-effc-4eb5-ae0c-1338527ec7c2,김상성,sskim2@samaneng.com,+821052016573,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,052ffa06-13ac-4525-9748-c3efcb271173,김상수,sskim@samaneng.com,+821063798244,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c1d4b4b-6a38-4a17-b2c4-fd0f44414d89,김상용,sykim1@samaneng.com,+821072667902,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec06140e-5a1e-4af3-a85e-cb126cb39ebd,김상용,sykim4@samaneng.com,+821033761458,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,668dd3f9-a8ea-4ecf-b47f-cabeaafda615,김상종,sjkim@samaneng.com,+821050082139,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6dedc3d6-d7f6-434a-9fa1-de34b5cac0d5,김상철,sckim3@samaneng.com,+821062292362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,72d847ce-f6f6-498a-81ff-7ca26ba8b88b,김상현,shkim3@samaneng.com,+821048150874,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,82cce1f8-c3ff-4f66-9536-ada44706b045,김상현,shkim@samaneng.com,+821045423873,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a2c9c7ba-674f-4fc9-b9cc-d0abb9029556,김서현,shkim10@samaneng.com,+821090079953,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,560e76f6-dc24-49ef-8969-87e6f2067f07,김석규,skkim2@samaneng.com,+821039430102,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,250829e7-74df-452d-8b02-7db7f65313a5,김석근,sgkim5@samaneng.com,+821051933139,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e98fa6b9-250f-49b8-985e-e50b9272cf50,김석조,sjkim8@samaneng.com,+821045554902,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,adcae4ac-d084-41f3-bcb9-5944ad1fa0c8,김석진,sjkim5@samaneng.com,+821083983800,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc359269-9ccd-4fea-a8d8-66fe467d87fb,김선구,sgkim4@samaneng.com,+821074769900,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,94106b9a-2add-4a33-9913-fc1b7bd671ae,김선근,skkim8@samaneng.com,+821092672979,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f85ec796-4b4d-4650-83c6-b3daa9e787ca,김선녕,snkim@samaneng.com,+821036442329,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8b48c760-b1d2-4019-b4c8-2ff58d3b3270,김선배,sbkim2@samaneng.com,+821065630535,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a969fd78-d54f-4d2e-b698-230d1873184e,김선범,sbkim6@samaneng.com,+821071198550,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cbbc843a-1bc3-464b-a14d-6a181b0bd806,김선자,sjkim3@samaneng.com,+821094091624,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4bd881eb-1260-4161-959c-658cb62c6231,김선택,stkim2@samaneng.com,+821085351641,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ad6845d7-931b-4df8-8a3d-420f51629836,김선환,shkim9@samaneng.com,+821036463220,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,56703eaf-6d6f-486a-bbeb-6fd6ad1e0a47,김성광,skkim6@samaneng.com,+821032523005,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,603e80e2-e505-48c4-8ff5-8c91238717da,김성규A,sgkim1@samaneng.com,+821054470845,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ce043f57-5caa-465d-b2b5-21f906d5bd86,김성규B,sgkim3@samaneng.com,+821028682406,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a00eaca-fefe-4327-89af-3bc49bed4e24,김성덕,sdkim@samaneng.com,+821036478946,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d931989d-5745-4521-aa5c-9f20a4c5209d,김성룡,srkim1@samaneng.com,+821091612138,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19a0b6f5-4b18-47e0-9dc8-decc32226d57,김성민,smkim2@samaneng.com,+821099451364,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,52827a9c-8060-47ef-80ee-cbca734c86ce,김성배,sbkim5@samaneng.com,+821045903193,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e53f70d-67ce-43a4-82f3-932b1b5e6588,김성수,sskim1@samaneng.com,+821071353754,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5992c6c7-096c-4aea-b105-a59b4eebcd10,김성식,sskim5@samaneng.com,+821030735803,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fab32256-f70e-4513-a15f-78b8d37ee1c6,김성욱,sukim@samaneng.com,+821038022298,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,51eff138-57ed-4c2f-9faf-da4983b9e30f,김성욱,swkim2@samaneng.com,+821063961915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab90b79d-9057-41c3-8943-eec5f5fced62,김성웅,swkim@samaneng.com,+821028608537,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62db0f38-e4b0-4984-b5e3-554054ade757,김성원,swkim1@samaneng.com,+821093343159,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf562084-c884-4e0a-bce2-61799093f158,김성중,sjkim4@samaneng.com,+821030827721,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7ada524f-a736-4fae-adc5-2a7a8592748c,김성직,sjkim7@samaneng.com,+821064216430,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e6c4f141-9dcc-40c6-a9b4-295f57dad3d3,김성진,sjkim2@samaneng.com,+821025940200,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,88e768e6-6022-49ef-b142-4cfbdde5ecc3,김성철,sckim1@samaneng.com,+821054132619,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,22d3283e-8c3a-4448-b783-5608f89657f6,김성철,sckim@samaneng.com,+821093735291,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8959c919-44b1-47c1-ace8-46881c192d66,김성택,stkim@samaneng.com,+821087018097,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6321a2b6-70bb-4a2d-9380-d330b77355ea,김성호,shkim2@samaneng.com,+821085033301,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6470a4ab-63ac-4731-8257-e87f3e31eceb,김성환,shkim11@samaneng.com,+821020203925,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e982ac2-bc41-415b-b7a6-b8127a83ee01,김세경,skkim@samaneng.com,+821052675374,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3848201-b771-423b-b2c6-0d898bef08df,김세은,sekim@samaneng.com,+821074947917,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0b3e4b11-3304-4b42-8b84-fd7e41142bb7,김세환,kimsh@samaneng.com,+821073203124,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,31de96c6-2765-489e-ba7b-f4461bb3fec3,김소희,shkim12@samaneng.com,+821096371992,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ff45770b-b184-4c8e-b918-bfbdb9056fca,김수정,sjkim9@samaneng.com,+821066976242,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,40f32a37-22ea-497d-8a2c-ddce3d086cf7,김순배,sbkim1@samaneng.com,+821027038687,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3897f91-8552-46f9-b344-17d2bf3ee72a,김순화,shkim1@samaneng.com,+821052075476,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ebdc3e5-5ef6-460e-a884-073ba8476199,김승구,sgkim@samaneng.com,+821094741226,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3691c6b6-e1b8-44e0-b867-30a977b3512e,김승범,sbkim4@samaneng.com,+821026965287,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ca9c4920-6760-4881-82f1-a432e88b819b,김승준,sjkim1@samaneng.com,+821043040306,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3eb40ea-8454-40b3-8fdd-a15369e28e26,김승화,shkim6@samaneng.com,+821086296545,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,77eb5487-231e-4d58-b5d3-a245412b415d,김시복,sbkim3@samaneng.com,+821026113885,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fcd95d8d-f424-4e76-8324-bef1861f37db,김신교,skkim3@samaneng.com,+821092337992,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3300289d-4d23-4c7b-aa34-2dc8c73b902b,김신혁,shkim5@samaneng.com,+821079342300,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2927371a-6c99-405a-9d17-c6828731c904,김아람,arkim@samaneng.com,+821087317092,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16ae66e0-c2ee-4a01-afda-c7326bdf8b8e,김아연,aykim1@samaneng.com,+821029508235,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5efe162a-3254-4e16-87ab-0ceb004acab0,김아연,aykim@samaneng.com,+821035322781,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f9b23dee-ee12-46b2-a56d-562d05b8796c,김연겸,ykkim@samaneng.com,+821046662510,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ad2f30f-47dd-4201-bdb1-2942038a4613,김연석,yskim5@samaneng.com,+821099027341,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4eac89f4-8648-48b5-ad14-de1197709bd5,김열규,ygkim@samaneng.com,+821034933115,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83fbc272-70d5-4c22-9dcf-a1b91d5817f3,김영기,ykkim2@samaneng.com,+821054464207,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,00ce7392-10e9-4b7f-be15-4e8444990c29,김영목,ymkim7@samaneng.com,+821030617595,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,58346e9f-bd2a-42bf-94bb-25376e095fbe,김영민,ymkim1@samaneng.com,+821039320858,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dca763a9-254d-4453-9bfb-580685c9328c,김영민,ymkim3@samaneng.com,+821065208420,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8ef8e78-ad81-4e8c-ba01-d82700a48b10,김영석,yskim6@samaneng.com,+821029854021,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b519543e-f63a-4832-9a2f-9c67e9872372,김영석,yskim8@samaneng.com,+821025300061,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8a648143-a005-4a4e-afc7-a27b1e2090be,김영수,yskim@samaneng.com,+821091843080,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b79d6b78-ab55-4a25-84ba-8c50469a88cf,김영신,yskim9@samaneng.com,+821042861052,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55625b94-e433-4d8d-b2b5-0e50948cb8a2,김영욱,ywkim1@samaneng.com,+821022816403,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,957484e5-d29d-4bf5-83bf-d302d17c6da2,김영운,ywkim@samaneng.com,+821052900275,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d011abac-795f-48d7-950f-ed1aa723b546,김영은,yekim1@samaneng.com,+821084506958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a7d2eb9-ad01-4810-92f2-21985d30e40b,김영임,yikim@samaneng.com,+821086749521,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e49ffca8-bd50-4493-b7ca-10738c5c893e,김영조,yjkim4@samaneng.com,+821024720345,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b9035c48-ee4e-4ca4-ae39-1122ae2c7817,김영준,yjkim2@samaneng.com,+821083540515,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,de52a2e6-4e5b-4cd6-ad63-fcfd75ddf9e9,김영준,yjkim6@samaneng.com,+821082994316,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92ee1c0a-6975-467a-a025-b5677b2a62a5,김영진,yjkim5@samaneng.com,+821020070959,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,93250b72-0339-470e-96b5-f042f4282dd9,김영호,yhkim5@samaneng.com,+821085522362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44968ab0-c8c6-4c86-9d9d-39e56a3c853a,김예빈,ybkim@samaneng.com,+821074006154,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6c56ff1b-8ce5-4bb1-9beb-79a4e9270367,김예슬,yskim2@samaneng.com,+821072585687,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5126be49-942b-4948-a7bd-54c1153d4518,김예은,yekim@samaneng.com,+821024318185,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,24ca7aaa-3ebf-4d4a-9c41-7576516c6685,김용구,ygkim2@samaneng.com,+821079770958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,94e9bd04-e29d-4e55-8a1f-dbebde5a6700,김용민,ymkim@samaneng.com,+821094374858,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d71a3002-7f3e-4add-8e7a-b241170e0d58,김용종,yjkim1@samaneng.com,+821085231258,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,df68e731-c701-4763-9396-45306a99ac13,김용현,yhkim7@samaneng.com,+821024776908,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,442e1c13-aa95-401e-8d1b-7d1cb63956c7,김용희,yhkim3@samaneng.com,+821086125440,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bbd58fdd-0e56-41e3-9974-1e89ddd6bd45,김우섭,wskim1@samaneng.com,+821030065719,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4b4265bb-daba-4658-b20d-56443126957c,김욱영,uykim@samaneng.com,+821038354511,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c41e48e4-4524-4f4f-8d54-b11f119feffc,김운걸,wgkim@samaneng.com,+821031281312,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c05914aa-380e-485a-9e7b-614686c6d4c5,김운경,ukkim@samaneng.com,+821088077228,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f00b339-d956-4e39-860d-56c35fe74571,김운배,ubkim@samaneng.com,+821029997751,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,176826b1-4d0c-4e4d-addc-8d8261cbb4df,김웅환,whkim@samaneng.com,+821028181962,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ac183db6-f255-41b7-ac54-1e255c411f91,김원근,wgkim1@samaneng.com,+821084454853,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e99390cf-ee37-4bb9-b1e8-a0f9ba30cb0c,김원석,wskim@samaneng.com,+821024216510,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ebe57e32-c4dc-4e45-85ad-12f4efa810db,김원숙,wskim2@samaneng.com,+821027973673,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a81919f-453c-43e8-bfbb-1012213198a8,김유진,yjkim3@samaneng.com,+821071340558,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a69deee-178f-4bc0-8bf2-b479494ea4de,김윤민,ymkim4@samaneng.com,+821027039383,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f63ece1c-9caf-43fb-9cdb-793207eb7d39,김윤성,yskim1@samaneng.com,+821090216533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fc64fc3c-bb48-4a73-b4af-55aa772afbc4,김윤재,yjkim@samaneng.com,+821088668963,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea77b5f3-caf0-4fd7-8849-2eeb3b154eed,김윤찬,yckim2@samaneng.com,+821050429362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,57981232-d119-4860-a69c-841c59b9430a,김은대,edkim@samaneng.com,+821093712091,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1d01da67-7f1c-40ef-83c6-728b5a366bd3,김은영,eykim@samaneng.com,+821058005057,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f84b09b1-2e14-419c-8f6b-b9f2a878d85a,김은이,eikim@samaneng.com,+821065624576,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1d81a679-314d-4f97-a558-9c593786d6fb,김은희,ehkim@samaneng.com,+821091767988,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3d495332-57a5-4580-ac72-16c2a89e1f21,김의섭,eskim@samaneng.com,+821092234294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,09dc3c1f-e941-48cd-ba8b-a9b92fe7422e,김의진,ejkim1@samaneng.com,+821024732979,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,61d7c4bf-39f9-4c63-8422-5316d972f33b,김의철,eckim@samaneng.com,+821093333981,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e0b72fc-80bc-4f44-9c7f-9b0d6d5c2757,김익기,ikkim@samaneng.com,+821027112324,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,04fb218c-fbee-415d-8621-556a081f7d1b,김익수,iskim3@samaneng.com,+821026554854,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4fd0f808-99ff-41ad-9d54-af203f3099ac,김익환,ihkim1@samaneng.com,+821047557167,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2c0e78e9-9c70-4b87-8648-8ae568b5a102,김인,ikim@samaneng.com,+821022148432,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a655855d-a421-45fb-95cb-adf0eb3bbdef,김인경,ikkim1@samaneng.com,+821072260070,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39c6beb3-5d81-4374-87e2-394e5fc7b0cf,김인섭,iskim1@samaneng.com,+821048376889,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7262b853-c4b0-4241-b3f1-3042ac834f7d,김인식,iskim@samaneng.com,+821073358897,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd5183bc-f81f-40d9-b009-394cc1616f5f,김인중,ijkim@samaneng.com,+821094300390,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6e6ad963-c479-4beb-ade9-6a892f6b4c7e,김인홍,ihkim@samaneng.com,+821037257138,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27c5e60e-4994-4b52-97c0-b769b1bf36d6,김임동,idkim@samaneng.com,+821040233128,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e5949ad-9308-4597-be69-0229a9d26bbd,김장온,jokim@samaneng.com,+821076304581,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d15f5177-0c16-4c80-b3fd-7b9cd881c07a,김장욱,jwkim1@samaneng.com,+821026343115,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9d3f9c9d-0274-4984-9419-1be62b509ebb,김장현,jhkim7@samaneng.com,+821054109890,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e67996e2-d70a-4b21-b946-142a028496db,김재림,jlkim@samaneng.com,+821044011498,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2e413c95-bb5e-40cf-bd22-dc6e949da02b,김재상,jskim6@samaneng.com,+821022022128,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c7dd3b7-f842-4d28-98c1-7fd8a044221a,김재욱,jukim1@samaneng.com,+821050464080,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6361ade7-f9c5-4cd0-8fd9-862140a19fc2,김재원,jwkim5@samaneng.com,+821055589027,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d2d2c6d9-206f-4839-9fa5-7ef790be0780,김재홍,jhkim22@samaneng.com,+821037530035,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,770ddc52-4acc-4017-a903-6aade7c1be24,김재환,jhkim11@samaneng.com,+821062312968,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9e61280a-a6d1-4b31-9dd0-e77df3241afc,김재훈,jhkim27@samaneng.com,+821033857186,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b5a437b7-6f22-40a1-ae8e-5bae934853bd,김재휴,jhkim3@samaneng.com,+821036762726,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,300e7a32-0999-49b4-8f27-cda65eceb26d,김정구,jkkim4@samaneng.com,+821081485511,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62b59ca4-fb07-47b5-990a-dba61f07d773,김정규,jkkim7@samaneng.com,+821088501549,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2b67a7d9-862d-49c8-a434-5ca7a45d4447,김정균,jkkim3@samaneng.com,+821035339555,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c851f17-df54-43b1-ae30-5d9e7d60dea6,김정길,jkkim2@samaneng.com,+821048700905,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f3e1804-8f0d-420c-94e5-ff5fbd782614,김정덕,jdkim@samaneng.com,+821088253338,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a6d5e2f-ed36-4b9c-b765-ac9e475dcbc4,김정래,jrkim@samaneng.com,+821033782218,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d6283634-9159-4ecd-b121-930b952b3ca5,김정만,jmkim1@samaneng.com,+821088133519,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fb5e0c30-65a2-4b99-bd25-8c6498bc356f,김정미,jmkim5@samaneng.com,+821075504914,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1b1fb93-0ed1-40fb-bf15-1c9ade719dfb,김정민,jmkim6@samaneng.com,+821044059118,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aaddd457-2e2b-4dca-a7f6-5d595c220296,김정민,jmkim@samaneng.com,+821076154270,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,79321be5-2bad-4ca1-88cb-0ef8e313afe5,김정배,jbkim1@samaneng.com,+821088464419,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e5641145-cb25-40d9-be05-6cbce0d02e12,김정배,jbkim@samaneng.com,+821020158909,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34ed66a1-8b39-4d62-a89b-8f085743d721,김정아,jakim@samaneng.com,+821091220885,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,642228c4-4f2c-4437-a74e-7e47d91c49f5,김정원,jwkim@samaneng.com,+821035422285,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0bc02290-8824-4a0f-83b4-98f8c5c0a546,김정은,cukim@samaneng.com,+821063735630,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,baf4e309-204f-4cd0-af1b-a4b09e2da82f,김정태,jtkim1@samaneng.com,+821040070003,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,954bca51-57b7-4bf2-a92c-2d8bd61acd5a,김정태,jtkim@samaneng.com,+821088377577,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c731db9a-9b59-4926-93cf-effa2721ffed,김정현,jhkim10@samaneng.com,+821071092100,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7a4a3c53-feb3-47a2-a9f1-63a3f76077d9,김정현,jhkim30@samaneng.com,+821071055686,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0986d9a-18cf-43a3-9a41-c639111b35d6,김정호,jhkim1@samaneng.com,+821064888645,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cab70f18-3b8f-4f6b-a738-8e94c0c38d98,김정훈,jhkim24@samaneng.com,+821044137802,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30f48df4-f7ed-4633-b974-702545985a78,김정희,jhkim15@samaneng.com,+821045039184,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1c55c357-6fbf-4b38-9a83-fe54ea17e750,김정희,jhkim4@samaneng.com,+821048141465,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fb86fea2-4be9-47c1-8844-2473490e64d4,김제숙,jskim10@samaneng.com,+821028583831,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f1d15ed-1e7f-408c-b63b-6924725d0a83,김제웅,jukim@samaneng.com,+821050572452,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dd2c6f54-b594-4a1f-9091-1c807092e736,김제훈,jhkim20@samaneng.com,+821033633757,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fec42ee3-1fd8-44b6-b880-26cf6a59fb6b,김종권,jkkim1@samaneng.com,+821071349869,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ef18a403-34ad-4bef-bd49-3651904ffa41,김종규,jgkim@samaneng.com,+821046512825,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c1df545e-49b0-4fc1-9c45-e130219d017f,김종남,jnkim@samaneng.com,+821052304436,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4bf8595-50dd-4bd8-8089-a55cd5539a04,김종대,jdkim2@samaneng.com,+821026180787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0056d6b0-b73f-41c8-bd81-12867d13b88b,김종문,jmkim4@samaneng.com,+821077858373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,53b8f3f2-f1f2-4387-854b-ef48a6f501c5,김종완,jwkim6@samaneng.com,+821049190035,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ad831d2a-2cde-4d14-9d58-2635c536d77c,김종우,jwkim8@samaneng.com,+821074041992,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27e2a894-9bc1-4ff0-b195-509d02fe7fc1,김종준,jjkim4@samaneng.com,+821036342791,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1a363f17-29e6-4892-a09e-06fbd02ecb78,김종혁,jhkim2@samaneng.com,+821094870188,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3691b2fa-3b14-4349-accb-7f2c6df2247f,김종환,jhkim9@samaneng.com,+821099110475,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a9ef9c48-ca80-4067-8748-a17af2d51e04,김주신,jskim9@samaneng.com,+821038388411,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b54685cc-6714-4b86-93a4-84e3da110de2,김주찬,jckim3@samaneng.com,+821041264612,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fbcb10db-0ffb-418e-bd21-315ed8b8f070,김주철,jckim1@samaneng.com,+821086200618,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf89f839-86cb-455d-8994-e06705e64e73,김주철,zckim@samaneng.com,+821051561027,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2477abdf-c996-4b95-86c9-6ee93a2cad4f,김주현,jhk@samaneng.com,+821091409714,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fbb18c9-57e6-451a-bfce-da98f3bdac2d,김주형,jhkim18@samaneng.com,+821040303759,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76ab1ff5-64a7-4c8b-beec-57324f576778,김주호,jhkim28@samaneng.com,+821026664810,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b01bc4d8-3511-46a5-8eb4-91803457c998,김준규,jkkim@samaneng.com,+821028987994,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5cbc987b-866d-4cbc-a25f-3a516d0b835a,김준성A,jskim@samaneng.com,+821088989897,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,988efbc2-c1c2-4237-8965-7698393992ec,김준성B,jskim8@samaneng.com,+821096699837,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39c41fb2-5f3b-4a89-93aa-ac781a61d2cf,김준우,jwkim4@samaneng.com,+821088786097,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fb9223df-dab7-4bf2-b6fa-f7c6d7153cfc,김준일,jikim@samaneng.com,+821024195193,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,43c3d687-42f7-4a0e-981d-db29631a2c97,김준학,jhkim19@samaneng.com,+821065591893,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,43d9dabb-f7c9-453f-9a27-58592f1a74c7,김준혁,jhkim23@samaneng.com,+821099739237,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17779a92-e6bf-4f9b-86b3-a2f60750d39e,김준혁,jhkim6@samaneng.com,+821026349393,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fdc9641-2323-4f5f-878b-f906af2ad5b7,김준호,jhkim29@samaneng.com,+821034453632,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fc5e746-4c86-4b0e-b29e-2c7bcc32fbb9,김중기,jkkim6@samaneng.com,+821054134413,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6380ab8a-6e0c-46f6-9b65-657879c062bc,김중석,jskim5@samaneng.com,+821036040285,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4adad9be-17b7-4d05-b532-fa2983930762,김중재,jjkim3@samaneng.com,+821088250352,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,690fa3de-8e67-4d28-9657-c04620a18145,김지수,jskim4@samaneng.com,+821098523213,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e5151b2-2903-447a-ad8a-309de0f6730d,김지열,jykim@samaneng.com,+821073312716,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,170c6c9d-30d5-4d54-afbe-fdeb29dd99f4,김지영,jykim6@samaneng.com,+821027103280,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44813202-28de-4709-b1d0-385bd02fc0b1,김지우,jwkim2@samaneng.com,+821032414565,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2dbc85a-29a9-4dd1-aa64-8c90cd4ebfaa,김지현,jhkim8@samaneng.com,+821089802012,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8b14f41f-85e2-4514-b1c9-2edd59f100df,김지혜,jhkim@samaneng.com,+821020518415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d6125c34-163a-46f6-aeed-37ebe808afbe,김지훈,jhkim5@samaneng.com,+821042200068,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0226b8fa-add1-4afe-880c-383b362639da,김진섭,jskim3@samaneng.com,+821047243201,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,65e1b6e0-b5e4-4d5c-aaa6-9896babcedd6,김진세,jskim11@samaneng.com,+821022213240,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc50d3db-f28d-4912-b587-c50739a15cc2,김진욱,jwkim3@samaneng.com,+821040184427,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,170857a9-32e2-4c58-9911-e39cdf2e0e49,김진율,jykim2@samaneng.com,+821032325126,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,65ae680e-256a-4029-90ae-8772ff6c6f35,김진찬,jckim@samaneng.com,+821087537484,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,78f651bb-829d-4290-ab27-3d3ed27c67c7,김진철,jckim2@samaneng.com,+821077347342,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,462cfff0-8ea0-4fae-9374-562942c80194,김진혁,jhkim16@samaneng.com,+821093469029,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,204227d8-f3aa-4478-a8a3-2d23adb57921,김진현,jhkim26@samaneng.com,+821063265624,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8707f4ec-0e78-4673-af34-44240970a079,김진환,jhkim21@samaneng.com,+821091009329,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,253fa02f-cfe4-4c23-a943-19be3b529357,김진훈,jhkim17@samaneng.com,+821029642740,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1355c700-b6b6-4dd9-90dc-ad824392373e,김창업,cekim@samaneng.com,+821038034302,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6356eeb4-4855-49f5-9784-751cb017345b,김창환,chkim3@samaneng.com,+821033777219,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6e11aa75-7446-4ad5-90be-0e1b89a9f7a8,김채윤,cykim@samaneng.com,+821090060696,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,acfec4f8-4589-4dec-9915-59f5c3ecd04b,김천주,cjkim@samaneng.com,+821052218962,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f8953aa4-9543-4e6c-8324-c899e52b9f20,김철규,ckkim@samaneng.com,+821051126303,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,08dc823d-6d9a-42e3-9900-e69dd062f0f2,김철년,cykim1@samaneng.com,+821092894157,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0a9cb22-adef-40f6-a43e-c8123207278b,김철호,chkim@samaneng.com,+821023295175,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4077eb5e-fe13-4e62-8a85-5eba3aa70e1f,김치은,cekim1@samaneng.com,+821086845220,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ab9e960-d4c1-46e2-8e7c-290bcf9d861f,김태상,tskim1@samaneng.com,+821097895820,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3d2b24d-fd04-4d4a-95ff-ba29cfbd0273,김태용,tykim@samaneng.com,+821020537900,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f8335c7-36cd-44b8-afca-b5999585e809,김태욱,tukim@samaneng.com,+821020621362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e319818-444a-4091-bce3-a038b044672c,김태헌,thkim4@samaneng.com,+821087359566,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,755c9e82-4030-4100-bab3-26e7a8ba8d75,김태현,thkim5@samaneng.com,+821022639374,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e1bf9b4-cbe9-402a-9aac-36f69f89e37c,김태호,thkim@samaneng.com,+821027162714,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6b011ebe-0057-4f2b-bf99-b5bf7ea31365,김택규,tkkim2@samaneng.com,+821041849860,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ceb29a5b-9ee4-4b7a-8f6a-99fcd0341b3d,김택중,tjkim2@samaneng.com,+821075414700,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b38ff7c1-9093-42b2-b55a-ab536659f52c,김하은,hekim@samaneng.com,+821022016927,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,25662356-98fd-4d6e-95bf-411bc44e7431,김학성,hskim8@samaneng.com,+821031807624,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6a78222d-664f-43ae-9bbc-c04fb9138426,김학재,hjkim9@samaneng.com,+821062516285,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3b70ab2-b677-46c8-8385-a2bcd9aeef53,김한별,hbkim@samaneng.com,+821046010554,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c9f1862e-501e-4269-b5a7-2d9370607ef2,김해강,hkkim3@samaneng.com,+821051129934,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,88a6c787-6546-4f7a-ba1f-e3519e179ff7,김해동,hdkim@samaneng.com,+821099431841,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a28f9533-b8bc-4bba-9d6d-eae001dbd16b,김향숙,hskim12@samaneng.com,+821052729853,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8b2addb7-8c64-471e-94ec-97b5001b8c7c,김혁,hkim@samaneng.com,+821086412247,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7df22d12-0d6a-43d9-ae20-1476e17ea9d6,김현경,hkkim1@samaneng.com,+821091637293,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a241b09c-46ce-4064-b1e9-96289bc13bed,김현길,hgkim2@samaneng.com,+821063232111,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4863879f-6200-41be-976c-722a019a9009,김현민,hmkim@samaneng.com,+821077411162,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c3839ec0-4db2-48fe-833f-2e988be28a70,김현섭,hskim7@samaneng.com,+821032334984,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2977e3a4-1085-4290-bbef-f0cb5c652d20,김현수,hskim11@samaneng.com,+821026598192,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2075a0b-0ab9-4577-9821-99507729f03b,김현수,hskim9@samaneng.com,+821047629447,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,592fecab-301f-44e1-8564-35da0f8e49db,김현아,hakim1@samaneng.com,+821021756820,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fc9f9aa6-b4df-4ca0-8373-1512b1971c9d,김현아,hakim@samaneng.com,+821024968851,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,939628c1-6498-4fc8-a5e5-e20a2dec3807,김현철,hckim@samaneng.com,+821036382509,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1818cabc-c043-49ff-a890-7b5503b488f2,김형건,chunryung@samaneng.com,+821026843441,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,843b1665-3458-41ea-94c9-5f8ed35cf6c0,김형규,hgkim3@samaneng.com,+821063454164,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d9dc8303-876a-4046-bd60-27871a7881e9,김형기,hgkim1@samaneng.com,+821038123662,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9aeaccbb-57b5-417a-945f-5899610a9f1c,김형배,hbkim87@samaneng.com,+821063430687,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fafa80f7-ded8-4bf3-bcd3-c8a47a0ace1f,김형준,hjkim11@samaneng.com,+821024276169,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9982dba7-056e-4a53-bc1f-04cf9e6c6a09,김형준,hjkim2@samaneng.com,+821054135824,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bfad7caf-0949-4853-acaa-22967b0241a2,김형준,hjkim@samaneng.com,+821033367376,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2c6f5c16-182e-40fb-b1ef-0fa83f3a4ff5,김형진,hjkim7@samaneng.com,+821054783162,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ce113a4-4a26-4734-ba03-71bfc890866e,김혜미,hmkim1@samaneng.com,+821045194656,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ca352ce2-b8ba-4bee-a8c2-73221c5b8a1d,김혜민,hmkim2@samaneng.com,+821087278228,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e2132b43-1773-4514-9fd8-13386f3c378f,김혜지,hjkim1@samaneng.com,+821034552637,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4d61ed5b-0761-438d-88f8-bbad8de70ffb,김호영,hykim1@samaneng.com,+821088857303,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e64e3f4-949a-4960-a0f9-5644da441b18,김호중,hjkim10@samaneng.com,+821085671105,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5b091add-12eb-4cc5-8f6f-6923de7f5743,김홍석,hskim13@samaneng.com,+821067624742,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d9ee669-9d99-4e6e-ba13-102ddf829c7e,김홍석,hskim4@samaneng.com,+821022106995,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d609d703-5f04-42f8-991d-54568101bd16,김화영,hykim2@samaneng.com,+821048055564,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f75658bd-5fa6-4477-ae37-de824e4fc48a,김화영,hykim@samaneng.com,+821063066365,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4c5a726-78b3-4b90-b0ad-ee4c5fa93e22,김효근,hgkim4@samaneng.com,+821036125958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,18614ce7-7af4-4b57-916c-54b0f21d5853,김희각,hkkim2@samaneng.com,+821064090527,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,13734374-cfce-4348-b948-f9e3b6d6ba61,김희석,hskim3@samaneng.com,+821053752356,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c7c7f789-8227-44f2-a012-8f2119c43d2a,김희선,hskim@samaneng.com,+821032135678,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b913264d-e4b0-4a4f-94a8-37195171ca1e,김희찬,hckim3@samaneng.com,+821055304142,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f851ae0c-47dd-438a-a8a9-0b72a897a387,나광호,khna@samaneng.com,+821062167055,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07b4a17f-b228-4539-9bbd-602c71b14704,나금란,krna@samaneng.com,+821043447111,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d6d2764-e706-411f-8488-dcae27012440,나대성,dsna@samaneng.com,+821051963573,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d77b8c0d-8f44-42f1-bab6-d87a6981c6e8,나선채,scna@samaneng.com,+821041380991,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,876db251-2c82-411a-a15f-035323480316,나성희,shna@samaneng.com,+821074421136,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3c56ccf6-d3e0-44a7-aeb6-c461c06c9f5b,나쉬,reyes@samaneng.com,+821058731034,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3ef1bf15-4dfc-4af9-be59-abbcdb521e2e,나영희,yhna@samaneng.com,+821099018815,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ce827500-27f2-467f-ae3c-2150c171758f,나한범,hbra@samaneng.com,+821052840504,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f58d36c4-cc20-4c0e-a646-0d8bffce528b,남건호,ghnam@samaneng.com,+821030804269,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6f841095-6261-487e-9639-6fb7e80fda91,남궁영환,yhnamgoong@samaneng.com,+821062720463,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68529429-5dba-46c9-b99b-4717f3b7b0dd,남명우,mwnam@samaneng.com,+821048267410,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,61043d41-e829-486b-8b45-6a4a1cf23eec,남웅비,wbnam@samaneng.com,+821090001831,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,09d58fd7-a7a5-4f71-b897-2159909d945d,남윤우,ywnam@samaneng.com,+821025271627,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d0cba740-e1a6-469a-ae7b-615cab2c0477,남일우,iwnam@samaneng.com,+821087299057,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1047adcf-f508-4931-b062-63d1eedcd93b,남재준,jjnam@samaneng.com,+821095115053,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aa67bd95-30a0-4cde-8bf7-0d4bcce81ca4,남지호,jhnam@samaneng.com,+821023099708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,532a010a-de9a-4dd8-aa67-c26c85a97e0d,노경희,khnoh1@samaneng.com,+821092342479,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a37df24-7a8d-4ba4-87d1-c9fba91e1a0c,노근호,khnoh@samaneng.com,+821087757549,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4d3a59e1-ee5c-4e39-93de-4783daa542c3,노남욱,nwro@samaneng.com,+821023836752,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,675d2a6c-7e14-4fef-94b1-a551dc25739e,노동환,dhnoh@samaneng.com,+821097857963,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3cbfc2b3-1bb2-4b17-92a3-b225bfe9098c,노성호,shnoh@samaneng.com,+821032570786,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1faec360-34db-44b0-89ae-baed54ab0e2c,노세종,sjnoh@samaneng.com,+821053811908,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d86fa5ff-cb29-4ae5-95a4-d3c882c15b3c,노윤경,yknoh@samaneng.com,+821096333952,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2103316-6fcd-4436-9ee2-82b32f1f7306,노인호,ihnoh@samaneng.com,+821043050382,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,acce5dae-86ed-424b-b7ba-36515e0ad584,노정훈,jhroh@samaneng.com,+821029112075,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6316af8b-0441-4974-8b36-25e1ec92dae5,노주환,jhnoh1@samaneng.com,+821087880569,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b317ca8e-9157-4c98-92b5-ca470562a52b,노해성,hsnoh1@samaneng.com,+821063343618,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e44ad35-2cf8-4509-bd84-510ba86b2152,노현주,hjno@samaneng.com,+821054475248,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,612810fd-cf9e-4938-bc4e-fda1c11ed1ee,노호석,hsnoh@samaneng.com,+821067886517,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,81e2695a-b376-4293-a6e5-0266dbe57497,류경애,karyu@samaneng.com,+821093220276,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b635a3eb-8913-47eb-8159-41e4e6d194a7,류나경,nkryu@samaneng.com,+821089673679,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c2a0195-23db-4911-9ac0-659d7a1cae08,류동균,dgryu@samaneng.com,+821034880959,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c225e5c-23af-4472-a984-bdfed9446e98,류소열,syryu@samaneng.com,+821053556530,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f35ac3ce-10fd-452b-bba4-a5f110db02ae,류승하,shryu@samaneng.com,+821052713122,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,faff8ac8-549b-4c19-99e9-02a0a21b5916,류아현,ahryu@samaneng.com,+821042319173,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75c2a348-3166-4087-85f8-39e5c687dd48,류정현,jhryu@samaneng.com,+821047653593,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1a6f7ae2-67f3-4061-80bc-b35713efa678,류창수,csryu@samaneng.com,+821047558494,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70d3366a-46a9-4a4c-857b-a32ee3d74fdf,류태열,tyryu@samaneng.com,+821045597247,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f53bd3a6-565b-41ec-aafe-a42f06d14b70,류호진,hjryu@samaneng.com,+821055359442,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,268992d2-62f7-4ca8-b48c-1f6f3e594fbb,마길동,kdma@samaneng.com,+821097553010,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,db78c820-69b6-4592-a162-bc57da4815d2,마아람,arma@samaneng.com,+821099115828,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34aec425-eb92-4d13-9fdc-5ea8952fd9ad,마준혁,jhma@samaneng.com,+821031377254,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,93bdcb15-a12d-4c0e-b282-3970f726f955,만경록,krman@samaneng.com,+821026943519,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ae9e732d-b9bd-4f01-b4f3-b50d45169223,명지홍,jhmyeong@samaneng.com,+821028017158,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf0c9f8f-2071-4ad2-ac7a-fd5ce761f02b,문경식,ksmoon@samaneng.com,+821054959217,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,84929a5a-6578-4fa3-9147-b30d361c5f73,문광욱,gumun@samaneng.com,+821024904121,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bc0589f5-75f9-4e8b-94c5-a08a04b267ca,문규정,kjmoon@samaneng.com,+821033303347,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,803d9f66-2e8e-43bf-9d16-6d631bd977b4,문기주,gjmoon@samaneng.com,+821033662669,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,72b4cfbf-5f8c-42bb-9489-ddda19fbf58f,문미애,mamoon@samaneng.com,+821091601257,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e2ce5179-ed1c-48cd-80a2-bf19a191bc65,문병묵,bmmoon@samaneng.com,+821036412817,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9e03ac3d-b6cb-4ecc-a659-768d4a8e87d7,문병창,bcmoon1@samaneng.com,+821045746325,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,47fbfdb9-a58f-485a-8a0a-9b5488f9b908,문병철,bcmoon@samaneng.com,+821047818999,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71fa2410-71c6-4c68-acfa-4e72dc9edba3,문상봉,sbmoon@samaneng.com,+821024909339,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2e920d9b-404a-42f8-ba8f-7e17e3e97cc6,문석준,sjmoon@samaneng.com,+821088560664,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d9fa5da9-636f-460e-99e1-2c18f620ce3a,문성진,sjmun@samaneng.com,+821062482889,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f35feba-e8fe-4bc8-9abd-9caf51900291,문소양,symoon@samaneng.com,+821020845340,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d41720e7-54ff-480d-9e6f-e69b5d55ad02,문수혁,shmoon1@samaneng.com,+821041650386,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dfd4c028-444e-4752-abed-747b294398d3,문영란,yrmoon@samaneng.com,+821033961995,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4382742-857f-4678-a195-a91f0b0b4937,문용주,yjmoon@samaneng.com,+821062938431,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d81a6b75-2d88-4012-adfa-2759bb952311,문재훈,jhmoon1@samaneng.com,+821066299698,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe33b320-c1f4-4e66-ad20-db43585b2744,문제현,jhmoon@samaneng.com,+821082594387,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0d0b902-7239-48ae-ad9a-10cc87f5a5d7,문종근,jkmoon@samaneng.com,+821099275423,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2040e5f1-5480-48f2-9dbd-95e4eae1f356,문종천,jcmoon@samaneng.com,+821023857653,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2b6da602-1fe6-4aec-bc5c-9c24c0cf9792,문준석,jsmoon@samaneng.com,+821097727235,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e9a6604b-ec10-4026-957c-0285181b4e73,문창록,crmoon@samaneng.com,+821041132072,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0994ebb0-8307-46c9-8ce3-36a86ae6dee7,문천수,csmun@samaneng.com,+821045396726,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,56c226be-76f0-43d2-9d36-573fa8f50721,문현석,hsmoon1@samaneng.com,+821082387443,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46b3276b-4096-483b-be06-2c0f1ce6b107,문현주,hjmoon@samaneng.com,+821047630231,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f248e0d8-9366-4716-8f18-72d84a5787e6,문형장,hjmoon1@samaneng.com,+821043407538,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1b90a39f-b6af-46c0-98d2-bc26e8e53c0b,민경진,kjmin@samaneng.com,+821022133962,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,132195f0-2a87-4738-a49c-321b8625da27,민동욱,dwmin@samaneng.com,+821057697210,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c29e060a-64ac-45e1-a69a-4d8e2f82c2c1,민만경,mkmin@samaneng.com,+821023619157,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98bfe9fa-2855-4087-bc3b-b7ac1a214a47,민범홍,bhmin@samaneng.com,+821027428874,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe790a88-8d12-497f-9f5b-d069b2f366cb,민소연,symin@samaneng.com,+821056171972,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27350814-74c9-4398-8e21-5cb05c308865,민식,smin@samaneng.com,+821025713707,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d1e7f343-3b8a-43af-b72f-223844a8a533,민진기,jkmin@samaneng.com,+821062920726,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7e746741-305c-4db6-8fa1-a1e035052256,민진홍,jhmin1@samaneng.com,+821053564938,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea4cf607-9a86-4191-9a9c-1c575ab17fa5,민진희,jhmin@samaneng.com,+821074456711,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ac4abab3-9635-4f00-8e62-8f5a5420a46f,민창식,csmin@samaneng.com,+821099126711,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec4ab7d4-99ae-4c43-a923-5e94572e30cb,박경근,kgpark@samaneng.com,+821049102259,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e6f90ca0-0dfb-4aca-a903-b5da7a175914,박경원,kwpark1@samaneng.com,+821045874107,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cb5ca6f5-a683-4d00-b125-e12162f0b54d,박경원,kwpark@samaneng.com,+821088019786,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,13c9a141-5b6a-4b5e-bd02-b8217b76aadb,박경태,gtpark@samaneng.com,+821072220262,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e7197d1-5821-48a8-bde2-b1c5889db123,박광수,gspark2@samaneng.com,+821027117013,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15ca2ff6-ba5b-4a1e-b23d-bda0187b2586,박광욱,kupark@samaneng.com,+821022219276,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,255205ae-18cc-404b-a5a4-6723a972e4d6,박광현,khpark4@samaneng.com,+821094658370,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c14871da-e8f7-4870-bffa-77d1940d6e48,박광희,khpark1@samaneng.com,+821056698623,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,74b83637-0856-4836-a512-d6f27588f1be,박교,kpark@samaneng.com,+821046099213,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5a888cb3-7b8a-4c3c-9c83-f92245375962,박귀한,khpark3@samaneng.com,+821031181394,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d4b7dfb-edf1-4b0a-9f14-bac4f418b66e,박기순,kspark@samaneng.com,+821025340336,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0cbe18cf-3cec-49ac-bcb7-2fefe6e09946,박기현,khpark5@samaneng.com,+821086096603,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a1f2a0a-1b56-4f2b-8a15-5d76b5894fdd,박길상,gspark@samaneng.com,+821038349701,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,58f0c56e-e0bb-4840-b87e-6b708c0de529,박노석,nspark@samaneng.com,+821074631163,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b8ddbfd3-92ee-4cc9-b50d-77aaade63ae0,박대정,djpark@samaneng.com,+821072756448,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,00c39007-0f54-4c72-bc63-ea45fa5cf988,박덕재,djpark1@samaneng.com,+821062813258,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,23c04670-6da6-4f99-9c86-7afe3ca4fecd,박도현,dhpark@samaneng.com,+821071842894,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4360cc7-766f-4241-8b9e-6b36c56bbb27,박동길,dgpark@samaneng.com,+821023802809,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55a3d0d8-7a68-40da-bccc-9fb395a5f003,박동열,dypark@samaneng.com,+821089224270,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b8d59266-27eb-4fab-96d9-17b67038389b,박동인,dipark@samaneng.com,+821033543824,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7a6211ed-322d-4a51-b496-97183a7e5dc2,박동헌,dhpark1@samaneng.com,+821086152891,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ccefd53-c769-441d-97fe-20a157546652,박문범,mbpark@samaneng.com,+821023303001,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6eb707e0-1159-41f4-984f-385a48dc2478,박미숙,mspark1@samaneng.com,+821043681479,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d8d8abea-29e4-4675-90e6-80120c6e48af,박민정,mjpark3@samaneng.com,+821020382963,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc114072-3d93-4be9-880e-ab95854726e5,박민지,mjpark2@samaneng.com,+821055270566,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f995dabc-b393-40d7-a3d8-3f4cfb5a286f,박민희,mhpark1@samaneng.com,+821022821560,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8d5aa43c-475c-4405-9f81-046a11e69855,박민희,mhpark@samaneng.com,+821054057301,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,01874ff8-b166-42b9-9b16-0a05addfe534,박보경,bkpark@samaneng.com,+821034727743,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,af1fa080-86d1-43f2-ba33-48a04510da26,박봉기,bkpark2@samaneng.com,+821032718255,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5aa503d1-7d3d-4c2f-bfbc-be67de127bdf,박사무엘,spark@samaneng.com,+821096401710,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9660d226-9e4f-423a-8ed2-05a846858dc8,박상민,smpark2@samaneng.com,+821043572663,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e65429d-6ac0-489f-8d00-90a0567357c6,박상수,sspark1@samaneng.com,+821022729696,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3d941d9c-abf5-43eb-926e-92687d366269,박상원,swpark1@samaneng.com,+821098876651,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d6302e43-6e26-4878-87fd-0ea5d2b6444f,박상제,sjpark2@samaneng.com,+821020399717,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a093b516-7bb9-48f1-8165-9628d1087b0e,박상준,sjpark3@samaneng.com,+821036180462,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f124b95-b83b-4bdf-a4d3-ba1589100ac7,박상준,sjpark@samaneng.com,+821091171092,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9802d6d6-7653-4fbd-90fb-bf926bf1136d,박상철,scpark@samaneng.com,+821092379869,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1da7faa-27af-4113-953f-74dae355d675,박상호,shpark4@samaneng.com,+821090592649,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6bda230e-4405-457e-9b85-40f186043f62,박상훈,shpark7@samaneng.com,+821020942887,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,899b8475-99b1-4781-8a4d-b474f0489571,박상흠,shpark6@samaneng.com,+821040126890,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,af32bb21-e9bf-4994-9768-a68177b23ec2,박선량,slpark@samaneng.com,+821025730495,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,640cabae-d0c3-4f5e-aa47-4e36ddb33132,박성걸,sgpark2@samaneng.com,+821062136849,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46a77d2a-4d28-48b7-8fb4-702359fbf8d1,박성록,srpark1@samaneng.com,+821067386768,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0c266c71-7e5f-448b-ac2a-af11903ee650,박성섭,sspark@samaneng.com,+821034053647,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f739c8dd-f34d-4b38-8504-0cc3f5dc48a3,박성수,sspark3@samaneng.com,+821062664583,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4df8ee7f-e0e8-4d1f-b6e3-f7c0082d2742,박성연,sypark3@samaneng.com,+821091861109,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea68a138-e524-47fe-97a2-0f23510ab615,박성인,sipark@samaneng.com,+821082506092,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4dee64e-3255-4552-ad3b-fe5b58c754a4,박성주,sjpark4@samaneng.com,+821093972262,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0fd3eaf2-f9ba-4576-b3b7-1d539f142364,박성혁,shpark11@samaneng.com,+821071644317,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0e6f7cc-7db0-4d7f-8393-90c518a6d6ec,박성호,shpark@samaneng.com,+821050965060,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0503aa9d-dad6-4193-9ff1-7a2a454dd3d8,박성훈,shpark1@samaneng.com,+821042304179,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3f631e2-7cca-4511-9c74-938f35ff981f,박세림,srpark@samaneng.com,+821055563907,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f481ff1-9841-446b-8830-e1f7b1e16474,박세은,separk@samaneng.com,+821096268942,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9ab34faf-1f75-4e1f-b0ed-0d01e9d94718,박세환,shpark2@samaneng.com,+821075655572,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,755eab4b-72a3-461f-97b1-297e202b22f2,박수빈,sbpark@samaneng.com,+821095450551,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f4d72c0-56f8-43d0-81b2-b349577ae21f,박수훈,shpark3@samaneng.com,+821020098561,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b72989ed-b351-42dd-90b7-3038245a4433,박순석,sspark2@samaneng.com,+821020622002,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,443c0b0e-37d6-4689-b205-603e51f1b7fb,박승건,sgpark@samaneng.com,+821063985103,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b61022be-71d8-43f4-b4c1-62bfe76a3a7e,박승규,sgpark1@samaneng.com,+821023020000,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,995a96bc-ec0b-45a0-a780-d0a8198af86c,박승양,sypark@samaneng.com,+821037489751,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b4009c05-2095-40ea-af29-fe1ef234ce92,박영규,ygpark@samaneng.com,+821062368462,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4628054f-c9b8-4491-8e90-c4eb7e39a1a3,박영남,ynpark@samaneng.com,+821092997219,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7ff9477a-aded-4c62-afca-9d2510376a2b,박영문,ympark@samaneng.com,+821094278405,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76e263fa-bff4-467d-b9cd-41439f335415,박영산,yspark1@samaneng.com,+821081555983,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d01771e6-e236-4921-8458-8c57f02dc3ee,박영선,yspark2@samaneng.com,+821099268834,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9d3aea8d-a90b-420f-9aac-bf8d4451cf15,박영수,yspark4@samaneng.com,+821035764256,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5963b876-05ba-4325-99ce-43385c53f01b,박영욱,ywpark@samaneng.com,+821045158364,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8a4ecb35-d42d-4b49-ba7b-f617d1c27765,박영진,yjpark1@samaneng.com,+821039150020,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17fdeead-eda2-4994-a01e-4ab2b73df5d7,박영진,yjpark@samaneng.com,+821047896241,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,795f2718-a9f4-4be2-b9b9-b55224d0cf3c,박용규,ykpark@samaneng.com,+821090714153,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5349aee5-c10a-4dbe-8ad1-7bf5172e584d,박용철,ycpark@samaneng.com,+821022070788,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5136f148-8157-4f78-bbe5-491d51ad9422,박원배,wbpark@samaneng.com,+821039206360,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,50a71565-0e26-4961-b9c3-b0f83dad8c8f,박원준,wjpark1@samaneng.com,+821044151134,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,777ac05a-1e20-4928-a780-900aa1dfb918,박원효,whpark@samaneng.com,+821062236917,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,31903221-0dc7-449f-ae7b-cc73ca5a2df1,박유진,yspark@samaneng.com,+821075119910,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e0cda0c3-ee53-4639-be48-17792b4fd4da,박윤,ypark@samaneng.com,+821088901082,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c8ef625c-071d-4fef-bd32-49d27da5382d,박은정,ejpark1@samaneng.com,+821021738207,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ab70e92-5e07-4d88-9753-acfffb3616b3,박인수,ispark@samaneng.com,+821096923737,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,64c4b52d-3722-48be-95dd-fe9464998ec9,박인애,iapark@samaneng.com,+821098978123,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71e84327-750a-4984-abd3-ceb3a06e0ceb,박인철,icpark@samaneng.com,+821064752723,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2b7cbb68-b3a7-481e-ade5-fb42d1c9dbcf,박인태,itpark@samaneng.com,+821052964906,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8854dc95-de30-41db-8f5b-957d3d6754c8,박일,ipark@samaneng.com,+821087518754,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19d6ca0c-c20a-4c9f-badd-2163726e917a,박일석,ispark1@samaneng.com,+821062468250,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,86a08555-8c6a-4c79-9cc6-1c87e7dd0d94,박장호,jhpark7@samaneng.com,+821063811173,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,313e9871-990e-4bd5-bb2e-b827116b3702,박재성,jspark9@samaneng.com,+821088004159,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c7a1b635-f0e1-4a66-96f6-0e91518b3345,박재신,jspark5@samaneng.com,+821047644337,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,182ea609-a950-4f8d-bcdd-58d8d447678e,박재원,jwpark3@samaneng.com,+821066400564,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d46029a-6fe8-41bf-9cdf-72ea63697500,박재원,jwpark7@samaneng.com,+821033950431,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,47095f81-21bd-4bbb-8bd0-eee5499d83b2,박재호,jhpark2@samaneng.com,+821052362687,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a4f9f9d-f19f-48ae-856b-64ce32ea56e8,박정근,jgpark@samaneng.com,+821072357672,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1cd40fad-5eaa-4339-905f-6b1aadad159d,박정근,jkpark2@samaneng.com,+821037455154,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5429110c-c4f8-47e8-b7cb-13e4c11471d9,박정석,jspark1@samaneng.com,+821037680974,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d7be51aa-5260-4e82-b948-f458428d1446,박정우,jwpark@samaneng.com,+821033664309,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,310f67f9-8cd1-4913-a1a1-6e1ff342fb92,박정원,jwpark5@samaneng.com,+821087562015,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,804f1aa7-0d62-4ca3-8844-3a3c4d3bee17,박정호,jhpark@samaneng.com,+821085211751,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,595b6f43-7a9d-462a-b7d2-ed4c22588c91,박정환,jhpark11@samaneng.com,+821034715897,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b616ade6-3dc5-4d98-a68e-680a686dd882,박정환,jhpark3@samaneng.com,+821025680344,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,221045aa-b8bb-4389-a5de-389e45b3feff,박제용,jypark2@samaneng.com,+821053782354,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dbe0971b-da24-475b-a9fc-d86fbe6c2e91,박종렬,jypark3@samaneng.com,+821027787294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,51ca7cee-8161-4bd9-ae90-18b37182de2c,박종민,jmpark1@samaneng.com,+821027773801,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd2c3a6c-fd49-4a3a-a2d5-101288c95f1e,박종민,jmpark@samaneng.com,+821063199689,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ca0b4b8-a1d9-41ef-80f4-61ecbf5bf39c,박종범,jbpark2@samaneng.com,+821053475304,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a26bf973-5344-47c6-b882-3a3ad3691cc9,박종인,jipark@samaneng.com,+821077346125,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ffc0c11-9bdc-4dc8-a393-87d53a12c617,박종현,jhpark12@samaneng.com,+821028496286,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aa799f75-64a2-4182-afe7-2afaea9e7601,박종호,jhpark5@samaneng.com,+821056401876,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a1ad9ad-1829-4f42-9b2c-03399be5f563,박종훈,jhpark8@samaneng.com,+821089666037,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15c5bb01-431b-422d-ba54-173fd0e510e1,박주경,jkpark3@samaneng.com,+821029626143,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a088648-ecd3-4cdf-acb8-5664070b0785,박준서,jspark8@samaneng.com,+821097305589,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3d4f6525-39d3-4828-ab20-95a4499745fc,박준석,jspark@samaneng.com,+821033772535,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,569276b3-6d22-43dd-98ad-9a3e9540c2b5,박준성,jspark7@samaneng.com,+821064741971,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,53d8f2bc-39b5-443e-af82-1b587dc32b91,박준영,jypark1@samaneng.com,+821086342623,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46bbf7a7-e4f2-4d79-8a71-27266e265d3e,박준영,jypark4@samaneng.com,+821042370855,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c6d040bb-7074-422d-8bab-6cb0b16e4cae,박준영,jypark6@samaneng.com,+821093162029,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da761ecb-44bf-4a4f-a08d-1528ddb8f00d,박준호,jhpark1@samaneng.com,+821034382034,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fedc829-4342-4cd9-b7d1-f7df3e9d9f4f,박준호,jhpark6@samaneng.com,+821040267231,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d92847fc-4c08-42a1-8dd9-21deeddf186f,박지나,jnpark@samaneng.com,+821077638505,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,439b60fe-3b55-42cb-9b32-b93f4dba8e42,박지연,jypark@samaneng.com,+821028775372,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c0588d36-d73d-45e7-bcd5-46c448413c8b,박지원,jwpark2@samaneng.com,+821087862280,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f327f4d-b6f8-4405-b372-0481ab92281e,박지현,jhpark9@samaneng.com,+821036371041,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b188269a-b46a-4fdd-891f-3476d5518696,박지훈,jhpark10@samaneng.com,+821050428725,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,25353f89-be0a-4b71-a943-3b1231dfe017,박진,jpark@samaneng.com,+821099138782,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1d457f8c-69ef-4d6e-b8c3-aa8c242d9733,박진규,jkpark1@samaneng.com,+821089072721,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f077f71d-693e-4ea2-8d55-a2ad1dfe7b55,박진규,jkpark4@samaneng.com,+821082680722,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,21ea40e0-f6d5-43a1-9ff5-fcfcb6ada994,박찬제,cjpark@samaneng.com,+821087234187,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ab64dd0-4d2e-43ff-b809-aa76636580e6,박찬홍,chpark1@samaneng.com,+821037195564,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a37601f5-ef07-4c9f-a5b2-cf5757d0f219,박찬희,chpark@samaneng.com,+821042920301,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6ede7c0-49c0-470a-9a3e-62f6613b8704,박창열,cypark@samaneng.com,+821038887763,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bdefd7db-1498-44d9-8d1a-e91a212290d2,박천원,cwpark@samaneng.com,+821052907748,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1da87bde-bb12-47da-93b4-e25c78c4accb,박철승,cspark1@samaneng.com,+821050251701,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fd4f913c-931c-4381-ae5f-7a00b92383e4,박춘식,cspark@samaneng.com,+821064805063,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e87c53d6-cc63-4156-8f4d-5e2a94d41dc9,박치영,cypark1@samaneng.com,+821095366030,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e791bfb-407a-44f9-bf69-53cbfeeae67e,박하연,hypark2@samaneng.com,+821054798637,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83651c2f-ede0-4163-a44e-5d76c0811bfd,박해균,hkpark4@samaneng.com,+821038893214,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3022a127-c499-4680-a890-32f42e79ce37,박해림,hlpark@samaneng.com,+821077471594,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6fe0b2cd-2ba2-4541-8c8c-567d060aeac0,박현구,hkpark@samaneng.com,+821067541320,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7f0d24ac-ddbc-4316-b44a-e4a0a6a73f7e,박현규,hkpark1@samaneng.com,+821030110580,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b80f87b5-1fe0-441b-8116-298243eedccf,박현규,hkpark2@samaneng.com,+821036649419,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1f3ef42b-37ff-4146-aa9b-083070334302,박현근,hgpark@samaneng.com,+821091777731,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e96ffa3-6103-403a-9086-b9fc6612716d,박현배,hbpark@samaneng.com,+821037648469,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ffb84ae-798e-4de5-81f6-bbb776ed2dac,박현준,hjpark@samaneng.com,+821073559652,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73fe52b2-5904-449f-b870-0d7d838bf5c5,박형열,hypark1@samaneng.com,+821032427445,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,21443028-004b-4e2f-b3f6-d990d54c5e89,박혜란,hrpark2@samaneng.com,+821050190688,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cffae801-a15a-4c95-bf2a-71ad17fe4a1d,박호국,hkpark3@samaneng.com,+821099412738,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a1b4a6ea-d783-43f2-8ded-dd9400c9dd73,박호식,hspark3@samaneng.com,+821038162914,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,13dd954d-58fe-41a1-a5d6-9d436ed86bf7,박호연,hypark@samaneng.com,+821053916364,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a60cbd14-6967-4a98-ac20-2e052f78b7eb,박희찬,hcpark@samaneng.com,+821053487866,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd687705-5319-4565-90b4-9d03e6028df6,반용섭,ysban@samaneng.com,+821020322644,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,96214aaf-27a9-42f9-9032-cd67477f6e97,방노성,nsbang@samaneng.com,+821042140409,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1bc09d0e-a667-427b-89f2-a61fc016b150,방승준,sjbang@samaneng.com,+821028863052,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1c400b7e-1e4c-41cf-b905-34bd68d2b67a,방시영,sybang1@samaneng.com,+821053122265,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,04da1f8b-9bfa-4f97-bfb8-f28df570bce4,방찬종,cjbang@samaneng.com,+821085363668,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44732a41-f01f-455c-a91f-6203dfe6f799,배경민,kmbae@samaneng.com,+821039945595,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6630bf5a-e981-4559-bddc-53d24607a7d3,배경태,ktbae@samaneng.com,+821079002679,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,424dbf12-4472-4f44-aa71-0ed344ac1a50,배기석,ksbae@samaneng.com,+821038382222,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,218ee227-3715-4614-9116-67c2bcdb290e,배길민,gmbae@samaneng.com,+821045981872,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,121cf97e-480a-48f0-a03b-9afab0f2d475,배도희,dhbae@samaneng.com,+821034145387,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c961f4af-8c3c-4015-b260-2246d2be92d9,배민경,mkbae@samaneng.com,+821091488648,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4be8e573-078a-43c0-9fda-1cf3b89a17a4,배민식,msbae@samaneng.com,+821038065442,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3631f243-6b0b-4b0f-bbdc-3eccdd87f9ac,배병관,bgbae@samaneng.com,+821033690323,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0871de27-5036-41a4-b33d-bcacdc7e19b1,배병탁,btbae@samaneng.com,+821095770674,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f8d1b7e7-8eb6-4b3e-a08e-a16ef26367ae,배승환,shbae@samaneng.com,+821062513561,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f89c96fd-adc3-40d9-b1fd-70834c3c0811,배을호,ehbae@samaneng.com,+821062011513,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,50ba8e05-a25e-4bb3-9add-79086c4d80cd,배정빈,jbbae@samaneng.com,+821020931767,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a2b0b63c-5573-41b9-a61a-c6b3cb0a197c,배정원,sdbae@samaneng.com,+821032354918,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,641dd1e7-66d6-424b-a128-cd5a1741bb19,배준식,jsbae@samaneng.com,+821062364643,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,abc1e09b-91eb-4e14-9779-564b3cff89bc,배지원,jwbae@samaneng.com,+821090216330,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e5eb4449-952c-4593-8b8f-5a5cf2766ef3,배지윤,jybae@samaneng.com,+821092277025,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,06f857d6-6a77-46f4-bbc2-703d39af8d34,배지혁,jhbae@samaneng.com,+821062194565,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ca7bae4-8474-444e-8ce2-4367edc2c9d4,배창국,ckbae@samaneng.com,+821047452578,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f3d54565-b931-4412-b515-8d4267d4a7d3,배한수,hsbae@samaneng.com,+821092638212,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d0b543f5-9734-40da-a266-a1310306030d,배형원,hwbae@samaneng.com,+821022275342,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,23f1ff83-2b3c-42e6-8f29-9f307811f15a,백순교,sgbaek@samaneng.com,+821085926933,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,65531e92-f0af-4442-a3c7-ee569d8c68c3,백승범,sbbaek@samaneng.com,+821035321252,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bc32d8b0-a388-41cf-a0f4-fe7c348ca817,백승혁,shbaek1@samaneng.com,+821052462493,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a45a829-1c44-4c6a-9f0f-d3cc5b1adffb,백승희,shbaek@samaneng.com,+821051961042,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,978dd57d-f7c7-4eea-8b11-3fb3c17cbc2b,백예은,yubaek@samaneng.com,+821021626928,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17c6b006-94ff-42fe-8542-97e238c92cf0,백운기,wgbaek@samaneng.com,+821053893268,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5fd15ae4-a6ea-4793-98d3-83840226246a,백운영,uybaek@samaneng.com,+821035424111,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,52b622a9-aed8-441b-a932-fe9f76bd7ac6,백주희,jhbaek@samaneng.com,+821091746483,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,399dca19-cdd3-4665-9a3a-b43a212fcb77,백태용,tybaek@samaneng.com,+821036168190,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e00be3ad-a274-4cde-ae56-2b4900eef70f,백효석,hsbaek@samaneng.com,+821046069861,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5d8c3783-267f-4726-b168-c5dba1c2963f,백희경,hkbaek@samaneng.com,+821085255520,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ded2e9c-df28-4a01-9c5d-ddfb738a1fd4,백희선,hsbaik@samaneng.com,+821054724354,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ad3ae55-ee84-4923-828d-6174b281307e,변기상,ksbyun@samaneng.com,+821022047835,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,22fbefde-482c-4142-8aac-04998d861943,변상우,swbyun@samaneng.com,+821025874533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ac7b0abc-1445-4de3-81eb-a655d001c7fb,변상현,shbyeon@samaneng.com,+821072800180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91a5d64e-8199-4e41-906d-d8e258b2e0ff,변성주,sjbyun@samaneng.com,+821075803864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a7ce6ef5-7362-4f6a-b79f-5b4741f4b506,변성철,scbyeon@samaneng.com,+821058958765,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4bb3b675-2114-4faa-a1c0-677a9e083456,변역근,ykbyun@samaneng.com,+821037451390,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,60f8f21f-ec46-440f-8d67-ec0f0b548d2a,변정석,jsbyun@samaneng.com,+821053005081,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3966c318-9f35-47bf-bea5-9d115f7b15ab,변정운,jwbyun@samaneng.com,+821082985922,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6cf1ea97-f5c1-488d-8606-0d8f5278fc5a,복진청,jcbok@samaneng.com,+821037372784,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2cf572b7-39ef-48b0-b76d-60835ff64a4f,복진훈,jhbok@samaneng.com,+821099848708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16450bf7-f416-4dc2-a55c-dfe5146bb0f2,서건,gseo@samaneng.com,+821046904334,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fdb0a0a-b99b-4a90-8558-0c624976e16c,서경석,ksseo@samaneng.com,+821034828400,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73234bb3-eaec-4eec-a2ab-6f9b16f73a90,서기섭,ksseo1@samaneng.com,+821027874449,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,63e8ad9f-2b6f-4faa-b8ae-3d47875748f5,서동석,dsseo1@samaneng.com,+821054624764,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,545187da-0973-4601-881b-7576574839db,서동수,dsseo@samaneng.com,+821076725889,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,312fa42f-bb9c-44b3-bd01-119ac31f9ef1,서동일,diseo@samaneng.com,+821092162143,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7b0fb7b5-a64f-4e6b-a659-4be7387e3790,서동진,djseo@samaneng.com,+821048545712,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf6d14e2-b945-4d52-9462-5f18488bf1b8,서미경,mkseo@samaneng.com,+821056205843,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,261c40fe-686a-4983-b7d8-5380ec2f0438,서민수,msseo@samaneng.com,+821045739303,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f4e78cd-3c79-4c0d-8886-39050e9a81a9,서순임,siseo@samaneng.com,+821092835049,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c5a3f05c-34ac-4c68-8bb1-a44cdf81ad58,서승필,spseo@samaneng.com,+821099062463,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,312c00d1-d6ef-4d45-96f6-4dfb2d92dbde,서영제,yjseo@samaneng.com,+821056066367,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8d6559a1-3a1f-4ffa-986f-efb12ba38a62,서우빈,wbseo@samaneng.com,+821039516956,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9532a5d3-69df-45ac-a313-93a81b2fad21,서유동,ydseo@samaneng.com,+821049294027,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,512d6bd3-1bf9-49c4-a46e-99c6df5f49cd,서윤회,yhseo@samaneng.com,+821077600403,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,055bd539-5ce7-4180-a4af-46c3840275b7,서은애,easeo@samaneng.com,+821083774536,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8768e2f-d95b-491d-85ed-d783c5b9fef7,서재희,jhseo2@samaneng.com,+821097114329,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e1e7b5f7-0731-4fd2-b2b7-37c7de5f14f4,서정민,jmseo@samaneng.com,+821088712572,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d238f0e-232b-4bea-afde-cf44b9b3f359,서정아,jaseo@samaneng.com,+821021072349,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bfefd442-f625-4537-8e72-56f919764ea1,서정택,jtseo@samaneng.com,+821022256854,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d49a9659-ac0e-4866-ab34-deb8ff3634ec,서태원,twseo@samaneng.com,+821096474197,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62548191-1715-459f-ac4e-38a86d711d6d,서하연,hyseo@samaneng.com,+821028640778,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7311850b-f943-4dea-bf62-d7dd21136778,서현오,hoseo@samaneng.com,+821038731090,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d68bdc2-5697-4b1a-aa1f-4a8deab0d7cd,석융원,ywsuk@samaneng.com,+821065577639,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8e7fb0c-148d-4a96-84e1-a1b32ca20b57,석재우,jwseok@samaneng.com,+821027764328,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46862b1b-aa7f-4eca-af94-0c1dec79d159,선현진,hjsun@samaneng.com,+821046132283,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07598f9c-5711-4ca1-99fd-3c15dce0de69,성기건,kksung@samaneng.com,+821054459459,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b4487c84-7e90-483b-afad-9e1e00d73f23,성기천,gcsung@samaneng.com,+821063315383,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd25bb84-6e7a-4ead-9904-6977a466de3d,성몽식,mssung@samaneng.com,+821077381347,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1b28ad9c-190d-4f96-91fb-da3508efc2d1,성봄,bsung@samaneng.com,+821062125561,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf4fdc12-f50f-4e9f-939e-0975dfb13b5f,성세현,shsung@samaneng.com,+821033808094,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,88795dae-39c3-4ac9-b25d-bf5beba5b4ee,성열용,yysung@samaneng.com,+821056477335,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d99888f0-5e4d-467f-ac5a-b7368703de37,소다연,dyso@samaneng.com,+821051533748,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f46c4d9-f149-4c89-8495-f27649e80ed3,소민수,msso@samaneng.com,+821094388541,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f615a848-8586-4ed6-bdbe-c69fc4540086,소순옥,sosoh@samaneng.com,+821033532379,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,48647595-fa33-42b2-b4a8-b1fc2d3af32f,소윤섭,ysso@samaneng.com,+821064148598,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a45f7be-8fad-4400-aa47-4dc6e30d44e0,소의건,ugso@samaneng.com,+821036217520,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f2749d23-4af6-4ffe-acd7-6bac6a3a3c07,손명덕,mdson@samaneng.com,+821054531909,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,23c09413-eda8-4bef-aee3-fd8effbaba92,손민기,mkson@samaneng.com,+821093710714,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,db5ef5b4-55bd-4760-b21c-a83d98317d36,손봉수,bsson@samaneng.com,+821055523977,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,152f814f-4b72-4bba-b526-f675e97ab53c,손석훈,shshon@samaneng.com,+821077325831,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0302df3f-67d5-4f50-9a27-47a60a406fe8,손성택,stson@samaneng.com,+821035802507,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73e34e5c-ed3d-4684-a634-1efebafe18a5,손영준,yjson@samaneng.com,+821088747985,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c25baab9-d023-4860-84cc-c62ac3be102c,손은환,ehson@samaneng.com,+821034798395,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,95ca8978-edd9-4b34-ad39-591f74e33918,손일민,imson@samaneng.com,+821098164016,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d31db777-8a0b-487f-b783-6dd6fcd59bba,손종욱,jwson@samaneng.com,+821087754750,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b3c59f91-4bb0-4944-8ae5-d2f138c8119b,손주열,jyson@samaneng.com,+821092599271,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bcd4b1b5-abb4-4dc0-b4c3-209bc64f7ed5,손주호,jhson1@samaneng.com,+821064165139,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ee14e977-edb8-4da3-896d-788e0dc72fdb,손준우,jwsohn@samaneng.com,+821033892283,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ce78096b-2ea8-4a97-a141-518664f27402,손준혁,jhsohn1@samaneng.com,+821094724329,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f24e6219-2a9c-40d9-8c6d-28e0adae29db,손진수,jsson@samaneng.com,+821083082005,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9dcd3c11-d98e-4dbd-b1b4-90bb0f1dd192,손창국,cksohn@samaneng.com,+821025600003,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6cfc42ee-9ccb-475b-ab6f-98801e0220a2,손채라,clson@samaneng.com,+821075588099,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2775b03e-b40f-41a3-b9a6-783749aad4a9,손태섭,tsson@samaneng.com,+821035475053,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d5083706-4be3-4a83-94c7-b0deca0a1946,송광수,kssong@samaneng.com,+821053373484,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0cf2e462-b85a-45cf-971f-d8ad49897eb6,송근광,gksong@samaneng.com,+821051387875,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,64c1c454-75bd-4d98-9b9e-217936c9abd7,송다운,dwsong@samaneng.com,+821050136984,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,03c6c847-41de-455b-af74-b241f5245723,송명주,mjsong@samaneng.com,+821054498126,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea35bfe2-bdc6-471b-8933-1bc0c64a68bd,송민경,mksong1@samaneng.com,+821033790061,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4af14dfd-7d76-4eaf-9831-e09b7b9010a9,송민철,mcsong@samaneng.com,+821089391992,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bace00cb-aa9a-40a4-b68a-3ad06b243dc4,송백헌,bhsong1@samaneng.com,+821024919255,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab46d1bd-3103-497c-b33b-05dce5da372e,송병화,bhsong@samaneng.com,+821066289988,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,32b61890-07f5-46c4-90b5-4fa44f9028e9,송삼규,sgsong1@samaneng.com,+821047405189,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,50f730fc-e868-47da-b6a3-5fa7e00f9888,송상민,smsong@samaneng.com,+821023508533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b194cbba-2d5e-4b23-99be-7b3973c9f085,송석근,sksong@samaneng.com,+821073319623,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,715c9a12-7c84-4da8-8328-bb58b903b907,송승호,shsong@samaneng.com,+821052394556,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6b2c4efb-6f98-45d9-bd2e-e9afe22bc94f,송옥주,ojsong@samaneng.com,+821071403316,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a2055940-5c7f-481c-a695-00c9c1127c1e,송용철,ycsong1@samaneng.com,+821081018181,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1df745d7-5b91-43fb-97b7-4709424beeea,송용철,ycsong@samaneng.com,+821093065600,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7951a7bf-7c98-4113-b8b1-10c801359e8e,송주하,jhsong1@samaneng.com,+821052398316,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c0c4dbb-a8f7-4194-86b1-621a1cd19ad2,송진호,jhsong@samaneng.com,+821036859467,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d07ed326-1c0c-47a6-9302-e31e83a1b285,송호준,hjsong@samaneng.com,+821050609375,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2a0f66f-3085-4a1f-b00b-5ffbe8a48544,신경섭,ksshin1@samaneng.com,+821054825693,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,195ddc30-d103-4c80-bac0-bcb89e0b8a4d,신계범,kbshin@samaneng.com,+821054247153,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c1a81ffe-f1f8-496a-b504-9a05542c9d8e,신광철,kcshin@samaneng.com,+821064261085,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,79eb4785-21a6-4f49-aa4d-a966b0e8b84f,신광호,khshin@samaneng.com,+821027727596,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f2c6d89-d01e-4d7e-8248-14cef4713b70,신기호,khshin1@samaneng.com,+821053548326,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6a87555-e19d-439c-ba1c-30188ce87a02,신대호,dhshin3@samaneng.com,+821053716201,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2d4577ff-d696-446d-a42c-e3abc801099c,신도현,dhshin2@samaneng.com,+821026024452,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5c5fa9a4-ad38-4a49-bd15-f152b128e2dd,신동열,dyshin@samaneng.com,+821074480247,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f4af814-175a-4bb5-970e-399059a69005,신동옥,dwshin@samaneng.com,+821036289950,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7bdae4fe-3d40-46eb-8255-17ee0d1f96e6,신동인,dishin@samaneng.com,+821093668184,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2c8c5e9-b7b6-40e5-9041-738c82a5f039,신동호,dhshin1@samaneng.com,+821072471113,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0c9ea24c-6b32-4a45-8b15-96e280715816,신동환,dhshin@samaneng.com,+821090088274,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9ccbc4ba-3a28-4aeb-9b50-0c086152a191,신동훈,dhshin4@samaneng.com,+821052355410,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19a0ed89-6deb-4faf-92dc-c917aa34a41b,신명석,mssin1@samaneng.com,+821072103596,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ccd75412-ffa0-4c68-8692-27be5e13b1ac,신명식,msshin@samaneng.com,+821037425822,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1a57420d-9959-42fb-af35-5e22037ee82c,신명자,mjshin1@samaneng.com,+821056406802,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7320e3a0-6d40-4b29-8ada-4f3be57ac81c,신명주,mjshin@samaneng.com,+821025354055,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8430e2c5-ef55-4920-bf1a-4481f50982d8,신미영,myshin@samaneng.com,+821086402872,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf611bfc-757b-4d30-9190-1e531e49a9a6,신배헌,bhshin@samaneng.com,+821082244199,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8f0c23e-4b79-46a4-9320-7923ca4d4e96,신선영,syshin@samaneng.com,+821038761878,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf51e80c-44e9-4170-a3bd-a1c611c63ffc,신순녀,snshin@samaneng.com,+821025329352,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,74c11623-4c65-4dfd-8e73-415496e47d73,신안식,asshin@samaneng.com,+821089867887,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7f7b50a7-9f64-4568-944a-22fb5c8cda02,신영준,yjshin1@samaneng.com,+821090170658,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6e1158be-b17e-4390-bdb1-c63e56f200e8,신영호,yhshin@samaneng.com,+821034428971,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd1dc659-b71b-4d2d-8c04-502849499f53,신예찬,ycshin@samaneng.com,+821080301555,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e5866cf3-ed66-449d-bb83-464e897ee471,신용희,yhshin2@samaneng.com,+821032570804,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e39278d-330a-4a97-8dca-1ed3e5e24d73,신윤섭,ysshin1@samaneng.com,+821092744798,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9093a436-5a5e-4a09-8f53-a1b4d213609d,신윤수,ysshin@samaneng.com,+821054629737,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,758aa92b-68f8-4d47-ad9f-2842a3d3643e,신은화,ehshin@samaneng.com,+821054797650,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,82afaae7-4712-4177-9eb4-9ef2750163a5,신인재,ijshin@samaneng.com,+821075273964,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eec70184-0930-478b-b60b-9c18d87ae4ec,신재원,jwshin@samaneng.com,+821064446997,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,95000306-22ef-4255-9045-b00be41da5cd,신정민,jmshin@samaneng.com,+821054847924,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75d2d097-9094-4b0d-bcae-0ff7fe3536b9,신정식,jsshin1@samaneng.com,+821095160808,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a5226e20-64a6-4882-8650-b1bd021fd925,신정하,jhshin2@samaneng.com,+821030307034,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,203933a5-4197-4a44-ba1d-6fc40631bb44,신제원,jwsin@samaneng.com,+821033477495,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b4ee7583-0f1e-45b5-b2cc-176edad1530a,신종욱,jwshin1@samaneng.com,+821025392850,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a4fbcdab-e63b-4860-8353-3033b7159c05,신주원,jwshin2@samaneng.com,+821095707315,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f5133684-9d60-4b6e-810e-41065032ea5f,신준철,jcshin@samaneng.com,+821046691215,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16411b2e-24f0-4dcd-9d1d-ce0ee71a43d8,신준호,jhshin1@samaneng.com,+821090279630,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,93b671c9-aad3-4762-8937-62304d0f412e,신진건,jgshin@samaneng.com,+821095356663,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe46eb25-4edb-4d25-ac79-f7c565a48eac,신진승,jsshin@samaneng.com,+821053423431,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,36b5a052-6760-4cc7-841f-960d97f5481e,신진호,jhshin3@samaneng.com,+821043157938,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3a5baabf-a5b9-42df-9104-5f84e7d036db,신창건,ckshin@samaneng.com,+821085128370,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b01084fb-3c83-4d88-b1e3-b6bd5ab41de8,신창수,cschin@samaneng.com,+821088450460,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,599ad8bd-c213-4813-9adb-201c96fcfcfc,신현승,hsshin@samaneng.com,+821045746294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2bef73bb-7356-4ae3-9324-b3daa61441e8,신현웅,hwshin@samaneng.com,+821057721591,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1ac900a1-b62e-403c-961f-6e3f6ef4973e,신현진,hjshin@samaneng.com,+821093878716,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8de1478d-1a8e-43e1-869b-a0db5a4224fe,신효식,hsshin1@samaneng.com,+821066809284,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d4358b3-1e68-4b3d-818d-df6274710a91,신후복,hbshin@samaneng.com,+821089367419,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,41e9ac5e-014d-4740-ab76-be67ef4ff426,심계섭,gssim@samaneng.com,+821037927634,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e699cfb7-81fb-4075-b0a5-72ea36bf60a2,심명선,msshim@samaneng.com,+821091812943,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ba030002-c437-4723-a15a-6b1c7236bf9f,심상철,scshim@samaneng.com,+821062462905,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,20d4adec-5ee9-4e73-b682-9c383a2a2a48,심선용,syshim@samaneng.com,+821094613799,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e710d706-ead2-4572-bde0-6813621e3075,심성만,smsim@samaneng.com,+821032094597,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d576502f-6fff-4666-86de-822aa900b170,심승철,scshim1@samaneng.com,+821045778012,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1764267e-38be-49c9-94a0-227fd46bbb61,심재윤,jysim@samaneng.com,+821022531611,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4dcce185-bfa2-4b70-aff6-11e736123ef5,심정택,jtshim@samaneng.com,+821054061958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91591624-1a3e-4b1a-ae23-f222c2687cbe,심현우,hwshim@samaneng.com,+821054095224,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d1268707-e1c7-45ea-9961-e0c55ca08781,심형섭,hsshim1@samaneng.com,+821042436827,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aaebee8b-f3cd-40e6-bf1b-f0210994a72f,아르디안사 비키,vicki.ardiansah@samaneng.com,+821031690591,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d0acf08-0871-4af8-a1ad-af8f66d17972,안경환,khann@samaneng.com,+821073886194,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cae2c931-a590-45af-b5c4-1ea8cc336cc5,안길진,gjan@samaneng.com,+821022413791,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3a7bf70-65b7-4efc-bc52-079e4133d5a9,안대원,dwan@samaneng.com,+821037864397,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,02fa6371-f0dd-4bc7-bd8d-66abefcf7738,안동열,dyan@samaneng.com,+821052396628,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2e7c5b2d-ac3d-4e9a-932c-5ce41e145b00,안병학,bhahn@samaneng.com,+821047580118,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76101f1e-dda9-4d05-88a3-efc9188ba0bd,안병호,bhahn1@samaneng.com,+821034061683,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7b0967d8-86d9-4798-9895-080a897fd5d5,안병호,bhan@samaneng.com,+821054404854,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,08bec097-8790-428e-a432-a3b791da7be5,안상수,ssahn@samaneng.com,+821066146491,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,679aa017-ad62-47bb-a7b6-8ded0a196f0e,안상준,sjahn@samaneng.com,+821054038426,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2935c94f-69e1-460d-b1ba-d6a90061c46f,안석영,syahn@samaneng.com,+821085441408,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ed604ba-e487-47e4-928d-3e7ed99daa55,안선경,skan@samaneng.com,+821024378528,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27b037be-36f5-4180-a078-acdc37339ebb,안성칠,scahn@samaneng.com,+821049011099,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,11617259-c03b-4dc9-97e4-f86d167ee6ad,안세진,sjan@samaneng.com,+821054652029,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ca6a426c-4e1e-4ab4-85ab-1641b8cbe47f,안수현,shahn@samaneng.com,+821048193067,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3a9631f-6739-409f-a385-04be0c3433e3,안영식,ysahn@samaneng.com,+821087449966,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d771b6e-a7c5-48f9-b962-9bb93def7cc8,안영준,yjan@samaneng.com,+821053563943,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f20e9f48-c40b-4512-b4bb-c4385e04296f,안우정,wjahn@samaneng.com,+821052967515,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d68abf47-9b27-4ee3-8a2b-e0737f65e1f9,안유미,yman@samaneng.com,+821023909896,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4974d91-dd96-42da-8fab-6d74a23c329e,안윤준,yjahn@samaneng.com,+821020639749,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc6725fc-ca96-4881-ac54-9b1d1921f9ba,안은미,eman@samaneng.com,+821074755466,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2979cd37-d2cb-4c6d-ba1e-88e86a7f7794,안은수,esahn@samaneng.com,+821072679770,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89d7129f-4808-4e82-ab80-764febd9f1ab,안은정,ejan@samaneng.com,+821056580570,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5c19205d-bbea-4236-a92d-05aed53159c3,안재영,jyan@samaneng.com,+821048451864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71d078eb-e571-4ec3-90da-6dcdac279b6e,안재준,jjan@samaneng.com,+821041106355,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,720177f9-ad48-4696-8f9e-278bb6389c0d,안정민,jmahn@samaneng.com,+821048012499,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a95864d-3109-4706-bc01-f54b1f0a8a25,안정우,jwan@samaneng.com,+821036866801,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b6153490-c3d1-46f7-8c9e-2798f59a9dcb,안준희,jhahn1@samaneng.com,+821050252100,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e651f58e-b9ea-46de-8e99-d52c676693d5,안지용,jyahn@samaneng.com,+821045049741,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,efe620d6-b4ec-401d-9476-da3b0d587432,안찬욱,cuahn@samaneng.com,+821023133808,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec4be096-9d30-4ee2-acc3-bd60f7896050,안태경,tkahn@samaneng.com,+821039229501,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eeeae113-0e4f-4522-a01d-097e6fe0dca5,안현빈,hbahn@samaneng.com,+821052180116,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,066f8646-935a-4325-ba20-7f0729ef509b,안호성,hsan@samaneng.com,+821023282458,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14291360-3814-4b3d-ab8e-e476a31d19fd,안호진,hjan@samaneng.com,+821093156255,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8501a76-c676-498a-9d16-26b3e92e146e,안효래,hrahn@samaneng.com,+821067191237,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,47940166-795c-4e6c-815e-10b9a1c4a397,안효석,hsan1@samaneng.com,+821052894597,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4abf10e7-dcea-420b-9098-27051e949287,안효식,hsahn@samaneng.com,+821030972134,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,03218d8c-090f-4551-a64b-01cc4fd80c1c,안희원,hwahn@samaneng.com,+821066411028,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9129ddbd-6c2a-4cf2-b8fc-1aed44f916e2,양관섭,ksyang@samaneng.com,+821090080813,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f3491b85-fd6b-486a-96cb-5bb009837529,양규순,gsyang@samaneng.com,+821042208962,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,804e433a-9374-452c-9f01-e01070e1f607,양동록,dryang@samaneng.com,+821043411003,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f1f0eecf-d2e0-4ba3-86b3-0764c57477b6,양병수,bsyang@samaneng.com,+821055441491,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7be51dcb-2ade-4451-b614-6c0f434ec803,양성모,smyang1@samaneng.com,+821050007404,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f8d1b4d2-2b98-482a-b6df-47d7493f82ae,양성우,swyang@samaneng.com,+821033414002,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ecb9ac0e-472e-49fc-a879-8e668df3aed1,양소희,shyang1@samaneng.com,+821021690911,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd7957fb-fec0-48a6-a005-305834132534,양승수,ssyang@samaneng.com,+821062583773,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4175adba-fc41-480f-bf00-0493bb3809f2,양승일,siyang@samaneng.com,+821026158432,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fb0d7460-6e16-46fe-bad5-5f4e15c77785,양승현,shyang@samaneng.com,+821032463885,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,02390127-a041-4cb7-a4f5-61e0156b352f,양영섭,ysyang1@samaneng.com,+821044108503,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16060fce-dee8-4a3d-b19e-8030f937e59b,양유홍,yhyang@samaneng.com,+821031879096,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9702ac2c-c2b8-415a-9ec8-e5183ed3a2b4,양일영,iyyang@samaneng.com,+821054552848,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9e048ebb-2176-4822-b222-9de4a25a97d0,양정모,jmyang@samaneng.com,+821022569538,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,37aeb78b-baf4-4839-b20f-bb9516ffdc6c,양지현,jhyang1@samaneng.com,+821094966361,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4644329-8f99-401c-ae0d-6f6b7372f1d5,양진웅,jwyang@samaneng.com,+821086416578,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d9dbdc73-198a-4ae0-9a4e-fe7aeae86f2b,양현,hyang@samaneng.com,+821047657311,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a71b260-cd77-481c-9a3f-2bc760ae96c5,양현승,hsyang1@samaneng.com,+821075602850,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68aebdcb-8870-4491-aa81-d55f0db564ca,양현준,hjyang@samaneng.com,+821022814000,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,edf33802-b7a8-4dad-997b-aa9c0a75a4a9,양현진,hjyang1@samaneng.com,+821071780368,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6ce4b221-a57f-487d-9db1-4304bf5a9a56,양현휘,hhyang@samaneng.com,+821037213592,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d2b92f20-2f3c-4751-8862-a2b3384e7ac1,양호석,hsyang@samaneng.com,+821048426518,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1a3f0c6e-f8eb-4abb-a639-17f33af664db,양희석,hsyang2@samaneng.com,+821072349800,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,49ed8f78-b0f5-47db-9e67-b6b165ff5dfd,엄성현,sheom@samaneng.com,+821047413670,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,72184eb7-fe7e-4459-9668-d4973c61f3f2,엄진용,jyum@samaneng.com,+821020353005,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7700e28a-954a-4b79-94aa-8e793897d8f1,엄희지,hjeom@samaneng.com,+821044184353,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6294a7ba-285d-43f1-b53e-97cc64bed16b,여영탁,ytyeo@samaneng.com,+821071799110,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fdbe4d03-221c-4966-b37e-fb4f8557420e,여형구,hgyeo@samaneng.com,+821088006053,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fc3f3417-c278-447d-8f76-787e38b200c1,여환익,hiyeo@samaneng.com,+821094448555,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8df9a6a6-ae20-4a46-a5ba-5962a67de6bd,연영흠,yhyon@samaneng.com,+821027049425,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c84d1acc-c360-4ccd-9e4d-2da23efb28ad,염광섭,ksyeom@samaneng.com,+821071734132,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ac17803c-4177-4514-b63b-c78436fa3bd1,염승운,swyeom@samaneng.com,+821027334556,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b990a2b3-2c00-47e2-80f1-0f1f6a14f846,염창열,cyyeom@samaneng.com,+821054468273,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2f81d324-a273-4130-b519-8849de79f2c8,예상민,smye@samaneng.com,+821048149727,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a2a5e3e-f380-4a15-b567-0028f61dc0cf,오남수,nsoh@samaneng.com,+821077349373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,03dcff13-1cfc-4a12-9962-faf0c2367e08,오동규,dkoh1@samaneng.com,+821037165259,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b0b7811b-13a0-4fa9-b7f5-6936d6aa4f3b,오동기,dkoh@samaneng.com,+821096190241,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f647b0b-46d7-409e-8d5e-af397916832c,오동수,dsoh@samaneng.com,+821093065320,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1169d6c3-8d03-4e9d-8391-8c94e6d0ba80,오동운,dwoh@samaneng.com,+821032825686,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e16713c8-9aa8-4e73-93b6-75bbb0429fc1,오명환,mhoh@samaneng.com,+821034236246,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e97566f-c39e-4cd8-a44b-e855caff548d,오미란,mroh@samaneng.com,+821065807567,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a07f05ae-0778-4aa9-ac7a-5d18c5dab010,오민섭,msoh@samaneng.com,+821050588267,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1ee35048-3a05-4f51-8cbf-4b5eeb509ab5,오봉섭,bsoh@samaneng.com,+821071936382,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ebbb260c-db7c-4e3b-9486-f43a18a9f585,오상현,shoh1@samaneng.com,+821089130659,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bc9924b6-3bb1-4286-8e46-f35ab69301fb,오성주,sjoh@samaneng.com,+821065129668,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a57dd84-db94-4dd2-8ce2-db9348ef34eb,오성준,sjoh1@samaneng.com,+821094903864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f19fadb7-45c9-4d6b-b7b9-52769ebba14a,오성하,shoh@samaneng.com,+821094090736,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4f742385-2cd2-4477-b832-3af5f768e3b2,오세민,smoh2@samaneng.com,+821085018411,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,803b9c7f-fb41-4721-825f-7894dea49f93,오세영,syoh1@samaneng.com,+821090492703,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ce56e61-489c-4167-9d56-fd5c36d8c57b,오수미,smoh1@samaneng.com,+821076540401,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1839b0cd-7420-4cb5-a045-99eac291c129,오승문,smoh@samaneng.com,+821044779660,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aaf283e8-2418-4828-878c-a1111d307907,오승우,swoh@samaneng.com,+821026076199,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73b9f69a-55e8-4d2e-9401-10d87f16f47e,오승택,stoh@samaneng.com,+821089577911,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3c4bc3a5-2e62-4f60-a964-f0e36008fccc,오영진,yjoh@samaneng.com,+821037537109,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b530fe9a-1892-4d32-9b5e-05d1654dcdbf,오원진,wjoh@samaneng.com,+821046004541,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a04d6e0-2681-4ff1-94cc-42e97402b315,오윤실,ysoh@samaneng.com,+821031776800,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b5bc50c3-1cbb-4aa0-bd20-55ee835dfb47,오은선,esoh@samaneng.com,+821082529552,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b54cd6c6-070f-4c20-b4cf-c0a52fe72e0a,오익균,ikoh@samaneng.com,+821043238668,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc705d17-515e-49b2-881a-78b4c3c82b36,오인관,igoh@samaneng.com,+821064268713,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c5d4114b-f0ba-4d81-8a00-9e50d62e2a20,오재민,jmoh@samaneng.com,+821095775450,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f39688d2-5fb6-424f-af62-8bcebd6a0c34,오정식,jsoh@samaneng.com,+821057891170,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5437b15c-8df6-42f7-903b-52a96f381e56,오정회,jhoh1@samaneng.com,+821086206739,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe694458-bdfa-4fe3-8c43-2b017f7241b4,오제훈,jhoh@samaneng.com,+821051883525,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e0f13f57-bd9d-4c05-8c23-415b35dfd0dd,오종우,jwoh@samaneng.com,+821036521521,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b0bc0d1a-5c48-4997-95bc-aef5c3fc49e9,오종현,jhoh2@samaneng.com,+821024038484,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc4d780d-5f21-4897-adf5-7f18e126a1f4,오치영,cyoh@samaneng.com,+821050076036,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2ae73304-7bfa-45e8-ab73-21cfd6e1d0a3,오하나,hnoh@samaneng.com,+821084059674,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,08e28d47-d0f9-4b18-b6d2-538757e10bf2,오한빈,hboh@samaneng.com,+821023287864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3382e390-faff-4f15-bd67-0d6c1a97f31b,오현영,hyoh@samaneng.com,+821024341864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fabfbad9-9a6d-4551-a732-4bbf0ce58f01,오흥배,hboh1@samaneng.com,+821021715708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,36d0a4c0-ba12-404f-bfbf-5c26f49a1aa7,왕진영,jywang@samaneng.com,+821087536930,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e231eaa7-9988-4984-acc1-f3e3a1181c73,용태순,tsyong@samaneng.com,+821043651701,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a8be52e3-fa9d-4a5c-8002-2190bde5e0da,우대성,dswoo@samaneng.com,+821062551746,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6cd64678-503d-4947-8c15-3e0e68a18bee,우상벽,sbwoo@samaneng.com,+821071302313,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9b8d740a-9385-4d21-89f7-2ca3000ef67c,우성원,swwoo@samaneng.com,+821082128309,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c425728d-24e4-4dcc-9eda-fdfbf09ce4e7,우양근,ykwoo@samaneng.com,+821038919528,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,083bd7a8-9095-4f92-a1ef-4262057a3cf2,우영현,yhwoo@samaneng.com,+821090483904,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dd2fb54b-41d3-4909-a8e9-d7210ff50f98,우종국,jkwoo@samaneng.com,+821053135627,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9778108e-acf8-441c-9a3b-656f87405ccd,우희준,hjwoo@samaneng.com,+821063350310,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b6a995d9-d96e-440e-9fcc-77c33cdae05e,원경식,kswon@samaneng.com,+821087653428,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d5c28267-a190-49bc-b1c6-bddc9b8aadc9,원보희,bhwon@samaneng.com,+821063560950,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e80b55b3-bdb2-41ff-82f8-f23abe535cf7,원영철,ycwon@samaneng.com,+821052711017,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2afe3698-aa2c-4fb5-a770-e7b900a714ca,원영학,yhwon@samaneng.com,+821093910162,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a17dfc0b-93d6-400f-ab75-2652e580e064,원종환,jhwon@samaneng.com,+821034177376,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,996eb9d3-bd62-487f-bf65-2f95aaa0f3b7,원충연,cywon@samaneng.com,+821081265248,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68160e6f-ae39-4ae3-a1d7-0605a7b64856,위성식,sswie@samaneng.com,+821092729027,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bbff5bd8-38bf-46b2-8880-47fb1000eccb,유경한,ghyou@samaneng.com,+821050541158,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9729325b-ec22-4756-9598-15a5b806887c,유고호,ghyu@samaneng.com,+821063193944,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ef60b4cb-a3ed-4859-89b3-503d8b974d17,유규상,ksyou@samaneng.com,+821030634534,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c845e809-4e91-41f4-8ae3-b9a5a6094e43,유근우,gwyoo@samaneng.com,+821082177037,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,12b75228-24a7-42fd-91f7-53070a8d631d,유기종,gjyu@samaneng.com,+821055118436,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17fa7d1f-028b-4b0e-b881-3147a65ade18,유도희,dhyoo@samaneng.com,+821096039955,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,461208f3-4e35-41a1-9527-49fc9f71cc9b,유동현,dhyu@samaneng.com,+821031096660,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1032bff8-54c7-4506-8874-fea50ff56a66,유동형,dhyu1@samaneng.com,+821093743354,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3bdf69b0-e802-493a-ab57-45aa55e51ffe,유미,myu@samaneng.com,+821040460330,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e7448b9d-ae3b-4625-97f6-a3bcbbdc3c9e,유병남,bnyoo@samaneng.com,+821099488513,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dd3b2cc1-69dd-48c7-bf9e-0907d67ee27b,유병욱,boyoo@samaneng.com,+821035290172,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,092065e0-97b8-4e0d-8bb3-d46e99045a95,유병욱,bwyu@samaneng.com,+821038778647,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aeba5f70-2c8a-47fc-a413-3eb4c1612c6c,유봉희,bhyou@samaneng.com,+821093769679,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,870aa763-de8c-437b-a8d2-b1a9b2d131a7,유상길,sgyoo@samaneng.com,+821046231844,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4d6bc3e1-fd6c-4525-8d3d-7a4c08bbc038,유상연,syyoo1@samaneng.com,+821053608611,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f62f63dc-2065-4697-87a0-31573c8e5e9f,유선규,skyu@samaneng.com,+821089309334,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b2e4ea61-76d3-43fe-bad2-ce764177d7ed,유선혁,shyou@samaneng.com,+821041804251,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e20b35e3-b73f-4044-b8cc-98513618b306,유성수,ssyoo@samaneng.com,+821063263292,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17c86754-e8e3-4812-8eea-f533d084a20a,유성재,sjyoo@samaneng.com,+821045292761,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c5dd56d8-cb92-402c-8ff0-374920f16eb9,유세연,hsyou2@samaneng.com,+821032186977,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e137e33e-1abf-4d00-853d-68f2e6adc365,유승용,syyoo@samaneng.com,+821045289657,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,90eaccac-05c0-4ed2-ab88-84acc70fce64,유영진,yjyoo@samaneng.com,+821023273458,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9273b3f9-56e3-4813-ad87-16253daabc1c,유영찬,ycyu@samaneng.com,+821050026544,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b44074a0-464b-4e7f-8299-877d908c776c,유영춘,ycyou@samaneng.com,+821023091509,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6f93078-12f4-4e54-b896-482d27bec7f7,유원효,whyoo1@samaneng.com,+821067566868,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ca243276-0987-48d5-8522-f71e28b45b5a,유원희,whyou@samaneng.com,+821028667362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec963e53-16da-4d6c-ab60-6c2735442f0a,유재무,jmryou@samaneng.com,+821044374626,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a87f258-6374-40cb-b7a3-31caea29cef7,유재민,jmyoo@samaneng.com,+821049451079,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,74c30785-1548-4721-bec1-ec2ae1ee7378,유재봉,jbyou@samaneng.com,+821047506621,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f4ef2c2-00a3-4810-ae76-70232279417c,유재산,jsyou@samaneng.com,+821042671041,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,56f748ed-e394-4feb-ba94-db8b7b7b231d,유재호,jhyoo@samaneng.com,+821082556624,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,139a9fc2-3d58-4c6e-82c3-1d6ffdda6599,유주연,jyyu@samaneng.com,+821041345128,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,835cd628-ab8e-4f63-b767-4765be053dde,유준상,jsyoo@samaneng.com,+821046116576,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,79e115a5-ffb2-4eb2-8730-216a9602c20b,유준희,jhyu@samaneng.com,+821059119904,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e6a73580-8931-4b22-822b-210a13eccb54,유차정,cjyou@samaneng.com,+821073443723,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d9dda6d-c510-4554-9561-bffd5e060e05,유호진,hjyoo2@samaneng.com,+821038033750,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91bda724-5fb8-4753-a61d-3a337bbd530e,유환주,hjyu@samaneng.com,+821087853840,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1836a228-53eb-4b80-987a-126c40685d73,유훈,hyoo@samaneng.com,+821036015512,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,130a3316-5dd4-4da3-ba01-c43c81b03904,유희종,hjyoo1@samaneng.com,+821030980468,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,45b67621-3ae6-42b7-bdbe-85b3d576bbce,윤경근,kkyoun@samaneng.com,+821083834542,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3216a61-90f9-45a8-8914-49520cc25871,윤구순,gsyoon@samaneng.com,+821038960459,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab44494e-9a4f-48b6-8960-4642e8334f3a,윤남선,nsyoon@samaneng.com,+821056848420,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07eac669-27b0-4684-ad56-0cbd50cefa0d,윤대희,dhyoon@samaneng.com,+821046645080,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34f0e2c2-fd28-430c-8138-96faaf4f9d1b,윤도현,dhyoon1@samaneng.com,+821023408527,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14ee9cfb-3f71-46c0-a0db-09ef51ca87e3,윤만희,mhyoon@samaneng.com,+821050190190,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aeecb5a7-24cc-4aa3-a4ff-6c6cdf98ebcb,윤미나,mnyoon@samaneng.com,+821041888981,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f860cfdc-71a7-4698-bd84-3f162b36366c,윤미정,mjyun@samaneng.com,+821020374118,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6c65c62-1131-43fb-9d9e-aa3a922d0329,윤서호,shyun2@samaneng.com,+821037493183,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5eedf4a2-d7fd-4f48-b17c-aca1af69345d,윤성현,shyoon1@samaneng.com,+821046188730,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07320805-576d-47ce-8ff1-9b9af56e6868,윤성화,shyoon2@samaneng.com,+821054789492,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,47588091-330a-482f-9862-f0d526aa9cc8,윤수근,skyoon@samaneng.com,+821054847207,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8479163d-8578-4fbf-928b-f10b08f99ef6,윤시중,sjyun@samaneng.com,+821067420101,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d79c12e8-8b59-40a5-be9f-42c82384c171,윤여준,yjyun@samaneng.com,+821025724593,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1dac7ddf-d4bb-4422-bcaa-4d67619cd724,윤영덕,ydyoon@samaneng.com,+821035398097,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,87f2f5db-6bef-4d8e-9f86-47d9372fa0f8,윤영도,ydyun@samaneng.com,+821044131787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,67538929-cf43-449d-8b7b-d51ce6cf1045,윤용선,yysun111@samaneng.com,+821034771398,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ce8ec45-fb67-4f45-9f5b-8b2ee5ef7121,윤의혁,ehyoon@samaneng.com,+821087240506,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,54f6b624-c75b-4cc0-aced-f1330942ab2a,윤재효,jhyoon1@samaneng.com,+821035946531,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d0795fe-9e54-4c80-b1e9-39630723fa98,윤정섭,jsyoon@samaneng.com,+821085847911,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1eef145c-6c23-4d29-a084-edf06b87ea58,윤정일,jiyun@samaneng.com,+821091901065,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1b0dbcec-af44-4af5-ab61-5bb341c1e3d4,윤종춘,jcyun@samaneng.com,+821035530337,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c22facb8-7e2d-48c8-8141-3c49bab15c13,윤주혜,jhyun@samaneng.com,+821066703183,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab63cea1-311b-4a15-a20a-a1806ffeced0,윤지헌,jhyoon@samaneng.com,+821091900970,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8d660664-573c-45d7-b3da-7bc8914c374a,윤찬영,cyyun@samaneng.com,+821036906460,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,322f6ab7-bcf0-4f68-b1ef-a63392b34fa7,윤창진,cjyoon@samaneng.com,+821053297491,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,516dcd47-3417-41d5-b5ea-c63bcb84544e,윤창한,chyoon@samaneng.com,+821055776418,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39d871b5-e097-4e77-8f3d-550d6ac8f68b,윤채연,cyyoon@samaneng.com,+821055111509,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,90326114-920e-4880-95bd-ca4ec7a04072,윤철,cyun@samaneng.com,+821032182773,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bec7fb22-9985-4da6-b802-a266b066d4ca,윤철원,cwyoon@samaneng.com,+821020159762,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,870769eb-cde8-4425-8dc6-c7f343a92fc8,윤현식,hsyun1@samaneng.com,+821055028373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b0b9d1bc-8253-4520-a47e-a85fa64b64cf,윤현우,hwyoon@samaneng.com,+821030097051,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a016087e-5514-412b-9f37-54ab106b41c5,윤호연,hyyoon@samaneng.com,+821032177889,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d48becce-cb57-4f0b-a328-30e5fa2558db,윤호진,hjyoon@samaneng.com,+821086423699,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c8d8b91a-0f13-4bfe-a2c1-f12a71a9ad9c,윤홍산,hsyun@samaneng.com,+821053259426,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,31e49b58-5cad-4900-ae64-e371948dccaf,윤환진,hjyoon1@samaneng.com,+821094516685,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2af99f20-5464-4dce-a498-ef68fc920f22,윤황의,huyoon@samaneng.com,+821089804236,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39d3dbe3-9fd7-4749-ac4d-e701f82e41bb,윤희민,hmyoon@samaneng.com,+821066741471,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,37ae3666-da32-44bd-a3b5-4d496ea0eea0,윤희섭,hsyun2@samaneng.com,+821034881236,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2096881d-9c21-4d4e-a5b4-86e4b2edca3c,이가현,ghlee3@samaneng.com,+821075399812,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b5875b74-f677-41e2-a847-a1bb1f4f9328,이강욱,kwlee@samaneng.com,+821041840974,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6c21c864-704b-443d-a452-52d73fd07110,이강준,gjlee@samaneng.com,+821031067709,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f43c4dad-20be-44b8-9d2f-45062d396dea,이건,glee@samaneng.com,+821038788143,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07aceff7-c461-4780-8223-9064357cde66,이건기,kklee1@samaneng.com,+821023888037,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b0f1e43b-b069-408e-8b09-7ba98d139c46,이건일,gilee@samaneng.com,+821079241496,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a70e427e-f0be-471e-80bf-886105a1e5d9,이경록,krlee@samaneng.com,+821028804190,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc00cb18-57e6-4415-82ec-fbdaaa8d1420,이경민,kmlee2@samaneng.com,+821023338619,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ba4bb7a3-a954-4f18-b329-eb24f1fbdc9d,이경임,kilee@samaneng.com,+821099005751,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,31ae63da-a19f-43c0-a07f-5921117551d3,이경훈,khlee2@samaneng.com,+821095349295,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1ac04d6d-4294-463f-bc3b-893ad47c18c2,이관행,khlee4@samaneng.com,+821037597780,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,84751128-2df1-4e6c-8546-d81c7923d1e5,이광래,krlee1@samaneng.com,+821072917777,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b39d46cd-3e8c-4779-85e8-3d060c03b481,이광업,kulee@samaneng.com,+821062681376,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2535e6f5-20ac-4def-bd8d-00c38340f55a,이구화,ghlee2@samaneng.com,+821063904632,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd4a02ab-3a11-48dd-a80a-2821c9eb0015,이귀웅,gwlee@samaneng.com,+821089736153,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d8dd493-3342-4c6e-ba48-58ad13c143f4,이규수,kslee@samaneng.com,+821054882830,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5cdb5b42-1cec-4087-be32-a91d2c663368,이규호,ghlee@samaneng.com,+821090318405,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,90842be3-e789-460f-8c2b-4304f236852a,이근호,khlee@samaneng.com,+821085970274,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,63538c64-4df6-4ed7-b75b-3109338d60c2,이긍희,ghlee4@samaneng.com,+821024340908,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,45e50685-84ef-4654-b5c3-afb97b4c9e8f,이기민,kmlee@samaneng.com,+821047202918,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c57c18da-0846-4473-803d-a6bde8928940,이기영,kylee2@samaneng.com,+821033130096,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3ceba726-eb86-4e8d-878d-8c9f09f788b6,이기윤,gylee@samaneng.com,+821042560581,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fa93d9ff-7a55-4e52-8078-aeb63a6eab1b,이기태,ktlee@samaneng.com,+821023763805,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,df5b42d8-45c4-4cd9-a70b-35aded08f729,이기호,khlee3@samaneng.com,+821063479877,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f69eedfc-9925-432c-9973-0e8625b4fc8d,이길도,kdlee@samaneng.com,+821045390518,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,46d75a5e-bfc1-413e-b90c-a9c87b3e0d5b,이남천,nclee@samaneng.com,+821053519024,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,809db378-136b-4e80-b5bd-7f5abf010e2b,이다솜,dslee2@samaneng.com,+821082872217,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ee48a172-b869-47b4-915f-0a43767d26f6,이대우,dwlee@samaneng.com,+821054306613,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ecf9b36-07a4-4eb3-84f6-227a81185812,이대욱,dulee@samaneng.com,+821045202023,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,661a9dab-9cea-46e8-8b19-d63fc1bca44c,이대주,djlee@samaneng.com,+821046330380,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc727939-ec23-404e-a2d3-7c907e8478ad,이도근,dklee1@samaneng.com,+821040525331,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62142a80-c807-4278-94a1-b5a5ad939910,이동렬,dllee@samaneng.com,+821090800947,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f0ac6533-2ffc-4edc-bd7d-9bebb3b6bd20,이동석,dslee@samaneng.com,+821064841610,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c2e5a14-0274-4394-8820-9639a769dea9,이동엽,dylee1@samaneng.com,+821024133882,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17c4ff6c-4572-49a9-8ba3-5aef7e229c5e,이동영,dylee@samaneng.com,+821028964350,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c77cce06-5971-43b8-9c64-d50e09d4f55b,이동우,dwlee3@samaneng.com,+821042665650,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe4a8b9c-5c2a-488d-b4f7-7470b14f5d4b,이동욱,dwyi@samaneng.com,+821087086871,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,12d45fee-e5f7-4c07-9385-4fc3d9fb69b6,이동윤,dylee2@samaneng.com,+821093329727,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f9cf4ca-0d52-4e19-a8cd-d5b51881e655,이동준,djlee1@samaneng.com,+821090614151,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea8d07a4-8638-4ef6-b4a8-a1e7a2882f65,이동하,dhlee1@samaneng.com,+821086027042,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6c796029-f9b7-42b3-b3b2-69dff3fa512d,이동현,dhlee3@samaneng.com,+821030778040,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d5f0c122-3d9c-446f-82e8-ad00df7b0e65,이동현,dhlee5@samaneng.com,+821022870282,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cb7c6a34-90a8-4d1a-a865-2e430792fb11,이득수,dslee1@samaneng.com,+821035270007,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3d583443-d050-4d4a-ace9-cff9b3aa8a56,이만석,mslee@samaneng.com,+821038433358,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a0830ba-f060-4105-b4d5-fdcf702fbe7e,이만희,mhlee3@samaneng.com,+821033809574,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,082f8887-d575-4dd2-ad88-0d56d1b697eb,이명철,mclee@samaneng.com,+821053953051,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,944a0f57-f7dd-455a-9d74-b296962600ff,이명회,mhlee4@samaneng.com,+821093874378,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c0a5f5fe-0515-45aa-8cf0-d53ab420da01,이문영,mylee1@samaneng.com,+821026482805,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73f9cb4b-60e0-4d70-a63c-e1ebae15baa1,이문희,mhlee@samaneng.com,+821089228330,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0b5e75aa-7644-4d23-948a-0d643fecd562,이민애,malee@samaneng.com,+821057051404,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8c786b5-bf9b-4352-9753-e8223331f437,이배성,bslee1@samaneng.com,+821088206980,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ebab36d1-52e4-47ce-b86e-70b2f1c4260e,이범기,bglee1@samaneng.com,+821088853559,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a9480d48-6ab8-47cf-9c9d-c918943e3d9d,이범주,bjlee2@samaneng.com,+821062889559,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a329f62d-6a51-40a6-9d60-3cf913976bea,이범주,bjlee@samaneng.com,+821033937653,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1d4c110d-98d2-4b0a-824c-7a88a35449a2,이병민,bmlee1@samaneng.com,+821038604296,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,542f6860-a4de-4f43-898e-4ef8d730e02e,이병설,bslee@samaneng.com,+821090650330,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07134399-611b-49d3-9408-e0ededeee0cb,이병찬,bclee1@samaneng.com,+821023121439,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d83d8bc7-5d75-4490-aa5e-e362e7384923,이병철,bclee@samaneng.com,+821092175048,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,45a1c11e-4f91-4452-a90a-f893b8cb2a9a,이보영,bylee2@samaneng.com,+821085133406,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fa5466dd-1942-454b-9ce0-36f32a9ee0a1,이보영,bylee@samaneng.com,+821038019072,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4bdef757-99c8-4ec4-9bad-576a6c6137c8,이보용,bylee1@samaneng.com,+821030760518,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7e0c7a36-4646-4afa-ad56-c5bf035e56d1,이봉우,bwlee@samaneng.com,+821050677047,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e7ab23de-01ea-4662-9fd5-faa48db16f19,이상길,sgyi@samaneng.com,+821091040920,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6405b9e8-34cf-48d0-a0b4-38e17e85dad5,이상덕,sdlee1@samaneng.com,+821039073176,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,10ae4d66-dda0-4179-93e8-bb8971860eec,이상룡,sylee2@samaneng.com,+821074118180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7e3c6df1-d9b4-4cb5-864f-1174d441d20c,이상만,smlee1@samaneng.com,+821052936959,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44688aa6-c6ed-41a0-9161-5f5f34bea650,이상범,sblee@samaneng.com,+821071740134,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d0f6209f-0edd-45e6-9f56-86483d83f61c,이상복,sblee4@samaneng.com,+821048579113,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,81efd6b2-2ba9-4af4-954b-8eff6059dc88,이상술,sslee@samaneng.com,+821022102617,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,051cf594-b911-4883-8934-3444817257e4,이상언,selee3@samaneng.com,+821063702399,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d80411ec-598e-4b81-85ba-ba0ee44e44c6,이상엽,sylee9@samaneng.com,+821063287480,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70b40a52-f6da-42cb-b888-934bbda22647,이상엽,sylee@samaneng.com,+821022744513,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14ad4176-2c24-4ac1-8bb1-40f5ffe74e19,이상영,sylee3@samaneng.com,+821064283683,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8ba7110-aa62-477c-ac47-777f14255232,이상용,sylee7@samaneng.com,+821024152302,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d82674a3-7a0f-44c2-9546-f10cd3dcb6df,이상윤,sylee5@samaneng.com,+821033375569,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,066e5a4e-f721-4c36-bc8b-baa5a42a7baf,이상준,sjlee2@samaneng.com,+821036262401,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9678a2bc-8854-402a-b67f-a3e5c0b28a83,이상태,stlee@samaneng.com,+821090666467,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,054ccb42-d195-447b-aa39-0131984e6dee,이상현,shlee4@samaneng.com,+821091275762,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c60ac756-7a38-404d-b304-15bd94440650,이상현,shlee9@samaneng.com,+821099767235,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,436b5eaa-c47d-4f16-be34-5d9d3e0e5794,이상화,shlee22@samaneng.com,+821081808502,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da041161-a402-4472-92d6-1b0de217a078,이상희,shlee12@samaneng.com,+821087219198,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,482bc0f0-b888-4472-801e-41df49810534,이상희,shlee21@samaneng.com,+821045758821,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7f7a72ac-0129-4e11-a960-272622e6a7a7,이상희,shlee@samaneng.com,+821024747070,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f7294a9c-f4ce-4829-8c18-b91b998e7903,이서연,sylee1@samaneng.com,+821099761900,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4f6967b0-5aa4-4bf4-99d7-367dda3482e8,이서준,sjlee8@samaneng.com,+821020258560,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ddc65462-fd17-4ddc-bb59-5a357e957fad,이석상,sslee1@samaneng.com,+821037765178,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71d54880-35f2-4559-90d9-9a1e6a5e0384,이석준,sjlee3@samaneng.com,+821082379013,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,383e240a-6393-47d5-9d84-5d1117245634,이석환,shlee5@samaneng.com,+821063803826,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ad52971d-d65a-44ec-9a59-c56176206eac,이석훈,shlee10@samaneng.com,+821088702168,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,54af1119-410f-47fa-92a7-9b5047427f19,이석훈,shlee17@samaneng.com,+821058220540,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e0feb4b-93eb-4928-8d46-ae636d7cba9c,이선구,sklee@samaneng.com,+821062953087,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,343c6b99-4c93-4c61-bedb-eaa50fed5e36,이선영,sylee4@samaneng.com,+821049247411,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5d47dc0d-0acd-4284-879f-0ba2dae6b1ad,이선우,sulee@samaneng.com,+821037515899,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4eabebf-70f3-4e6d-96b9-9d221ab6d8fb,이선재,sjlee10@samaneng.com,+821031265008,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5f251abb-b15c-48b7-bdfe-fda17f555fb0,이선호,shlee7@samaneng.com,+821037164703,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68b3c27b-108b-48d9-8e0d-22535300fb74,이선화,shlee11@samaneng.com,+821091553966,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2685020b-d73e-4f2b-8029-0654fc07a08f,이성기,sglee1@samaneng.com,+821071514445,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f1e53e11-f392-4289-bf17-192495bf5c56,이성범,sblee3@samaneng.com,+821044333702,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7a89abc4-86e9-4ee2-90f6-9171a77668c8,이성언,selee@samaneng.com,+821095018403,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da37ce55-f8b0-42fc-be6d-c5adedd6450d,이성우,swlee2@samaneng.com,+821034054564,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f01b342c-9d0d-4ef4-bd74-674e0cfc9039,이성원,swlee4@samaneng.com,+821041042916,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,22514227-8ea9-47e1-996f-5f0e44b3e44e,이성재,sjlee5@samaneng.com,+821036612569,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89eb7707-4191-4d7a-8e0b-e2a9e2aebafe,이성재,sjlee@samaneng.com,+821024588180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,be8f8d3b-c8ae-4f85-ae97-c6ff967f77bc,이성준,sjlee1@samaneng.com,+821055134170,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4337f01-ef7a-4756-970a-e191572cbace,이성학,shlee14@samaneng.com,+821064073857,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,54f1523b-7f38-4d3f-981b-1e2500bcdacc,이성현,shlee20@samaneng.com,+821099264753,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98e9d5cd-34a8-4398-a069-bdbfa1e535b2,이성호,shlee16@samaneng.com,+821046462003,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,361cd5e2-14c4-4d8a-9b1d-b60aeb6a89a3,이성환,shlee23@samaneng.com,+821039316577,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30ac0e72-93af-4019-99c8-5bc960123c61,이성훈,shlee18@samaneng.com,+821047336616,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,952dd1ae-8875-47f9-a844-19f08b0179e3,이세호,shlee13@samaneng.com,+821040101334,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b2b10890-25b0-4fd2-a442-a553eeccc1f7,이수연,sylee6@samaneng.com,+821095071612,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8b90b132-77fb-4d5e-8197-171895076c82,이수영,sylee10@samaneng.com,+821054767960,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17a85514-d2b0-43ca-be32-1873ab962a3d,이수우,swlee3@samaneng.com,+821071739954,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,48ed7e5d-4066-4b34-8d98-4dca2b6b4121,이수정,sjlee4@samaneng.com,+821075852052,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e64b20a5-3eba-40bc-bedd-6b93c36e638c,이수진,sjlee6@samaneng.com,+821027698972,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7444c297-449b-4931-a5bd-7c5a4fc914bd,이수창,sclee1@samaneng.com,+821022935083,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,80745e89-9de0-4ee4-b4bc-ed1e3abcc3ff,이숭령,srlee@samaneng.com,+821028207230,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4e13c2c-b602-4525-b28f-a18b23e7a273,이숭희,shlee15@samaneng.com,+821065438535,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c3e363a-00d2-47ce-8114-9d5f7835f75a,이승근,sglee2@samaneng.com,+821093271534,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70d0f1df-4b7c-43b9-8a36-9f40cd73e2dc,이승기,sglee@samaneng.com,+821043003260,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44bd737f-539e-48c3-8900-b02254a37d2c,이승렬,srlee1@samaneng.com,+821063377661,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30d208a4-16ed-4777-bc73-4d84efb5df11,이승배,sblee2@samaneng.com,+821020831036,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8eea2347-2b7f-47d7-9a94-df644b4e87e1,이승범,sblee1@samaneng.com,+821066711511,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a8f45ad8-2d06-4e46-b774-d5ccc6db0f50,이승원,swlee1@samaneng.com,+821087689337,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a571102a-1b1d-4456-b672-453cbaf2bce0,이승원,swlee@samaneng.com,+821052158730,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,572780ad-33de-4cae-933d-473719a600ef,이승종,sjlee7@samaneng.com,+821088604383,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6e9efa47-6ee5-46eb-bf51-fdc2963b3658,이승철,sclee2@samaneng.com,+821053377026,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e6521a02-cc38-4424-bc02-1f3dbbf92c3e,이승하,shlee8@samaneng.com,+821088169681,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,402db3b4-bc5e-4511-9e43-9cf3fcf64cf1,이승한,shlee19@samaneng.com,+821072043818,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2f45bc81-826f-4dd2-8588-01ede648b88d,이승현,shlee25@samaneng.com,+821087357102,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30ce11f4-33d7-466f-92a5-6b89a95fabce,이승현,shlee3@samaneng.com,+821021005928,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,575ea690-5d66-4b77-ad38-a834db133c92,이승훈,shlee6@samaneng.com,+821098845696,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15d3dafd-c6c3-4ad6-a928-d92ed1f32c1b,이시동,sdlee@samaneng.com,+821025353615,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b565cfd0-4004-4f1c-9c4c-5b24c92e5182,이시은,selee2@samaneng.com,+821023866052,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,636f4afe-d761-4ff0-bcad-105370488def,이시의,selee1@samaneng.com,+821088152260,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a8d0fdb4-4ce7-4d47-a415-4ba1eb4cd1ba,이신혁,shlee2@samaneng.com,+821033021247,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5d7c3bba-fb08-47d4-91ac-1beacbdc7567,이연실,yslee3@samaneng.com,+821072128585,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0158a2f9-50f0-4038-8f16-81ee428fb42b,이영근,yglee@samaneng.com,+821097072522,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b79be621-b759-4173-894b-8edfa87ee29e,이영석,yslee1@samaneng.com,+821053457236,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,570c80d8-74d2-4b4e-b708-53658ca24db7,이영석,yslee4@samaneng.com,+821090232073,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83400d65-9549-494d-8429-c8ec561da707,이영식,yslee@samaneng.com,+821023703546,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dbc63905-dd9e-402e-ac96-cba6bb9df7dc,이영준,yjlee6@samaneng.com,+821099592893,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e7c206b3-75e3-4dd4-b790-481c1709fc76,이영준,yjlee@samaneng.com,+821049257764,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d4c8b02b-282d-4f97-8935-df85be9624c3,이영진,yjlee1@samaneng.com,+821020806816,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c7b91b34-1e0e-4d8d-b2d7-36dacfc93061,이영찬,yclee@samaneng.com,+821042738779,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5c768d86-4491-4527-b134-3e6a837b3404,이영환,yhlee3@samaneng.com,+821045845704,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70bd4c1e-7614-44e5-a9c9-5b7de798728a,이영훈A,yhlee1@samaneng.com,+821036826291,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,153068d0-71fa-4208-8d4e-3d5164381b2e,이영훈B,yhlee6@samaneng.com,+821075130485,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6c3fc9f-ebba-4ec6-9d42-c6ffd0e054a4,이영희,yhlee2@samaneng.com,+821030139975,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9548473a-1cf0-400e-be4d-ffc428700858,이용목,ymlee@samaneng.com,+821055403803,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ed10c350-fdbb-4e76-9566-c92a3002ae32,이용우,ywlee@samaneng.com,+821042342350,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1f987a9-20f7-4dce-b125-6215e368727a,이용희,yhlee4@samaneng.com,+821090435685,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e3fd815-73a9-4f94-871b-8921aa2dc9c5,이웅규,wklee1@samaneng.com,+821074253688,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e13c7478-2022-454a-8e94-212b08ad4079,이웅기,uglee@samaneng.com,+821088721944,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92eccbc3-b905-4212-a343-1a0bb766e8ec,이원기,wklee@samaneng.com,+821046147981,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ed29d91b-64a6-413b-833f-6a1581e025a0,이원돈,wdlee@samaneng.com,+821034828522,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8d58f57-839e-41ac-a264-3256bb3cf086,이원배,wblee@samaneng.com,+821052386142,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14974d72-8c04-4212-b076-b39eaaec929a,이원재,wjlee1@samaneng.com,+821087919236,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2b5c6ca8-fc5d-4621-b923-9f153893aa9e,이원재,wjlee@samaneng.com,+821041766120,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,81034e38-e1fa-4810-b0c6-966727f9136c,이유현,yhlee5@samaneng.com,+821029764813,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f1504257-10a7-425c-83f4-ddf3eeaafc25,이유현,yhlee@samaneng.com,+821084273301,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b9ab2b8d-a4ee-4b69-8849-7be20fc6b27d,이윤정,yjlee4@samaneng.com,+821090154097,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1be43e8f-321c-4675-aaf4-ae2ead83abe0,이윤택,ytlee@samaneng.com,+821040908537,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e0016518-6857-477c-921d-f7b972f70cfb,이은경,eklee@samaneng.com,+821032288304,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89bdab4d-9d1c-4360-966c-63ef1f675be4,이은섭,eslee@samaneng.com,+821090703471,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d9bf0e54-21e7-47d6-b166-b7491387963f,이은주,ejlee@samaneng.com,+821044423614,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6a2c8310-6d55-452e-bfb9-d58a211cc701,이은택,etlee@samaneng.com,+821038610077,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e98ca99-1706-4e42-8e33-25b7b3ccffb9,이은환,ehlee@samaneng.com,+821052657738,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a2d5270c-5c2a-4b3c-a2af-bb88d75311d9,이응채,eclee@samaneng.com,+821072329379,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,45ba1eae-c53f-45c9-bc35-86508fb7b74e,이인록,irlee@samaneng.com,+821045507477,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da287e0c-cf8a-410c-a02e-216d8bbfcd6c,이인수,islee@samaneng.com,+821085925701,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7b680398-d6cb-4ad8-ad95-ef416b60d69c,이장언,jelee1@samaneng.com,+821052474720,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3fecc22-ff77-4e05-a1ef-7eee69905caa,이장원,jwlee4@samaneng.com,+821062729079,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,67397d48-3f52-4074-932d-abf1dcbc1c37,이재국,jklee5@samaneng.com,+821023348614,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,04270886-7881-43e9-ba29-ef85aa61194f,이재규,jglee@samaneng.com,+821036353728,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e2717c32-5efe-491f-9bf7-844e92640794,이재근,jklee1@samaneng.com,+821095923006,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0fec0090-bf31-40e6-b38c-94667e6f8f18,이재석,jslee4@samaneng.com,+821047903849,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f55df6d7-bea4-4915-87f1-240c7ba4db52,이재열,jylee5@samaneng.com,+821038279617,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e1ed3d3-b185-444c-8074-391e2bae0c1e,이재오,jolee@samaneng.com,+821024227266,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,233a2c78-8eec-4391-b149-1db76bddf8fa,이재완,jwlee6@samaneng.com,+821035507305,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9780fdc7-1df3-4ff5-aa0a-135d4a59def2,이재진,jjlee3@samaneng.com,+821041645455,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68ce155a-f743-40f7-badc-47329d2bc1a6,이재현,jhlee12@samaneng.com,+821064030362,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55387560-45d2-4c57-894f-16de30bdf71d,이재형,jhlee11@samaneng.com,+821027905263,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3ec511bd-cd72-48f5-842b-5793d4bf2f16,이재형,jhlee6@samaneng.com,+821088236317,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eb1cfd4f-dba5-4da0-aff8-e7a761e9cfbb,이재흔,jhlee19@samaneng.com,+821088155459,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ccb999a-8442-436f-b0e0-8ce50308da67,이재희,jhlee20@samaneng.com,+821031780027,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d679f14-6f39-4a9b-9e02-0dfb72424c62,이전진,jjlee1@samaneng.com,+821094117825,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f4180785-eb88-42d0-b0b2-63c74077f8ed,이정구,jklee6@samaneng.com,+821095993422,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6dd169e8-2740-4acc-a4db-3b8244af2f77,이정섭,jslee3@samaneng.com,+821026341615,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e35a10d-cd6a-425a-afb2-0629a2423e11,이정용,jylee6@samaneng.com,+821063629533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9e5a8b1e-424f-4fc9-94d4-33d8ee25596d,이정욱,jwlee3@samaneng.com,+821053909721,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a36cee8-6a3f-47a5-bf5d-41b64c1916fb,이정원,jwlee2@samaneng.com,+821091769569,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2625d94f-2a8d-4610-b52d-b3c8a344c4ab,이정인,jilee@samaneng.com,+821035912131,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,359ce9a2-7230-4dac-aa7a-995c0fa17d1f,이정직,jjlee@samaneng.com,+821099255615,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7f7ca1a2-26c2-4c14-8e01-87c1a2f450cf,이종경,jklee3@samaneng.com,+821072187372,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8dde684e-a9c6-46b6-8473-0f26ee1d5ee6,이종구,jglee3@samaneng.com,+821066561706,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89029db2-5036-4c07-9191-4f936dd97ec3,이종구,jklee2@samaneng.com,+821034438294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e071e1ee-c993-4100-b34e-55a0ab4d6d2e,이종균,jglee2@samaneng.com,+821087230209,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cc8c1bda-355e-4910-8150-0ee69a3b42a8,이종민,jmlee1@samaneng.com,+821050489626,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d3fd2658-62b8-434c-bb8d-2f3ae557de20,이종진,jjlee2@samaneng.com,+821066484405,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,95e26196-c4ff-436a-b5cd-c4f0393f2f06,이종철,jclee@samaneng.com,+821032311453,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3819f9c1-55c5-41fb-adfb-ab0b4f046f0b,이종태,jtlee@samaneng.com,+821090480119,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ec2112ba-184a-4a73-93b9-26f8ddc17213,이종하,jhlee7@samaneng.com,+821074365105,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7c6957a6-9fe6-45a9-a317-980a0f54a891,이종현,jhlee15@samaneng.com,+821097410303,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ca2d683-e0b4-4acc-b765-998259feaaf2,이종호,jhlee5@samaneng.com,+821053876610,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,891e7c96-bc7f-460e-ade4-265cc59a6eb9,이종훈,jhlee13@samaneng.com,+821082178211,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,824ddd5a-45aa-4f75-92cc-bc6c7b17f7f0,이주민,jmlee@samaneng.com,+821020048272,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,daee2898-8f9b-46a8-a80a-0143b66ccb35,이주영,jylee7@samaneng.com,+821062120518,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9d30951f-da08-4390-861c-7702a35648b4,이주호,jhlee1@samaneng.com,+821057987402,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71c5c6a5-7d4b-4026-91fb-86657780c1bd,이주환,jhlee14@samaneng.com,+821099731973,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c190dfe0-60e9-45ab-a693-05d2c30b3c53,이준규,jklee@samaneng.com,+821085247121,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1f734b19-194c-4411-8874-2f5111be4af6,이준석,jslee5@samaneng.com,+821073785223,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0488c715-85e6-4e18-9183-ded280e7235f,이준석,jslee@samaneng.com,+821026162308,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,30c2fc22-d0cf-40ea-b3bb-d2d9278aca13,이준섭,jslee2@samaneng.com,+821027841312,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd092e1e-67c8-4673-b09e-9587ece32025,이중희,jhlee16@samaneng.com,+821034231875,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6869652e-5226-4ce0-8401-ee8592a4443d,이진영,jylee@samaneng.com,+821081266857,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a1955781-753a-4e0d-9188-a3de2f253d77,이진용,jylee1@samaneng.com,+821090299901,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,956ca127-8a5f-4cde-8679-d94470f9f807,이진우,jwlee5@samaneng.com,+821025892018,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,685414f2-779f-4cc7-886b-5a6fdeff8beb,이진웅,jwlee@samaneng.com,+821052034792,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5ccc7abe-e151-4bed-a0ca-32d5c3571f69,이진형,jhlee10@samaneng.com,+821033199060,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7bac9ac2-12be-4dd7-aff0-8b4a35576fcd,이창,clee@samaneng.com,+821072802588,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,be716588-f469-41c8-87d0-0ba09a07a25e,이창걸,cglee1@samaneng.com,+821041093790,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15847784-0b63-46f9-953e-abab0330ee06,이창영,cylee1@samaneng.com,+821055445261,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98c3ccee-32e3-4023-aa54-35a01d76a380,이창영,cylee2@samaneng.com,+821056342534,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a55c63e-65ca-4079-b347-9bede739bcd8,이창욱,culee@samaneng.com,+821025969198,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1b4a8c01-a480-4b7e-b0ec-44a5d40050a4,이창원,cwlee1@samaneng.com,+821086087501,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6d0c299c-c213-4b0c-a881-161288208307,이창호,chlee2@samaneng.com,+821033276356,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,48362c0d-cd4b-4156-a649-908cb8c5007a,이창훈,chlee4@samaneng.com,+821038843733,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f6eee772-ca01-4090-94fb-10523798f52f,이천기,cglee@samaneng.com,+821033224373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7702cb1b-ad79-4449-b425-f680424b3e64,이철웅,cwlee@samaneng.com,+821071121987,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,83fd6399-09f4-4601-a4dc-44eeaf5b40d2,이철재,cjlee@samaneng.com,+821057738183,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,047f0378-224d-4b07-a266-e82582fce42e,이철중,cjlee2@samaneng.com,+821063091786,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6552f548-d724-4968-a359-434578fa4164,이철호,chlee10@samaneng.com,+821092442059,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c6bf8e5c-a3c6-4140-aea1-1906bd1db3ae,이철호,chlee3@samaneng.com,+821038991621,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1a0f004-b091-4dce-b4a3-c2910c81f00e,이충열,cylee@samaneng.com,+821024750720,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,77df1488-53bd-405b-bc15-1ea629bfd05c,이충호,chlee1@samaneng.com,+821091792532,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c45e7f65-e023-48b6-bc02-fa98e38d54fa,이충호,chlee5@samaneng.com,+821077060996,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a79ad27c-f06a-4fc7-a1de-7d86511481ea,이태효,thlee4@samaneng.com,+821029916370,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ebc7694-2d79-491b-8f75-eb8f8328479c,이태훈,thlee1@samaneng.com,+821088888791,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,51ba0dbe-13e9-40ef-9deb-c309c6ebf5f2,이태훈,thlee@samaneng.com,+821020429455,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,876b4804-a09a-4d71-9328-ccac218ef4b7,이태희,thlee2@samaneng.com,+821090707083,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e55aae4-9195-422c-a431-bfed9906d3fc,이태희,thlee5@samaneng.com,+821033164913,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b9da7648-ecd6-45e4-992b-885457e55c7d,이하연,hylee3@samaneng.com,+821085703728,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,efded780-1f12-4b77-bef1-b1a77c89b2e0,이학노,hnlee1@samaneng.com,+821045073175,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e637293c-6a66-4f65-a808-bcd2f3c2a86d,이학렬,hrlee@samaneng.com,+821032327067,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,576bc3aa-51cf-404f-b978-0cdf13e2c9e8,이해광,hglee@samaneng.com,+821067709446,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4b2a8c74-5101-4658-8d76-c6021108ec51,이혁,hlee@samaneng.com,+821096203636,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ade14eee-3d1d-4abf-86e8-e323e12ccab1,이혁우,hwlee1@samaneng.com,+821063674499,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6a9853ad-98dd-49bc-99c0-a08f56b1bfb9,이현규,hklee1@samaneng.com,+821026173005,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91eb9d0e-edcb-4a7a-accf-628ffc058df0,이현동,hdlee@samaneng.com,+821051820110,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1484b8b5-6b63-4c3f-bbe6-93a34dc06d2e,이현무,hmlee@samaneng.com,+821038265836,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b78ae9aa-12c9-4aff-9d4a-ac9182ca5c94,이현욱,hylee2@samaneng.com,+821031367620,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cbb83ff3-decc-4fc2-b6dd-e0cc94460f35,이현주,hjlee4@samaneng.com,+821094162902,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1275420-c5fb-45ad-85d3-9cb50b5c2528,이현중,hjlee@samaneng.com,+821024502090,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,530960e7-56b5-456b-9d44-b6aee3d5775e,이현희,hhlee1@samaneng.com,+821063071692,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,87f41806-be21-4630-99c2-4d0e12633194,이형석,hslee3@samaneng.com,+821028300602,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98e72223-ac28-44f7-886f-bf4869569c90,이혜선,hslee2@samaneng.com,+821034694626,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f462cd0c-5747-4a1d-bf62-e2ee6ba80ba9,이호준,hjlee2@samaneng.com,+821045781073,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cfcfd215-a75f-4be4-9f00-d500910b6bd1,이홍의,helee@samaneng.com,+821094152670,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7ceb34f2-1036-4805-80cc-09a4226d0074,이화창,hclee@samaneng.com,+821023668438,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c517511e-bf4f-4999-9aa2-70966da05536,이효석,hslee@samaneng.com,+821027998626,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5cd479a3-3d6d-41d0-8ecb-3826bdd81df7,이흔석,hslee4@samaneng.com,+821050336650,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1af44f0c-ebec-4a1f-9a45-70a0619b1d0a,이흥래,hryi@samaneng.com,+821088152816,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b26ebf7b-027e-4697-bf8e-af2703b1d692,이희남,hnlee@samaneng.com,+821087369202,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1c4245eb-bf76-4576-bf44-cbe250297e2a,이희명,hmlee2@samaneng.com,+821042327508,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e912453-93b9-46a1-9def-6a3e85327cf1,이희영,hylee@samaneng.com,+821023739827,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,163d8da6-047c-4702-9129-f12ef9652f75,이희용,hylee1@samaneng.com,+821052300915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,74383128-7e07-4e75-870c-0f9699507885,이희원,hwlee3@samaneng.com,+821023648763,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cc0f086d-3247-4088-b2e1-625ee4943323,이희일,hilee1@samaneng.com,+821072121963,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aef62733-67f9-4a8c-b3f8-1f60e2229228,이희정,hjlee3@samaneng.com,+821053003830,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fc4774f3-5969-46a1-88a0-6a0501cad411,이희철,hclee1@samaneng.com,+821074728640,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a66f3347-ca11-42d5-954e-2bc4831faff5,인광진,kjin@samaneng.com,+821030428533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,24980139-b65f-4ad8-8dd6-7582d4b4d52b,인디라,indira@samaneng.com,+821047460987,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,488782cb-8fb3-41f5-b9d9-ac252f7897d9,인치윤,cyin@samaneng.com,+821088384720,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f140a6d-02c3-4bb0-ab5b-971f78f67399,임경진,kjlim@samaneng.com,+821053545021,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75436715-dbb9-4f3a-ba7e-ccb6a3fe25ca,임계종,gjim@samaneng.com,+821026892787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,632a16f0-11a9-425f-849a-270c62221b2f,임광수,kslim1@samaneng.com,+821071079767,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,79af7046-fc0a-461e-a172-dfad451c113a,임근석,kslim2@samaneng.com,+821073604029,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2fa7f2ab-9932-4081-b1c3-3859e6c66c8e,임근선,kslim@samaneng.com,+821091182931,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,05f6bf91-6310-4b96-a551-422c8a7bac65,임기봉,gblim@samaneng.com,+821080280536,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f92279b8-0df7-4df0-8673-81206e3473fc,임동민,dmlim@samaneng.com,+821030963115,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,880d210c-00cd-4c2b-a078-e784d911ca1b,임동하,dhlim@samaneng.com,+821037804693,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bb91d567-c1b9-4ce3-a90d-d8bdbdf35131,임명재,mjlim@samaneng.com,+821063733404,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73c586c9-f4a9-4054-8d4e-fa038d5b83ac,임병훈,bhlim@samaneng.com,+821036379850,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e4c4664-0103-4961-b705-0821ac4abd8f,임세교,sklim@samaneng.com,+821033732751,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bbdcf099-c26f-493f-b433-b747b279e964,임슬기,sglim@samaneng.com,+821064168133,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,adeffa38-d03f-46fc-966e-a0f2ad5dd10d,임승현,shlim@samaneng.com,+821056563477,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,68b183c8-b4bf-43d9-9cb1-04522f1929dc,임언수,eslim@samaneng.com,+821041623562,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,08a5196b-eea2-410b-ba9c-78e0695e6357,임완수,wslim@samaneng.com,+821046558847,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4bfd6a8a-8809-4529-b431-937d97bd7e03,임재덕,jdlim@samaneng.com,+821074055129,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8835f5e6-79ab-4720-8380-2bff367ac274,임재만,jmlim@samaneng.com,+821023363379,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,51b38c3e-a1cb-4324-922d-9178ae0d6d4d,임재성,jslim@samaneng.com,+821028737933,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cc2b7e81-8629-4eff-b637-0b618b2f3a27,임정남,jnlim@samaneng.com,+821071289807,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f2747118-dda0-4e5f-9ec7-4d7796eb23fd,임정택,jtlim@samaneng.com,+821072167407,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f72af18-0330-428d-bc32-2eca4e9b40d4,임정희,jhlim1@samaneng.com,+821030391048,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6a0a77b0-832f-456e-9337-f97034dc1821,임정희,jhlim2@samaneng.com,+821031255200,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2894fb13-2324-4ef2-9f20-f1eb5acb02bf,임종열,jrim@samaneng.com,+821073505675,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,986797cf-dc36-4dc6-8a26-3778f864f08b,임지선,jslim1@samaneng.com,+821041897150,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,20fd8123-f537-4b57-9917-7f70a19eb176,임지훈,jhlim@samaneng.com,+821068666072,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75f79f45-29da-4a8e-8f1c-a512a34d9067,임채규,cklim1@samaneng.com,+821039331287,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,99ac313f-4520-47d5-9614-3c1975cc6693,임철모,cmlim@samaneng.com,+821022474263,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d3b266f-b3e5-4859-99e9-cb18f1b9a69c,임철우,cwlim1@samaneng.com,+821051388316,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dad87e1c-d497-4eee-b899-2db7d3be1f8b,임철우,cwlim@samaneng.com,+821036844415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c25fd41-23ab-46bf-aed4-23fdf73b1fc6,임해선,hslim1@samaneng.com,+821032058006,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f8cefc88-0a32-492c-a56e-55552054490c,임헌목,hmlim@samaneng.com,+821045474533,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14198e99-64a5-4f59-baa0-ad1d403372fc,임현석,hslim2@samaneng.com,+821034672505,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e33476af-9d33-4893-b566-4f1ca543559e,임현식,hslim3@samaneng.com,+821037057096,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92480d32-1212-46e8-9a9e-6ebca062e739,임현우,hwyim@samaneng.com,+821092413678,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4f99f34f-f9e5-4464-9ec5-0944a09eb2e0,임효진,hjlim1@samaneng.com,+821023308602,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7b33ff3a-70ba-4365-b1c4-7eae193293b8,장경진,kjjang@samaneng.com,+821052096744,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7357f84a-0ae8-4878-966f-7636bd53fe96,장기영,kyjang@samaneng.com,+821085429170,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d9145b79-19b0-4f43-9dae-be0200530133,장덕진,djjang@samaneng.com,+821099259111,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f053836-3c54-4035-ab56-75dd1b72d268,장동화,dhjang@samaneng.com,+821046906426,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44c59223-b9ac-4e06-93d6-1975186ceb1a,장두진,djjang1@samaneng.com,+821077348612,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,10d72a73-32ce-40d9-b106-d5439518781d,장래욱,ruchang@samaneng.com,+821077227663,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eed4fc3b-3ed5-4ef8-b268-0bfab2b7ba5d,장면학,mhjang1@samaneng.com,+821051914374,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d7db5751-4390-4e76-8c22-3686a93ff814,장명희,mhjang@samaneng.com,+821036597343,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,883e5e87-c47a-4565-94b6-f32cff9ec6cb,장미연,myjang@samaneng.com,+821073829329,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3cedf787-685e-4c4f-aff0-63993ed7ab7f,장민수,msjang@samaneng.com,+821022669267,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76295fe1-0e7e-4b06-b076-1ff658731664,장보식,bsjang@samaneng.com,+821089302667,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,00f952a0-5608-4f5a-b042-36b840736262,장부식,bsjang2@samaneng.com,+821052307194,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,768a9b9c-5a0f-4a15-8f10-cbecd096524c,장상현,shjang1@samaneng.com,+821067814757,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,94ffb63a-5eec-4d79-a30e-0d20054dc584,장성현,shchang@samaneng.com,+821038936436,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8419228a-f9d2-4f07-865a-6b94cd2dc56d,장세현,shjang3@samaneng.com,+821088319160,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,85dbca06-9105-4637-8294-717f36d1e5fb,장소희,shjang2@samaneng.com,+821072472960,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8248936c-2d6e-4feb-9bb0-a90f843ffe0d,장연경,ykjang@samaneng.com,+821035724161,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0c4e5777-0c23-47d9-a79d-b52928f211fd,장연수,ysjang@samaneng.com,+821037134370,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fced1a08-8836-468d-af5a-7a1e3a675b6a,장영규,ykjang1@samaneng.com,+821099120999,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf9d9ac2-7a31-41cc-9161-6adb37c2705c,장영완,ywjang@samaneng.com,+821039345840,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4d7af2ac-337e-4844-8a97-bbe2a4d3a81d,장완식,wsjang@samaneng.com,+821051404172,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,572cd34b-2ce4-4911-a86c-2da6a68a8d84,장우현,whjang@samaneng.com,+821036174197,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,05fb4801-ff54-4fc2-9b24-06b01cbbc977,장유선,ysjang3@samaneng.com,+821041359700,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6453a41-b0dc-4f97-a7ef-3bcaf3fd6a84,장윤정,yjjang@samaneng.com,+821027900655,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,96ac6bad-a456-4bb6-8764-63b500c228db,장은경,ekjang@samaneng.com,+821090096081,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0b7c2ac0-871f-4ed0-a9d0-5c98a9c638ad,장은호,ehjang@samaneng.com,+821045832116,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9b472d26-70cc-4b15-94c2-10750b25f20d,장익근,igjang@samaneng.com,+821072345599,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a5e8fedc-d5f5-4382-a4e8-e403ba2a8efd,장진영,jyjang1@samaneng.com,+821054695996,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2bb1be69-0007-4d42-b9af-72f62b326530,장진영,jyjang@samaneng.com,+821035554215,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c18cbb8a-f162-4ffb-bb1f-1bec15449720,장채운,cwjang1@samaneng.com,+821044339708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,878a761e-b156-4fc3-bb41-af6b92f70570,장철원,cwjang@samaneng.com,+821079798706,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a9f209d8-a51a-4916-8f81-7156d7cc7304,장하영,hyjang@samaneng.com,+821058136924,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,84b36527-0db3-4e61-8b97-74b25ad6d065,장홍준,hjjang1@samaneng.com,+821092774636,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,36682993-0388-4dfd-b9f4-e16288f91846,장홍준,hjjang@samaneng.com,+821074772282,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1060b99a-fe1b-411a-9d4c-4a9a88e807dd,장효송,hsjang@samaneng.com,+821080048866,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3c69a15a-0240-4237-868c-defbd5a6c0cd,장희원,hwjang@samaneng.com,+821077158241,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b9a36aaf-b38e-4456-ad21-29b6b48076b3,전남희,nhjun@samaneng.com,+821098284787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f376599c-bfd2-4705-b4e1-06c993ead385,전범식,bsjeon@samaneng.com,+821037517844,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98f3a86f-b224-4061-995e-46bd8ef89e12,전범진,bjjeon@samaneng.com,+821062022740,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f633bed-1c18-4417-85f4-e1d534004f16,전병익,bijun@samaneng.com,+821087814921,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4758503c-02f8-4253-811e-bc784e9c1ca7,전보민,bmjeon@samaneng.com,+821068760823,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,02ae554f-4164-4e26-a86a-c13ece8cf2e4,전상표,spjeon@samaneng.com,+821085330990,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b3c19356-a324-4bc9-b1ce-e11919334ecc,전성구,sgjeon@samaneng.com,+821030505181,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,263ec0c8-9ffe-4e3b-9369-c966014c7513,전소라,srjeon@samaneng.com,+821035970526,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2359dc31-5226-4c68-91d9-dc9d4428bc6b,전순환,swjun@samaneng.com,+821029575117,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cce268b1-39af-4b19-a7e1-aaf2a9a981ac,전아은,aejeon@samaneng.com,+821083892569,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,56d1f37d-93e3-4c5c-a1bd-2fbc9180ba9c,전윤희,yhjeon@samaneng.com,+821025058967,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c7f32c9c-b235-484f-9ef3-024675042dfd,전지영,jyjeon@samaneng.com,+821047243646,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,504ab98e-f8d9-419a-8865-a90d37b6fb3f,전태훈,thjeon@samaneng.com,+821050970819,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4463dff-a01a-4402-ae0e-41cbaa7efbb5,전필성,psjeon@samaneng.com,+821024478349,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e5124f4-bffb-4dbc-839e-4587b3623007,전한설,hsjeon@samaneng.com,+821038713838,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,623bd084-e97e-4a4f-aad4-a8e4e459065b,전현정,hjjeon1@samaneng.com,+821050492199,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fcfee728-3b71-4fce-a713-714ceb3e4244,전형근,hgjeon@samaneng.com,+821089098581,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,45ad04c0-e8d5-451a-8151-40dd6b99dcf9,전형민,hmjeon@samaneng.com,+821022892214,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a3baf885-8a43-4292-836d-18d29296e6ed,전형섭,hsjeon2@samaneng.com,+821049279976,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,927bfb60-f8c3-4572-89ed-cc6516a51bd3,전형진,hjjeon@samaneng.com,+821089742150,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cea9adf6-e97d-48e6-b3f2-3a903adfe4df,전호성,hsjeon3@samaneng.com,+821062648234,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cc17b352-97df-413b-907e-8d5b73ffd8c9,전홍찬,hcjun@samaneng.com,+821086365434,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eeae6f8b-6a09-4d86-aaab-443aa57798b3,전효만,hmjun@samaneng.com,+821063614318,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,26648142-14a9-4b39-bf2b-81c645e7f728,전희숙,hsjeon1@samaneng.com,+821047996445,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,59aa19b6-3223-48e8-825c-ec0b8ab342df,정갑균,ggjeong@samaneng.com,+821054995896,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0f187592-6cab-47e4-af9e-3d1acef90122,정경열,kyjung@samaneng.com,+821098844678,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe93ec02-02db-4ae5-9375-9e1e22cb141c,정경조,kjjeong@samaneng.com,+821062758654,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab7db4bb-1b3f-46a5-9236-631daccdc568,정계영,gyjung1@samaneng.com,+821034301694,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f117e004-ac8b-4fc8-ad49-970fc2e04f21,정공주,gjjung@samaneng.com,+821030821209,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f829a0cb-fa16-4d95-a53c-073dd9564a21,정광남,knjeong@samaneng.com,+821093985101,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f69528ee-0956-4d7a-8a2b-3dbead8642b6,정광섭,kschung@samaneng.com,+821027252794,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,92bb8d64-ae78-4de6-8a14-1b92b8eaec8c,정광호,khjung@samaneng.com,+821050288525,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6371aec3-2756-4846-9b73-3116aff80fa0,정국환,ghjeong1@samaneng.com,+821045426830,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,79fc3974-fc2f-4449-b58d-bc36c1cfdfd3,정권,kjeong@samaneng.com,+821038479912,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,102d7491-03eb-437d-bf69-61e64ba7ecdf,정귀한,ghjeong@samaneng.com,+821028098766,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35ae81a5-cdbf-43b0-aae7-1eb7ba5a4d6d,정규영,gyjung@samaneng.com,+821091719025,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,04268038-f776-4a97-9320-7b4c459385f7,정근식,gsjung@samaneng.com,+821090325901,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ede2916f-90bb-4ed2-8018-5b0699f43474,정기일,kijeong@samaneng.com,+821063784331,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4bc9c6db-d67c-4618-89e4-207908546b2b,정기철,kcjeong@samaneng.com,+821062102728,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fe3105ad-6f47-4e27-9c34-ad34fe2bda74,정낙훈,nhjung@samaneng.com,+821037729048,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,78627242-9ad2-486b-b8e5-6538901a1236,정다경,dkjung@samaneng.com,+821082118893,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,de70ec29-1c57-4f18-a79c-2cfd175bc804,정대환,dhjeong@samaneng.com,+821085249368,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4c069ee8-d46e-491f-85ee-7c14cb2780ec,정도윤,dyjung@samaneng.com,+821073975330,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d759bec4-3727-4eb3-8cb4-a0ef112a6cce,정동언,dejeong@samaneng.com,+821089269168,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f268bef0-676d-4a70-9b88-3d9ff2e3b5b6,정동희,dhjung@samaneng.com,+821041160744,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5135f170-6473-421d-8fb2-c82d4f651fe8,정만직,mjjeong@samaneng.com,+821088155463,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3a89bc85-d2c9-4e31-9caa-53cd237957d0,정미경,mkjung@samaneng.com,+821025734517,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35a54f55-a161-4dce-a146-fe7cbdd060bf,정상구,sgchung@samaneng.com,+821088769429,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a4abbdee-9cd2-4f72-a8dd-af2295442036,정상봉,sbjung@samaneng.com,+821090146970,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d17f2c4c-1362-4d1c-8a5c-42b2fec8b1f4,정서연,syjung1@samaneng.com,+821040019420,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d8a48797-4fc6-4bcf-9d80-fabce7ee7cb2,정선진,sjjeong@samaneng.com,+821046914634,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3569908b-7f03-414a-8b39-837b0eacb19f,정성오,sojung@samaneng.com,+821053301385,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89ff5f2d-269a-4b80-8397-aca29d4d868f,정성운,sujeong@samaneng.com,+821087398927,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b3aea9ff-37d1-4fc7-878a-5d98e4994ed3,정성일,sijung@samaneng.com,+821052028662,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9da6bf58-bdee-44ad-b845-a98d5513f166,정소연,sychung@samaneng.com,+821093760386,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,af952d48-67f2-45a4-86b2-8d77d0b9dad7,정소연,syjung@samaneng.com,+821040657111,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,614456b2-7ccf-44ab-892a-8a4fad21657c,정송수,ssjung@samaneng.com,+821033297855,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e182235-6e4d-4958-badf-42fe4f4fee1f,정수지,sjjung@samaneng.com,+821045165636,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9aae7d20-e92d-4dda-a552-b67e6c3f9f47,정순철,scjeong@samaneng.com,+821022919695,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e3e81647-a84c-4064-ac8b-024ecec5838e,정승엽,syjeong@samaneng.com,+821056604849,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b806c51b-3eac-4533-b79d-ff3f0d41676a,정승조,scchung@samaneng.com,+821086074863,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3448d2cd-4243-478f-9f9d-123f186326e6,정양성,ysjung@samaneng.com,+821036494830,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76885d97-83f6-4c1e-8ec3-49ebbbb73205,정연배,ybjung@samaneng.com,+821094888314,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,294e69bb-32a4-4256-8199-5909ce938a42,정영기,ykjung@samaneng.com,+821025284438,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c6d421c-5cee-4ef2-9bf3-263ea7d25ac7,정완순,wsjung@samaneng.com,+821073262207,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,69546963-ea13-461b-8185-bc0659643774,정용권,ykchung@samaneng.com,+821025404070,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0aa33b0a-7d90-4683-9090-df1c00351725,정용주,yjjeong@samaneng.com,+821075632406,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9308940d-b113-4354-8e39-7c1e50206dbf,정용찬,ycjung@samaneng.com,+821033629849,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,35c99308-5639-414a-8766-afa60fd908ec,정용헌,yhjung1@samaneng.com,+821064249868,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75038dce-58ae-4adf-883b-8c5d269126cc,정우진,wjjung@samaneng.com,+821063935170,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d5d91b12-19ab-4b64-85db-5b5528082cc0,정우철,wcjeong@samaneng.com,+821022039706,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fea89198-fb34-4d23-93a3-acd88561f0d9,정우형,whjung@samaneng.com,+821096048999,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9dfa0eb5-6c20-4938-bcdd-e1accc5dc9e0,정원빈,wbjeong@samaneng.com,+821085205128,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f9047983-f7c0-464e-8ba7-c70678a5f9b9,정원준,wjjeong@samaneng.com,+821095331373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f42cf8f3-7482-43bc-80cc-ce72dafb8ab3,정유석,ysjeong@samaneng.com,+821084330840,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f51507dc-ee8f-4ea9-9fdb-0fab33b968aa,정유숙,ysjung1@samaneng.com,+821090789306,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a7918efd-701f-4842-9fcc-7d5483c336a0,정윤호,yhjung@samaneng.com,+821071737563,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,556cdb5e-7da9-4a1c-a533-026cf9731766,정은구,egjeong@samaneng.com,+821065331479,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ca9b7424-2adb-4a3e-9d52-dd9c2c488d7b,정은선,esjung@samaneng.com,+821065881063,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e9f9767-1e90-453b-bc4c-8aec325afc54,정은택,etjeong@samaneng.com,+821064260724,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,891e3577-1e64-4e5e-a007-03b3cbb63b8e,정은희,ehjung@samaneng.com,+821036418731,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,219aa7e5-68d7-4789-971a-172ef5722c29,정의택,etjung@samaneng.com,+821074710771,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3256dd24-cb93-4997-b497-4fb5af7a5c97,정이준,ijjung@samaneng.com,+821086165495,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,27faa022-b15a-46dc-bf55-42ac1b68b1a2,정인식,ischung@samaneng.com,+821095153759,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f89f56b-4815-48ff-99fb-43971d061845,정일구,ikjeong@samaneng.com,+821090915821,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,be4e6dd6-8b1e-49f8-bcd9-583f221f945d,정일영,iyjung@samaneng.com,+821031175229,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c02e284e-3877-4e1e-ab31-497de4a3bce5,정일훈,yhchung@samaneng.com,+821052740422,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8a1640db-30db-4d82-b930-fe77d451d1c6,정재근,jkjung@samaneng.com,+821083570129,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4580d8da-2249-46e6-b23d-f0d2358f53ac,정재령,jrjung@samaneng.com,+821044015532,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e3cee4e-b1e6-4c8c-a72e-9e89047d9a94,정재열,jyjung3@samaneng.com,+821085571224,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39abd4ec-096a-4bc2-95e0-aba90a45dab5,정재영,jyjung@samaneng.com,,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2f1f93d3-b8e7-46a2-a130-7c40ce763eb9,정재욱,jwjeong@samaneng.com,+821042921102,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55e865d8-b83c-4269-9967-104e631d012e,정재인,jijeong@samaneng.com,+821036453940,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e16108d-4d66-4145-b779-eb76748b87d2,정정열,jyjeong1@samaneng.com,+821062783541,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,20ee2d1e-1c0b-460f-bdb7-8064fc2b4834,정종문,jmjung@samaneng.com,+821023773670,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f3cf3712-e2c5-48e3-adf0-1238f965e982,정종용,jyjeong2@samaneng.com,+821035951555,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bd098177-6bf2-40f8-aae0-18959243c7d9,정주화,jhjeong@samaneng.com,+821087737459,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5015c341-06ba-4d8e-9d4a-03a42f43eb09,정주희,jhjung1@samaneng.com,+821087968535,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4acc1d7e-bc6d-4ebd-84b5-fb54cf547017,정준영,jyjeong4@samaneng.com,+821094021422,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a0fa5372-6ffe-478c-b0b9-b739ae0232a8,정준표,jpjoung@samaneng.com,+821086000914,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eaa8e54f-7ed1-422d-be43-b553ea5fe15e,정지영,jyjung2@samaneng.com,+821033081958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4e3b9f92-ad99-4821-b408-23ff8d4b2958,정지현,jhjung@samaneng.com,+821023584298,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c9e3de8-7423-49e6-931b-cf2dc627ccb5,정진철,jcjung@samaneng.com,+821037030540,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f6560e84-3ddb-454a-b64b-205edd79b906,정진호,jhchung54@samaneng.com,+821085608159,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fdbb7a41-160d-4f6e-bccb-9122770820d6,정찬영,cyjeong1@samaneng.com,+821066019757,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e4e33983-eaba-4020-960d-a11657439819,정창근,ckjung@samaneng.com,+821034497598,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f9b23072-b4a3-485b-977b-282b629af368,정창화,chjeong@samaneng.com,+821051592139,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1c1528b-b656-4b93-817b-75cba0d4891c,정청담,cdjeong@samaneng.com,+821073774076,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9884df36-da10-4db9-bace-8573e4d260b1,정충원,cwjung@samaneng.com,+821043196104,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,76fe81f3-71ec-43cb-af2d-9f40df59c603,정태영,tyjeong@samaneng.com,+821065466676,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e8e4d288-3a62-4980-8208-1f0323183c6b,정평기,pkjeong@samaneng.com,+821032526420,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,486d82ef-bf25-4d91-9fb5-ee6898dd3fa0,정평회,phjeong@samaneng.com,+821066771218,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3e52cdb7-a560-456b-9080-6d474721436e,정해진,hjjeong@samaneng.com,+821087516520,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5e61f10e-98fa-4cc3-a86e-9f1b4ce57143,정현,hjeong@samaneng.com,+821072389897,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,96f9bb0b-4ee8-43a5-b920-89910e1d6fd8,정현교,hkjung1@samaneng.com,+821065662738,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e4ab6e36-6693-410d-b73c-8a3dff52c479,정현식,hsjeong1@samaneng.com,+821090764341,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1960b861-dd62-4ec8-ac21-f7d4541e7ef7,정혜영,hyjung@samaneng.com,+821084038856,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,56ee2c75-0a33-440e-9852-7cb02d62d482,정홍섭,hsjeong2@samaneng.com,+821063714759,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ff69fcae-e13d-489d-8a53-77068bf1859a,정홍택,htjeong@samaneng.com,+821020207766,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9f7275f0-eb38-4732-a662-93cbab60c076,정환주,hjjung@samaneng.com,+821027771300,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,edfa9b44-a365-43e0-b27a-449549761cd4,정희엽,hyjeong@samaneng.com,+821062763349,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,186032c1-4fd9-4f0f-a018-7705ed2b7f7b,정희원,hwjeong@samaneng.com,+821045111187,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a81f496e-bb25-4d1d-a961-4c1774718916,조강주,kjcho2@samaneng.com,+821027309558,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e13affa6-b6fa-4b31-a432-fde422cb1227,조길문,kmcho@samaneng.com,+821032231881,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c36ca711-e3c3-4a1c-8ed4-c4fd01883792,조남욱,nwcho@samaneng.com,+821052142386,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15163bbd-40a2-43b7-a888-fae54edb10f8,조대현,dhjo@samaneng.com,+821071106527,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f5085dc2-88fa-466f-9216-5befbe2d117e,조동진,djcho@samaneng.com,+821090303369,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,242a8685-78ba-4cb3-b967-7b5974bcca47,조래수,rscho@samaneng.com,+821023098950,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cfb89857-be8d-4548-aff2-a711f19ab6f1,조명훈,mhcho1@samaneng.com,+821077557922,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4dafd11e-2e65-4605-8a70-a7f3c8389752,조문국,mgjo@samaneng.com,+821066011548,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d1a87cef-dce8-4721-92e2-e8760f65a992,조미미,mmjo@samaneng.com,+821022899271,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9617d4ee-41ba-482d-a893-8a66f0624b00,조민현,mhcho@samaneng.com,+821093582449,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9d0938d1-85db-415d-9ac8-a1ba1636ee31,조병광,bkcho@samaneng.com,+821031719437,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eae1c683-648e-401d-ab1e-bf5abd2d2681,조봉현,bhjo@samaneng.com,+821072442448,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,37c487cd-d861-4023-879b-5c249b22a11d,조석규,skcho@samaneng.com,+821099042950,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,371402a4-1fd4-4a30-bd61-d08b96ac95db,조성곤,sgjo@samaneng.com,+821026572958,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,40743c44-cd2f-488a-b67e-56decee905d3,조성복,sbcho@samaneng.com,+821063925916,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fd45064e-3e2b-4410-a9db-d114dfe82f25,조성선,sscho@samaneng.com,+821088934997,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c4869e63-e049-45b0-859b-8e01541dd735,조성환,shjo@samaneng.com,+821033598623,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5aeaa422-df4e-4cd9-bbea-5f8036598402,조안기,akcho@samaneng.com,+821027453477,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8d907e4b-9b9f-4b8b-8d43-f9c81e333368,조연경,ykjo@samaneng.com,+821034999024,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd1f9b56-90a2-4b16-8169-eb86e47eb76a,조영민,ymcho1@samaneng.com,+821042447740,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,02f830a1-c58c-4a8d-8107-0c9ba5ca31dc,조영삼,yscho2@samaneng.com,+821076080148,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a8d3ae27-e543-49fc-9830-28c48f53e529,조영수,yscho1@samaneng.com,+821036138690,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e7019c8d-c2bd-410d-b1c2-3f1c7b5e42f7,조영훈,yhcho16@samaneng.com,+821029254600,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,416a5657-964e-4a16-a79b-f1a7b61a25a5,조용근,ykcho@samaneng.com,+821038777474,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bdec0122-05cd-45af-94b8-a845a738ccd4,조용익,yijo@samaneng.com,+821033719098,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9769ff34-6193-4892-8631-22133eca0be4,조우진,wjjo@samaneng.com,+821091429719,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1a1838d5-0955-4ea0-8f22-04b9336424a9,조원석,wscho@samaneng.com,+821025558358,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2e227b70-20c9-45ec-9562-e226f5e71a13,조윤상,yscho@samaneng.com,+821087584145,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,39e676d3-be17-4320-90f5-7935f897b16b,조은영,eycho@samaneng.com,+821020747268,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4575ef1b-b222-462e-b423-72dbfb5d904d,조인철,icjo@samaneng.com,+821024292975,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,aa760e29-4692-4b12-93f3-14c2e92ca6c2,조인환,ihjo@samaneng.com,+821071578360,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ae34f60e-1c47-46e7-b7af-fac6e5b2dba4,조재영,jycho@samaneng.com,+821049452574,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5a6a985a-774f-49bc-b7b3-d595a0b622c7,조재유,jycho1@samaneng.com,+821071047787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,779ea58b-839d-42f4-89c3-a714f3814cb6,조정묵,jmjo@samaneng.com,+821096172579,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,581c45b8-d26b-408e-a576-457c7e502940,조진수,jscho1@samaneng.com,+821033588348,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,acbaf17d-a407-4111-9b1b-fef6331f0782,조창형,chcho@samaneng.com,+821066503437,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,80a07018-c6f8-495a-97e5-098a498aa527,조항언,hujo@samaneng.com,+821094989879,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2883b205-05c3-40dc-ad36-f34f8bc1c527,조현선,hscho@samaneng.com,+821056022635,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bcf80c67-a414-4fd3-beec-b6e6192f781d,조혜경,hkcho@samaneng.com,+821096924865,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,638b9e00-bc83-4e3f-9637-a9e230cd0e1d,조혜정,hjcho@samaneng.com,+821090707534,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c54a8119-e1b2-4767-90ca-d45b2eac65f8,조호연,hycho@samaneng.com,+821077059193,부사장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e42d6631-a5ad-4f6f-8beb-479b6931b893,조호현,hhjo@samaneng.com,+821038446054,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1995c362-7ab3-4fae-9be8-3154d5245402,조흥석,hscho1@samaneng.com,+821075171125,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0375a03f-8404-4778-90d9-51b8cd746a2d,주삼언,sechu@samaneng.com,+821037136443,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dc9d6fc5-934d-44b1-8fe4-d418909b34e7,주승민,smjoo@samaneng.com,+821054760454,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5bca3ba9-2c54-4e75-84f9-ced9df54db2f,주영덕,ydjoo@samaneng.com,+821032392209,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c929ca70-9378-4385-a46b-6137d1cea9df,주현수,hsju@samaneng.com,+821045617146,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,02b5e8be-447f-411a-9ab9-e0b2873c504d,주호식,hsjoo1@samaneng.com,+821025698341,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3c9b1821-30fd-48fa-96aa-af71b2c46836,지덕영,dyji@samaneng.com,+821093709995,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1dba00e4-8024-46ee-8666-d80b1fc82fbf,지성현,shji@samaneng.com,+821048799219,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a9cc40c6-ab59-45d4-8982-fd7f718f6a72,지승환,shjee@samaneng.com,+821037921538,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a1717b4-35a6-433a-8930-b5089f5edae3,진민화,mhjin@samaneng.com,+821096123655,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c61bc884-300c-470f-a48b-5f66f9f23e07,진충문,cmjin@samaneng.com,+821077263562,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0648d8b4-4308-43bc-8416-06e1d8378808,차기준,kjcha1@samaneng.com,+821071591280,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5c7f8bae-6eeb-453f-aebc-08542a47fe3c,차문자,mjcha@samaneng.com,+821087260915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d5e4716b-1a66-4cde-b2ea-244beaba352f,차승구,sgcha@samaneng.com,+821054340021,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,670d267c-6166-4da1-ab47-e53c8ab6b6b6,차영주,yjcha@samaneng.com,+821034205029,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,99337cac-3fc8-4c98-a6e2-0c81b63046a3,차진한,jhcha@samaneng.com,+821087598483,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6573e26f-c02d-44b0-a8db-34e21f541177,차호준,hjcha@samaneng.com,+821030601924,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da26c5d5-a80e-48ce-8f95-5d5ab325c53f,차홍근,hgcha@samaneng.com,+821025183310,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6fe346cb-fb7d-48e9-8e83-0edd1b749d1f,채병구,bkchae@samaneng.com,+821087991708,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9a437c61-97a9-4f21-be47-f74ee899ad40,채정기,jkchae@samaneng.com,+821027379310,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0bf9da01-a81b-4238-b488-1796bac6aece,채종현,jhchae@samaneng.com,+821040475068,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e25bd7b-1668-443a-9d73-b408f891ad78,채희웅,hwchae@samaneng.com,+821089851750,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6484a0b2-b166-41a4-9f40-28fe6c04c96a,천민규,mkcheon@samaneng.com,+821036669246,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6afb9d42-b568-4c82-b9a7-705796ef83b7,천세현,shcheon@samaneng.com,+821085539438,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2dd6ad11-5da5-43a0-9793-c6c13546f713,천승호,shchun@samaneng.com,+821053198039,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1656fc5a-401e-442e-a7d2-99655bd6712f,천영석,yscheon@samaneng.com,+821027630721,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,396e1771-501f-47a9-a14b-f6589387404b,최경문,kmchoi1@samaneng.com,+821033489481,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f94c377b-d1f2-40b5-8326-cd4a72c8cc83,최경수,gschoi@samaneng.com,+821044678367,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8926ec8c-1909-4df9-9c09-076a902ffe41,최경호,khchoi3@samaneng.com,+821033064892,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f897eb58-494e-4a61-a929-abe6b2cfea1d,최광민,kmchoi@samaneng.com,+821033456979,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ecf9972-ac24-464d-898f-b1160bca27f7,최광수,kschoi@samaneng.com,+821087621657,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,881fbbb1-c955-4ed6-8b2e-6bf9677afc7d,최광일,kichoe@samaneng.com,+821085801239,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6e5d3665-87b6-4d62-9e5c-0a95015a9023,최광현,khchoi@samaneng.com,+821021319620,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8fd2e4ad-4510-491a-a520-01ce9731371b,최근영,kychoi1@samaneng.com,+821098991459,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,53c400d9-9533-484c-aad2-15e3b1c12811,최기연,kychoi@samaneng.com,+821045747251,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ebe3d6e1-24cf-40f3-80ba-de1c1ba1c6c0,최기평,gpchoi@samaneng.com,+821095766831,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ab352fb1-9040-4447-9ea3-7ef463ff52b2,최기호,khchoi2@samaneng.com,+821052897597,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,363b9837-0359-4f74-8f98-545fa5d30604,최길용,kychoi2@samaneng.com,+821064031460,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,299bfbb6-39a1-4212-9589-2cdffc4f8e9d,최낙용,nychoi@samaneng.com,+821087634015,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7d4a5583-faee-445d-90bb-0cf9d1978089,최난,nchoi@samaneng.com,+821036296144,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fa3d0d72-e1cc-4101-8e95-dbe13a561a4f,최대선,dschoi@samaneng.com,+821073089488,회장,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b8a44e3b-5e4b-47fd-b830-6b4da6a7b59b,최도현,dhchoi1@samaneng.com,+821094321681,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b8093104-ab89-49d9-a488-adc38880767e,최동규,dkchoi@samaneng.com,+821042122606,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,362d33b1-8ad0-41ab-85a5-aa600bffa53d,최동석,dschoi1@samaneng.com,+821071417409,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3cbf4765-e147-4e99-a3b3-3e9853d406fc,최란,rchoi@samaneng.com,+821088478117,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ef33c824-b893-40ab-8e13-14400988e564,최무호,mhchoi@samaneng.com,+821063103250,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4f8733a3-fe1b-4819-9002-c630af71102d,최민주,mjchoi@samaneng.com,+821042528890,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,23e7b105-5479-4ae8-8835-6ebd6c941891,최병석,bschoi2@samaneng.com,+821087633173,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9512158d-66d4-4e68-9d7b-8aac5d00ac4c,최상민,smchoi@samaneng.com,+821038108319,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,87d46987-c68a-44b5-a355-ea8e2eba7557,최상인,sichoi@samaneng.com,+821039303809,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d1210c06-47a7-495b-89b1-1782ccbbddd2,최선미,smchoi1@samaneng.com,+821049249942,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0330a54e-aafc-4897-b62e-2a00b9470c61,최선환,shchoi3@samaneng.com,+821051425733,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,edf52d13-a023-479a-a19e-0424355de02c,최성균,sgchoi@samaneng.com,+821037190218,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b4dae592-91ee-4d05-a7e8-7df0a7d366e1,최성배,sbchoi1@samaneng.com,+821090756415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3880e333-b6ba-4275-8250-076767296210,최성환,shchoi1@samaneng.com,+821038721345,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,265c39de-3265-4580-951a-0f953c854dff,최솔비,sbchoi@samaneng.com,+821035386354,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,61b29aa8-eae0-4c12-a3d3-3db8fddaa387,최수혁,shchoi4@samaneng.com,+821030470409,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d22fbd11-cb82-4ba1-a958-b4fe87262a73,최순호,shchoi5@samaneng.com,+821035543248,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dcacf98b-7c9d-4ac6-9a39-0b7ccb48b78b,최승우,swchoi1@samaneng.com,+821094061137,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,93686abb-473c-4760-958a-33db8abffe7a,최승제,sjchoi@samaneng.com,+821023509079,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,14a96edf-3eb0-43fb-86ea-830398ee9e59,최연서,yschoi@samaneng.com,+821077421521,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b02178ea-4c73-49c3-a0c2-40241b95f463,최영록,yrchoi@samaneng.com,+821053647168,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ac8f4de-ccf4-4bdb-a3bb-5ebb1bed9c4d,최영민,ymchoi@samaneng.com,+821028281065,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f746e954-f4a0-4869-b39c-2ec989862648,최영욱,ywchoi@samaneng.com,+821089325794,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8e3b44d2-a728-4482-9e05-1072ca7fcde5,최영종,yjchoi@samaneng.com,+821028164616,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2bc066ac-38d1-4275-929d-4e85f1e0e424,최영주,yjchoi4@samaneng.com,+821023651115,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1080f04e-3430-415a-8613-daf0bb9a4b8a,최영훈,yhchoi2@samaneng.com,+821074530915,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,96a7516d-cefb-4e27-8159-739bd73d5f0f,최오혁,ohchoi@samaneng.com,+821035660631,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6150d74b-3188-405c-9eee-07ff854b315d,최완동,wdchoi@samaneng.com,+821046622081,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9c5aa551-090b-41e7-a0a9-5db73affeb27,최용준,yjchoi6@samaneng.com,+821063292997,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c2496d9a-4ad0-4605-a93f-94643059a662,최원석,wschoi1@samaneng.com,+821087153101,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,070ace2f-4442-4431-b36c-d3f4e65b0677,최원준,wjchoi@samaneng.com,+821050686415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3df41a55-7a50-4ac6-b63e-32d2c0bad1da,최원현,whchoi@samaneng.com,+821092282725,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4b68644f-44c4-45ca-aeb2-6c94a3bde010,최원형,whchoi1@samaneng.com,+821099558956,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,87230909-b8f7-43f2-b6cc-9de5a9cfa862,최원호,whchoi2@samaneng.com,+821067422486,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f44c0b08-ebf6-4cea-ab42-b7cbed111f61,최윤주,yjchoi2@samaneng.com,+821047592050,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a0ae86d-fda2-4bc1-abcd-8bcf4464eb10,최은선,eschoi2@samaneng.com,+821090753786,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0bcd4d1c-72f6-4ed0-a389-73741afc167a,최은수,eschoi@samaneng.com,+821037181273,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7fd412f2-c643-478e-84e3-2d96a00c96ba,최의균,ekchoi@samaneng.com,+821041727117,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0a4b9a59-35be-4cd4-8e34-f4f27c4c30b2,최장규,jkchoi@samaneng.com,+821087494504,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3830f512-5a7f-411d-b5b2-1a4db412c0a3,최재영,jychoi@samaneng.com,+821036509350,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,73fd8b7e-5999-4cf2-ba4a-fa35cf10650d,최재우,jwchoi2@samaneng.com,+821076507194,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,273c01f8-999a-44b9-9287-71fad5f04793,최재원,jwchoi6@samaneng.com,+821085624709,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,47f67ef4-b5aa-4846-96ff-1a03abe3362e,최정호,jhchoi5@samaneng.com,+821062946098,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c3494d32-a2cc-4144-832c-5e6ccc413f10,최정훈,jhchoi4@samaneng.com,+821023979496,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,44294968-6628-41f7-909c-2d27eb7d215b,최제현,jhchoi7@samaneng.com,+821038973235,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ce5dcbd3-1a6c-40db-8687-27d87ebf6c68,최종원,jwchoi5@samaneng.com,+821066824520,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,fa70eb83-f645-4ee6-90be-988a58918105,최종학,jhchoi9@samaneng.com,+821082128373,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1f24fcae-ebda-4a47-b5d9-8064a96d22c7,최종환,jhchoi@samaneng.com,+821033838997,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,7043a8b6-82af-46de-8b97-5daec967a55b,최종훈,jhchoi1@samaneng.com,+821033865216,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,edb1bfd7-ccfc-4d3a-9723-a00f11170a2c,최준환,jhchoi8@samaneng.com,+821056907287,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e644b1ad-4bb8-4179-a957-a5d429cc0528,최지영,jychoi3@samaneng.com,+821074562864,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,17b72dcf-f81d-4082-b0da-c4bfaa1ef55f,최지훈,jhchoi2@samaneng.com,+821038446060,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8f1b425e-1927-4498-be04-e8b1ccb2694b,최진우,jwchoi@samaneng.com,+821027522249,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,64ef6773-0ab3-4a10-a88c-e707e4303892,최진원,jwchoi4@samaneng.com,+821092603372,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1dad0012-10b7-4ecd-b3ac-89b6b1caa15d,최찬수,cschoi@samaneng.com,+821036485807,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e529feb0-31be-4229-8cff-680d07cac1eb,최찬용,cychoi1@samaneng.com,+821092206425,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,28abb7d0-fd90-4f58-9601-dde55ec96f08,최창열,cychoi@samaneng.com,+821020362991,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5eb428f0-1810-4d08-8acf-5a55eee27e9b,최천동,cdchoi@samaneng.com,+821035330287,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4548d00a-a564-4b0c-8606-f089c1d0dee2,최철준A,cjchoi@samaneng.com,+821050201092,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,242ac320-5c67-4876-bfd4-9ce1af89e321,최철준B,cjchoi1@samaneng.com,+821055495094,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,330233dc-78e7-4903-9252-524383cb67eb,최현민,hmchoi@samaneng.com,+821031141901,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e5e690a6-72b1-4418-80c7-feecfd43f3c6,최현석,hschoi@samaneng.com,+821045474704,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8258b72e-61f7-44d0-8585-219fc7a520c6,최현진,hjchoi1@samaneng.com,+821032222898,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a70a79d9-b1d4-4643-beff-f8e54d2c6291,최형규,hkchoi@samaneng.com,+821072036670,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,369a0276-c234-46d1-9315-b1ce3b3ae22b,최형기,hkchoi1@samaneng.com,+821054771048,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1be53325-fcf2-46f3-af27-911b9d147b9f,최호삼,hschoi2@samaneng.com,+821024918848,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2e047ede-f03d-4769-9ec9-e44b9c2af555,최홍찬,hcchoi1@samaneng.com,+821092662221,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,61371ea1-f3a9-4d26-a30c-8973a4075528,최희윤,hychoe@samaneng.com,+821030781858,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cd196fcc-2825-447c-944f-960c2197db80,추경일,kichu@samaneng.com,+821035316507,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,87ec8e25-f10b-46f3-95a8-8c5f37aebd0b,추재영,jychoo@samaneng.com,+821050004596,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,264c9d82-b9f7-4d51-8a2c-2a0c54f9fce7,추정호,jhchoo@samaneng.com,+821093096123,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,19d43439-c4e6-4068-b9ee-a898d507a529,콰윰 아딜,adilqayyum@samaneng.com,+821037511786,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,db450ff8-8341-484c-a3e2-cc0cb1232660,태종태,jttae@samaneng.com,+821085483936,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8e1ae8f7-9d48-4f91-88de-a1ade5585639,팔콘,falcon@samaneng.com,+821098404432,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,724ffb07-f290-4683-b7b6-91c174e573d3,표범열,bypyo@samaneng.com,+821037228977,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1883e50b-f8ce-466b-b2e8-9d0d2a28e681,표연준,yjpyo@samaneng.com,+821092232383,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b975bd4a-f340-4dde-a592-d251fd5d4a5b,피태희,thpi@samaneng.com,+821072116862,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d8ca555b-5e7d-4a89-a6d3-7b7f519211ff,하광효,khha@samaneng.com,+821085087130,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4502e988-9cb4-42df-9719-b6bc31067ee4,하문수,msha@samaneng.com,+821087923022,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d50ee488-6c9d-4e0a-a812-73e18ddeb1e0,하민호,mhha@samaneng.com,+821062139331,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,20699867-811e-4d90-9d93-16267a75fb64,하성호,shha1@samaneng.com,+821033172365,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91a6ee4b-78e7-45ae-8e1e-6aeffea421d4,하신용,syha@samaneng.com,+821037328209,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3f9593e1-28c9-4185-bf7b-e5e84b464d46,하연재,yjha@samaneng.com,+821052858488,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e60cb502-d623-4cc9-9f42-d83253772026,하재성,jsha@samaneng.com,+821041843099,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0d447a85-2696-419a-bd57-a2951cef0ae7,하창봉,cbha@samaneng.com,+821091533492,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8e1e8e7a-5b48-48ca-ab60-cdd20b05a1ae,한경섭,kshan@samaneng.com,+821043900486,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6aff911c-b924-40cd-8c95-19673c89fa33,한국진,kjhan@samaneng.com,+821031609817,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0e5c82d9-a869-4095-8d75-8d6a9983638b,한나영,nyhan@samaneng.com,+821027735679,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ef6f0141-e4d4-4376-af9b-3c6e0d932ea7,한대영,dyhan@samaneng.com,+821065362423,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d0e08856-9470-46ca-af69-b0c60cd021f5,한동윤,dyhan1@samaneng.com,+821036613066,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,91989c9c-a42c-4e54-b469-afc6844779ce,한동현,dhhan@samaneng.com,+821034744403,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c116ce6-6d13-4ebe-891b-51fa9107947e,한명석,mshan@samaneng.com,+821024569075,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f470af11-609c-4a0c-bec7-38143bd396cd,한민정,mjhan@samaneng.com,+821031474042,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cc1c094b-5ecc-47b0-9f6b-6ea293a0d569,한상연,syhan@samaneng.com,+821086002267,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,424dfa4b-ae19-4150-865b-1dbe3a5897e4,한상욱,swhan2@samaneng.com,+821036809545,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,bf6a5882-c4a6-4e8f-a7b8-1943e59684d0,한새란,srhan@samaneng.com,+821062979594,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a6eb70f-f17b-4003-be50-40e80f2b631f,한선구,skhan@samaneng.com,+821033628437,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,998893d2-e445-4644-9775-f9621c6b477d,한성숙,sshan@samaneng.com,+821063656368,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,336bc6ad-6c4f-4d4b-9ef0-0804df6b8485,한성원,swhan@samaneng.com,+821053158821,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,da66bfa7-506e-41fa-908c-f48e6a257f2c,한승완,swhan1@samaneng.com,+821044179578,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eaa56df1-6f77-4420-8482-80c4ca5c52b9,한승철,schan@samaneng.com,+821056119294,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6769daf3-a89f-4b27-8347-78e5f18aa308,한승한,shhan@samaneng.com,+821090729518,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,728420dc-11c8-44bd-bc2c-1f8a4c926e57,한영민,ymhan@samaneng.com,+821094803410,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1f08c980-4007-4ab4-bd05-50413b68b8bd,한용배,ybhan@samaneng.com,+821053291772,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,25d57002-b751-4793-99cd-9bf06a040146,한용우,yuhan@samaneng.com,+821088463762,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,563cd1cf-849e-4ca8-b530-86871710429c,한은홍,ehhan@samaneng.com,+821095989298,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3bf7b90c-e1c3-46d3-9c41-6bc53f93838a,한재욱,jwhan@samaneng.com,+821032035178,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f639bbad-8129-4f3f-b148-14a776f44d34,한재형,jhhan@samaneng.com,+821067226635,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4ba803c1-d1a0-4d32-a043-2c25e0186500,한정규,jghan@samaneng.com,+821087241180,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,372b48fc-3870-4c23-89fb-7ae0f98bd9a3,한정식,jshan@samaneng.com,+821029877910,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,82cc7064-49dd-43ba-b409-c41a0ca3eca3,한정주,jjhan1@samaneng.com,+821036285526,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a10d6f9f-93e2-4daa-82f1-290a185583c6,한주영,jyhan1@samaneng.com,+821090354799,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6969a801-910e-4fbe-bcc6-e0e54b88daf5,한준영,jyhan@samaneng.com,+821097254561,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b141e8ed-200d-4df9-98e0-f652e34e2c9c,한지훈,jhhan1@samaneng.com,+821091939114,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2a19e3f0-02d4-4a87-9530-9a03d6053ba6,한창학,chhan@samaneng.com,+821090199190,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e6d04423-81bc-45d7-b408-a85904390c1c,한택림,trhan@samaneng.com,+821037709401,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,050beb86-f9c0-4da0-abef-9dd219639c28,한하람,hlhan@samaneng.com,+821062469552,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3d144843-839a-477f-a89d-5ec44f6fc458,함덕재,djham@samaneng.com,+821046155157,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0b87ec32-5bf1-4dd8-b339-319dfcdd966d,함해운,huham@samaneng.com,+821087619184,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b7a1eab6-224e-4097-9101-83c2314b2fec,함홍일,hiham@samaneng.com,+821089275440,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,947bc01a-1b5b-4691-a93a-4c6f874efea0,허동우,dwheo@samaneng.com,+821038718984,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8e7e9166-7546-4893-9f25-0c905b5f85e6,허두홍,dhhur@samaneng.com,+821036757944,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,55f420e6-b07b-4e55-a7f9-a0d4ad587f8f,허만혁,mhhur@samaneng.com,+821077281066,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e52f79c-b898-4b69-9511-f9a1aa8993e5,허봉주,bjher@samaneng.com,+821027382695,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6af92202-d267-47a0-9648-ee9833232219,허성무,smhuh@samaneng.com,+821034349403,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c5f54b25-3e3b-41ef-90f0-ef102cbe711c,허세욱,swheo@samaneng.com,+821032627883,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,a6e4fb35-ef88-44c8-88fa-2905e7196389,허승,shur@samaneng.com,+821090278780,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ca0b31e-a3ca-438d-8ee4-76804cbf9cf1,허영회,yhhuh@samaneng.com,+821037122881,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,37b5b31f-74ce-4787-a5f2-201461c32761,허용화,yhheo@samaneng.com,+821062212339,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,78dbc4a4-6456-4b61-be4b-d477b6c20518,허욱,wheo@samaneng.com,+821045956905,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,94858918-2b49-499c-8c86-82dd09eab9af,허정근,jkheo@samaneng.com,+821074845846,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,5a9f8547-d19c-4ea6-b956-71a28c1f7d2a,허준호,jhheo1@samaneng.com,+821032783803,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,1e26d3eb-e7a6-4e62-9afb-422b52c80f8f,허진경,jkhuh@samaneng.com,+821023293992,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c912053-56c4-48ec-93b5-f84027a97f4e,허창택,ctheo@samaneng.com,+821065101449,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dbf055f0-9382-41c9-9e78-8ebdba970874,허한구,hgher@samaneng.com,+821094117600,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,94ed703f-72aa-4a16-b4fe-11b47dd53c23,허현,hheo@samaneng.com,+821025025850,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8c784ede-f0dd-4db6-add5-f5505fb841d8,허후,hhuh@samaneng.com,+821087119581,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,071f3e14-2191-411a-bd82-91c70496115b,허훈,hhun@samaneng.com,+821082298397,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,de93fb65-19c1-477b-b73f-c55c21063060,현기림,krhyun@samaneng.com,+821099704267,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cccb2fff-7b6b-47d0-8494-e48a91e00d64,현도현,dhhyun@samaneng.com,+821043424205,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0c2c70a0-d39a-4792-b74e-1ac053b12211,현민종,mjhyun@samaneng.com,+821023062253,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,93457498-900b-41ac-a567-95933b2e9eff,현종내,jnhyun@samaneng.com,+821045576787,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,71f1d301-ca4a-4eee-9ec1-01f44b28a7c2,형남석,nshyung@samaneng.com,+821087296512,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ecf765df-6980-42d8-9124-8d2b0c9adc91,호샘물,smho@samaneng.com,+821093686397,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,54150eb3-a8d3-4039-8a77-c376ab271013,홍경의,kehong@samaneng.com,+821039496404,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,0ef8cb6f-ade2-45dd-8af8-2422bf85f3c9,홍경표,kphong@samaneng.com,+821046650337,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,75676056-b83d-43f4-b943-ead75ea28ab9,홍관영,kyhong@samaneng.com,+821086679641,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,967d54e4-0857-4d4b-b990-fcb85067cc57,홍균표,kphong1@samaneng.com,+821053547118,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,63b50c40-a034-41eb-8a60-b73f5ac10b7e,홍기석,kshong@samaneng.com,+821036673020,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f2bd3b27-6ea3-4913-b53d-5d30a18cdc8d,홍기훈,khhong@samaneng.com,+821091928988,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16fdf54f-f298-47c9-a76b-f4d2792a0606,홍도균,dghong@samaneng.com,+821028445736,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,819618c2-45ca-4646-b69a-aa255b241006,홍두표,dphong@samaneng.com,+821026859381,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3067f526-3903-429d-8930-912127beec80,홍만기,mkhong@samaneng.com,+821034106520,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,dfcd03f5-172e-4f54-816c-106b55675862,홍만표,mphong@samaneng.com,+821037736822,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,41f5e8f3-c5d7-4cd7-aa57-d69701145d94,홍석찬,schong@samaneng.com,+821090916972,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,760f7fdb-363a-4ed3-b94b-390ae8520e6e,홍성덕,sdhong1@samaneng.com,+821058581001,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,110785d4-28b0-41b8-94cb-899e9e5bf3d1,홍성돈,sdhong@samaneng.com,+821037778178,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,62d463cb-c034-4cd9-aef7-62a346d353f6,홍성빈,sbhong@samaneng.com,+821051945698,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34a138a5-94f4-499f-b95f-6c47e72b84d4,홍성일,sihong@samaneng.com,+821030475056,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,11971347-c3fc-43a6-885e-212ac22ed020,홍승호,shhong@samaneng.com,+821063009515,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c3f57fe3-6af4-41cf-b9dd-bf415897c84e,홍용의,yehong@samaneng.com,+821047011466,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,16c91297-ab54-4fa4-8459-dbd79e223404,홍원표,wphong@samaneng.com,+821071063882,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,15e01909-57ce-4c45-9087-0b3c3cb39532,홍윤기,ykhong@samaneng.com,+821090027162,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,eeb1fc7b-e2de-484b-aff4-d28c21c4bda8,홍윤정,yjhong@samaneng.com,+821088094916,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,89336b21-6db0-4e19-965d-9914f2f5e631,홍익표,iphong@samaneng.com,+821063415377,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,feb8437c-a633-4fb9-9864-1be93b49656d,홍정우,jwhong1@samaneng.com,+821031510454,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,49fe3fac-6698-447f-b587-2c6b596d4293,홍정우,jwhong@samaneng.com,+821086026241,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,ea9622b0-bdaa-4133-ae89-ab0080a4bf88,홍종성,jshong1@samaneng.com,+821055821288,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,07b6ba0e-9fb4-46d6-9509-b789b62b680f,홍준기,jkhong@samaneng.com,+821074406339,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,869ea65e-0579-4c87-90c3-c99b822806b6,홍준영,jyhong1@samaneng.com,+821066523415,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,638e70d0-43eb-40b7-8c45-2b315e164735,홍진엽,jyhong@samaneng.com,+821035858551,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,98b74ebb-e50a-494c-8e09-1f2e9a1f988e,홍창선,cshong1@samaneng.com,+821063488856,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,3bfc0fec-6dcc-4360-8976-678347575e78,홍창수,cshong@samaneng.com,+821026222321,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8838a929-f134-4adc-9494-e1da1255b0a5,홍창오,cohong@samaneng.com,+821030072991,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,c0e314de-c571-4407-9cb3-8b947f2dabe5,홍창의,cehong@samaneng.com,+821095779080,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,cf5eb409-f00c-46b4-9cfd-ec13cc44e793,홍현표,hphong@samaneng.com,+821085686098,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,4a77d4b4-3185-4a93-949f-c7a610b9e8a1,황건욱,kwhwang1@samaneng.com,+821090092370,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,8fa13de1-174b-4761-bc39-626a9c2e76d7,황경우,kwhwang@samaneng.com,+821032317920,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,6074b497-a30a-4a87-ad75-3be9f150a4cc,황길용,gyhwang@samaneng.com,+821058803302,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,e7c57f8e-d436-4004-abd9-28c8495caef1,황동규,dkhwang@samaneng.com,+821085929711,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,34ab5ecc-1b85-430b-8607-332cd20ee44e,황서우,swhwang@samaneng.com,+821037000076,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,2f8622b8-7333-4437-8a2e-e254ebfc85be,황윤성,yshwang@samaneng.com,+821030555393,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,66a8f8ba-3fbe-481b-806a-3476a167d4d4,황인백,ibhwang@samaneng.com,+821072701943,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,58183ead-4ab2-4d22-93f9-bddb6140c33d,황인성,ishwang@samaneng.com,+821062147093,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,d3e4811a-9cef-42e1-8dd1-99649d80aae1,황재민,jmhwang@samaneng.com,+821097002652,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,b1df8524-1e91-4f65-9733-27470932a5af,황준호,jhhwang1@samaneng.com,+821023459281,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,28f81f74-f281-4b2e-9e54-d90fc28da3cb,황지영,jyhwang@samaneng.com,+821092617299,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,346e9bea-0741-425b-95e5-b214537c846f,황태진,tjhwang@samaneng.com,+821037691899,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,f9eb1507-cefb-40a9-8a34-abf02886e824,황하수,hshwang1@samaneng.com,+821063515807,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,69c2ab47-806b-4155-b00f-b53ebc373e61,황혜정,hjhwang2@samaneng.com,+821093882073,,,,Y,department_empty +9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,9caf62e1-297d-4e8f-870b-61780998bbeb,삼안,saman,70440976-5186-4f8f-b10e-2134885eded3,황혜진,hjhwang1@samaneng.com,+821071486755,,,,Y,department_empty diff --git a/docs/references/saman_current_app_direct_employees_membership_overlap_2026-07-16.csv b/docs/references/saman_current_app_direct_employees_membership_overlap_2026-07-16.csv new file mode 100644 index 0000000..c2db074 --- /dev/null +++ b/docs/references/saman_current_app_direct_employees_membership_overlap_2026-07-16.csv @@ -0,0 +1,1863 @@ +employee_id,employee_name,employee_email,membership_count_across_tenants,has_non_saman_membership,non_saman_memberships +c103c96c-931f-4344-bbd9-50dd96138066,강경석,kskang@samaneng.com,2,Y,수자원1부(water-resources-1) +bebb832c-052e-493d-b5a9-732518d67685,강경훈,khkang@samaneng.com,2,Y,기획부(planning) +27c8d394-36a4-454d-bab3-66bf806c6bb0,강광호,khkang1@samaneng.com,2,Y,철도2부(railway-2) +c4a6430a-2a35-460e-a764-f495e2b8ea1b,강기헌,ghkang@samaneng.com,2,Y,CM사업부(cm-division) +13bf81d0-1d93-467d-938a-7c876efab5ee,강다원,dwkang1@samaneng.com,2,Y,수력부(hydropower) +1dc3a834-3b4a-4fc2-a0f4-0900ef8b671e,강대선,dskang@samaneng.com,2,Y,플랜트2부(plant-2) +add4cf4b-738a-4095-b5a7-3ecd34a92e31,강대식,dskang1@samaneng.com,2,Y,CM사업부(cm-division) +4b581942-b1b9-414d-bd46-2d564a25e5fe,강대엽,dykang@samaneng.com,2,Y,도로부(road) +a013fbe5-f41e-4ff7-a41f-18f30b7a829d,강대완,dwkang@samaneng.com,2,Y,철도1부(railway-1) +70eddd9b-473c-4aea-974c-aa4220415fa0,강동구,dkkang@samaneng.com,2,Y,도로부(road) +75c96ec0-ca4d-4781-b04a-5c573460a964,강동우,dwkang3@samaneng.com,2,Y,물환경2부(water-environment-2) +1db2f664-a638-4b24-8c41-c9c1eb34a010,강동원,dwkang2@samaneng.com,2,Y,수자원2부(water-resources-2) +590a91f1-c40b-46f3-b50c-3b214d32522a,강동진,djkang@samaneng.com,2,Y,수자원1부(water-resources-1) +53acd47e-31cd-4930-918e-4d7215e553c0,강명지,mjkang@samaneng.com,2,Y,물환경1부(water-environment-1) +0d9ccbe9-617d-41e1-84ba-2a49b9cd06e4,강명학,mhkang1@samaneng.com,2,Y,철도2부(railway-2) +9c611341-17af-46b2-b08a-924fcc7a8bfc,강무중,mjkang3@samaneng.com,2,Y,항만부(harbor) +4e013597-58e6-428c-bc89-651348fe3a83,강문태,mtkang@samaneng.com,2,Y,철도1부(railway-1) +5741996b-d4ac-45bd-be6f-8b8393ddd687,강미선,mskang@samaneng.com,2,Y,플랜트2부(plant-2) +519d6ac2-fcc6-4dde-9220-196d3a0da674,강버들,bdkang@samaneng.com,2,Y,CM사업부(cm-division) +040f39e1-c557-479a-8aa0-7fc0db193fff,강병산,bskang@samaneng.com,2,Y,CM사업부(cm-division) +1ee20281-a34f-4d6e-b851-15f975b7c982,강상균,skkang1@samaneng.com,2,Y,항만부(harbor) +e559edc5-5ef0-4fdb-874c-6b673b1cd515,강상우,swkang2@samaneng.com,2,Y,CM사업부(cm-division) +b748f20e-71cb-4924-a9a4-b0783c2d623c,강상욱,swkang1@samaneng.com,2,Y,CM사업부(cm-division) +9ced50e3-bfae-4685-885e-085589e62b01,강상원,swkang@samaneng.com,2,Y,플랜트1부(plant-1) +a7e69109-a7d8-4e41-aaf5-0aa24ef6c372,강상의,sekang@samaneng.com,2,Y,CM사업부(cm-division) +885ba8d0-a069-4d68-bb70-87e98cf156c8,강석봉,sbkang1@samaneng.com,2,Y,CM사업부(cm-division) +f85e8351-c976-49d0-8807-b5312b0a1a52,강석준,sjkang@samaneng.com,2,Y,플랜트1부(plant-1) +3128b4c6-35e1-4fd8-9df0-192f131aa586,강석훈,shkang1@samaneng.com,2,Y,사업개발실(business-development) +41fc3828-ba20-4ec5-b6f6-40b889e1ade4,강선태,stkang@samaneng.com,2,Y,CM사업부(cm-division) +92a50344-13b4-4376-a7b0-de5220eb6c3f,강성배,sbkang@samaneng.com,2,Y,항만부(harbor) +7bf536e7-ecc8-4f18-9dfd-0f507a171c0c,강성일,sikang@samaneng.com,2,Y,CM사업부(cm-division) +60f39887-ee4e-41b6-8147-528e88622c1e,강성찬,sckang@samaneng.com,2,Y,CM사업부(cm-division) +7c912910-3aee-4316-9792-8eb973f3121b,강수연,sykang@samaneng.com,2,Y,플랜트1부(plant-1) +d4125e23-a4c1-44f5-9150-2877306c1cd6,강순남,snkang@samaneng.com,2,Y,항만부(harbor) +6497dd74-19da-4831-b926-a5404d10cb49,강순양,sykang2@samaneng.com,2,Y,교통계획부(transport-planning) +f45f5dcb-5846-491b-a929-e2dd818ae7be,강승대,sdkang@samaneng.com,2,Y,도로부(road) +e1f4e47c-26cd-4dd3-89e1-57e0660fbe99,강승열,sykang3@samaneng.com,2,Y,PQ팀(pq-team) +5fc04932-10d4-41c1-8554-beacf6195280,강승주,sjkang2@samaneng.com,2,Y,CM사업부(cm-division) +8826b6c0-1f68-478f-923b-3fadeda20547,강시영,sykang1@samaneng.com,2,Y,물환경2부(water-environment-2) +f0a8c6a2-2c87-40a8-ae30-f3b47ac5f385,강신길,sgkang@samaneng.com,2,Y,CM사업부(cm-division) +ea4a42b8-5c84-4499-b0b8-4306c380016c,강원철,wckang@samaneng.com,2,Y,도시개발부(urban-development) +91e57cb8-ab87-4aed-88ce-5dd27531df93,강유경,ygkang@samaneng.com,2,Y,물환경1부(water-environment-1) +22af3777-c756-4716-8eb1-6b743db6a6e1,강윤규,ykkang@samaneng.com,2,Y,환경평가부(environment-assessment) +b0091974-f4da-4ddd-9bb3-cc1daf698feb,강정연,jykang@samaneng.com,2,Y,수자원1부(water-resources-1) +5ae01d86-9d9e-4109-b64f-b536599379f2,강종태,jtkang@samaneng.com,2,Y,CM사업부(cm-division) +72cd2043-eafe-4b71-894f-f7291b62bff4,강준희,jhkang1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +2808763c-cbbb-43fc-93c2-14fb7744f4ac,강진욱,jokang@samaneng.com,2,Y,철도1부(railway-1) +7f74e4ce-d600-4ab2-9dac-c67f598f426f,강진화,jhkang2@samaneng.com,2,Y,CM사업부(cm-division) +23a81759-8d0a-438e-ab7d-aa200de1f588,강태선,tskang@samaneng.com,2,Y,도시계획부(urban-planning) +1eaa7e43-d760-4c10-bf45-b6694283c5de,강태현,thkang1@samaneng.com,2,Y,물환경2부(water-environment-2) +4e05221f-17df-4a9c-8cfc-dad5c8180c7c,강태호,thkang@samaneng.com,2,Y,플랜트2부(plant-2) +683217cd-dd0d-4ebf-9f4c-5cb97812d519,강태희,thkang2@samaneng.com,2,Y,철도1부(railway-1) +cae38a7b-39d7-4dfe-9b3f-eae9ef254d56,강평구,pkkang@samaneng.com,2,Y,플랜트1부(plant-1) +7118dbbc-b295-4c24-b7c0-04e496282d8b,강필웅,pwkang@samaneng.com,2,Y,플랜트2부(plant-2) +589ddef3-86f0-41f0-8171-516d6a62ddf2,강형구,hgkang@samaneng.com,2,Y,물환경3부(water-environment-3) +4f16e73f-4c2e-4619-aeeb-168731be2b27,강혜진,hjkang@samaneng.com,2,Y,CM사업부(cm-division) +f09efc59-ab01-42cb-82b0-fbeaf34404ba,강호광,hkkang@samaneng.com,2,Y,물환경1부(water-environment-1) +7582c48b-715d-4f1e-8851-2bbc9c8d8054,강호문,hmkang@samaneng.com,2,Y,철도2부(railway-2) +bfce5ae3-7c97-4b9c-ab7b-b9db0d5d820e,경민구,mgkyung@samaneng.com,2,Y,도시계획부(urban-planning) +35a8b41d-8d79-4817-8dfc-aa5431d47c1f,고강수,ksko@samaneng.com,2,Y,수자원2부(water-resources-2) +f27978e1-bb5e-4479-b15c-03c64ce4ffa6,고경원,kwko@samaneng.com,2,Y,업무(operations) +a39c5759-b980-472f-89dd-5715059e4776,고광민,kmko@samaneng.com,2,Y,CM사업부(cm-division) +b4b32a4e-b9be-4379-b804-e3baf9936e2f,고동인,diko@samaneng.com,2,Y,조경레저부(landscape-leisure) +9387c620-91e6-4049-bcf5-9630424eca19,고민우,mwko@samaneng.com,2,Y,PQ팀(pq-team) +78c8df9a-25a3-4208-9701-bbfe7766b3a1,고범홍,bhko@samaneng.com,2,Y,플랜트2부(plant-2) +333b24aa-198e-4e61-9d48-309356bc8129,고상훈,shko@samaneng.com,2,Y,CM사업부(cm-division) +3317748c-99d7-46e5-a96d-1a06f7f72885,고세일,siko@samaneng.com,2,Y,CM사업부(cm-division) +a881c934-bce0-4a7e-a6ae-15cda3aa5021,고승희,shkoh@samaneng.com,2,Y,물환경1부(water-environment-1) +0416fbd5-7d28-47e7-a077-52868d0a02e3,고연상,ysgo@samaneng.com,2,Y,도시계획부(urban-planning) +6d36f383-f164-422f-b113-17484b29c667,고영태,ytkoh@samaneng.com,2,Y,도시개발부(urban-development) +eab7ea84-218b-4b5a-b72a-6517d3ffdf49,고원태,wtko@samaneng.com,2,Y,철도1부(railway-1) +8fd760b8-2336-4685-a907-bd4f3e7822f8,고준연,jyko2@samaneng.com,2,Y,지반터널부(geotech-tunnel) +feeb7dac-193c-428e-b477-63da16ea4b42,고준영,jyko1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +1cebc5b3-3566-4c24-8c00-3a155d0b926b,고준호,jhko@samaneng.com,2,Y,철도1부(railway-1) +d2161b65-6cca-4d3c-80da-a1b9a90af30a,고지영,jyko@samaneng.com,2,Y,도로부(road) +aa66b943-156a-473e-9d90-992c641cfee1,고창석,csgo@samaneng.com,2,Y,CM사업부(cm-division) +8195cf48-c947-44b4-a006-1b256b57d354,고태호,thko@samaneng.com,2,Y,해외사업부(overseas-business) +dd2ad8e7-7b0a-4f29-822f-c40792fb8015,고현우,hwko@samaneng.com,2,Y,플랜트1부(plant-1) +43a388f3-63b1-4310-8c43-0bf005ecab17,고효정,hjko@samaneng.com,2,Y,CM사업부(cm-division) +19a31647-5647-4e4f-a0ff-79e28a85cb28,고희수,hsko@samaneng.com,2,Y,CM사업부(cm-division) +4de141b4-927d-4daf-9201-ff62bdd87f51,공기원,gwkong@samaneng.com,2,Y,철도2부(railway-2) +60b53839-2484-44ce-9d8a-5e08f9d93e5f,공병화,bhkong@samaneng.com,2,Y,CM사업부(cm-division) +8063caf3-7a48-4bd6-a6cb-357245a9dd17,공석호,shkong@samaneng.com,2,Y,물환경2부(water-environment-2) +b388d208-0f24-499c-b97e-df3b79e241c1,공성문,smkong1@samaneng.com,2,Y,CM사업부(cm-division) +ac33b561-0cae-4dbf-9e6c-a0bf669e49e9,공용표,ypgong@samaneng.com,2,Y,물환경2부(water-environment-2) +fd38395f-a4c6-4ebb-9a55-fffb4d7a48f7,공태원,twkong@samaneng.com,2,Y,도로부(road) +536f9e40-9f0a-40ed-8798-b790827a3e52,공태원,twkong1@samaneng.com,2,Y,물환경2부(water-environment-2) +fff0b562-cb32-4e81-b20b-ddb5825bc4bb,공현우,hwkong@samaneng.com,2,Y,CM사업부(cm-division) +15d3788f-44bf-4b86-ab71-c914c128871b,공현호,hhgong@samaneng.com,2,Y,CM사업부(cm-division) +e87c24a8-5161-41e7-895d-eb92c538013b,공희연,hykong@samaneng.com,2,Y,플랜트2부(plant-2) +e2490e75-8baa-4ca7-b4df-ea6ddb18768e,곽경호,ghgwak@samaneng.com,2,Y,물환경1부(water-environment-1) +21a601a2-df12-4d7e-8127-d672ba00e70c,곽억연,eykwak@samaneng.com,2,Y,도시개발부(urban-development) +c53a415b-01d0-4bc4-bfdc-d0de4510cde0,곽용규,ykkwak@samaneng.com,2,Y,도시개발부(urban-development) +5dff99e4-0a32-433a-a315-2742748f0eb7,곽은미,emkwak1@samaneng.com,2,Y,플랜트2부(plant-2) +b8b1775b-ff82-4012-ae01-85310522a1a0,곽은미,emkwak@samaneng.com,2,Y,물환경2부(water-environment-2) +16769b44-9f9d-4a4f-8bb4-fecb07346339,곽준성,jskwak@samaneng.com,2,Y,수력부(hydropower) +eb32f447-83d5-4a2b-8c92-21044a265cbd,곽호성,hskwak@samaneng.com,2,Y,항만부(harbor) +f23da4d8-a1fc-4c1b-8784-6b3617a943d0,구경자,kjkoo1@samaneng.com,2,Y,도로부(road) +945ba295-a88b-4d80-a707-e79f0427a4dd,구민재,mjkoo@samaneng.com,2,Y,도시계획부(urban-planning) +9130294e-ed7b-40be-97f8-2b6ce4171608,구영민,ymkoo@samaneng.com,2,Y,철도2부(railway-2) +83c1b116-e84d-4388-8436-95500b185a24,구영서,yskoo@samaneng.com,2,Y,CM사업부(cm-division) +2265ef93-b69a-400a-bae2-c555f9d2e7e3,구원일,wikoo@samaneng.com,2,Y,CM사업부(cm-division) +1e9fde49-99ad-443b-a1de-5af4485adcdb,구자환,jhkoo@samaneng.com,2,Y,수력부(hydropower) +eb53cac1-5c15-4a99-a86f-a8ceb8c5bb94,구천회,chgoo@samaneng.com,2,Y,CM사업부(cm-division) +58fea1b6-f96e-412c-84ef-7d1f8d4f86c0,구효완,hwkoo@samaneng.com,2,Y,도로부(road) +19887baa-38fd-4f93-87db-b8a58d32737d,권구현,khkwon@samaneng.com,2,Y,철도1부(railway-1) +ec744eea-ec34-4ff4-8022-da3edb38c953,권기옥,kokwon@samaneng.com,2,Y,수력부(hydropower) +499469ac-9bcc-4078-be22-5b7876d2860e,권기철,kckwon@samaneng.com,2,Y,플랜트1부(plant-1) +373383b0-aae9-4fcb-a772-2df63d628139,권대경,dkkwon@samaneng.com,2,Y,재무회계팀(finance) +db137a65-bbba-421d-b9d1-23628b1a3033,권민근,mkkwon@samaneng.com,2,Y,철도2부(railway-2) +f737a84f-414e-4a43-a447-d185edf3540e,권병근,bgkwon@samaneng.com,2,Y,플랜트2부(plant-2) +c0556da1-efa2-4022-a240-eb522fc88206,권영국,ykkwon@samaneng.com,2,Y,CM사업부(cm-division) +5de163b0-0f6a-40ff-94d6-b62e8ba366f2,권영범,ybkwon@samaneng.com,2,Y,CM사업부(cm-division) +b643ddf4-47d0-4e8e-997a-98c0b88e8481,권오선,oskwon1@samaneng.com,2,Y,플랜트2부(plant-2) +9f74c41c-1e76-493a-b8d6-7bdc191701de,권오선,oskwon@samaneng.com,2,Y,CM사업부(cm-division) +a6eaf0f9-a4d9-466d-bf11-0f057ec281fc,권오영,oykwon1@samaneng.com,2,Y,CM사업부(cm-division) +2ccece74-9ac1-4752-95e5-201250ddb407,권오윤,oykwon@samaneng.com,2,Y,물환경2부(water-environment-2) +62c5adfe-a9ec-4740-8f76-326c6e00703e,권오정,ojkwon@samaneng.com,2,Y,철도2부(railway-2) +5a0c4cf8-29c7-43aa-9a81-a9cee3af2e2f,권오태,otkwon@samaneng.com,2,Y,CM사업부(cm-division) +435c6a6a-2406-4ade-932d-b6d6861284e2,권이선,lskwon@samaneng.com,2,Y,CM사업부(cm-division) +4a7c855f-0e16-43e9-b7cf-8d2b7dad3d26,권진주,jjkwon@samaneng.com,2,Y,수자원1부(water-resources-1) +4621f799-96b6-499b-9fff-01ca4c4e511f,권진하,jhkwon@samaneng.com,2,Y,지반터널부(geotech-tunnel) +fb9acd51-32d0-4282-aded-68e8e61ea3b0,권충영,cykwon@samaneng.com,2,Y,도로부(road) +647077b8-b0ad-4628-ac40-b63acab4658a,권태학,thkwon@samaneng.com,2,Y,플랜트2부(plant-2) +1e56c7a3-28b1-4779-b021-b0a8b87b0435,권혁민,hmkwon@samaneng.com,2,Y,조경레저부(landscape-leisure) +9b4b74b6-b813-45cb-b14e-726e0d6c13aa,권혁수,hskwon@samaneng.com,2,Y,물환경2부(water-environment-2) +c318bf16-05bb-4b9f-aed4-67a7d38031cf,권혁조,hjkweon@samaneng.com,2,Y,수자원1부(water-resources-1) +30359f72-10ac-4ef5-9c5e-a5c8bf2e76af,권형중,hjkwon1@samaneng.com,2,Y,플랜트2부(plant-2) +6df39ba1-1428-46c9-9c37-67a7c22af9f8,기정호,jhki@samaneng.com,2,Y,지반터널부(geotech-tunnel) +675b8323-9906-44ed-8be8-73b2a55ca2f5,김가영,gykim@samaneng.com,2,Y,플랜트2부(plant-2) +2d330b99-291b-4848-bac7-2bbed6d3330d,김건도,gdkim@samaneng.com,2,Y,교통계획부(transport-planning) +83b16afd-b691-40b5-b13e-d83a1a433e75,김건완,gwkim1@samaneng.com,2,Y,물환경1부(water-environment-1) +d896c402-1e2d-42ee-810d-c43ec47a3322,김경미,kmkim@samaneng.com,2,Y,CM사업부(cm-division) +2eafaee9-59cb-4981-a93f-5188e60b54d3,김경민,kmkim1@samaneng.com,2,Y,업무(operations) +4310afd9-0bb4-42a5-aa5c-07434bbb85c7,김경석A,kskim@samaneng.com,2,Y,CM사업부(cm-division) +a1bf31d8-f763-452f-a384-220ccb7db1cc,김경석B,kskim5@samaneng.com,2,Y,CM사업부(cm-division) +688974cc-8560-4023-8108-a5498d771c86,김경수,kskim1@samaneng.com,2,Y,CM사업부(cm-division) +a9d3f0af-946d-4e59-b29b-c5ae24fac2b7,김경수,kskim2@samaneng.com,2,Y,플랜트1부(plant-1) +a916a3c4-7bbf-46b0-8dfe-c8573715ef00,김경아,kakim@samaneng.com,2,Y,CM사업부(cm-division) +5a8dea50-d4f2-4f31-849b-09355e86126f,김경호,khkim2@samaneng.com,2,Y,CM사업부(cm-division) +54cb00ad-6795-40a6-83f9-72304d4c6db1,김경화,khkim5@samaneng.com,2,Y,CM사업부(cm-division) +37980e10-48ad-47c0-a642-c3d4ff647b24,김경훈,khkim7@samaneng.com,2,Y,조경레저부(landscape-leisure) +efea1bc0-254f-4a36-85a5-62b839fafb2c,김계원,gwkim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +d4d01da9-7a2d-4daa-8f00-61d3fb2750e1,김공균,kkkim@samaneng.com,2,Y,CM사업부(cm-division) +cf23d94b-eed0-45e9-a76f-417c5078fce4,김관영,kykim@samaneng.com,2,Y,해외사업부(overseas-business) +95b34a98-e4c3-4824-b0bd-9293e82431ee,김관중,kjkim3@samaneng.com,2,Y,CM사업부(cm-division) +d2eee8a1-2b43-432f-96f2-fb9de0abf58f,김광균,kgkim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +e70e734a-988d-4c84-ba77-0392c1246292,김광남,gnkim@samaneng.com,2,Y,플랜트2부(plant-2) +4dcd4cc2-6d0c-47b0-a29d-35e8a0268cd7,김광원,kwkim@samaneng.com,2,Y,플랜트2부(plant-2) +f22d8bc5-c3e3-4385-b695-4a0837ac16e6,김광준,kjkim2@samaneng.com,2,Y,플랜트2부(plant-2) +daa685a6-3dfc-4646-9c1d-da80d1043d03,김광혜,khkim3@samaneng.com,2,Y,지반터널부(geotech-tunnel) +c1b53fab-342c-422e-a078-16963a7fee0d,김국태,ktkim1@samaneng.com,2,Y,플랜트1부(plant-1) +42d8fbe9-7b05-4e61-aa33-b8dec383dbf6,김국현,ghkim3@samaneng.com,2,Y,물환경2부(water-environment-2) +8c6b21cb-6099-43a0-8b6e-3159e7a2316e,김규화,ghkim1@samaneng.com,2,Y,철도2부(railway-2) +a08c6f21-3d83-4fd5-8fbb-0d7c304f1e8b,김균준,gjkim@samaneng.com,2,Y,철도2부(railway-2) +038cbf44-9265-401e-8458-23ce4ea1964e,김기룡,klkim@samaneng.com,2,Y,철도1부(railway-1) +c6a1cfa8-822c-4e6c-9ae4-c82cac12e2cb,김기봉,kbkim@samaneng.com,2,Y,철도2부(railway-2) +e50a9f00-ccaa-4484-9dc7-06a389fb8636,김기영,kykim2@samaneng.com,2,Y,CM사업부(cm-division) +3b586125-c515-4237-bf40-16856e112da1,김기영,kykim1@samaneng.com,2,Y,PQ팀(pq-team) +1e0d750d-31b1-43ef-ab97-cd3fce2b57e7,김기용,kykim4@samaneng.com,2,Y,철도2부(railway-2) +70b801b6-2e68-45a5-ac42-40e5313020a7,김기원,kwkim1@samaneng.com,2,Y,CM사업부(cm-division) +ba881f22-0ffe-49fb-9169-8c16d6362669,김기호,khkim4@samaneng.com,2,Y,물환경2부(water-environment-2) +eb084552-bc25-4173-9f84-1e62876372a5,김기호,ghkim2@samaneng.com,2,Y,CM사업부(cm-division) +dd7924eb-7859-48f8-a160-89b9f1dbc55f,김기환,khkim@samaneng.com,2,Y,도시계획부(urban-planning) +5ca69be8-3723-48ba-b0f1-fae33e50ac84,김기훈,khkim6@samaneng.com,2,Y,구조부(structures) +42f1d842-c036-4c3f-9af4-a2585203bbb7,김기훈,khkim8@samaneng.com,2,Y,CM사업부(cm-division) +e1f36069-0da4-4ff8-8220-fea6de091e50,김길모,kmkim2@samaneng.com,2,Y,CM사업부(cm-division) +9fa75aad-8e08-4bc4-a617-85c3ce6758a6,김길웅,kwkim2@samaneng.com,2,Y,CM사업부(cm-division) +b95c13d0-a7e4-43f1-8c53-364416aa88cd,김나연,nykim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +e75c4a5e-71f4-4a94-b3bb-47d9bff3641b,김나현,nhkim5@samaneng.com,2,Y,CM사업부(cm-division) +d024d21c-85ae-410d-ad8b-0fbc644dc3a0,김나현,nhkim2@samaneng.com,2,Y,플랜트2부(plant-2) +752ab0e5-d16d-4559-a9fc-94d3a80639f2,김나현,nhkim@samaneng.com,2,Y,안전품질관리실(safety-quality) +0d51edfe-b652-4e6b-8b9f-7f76d468961f,김남곤,nkkim1@samaneng.com,2,Y,플랜트2부(plant-2) +048defa9-d47c-4900-8c87-5b40f3e4d0e3,김남기,nkkim@samaneng.com,2,Y,수자원2부(water-resources-2) +8ff7d296-0846-4e88-a463-4c1ecdd05f05,김남옥,nokim@samaneng.com,2,Y,CM사업부(cm-division) +008a1287-7955-4800-80c1-1b5205466f92,김남헌,nhkim3@samaneng.com,2,Y,CM사업부(cm-division) +28357d77-a8b3-43f9-bc5a-454b9644c53b,김남훈,nhkim4@samaneng.com,2,Y,플랜트2부(plant-2) +c50c8c0b-2ec4-4d30-b23f-495d875e40eb,김다은,dekim1@samaneng.com,2,Y,재무회계팀(finance) +63aaa1c6-fd54-428e-89f3-88b2e0235e0a,김대성,dskim2@samaneng.com,2,Y,플랜트2부(plant-2) +f21f8a87-e23e-490a-bdd4-c59f8b365c08,김대영,dykim3@samaneng.com,2,Y,CM사업부(cm-division) +e8ec3b8b-1936-4a90-b4e6-def9a1fa7f8a,김대영,dykim1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +297b7dd7-281d-4545-abc1-2a4564cee4ef,김대현,dhkim@samaneng.com,2,Y,CM사업부(cm-division) +dbca211e-b3bd-4d36-a2d5-ff8b430b1f82,김도연,dykim2@samaneng.com,2,Y,플랜트2부(plant-2) +cd5d2667-a340-486e-8b92-a2fb7d54d846,김도헌,dhkim1@samaneng.com,2,Y,철도2부(railway-2) +eadb0ff9-da37-4b17-879a-ecc7e2d66c2d,김동규,dgkim2@samaneng.com,2,Y,플랜트2부(plant-2) +b83c9db3-3ec6-4bf7-b2bf-26a63dc1e5af,김동길,dgkim@samaneng.com,2,Y,CM사업부(cm-division) +77573892-3c7c-4999-8472-fe7c9a50c7ae,김동길,dgkim1@samaneng.com,2,Y,물환경2부(water-environment-2) +20ae1f5f-4fa9-4335-bbfc-bbfddd3f1b88,김동렬,drkim@samaneng.com,2,Y,수자원2부(water-resources-2) +371d2ac7-7831-4a1b-a47d-a1dd9b87ed4b,김동범,dbkim@samaneng.com,2,Y,CM사업부(cm-division) +c0fde2e2-9977-4f1c-ac1c-28dde7007197,김동수,dskim1@samaneng.com,2,Y,플랜트2부(plant-2) +efbc9122-6bec-436d-aa91-6af2b89a7aa2,김동우,dwkim4@samaneng.com,2,Y,플랜트2부(plant-2) +1b5d06e4-455f-40df-a449-bfdeeb4f7b90,김동원,dwkim@samaneng.com,2,Y,플랜트2부(plant-2) +4553a9fb-bea0-42bf-9f24-183f9c6eb0c8,김동은,dekim@samaneng.com,2,Y,도시계획부(urban-planning) +7ed30eb0-d7e9-4ec7-b99a-b15ccfa2bed6,김동주,djkim@samaneng.com,2,Y,플랜트2부(plant-2) +92d5205d-8c47-44e4-8212-c49676e134d8,김동진,djkim1@samaneng.com,2,Y,수자원2부(water-resources-2) +fdc45b04-5388-4a38-9d25-e0a37be08652,김동철,dckim1@samaneng.com,2,Y,플랜트2부(plant-2) +bd4592f6-8d39-4a15-a9b7-39a81cb9efea,김동하,dhkim5@samaneng.com,2,Y,물환경1부(water-environment-1) +70ae7382-be8b-49f2-a2f3-49f39bf0abb7,김동현,dhkim6@samaneng.com,2,Y,항만부(harbor) +2c872c69-4909-4d3a-a9a0-c0e23838338c,김동휘,dhkim2@samaneng.com,2,Y,물환경2부(water-environment-2) +424dc730-576c-46dd-8f4d-6c999d506070,김득수,dskim3@samaneng.com,2,Y,플랜트2부(plant-2) +96e6b69e-8bcf-48b6-b7c2-97289dc038a3,김리안,lakim@samaneng.com,2,Y,CM사업부(cm-division) +bf1a7c9d-f81b-4cd7-bfd9-7911fe3946e7,김만규,mgkim1@samaneng.com,2,Y,플랜트2부(plant-2) +1abcf122-83b9-45f1-a18c-6f49c2995c69,김만선,mskim2@samaneng.com,2,Y,CM사업부(cm-division) +fee3a2db-9656-469d-bf4d-2dc71bc3cd4a,김명,mkim1@samaneng.com,2,Y,플랜트2부(plant-2) +bab85a19-35d2-4089-ba76-a05d5a6cbf95,김명수,mskim3@samaneng.com,2,Y,CM사업부(cm-division) +88059b4f-790f-4e61-8191-4e6eb35ebb88,김명숙,mskim1@samaneng.com,2,Y,플랜트2부(plant-2) +1e8f9622-03c3-4e2b-aac7-f2fc1990edbd,김명조,mjkim@samaneng.com,2,Y,CM사업부(cm-division) +04f0e187-4ded-4d80-8247-38cdd5a0dc37,김명준,mjkim4@samaneng.com,2,Y,도로부(road) +9a8f8c35-a3a2-455e-9cea-b57e352a89a4,김무섭,mskim6@samaneng.com,2,Y,CM사업부(cm-division) +9ee3f3bb-d519-4fcf-96a8-4d0c9933b014,김무언,mukim@samaneng.com,2,Y,수자원1부(water-resources-1) +0c9899c6-86f4-430c-a7a2-cf046e807317,김무영,mykim2@samaneng.com,2,Y,도로부(road) +34669d42-5cc5-4e0a-9c1e-19f11b3c657d,김문기,mgkim2@samaneng.com,2,Y,CM사업부(cm-division) +a5b26213-3460-4c19-84a7-59c37d0e4e7c,김문수,mskim12@samaneng.com,2,Y,철도2부(railway-2) +a34d130e-a796-4853-87b6-a020a3f81373,김미,mkim4@samaneng.com,2,Y,CM사업부(cm-division) +af00e07f-0344-4cc7-a2e4-662805c331bd,김미라,mrkim1@samaneng.com,2,Y,수자원1부(water-resources-1) +19461f72-5307-4318-b7c6-7cb516d3a8de,김미리,mrkim2@samaneng.com,2,Y,CM사업부(cm-division) +57c6ef62-5353-44a1-98cf-ca95b0b0e115,김미정,mjkim2@samaneng.com,2,Y,CM사업부(cm-division) +fd1b1e43-3281-43fe-bbfe-4e0436823e56,김미희,mhkim1@samaneng.com,2,Y,CM사업부(cm-division) +4ac27a91-e09a-4787-91e0-c5b853f52348,김민,mkim@samaneng.com,2,Y,플랜트2부(plant-2) +a15c8056-2dc7-4e49-b54c-c8666848d331,김민규,mgkim3@samaneng.com,2,Y,플랜트2부(plant-2) +d1d09cd7-ce12-4c26-925b-7d449efadaec,김민규,mgkim4@samaneng.com,2,Y,도시개발부(urban-development) +35498e30-862b-47dd-9103-c889b95651aa,김민규,mgkim@samaneng.com,2,Y,PQ팀(pq-team) +26b76793-f703-489b-ac2b-c0e5c6180ade,김민석,mskim9@samaneng.com,2,Y,철도2부(railway-2) +051d2457-0751-4ed1-849b-878f1f8ee9c8,김민성,mskim4@samaneng.com,2,Y,플랜트2부(plant-2) +c9c44cd8-d520-4892-986a-e948549a71bb,김민성,mskim10@samaneng.com,2,Y,CM사업부(cm-division) +be1dd8aa-ee90-435f-9e58-8b87e76c6b99,김민수,mskim5@samaneng.com,2,Y,항만부(harbor) +1fe79bd3-4719-426b-a15f-4ab9dfecc5b4,김민우,mukim1@samaneng.com,2,Y,플랜트2부(plant-2) +5049c21d-7d6d-4b7c-b84f-f13b9e43fde6,김민우,mwkim@samaneng.com,2,Y,수자원1부(water-resources-1) +f99d46ef-7205-4e7f-9cc4-66314b800212,김민재,mjkim6@samaneng.com,2,Y,플랜트2부(plant-2) +82ef7bd4-5692-4f7b-a499-175d53184c08,김민종,mjkim5@samaneng.com,2,Y,CM사업부(cm-division) +35f0b167-b8b0-4d23-9fea-516be7d64352,김민종,mjkim8@samaneng.com,2,Y,수자원2부(water-resources-2) +46cd0424-7f96-4d15-a852-20f01e70100a,김민주,mjkim1@samaneng.com,2,Y,물환경2부(water-environment-2) +e51f22eb-1b04-4f71-a937-8e5d397b5c0c,김민지,mjkim3@samaneng.com,2,Y,물환경3부(water-environment-3) +4e96a8fb-1dd7-42da-9077-3e3b3e93808f,김민철,mckim@samaneng.com,2,Y,항만부(harbor) +78273549-74d4-4681-ac93-9981c238ec29,김민혜,mhkim@samaneng.com,2,Y,도시계획부(urban-planning) +8ff761b2-4cce-4ca8-a2ba-3dc4050e52c5,김백중,bjkim@samaneng.com,2,Y,물환경2부(water-environment-2) +12e6d350-67bc-4705-8aec-6ae4da691782,김병국,bkkim1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +0142485d-349f-4fc2-b502-5616aac9d190,김병근,bgkim1@samaneng.com,2,Y,CM사업부(cm-division) +2b8288be-c25d-4d17-8d89-b7230441f83e,김병문,bmkim1@samaneng.com,2,Y,CM사업부(cm-division) +e23e2181-e9aa-46b5-b19c-d9fc61d9c73c,김병수,bskim@samaneng.com,2,Y,구조부(structures) +fbdab962-0deb-4812-a920-4ac9bd496437,김병옥,bokim@samaneng.com,2,Y,플랜트2부(plant-2) +b017bfe4-9bf7-4f30-ab09-23aa5b93ce7c,김병준,bjkim1@samaneng.com,2,Y,물환경2부(water-environment-2) +084f8c6b-28e3-4c89-ac15-22a6089fb634,김보건,bgkim@samaneng.com,2,Y,플랜트2부(plant-2) +666ca71f-dc38-4ed7-829d-097086fb8dfa,김보국,bkkim2@samaneng.com,2,Y,플랜트2부(plant-2) +4c17cc20-2d9f-4135-a45f-12e25bb4f188,김보묵,bmkim@samaneng.com,2,Y,환경평가부(environment-assessment) +e9a6f83d-a6e5-4891-a3c9-51a3e2430c45,김보성,bskim1@samaneng.com,2,Y,물환경2부(water-environment-2) +4c1b1d9d-089d-455c-950c-7e179ab6a31b,김봉수,bskim3@samaneng.com,2,Y,물환경2부(water-environment-2) +bcf0ee79-a9b1-4cff-ab64-122587996a45,김상구,sgkim2@samaneng.com,2,Y,PQ팀(pq-team) +e8446632-fffd-4cf0-bf72-e3f15e89b353,김상규,skkim5@samaneng.com,2,Y,철도2부(railway-2) +55c337eb-9185-42e4-956e-f7914181a87a,김상균,skkim4@samaneng.com,2,Y,도시계획부(urban-planning) +906d29f1-b69d-4e25-97a4-4606fa871a30,김상덕,sdkim3@samaneng.com,2,Y,물환경3부(water-environment-3) +435c2414-7588-4299-b277-a791c00197a3,김상돈,sdkim2@samaneng.com,2,Y,플랜트2부(plant-2) +6ae4338e-4544-42e6-aaa4-3bd12e492424,김상동,sdkim1@samaneng.com,2,Y,철도1부(railway-1) +2d810060-63f8-47c3-a81c-0ca267bcb499,김상범,sbkim@samaneng.com,2,Y,플랜트1부(plant-1) +6dc870b4-effc-4eb5-ae0c-1338527ec7c2,김상성,sskim2@samaneng.com,2,Y,플랜트2부(plant-2) +052ffa06-13ac-4525-9748-c3efcb271173,김상수,sskim@samaneng.com,2,Y,CM사업부(cm-division) +8c1d4b4b-6a38-4a17-b2c4-fd0f44414d89,김상용,sykim1@samaneng.com,2,Y,플랜트2부(plant-2) +ec06140e-5a1e-4af3-a85e-cb126cb39ebd,김상용,sykim4@samaneng.com,2,Y,플랜트1부(plant-1) +668dd3f9-a8ea-4ecf-b47f-cabeaafda615,김상종,sjkim@samaneng.com,2,Y,CM사업부(cm-division) +6dedc3d6-d7f6-434a-9fa1-de34b5cac0d5,김상철,sckim3@samaneng.com,2,Y,지반터널부(geotech-tunnel) +72d847ce-f6f6-498a-81ff-7ca26ba8b88b,김상현,shkim3@samaneng.com,2,Y,CM사업부(cm-division) +82cce1f8-c3ff-4f66-9536-ada44706b045,김상현,shkim@samaneng.com,2,Y,물환경2부(water-environment-2) +a2c9c7ba-674f-4fc9-b9cc-d0abb9029556,김서현,shkim10@samaneng.com,2,Y,항만부(harbor) +560e76f6-dc24-49ef-8969-87e6f2067f07,김석규,skkim2@samaneng.com,2,Y,플랜트2부(plant-2) +250829e7-74df-452d-8b02-7db7f65313a5,김석근,sgkim5@samaneng.com,2,Y,CM사업부(cm-division) +e98fa6b9-250f-49b8-985e-e50b9272cf50,김석조,sjkim8@samaneng.com,2,Y,도시계획부(urban-planning) +adcae4ac-d084-41f3-bcb9-5944ad1fa0c8,김석진,sjkim5@samaneng.com,2,Y,CM사업부(cm-division) +dc359269-9ccd-4fea-a8d8-66fe467d87fb,김선구,sgkim4@samaneng.com,2,Y,CM사업부(cm-division) +94106b9a-2add-4a33-9913-fc1b7bd671ae,김선근,skkim8@samaneng.com,2,Y,플랜트2부(plant-2) +f85ec796-4b4d-4650-83c6-b3daa9e787ca,김선녕,snkim@samaneng.com,2,Y,플랜트2부(plant-2) +8b48c760-b1d2-4019-b4c8-2ff58d3b3270,김선배,sbkim2@samaneng.com,2,Y,플랜트2부(plant-2) +a969fd78-d54f-4d2e-b698-230d1873184e,김선범,sbkim6@samaneng.com,2,Y,CM사업부(cm-division) +cbbc843a-1bc3-464b-a14d-6a181b0bd806,김선자,sjkim3@samaneng.com,2,Y,CM사업부(cm-division) +4bd881eb-1260-4161-959c-658cb62c6231,김선택,stkim2@samaneng.com,2,Y,물환경2부(water-environment-2) +ad6845d7-931b-4df8-8a3d-420f51629836,김선환,shkim9@samaneng.com,2,Y,CM사업부(cm-division) +56703eaf-6d6f-486a-bbeb-6fd6ad1e0a47,김성광,skkim6@samaneng.com,2,Y,물환경1부(water-environment-1) +603e80e2-e505-48c4-8ff5-8c91238717da,김성규A,sgkim1@samaneng.com,2,Y,항만부(harbor) +ce043f57-5caa-465d-b2b5-21f906d5bd86,김성규B,sgkim3@samaneng.com,2,Y,CM사업부(cm-division) +9a00eaca-fefe-4327-89af-3bc49bed4e24,김성덕,sdkim@samaneng.com,2,Y,수자원2부(water-resources-2) +d931989d-5745-4521-aa5c-9f20a4c5209d,김성룡,srkim1@samaneng.com,2,Y,플랜트1부(plant-1) +19a0b6f5-4b18-47e0-9dc8-decc32226d57,김성민,smkim2@samaneng.com,2,Y,물환경1부(water-environment-1) +52827a9c-8060-47ef-80ee-cbca734c86ce,김성배,sbkim5@samaneng.com,2,Y,플랜트2부(plant-2) +0e53f70d-67ce-43a4-82f3-932b1b5e6588,김성수,sskim1@samaneng.com,2,Y,CM사업부(cm-division) +5992c6c7-096c-4aea-b105-a59b4eebcd10,김성식,sskim5@samaneng.com,2,Y,플랜트2부(plant-2) +fab32256-f70e-4513-a15f-78b8d37ee1c6,김성욱,sukim@samaneng.com,2,Y,철도1부(railway-1) +51eff138-57ed-4c2f-9faf-da4983b9e30f,김성욱,swkim2@samaneng.com,2,Y,수자원1부(water-resources-1) +ab90b79d-9057-41c3-8943-eec5f5fced62,김성웅,swkim@samaneng.com,2,Y,도시개발부(urban-development) +62db0f38-e4b0-4984-b5e3-554054ade757,김성원,swkim1@samaneng.com,2,Y,CM사업부(cm-division) +bf562084-c884-4e0a-bce2-61799093f158,김성중,sjkim4@samaneng.com,2,Y,물환경2부(water-environment-2) +7ada524f-a736-4fae-adc5-2a7a8592748c,김성직,sjkim7@samaneng.com,2,Y,물환경3부(water-environment-3) +e6c4f141-9dcc-40c6-a9b4-295f57dad3d3,김성진,sjkim2@samaneng.com,2,Y,CM사업부(cm-division) +88e768e6-6022-49ef-b142-4cfbdde5ecc3,김성철,sckim1@samaneng.com,2,Y,CM사업부(cm-division) +22d3283e-8c3a-4448-b783-5608f89657f6,김성철,sckim@samaneng.com,2,Y,CM사업부(cm-division) +8959c919-44b1-47c1-ace8-46881c192d66,김성택,stkim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +6321a2b6-70bb-4a2d-9380-d330b77355ea,김성호,shkim2@samaneng.com,2,Y,플랜트2부(plant-2) +6470a4ab-63ac-4731-8257-e87f3e31eceb,김성환,shkim11@samaneng.com,2,Y,지반터널부(geotech-tunnel) +3e982ac2-bc41-415b-b7a6-b8127a83ee01,김세경,skkim@samaneng.com,2,Y,플랜트2부(plant-2) +a3848201-b771-423b-b2c6-0d898bef08df,김세은,sekim@samaneng.com,2,Y,CM사업부(cm-division) +0b3e4b11-3304-4b42-8b84-fd7e41142bb7,김세환,kimsh@samaneng.com,2,Y,물환경2부(water-environment-2) +31de96c6-2765-489e-ba7b-f4461bb3fec3,김소희,shkim12@samaneng.com,2,Y,물환경3부(water-environment-3) +ff45770b-b184-4c8e-b918-bfbdb9056fca,김수정,sjkim9@samaneng.com,2,Y,CM사업부(cm-division) +40f32a37-22ea-497d-8a2c-ddce3d086cf7,김순배,sbkim1@samaneng.com,2,Y,CM사업부(cm-division) +e3897f91-8552-46f9-b344-17d2bf3ee72a,김순화,shkim1@samaneng.com,2,Y,CM사업부(cm-division) +5ebdc3e5-5ef6-460e-a884-073ba8476199,김승구,sgkim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +3691c6b6-e1b8-44e0-b867-30a977b3512e,김승범,sbkim4@samaneng.com,2,Y,CM사업부(cm-division) +ca9c4920-6760-4881-82f1-a432e88b819b,김승준,sjkim1@samaneng.com,2,Y,철도1부(railway-1) +e3eb40ea-8454-40b3-8fdd-a15369e28e26,김승화,shkim6@samaneng.com,2,Y,CM사업부(cm-division) +77eb5487-231e-4d58-b5d3-a245412b415d,김시복,sbkim3@samaneng.com,2,Y,CM사업부(cm-division) +fcd95d8d-f424-4e76-8324-bef1861f37db,김신교,skkim3@samaneng.com,2,Y,도시개발부(urban-development) +3300289d-4d23-4c7b-aa34-2dc8c73b902b,김신혁,shkim5@samaneng.com,2,Y,인사총무부(hr-admin) +2927371a-6c99-405a-9d17-c6828731c904,김아람,arkim@samaneng.com,2,Y,수자원1부(water-resources-1) +5efe162a-3254-4e16-87ab-0ceb004acab0,김아연,aykim@samaneng.com,2,Y,조경레저부(landscape-leisure) +16ae66e0-c2ee-4a01-afda-c7326bdf8b8e,김아연,aykim1@samaneng.com,2,Y,수자원1부(water-resources-1) +f9b23dee-ee12-46b2-a56d-562d05b8796c,김연겸,ykkim@samaneng.com,2,Y,CM사업부(cm-division) +0ad2f30f-47dd-4201-bdb1-2942038a4613,김연석,yskim5@samaneng.com,2,Y,수자원2부(water-resources-2) +4eac89f4-8648-48b5-ad14-de1197709bd5,김열규,ygkim@samaneng.com,2,Y,물환경2부(water-environment-2) +83fbc272-70d5-4c22-9dcf-a1b91d5817f3,김영기,ykkim2@samaneng.com,2,Y,수력부(hydropower) +00ce7392-10e9-4b7f-be15-4e8444990c29,김영목,ymkim7@samaneng.com,2,Y,CM사업부(cm-division) +dca763a9-254d-4453-9bfb-580685c9328c,김영민,ymkim3@samaneng.com,2,Y,철도2부(railway-2) +58346e9f-bd2a-42bf-94bb-25376e095fbe,김영민,ymkim1@samaneng.com,2,Y,조경레저부(landscape-leisure) +b519543e-f63a-4832-9a2f-9c67e9872372,김영석,yskim8@samaneng.com,2,Y,플랜트2부(plant-2) +e8ef8e78-ad81-4e8c-ba01-d82700a48b10,김영석,yskim6@samaneng.com,2,Y,물환경1부(water-environment-1) +8a648143-a005-4a4e-afc7-a27b1e2090be,김영수,yskim@samaneng.com,2,Y,구조부(structures) +b79d6b78-ab55-4a25-84ba-8c50469a88cf,김영신,yskim9@samaneng.com,2,Y,CM사업부(cm-division) +55625b94-e433-4d8d-b2b5-0e50948cb8a2,김영욱,ywkim1@samaneng.com,2,Y,CM사업부(cm-division) +957484e5-d29d-4bf5-83bf-d302d17c6da2,김영운,ywkim@samaneng.com,2,Y,CM사업부(cm-division) +d011abac-795f-48d7-950f-ed1aa723b546,김영은,yekim1@samaneng.com,2,Y,CM사업부(cm-division) +4a7d2eb9-ad01-4810-92f2-21985d30e40b,김영임,yikim@samaneng.com,2,Y,CM사업부(cm-division) +e49ffca8-bd50-4493-b7ca-10738c5c893e,김영조,yjkim4@samaneng.com,2,Y,CM사업부(cm-division) +b9035c48-ee4e-4ca4-ae39-1122ae2c7817,김영준,yjkim2@samaneng.com,2,Y,물환경1부(water-environment-1) +de52a2e6-4e5b-4cd6-ad63-fcfd75ddf9e9,김영준,yjkim6@samaneng.com,2,Y,수력부(hydropower) +92ee1c0a-6975-467a-a025-b5677b2a62a5,김영진,yjkim5@samaneng.com,2,Y,CM사업부(cm-division) +93250b72-0339-470e-96b5-f042f4282dd9,김영호,yhkim5@samaneng.com,2,Y,철도1부(railway-1) +44968ab0-c8c6-4c86-9d9d-39e56a3c853a,김예빈,ybkim@samaneng.com,2,Y,도시계획부(urban-planning) +6c56ff1b-8ce5-4bb1-9beb-79a4e9270367,김예슬,yskim2@samaneng.com,2,Y,재무회계팀(finance) +5126be49-942b-4948-a7bd-54c1153d4518,김예은,yekim@samaneng.com,2,Y,물환경3부(water-environment-3) +24ca7aaa-3ebf-4d4a-9c41-7576516c6685,김용구,ygkim2@samaneng.com,2,Y,CM사업부(cm-division) +94e9bd04-e29d-4e55-8a1f-dbebde5a6700,김용민,ymkim@samaneng.com,2,Y,환경평가부(environment-assessment) +d71a3002-7f3e-4add-8e7a-b241170e0d58,김용종,yjkim1@samaneng.com,2,Y,CM사업부(cm-division) +df68e731-c701-4763-9396-45306a99ac13,김용현,yhkim7@samaneng.com,2,Y,교통계획부(transport-planning) +442e1c13-aa95-401e-8d1b-7d1cb63956c7,김용희,yhkim3@samaneng.com,2,Y,교통계획부(transport-planning) +bbd58fdd-0e56-41e3-9974-1e89ddd6bd45,김우섭,wskim1@samaneng.com,2,Y,CM사업부(cm-division) +4b4265bb-daba-4658-b20d-56443126957c,김욱영,uykim@samaneng.com,2,Y,플랜트2부(plant-2) +c41e48e4-4524-4f4f-8d54-b11f119feffc,김운걸,wgkim@samaneng.com,2,Y,플랜트1부(plant-1) +c05914aa-380e-485a-9e7b-614686c6d4c5,김운경,ukkim@samaneng.com,2,Y,플랜트2부(plant-2) +5f00b339-d956-4e39-860d-56c35fe74571,김운배,ubkim@samaneng.com,2,Y,철도2부(railway-2) +176826b1-4d0c-4e4d-addc-8d8261cbb4df,김웅환,whkim@samaneng.com,2,Y,수자원2부(water-resources-2) +ac183db6-f255-41b7-ac54-1e255c411f91,김원근,wgkim1@samaneng.com,2,Y,사업개발실(business-development) +e99390cf-ee37-4bb9-b1e8-a0f9ba30cb0c,김원석,wskim@samaneng.com,2,Y,수자원2부(water-resources-2) +ebe57e32-c4dc-4e45-85ad-12f4efa810db,김원숙,wskim2@samaneng.com,2,Y,업무(operations) +0a81919f-453c-43e8-bfbb-1012213198a8,김유진,yjkim3@samaneng.com,2,Y,CM사업부(cm-division) +9a69deee-178f-4bc0-8bf2-b479494ea4de,김윤민,ymkim4@samaneng.com,2,Y,물환경2부(water-environment-2) +f63ece1c-9caf-43fb-9cdb-793207eb7d39,김윤성,yskim1@samaneng.com,2,Y,플랜트2부(plant-2) +fc64fc3c-bb48-4a73-b4af-55aa772afbc4,김윤재,yjkim@samaneng.com,2,Y,도로부(road) +ea77b5f3-caf0-4fd7-8849-2eeb3b154eed,김윤찬,yckim2@samaneng.com,2,Y,도시계획부(urban-planning) +57981232-d119-4860-a69c-841c59b9430a,김은대,edkim@samaneng.com,2,Y,CM사업부(cm-division) +1d01da67-7f1c-40ef-83c6-728b5a366bd3,김은영,eykim@samaneng.com,2,Y,CM사업부(cm-division) +f84b09b1-2e14-419c-8f6b-b9f2a878d85a,김은이,eikim@samaneng.com,2,Y,CM사업부(cm-division) +1d81a679-314d-4f97-a558-9c593786d6fb,김은희,ehkim@samaneng.com,2,Y,철도2부(railway-2) +3d495332-57a5-4580-ac72-16c2a89e1f21,김의섭,eskim@samaneng.com,2,Y,CM사업부(cm-division) +09dc3c1f-e941-48cd-ba8b-a9b92fe7422e,김의진,ejkim1@samaneng.com,2,Y,물환경1부(water-environment-1) +61d7c4bf-39f9-4c63-8422-5316d972f33b,김의철,eckim@samaneng.com,2,Y,철도2부(railway-2) +5e0b72fc-80bc-4f44-9c7f-9b0d6d5c2757,김익기,ikkim@samaneng.com,2,Y,CM사업부(cm-division) +04fb218c-fbee-415d-8621-556a081f7d1b,김익수,iskim3@samaneng.com,2,Y,구조부(structures) +4fd0f808-99ff-41ad-9d54-af203f3099ac,김익환,ihkim1@samaneng.com,2,Y,구조부(structures) +2c0e78e9-9c70-4b87-8648-8ae568b5a102,김인,ikim@samaneng.com,2,Y,해외사업부(overseas-business) +a655855d-a421-45fb-95cb-adf0eb3bbdef,김인경,ikkim1@samaneng.com,2,Y,수자원1부(water-resources-1) +39c6beb3-5d81-4374-87e2-394e5fc7b0cf,김인섭,iskim1@samaneng.com,2,Y,물환경2부(water-environment-2) +7262b853-c4b0-4241-b3f1-3042ac834f7d,김인식,iskim@samaneng.com,2,Y,수력부(hydropower) +bd5183bc-f81f-40d9-b009-394cc1616f5f,김인중,ijkim@samaneng.com,2,Y,CM사업부(cm-division) +6e6ad963-c479-4beb-ade9-6a892f6b4c7e,김인홍,ihkim@samaneng.com,2,Y,물환경1부(water-environment-1) +27c5e60e-4994-4b52-97c0-b769b1bf36d6,김임동,idkim@samaneng.com,2,Y,플랜트1부(plant-1) +4e5949ad-9308-4597-be69-0229a9d26bbd,김장온,jokim@samaneng.com,2,Y,도로부(road) +d15f5177-0c16-4c80-b3fd-7b9cd881c07a,김장욱,jwkim1@samaneng.com,2,Y,물환경1부(water-environment-1) +9d3f9c9d-0274-4984-9419-1be62b509ebb,김장현,jhkim7@samaneng.com,2,Y,철도1부(railway-1) +e67996e2-d70a-4b21-b946-142a028496db,김재림,jlkim@samaneng.com,2,Y,도로부(road) +2e413c95-bb5e-40cf-bd22-dc6e949da02b,김재상,jskim6@samaneng.com,2,Y,물환경3부(water-environment-3) +4c7dd3b7-f842-4d28-98c1-7fd8a044221a,김재욱,jukim1@samaneng.com,2,Y,물환경3부(water-environment-3) +6361ade7-f9c5-4cd0-8fd9-862140a19fc2,김재원,jwkim5@samaneng.com,2,Y,구조부(structures) +d2d2c6d9-206f-4839-9fa5-7ef790be0780,김재홍,jhkim22@samaneng.com,2,Y,플랜트2부(plant-2) +770ddc52-4acc-4017-a903-6aade7c1be24,김재환,jhkim11@samaneng.com,2,Y,CM사업부(cm-division) +9e61280a-a6d1-4b31-9dd0-e77df3241afc,김재훈,jhkim27@samaneng.com,2,Y,지반터널부(geotech-tunnel) +b5a437b7-6f22-40a1-ae8e-5bae934853bd,김재휴,jhkim3@samaneng.com,2,Y,CM사업부(cm-division) +300e7a32-0999-49b4-8f27-cda65eceb26d,김정구,jkkim4@samaneng.com,2,Y,CM사업부(cm-division) +62b59ca4-fb07-47b5-990a-dba61f07d773,김정규,jkkim7@samaneng.com,2,Y,도시개발부(urban-development) +2b67a7d9-862d-49c8-a434-5ca7a45d4447,김정균,jkkim3@samaneng.com,2,Y,CM사업부(cm-division) +4c851f17-df54-43b1-ae30-5d9e7d60dea6,김정길,jkkim2@samaneng.com,2,Y,플랜트1부(plant-1) +5f3e1804-8f0d-420c-94e5-ff5fbd782614,김정덕,jdkim@samaneng.com,2,Y,플랜트2부(plant-2) +9a6d5e2f-ed36-4b9c-b765-ac9e475dcbc4,김정래,jrkim@samaneng.com,2,Y,철도2부(railway-2) +fb5e0c30-65a2-4b99-bd25-8c6498bc356f,김정미,jmkim5@samaneng.com,2,Y,CM사업부(cm-division) +aaddd457-2e2b-4dca-a7f6-5d595c220296,김정민,jmkim@samaneng.com,2,Y,CM사업부(cm-division) +b1b1fb93-0ed1-40fb-bf15-1c9ade719dfb,김정민,jmkim6@samaneng.com,2,Y,철도2부(railway-2) +79321be5-2bad-4ca1-88cb-0ef8e313afe5,김정배,jbkim1@samaneng.com,2,Y,CM사업부(cm-division) +e5641145-cb25-40d9-be05-6cbce0d02e12,김정배,jbkim@samaneng.com,2,Y,플랜트2부(plant-2) +34ed66a1-8b39-4d62-a89b-8f085743d721,김정아,jakim@samaneng.com,2,Y,물환경2부(water-environment-2) +642228c4-4f2c-4437-a74e-7e47d91c49f5,김정원,jwkim@samaneng.com,2,Y,철도2부(railway-2) +0bc02290-8824-4a0f-83b4-98f8c5c0a546,김정은,cukim@samaneng.com,2,Y,물환경3부(water-environment-3) +954bca51-57b7-4bf2-a92c-2d8bd61acd5a,김정태,jtkim@samaneng.com,2,Y,철도2부(railway-2) +baf4e309-204f-4cd0-af1b-a4b09e2da82f,김정태,jtkim1@samaneng.com,2,Y,플랜트2부(plant-2) +7a4a3c53-feb3-47a2-a9f1-63a3f76077d9,김정현,jhkim30@samaneng.com,2,Y,CM사업부(cm-division) +c731db9a-9b59-4926-93cf-effa2721ffed,김정현,jhkim10@samaneng.com,2,Y,항만부(harbor) +f0986d9a-18cf-43a3-9a41-c639111b35d6,김정호,jhkim1@samaneng.com,2,Y,물환경2부(water-environment-2) +cab70f18-3b8f-4f6b-a738-8e94c0c38d98,김정훈,jhkim24@samaneng.com,2,Y,플랜트1부(plant-1) +30f48df4-f7ed-4633-b974-702545985a78,김정희,jhkim15@samaneng.com,2,Y,CM사업부(cm-division) +1c55c357-6fbf-4b38-9a83-fe54ea17e750,김정희,jhkim4@samaneng.com,2,Y,CM사업부(cm-division) +fb86fea2-4be9-47c1-8844-2473490e64d4,김제숙,jskim10@samaneng.com,2,Y,CM사업부(cm-division) +8f1d15ed-1e7f-408c-b63b-6924725d0a83,김제웅,jukim@samaneng.com,2,Y,CM사업부(cm-division) +dd2c6f54-b594-4a1f-9091-1c807092e736,김제훈,jhkim20@samaneng.com,2,Y,철도2부(railway-2) +fec42ee3-1fd8-44b6-b880-26cf6a59fb6b,김종권,jkkim1@samaneng.com,2,Y,CM사업부(cm-division) +ef18a403-34ad-4bef-bd49-3651904ffa41,김종규,jgkim@samaneng.com,2,Y,CM사업부(cm-division) +c1df545e-49b0-4fc1-9c45-e130219d017f,김종남,jnkim@samaneng.com,2,Y,CM사업부(cm-division) +c4bf8595-50dd-4bd8-8089-a55cd5539a04,김종대,jdkim2@samaneng.com,2,Y,CM사업부(cm-division) +0056d6b0-b73f-41c8-bd81-12867d13b88b,김종문,jmkim4@samaneng.com,2,Y,플랜트2부(plant-2) +53b8f3f2-f1f2-4387-854b-ef48a6f501c5,김종완,jwkim6@samaneng.com,2,Y,조경레저부(landscape-leisure) +ad831d2a-2cde-4d14-9d58-2635c536d77c,김종우,jwkim8@samaneng.com,2,Y,CM사업부(cm-division) +27e2a894-9bc1-4ff0-b195-509d02fe7fc1,김종준,jjkim4@samaneng.com,2,Y,CM사업부(cm-division) +1a363f17-29e6-4892-a09e-06fbd02ecb78,김종혁,jhkim2@samaneng.com,2,Y,사업개발실(business-development) +3691b2fa-3b14-4349-accb-7f2c6df2247f,김종환,jhkim9@samaneng.com,2,Y,CM사업부(cm-division) +a9ef9c48-ca80-4067-8748-a17af2d51e04,김주신,jskim9@samaneng.com,2,Y,플랜트2부(plant-2) +b54685cc-6714-4b86-93a4-84e3da110de2,김주찬,jckim3@samaneng.com,2,Y,물환경1부(water-environment-1) +fbcb10db-0ffb-418e-bd21-315ed8b8f070,김주철,jckim1@samaneng.com,2,Y,플랜트2부(plant-2) +cf89f839-86cb-455d-8994-e06705e64e73,김주철,zckim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +2477abdf-c996-4b95-86c9-6ee93a2cad4f,김주현,jhk@samaneng.com,2,Y,항만부(harbor) +7fbb18c9-57e6-451a-bfce-da98f3bdac2d,김주형,jhkim18@samaneng.com,2,Y,교통계획부(transport-planning) +76ab1ff5-64a7-4c8b-beec-57324f576778,김주호,jhkim28@samaneng.com,2,Y,CM사업부(cm-division) +b01bc4d8-3511-46a5-8eb4-91803457c998,김준규,jkkim@samaneng.com,2,Y,PQ팀(pq-team) +5cbc987b-866d-4cbc-a25f-3a516d0b835a,김준성A,jskim@samaneng.com,2,Y,CM사업부(cm-division) +988efbc2-c1c2-4237-8965-7698393992ec,김준성B,jskim8@samaneng.com,2,Y,CM사업부(cm-division) +39c41fb2-5f3b-4a89-93aa-ac781a61d2cf,김준우,jwkim4@samaneng.com,2,Y,수자원2부(water-resources-2) +fb9223df-dab7-4bf2-b6fa-f7c6d7153cfc,김준일,jikim@samaneng.com,2,Y,도시계획부(urban-planning) +43c3d687-42f7-4a0e-981d-db29631a2c97,김준학,jhkim19@samaneng.com,2,Y,지반터널부(geotech-tunnel) +17779a92-e6bf-4f9b-86b3-a2f60750d39e,김준혁,jhkim6@samaneng.com,2,Y,교통계획부(transport-planning) +43d9dabb-f7c9-453f-9a27-58592f1a74c7,김준혁,jhkim23@samaneng.com,2,Y,물환경1부(water-environment-1) +7fdc9641-2323-4f5f-878b-f906af2ad5b7,김준호,jhkim29@samaneng.com,2,Y,물환경1부(water-environment-1) +7fc5e746-4c86-4b0e-b29e-2c7bcc32fbb9,김중기,jkkim6@samaneng.com,2,Y,수자원2부(water-resources-2) +6380ab8a-6e0c-46f6-9b65-657879c062bc,김중석,jskim5@samaneng.com,2,Y,CM사업부(cm-division) +4adad9be-17b7-4d05-b532-fa2983930762,김중재,jjkim3@samaneng.com,2,Y,조경레저부(landscape-leisure) +690fa3de-8e67-4d28-9657-c04620a18145,김지수,jskim4@samaneng.com,2,Y,도시개발부(urban-development) +0e5151b2-2903-447a-ad8a-309de0f6730d,김지열,jykim@samaneng.com,2,Y,환경평가부(environment-assessment) +170c6c9d-30d5-4d54-afbe-fdeb29dd99f4,김지영,jykim6@samaneng.com,2,Y,환경평가부(environment-assessment) +44813202-28de-4709-b1d0-385bd02fc0b1,김지우,jwkim2@samaneng.com,2,Y,도시계획부(urban-planning) +c2dbc85a-29a9-4dd1-aa64-8c90cd4ebfaa,김지현,jhkim8@samaneng.com,2,Y,CM사업부(cm-division) +8b14f41f-85e2-4514-b1c9-2edd59f100df,김지혜,jhkim@samaneng.com,2,Y,CM사업부(cm-division) +d6125c34-163a-46f6-aeed-37ebe808afbe,김지훈,jhkim5@samaneng.com,2,Y,CM사업부(cm-division) +0226b8fa-add1-4afe-880c-383b362639da,김진섭,jskim3@samaneng.com,2,Y,CM사업부(cm-division) +65e1b6e0-b5e4-4d5c-aaa6-9896babcedd6,김진세,jskim11@samaneng.com,2,Y,기획부(planning) +dc50d3db-f28d-4912-b587-c50739a15cc2,김진욱,jwkim3@samaneng.com,2,Y,플랜트2부(plant-2) +170857a9-32e2-4c58-9911-e39cdf2e0e49,김진율,jykim2@samaneng.com,2,Y,철도1부(railway-1) +65ae680e-256a-4029-90ae-8772ff6c6f35,김진찬,jckim@samaneng.com,2,Y,수력부(hydropower) +78f651bb-829d-4290-ab27-3d3ed27c67c7,김진철,jckim2@samaneng.com,2,Y,물환경2부(water-environment-2) +462cfff0-8ea0-4fae-9374-562942c80194,김진혁,jhkim16@samaneng.com,2,Y,물환경2부(water-environment-2) +204227d8-f3aa-4478-a8a3-2d23adb57921,김진현,jhkim26@samaneng.com,2,Y,CM사업부(cm-division) +8707f4ec-0e78-4673-af34-44240970a079,김진환,jhkim21@samaneng.com,2,Y,지반터널부(geotech-tunnel) +253fa02f-cfe4-4c23-a943-19be3b529357,김진훈,jhkim17@samaneng.com,2,Y,기획부(planning) +1355c700-b6b6-4dd9-90dc-ad824392373e,김창업,cekim@samaneng.com,2,Y,CM사업부(cm-division) +6356eeb4-4855-49f5-9784-751cb017345b,김창환,chkim3@samaneng.com,2,Y,물환경2부(water-environment-2) +6e11aa75-7446-4ad5-90be-0e1b89a9f7a8,김채윤,cykim@samaneng.com,2,Y,항만부(harbor) +acfec4f8-4589-4dec-9915-59f5c3ecd04b,김천주,cjkim@samaneng.com,2,Y,CM사업부(cm-division) +f8953aa4-9543-4e6c-8324-c899e52b9f20,김철규,ckkim@samaneng.com,2,Y,철도2부(railway-2) +08dc823d-6d9a-42e3-9900-e69dd062f0f2,김철년,cykim1@samaneng.com,2,Y,철도2부(railway-2) +f0a9cb22-adef-40f6-a43e-c8123207278b,김철호,chkim@samaneng.com,2,Y,물환경2부(water-environment-2) +4077eb5e-fe13-4e62-8a85-5eba3aa70e1f,김치은,cekim1@samaneng.com,2,Y,도로부(road) +2ab9e960-d4c1-46e2-8e7c-290bcf9d861f,김태상,tskim1@samaneng.com,2,Y,수자원1부(water-resources-1) +a3d2b24d-fd04-4d4a-95ff-ba29cfbd0273,김태용,tykim@samaneng.com,2,Y,물환경1부(water-environment-1) +3f8335c7-36cd-44b8-afca-b5999585e809,김태욱,tukim@samaneng.com,2,Y,물환경2부(water-environment-2) +0e319818-444a-4091-bce3-a038b044672c,김태헌,thkim4@samaneng.com,2,Y,철도1부(railway-1) +755c9e82-4030-4100-bab3-26e7a8ba8d75,김태현,thkim5@samaneng.com,2,Y,조경레저부(landscape-leisure) +4e1bf9b4-cbe9-402a-9aac-36f69f89e37c,김태호,thkim@samaneng.com,2,Y,CM사업부(cm-division) +6b011ebe-0057-4f2b-bf99-b5bf7ea31365,김택규,tkkim2@samaneng.com,2,Y,도시계획부(urban-planning) +ceb29a5b-9ee4-4b7a-8f6a-99fcd0341b3d,김택중,tjkim2@samaneng.com,2,Y,CM사업부(cm-division) +b38ff7c1-9093-42b2-b55a-ab536659f52c,김하은,hekim@samaneng.com,2,Y,철도2부(railway-2) +25662356-98fd-4d6e-95bf-411bc44e7431,김학성,hskim8@samaneng.com,2,Y,플랜트2부(plant-2) +6a78222d-664f-43ae-9bbc-c04fb9138426,김학재,hjkim9@samaneng.com,2,Y,철도2부(railway-2) +e3b70ab2-b677-46c8-8385-a2bcd9aeef53,김한별,hbkim@samaneng.com,2,Y,물환경1부(water-environment-1) +c9f1862e-501e-4269-b5a7-2d9370607ef2,김해강,hkkim3@samaneng.com,2,Y,철도2부(railway-2) +88a6c787-6546-4f7a-ba1f-e3519e179ff7,김해동,hdkim@samaneng.com,2,Y,구조부(structures) +a28f9533-b8bc-4bba-9d6d-eae001dbd16b,김향숙,hskim12@samaneng.com,2,Y,CM사업부(cm-division) +8b2addb7-8c64-471e-94ec-97b5001b8c7c,김혁,hkim@samaneng.com,2,Y,구조부(structures) +7df22d12-0d6a-43d9-ae20-1476e17ea9d6,김현경,hkkim1@samaneng.com,2,Y,물환경3부(water-environment-3) +a241b09c-46ce-4064-b1e9-96289bc13bed,김현길,hgkim2@samaneng.com,2,Y,CM사업부(cm-division) +4863879f-6200-41be-976c-722a019a9009,김현민,hmkim@samaneng.com,2,Y,도로부(road) +c3839ec0-4db2-48fe-833f-2e988be28a70,김현섭,hskim7@samaneng.com,2,Y,환경평가부(environment-assessment) +c2075a0b-0ab9-4577-9821-99507729f03b,김현수,hskim9@samaneng.com,2,Y,플랜트2부(plant-2) +2977e3a4-1085-4290-bbef-f0cb5c652d20,김현수,hskim11@samaneng.com,2,Y,플랜트1부(plant-1) +592fecab-301f-44e1-8564-35da0f8e49db,김현아,hakim1@samaneng.com,2,Y,CM사업부(cm-division) +fc9f9aa6-b4df-4ca0-8373-1512b1971c9d,김현아,hakim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +939628c1-6498-4fc8-a5e5-e20a2dec3807,김현철,hckim@samaneng.com,2,Y,CM사업부(cm-division) +1818cabc-c043-49ff-a890-7b5503b488f2,김형건,chunryung@samaneng.com,2,Y,철도1부(railway-1) +843b1665-3458-41ea-94c9-5f8ed35cf6c0,김형규,hgkim3@samaneng.com,2,Y,수자원2부(water-resources-2) +d9dc8303-876a-4046-bd60-27871a7881e9,김형기,hgkim1@samaneng.com,2,Y,철도2부(railway-2) +9aeaccbb-57b5-417a-945f-5899610a9f1c,김형배,hbkim87@samaneng.com,2,Y,해외사업부(overseas-business) +fafa80f7-ded8-4bf3-bcd3-c8a47a0ace1f,김형준,hjkim11@samaneng.com,2,Y,물환경1부(water-environment-1) +bfad7caf-0949-4853-acaa-22967b0241a2,김형준,hjkim@samaneng.com,2,Y,수자원1부(water-resources-1) +9982dba7-056e-4a53-bc1f-04cf9e6c6a09,김형준,hjkim2@samaneng.com,2,Y,CM사업부(cm-division) +2c6f5c16-182e-40fb-b1ef-0fa83f3a4ff5,김형진,hjkim7@samaneng.com,2,Y,CM사업부(cm-division) +2ce113a4-4a26-4734-ba03-71bfc890866e,김혜미,hmkim1@samaneng.com,2,Y,철도2부(railway-2) +ca352ce2-b8ba-4bee-a8c2-73221c5b8a1d,김혜민,hmkim2@samaneng.com,2,Y,해외사업부(overseas-business) +e2132b43-1773-4514-9fd8-13386f3c378f,김혜지,hjkim1@samaneng.com,2,Y,철도1부(railway-1) +4d61ed5b-0761-438d-88f8-bbad8de70ffb,김호영,hykim1@samaneng.com,2,Y,수자원2부(water-resources-2) +1e64e3f4-949a-4960-a0f9-5644da441b18,김호중,hjkim10@samaneng.com,2,Y,CM사업부(cm-division) +5b091add-12eb-4cc5-8f6f-6923de7f5743,김홍석,hskim13@samaneng.com,2,Y,플랜트2부(plant-2) +7d9ee669-9d99-4e6e-ba13-102ddf829c7e,김홍석,hskim4@samaneng.com,2,Y,CM사업부(cm-division) +d609d703-5f04-42f8-991d-54568101bd16,김화영,hykim2@samaneng.com,2,Y,CM사업부(cm-division) +f75658bd-5fa6-4477-ae37-de824e4fc48a,김화영,hykim@samaneng.com,2,Y,플랜트2부(plant-2) +c4c5a726-78b3-4b90-b0ad-ee4c5fa93e22,김효근,hgkim4@samaneng.com,2,Y,CM사업부(cm-division) +18614ce7-7af4-4b57-916c-54b0f21d5853,김희각,hkkim2@samaneng.com,2,Y,CM사업부(cm-division) +13734374-cfce-4348-b948-f9e3b6d6ba61,김희석,hskim3@samaneng.com,2,Y,환경평가부(environment-assessment) +c7c7f789-8227-44f2-a012-8f2119c43d2a,김희선,hskim@samaneng.com,2,Y,CM사업부(cm-division) +b913264d-e4b0-4a4f-94a8-37195171ca1e,김희찬,hckim3@samaneng.com,2,Y,CM사업부(cm-division) +f851ae0c-47dd-438a-a8a9-0b72a897a387,나광호,khna@samaneng.com,2,Y,사업개발실(business-development) +07b4a17f-b228-4539-9bbd-602c71b14704,나금란,krna@samaneng.com,2,Y,CM사업부(cm-division) +6d6d2764-e706-411f-8488-dcae27012440,나대성,dsna@samaneng.com,2,Y,철도2부(railway-2) +d77b8c0d-8f44-42f1-bab6-d87a6981c6e8,나선채,scna@samaneng.com,2,Y,항만부(harbor) +876db251-2c82-411a-a15f-035323480316,나성희,shna@samaneng.com,2,Y,CM사업부(cm-division) +3c56ccf6-d3e0-44a7-aeb6-c461c06c9f5b,나쉬,reyes@samaneng.com,2,Y,수자원1부(water-resources-1) +3ef1bf15-4dfc-4af9-be59-abbcdb521e2e,나영희,yhna@samaneng.com,2,Y,CM사업부(cm-division) +ce827500-27f2-467f-ae3c-2150c171758f,나한범,hbra@samaneng.com,2,Y,플랜트2부(plant-2) +f58d36c4-cc20-4c0e-a646-0d8bffce528b,남건호,ghnam@samaneng.com,2,Y,플랜트2부(plant-2) +6f841095-6261-487e-9639-6fb7e80fda91,남궁영환,yhnamgoong@samaneng.com,2,Y,CM사업부(cm-division) +68529429-5dba-46c9-b99b-4717f3b7b0dd,남명우,mwnam@samaneng.com,2,Y,CM사업부(cm-division) +61043d41-e829-486b-8b45-6a4a1cf23eec,남웅비,wbnam@samaneng.com,2,Y,플랜트2부(plant-2) +09d58fd7-a7a5-4f71-b897-2159909d945d,남윤우,ywnam@samaneng.com,2,Y,물환경1부(water-environment-1) +d0cba740-e1a6-469a-ae7b-615cab2c0477,남일우,iwnam@samaneng.com,2,Y,지반터널부(geotech-tunnel) +1047adcf-f508-4931-b062-63d1eedcd93b,남재준,jjnam@samaneng.com,2,Y,수자원2부(water-resources-2) +aa67bd95-30a0-4cde-8bf7-0d4bcce81ca4,남지호,jhnam@samaneng.com,2,Y,업무(operations) +532a010a-de9a-4dd8-aa67-c26c85a97e0d,노경희,khnoh1@samaneng.com,2,Y,수자원2부(water-resources-2) +9a37df24-7a8d-4ba4-87d1-c9fba91e1a0c,노근호,khnoh@samaneng.com,2,Y,플랜트2부(plant-2) +4d3a59e1-ee5c-4e39-93de-4783daa542c3,노남욱,nwro@samaneng.com,2,Y,플랜트2부(plant-2) +675d2a6c-7e14-4fef-94b1-a551dc25739e,노동환,dhnoh@samaneng.com,2,Y,플랜트2부(plant-2) +3cbfc2b3-1bb2-4b17-92a3-b225bfe9098c,노성호,shnoh@samaneng.com,2,Y,CM사업부(cm-division) +1faec360-34db-44b0-89ae-baed54ab0e2c,노세종,sjnoh@samaneng.com,2,Y,사업개발실(business-development) +d86fa5ff-cb29-4ae5-95a4-d3c882c15b3c,노윤경,yknoh@samaneng.com,2,Y,도시계획부(urban-planning) +c2103316-6fcd-4436-9ee2-82b32f1f7306,노인호,ihnoh@samaneng.com,2,Y,CM사업부(cm-division) +acce5dae-86ed-424b-b7ba-36515e0ad584,노정훈,jhroh@samaneng.com,2,Y,도로부(road) +6316af8b-0441-4974-8b36-25e1ec92dae5,노주환,jhnoh1@samaneng.com,2,Y,물환경2부(water-environment-2) +b317ca8e-9157-4c98-92b5-ca470562a52b,노해성,hsnoh1@samaneng.com,2,Y,교통계획부(transport-planning) +3e44ad35-2cf8-4509-bd84-510ba86b2152,노현주,hjno@samaneng.com,2,Y,플랜트1부(plant-1) +612810fd-cf9e-4938-bc4e-fda1c11ed1ee,노호석,hsnoh@samaneng.com,2,Y,철도1부(railway-1) +81e2695a-b376-4293-a6e5-0266dbe57497,류경애,karyu@samaneng.com,2,Y,CM사업부(cm-division) +b635a3eb-8913-47eb-8159-41e4e6d194a7,류나경,nkryu@samaneng.com,2,Y,물환경1부(water-environment-1) +9c2a0195-23db-4911-9ac0-659d7a1cae08,류동균,dgryu@samaneng.com,2,Y,물환경2부(water-environment-2) +8c225e5c-23af-4472-a984-bdfed9446e98,류소열,syryu@samaneng.com,2,Y,구조부(structures) +f35ac3ce-10fd-452b-bba4-a5f110db02ae,류승하,shryu@samaneng.com,2,Y,수력부(hydropower) +faff8ac8-549b-4c19-99e9-02a0a21b5916,류아현,ahryu@samaneng.com,2,Y,CM사업부(cm-division) +75c2a348-3166-4087-85f8-39e5c687dd48,류정현,jhryu@samaneng.com,2,Y,사업개발실(business-development) +1a6f7ae2-67f3-4061-80bc-b35713efa678,류창수,csryu@samaneng.com,2,Y,교통계획부(transport-planning) +70d3366a-46a9-4a4c-857b-a32ee3d74fdf,류태열,tyryu@samaneng.com,2,Y,철도2부(railway-2) +f53bd3a6-565b-41ec-aafe-a42f06d14b70,류호진,hjryu@samaneng.com,2,Y,플랜트2부(plant-2) +268992d2-62f7-4ca8-b48c-1f6f3e594fbb,마길동,kdma@samaneng.com,2,Y,도시개발부(urban-development) +db78c820-69b6-4592-a162-bc57da4815d2,마아람,arma@samaneng.com,2,Y,기획부(planning) +34aec425-eb92-4d13-9fdc-5ea8952fd9ad,마준혁,jhma@samaneng.com,2,Y,수력부(hydropower) +93bdcb15-a12d-4c0e-b282-3970f726f955,만경록,krman@samaneng.com,2,Y,구조부(structures) +ae9e732d-b9bd-4f01-b4f3-b50d45169223,명지홍,jhmyeong@samaneng.com,2,Y,플랜트1부(plant-1) +bf0c9f8f-2071-4ad2-ac7a-fd5ce761f02b,문경식,ksmoon@samaneng.com,2,Y,물환경1부(water-environment-1) +84929a5a-6578-4fa3-9147-b30d361c5f73,문광욱,gumun@samaneng.com,2,Y,플랜트1부(plant-1) +bc0589f5-75f9-4e8b-94c5-a08a04b267ca,문규정,kjmoon@samaneng.com,2,Y,CM사업부(cm-division) +803d9f66-2e8e-43bf-9d16-6d631bd977b4,문기주,gjmoon@samaneng.com,2,Y,CM사업부(cm-division) +72b4cfbf-5f8c-42bb-9489-ddda19fbf58f,문미애,mamoon@samaneng.com,2,Y,수력부(hydropower) +e2ce5179-ed1c-48cd-80a2-bf19a191bc65,문병묵,bmmoon@samaneng.com,2,Y,CM사업부(cm-division) +9e03ac3d-b6cb-4ecc-a659-768d4a8e87d7,문병창,bcmoon1@samaneng.com,2,Y,CM사업부(cm-division) +47fbfdb9-a58f-485a-8a0a-9b5488f9b908,문병철,bcmoon@samaneng.com,2,Y,CM사업부(cm-division) +71fa2410-71c6-4c68-acfa-4e72dc9edba3,문상봉,sbmoon@samaneng.com,2,Y,도로부(road) +2e920d9b-404a-42f8-ba8f-7e17e3e97cc6,문석준,sjmoon@samaneng.com,2,Y,물환경2부(water-environment-2) +d9fa5da9-636f-460e-99e1-2c18f620ce3a,문성진,sjmun@samaneng.com,2,Y,업무(operations) +3f35feba-e8fe-4bc8-9abd-9caf51900291,문소양,symoon@samaneng.com,2,Y,조경레저부(landscape-leisure) +d41720e7-54ff-480d-9e6f-e69b5d55ad02,문수혁,shmoon1@samaneng.com,2,Y,인사총무부(hr-admin) +dfd4c028-444e-4752-abed-747b294398d3,문영란,yrmoon@samaneng.com,2,Y,도시개발부(urban-development) +d4382742-857f-4678-a195-a91f0b0b4937,문용주,yjmoon@samaneng.com,2,Y,수자원1부(water-resources-1) +d81a6b75-2d88-4012-adfa-2759bb952311,문재훈,jhmoon1@samaneng.com,2,Y,CM사업부(cm-division) +fe33b320-c1f4-4e66-ad20-db43585b2744,문제현,jhmoon@samaneng.com,2,Y,인사총무부(hr-admin) +f0d0b902-7239-48ae-ad9a-10cc87f5a5d7,문종근,jkmoon@samaneng.com,2,Y,플랜트2부(plant-2) +2040e5f1-5480-48f2-9dbd-95e4eae1f356,문종천,jcmoon@samaneng.com,2,Y,CM사업부(cm-division) +2b6da602-1fe6-4aec-bc5c-9c24c0cf9792,문준석,jsmoon@samaneng.com,2,Y,물환경1부(water-environment-1) +e9a6604b-ec10-4026-957c-0285181b4e73,문창록,crmoon@samaneng.com,2,Y,도시계획부(urban-planning) +0994ebb0-8307-46c9-8ce3-36a86ae6dee7,문천수,csmun@samaneng.com,2,Y,철도2부(railway-2) +56c226be-76f0-43d2-9d36-573fa8f50721,문현석,hsmoon1@samaneng.com,2,Y,도시계획부(urban-planning) +46b3276b-4096-483b-be06-2c0f1ce6b107,문현주,hjmoon@samaneng.com,2,Y,CM사업부(cm-division) +f248e0d8-9366-4716-8f18-72d84a5787e6,문형장,hjmoon1@samaneng.com,2,Y,물환경2부(water-environment-2) +1b90a39f-b6af-46c0-98d2-bc26e8e53c0b,민경진,kjmin@samaneng.com,2,Y,철도1부(railway-1) +132195f0-2a87-4738-a49c-321b8625da27,민동욱,dwmin@samaneng.com,2,Y,도시계획부(urban-planning) +c29e060a-64ac-45e1-a69a-4d8e2f82c2c1,민만경,mkmin@samaneng.com,2,Y,CM사업부(cm-division) +98bfe9fa-2855-4087-bc3b-b7ac1a214a47,민범홍,bhmin@samaneng.com,2,Y,환경평가부(environment-assessment) +fe790a88-8d12-497f-9f5b-d069b2f366cb,민소연,symin@samaneng.com,2,Y,CM사업부(cm-division) +27350814-74c9-4398-8e21-5cb05c308865,민식,smin@samaneng.com,2,Y,CM사업부(cm-division) +d1e7f343-3b8a-43af-b72f-223844a8a533,민진기,jkmin@samaneng.com,2,Y,플랜트1부(plant-1) +7e746741-305c-4db6-8fa1-a1e035052256,민진홍,jhmin1@samaneng.com,2,Y,항만부(harbor) +ea4cf607-9a86-4191-9a9c-1c575ab17fa5,민진희,jhmin@samaneng.com,2,Y,플랜트2부(plant-2) +ac4abab3-9635-4f00-8e62-8f5a5420a46f,민창식,csmin@samaneng.com,2,Y,플랜트2부(plant-2) +ec4ab7d4-99ae-4c43-a923-5e94572e30cb,박경근,kgpark@samaneng.com,2,Y,도시계획부(urban-planning) +e6f90ca0-0dfb-4aca-a903-b5da7a175914,박경원,kwpark1@samaneng.com,2,Y,플랜트2부(plant-2) +cb5ca6f5-a683-4d00-b125-e12162f0b54d,박경원,kwpark@samaneng.com,2,Y,도로부(road) +13c9a141-5b6a-4b5e-bd02-b8217b76aadb,박경태,gtpark@samaneng.com,2,Y,철도2부(railway-2) +4e7197d1-5821-48a8-bde2-b1c5889db123,박광수,gspark2@samaneng.com,2,Y,수자원1부(water-resources-1) +15ca2ff6-ba5b-4a1e-b23d-bda0187b2586,박광욱,kupark@samaneng.com,2,Y,철도1부(railway-1) +255205ae-18cc-404b-a5a4-6723a972e4d6,박광현,khpark4@samaneng.com,2,Y,PQ팀(pq-team) +c14871da-e8f7-4870-bffa-77d1940d6e48,박광희,khpark1@samaneng.com,2,Y,물환경2부(water-environment-2) +74b83637-0856-4836-a512-d6f27588f1be,박교,kpark@samaneng.com,2,Y,수자원2부(water-resources-2) +5a888cb3-7b8a-4c3c-9c83-f92245375962,박귀한,khpark3@samaneng.com,2,Y,CM사업부(cm-division) +7d4b7dfb-edf1-4b0a-9f14-bac4f418b66e,박기순,kspark@samaneng.com,2,Y,CM사업부(cm-division) +0cbe18cf-3cec-49ac-bcb7-2fefe6e09946,박기현,khpark5@samaneng.com,2,Y,구조부(structures) +9a1f2a0a-1b56-4f2b-8a15-5d76b5894fdd,박길상,gspark@samaneng.com,2,Y,CM사업부(cm-division) +58f0c56e-e0bb-4840-b87e-6b708c0de529,박노석,nspark@samaneng.com,2,Y,지반터널부(geotech-tunnel) +b8ddbfd3-92ee-4cc9-b50d-77aaade63ae0,박대정,djpark@samaneng.com,2,Y,도시개발부(urban-development) +00c39007-0f54-4c72-bc63-ea45fa5cf988,박덕재,djpark1@samaneng.com,2,Y,CM사업부(cm-division) +23c04670-6da6-4f99-9c86-7afe3ca4fecd,박도현,dhpark@samaneng.com,2,Y,도시개발부(urban-development) +c4360cc7-766f-4241-8b9e-6b36c56bbb27,박동길,dgpark@samaneng.com,2,Y,조경레저부(landscape-leisure) +55a3d0d8-7a68-40da-bccc-9fb395a5f003,박동열,dypark@samaneng.com,2,Y,플랜트2부(plant-2) +b8d59266-27eb-4fab-96d9-17b67038389b,박동인,dipark@samaneng.com,2,Y,CM사업부(cm-division) +7a6211ed-322d-4a51-b496-97183a7e5dc2,박동헌,dhpark1@samaneng.com,2,Y,사업개발실(business-development) +2ccefd53-c769-441d-97fe-20a157546652,박문범,mbpark@samaneng.com,2,Y,CM사업부(cm-division) +6eb707e0-1159-41f4-984f-385a48dc2478,박미숙,mspark1@samaneng.com,2,Y,플랜트2부(plant-2) +d8d8abea-29e4-4675-90e6-80120c6e48af,박민정,mjpark3@samaneng.com,2,Y,CM사업부(cm-division) +dc114072-3d93-4be9-880e-ab95854726e5,박민지,mjpark2@samaneng.com,2,Y,수력부(hydropower) +8d5aa43c-475c-4405-9f81-046a11e69855,박민희,mhpark@samaneng.com,2,Y,CM사업부(cm-division) +f995dabc-b393-40d7-a3d8-3f4cfb5a286f,박민희,mhpark1@samaneng.com,2,Y,플랜트2부(plant-2) +01874ff8-b166-42b9-9b16-0a05addfe534,박보경,bkpark@samaneng.com,2,Y,CM사업부(cm-division) +af1fa080-86d1-43f2-ba33-48a04510da26,박봉기,bkpark2@samaneng.com,2,Y,지반터널부(geotech-tunnel) +5aa503d1-7d3d-4c2f-bfbc-be67de127bdf,박사무엘,spark@samaneng.com,2,Y,물환경3부(water-environment-3) +9660d226-9e4f-423a-8ed2-05a846858dc8,박상민,smpark2@samaneng.com,2,Y,CM사업부(cm-division) +0e65429d-6ac0-489f-8d00-90a0567357c6,박상수,sspark1@samaneng.com,2,Y,CM사업부(cm-division) +3d941d9c-abf5-43eb-926e-92687d366269,박상원,swpark1@samaneng.com,2,Y,CM사업부(cm-division) +d6302e43-6e26-4878-87fd-0ea5d2b6444f,박상제,sjpark2@samaneng.com,2,Y,CM사업부(cm-division) +a093b516-7bb9-48f1-8165-9628d1087b0e,박상준,sjpark3@samaneng.com,2,Y,CM사업부(cm-division) +3f124b95-b83b-4bdf-a4d3-ba1589100ac7,박상준,sjpark@samaneng.com,2,Y,수자원1부(water-resources-1) +9802d6d6-7653-4fbd-90fb-bf926bf1136d,박상철,scpark@samaneng.com,2,Y,철도1부(railway-1) +b1da7faa-27af-4113-953f-74dae355d675,박상호,shpark4@samaneng.com,2,Y,철도2부(railway-2) +6bda230e-4405-457e-9b85-40f186043f62,박상훈,shpark7@samaneng.com,2,Y,플랜트1부(plant-1) +899b8475-99b1-4781-8a4d-b474f0489571,박상흠,shpark6@samaneng.com,2,Y,물환경3부(water-environment-3) +af32bb21-e9bf-4994-9768-a68177b23ec2,박선량,slpark@samaneng.com,2,Y,CM사업부(cm-division) +640cabae-d0c3-4f5e-aa47-4e36ddb33132,박성걸,sgpark2@samaneng.com,2,Y,플랜트2부(plant-2) +46a77d2a-4d28-48b7-8fb4-702359fbf8d1,박성록,srpark1@samaneng.com,2,Y,수자원2부(water-resources-2) +0c266c71-7e5f-448b-ac2a-af11903ee650,박성섭,sspark@samaneng.com,2,Y,플랜트2부(plant-2) +f739c8dd-f34d-4b38-8504-0cc3f5dc48a3,박성수,sspark3@samaneng.com,2,Y,CM사업부(cm-division) +4df8ee7f-e0e8-4d1f-b6e3-f7c0082d2742,박성연,sypark3@samaneng.com,2,Y,CM사업부(cm-division) +ea68a138-e524-47fe-97a2-0f23510ab615,박성인,sipark@samaneng.com,2,Y,지반터널부(geotech-tunnel) +c4dee64e-3255-4552-ad3b-fe5b58c754a4,박성주,sjpark4@samaneng.com,2,Y,CM사업부(cm-division) +0fd3eaf2-f9ba-4576-b3b7-1d539f142364,박성혁,shpark11@samaneng.com,2,Y,지반터널부(geotech-tunnel) +f0e6f7cc-7db0-4d7f-8393-90c518a6d6ec,박성호,shpark@samaneng.com,2,Y,CM사업부(cm-division) +0503aa9d-dad6-4193-9ff1-7a2a454dd3d8,박성훈,shpark1@samaneng.com,2,Y,물환경1부(water-environment-1) +a3f631e2-7cca-4511-9c74-938f35ff981f,박세림,srpark@samaneng.com,2,Y,물환경2부(water-environment-2) +8f481ff1-9841-446b-8830-e1f7b1e16474,박세은,separk@samaneng.com,2,Y,CM사업부(cm-division) +9ab34faf-1f75-4e1f-b0ed-0d01e9d94718,박세환,shpark2@samaneng.com,2,Y,해외사업부(overseas-business) +755eab4b-72a3-461f-97b1-297e202b22f2,박수빈,sbpark@samaneng.com,2,Y,수자원1부(water-resources-1) +9f4d72c0-56f8-43d0-81b2-b349577ae21f,박수훈,shpark3@samaneng.com,2,Y,도로부(road) +b72989ed-b351-42dd-90b7-3038245a4433,박순석,sspark2@samaneng.com,2,Y,물환경1부(water-environment-1) +443c0b0e-37d6-4689-b205-603e51f1b7fb,박승건,sgpark@samaneng.com,2,Y,조경레저부(landscape-leisure) +b61022be-71d8-43f4-b4c1-62bfe76a3a7e,박승규,sgpark1@samaneng.com,2,Y,CM사업부(cm-division) +b4009c05-2095-40ea-af29-fe1ef234ce92,박영규,ygpark@samaneng.com,2,Y,항만부(harbor) +4628054f-c9b8-4491-8e90-c4eb7e39a1a3,박영남,ynpark@samaneng.com,2,Y,CM사업부(cm-division) +7ff9477a-aded-4c62-afca-9d2510376a2b,박영문,ympark@samaneng.com,2,Y,수자원1부(water-resources-1) +76e263fa-bff4-467d-b9cd-41439f335415,박영산,yspark1@samaneng.com,2,Y,플랜트2부(plant-2) +d01771e6-e236-4921-8458-8c57f02dc3ee,박영선,yspark2@samaneng.com,2,Y,도시계획부(urban-planning) +9d3aea8d-a90b-420f-9aac-bf8d4451cf15,박영수,yspark4@samaneng.com,2,Y,철도2부(railway-2) +5963b876-05ba-4325-99ce-43385c53f01b,박영욱,ywpark@samaneng.com,2,Y,수자원1부(water-resources-1) +8a4ecb35-d42d-4b49-ba7b-f617d1c27765,박영진,yjpark1@samaneng.com,2,Y,플랜트2부(plant-2) +17fdeead-eda2-4994-a01e-4ab2b73df5d7,박영진,yjpark@samaneng.com,2,Y,지반터널부(geotech-tunnel) +795f2718-a9f4-4be2-b9b9-b55224d0cf3c,박용규,ykpark@samaneng.com,2,Y,플랜트2부(plant-2) +5349aee5-c10a-4dbe-8ad1-7bf5172e584d,박용철,ycpark@samaneng.com,2,Y,플랜트2부(plant-2) +5136f148-8157-4f78-bbe5-491d51ad9422,박원배,wbpark@samaneng.com,2,Y,도시개발부(urban-development) +50a71565-0e26-4961-b9c3-b0f83dad8c8f,박원준,wjpark1@samaneng.com,2,Y,플랜트2부(plant-2) +777ac05a-1e20-4928-a780-900aa1dfb918,박원효,whpark@samaneng.com,2,Y,철도2부(railway-2) +31903221-0dc7-449f-ae7b-cc73ca5a2df1,박유진,yspark@samaneng.com,2,Y,철도2부(railway-2) +e0cda0c3-ee53-4639-be48-17792b4fd4da,박윤,ypark@samaneng.com,2,Y,도시개발부(urban-development) +c8ef625c-071d-4fef-bd32-49d27da5382d,박은정,ejpark1@samaneng.com,2,Y,CM사업부(cm-division) +5ab70e92-5e07-4d88-9753-acfffb3616b3,박인수,ispark@samaneng.com,2,Y,물환경1부(water-environment-1) +64c4b52d-3722-48be-95dd-fe9464998ec9,박인애,iapark@samaneng.com,2,Y,철도2부(railway-2) +71e84327-750a-4984-abd3-ceb3a06e0ceb,박인철,icpark@samaneng.com,2,Y,CM사업부(cm-division) +2b7cbb68-b3a7-481e-ade5-fb42d1c9dbcf,박인태,itpark@samaneng.com,2,Y,철도1부(railway-1) +8854dc95-de30-41db-8f5b-957d3d6754c8,박일,ipark@samaneng.com,2,Y,CM사업부(cm-division) +19d6ca0c-c20a-4c9f-badd-2163726e917a,박일석,ispark1@samaneng.com,2,Y,물환경2부(water-environment-2) +86a08555-8c6a-4c79-9cc6-1c87e7dd0d94,박장호,jhpark7@samaneng.com,2,Y,철도2부(railway-2) +313e9871-990e-4bd5-bb2e-b827116b3702,박재성,jspark9@samaneng.com,2,Y,CM사업부(cm-division) +c7a1b635-f0e1-4a66-96f6-0e91518b3345,박재신,jspark5@samaneng.com,2,Y,CM사업부(cm-division) +6d46029a-6fe8-41bf-9cdf-72ea63697500,박재원,jwpark7@samaneng.com,2,Y,물환경2부(water-environment-2) +182ea609-a950-4f8d-bcdd-58d8d447678e,박재원,jwpark3@samaneng.com,2,Y,수자원2부(water-resources-2) +47095f81-21bd-4bbb-8bd0-eee5499d83b2,박재호,jhpark2@samaneng.com,2,Y,플랜트2부(plant-2) +0a4f9f9d-f19f-48ae-856b-64ce32ea56e8,박정근,jgpark@samaneng.com,2,Y,지반터널부(geotech-tunnel) +1cd40fad-5eaa-4339-905f-6b1aadad159d,박정근,jkpark2@samaneng.com,2,Y,플랜트1부(plant-1) +5429110c-c4f8-47e8-b7cb-13e4c11471d9,박정석,jspark1@samaneng.com,2,Y,CM사업부(cm-division) +d7be51aa-5260-4e82-b948-f458428d1446,박정우,jwpark@samaneng.com,2,Y,플랜트1부(plant-1) +310f67f9-8cd1-4913-a1a1-6e1ff342fb92,박정원,jwpark5@samaneng.com,2,Y,지반터널부(geotech-tunnel) +804f1aa7-0d62-4ca3-8844-3a3c4d3bee17,박정호,jhpark@samaneng.com,2,Y,물환경2부(water-environment-2) +b616ade6-3dc5-4d98-a68e-680a686dd882,박정환,jhpark3@samaneng.com,2,Y,플랜트2부(plant-2) +595b6f43-7a9d-462a-b7d2-ed4c22588c91,박정환,jhpark11@samaneng.com,2,Y,CM사업부(cm-division) +221045aa-b8bb-4389-a5de-389e45b3feff,박제용,jypark2@samaneng.com,2,Y,플랜트1부(plant-1) +dbe0971b-da24-475b-a9fc-d86fbe6c2e91,박종렬,jypark3@samaneng.com,2,Y,플랜트2부(plant-2) +bd2c3a6c-fd49-4a3a-a2d5-101288c95f1e,박종민,jmpark@samaneng.com,2,Y,CM사업부(cm-division) +51ca7cee-8161-4bd9-ae90-18b37182de2c,박종민,jmpark1@samaneng.com,2,Y,철도2부(railway-2) +4ca0b4b8-a1d9-41ef-80f4-61ecbf5bf39c,박종범,jbpark2@samaneng.com,2,Y,수력부(hydropower) +a26bf973-5344-47c6-b882-3a3ad3691cc9,박종인,jipark@samaneng.com,2,Y,항만부(harbor) +4ffc0c11-9bdc-4dc8-a393-87d53a12c617,박종현,jhpark12@samaneng.com,2,Y,철도2부(railway-2) +aa799f75-64a2-4182-afe7-2afaea9e7601,박종호,jhpark5@samaneng.com,2,Y,수자원1부(water-resources-1) +9a1ad9ad-1829-4f42-9b2c-03399be5f563,박종훈,jhpark8@samaneng.com,2,Y,수자원1부(water-resources-1) +15c5bb01-431b-422d-ba54-173fd0e510e1,박주경,jkpark3@samaneng.com,2,Y,수자원1부(water-resources-1) +0a088648-ecd3-4cdf-acb8-5664070b0785,박준서,jspark8@samaneng.com,2,Y,도시계획부(urban-planning) +3d4f6525-39d3-4828-ab20-95a4499745fc,박준석,jspark@samaneng.com,2,Y,CM사업부(cm-division) +569276b3-6d22-43dd-98ad-9a3e9540c2b5,박준성,jspark7@samaneng.com,2,Y,CM사업부(cm-division) +c6d040bb-7074-422d-8bab-6cb0b16e4cae,박준영,jypark6@samaneng.com,2,Y,물환경1부(water-environment-1) +46bbf7a7-e4f2-4d79-8a71-27266e265d3e,박준영,jypark4@samaneng.com,2,Y,수자원2부(water-resources-2) +53d8f2bc-39b5-443e-af82-1b587dc32b91,박준영,jypark1@samaneng.com,2,Y,수자원1부(water-resources-1) +da761ecb-44bf-4a4f-a08d-1528ddb8f00d,박준호,jhpark1@samaneng.com,2,Y,도시계획부(urban-planning) +7fedc829-4342-4cd9-b7d1-f7df3e9d9f4f,박준호,jhpark6@samaneng.com,2,Y,물환경1부(water-environment-1) +d92847fc-4c08-42a1-8dd9-21deeddf186f,박지나,jnpark@samaneng.com,2,Y,플랜트2부(plant-2) +439b60fe-3b55-42cb-9b32-b93f4dba8e42,박지연,jypark@samaneng.com,2,Y,환경평가부(environment-assessment) +c0588d36-d73d-45e7-bcd5-46c448413c8b,박지원,jwpark2@samaneng.com,2,Y,수자원2부(water-resources-2) +8f327f4d-b6f8-4405-b372-0481ab92281e,박지현,jhpark9@samaneng.com,2,Y,물환경1부(water-environment-1) +b188269a-b46a-4fdd-891f-3476d5518696,박지훈,jhpark10@samaneng.com,2,Y,구조부(structures) +25353f89-be0a-4b71-a943-3b1231dfe017,박진,jpark@samaneng.com,2,Y,해외사업부(overseas-business) +f077f71d-693e-4ea2-8d55-a2ad1dfe7b55,박진규,jkpark4@samaneng.com,2,Y,플랜트2부(plant-2) +1d457f8c-69ef-4d6e-b8c3-aa8c242d9733,박진규,jkpark1@samaneng.com,2,Y,해외사업부(overseas-business) +21ea40e0-f6d5-43a1-9ff5-fcfcb6ada994,박찬제,cjpark@samaneng.com,2,Y,도시개발부(urban-development) +5ab64dd0-4d2e-43ff-b809-aa76636580e6,박찬홍,chpark1@samaneng.com,2,Y,수자원2부(water-resources-2) +a37601f5-ef07-4c9f-a5b2-cf5757d0f219,박찬희,chpark@samaneng.com,2,Y,수자원2부(water-resources-2) +a6ede7c0-49c0-470a-9a3e-62f6613b8704,박창열,cypark@samaneng.com,2,Y,수력부(hydropower) +bdefd7db-1498-44d9-8d1a-e91a212290d2,박천원,cwpark@samaneng.com,2,Y,CM사업부(cm-division) +1da87bde-bb12-47da-93b4-e25c78c4accb,박철승,cspark1@samaneng.com,2,Y,CM사업부(cm-division) +fd4f913c-931c-4381-ae5f-7a00b92383e4,박춘식,cspark@samaneng.com,2,Y,CM사업부(cm-division) +e87c53d6-cc63-4156-8f4d-5e2a94d41dc9,박치영,cypark1@samaneng.com,2,Y,환경평가부(environment-assessment) +4e791bfb-407a-44f9-bf69-53cbfeeae67e,박하연,hypark2@samaneng.com,2,Y,플랜트2부(plant-2) +83651c2f-ede0-4163-a44e-5d76c0811bfd,박해균,hkpark4@samaneng.com,2,Y,플랜트2부(plant-2) +3022a127-c499-4680-a890-32f42e79ce37,박해림,hlpark@samaneng.com,2,Y,플랜트2부(plant-2) +6fe0b2cd-2ba2-4541-8c8c-567d060aeac0,박현구,hkpark@samaneng.com,2,Y,도시개발부(urban-development) +b80f87b5-1fe0-441b-8116-298243eedccf,박현규,hkpark2@samaneng.com,2,Y,철도2부(railway-2) +7f0d24ac-ddbc-4316-b44a-e4a0a6a73f7e,박현규,hkpark1@samaneng.com,2,Y,물환경3부(water-environment-3) +1f3ef42b-37ff-4146-aa9b-083070334302,박현근,hgpark@samaneng.com,2,Y,물환경2부(water-environment-2) +5e96ffa3-6103-403a-9086-b9fc6612716d,박현배,hbpark@samaneng.com,2,Y,지반터널부(geotech-tunnel) +5ffb84ae-798e-4de5-81f6-bbb776ed2dac,박현준,hjpark@samaneng.com,2,Y,물환경2부(water-environment-2) +73fe52b2-5904-449f-b870-0d7d838bf5c5,박형열,hypark1@samaneng.com,2,Y,CM사업부(cm-division) +21443028-004b-4e2f-b3f6-d990d54c5e89,박혜란,hrpark2@samaneng.com,2,Y,철도2부(railway-2) +cffae801-a15a-4c95-bf2a-71ad17fe4a1d,박호국,hkpark3@samaneng.com,2,Y,수자원2부(water-resources-2) +13dd954d-58fe-41a1-a5d6-9d436ed86bf7,박호연,hypark@samaneng.com,2,Y,CM사업부(cm-division) +a60cbd14-6967-4a98-ac20-2e052f78b7eb,박희찬,hcpark@samaneng.com,2,Y,CM사업부(cm-division) +bd687705-5319-4565-90b4-9d03e6028df6,반용섭,ysban@samaneng.com,2,Y,항만부(harbor) +96214aaf-27a9-42f9-9032-cd67477f6e97,방노성,nsbang@samaneng.com,2,Y,수자원1부(water-resources-1) +1bc09d0e-a667-427b-89f2-a61fc016b150,방승준,sjbang@samaneng.com,2,Y,도로부(road) +1c400b7e-1e4c-41cf-b905-34bd68d2b67a,방시영,sybang1@samaneng.com,2,Y,플랜트2부(plant-2) +04da1f8b-9bfa-4f97-bfb8-f28df570bce4,방찬종,cjbang@samaneng.com,2,Y,인사총무부(hr-admin) +44732a41-f01f-455c-a91f-6203dfe6f799,배경민,kmbae@samaneng.com,2,Y,플랜트2부(plant-2) +6630bf5a-e981-4559-bddc-53d24607a7d3,배경태,ktbae@samaneng.com,2,Y,사업개발실(business-development) +424dbf12-4472-4f44-aa71-0ed344ac1a50,배기석,ksbae@samaneng.com,2,Y,CM사업부(cm-division) +218ee227-3715-4614-9116-67c2bcdb290e,배길민,gmbae@samaneng.com,2,Y,플랜트2부(plant-2) +121cf97e-480a-48f0-a03b-9afab0f2d475,배도희,dhbae@samaneng.com,2,Y,CM사업부(cm-division) +c961f4af-8c3c-4015-b260-2246d2be92d9,배민경,mkbae@samaneng.com,2,Y,CM사업부(cm-division) +4be8e573-078a-43c0-9fda-1cf3b89a17a4,배민식,msbae@samaneng.com,2,Y,수자원2부(water-resources-2) +3631f243-6b0b-4b0f-bbdc-3eccdd87f9ac,배병관,bgbae@samaneng.com,2,Y,도시계획부(urban-planning) +0871de27-5036-41a4-b33d-bcacdc7e19b1,배병탁,btbae@samaneng.com,2,Y,CM사업부(cm-division) +f8d1b7e7-8eb6-4b3e-a08e-a16ef26367ae,배승환,shbae@samaneng.com,2,Y,조경레저부(landscape-leisure) +f89c96fd-adc3-40d9-b1fd-70834c3c0811,배을호,ehbae@samaneng.com,2,Y,수자원2부(water-resources-2) +50ba8e05-a25e-4bb3-9add-79086c4d80cd,배정빈,jbbae@samaneng.com,2,Y,안전품질관리실(safety-quality) +a2b0b63c-5573-41b9-a61a-c6b3cb0a197c,배정원,sdbae@samaneng.com,2,Y,CM사업부(cm-division) +641dd1e7-66d6-424b-a128-cd5a1741bb19,배준식,jsbae@samaneng.com,2,Y,CM사업부(cm-division) +abc1e09b-91eb-4e14-9779-564b3cff89bc,배지원,jwbae@samaneng.com,2,Y,CM사업부(cm-division) +e5eb4449-952c-4593-8b8f-5a5cf2766ef3,배지윤,jybae@samaneng.com,2,Y,도시개발부(urban-development) +06f857d6-6a77-46f4-bbc2-703d39af8d34,배지혁,jhbae@samaneng.com,2,Y,CM사업부(cm-division) +0ca7bae4-8474-444e-8ce2-4367edc2c9d4,배창국,ckbae@samaneng.com,2,Y,CM사업부(cm-division) +f3d54565-b931-4412-b515-8d4267d4a7d3,배한수,hsbae@samaneng.com,2,Y,조경레저부(landscape-leisure) +d0b543f5-9734-40da-a266-a1310306030d,배형원,hwbae@samaneng.com,2,Y,물환경3부(water-environment-3) +23f1ff83-2b3c-42e6-8f29-9f307811f15a,백순교,sgbaek@samaneng.com,2,Y,플랜트2부(plant-2) +65531e92-f0af-4442-a3c7-ee569d8c68c3,백승범,sbbaek@samaneng.com,2,Y,수자원2부(water-resources-2) +bc32d8b0-a388-41cf-a0f4-fe7c348ca817,백승혁,shbaek1@samaneng.com,2,Y,물환경1부(water-environment-1) +2a45a829-1c44-4c6a-9f0f-d3cc5b1adffb,백승희,shbaek@samaneng.com,2,Y,조경레저부(landscape-leisure) +978dd57d-f7c7-4eea-8b11-3fb3c17cbc2b,백예은,yubaek@samaneng.com,2,Y,도시계획부(urban-planning) +17c6b006-94ff-42fe-8542-97e238c92cf0,백운기,wgbaek@samaneng.com,2,Y,철도2부(railway-2) +5fd15ae4-a6ea-4793-98d3-83840226246a,백운영,uybaek@samaneng.com,2,Y,물환경1부(water-environment-1) +52b622a9-aed8-441b-a932-fe9f76bd7ac6,백주희,jhbaek@samaneng.com,2,Y,CM사업부(cm-division) +399dca19-cdd3-4665-9a3a-b43a212fcb77,백태용,tybaek@samaneng.com,2,Y,CM사업부(cm-division) +e00be3ad-a274-4cde-ae56-2b4900eef70f,백효석,hsbaek@samaneng.com,2,Y,플랜트1부(plant-1) +5d8c3783-267f-4726-b168-c5dba1c2963f,백희경,hkbaek@samaneng.com,2,Y,CM사업부(cm-division) +4ded2e9c-df28-4a01-9c5d-ddfb738a1fd4,백희선,hsbaik@samaneng.com,2,Y,대외협력팀(external-relations) +2ad3ae55-ee84-4923-828d-6174b281307e,변기상,ksbyun@samaneng.com,2,Y,물환경2부(water-environment-2) +22fbefde-482c-4142-8aac-04998d861943,변상우,swbyun@samaneng.com,2,Y,CM사업부(cm-division) +ac7b0abc-1445-4de3-81eb-a655d001c7fb,변상현,shbyeon@samaneng.com,2,Y,수자원2부(water-resources-2) +91a5d64e-8199-4e41-906d-d8e258b2e0ff,변성주,sjbyun@samaneng.com,2,Y,물환경1부(water-environment-1) +a7ce6ef5-7362-4f6a-b79f-5b4741f4b506,변성철,scbyeon@samaneng.com,2,Y,플랜트2부(plant-2) +4bb3b675-2114-4faa-a1c0-677a9e083456,변역근,ykbyun@samaneng.com,2,Y,기획부(planning) +60f8f21f-ec46-440f-8d67-ec0f0b548d2a,변정석,jsbyun@samaneng.com,2,Y,구조부(structures) +3966c318-9f35-47bf-bea5-9d115f7b15ab,변정운,jwbyun@samaneng.com,2,Y,구조부(structures) +6cf1ea97-f5c1-488d-8606-0d8f5278fc5a,복진청,jcbok@samaneng.com,2,Y,철도2부(railway-2) +2cf572b7-39ef-48b0-b76d-60835ff64a4f,복진훈,jhbok@samaneng.com,2,Y,도로부(road) +16450bf7-f416-4dc2-a55c-dfe5146bb0f2,서건,gseo@samaneng.com,2,Y,수자원1부(water-resources-1) +7fdb0a0a-b99b-4a90-8558-0c624976e16c,서경석,ksseo@samaneng.com,2,Y,철도2부(railway-2) +73234bb3-eaec-4eec-a2ab-6f9b16f73a90,서기섭,ksseo1@samaneng.com,2,Y,CM사업부(cm-division) +545187da-0973-4601-881b-7576574839db,서동수,dsseo@samaneng.com,2,Y,수자원2부(water-resources-2) +312fa42f-bb9c-44b3-bd01-119ac31f9ef1,서동일,diseo@samaneng.com,2,Y,수자원2부(water-resources-2) +7b0fb7b5-a64f-4e6b-a659-4be7387e3790,서동진,djseo@samaneng.com,2,Y,플랜트2부(plant-2) +bf6d14e2-b945-4d52-9462-5f18488bf1b8,서미경,mkseo@samaneng.com,2,Y,CM사업부(cm-division) +261c40fe-686a-4983-b7d8-5380ec2f0438,서민수,msseo@samaneng.com,2,Y,물환경2부(water-environment-2) +8f4e78cd-3c79-4c0d-8886-39050e9a81a9,서순임,siseo@samaneng.com,2,Y,CM사업부(cm-division) +c5a3f05c-34ac-4c68-8bb1-a44cdf81ad58,서승필,spseo@samaneng.com,2,Y,철도2부(railway-2) +312c00d1-d6ef-4d45-96f6-4dfb2d92dbde,서영제,yjseo@samaneng.com,2,Y,철도1부(railway-1) +8d6559a1-3a1f-4ffa-986f-efb12ba38a62,서우빈,wbseo@samaneng.com,2,Y,철도2부(railway-2) +9532a5d3-69df-45ac-a313-93a81b2fad21,서유동,ydseo@samaneng.com,2,Y,CM사업부(cm-division) +512d6bd3-1bf9-49c4-a46e-99c6df5f49cd,서윤회,yhseo@samaneng.com,2,Y,플랜트2부(plant-2) +055bd539-5ce7-4180-a4af-46c3840275b7,서은애,easeo@samaneng.com,2,Y,CM사업부(cm-division) +e8768e2f-d95b-491d-85ed-d783c5b9fef7,서재희,jhseo2@samaneng.com,2,Y,플랜트1부(plant-1) +e1e7b5f7-0731-4fd2-b2b7-37c7de5f14f4,서정민,jmseo@samaneng.com,2,Y,CM사업부(cm-division) +6d238f0e-232b-4bea-afde-cf44b9b3f359,서정아,jaseo@samaneng.com,2,Y,물환경2부(water-environment-2) +d49a9659-ac0e-4866-ab34-deb8ff3634ec,서태원,twseo@samaneng.com,2,Y,지반터널부(geotech-tunnel) +62548191-1715-459f-ac4e-38a86d711d6d,서하연,hyseo@samaneng.com,2,Y,물환경2부(water-environment-2) +7311850b-f943-4dea-bf62-d7dd21136778,서현오,hoseo@samaneng.com,2,Y,수자원1부(water-resources-1) +0d68bdc2-5697-4b1a-aa1f-4a8deab0d7cd,석융원,ywsuk@samaneng.com,2,Y,플랜트2부(plant-2) +e8e7fb0c-148d-4a96-84e1-a1b32ca20b57,석재우,jwseok@samaneng.com,2,Y,기획부(planning) +46862b1b-aa7f-4eca-af94-0c1dec79d159,선현진,hjsun@samaneng.com,2,Y,CM사업부(cm-division) +07598f9c-5711-4ca1-99fd-3c15dce0de69,성기건,kksung@samaneng.com,2,Y,CM사업부(cm-division) +b4487c84-7e90-483b-afad-9e1e00d73f23,성기천,gcsung@samaneng.com,2,Y,CM사업부(cm-division) +bd25bb84-6e7a-4ead-9904-6977a466de3d,성몽식,mssung@samaneng.com,2,Y,CM사업부(cm-division) +1b28ad9c-190d-4f96-91fb-da3508efc2d1,성봄,bsung@samaneng.com,2,Y,CM사업부(cm-division) +bf4fdc12-f50f-4e9f-939e-0975dfb13b5f,성세현,shsung@samaneng.com,2,Y,CM사업부(cm-division) +88795dae-39c3-4ac9-b25d-bf5beba5b4ee,성열용,yysung@samaneng.com,2,Y,도시계획부(urban-planning) +d99888f0-5e4d-467f-ac5a-b7368703de37,소다연,dyso@samaneng.com,2,Y,수자원1부(water-resources-1) +5f46c4d9-f149-4c89-8495-f27649e80ed3,소민수,msso@samaneng.com,2,Y,수자원1부(water-resources-1) +f615a848-8586-4ed6-bdbe-c69fc4540086,소순옥,sosoh@samaneng.com,2,Y,교통계획부(transport-planning) +48647595-fa33-42b2-b4a8-b1fc2d3af32f,소윤섭,ysso@samaneng.com,2,Y,CM사업부(cm-division) +9a45f7be-8fad-4400-aa47-4dc6e30d44e0,소의건,ugso@samaneng.com,2,Y,수자원1부(water-resources-1) +f2749d23-4af6-4ffe-acd7-6bac6a3a3c07,손명덕,mdson@samaneng.com,2,Y,플랜트2부(plant-2) +23c09413-eda8-4bef-aee3-fd8effbaba92,손민기,mkson@samaneng.com,2,Y,구조부(structures) +db5ef5b4-55bd-4760-b21c-a83d98317d36,손봉수,bsson@samaneng.com,2,Y,교통계획부(transport-planning) +152f814f-4b72-4bba-b526-f675e97ab53c,손석훈,shshon@samaneng.com,2,Y,안전품질관리실(safety-quality) +0302df3f-67d5-4f50-9a27-47a60a406fe8,손성택,stson@samaneng.com,2,Y,CM사업부(cm-division) +73e34e5c-ed3d-4684-a634-1efebafe18a5,손영준,yjson@samaneng.com,2,Y,플랜트1부(plant-1) +c25baab9-d023-4860-84cc-c62ac3be102c,손은환,ehson@samaneng.com,2,Y,CM사업부(cm-division) +95ca8978-edd9-4b34-ad39-591f74e33918,손일민,imson@samaneng.com,2,Y,플랜트2부(plant-2) +d31db777-8a0b-487f-b783-6dd6fcd59bba,손종욱,jwson@samaneng.com,2,Y,물환경1부(water-environment-1) +b3c59f91-4bb0-4944-8ae5-d2f138c8119b,손주열,jyson@samaneng.com,2,Y,플랜트2부(plant-2) +bcd4b1b5-abb4-4dc0-b4c3-209bc64f7ed5,손주호,jhson1@samaneng.com,2,Y,물환경2부(water-environment-2) +ee14e977-edb8-4da3-896d-788e0dc72fdb,손준우,jwsohn@samaneng.com,2,Y,물환경2부(water-environment-2) +ce78096b-2ea8-4a97-a141-518664f27402,손준혁,jhsohn1@samaneng.com,2,Y,항만부(harbor) +f24e6219-2a9c-40d9-8c6d-28e0adae29db,손진수,jsson@samaneng.com,2,Y,도시개발부(urban-development) +9dcd3c11-d98e-4dbd-b1b4-90bb0f1dd192,손창국,cksohn@samaneng.com,2,Y,플랜트2부(plant-2) +6cfc42ee-9ccb-475b-ab6f-98801e0220a2,손채라,clson@samaneng.com,2,Y,물환경3부(water-environment-3) +2775b03e-b40f-41a3-b9a6-783749aad4a9,손태섭,tsson@samaneng.com,2,Y,철도2부(railway-2) +d5083706-4be3-4a83-94c7-b0deca0a1946,송광수,kssong@samaneng.com,2,Y,물환경1부(water-environment-1) +0cf2e462-b85a-45cf-971f-d8ad49897eb6,송근광,gksong@samaneng.com,2,Y,CM사업부(cm-division) +64c1c454-75bd-4d98-9b9e-217936c9abd7,송다운,dwsong@samaneng.com,2,Y,물환경2부(water-environment-2) +03c6c847-41de-455b-af74-b241f5245723,송명주,mjsong@samaneng.com,2,Y,도시계획부(urban-planning) +ea35bfe2-bdc6-471b-8933-1bc0c64a68bd,송민경,mksong1@samaneng.com,2,Y,환경평가부(environment-assessment) +4af14dfd-7d76-4eaf-9831-e09b7b9010a9,송민철,mcsong@samaneng.com,2,Y,구조부(structures) +bace00cb-aa9a-40a4-b68a-3ad06b243dc4,송백헌,bhsong1@samaneng.com,2,Y,플랜트2부(plant-2) +ab46d1bd-3103-497c-b33b-05dce5da372e,송병화,bhsong@samaneng.com,2,Y,CM사업부(cm-division) +32b61890-07f5-46c4-90b5-4fa44f9028e9,송삼규,sgsong1@samaneng.com,2,Y,CM사업부(cm-division) +50f730fc-e868-47da-b6a3-5fa7e00f9888,송상민,smsong@samaneng.com,2,Y,도시계획부(urban-planning) +b194cbba-2d5e-4b23-99be-7b3973c9f085,송석근,sksong@samaneng.com,2,Y,수자원1부(water-resources-1) +715c9a12-7c84-4da8-8328-bb58b903b907,송승호,shsong@samaneng.com,2,Y,플랜트2부(plant-2) +6b2c4efb-6f98-45d9-bd2e-e9afe22bc94f,송옥주,ojsong@samaneng.com,2,Y,CM사업부(cm-division) +a2055940-5c7f-481c-a695-00c9c1127c1e,송용철,ycsong1@samaneng.com,2,Y,CM사업부(cm-division) +1df745d7-5b91-43fb-97b7-4709424beeea,송용철,ycsong@samaneng.com,2,Y,구조부(structures) +7951a7bf-7c98-4113-b8b1-10c801359e8e,송주하,jhsong1@samaneng.com,2,Y,CM사업부(cm-division) +9c0c4dbb-a8f7-4194-86b1-621a1cd19ad2,송진호,jhsong@samaneng.com,2,Y,지반터널부(geotech-tunnel) +d07ed326-1c0c-47a6-9302-e31e83a1b285,송호준,hjsong@samaneng.com,2,Y,수자원2부(water-resources-2) +c2a0f66f-3085-4a1f-b00b-5ffbe8a48544,신경섭,ksshin1@samaneng.com,2,Y,물환경1부(water-environment-1) +195ddc30-d103-4c80-bac0-bcb89e0b8a4d,신계범,kbshin@samaneng.com,2,Y,안전품질관리실(safety-quality) +c1a81ffe-f1f8-496a-b504-9a05542c9d8e,신광철,kcshin@samaneng.com,2,Y,플랜트1부(plant-1) +79eb4785-21a6-4f49-aa4d-a966b0e8b84f,신광호,khshin@samaneng.com,2,Y,철도1부(railway-1) +5f2c6d89-d01e-4d7e-8248-14cef4713b70,신기호,khshin1@samaneng.com,2,Y,물환경2부(water-environment-2) +a6a87555-e19d-439c-ba1c-30188ce87a02,신대호,dhshin3@samaneng.com,2,Y,플랜트1부(plant-1) +2d4577ff-d696-446d-a42c-e3abc801099c,신도현,dhshin2@samaneng.com,2,Y,CM사업부(cm-division) +5c5fa9a4-ad38-4a49-bd15-f152b128e2dd,신동열,dyshin@samaneng.com,2,Y,철도2부(railway-2) +5f4af814-175a-4bb5-970e-399059a69005,신동옥,dwshin@samaneng.com,2,Y,CM사업부(cm-division) +7bdae4fe-3d40-46eb-8255-17ee0d1f96e6,신동인,dishin@samaneng.com,2,Y,도시개발부(urban-development) +c2c8c5e9-b7b6-40e5-9041-738c82a5f039,신동호,dhshin1@samaneng.com,2,Y,인사총무부(hr-admin) +0c9ea24c-6b32-4a45-8b15-96e280715816,신동환,dhshin@samaneng.com,2,Y,도시개발부(urban-development) +9ccbc4ba-3a28-4aeb-9b50-0c086152a191,신동훈,dhshin4@samaneng.com,2,Y,CM사업부(cm-division) +19a0ed89-6deb-4faf-92dc-c917aa34a41b,신명석,mssin1@samaneng.com,2,Y,플랜트1부(plant-1) +ccd75412-ffa0-4c68-8692-27be5e13b1ac,신명식,msshin@samaneng.com,2,Y,CM사업부(cm-division) +1a57420d-9959-42fb-af35-5e22037ee82c,신명자,mjshin1@samaneng.com,2,Y,CM사업부(cm-division) +7320e3a0-6d40-4b29-8ada-4f3be57ac81c,신명주,mjshin@samaneng.com,2,Y,CM사업부(cm-division) +8430e2c5-ef55-4920-bf1a-4481f50982d8,신미영,myshin@samaneng.com,2,Y,CM사업부(cm-division) +cf611bfc-757b-4d30-9190-1e531e49a9a6,신배헌,bhshin@samaneng.com,2,Y,CM사업부(cm-division) +e8f0c23e-4b79-46a4-9320-7923ca4d4e96,신선영,syshin@samaneng.com,2,Y,CM사업부(cm-division) +cf51e80c-44e9-4170-a3bd-a1c611c63ffc,신순녀,snshin@samaneng.com,2,Y,CM사업부(cm-division) +74c11623-4c65-4dfd-8e73-415496e47d73,신안식,asshin@samaneng.com,2,Y,CM사업부(cm-division) +7f7b50a7-9f64-4568-944a-22fb5c8cda02,신영준,yjshin1@samaneng.com,2,Y,플랜트2부(plant-2) +6e1158be-b17e-4390-bdb1-c63e56f200e8,신영호,yhshin@samaneng.com,2,Y,수력부(hydropower) +cd1dc659-b71b-4d2d-8c04-502849499f53,신예찬,ycshin@samaneng.com,2,Y,수자원1부(water-resources-1) +e5866cf3-ed66-449d-bb83-464e897ee471,신용희,yhshin2@samaneng.com,2,Y,물환경1부(water-environment-1) +3e39278d-330a-4a97-8dca-1ed3e5e24d73,신윤섭,ysshin1@samaneng.com,2,Y,물환경2부(water-environment-2) +9093a436-5a5e-4a09-8f53-a1b4d213609d,신윤수,ysshin@samaneng.com,2,Y,CM사업부(cm-division) +758aa92b-68f8-4d47-ad9f-2842a3d3643e,신은화,ehshin@samaneng.com,2,Y,CM사업부(cm-division) +82afaae7-4712-4177-9eb4-9ef2750163a5,신인재,ijshin@samaneng.com,2,Y,도시계획부(urban-planning) +eec70184-0930-478b-b60b-9c18d87ae4ec,신재원,jwshin@samaneng.com,2,Y,플랜트2부(plant-2) +95000306-22ef-4255-9045-b00be41da5cd,신정민,jmshin@samaneng.com,2,Y,수자원1부(water-resources-1) +75d2d097-9094-4b0d-bcae-0ff7fe3536b9,신정식,jsshin1@samaneng.com,2,Y,CM사업부(cm-division) +203933a5-4197-4a44-ba1d-6fc40631bb44,신제원,jwsin@samaneng.com,2,Y,CM사업부(cm-division) +b4ee7583-0f1e-45b5-b2cc-176edad1530a,신종욱,jwshin1@samaneng.com,2,Y,CM사업부(cm-division) +a4fbcdab-e63b-4860-8353-3033b7159c05,신주원,jwshin2@samaneng.com,2,Y,물환경2부(water-environment-2) +f5133684-9d60-4b6e-810e-41065032ea5f,신준철,jcshin@samaneng.com,2,Y,수자원1부(water-resources-1) +16411b2e-24f0-4dcd-9d1d-ce0ee71a43d8,신준호,jhshin1@samaneng.com,2,Y,물환경2부(water-environment-2) +93b671c9-aad3-4762-8937-62304d0f412e,신진건,jgshin@samaneng.com,2,Y,CM사업부(cm-division) +fe46eb25-4edb-4d25-ac79-f7c565a48eac,신진승,jsshin@samaneng.com,2,Y,플랜트2부(plant-2) +36b5a052-6760-4cc7-841f-960d97f5481e,신진호,jhshin3@samaneng.com,2,Y,플랜트1부(plant-1) +3a5baabf-a5b9-42df-9104-5f84e7d036db,신창건,ckshin@samaneng.com,2,Y,수자원1부(water-resources-1) +b01084fb-3c83-4d88-b1e3-b6bd5ab41de8,신창수,cschin@samaneng.com,2,Y,CM사업부(cm-division) +599ad8bd-c213-4813-9adb-201c96fcfcfc,신현승,hsshin@samaneng.com,2,Y,안전품질관리실(safety-quality) +2bef73bb-7356-4ae3-9324-b3daa61441e8,신현웅,hwshin@samaneng.com,2,Y,교통계획부(transport-planning) +1ac900a1-b62e-403c-961f-6e3f6ef4973e,신현진,hjshin@samaneng.com,2,Y,CM사업부(cm-division) +8de1478d-1a8e-43e1-869b-a0db5a4224fe,신효식,hsshin1@samaneng.com,2,Y,항만부(harbor) +7d4358b3-1e68-4b3d-818d-df6274710a91,신후복,hbshin@samaneng.com,2,Y,CM사업부(cm-division) +41e9ac5e-014d-4740-ab76-be67ef4ff426,심계섭,gssim@samaneng.com,2,Y,CM사업부(cm-division) +e699cfb7-81fb-4075-b0a5-72ea36bf60a2,심명선,msshim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +ba030002-c437-4723-a15a-6b1c7236bf9f,심상철,scshim@samaneng.com,2,Y,조경레저부(landscape-leisure) +20d4adec-5ee9-4e73-b682-9c383a2a2a48,심선용,syshim@samaneng.com,2,Y,CM사업부(cm-division) +e710d706-ead2-4572-bde0-6813621e3075,심성만,smsim@samaneng.com,2,Y,CM사업부(cm-division) +d576502f-6fff-4666-86de-822aa900b170,심승철,scshim1@samaneng.com,2,Y,철도2부(railway-2) +1764267e-38be-49c9-94a0-227fd46bbb61,심재윤,jysim@samaneng.com,2,Y,플랜트2부(plant-2) +4dcce185-bfa2-4b70-aff6-11e736123ef5,심정택,jtshim@samaneng.com,2,Y,플랜트2부(plant-2) +91591624-1a3e-4b1a-ae23-f222c2687cbe,심현우,hwshim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +d1268707-e1c7-45ea-9961-e0c55ca08781,심형섭,hsshim1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +aaebee8b-f3cd-40e6-bf1b-f0210994a72f,아르디안사 비키,vicki.ardiansah@samaneng.com,2,Y,철도1부(railway-1) +6d0acf08-0871-4af8-a1ad-af8f66d17972,안경환,khann@samaneng.com,2,Y,도시계획부(urban-planning) +cae2c931-a590-45af-b5c4-1ea8cc336cc5,안길진,gjan@samaneng.com,2,Y,CM사업부(cm-division) +e3a7bf70-65b7-4efc-bc52-079e4133d5a9,안대원,dwan@samaneng.com,2,Y,인사총무부(hr-admin) +02fa6371-f0dd-4bc7-bd8d-66abefcf7738,안동열,dyan@samaneng.com,2,Y,CM사업부(cm-division) +2e7c5b2d-ac3d-4e9a-932c-5ce41e145b00,안병학,bhahn@samaneng.com,2,Y,구조부(structures) +7b0967d8-86d9-4798-9895-080a897fd5d5,안병호,bhan@samaneng.com,2,Y,CM사업부(cm-division) +76101f1e-dda9-4d05-88a3-efc9188ba0bd,안병호,bhahn1@samaneng.com,2,Y,철도2부(railway-2) +08bec097-8790-428e-a432-a3b791da7be5,안상수,ssahn@samaneng.com,2,Y,CM사업부(cm-division) +679aa017-ad62-47bb-a7b6-8ded0a196f0e,안상준,sjahn@samaneng.com,2,Y,CM사업부(cm-division) +2935c94f-69e1-460d-b1ba-d6a90061c46f,안석영,syahn@samaneng.com,2,Y,수력부(hydropower) +0ed604ba-e487-47e4-928d-3e7ed99daa55,안선경,skan@samaneng.com,2,Y,물환경3부(water-environment-3) +27b037be-36f5-4180-a078-acdc37339ebb,안성칠,scahn@samaneng.com,2,Y,플랜트2부(plant-2) +11617259-c03b-4dc9-97e4-f86d167ee6ad,안세진,sjan@samaneng.com,2,Y,환경평가부(environment-assessment) +ca6a426c-4e1e-4ab4-85ab-1641b8cbe47f,안수현,shahn@samaneng.com,2,Y,수력부(hydropower) +a3a9631f-6739-409f-a385-04be0c3433e3,안영식,ysahn@samaneng.com,2,Y,철도2부(railway-2) +7d771b6e-a7c5-48f9-b962-9bb93def7cc8,안영준,yjan@samaneng.com,2,Y,CM사업부(cm-division) +f20e9f48-c40b-4512-b4bb-c4385e04296f,안우정,wjahn@samaneng.com,2,Y,물환경2부(water-environment-2) +d68abf47-9b27-4ee3-8a2b-e0737f65e1f9,안유미,yman@samaneng.com,2,Y,물환경1부(water-environment-1) +c4974d91-dd96-42da-8fab-6d74a23c329e,안윤준,yjahn@samaneng.com,2,Y,CM사업부(cm-division) +dc6725fc-ca96-4881-ac54-9b1d1921f9ba,안은미,eman@samaneng.com,2,Y,CM사업부(cm-division) +2979cd37-d2cb-4c6d-ba1e-88e86a7f7794,안은수,esahn@samaneng.com,2,Y,플랜트2부(plant-2) +89d7129f-4808-4e82-ab80-764febd9f1ab,안은정,ejan@samaneng.com,2,Y,CM사업부(cm-division) +5c19205d-bbea-4236-a92d-05aed53159c3,안재영,jyan@samaneng.com,2,Y,기획부(planning) +71d078eb-e571-4ec3-90da-6dcdac279b6e,안재준,jjan@samaneng.com,2,Y,도시계획부(urban-planning) +720177f9-ad48-4696-8f9e-278bb6389c0d,안정민,jmahn@samaneng.com,2,Y,지반터널부(geotech-tunnel) +2a95864d-3109-4706-bc01-f54b1f0a8a25,안정우,jwan@samaneng.com,2,Y,CM사업부(cm-division) +b6153490-c3d1-46f7-8c9e-2798f59a9dcb,안준희,jhahn1@samaneng.com,2,Y,CM사업부(cm-division) +e651f58e-b9ea-46de-8e99-d52c676693d5,안지용,jyahn@samaneng.com,2,Y,PQ팀(pq-team) +efe620d6-b4ec-401d-9476-da3b0d587432,안찬욱,cuahn@samaneng.com,2,Y,철도1부(railway-1) +ec4be096-9d30-4ee2-acc3-bd60f7896050,안태경,tkahn@samaneng.com,2,Y,지반터널부(geotech-tunnel) +eeeae113-0e4f-4522-a01d-097e6fe0dca5,안현빈,hbahn@samaneng.com,2,Y,수자원2부(water-resources-2) +066f8646-935a-4325-ba20-7f0729ef509b,안호성,hsan@samaneng.com,2,Y,물환경2부(water-environment-2) +14291360-3814-4b3d-ab8e-e476a31d19fd,안호진,hjan@samaneng.com,2,Y,도로부(road) +e8501a76-c676-498a-9d16-26b3e92e146e,안효래,hrahn@samaneng.com,2,Y,물환경3부(water-environment-3) +47940166-795c-4e6c-815e-10b9a1c4a397,안효석,hsan1@samaneng.com,2,Y,CM사업부(cm-division) +4abf10e7-dcea-420b-9098-27051e949287,안효식,hsahn@samaneng.com,2,Y,수자원1부(water-resources-1) +03218d8c-090f-4551-a64b-01cc4fd80c1c,안희원,hwahn@samaneng.com,2,Y,철도2부(railway-2) +9129ddbd-6c2a-4cf2-b8fc-1aed44f916e2,양관섭,ksyang@samaneng.com,2,Y,도시계획부(urban-planning) +f3491b85-fd6b-486a-96cb-5bb009837529,양규순,gsyang@samaneng.com,2,Y,재무회계팀(finance) +804e433a-9374-452c-9f01-e01070e1f607,양동록,dryang@samaneng.com,2,Y,사업개발실(business-development) +f1f0eecf-d2e0-4ba3-86b3-0764c57477b6,양병수,bsyang@samaneng.com,2,Y,교통계획부(transport-planning) +7be51dcb-2ade-4451-b614-6c0f434ec803,양성모,smyang1@samaneng.com,2,Y,물환경2부(water-environment-2) +f8d1b4d2-2b98-482a-b6df-47d7493f82ae,양성우,swyang@samaneng.com,2,Y,플랜트2부(plant-2) +ecb9ac0e-472e-49fc-a879-8e668df3aed1,양소희,shyang1@samaneng.com,2,Y,CM사업부(cm-division) +cd7957fb-fec0-48a6-a005-305834132534,양승수,ssyang@samaneng.com,2,Y,조경레저부(landscape-leisure) +4175adba-fc41-480f-bf00-0493bb3809f2,양승일,siyang@samaneng.com,2,Y,철도1부(railway-1) +fb0d7460-6e16-46fe-bad5-5f4e15c77785,양승현,shyang@samaneng.com,2,Y,도시계획부(urban-planning) +02390127-a041-4cb7-a4f5-61e0156b352f,양영섭,ysyang1@samaneng.com,2,Y,CM사업부(cm-division) +16060fce-dee8-4a3d-b19e-8030f937e59b,양유홍,yhyang@samaneng.com,2,Y,지반터널부(geotech-tunnel) +9702ac2c-c2b8-415a-9ec8-e5183ed3a2b4,양일영,iyyang@samaneng.com,2,Y,CM사업부(cm-division) +9e048ebb-2176-4822-b222-9de4a25a97d0,양정모,jmyang@samaneng.com,2,Y,플랜트1부(plant-1) +37aeb78b-baf4-4839-b20f-bb9516ffdc6c,양지현,jhyang1@samaneng.com,2,Y,도시계획부(urban-planning) +c4644329-8f99-401c-ae0d-6f6b7372f1d5,양진웅,jwyang@samaneng.com,2,Y,도시개발부(urban-development) +d9dbdc73-198a-4ae0-9a4e-fe7aeae86f2b,양현,hyang@samaneng.com,2,Y,CM사업부(cm-division) +0a71b260-cd77-481c-9a3f-2bc760ae96c5,양현승,hsyang1@samaneng.com,2,Y,항만부(harbor) +68aebdcb-8870-4491-aa81-d55f0db564ca,양현준,hjyang@samaneng.com,2,Y,도시계획부(urban-planning) +edf33802-b7a8-4dad-997b-aa9c0a75a4a9,양현진,hjyang1@samaneng.com,2,Y,환경평가부(environment-assessment) +6ce4b221-a57f-487d-9db1-4304bf5a9a56,양현휘,hhyang@samaneng.com,2,Y,도시개발부(urban-development) +d2b92f20-2f3c-4751-8862-a2b3384e7ac1,양호석,hsyang@samaneng.com,2,Y,철도2부(railway-2) +1a3f0c6e-f8eb-4abb-a639-17f33af664db,양희석,hsyang2@samaneng.com,2,Y,철도2부(railway-2) +49ed8f78-b0f5-47db-9e67-b6b165ff5dfd,엄성현,sheom@samaneng.com,2,Y,수자원2부(water-resources-2) +72184eb7-fe7e-4459-9668-d4973c61f3f2,엄진용,jyum@samaneng.com,2,Y,CM사업부(cm-division) +7700e28a-954a-4b79-94aa-8e793897d8f1,엄희지,hjeom@samaneng.com,2,Y,플랜트2부(plant-2) +6294a7ba-285d-43f1-b53e-97cc64bed16b,여영탁,ytyeo@samaneng.com,2,Y,CM사업부(cm-division) +fc3f3417-c278-447d-8f76-787e38b200c1,여환익,hiyeo@samaneng.com,2,Y,CM사업부(cm-division) +8df9a6a6-ae20-4a46-a5ba-5962a67de6bd,연영흠,yhyon@samaneng.com,2,Y,플랜트2부(plant-2) +c84d1acc-c360-4ccd-9e4d-2da23efb28ad,염광섭,ksyeom@samaneng.com,2,Y,물환경2부(water-environment-2) +ac17803c-4177-4514-b63b-c78436fa3bd1,염승운,swyeom@samaneng.com,2,Y,물환경2부(water-environment-2) +b990a2b3-2c00-47e2-80f1-0f1f6a14f846,염창열,cyyeom@samaneng.com,2,Y,CM사업부(cm-division) +2f81d324-a273-4130-b519-8849de79f2c8,예상민,smye@samaneng.com,2,Y,도시계획부(urban-planning) +2a2a5e3e-f380-4a15-b567-0028f61dc0cf,오남수,nsoh@samaneng.com,2,Y,철도1부(railway-1) +03dcff13-1cfc-4a12-9962-faf0c2367e08,오동규,dkoh1@samaneng.com,2,Y,CM사업부(cm-division) +b0b7811b-13a0-4fa9-b7f5-6936d6aa4f3b,오동기,dkoh@samaneng.com,2,Y,플랜트1부(plant-1) +8f647b0b-46d7-409e-8d5e-af397916832c,오동수,dsoh@samaneng.com,2,Y,물환경2부(water-environment-2) +1169d6c3-8d03-4e9d-8391-8c94e6d0ba80,오동운,dwoh@samaneng.com,2,Y,물환경2부(water-environment-2) +e16713c8-9aa8-4e73-93b6-75bbb0429fc1,오명환,mhoh@samaneng.com,2,Y,지반터널부(geotech-tunnel) +4e97566f-c39e-4cd8-a44b-e855caff548d,오미란,mroh@samaneng.com,2,Y,플랜트2부(plant-2) +a07f05ae-0778-4aa9-ac7a-5d18c5dab010,오민섭,msoh@samaneng.com,2,Y,도시계획부(urban-planning) +1ee35048-3a05-4f51-8cbf-4b5eeb509ab5,오봉섭,bsoh@samaneng.com,2,Y,CM사업부(cm-division) +ebbb260c-db7c-4e3b-9486-f43a18a9f585,오상현,shoh1@samaneng.com,2,Y,사업개발실(business-development) +bc9924b6-3bb1-4286-8e46-f35ab69301fb,오성주,sjoh@samaneng.com,2,Y,플랜트2부(plant-2) +4a57dd84-db94-4dd2-8ce2-db9348ef34eb,오성준,sjoh1@samaneng.com,2,Y,플랜트2부(plant-2) +f19fadb7-45c9-4d6b-b7b9-52769ebba14a,오성하,shoh@samaneng.com,2,Y,철도2부(railway-2) +4f742385-2cd2-4477-b832-3af5f768e3b2,오세민,smoh2@samaneng.com,2,Y,도시계획부(urban-planning) +803b9c7f-fb41-4721-825f-7894dea49f93,오세영,syoh1@samaneng.com,2,Y,철도2부(railway-2) +5ce56e61-489c-4167-9d56-fd5c36d8c57b,오수미,smoh1@samaneng.com,2,Y,CM사업부(cm-division) +1839b0cd-7420-4cb5-a045-99eac291c129,오승문,smoh@samaneng.com,2,Y,기획부(planning) +aaf283e8-2418-4828-878c-a1111d307907,오승우,swoh@samaneng.com,2,Y,CM사업부(cm-division) +73b9f69a-55e8-4d2e-9401-10d87f16f47e,오승택,stoh@samaneng.com,2,Y,물환경1부(water-environment-1) +3c4bc3a5-2e62-4f60-a964-f0e36008fccc,오영진,yjoh@samaneng.com,2,Y,CM사업부(cm-division) +b530fe9a-1892-4d32-9b5e-05d1654dcdbf,오원진,wjoh@samaneng.com,2,Y,수자원2부(water-resources-2) +0a04d6e0-2681-4ff1-94cc-42e97402b315,오윤실,ysoh@samaneng.com,2,Y,CM사업부(cm-division) +b5bc50c3-1cbb-4aa0-bd20-55ee835dfb47,오은선,esoh@samaneng.com,2,Y,도로부(road) +b54cd6c6-070f-4c20-b4cf-c0a52fe72e0a,오익균,ikoh@samaneng.com,2,Y,수자원1부(water-resources-1) +dc705d17-515e-49b2-881a-78b4c3c82b36,오인관,igoh@samaneng.com,2,Y,CM사업부(cm-division) +c5d4114b-f0ba-4d81-8a00-9e50d62e2a20,오재민,jmoh@samaneng.com,2,Y,플랜트1부(plant-1) +f39688d2-5fb6-424f-af62-8bcebd6a0c34,오정식,jsoh@samaneng.com,2,Y,CM사업부(cm-division) +5437b15c-8df6-42f7-903b-52a96f381e56,오정회,jhoh1@samaneng.com,2,Y,CM사업부(cm-division) +fe694458-bdfa-4fe3-8c43-2b017f7241b4,오제훈,jhoh@samaneng.com,2,Y,교통계획부(transport-planning) +e0f13f57-bd9d-4c05-8c23-415b35dfd0dd,오종우,jwoh@samaneng.com,2,Y,CM사업부(cm-division) +b0bc0d1a-5c48-4997-95bc-aef5c3fc49e9,오종현,jhoh2@samaneng.com,2,Y,플랜트2부(plant-2) +dc4d780d-5f21-4897-adf5-7f18e126a1f4,오치영,cyoh@samaneng.com,2,Y,CM사업부(cm-division) +2ae73304-7bfa-45e8-ab73-21cfd6e1d0a3,오하나,hnoh@samaneng.com,2,Y,플랜트2부(plant-2) +08e28d47-d0f9-4b18-b6d2-538757e10bf2,오한빈,hboh@samaneng.com,2,Y,수자원2부(water-resources-2) +3382e390-faff-4f15-bd67-0d6c1a97f31b,오현영,hyoh@samaneng.com,2,Y,물환경1부(water-environment-1) +fabfbad9-9a6d-4551-a732-4bbf0ce58f01,오흥배,hboh1@samaneng.com,2,Y,CM사업부(cm-division) +36d0a4c0-ba12-404f-bfbf-5c26f49a1aa7,왕진영,jywang@samaneng.com,2,Y,수력부(hydropower) +e231eaa7-9988-4984-acc1-f3e3a1181c73,용태순,tsyong@samaneng.com,2,Y,플랜트2부(plant-2) +a8be52e3-fa9d-4a5c-8002-2190bde5e0da,우대성,dswoo@samaneng.com,2,Y,수력부(hydropower) +6cd64678-503d-4947-8c15-3e0e68a18bee,우상벽,sbwoo@samaneng.com,2,Y,구조부(structures) +9b8d740a-9385-4d21-89f7-2ca3000ef67c,우성원,swwoo@samaneng.com,2,Y,철도2부(railway-2) +c425728d-24e4-4dcc-9eda-fdfbf09ce4e7,우양근,ykwoo@samaneng.com,2,Y,CM사업부(cm-division) +083bd7a8-9095-4f92-a1ef-4262057a3cf2,우영현,yhwoo@samaneng.com,2,Y,물환경3부(water-environment-3) +dd2fb54b-41d3-4909-a8e9-d7210ff50f98,우종국,jkwoo@samaneng.com,2,Y,도시계획부(urban-planning) +9778108e-acf8-441c-9a3b-656f87405ccd,우희준,hjwoo@samaneng.com,2,Y,물환경2부(water-environment-2) +b6a995d9-d96e-440e-9fcc-77c33cdae05e,원경식,kswon@samaneng.com,2,Y,CM사업부(cm-division) +d5c28267-a190-49bc-b1c6-bddc9b8aadc9,원보희,bhwon@samaneng.com,2,Y,PQ팀(pq-team) +e80b55b3-bdb2-41ff-82f8-f23abe535cf7,원영철,ycwon@samaneng.com,2,Y,철도2부(railway-2) +2afe3698-aa2c-4fb5-a770-e7b900a714ca,원영학,yhwon@samaneng.com,2,Y,플랜트2부(plant-2) +a17dfc0b-93d6-400f-ab75-2652e580e064,원종환,jhwon@samaneng.com,2,Y,플랜트2부(plant-2) +996eb9d3-bd62-487f-bf65-2f95aaa0f3b7,원충연,cywon@samaneng.com,2,Y,철도2부(railway-2) +68160e6f-ae39-4ae3-a1d7-0605a7b64856,위성식,sswie@samaneng.com,2,Y,철도2부(railway-2) +bbff5bd8-38bf-46b2-8880-47fb1000eccb,유경한,ghyou@samaneng.com,2,Y,철도1부(railway-1) +9729325b-ec22-4756-9598-15a5b806887c,유고호,ghyu@samaneng.com,2,Y,물환경2부(water-environment-2) +ef60b4cb-a3ed-4859-89b3-503d8b974d17,유규상,ksyou@samaneng.com,2,Y,수자원2부(water-resources-2) +c845e809-4e91-41f4-8ae3-b9a5a6094e43,유근우,gwyoo@samaneng.com,2,Y,철도2부(railway-2) +12b75228-24a7-42fd-91f7-53070a8d631d,유기종,gjyu@samaneng.com,2,Y,플랜트2부(plant-2) +17fa7d1f-028b-4b0e-b881-3147a65ade18,유도희,dhyoo@samaneng.com,2,Y,CM사업부(cm-division) +461208f3-4e35-41a1-9527-49fc9f71cc9b,유동현,dhyu@samaneng.com,2,Y,항만부(harbor) +1032bff8-54c7-4506-8874-fea50ff56a66,유동형,dhyu1@samaneng.com,2,Y,플랜트2부(plant-2) +3bdf69b0-e802-493a-ab57-45aa55e51ffe,유미,myu@samaneng.com,2,Y,철도2부(railway-2) +e7448b9d-ae3b-4625-97f6-a3bcbbdc3c9e,유병남,bnyoo@samaneng.com,2,Y,수자원1부(water-resources-1) +dd3b2cc1-69dd-48c7-bf9e-0907d67ee27b,유병욱,boyoo@samaneng.com,2,Y,플랜트2부(plant-2) +092065e0-97b8-4e0d-8bb3-d46e99045a95,유병욱,bwyu@samaneng.com,2,Y,물환경2부(water-environment-2) +aeba5f70-2c8a-47fc-a413-3eb4c1612c6c,유봉희,bhyou@samaneng.com,2,Y,CM사업부(cm-division) +870aa763-de8c-437b-a8d2-b1a9b2d131a7,유상길,sgyoo@samaneng.com,2,Y,플랜트1부(plant-1) +4d6bc3e1-fd6c-4525-8d3d-7a4c08bbc038,유상연,syyoo1@samaneng.com,2,Y,수자원1부(water-resources-1) +f62f63dc-2065-4697-87a0-31573c8e5e9f,유선규,skyu@samaneng.com,2,Y,환경평가부(environment-assessment) +b2e4ea61-76d3-43fe-bad2-ce764177d7ed,유선혁,shyou@samaneng.com,2,Y,물환경2부(water-environment-2) +e20b35e3-b73f-4044-b8cc-98513618b306,유성수,ssyoo@samaneng.com,2,Y,CM사업부(cm-division) +17c86754-e8e3-4812-8eea-f533d084a20a,유성재,sjyoo@samaneng.com,2,Y,물환경2부(water-environment-2) +c5dd56d8-cb92-402c-8ff0-374920f16eb9,유세연,hsyou2@samaneng.com,2,Y,수력부(hydropower) +e137e33e-1abf-4d00-853d-68f2e6adc365,유승용,syyoo@samaneng.com,2,Y,도시개발부(urban-development) +90eaccac-05c0-4ed2-ab88-84acc70fce64,유영진,yjyoo@samaneng.com,2,Y,수자원1부(water-resources-1) +9273b3f9-56e3-4813-ad87-16253daabc1c,유영찬,ycyu@samaneng.com,2,Y,플랜트2부(plant-2) +b44074a0-464b-4e7f-8299-877d908c776c,유영춘,ycyou@samaneng.com,2,Y,수자원1부(water-resources-1) +a6f93078-12f4-4e54-b896-482d27bec7f7,유원효,whyoo1@samaneng.com,2,Y,CM사업부(cm-division) +ca243276-0987-48d5-8522-f71e28b45b5a,유원희,whyou@samaneng.com,2,Y,수자원1부(water-resources-1) +ec963e53-16da-4d6c-ab60-6c2735442f0a,유재무,jmryou@samaneng.com,2,Y,플랜트2부(plant-2) +9a87f258-6374-40cb-b7a3-31caea29cef7,유재민,jmyoo@samaneng.com,2,Y,플랜트1부(plant-1) +74c30785-1548-4721-bec1-ec2ae1ee7378,유재봉,jbyou@samaneng.com,2,Y,CM사업부(cm-division) +3f4ef2c2-00a3-4810-ae76-70232279417c,유재산,jsyou@samaneng.com,2,Y,사업개발실(business-development) +56f748ed-e394-4feb-ba94-db8b7b7b231d,유재호,jhyoo@samaneng.com,2,Y,지반터널부(geotech-tunnel) +139a9fc2-3d58-4c6e-82c3-1d6ffdda6599,유주연,jyyu@samaneng.com,2,Y,CM사업부(cm-division) +835cd628-ab8e-4f63-b767-4765be053dde,유준상,jsyoo@samaneng.com,2,Y,플랜트2부(plant-2) +79e115a5-ffb2-4eb2-8730-216a9602c20b,유준희,jhyu@samaneng.com,2,Y,물환경1부(water-environment-1) +e6a73580-8931-4b22-822b-210a13eccb54,유차정,cjyou@samaneng.com,2,Y,교통계획부(transport-planning) +7d9dda6d-c510-4554-9561-bffd5e060e05,유호진,hjyoo2@samaneng.com,2,Y,도시개발부(urban-development) +91bda724-5fb8-4753-a61d-3a337bbd530e,유환주,hjyu@samaneng.com,2,Y,물환경3부(water-environment-3) +1836a228-53eb-4b80-987a-126c40685d73,유훈,hyoo@samaneng.com,2,Y,CM사업부(cm-division) +130a3316-5dd4-4da3-ba01-c43c81b03904,유희종,hjyoo1@samaneng.com,2,Y,플랜트1부(plant-1) +45b67621-3ae6-42b7-bdbe-85b3d576bbce,윤경근,kkyoun@samaneng.com,2,Y,플랜트2부(plant-2) +e3216a61-90f9-45a8-8914-49520cc25871,윤구순,gsyoon@samaneng.com,2,Y,사업개발실(business-development) +ab44494e-9a4f-48b6-8960-4642e8334f3a,윤남선,nsyoon@samaneng.com,2,Y,플랜트2부(plant-2) +07eac669-27b0-4684-ad56-0cbd50cefa0d,윤대희,dhyoon@samaneng.com,2,Y,환경평가부(environment-assessment) +34f0e2c2-fd28-430c-8138-96faaf4f9d1b,윤도현,dhyoon1@samaneng.com,2,Y,도시계획부(urban-planning) +14ee9cfb-3f71-46c0-a0db-09ef51ca87e3,윤만희,mhyoon@samaneng.com,2,Y,플랜트2부(plant-2) +aeecb5a7-24cc-4aa3-a4ff-6c6cdf98ebcb,윤미나,mnyoon@samaneng.com,2,Y,수자원2부(water-resources-2) +f860cfdc-71a7-4698-bd84-3f162b36366c,윤미정,mjyun@samaneng.com,2,Y,지반터널부(geotech-tunnel) +a6c65c62-1131-43fb-9d9e-aa3a922d0329,윤서호,shyun2@samaneng.com,2,Y,CM사업부(cm-division) +5eedf4a2-d7fd-4f48-b17c-aca1af69345d,윤성현,shyoon1@samaneng.com,2,Y,CM사업부(cm-division) +07320805-576d-47ce-8ff1-9b9af56e6868,윤성화,shyoon2@samaneng.com,2,Y,도시계획부(urban-planning) +47588091-330a-482f-9862-f0d526aa9cc8,윤수근,skyoon@samaneng.com,2,Y,CM사업부(cm-division) +8479163d-8578-4fbf-928b-f10b08f99ef6,윤시중,sjyun@samaneng.com,2,Y,CM사업부(cm-division) +d79c12e8-8b59-40a5-be9f-42c82384c171,윤여준,yjyun@samaneng.com,2,Y,수력부(hydropower) +1dac7ddf-d4bb-4422-bcaa-4d67619cd724,윤영덕,ydyoon@samaneng.com,2,Y,플랜트2부(plant-2) +87f2f5db-6bef-4d8e-9f86-47d9372fa0f8,윤영도,ydyun@samaneng.com,2,Y,물환경1부(water-environment-1) +67538929-cf43-449d-8b7b-d51ce6cf1045,윤용선,yysun111@samaneng.com,2,Y,수자원2부(water-resources-2) +4ce8ec45-fb67-4f45-9f5b-8b2ee5ef7121,윤의혁,ehyoon@samaneng.com,2,Y,수자원1부(water-resources-1) +54f6b624-c75b-4cc0-aced-f1330942ab2a,윤재효,jhyoon1@samaneng.com,2,Y,물환경1부(water-environment-1) +6d0795fe-9e54-4c80-b1e9-39630723fa98,윤정섭,jsyoon@samaneng.com,2,Y,철도2부(railway-2) +1eef145c-6c23-4d29-a084-edf06b87ea58,윤정일,jiyun@samaneng.com,2,Y,항만부(harbor) +1b0dbcec-af44-4af5-ab61-5bb341c1e3d4,윤종춘,jcyun@samaneng.com,2,Y,CM사업부(cm-division) +c22facb8-7e2d-48c8-8141-3c49bab15c13,윤주혜,jhyun@samaneng.com,2,Y,도시계획부(urban-planning) +ab63cea1-311b-4a15-a20a-a1806ffeced0,윤지헌,jhyoon@samaneng.com,2,Y,플랜트2부(plant-2) +8d660664-573c-45d7-b3da-7bc8914c374a,윤찬영,cyyun@samaneng.com,2,Y,수자원1부(water-resources-1) +322f6ab7-bcf0-4f68-b1ef-a63392b34fa7,윤창진,cjyoon@samaneng.com,2,Y,철도2부(railway-2) +516dcd47-3417-41d5-b5ea-c63bcb84544e,윤창한,chyoon@samaneng.com,2,Y,플랜트2부(plant-2) +39d871b5-e097-4e77-8f3d-550d6ac8f68b,윤채연,cyyoon@samaneng.com,2,Y,환경평가부(environment-assessment) +90326114-920e-4880-95bd-ca4ec7a04072,윤철,cyun@samaneng.com,2,Y,환경평가부(environment-assessment) +bec7fb22-9985-4da6-b802-a266b066d4ca,윤철원,cwyoon@samaneng.com,2,Y,플랜트2부(plant-2) +870769eb-cde8-4425-8dc6-c7f343a92fc8,윤현식,hsyun1@samaneng.com,2,Y,조경레저부(landscape-leisure) +b0b9d1bc-8253-4520-a47e-a85fa64b64cf,윤현우,hwyoon@samaneng.com,2,Y,환경평가부(environment-assessment) +a016087e-5514-412b-9f37-54ab106b41c5,윤호연,hyyoon@samaneng.com,2,Y,CM사업부(cm-division) +d48becce-cb57-4f0b-a328-30e5fa2558db,윤호진,hjyoon@samaneng.com,2,Y,CM사업부(cm-division) +c8d8b91a-0f13-4bfe-a2c1-f12a71a9ad9c,윤홍산,hsyun@samaneng.com,2,Y,CM사업부(cm-division) +31e49b58-5cad-4900-ae64-e371948dccaf,윤환진,hjyoon1@samaneng.com,2,Y,철도2부(railway-2) +2af99f20-5464-4dce-a498-ef68fc920f22,윤황의,huyoon@samaneng.com,2,Y,항만부(harbor) +39d3dbe3-9fd7-4749-ac4d-e701f82e41bb,윤희민,hmyoon@samaneng.com,2,Y,철도1부(railway-1) +37ae3666-da32-44bd-a3b5-4d496ea0eea0,윤희섭,hsyun2@samaneng.com,2,Y,플랜트2부(plant-2) +2096881d-9c21-4d4e-a5b4-86e4b2edca3c,이가현,ghlee3@samaneng.com,2,Y,CM사업부(cm-division) +b5875b74-f677-41e2-a847-a1bb1f4f9328,이강욱,kwlee@samaneng.com,2,Y,철도2부(railway-2) +6c21c864-704b-443d-a452-52d73fd07110,이강준,gjlee@samaneng.com,2,Y,철도2부(railway-2) +f43c4dad-20be-44b8-9d2f-45062d396dea,이건,glee@samaneng.com,2,Y,도로부(road) +07aceff7-c461-4780-8223-9064357cde66,이건기,kklee1@samaneng.com,2,Y,환경평가부(environment-assessment) +b0f1e43b-b069-408e-8b09-7ba98d139c46,이건일,gilee@samaneng.com,2,Y,사업개발실(business-development) +a70e427e-f0be-471e-80bf-886105a1e5d9,이경록,krlee@samaneng.com,2,Y,플랜트2부(plant-2) +dc00cb18-57e6-4415-82ec-fbdaaa8d1420,이경민,kmlee2@samaneng.com,2,Y,물환경2부(water-environment-2) +ba4bb7a3-a954-4f18-b329-eb24f1fbdc9d,이경임,kilee@samaneng.com,2,Y,CM사업부(cm-division) +31ae63da-a19f-43c0-a07f-5921117551d3,이경훈,khlee2@samaneng.com,2,Y,기획부(planning) +1ac04d6d-4294-463f-bc3b-893ad47c18c2,이관행,khlee4@samaneng.com,2,Y,CM사업부(cm-division) +84751128-2df1-4e6c-8546-d81c7923d1e5,이광래,krlee1@samaneng.com,2,Y,플랜트2부(plant-2) +b39d46cd-3e8c-4779-85e8-3d060c03b481,이광업,kulee@samaneng.com,2,Y,사업개발실(business-development) +2535e6f5-20ac-4def-bd8d-00c38340f55a,이구화,ghlee2@samaneng.com,2,Y,플랜트2부(plant-2) +cd4a02ab-3a11-48dd-a80a-2821c9eb0015,이귀웅,gwlee@samaneng.com,2,Y,교통계획부(transport-planning) +0d8dd493-3342-4c6e-ba48-58ad13c143f4,이규수,kslee@samaneng.com,2,Y,플랜트2부(plant-2) +5cdb5b42-1cec-4087-be32-a91d2c663368,이규호,ghlee@samaneng.com,2,Y,도시개발부(urban-development) +90842be3-e789-460f-8c2b-4304f236852a,이근호,khlee@samaneng.com,2,Y,구조부(structures) +63538c64-4df6-4ed7-b75b-3109338d60c2,이긍희,ghlee4@samaneng.com,2,Y,플랜트2부(plant-2) +45e50685-84ef-4654-b5c3-afb97b4c9e8f,이기민,kmlee@samaneng.com,2,Y,도로부(road) +c57c18da-0846-4473-803d-a6bde8928940,이기영,kylee2@samaneng.com,2,Y,환경평가부(environment-assessment) +3ceba726-eb86-4e8d-878d-8c9f09f788b6,이기윤,gylee@samaneng.com,2,Y,교통계획부(transport-planning) +fa93d9ff-7a55-4e52-8078-aeb63a6eab1b,이기태,ktlee@samaneng.com,2,Y,플랜트2부(plant-2) +df5b42d8-45c4-4cd9-a70b-35aded08f729,이기호,khlee3@samaneng.com,2,Y,철도2부(railway-2) +f69eedfc-9925-432c-9973-0e8625b4fc8d,이길도,kdlee@samaneng.com,2,Y,플랜트1부(plant-1) +46d75a5e-bfc1-413e-b90c-a9c87b3e0d5b,이남천,nclee@samaneng.com,2,Y,물환경1부(water-environment-1) +809db378-136b-4e80-b5bd-7f5abf010e2b,이다솜,dslee2@samaneng.com,2,Y,CM사업부(cm-division) +ee48a172-b869-47b4-915f-0a43767d26f6,이대우,dwlee@samaneng.com,2,Y,CM사업부(cm-division) +5ecf9b36-07a4-4eb3-84f6-227a81185812,이대욱,dulee@samaneng.com,2,Y,플랜트2부(plant-2) +661a9dab-9cea-46e8-8b19-d63fc1bca44c,이대주,djlee@samaneng.com,2,Y,수자원1부(water-resources-1) +dc727939-ec23-404e-a2d3-7c907e8478ad,이도근,dklee1@samaneng.com,2,Y,항만부(harbor) +62142a80-c807-4278-94a1-b5a5ad939910,이동렬,dllee@samaneng.com,2,Y,CM사업부(cm-division) +f0ac6533-2ffc-4edc-bd7d-9bebb3b6bd20,이동석,dslee@samaneng.com,2,Y,사업개발실(business-development) +4c2e5a14-0274-4394-8820-9639a769dea9,이동엽,dylee1@samaneng.com,2,Y,인사총무부(hr-admin) +17c4ff6c-4572-49a9-8ba3-5aef7e229c5e,이동영,dylee@samaneng.com,2,Y,CM사업부(cm-division) +c77cce06-5971-43b8-9c64-d50e09d4f55b,이동우,dwlee3@samaneng.com,2,Y,항만부(harbor) +fe4a8b9c-5c2a-488d-b4f7-7470b14f5d4b,이동욱,dwyi@samaneng.com,2,Y,CM사업부(cm-division) +12d45fee-e5f7-4c07-9385-4fc3d9fb69b6,이동윤,dylee2@samaneng.com,2,Y,지반터널부(geotech-tunnel) +3f9cf4ca-0d52-4e19-a8cd-d5b51881e655,이동준,djlee1@samaneng.com,2,Y,도로부(road) +ea8d07a4-8638-4ef6-b4a8-a1e7a2882f65,이동하,dhlee1@samaneng.com,2,Y,철도2부(railway-2) +d5f0c122-3d9c-446f-82e8-ad00df7b0e65,이동현,dhlee5@samaneng.com,2,Y,도시계획부(urban-planning) +6c796029-f9b7-42b3-b3b2-69dff3fa512d,이동현,dhlee3@samaneng.com,2,Y,물환경2부(water-environment-2) +cb7c6a34-90a8-4d1a-a865-2e430792fb11,이득수,dslee1@samaneng.com,2,Y,CM사업부(cm-division) +3d583443-d050-4d4a-ace9-cff9b3aa8a56,이만석,mslee@samaneng.com,2,Y,CM사업부(cm-division) +4a0830ba-f060-4105-b4d5-fdcf702fbe7e,이만희,mhlee3@samaneng.com,2,Y,항만부(harbor) +082f8887-d575-4dd2-ad88-0d56d1b697eb,이명철,mclee@samaneng.com,2,Y,플랜트2부(plant-2) +944a0f57-f7dd-455a-9d74-b296962600ff,이명회,mhlee4@samaneng.com,2,Y,도시계획부(urban-planning) +c0a5f5fe-0515-45aa-8cf0-d53ab420da01,이문영,mylee1@samaneng.com,2,Y,CM사업부(cm-division) +73f9cb4b-60e0-4d70-a63c-e1ebae15baa1,이문희,mhlee@samaneng.com,2,Y,철도2부(railway-2) +0b5e75aa-7644-4d23-948a-0d643fecd562,이민애,malee@samaneng.com,2,Y,물환경1부(water-environment-1) +e8c786b5-bf9b-4352-9753-e8223331f437,이배성,bslee1@samaneng.com,2,Y,수자원1부(water-resources-1) +ebab36d1-52e4-47ce-b86e-70b2f1c4260e,이범기,bglee1@samaneng.com,2,Y,CM사업부(cm-division) +a9480d48-6ab8-47cf-9c9d-c918943e3d9d,이범주,bjlee2@samaneng.com,2,Y,플랜트1부(plant-1) +a329f62d-6a51-40a6-9d60-3cf913976bea,이범주,bjlee@samaneng.com,2,Y,수자원1부(water-resources-1) +1d4c110d-98d2-4b0a-824c-7a88a35449a2,이병민,bmlee1@samaneng.com,2,Y,플랜트2부(plant-2) +542f6860-a4de-4f43-898e-4ef8d730e02e,이병설,bslee@samaneng.com,2,Y,CM사업부(cm-division) +07134399-611b-49d3-9408-e0ededeee0cb,이병찬,bclee1@samaneng.com,2,Y,항만부(harbor) +d83d8bc7-5d75-4490-aa5e-e362e7384923,이병철,bclee@samaneng.com,2,Y,도시계획부(urban-planning) +45a1c11e-4f91-4452-a90a-f893b8cb2a9a,이보영,bylee2@samaneng.com,2,Y,CM사업부(cm-division) +fa5466dd-1942-454b-9ce0-36f32a9ee0a1,이보영,bylee@samaneng.com,2,Y,CM사업부(cm-division) +4bdef757-99c8-4ec4-9bad-576a6c6137c8,이보용,bylee1@samaneng.com,2,Y,교통계획부(transport-planning) +7e0c7a36-4646-4afa-ad56-c5bf035e56d1,이봉우,bwlee@samaneng.com,2,Y,CM사업부(cm-division) +e7ab23de-01ea-4662-9fd5-faa48db16f19,이상길,sgyi@samaneng.com,2,Y,플랜트1부(plant-1) +6405b9e8-34cf-48d0-a0b4-38e17e85dad5,이상덕,sdlee1@samaneng.com,2,Y,CM사업부(cm-division) +10ae4d66-dda0-4179-93e8-bb8971860eec,이상룡,sylee2@samaneng.com,2,Y,CM사업부(cm-division) +7e3c6df1-d9b4-4cb5-864f-1174d441d20c,이상만,smlee1@samaneng.com,2,Y,플랜트2부(plant-2) +44688aa6-c6ed-41a0-9161-5f5f34bea650,이상범,sblee@samaneng.com,2,Y,CM사업부(cm-division) +d0f6209f-0edd-45e6-9f56-86483d83f61c,이상복,sblee4@samaneng.com,2,Y,철도2부(railway-2) +81efd6b2-2ba9-4af4-954b-8eff6059dc88,이상술,sslee@samaneng.com,2,Y,플랜트2부(plant-2) +051cf594-b911-4883-8934-3444817257e4,이상언,selee3@samaneng.com,2,Y,기획부(planning) +d80411ec-598e-4b81-85ba-ba0ee44e44c6,이상엽,sylee9@samaneng.com,2,Y,플랜트2부(plant-2) +70b40a52-f6da-42cb-b888-934bbda22647,이상엽,sylee@samaneng.com,2,Y,철도2부(railway-2) +14ad4176-2c24-4ac1-8bb1-40f5ffe74e19,이상영,sylee3@samaneng.com,2,Y,사업개발실(business-development) +e8ba7110-aa62-477c-ac47-777f14255232,이상용,sylee7@samaneng.com,2,Y,CM사업부(cm-division) +d82674a3-7a0f-44c2-9546-f10cd3dcb6df,이상윤,sylee5@samaneng.com,2,Y,도시개발부(urban-development) +066e5a4e-f721-4c36-bc8b-baa5a42a7baf,이상준,sjlee2@samaneng.com,2,Y,물환경2부(water-environment-2) +9678a2bc-8854-402a-b67f-a3e5c0b28a83,이상태,stlee@samaneng.com,2,Y,플랜트2부(plant-2) +054ccb42-d195-447b-aa39-0131984e6dee,이상현,shlee4@samaneng.com,2,Y,플랜트1부(plant-1) +c60ac756-7a38-404d-b304-15bd94440650,이상현,shlee9@samaneng.com,2,Y,물환경2부(water-environment-2) +436b5eaa-c47d-4f16-be34-5d9d3e0e5794,이상화,shlee22@samaneng.com,2,Y,수자원1부(water-resources-1) +482bc0f0-b888-4472-801e-41df49810534,이상희,shlee21@samaneng.com,2,Y,CM사업부(cm-division) +7f7a72ac-0129-4e11-a960-272622e6a7a7,이상희,shlee@samaneng.com,2,Y,플랜트1부(plant-1) +da041161-a402-4472-92d6-1b0de217a078,이상희,shlee12@samaneng.com,2,Y,구조부(structures) +f7294a9c-f4ce-4829-8c18-b91b998e7903,이서연,sylee1@samaneng.com,2,Y,인사총무부(hr-admin) +4f6967b0-5aa4-4bf4-99d7-367dda3482e8,이서준,sjlee8@samaneng.com,2,Y,물환경1부(water-environment-1) +ddc65462-fd17-4ddc-bb59-5a357e957fad,이석상,sslee1@samaneng.com,2,Y,CM사업부(cm-division) +71d54880-35f2-4559-90d9-9a1e6a5e0384,이석준,sjlee3@samaneng.com,2,Y,물환경1부(water-environment-1) +383e240a-6393-47d5-9d84-5d1117245634,이석환,shlee5@samaneng.com,2,Y,수력부(hydropower) +ad52971d-d65a-44ec-9a59-c56176206eac,이석훈,shlee10@samaneng.com,2,Y,플랜트2부(plant-2) +54af1119-410f-47fa-92a7-9b5047427f19,이석훈,shlee17@samaneng.com,2,Y,지반터널부(geotech-tunnel) +5e0feb4b-93eb-4928-8d46-ae636d7cba9c,이선구,sklee@samaneng.com,2,Y,물환경2부(water-environment-2) +343c6b99-4c93-4c61-bedb-eaa50fed5e36,이선영,sylee4@samaneng.com,2,Y,물환경1부(water-environment-1) +5d47dc0d-0acd-4284-879f-0ba2dae6b1ad,이선우,sulee@samaneng.com,2,Y,플랜트1부(plant-1) +d4eabebf-70f3-4e6d-96b9-9d221ab6d8fb,이선재,sjlee10@samaneng.com,2,Y,CM사업부(cm-division) +5f251abb-b15c-48b7-bdfe-fda17f555fb0,이선호,shlee7@samaneng.com,2,Y,구조부(structures) +68b3c27b-108b-48d9-8e0d-22535300fb74,이선화,shlee11@samaneng.com,2,Y,플랜트2부(plant-2) +2685020b-d73e-4f2b-8029-0654fc07a08f,이성기,sglee1@samaneng.com,2,Y,플랜트2부(plant-2) +f1e53e11-f392-4289-bf17-192495bf5c56,이성범,sblee3@samaneng.com,2,Y,물환경1부(water-environment-1) +7a89abc4-86e9-4ee2-90f6-9171a77668c8,이성언,selee@samaneng.com,2,Y,플랜트2부(plant-2) +da37ce55-f8b0-42fc-be6d-c5adedd6450d,이성우,swlee2@samaneng.com,2,Y,CM사업부(cm-division) +f01b342c-9d0d-4ef4-bd74-674e0cfc9039,이성원,swlee4@samaneng.com,2,Y,CM사업부(cm-division) +89eb7707-4191-4d7a-8e0b-e2a9e2aebafe,이성재,sjlee@samaneng.com,2,Y,구조부(structures) +22514227-8ea9-47e1-996f-5f0e44b3e44e,이성재,sjlee5@samaneng.com,2,Y,CM사업부(cm-division) +be8f8d3b-c8ae-4f85-ae97-c6ff967f77bc,이성준,sjlee1@samaneng.com,2,Y,물환경2부(water-environment-2) +d4337f01-ef7a-4756-970a-e191572cbace,이성학,shlee14@samaneng.com,2,Y,CM사업부(cm-division) +54f1523b-7f38-4d3f-981b-1e2500bcdacc,이성현,shlee20@samaneng.com,2,Y,플랜트2부(plant-2) +98e9d5cd-34a8-4398-a069-bdbfa1e535b2,이성호,shlee16@samaneng.com,2,Y,CM사업부(cm-division) +361cd5e2-14c4-4d8a-9b1d-b60aeb6a89a3,이성환,shlee23@samaneng.com,2,Y,CM사업부(cm-division) +30ac0e72-93af-4019-99c8-5bc960123c61,이성훈,shlee18@samaneng.com,2,Y,물환경2부(water-environment-2) +952dd1ae-8875-47f9-a844-19f08b0179e3,이세호,shlee13@samaneng.com,2,Y,환경평가부(environment-assessment) +b2b10890-25b0-4fd2-a442-a553eeccc1f7,이수연,sylee6@samaneng.com,2,Y,CM사업부(cm-division) +8b90b132-77fb-4d5e-8197-171895076c82,이수영,sylee10@samaneng.com,2,Y,구조부(structures) +17a85514-d2b0-43ca-be32-1873ab962a3d,이수우,swlee3@samaneng.com,2,Y,구조부(structures) +48ed7e5d-4066-4b34-8d98-4dca2b6b4121,이수정,sjlee4@samaneng.com,2,Y,CM사업부(cm-division) +e64b20a5-3eba-40bc-bedd-6b93c36e638c,이수진,sjlee6@samaneng.com,2,Y,CM사업부(cm-division) +7444c297-449b-4931-a5bd-7c5a4fc914bd,이수창,sclee1@samaneng.com,2,Y,CM사업부(cm-division) +80745e89-9de0-4ee4-b4bc-ed1e3abcc3ff,이숭령,srlee@samaneng.com,2,Y,교통계획부(transport-planning) +d4e13c2c-b602-4525-b28f-a18b23e7a273,이숭희,shlee15@samaneng.com,2,Y,철도2부(railway-2) +8c3e363a-00d2-47ce-8114-9d5f7835f75a,이승근,sglee2@samaneng.com,2,Y,수자원2부(water-resources-2) +70d0f1df-4b7c-43b9-8a36-9f40cd73e2dc,이승기,sglee@samaneng.com,2,Y,CM사업부(cm-division) +44bd737f-539e-48c3-8900-b02254a37d2c,이승렬,srlee1@samaneng.com,2,Y,물환경3부(water-environment-3) +30d208a4-16ed-4777-bc73-4d84efb5df11,이승배,sblee2@samaneng.com,2,Y,해외사업부(overseas-business) +8eea2347-2b7f-47d7-9a94-df644b4e87e1,이승범,sblee1@samaneng.com,2,Y,수자원2부(water-resources-2) +a571102a-1b1d-4456-b672-453cbaf2bce0,이승원,swlee@samaneng.com,2,Y,도로부(road) +a8f45ad8-2d06-4e46-b774-d5ccc6db0f50,이승원,swlee1@samaneng.com,2,Y,물환경2부(water-environment-2) +572780ad-33de-4cae-933d-473719a600ef,이승종,sjlee7@samaneng.com,2,Y,수자원1부(water-resources-1) +6e9efa47-6ee5-46eb-bf51-fdc2963b3658,이승철,sclee2@samaneng.com,2,Y,CM사업부(cm-division) +e6521a02-cc38-4424-bc02-1f3dbbf92c3e,이승하,shlee8@samaneng.com,2,Y,도시계획부(urban-planning) +402db3b4-bc5e-4511-9e43-9cf3fcf64cf1,이승한,shlee19@samaneng.com,2,Y,수력부(hydropower) +30ce11f4-33d7-466f-92a5-6b89a95fabce,이승현,shlee3@samaneng.com,2,Y,플랜트2부(plant-2) +2f45bc81-826f-4dd2-8588-01ede648b88d,이승현,shlee25@samaneng.com,2,Y,CM사업부(cm-division) +575ea690-5d66-4b77-ad38-a834db133c92,이승훈,shlee6@samaneng.com,2,Y,플랜트2부(plant-2) +15d3dafd-c6c3-4ad6-a928-d92ed1f32c1b,이시동,sdlee@samaneng.com,2,Y,CM사업부(cm-division) +b565cfd0-4004-4f1c-9c4c-5b24c92e5182,이시은,selee2@samaneng.com,2,Y,물환경1부(water-environment-1) +636f4afe-d761-4ff0-bcad-105370488def,이시의,selee1@samaneng.com,2,Y,플랜트2부(plant-2) +a8d0fdb4-4ce7-4d47-a415-4ba1eb4cd1ba,이신혁,shlee2@samaneng.com,2,Y,구조부(structures) +5d7c3bba-fb08-47d4-91ac-1beacbdc7567,이연실,yslee3@samaneng.com,2,Y,CM사업부(cm-division) +0158a2f9-50f0-4038-8f16-81ee428fb42b,이영근,yglee@samaneng.com,2,Y,철도1부(railway-1) +b79be621-b759-4173-894b-8edfa87ee29e,이영석,yslee1@samaneng.com,2,Y,철도2부(railway-2) +570c80d8-74d2-4b4e-b708-53658ca24db7,이영석,yslee4@samaneng.com,2,Y,물환경1부(water-environment-1) +83400d65-9549-494d-8429-c8ec561da707,이영식,yslee@samaneng.com,2,Y,도시계획부(urban-planning) +dbc63905-dd9e-402e-ac96-cba6bb9df7dc,이영준,yjlee6@samaneng.com,2,Y,물환경1부(water-environment-1) +e7c206b3-75e3-4dd4-b790-481c1709fc76,이영준,yjlee@samaneng.com,2,Y,CM사업부(cm-division) +d4c8b02b-282d-4f97-8935-df85be9624c3,이영진,yjlee1@samaneng.com,2,Y,재무회계팀(finance) +c7b91b34-1e0e-4d8d-b2d7-36dacfc93061,이영찬,yclee@samaneng.com,2,Y,CM사업부(cm-division) +5c768d86-4491-4527-b134-3e6a837b3404,이영환,yhlee3@samaneng.com,2,Y,CM사업부(cm-division) +70bd4c1e-7614-44e5-a9c9-5b7de798728a,이영훈A,yhlee1@samaneng.com,2,Y,CM사업부(cm-division) +153068d0-71fa-4208-8d4e-3d5164381b2e,이영훈B,yhlee6@samaneng.com,2,Y,CM사업부(cm-division) +a6c3fc9f-ebba-4ec6-9d42-c6ffd0e054a4,이영희,yhlee2@samaneng.com,2,Y,CM사업부(cm-division) +9548473a-1cf0-400e-be4d-ffc428700858,이용목,ymlee@samaneng.com,2,Y,물환경2부(water-environment-2) +ed10c350-fdbb-4e76-9566-c92a3002ae32,이용우,ywlee@samaneng.com,2,Y,플랜트2부(plant-2) +b1f987a9-20f7-4dce-b125-6215e368727a,이용희,yhlee4@samaneng.com,2,Y,CM사업부(cm-division) +5e3fd815-73a9-4f94-871b-8921aa2dc9c5,이웅규,wklee1@samaneng.com,2,Y,CM사업부(cm-division) +e13c7478-2022-454a-8e94-212b08ad4079,이웅기,uglee@samaneng.com,2,Y,물환경1부(water-environment-1) +92eccbc3-b905-4212-a343-1a0bb766e8ec,이원기,wklee@samaneng.com,2,Y,구조부(structures) +ed29d91b-64a6-413b-833f-6a1581e025a0,이원돈,wdlee@samaneng.com,2,Y,사업개발실(business-development) +e8d58f57-839e-41ac-a264-3256bb3cf086,이원배,wblee@samaneng.com,2,Y,CM사업부(cm-division) +14974d72-8c04-4212-b076-b39eaaec929a,이원재,wjlee1@samaneng.com,2,Y,플랜트2부(plant-2) +2b5c6ca8-fc5d-4621-b923-9f153893aa9e,이원재,wjlee@samaneng.com,2,Y,플랜트1부(plant-1) +f1504257-10a7-425c-83f4-ddf3eeaafc25,이유현,yhlee@samaneng.com,2,Y,지반터널부(geotech-tunnel) +81034e38-e1fa-4810-b0c6-966727f9136c,이유현,yhlee5@samaneng.com,2,Y,인사총무부(hr-admin) +b9ab2b8d-a4ee-4b69-8849-7be20fc6b27d,이윤정,yjlee4@samaneng.com,2,Y,환경평가부(environment-assessment) +1be43e8f-321c-4675-aaf4-ae2ead83abe0,이윤택,ytlee@samaneng.com,2,Y,플랜트2부(plant-2) +e0016518-6857-477c-921d-f7b972f70cfb,이은경,eklee@samaneng.com,2,Y,물환경3부(water-environment-3) +89bdab4d-9d1c-4360-966c-63ef1f675be4,이은섭,eslee@samaneng.com,2,Y,플랜트2부(plant-2) +d9bf0e54-21e7-47d6-b166-b7491387963f,이은주,ejlee@samaneng.com,2,Y,플랜트2부(plant-2) +6a2c8310-6d55-452e-bfb9-d58a211cc701,이은택,etlee@samaneng.com,2,Y,플랜트2부(plant-2) +1e98ca99-1706-4e42-8e33-25b7b3ccffb9,이은환,ehlee@samaneng.com,2,Y,CM사업부(cm-division) +a2d5270c-5c2a-4b3c-a2af-bb88d75311d9,이응채,eclee@samaneng.com,2,Y,플랜트2부(plant-2) +45ba1eae-c53f-45c9-bc35-86508fb7b74e,이인록,irlee@samaneng.com,2,Y,수자원1부(water-resources-1) +da287e0c-cf8a-410c-a02e-216d8bbfcd6c,이인수,islee@samaneng.com,2,Y,플랜트2부(plant-2) +7b680398-d6cb-4ad8-ad95-ef416b60d69c,이장언,jelee1@samaneng.com,2,Y,CM사업부(cm-division) +a3fecc22-ff77-4e05-a1ef-7eee69905caa,이장원,jwlee4@samaneng.com,2,Y,CM사업부(cm-division) +67397d48-3f52-4074-932d-abf1dcbc1c37,이재국,jklee5@samaneng.com,2,Y,지반터널부(geotech-tunnel) +04270886-7881-43e9-ba29-ef85aa61194f,이재규,jglee@samaneng.com,2,Y,물환경1부(water-environment-1) +e2717c32-5efe-491f-9bf7-844e92640794,이재근,jklee1@samaneng.com,2,Y,철도1부(railway-1) +0fec0090-bf31-40e6-b38c-94667e6f8f18,이재석,jslee4@samaneng.com,2,Y,지반터널부(geotech-tunnel) +f55df6d7-bea4-4915-87f1-240c7ba4db52,이재열,jylee5@samaneng.com,2,Y,철도2부(railway-2) +4e1ed3d3-b185-444c-8074-391e2bae0c1e,이재오,jolee@samaneng.com,2,Y,업무(operations) +233a2c78-8eec-4391-b149-1db76bddf8fa,이재완,jwlee6@samaneng.com,2,Y,인사총무부(hr-admin) +9780fdc7-1df3-4ff5-aa0a-135d4a59def2,이재진,jjlee3@samaneng.com,2,Y,수력부(hydropower) +68ce155a-f743-40f7-badc-47329d2bc1a6,이재현,jhlee12@samaneng.com,2,Y,수자원2부(water-resources-2) +55387560-45d2-4c57-894f-16de30bdf71d,이재형,jhlee11@samaneng.com,2,Y,물환경2부(water-environment-2) +3ec511bd-cd72-48f5-842b-5793d4bf2f16,이재형,jhlee6@samaneng.com,2,Y,수자원1부(water-resources-1) +eb1cfd4f-dba5-4da0-aff8-e7a761e9cfbb,이재흔,jhlee19@samaneng.com,2,Y,철도2부(railway-2) +4ccb999a-8442-436f-b0e0-8ce50308da67,이재희,jhlee20@samaneng.com,2,Y,CM사업부(cm-division) +6d679f14-6f39-4a9b-9e02-0dfb72424c62,이전진,jjlee1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +f4180785-eb88-42d0-b0b2-63c74077f8ed,이정구,jklee6@samaneng.com,2,Y,물환경1부(water-environment-1) +6dd169e8-2740-4acc-a4db-3b8244af2f77,이정섭,jslee3@samaneng.com,2,Y,CM사업부(cm-division) +3e35a10d-cd6a-425a-afb2-0629a2423e11,이정용,jylee6@samaneng.com,2,Y,물환경1부(water-environment-1) +9e5a8b1e-424f-4fc9-94d4-33d8ee25596d,이정욱,jwlee3@samaneng.com,2,Y,물환경2부(water-environment-2) +2a36cee8-6a3f-47a5-bf5d-41b64c1916fb,이정원,jwlee2@samaneng.com,2,Y,수자원1부(water-resources-1) +2625d94f-2a8d-4610-b52d-b3c8a344c4ab,이정인,jilee@samaneng.com,2,Y,CM사업부(cm-division) +359ce9a2-7230-4dac-aa7a-995c0fa17d1f,이정직,jjlee@samaneng.com,2,Y,물환경1부(water-environment-1) +7f7ca1a2-26c2-4c14-8e01-87c1a2f450cf,이종경,jklee3@samaneng.com,2,Y,도시개발부(urban-development) +8dde684e-a9c6-46b6-8473-0f26ee1d5ee6,이종구,jglee3@samaneng.com,2,Y,CM사업부(cm-division) +89029db2-5036-4c07-9191-4f936dd97ec3,이종구,jklee2@samaneng.com,2,Y,도로부(road) +e071e1ee-c993-4100-b34e-55a0ab4d6d2e,이종균,jglee2@samaneng.com,2,Y,플랜트2부(plant-2) +cc8c1bda-355e-4910-8150-0ee69a3b42a8,이종민,jmlee1@samaneng.com,2,Y,물환경2부(water-environment-2) +d3fd2658-62b8-434c-bb8d-2f3ae557de20,이종진,jjlee2@samaneng.com,2,Y,CM사업부(cm-division) +95e26196-c4ff-436a-b5cd-c4f0393f2f06,이종철,jclee@samaneng.com,2,Y,도로부(road) +3819f9c1-55c5-41fb-adfb-ab0b4f046f0b,이종태,jtlee@samaneng.com,2,Y,물환경2부(water-environment-2) +ec2112ba-184a-4a73-93b9-26f8ddc17213,이종하,jhlee7@samaneng.com,2,Y,CM사업부(cm-division) +7c6957a6-9fe6-45a9-a317-980a0f54a891,이종현,jhlee15@samaneng.com,2,Y,도시개발부(urban-development) +0ca2d683-e0b4-4acc-b765-998259feaaf2,이종호,jhlee5@samaneng.com,2,Y,플랜트1부(plant-1) +891e7c96-bc7f-460e-ade4-265cc59a6eb9,이종훈,jhlee13@samaneng.com,2,Y,플랜트1부(plant-1) +824ddd5a-45aa-4f75-92cc-bc6c7b17f7f0,이주민,jmlee@samaneng.com,2,Y,조경레저부(landscape-leisure) +daee2898-8f9b-46a8-a80a-0143b66ccb35,이주영,jylee7@samaneng.com,2,Y,CM사업부(cm-division) +9d30951f-da08-4390-861c-7702a35648b4,이주호,jhlee1@samaneng.com,2,Y,물환경2부(water-environment-2) +71c5c6a5-7d4b-4026-91fb-86657780c1bd,이주환,jhlee14@samaneng.com,2,Y,물환경2부(water-environment-2) +c190dfe0-60e9-45ab-a693-05d2c30b3c53,이준규,jklee@samaneng.com,2,Y,CM사업부(cm-division) +0488c715-85e6-4e18-9183-ded280e7235f,이준석,jslee@samaneng.com,2,Y,물환경2부(water-environment-2) +1f734b19-194c-4411-8874-2f5111be4af6,이준석,jslee5@samaneng.com,2,Y,CM사업부(cm-division) +30c2fc22-d0cf-40ea-b3bb-d2d9278aca13,이준섭,jslee2@samaneng.com,2,Y,도시계획부(urban-planning) +cd092e1e-67c8-4673-b09e-9587ece32025,이중희,jhlee16@samaneng.com,2,Y,CM사업부(cm-division) +6869652e-5226-4ce0-8401-ee8592a4443d,이진영,jylee@samaneng.com,2,Y,CM사업부(cm-division) +a1955781-753a-4e0d-9188-a3de2f253d77,이진용,jylee1@samaneng.com,2,Y,도시개발부(urban-development) +956ca127-8a5f-4cde-8679-d94470f9f807,이진우,jwlee5@samaneng.com,2,Y,플랜트2부(plant-2) +685414f2-779f-4cc7-886b-5a6fdeff8beb,이진웅,jwlee@samaneng.com,2,Y,지반터널부(geotech-tunnel) +5ccc7abe-e151-4bed-a0ca-32d5c3571f69,이진형,jhlee10@samaneng.com,2,Y,플랜트1부(plant-1) +7bac9ac2-12be-4dd7-aff0-8b4a35576fcd,이창,clee@samaneng.com,2,Y,도로부(road) +be716588-f469-41c8-87d0-0ba09a07a25e,이창걸,cglee1@samaneng.com,2,Y,물환경2부(water-environment-2) +15847784-0b63-46f9-953e-abab0330ee06,이창영,cylee1@samaneng.com,2,Y,도로부(road) +98c3ccee-32e3-4023-aa54-35a01d76a380,이창영,cylee2@samaneng.com,2,Y,플랜트2부(plant-2) +0a55c63e-65ca-4079-b347-9bede739bcd8,이창욱,culee@samaneng.com,2,Y,도시계획부(urban-planning) +1b4a8c01-a480-4b7e-b0ec-44a5d40050a4,이창원,cwlee1@samaneng.com,2,Y,조경레저부(landscape-leisure) +6d0c299c-c213-4b0c-a881-161288208307,이창호,chlee2@samaneng.com,2,Y,도시계획부(urban-planning) +48362c0d-cd4b-4156-a649-908cb8c5007a,이창훈,chlee4@samaneng.com,2,Y,CM사업부(cm-division) +f6eee772-ca01-4090-94fb-10523798f52f,이천기,cglee@samaneng.com,2,Y,도로부(road) +7702cb1b-ad79-4449-b425-f680424b3e64,이철웅,cwlee@samaneng.com,2,Y,CM사업부(cm-division) +83fd6399-09f4-4601-a4dc-44eeaf5b40d2,이철재,cjlee@samaneng.com,2,Y,플랜트2부(plant-2) +047f0378-224d-4b07-a266-e82582fce42e,이철중,cjlee2@samaneng.com,2,Y,철도2부(railway-2) +c6bf8e5c-a3c6-4140-aea1-1906bd1db3ae,이철호,chlee3@samaneng.com,2,Y,플랜트2부(plant-2) +6552f548-d724-4968-a359-434578fa4164,이철호,chlee10@samaneng.com,2,Y,수력부(hydropower) +b1a0f004-b091-4dce-b4a3-c2910c81f00e,이충열,cylee@samaneng.com,2,Y,플랜트2부(plant-2) +c45e7f65-e023-48b6-bc02-fa98e38d54fa,이충호,chlee5@samaneng.com,2,Y,CM사업부(cm-division) +77df1488-53bd-405b-bc15-1ea629bfd05c,이충호,chlee1@samaneng.com,2,Y,플랜트2부(plant-2) +a79ad27c-f06a-4fc7-a1de-7d86511481ea,이태효,thlee4@samaneng.com,2,Y,플랜트2부(plant-2) +0ebc7694-2d79-491b-8f75-eb8f8328479c,이태훈,thlee1@samaneng.com,2,Y,항만부(harbor) +51ba0dbe-13e9-40ef-9deb-c309c6ebf5f2,이태훈,thlee@samaneng.com,2,Y,철도1부(railway-1) +1e55aae4-9195-422c-a431-bfed9906d3fc,이태희,thlee5@samaneng.com,2,Y,플랜트2부(plant-2) +876b4804-a09a-4d71-9328-ccac218ef4b7,이태희,thlee2@samaneng.com,2,Y,대외협력팀(external-relations) +b9da7648-ecd6-45e4-992b-885457e55c7d,이하연,hylee3@samaneng.com,2,Y,CM사업부(cm-division) +efded780-1f12-4b77-bef1-b1a77c89b2e0,이학노,hnlee1@samaneng.com,2,Y,철도2부(railway-2) +e637293c-6a66-4f65-a808-bcd2f3c2a86d,이학렬,hrlee@samaneng.com,2,Y,도시계획부(urban-planning) +576bc3aa-51cf-404f-b978-0cdf13e2c9e8,이해광,hglee@samaneng.com,2,Y,수자원2부(water-resources-2) +4b2a8c74-5101-4658-8d76-c6021108ec51,이혁,hlee@samaneng.com,2,Y,플랜트2부(plant-2) +ade14eee-3d1d-4abf-86e8-e323e12ccab1,이혁우,hwlee1@samaneng.com,2,Y,철도2부(railway-2) +6a9853ad-98dd-49bc-99c0-a08f56b1bfb9,이현규,hklee1@samaneng.com,2,Y,CM사업부(cm-division) +91eb9d0e-edcb-4a7a-accf-628ffc058df0,이현동,hdlee@samaneng.com,2,Y,CM사업부(cm-division) +1484b8b5-6b63-4c3f-bbe6-93a34dc06d2e,이현무,hmlee@samaneng.com,2,Y,도시계획부(urban-planning) +b78ae9aa-12c9-4aff-9d4a-ac9182ca5c94,이현욱,hylee2@samaneng.com,2,Y,물환경3부(water-environment-3) +cbb83ff3-decc-4fc2-b6dd-e0cc94460f35,이현주,hjlee4@samaneng.com,2,Y,CM사업부(cm-division) +b1275420-c5fb-45ad-85d3-9cb50b5c2528,이현중,hjlee@samaneng.com,2,Y,수력부(hydropower) +530960e7-56b5-456b-9d44-b6aee3d5775e,이현희,hhlee1@samaneng.com,2,Y,물환경1부(water-environment-1) +87f41806-be21-4630-99c2-4d0e12633194,이형석,hslee3@samaneng.com,2,Y,CM사업부(cm-division) +98e72223-ac28-44f7-886f-bf4869569c90,이혜선,hslee2@samaneng.com,2,Y,환경평가부(environment-assessment) +f462cd0c-5747-4a1d-bf62-e2ee6ba80ba9,이호준,hjlee2@samaneng.com,2,Y,물환경1부(water-environment-1) +cfcfd215-a75f-4be4-9f00-d500910b6bd1,이홍의,helee@samaneng.com,2,Y,CM사업부(cm-division) +7ceb34f2-1036-4805-80cc-09a4226d0074,이화창,hclee@samaneng.com,2,Y,플랜트2부(plant-2) +c517511e-bf4f-4999-9aa2-70966da05536,이효석,hslee@samaneng.com,2,Y,플랜트2부(plant-2) +5cd479a3-3d6d-41d0-8ecb-3826bdd81df7,이흔석,hslee4@samaneng.com,2,Y,물환경3부(water-environment-3) +1af44f0c-ebec-4a1f-9a45-70a0619b1d0a,이흥래,hryi@samaneng.com,2,Y,플랜트2부(plant-2) +b26ebf7b-027e-4697-bf8e-af2703b1d692,이희남,hnlee@samaneng.com,2,Y,CM사업부(cm-division) +1c4245eb-bf76-4576-bf44-cbe250297e2a,이희명,hmlee2@samaneng.com,2,Y,플랜트2부(plant-2) +3e912453-93b9-46a1-9def-6a3e85327cf1,이희영,hylee@samaneng.com,2,Y,철도1부(railway-1) +163d8da6-047c-4702-9129-f12ef9652f75,이희용,hylee1@samaneng.com,2,Y,플랜트2부(plant-2) +74383128-7e07-4e75-870c-0f9699507885,이희원,hwlee3@samaneng.com,2,Y,플랜트2부(plant-2) +cc0f086d-3247-4088-b2e1-625ee4943323,이희일,hilee1@samaneng.com,2,Y,수자원2부(water-resources-2) +aef62733-67f9-4a8c-b3f8-1f60e2229228,이희정,hjlee3@samaneng.com,2,Y,물환경2부(water-environment-2) +fc4774f3-5969-46a1-88a0-6a0501cad411,이희철,hclee1@samaneng.com,2,Y,수자원1부(water-resources-1) +a66f3347-ca11-42d5-954e-2bc4831faff5,인광진,kjin@samaneng.com,2,Y,물환경1부(water-environment-1) +24980139-b65f-4ad8-8dd6-7582d4b4d52b,인디라,indira@samaneng.com,2,Y,물환경2부(water-environment-2) +488782cb-8fb3-41f5-b9d9-ac252f7897d9,인치윤,cyin@samaneng.com,2,Y,물환경1부(water-environment-1) +9f140a6d-02c3-4bb0-ab5b-971f78f67399,임경진,kjlim@samaneng.com,2,Y,물환경2부(water-environment-2) +75436715-dbb9-4f3a-ba7e-ccb6a3fe25ca,임계종,gjim@samaneng.com,2,Y,플랜트2부(plant-2) +632a16f0-11a9-425f-849a-270c62221b2f,임광수,kslim1@samaneng.com,2,Y,플랜트1부(plant-1) +79af7046-fc0a-461e-a172-dfad451c113a,임근석,kslim2@samaneng.com,2,Y,물환경2부(water-environment-2) +2fa7f2ab-9932-4081-b1c3-3859e6c66c8e,임근선,kslim@samaneng.com,2,Y,CM사업부(cm-division) +05f6bf91-6310-4b96-a551-422c8a7bac65,임기봉,gblim@samaneng.com,2,Y,플랜트2부(plant-2) +f92279b8-0df7-4df0-8673-81206e3473fc,임동민,dmlim@samaneng.com,2,Y,조경레저부(landscape-leisure) +880d210c-00cd-4c2b-a078-e784d911ca1b,임동하,dhlim@samaneng.com,2,Y,CM사업부(cm-division) +bb91d567-c1b9-4ce3-a90d-d8bdbdf35131,임명재,mjlim@samaneng.com,2,Y,플랜트2부(plant-2) +73c586c9-f4a9-4054-8d4e-fa038d5b83ac,임병훈,bhlim@samaneng.com,2,Y,CM사업부(cm-division) +1e4c4664-0103-4961-b705-0821ac4abd8f,임세교,sklim@samaneng.com,2,Y,플랜트2부(plant-2) +bbdcf099-c26f-493f-b433-b747b279e964,임슬기,sglim@samaneng.com,2,Y,CM사업부(cm-division) +adeffa38-d03f-46fc-966e-a0f2ad5dd10d,임승현,shlim@samaneng.com,2,Y,수자원1부(water-resources-1) +68b183c8-b4bf-43d9-9cb1-04522f1929dc,임언수,eslim@samaneng.com,2,Y,CM사업부(cm-division) +08a5196b-eea2-410b-ba9c-78e0695e6357,임완수,wslim@samaneng.com,2,Y,CM사업부(cm-division) +4bfd6a8a-8809-4529-b431-937d97bd7e03,임재덕,jdlim@samaneng.com,2,Y,수자원1부(water-resources-1) +8835f5e6-79ab-4720-8380-2bff367ac274,임재만,jmlim@samaneng.com,2,Y,CM사업부(cm-division) +51b38c3e-a1cb-4324-922d-9178ae0d6d4d,임재성,jslim@samaneng.com,2,Y,지반터널부(geotech-tunnel) +cc2b7e81-8629-4eff-b637-0b618b2f3a27,임정남,jnlim@samaneng.com,2,Y,플랜트2부(plant-2) +f2747118-dda0-4e5f-9ec7-4d7796eb23fd,임정택,jtlim@samaneng.com,2,Y,CM사업부(cm-division) +9f72af18-0330-428d-bc32-2eca4e9b40d4,임정희,jhlim1@samaneng.com,2,Y,CM사업부(cm-division) +6a0a77b0-832f-456e-9337-f97034dc1821,임정희,jhlim2@samaneng.com,2,Y,CM사업부(cm-division) +2894fb13-2324-4ef2-9f20-f1eb5acb02bf,임종열,jrim@samaneng.com,2,Y,플랜트2부(plant-2) +986797cf-dc36-4dc6-8a26-3778f864f08b,임지선,jslim1@samaneng.com,2,Y,물환경2부(water-environment-2) +20fd8123-f537-4b57-9917-7f70a19eb176,임지훈,jhlim@samaneng.com,2,Y,수자원2부(water-resources-2) +75f79f45-29da-4a8e-8f1c-a512a34d9067,임채규,cklim1@samaneng.com,2,Y,CM사업부(cm-division) +99ac313f-4520-47d5-9614-3c1975cc6693,임철모,cmlim@samaneng.com,2,Y,CM사업부(cm-division) +dad87e1c-d497-4eee-b899-2db7d3be1f8b,임철우,cwlim@samaneng.com,2,Y,CM사업부(cm-division) +0d3b266f-b3e5-4859-99e9-cb18f1b9a69c,임철우,cwlim1@samaneng.com,2,Y,사업개발실(business-development) +4c25fd41-23ab-46bf-aed4-23fdf73b1fc6,임해선,hslim1@samaneng.com,2,Y,플랜트1부(plant-1) +f8cefc88-0a32-492c-a56e-55552054490c,임헌목,hmlim@samaneng.com,2,Y,물환경1부(water-environment-1) +14198e99-64a5-4f59-baa0-ad1d403372fc,임현석,hslim2@samaneng.com,2,Y,CM사업부(cm-division) +e33476af-9d33-4893-b566-4f1ca543559e,임현식,hslim3@samaneng.com,2,Y,수자원2부(water-resources-2) +92480d32-1212-46e8-9a9e-6ebca062e739,임현우,hwyim@samaneng.com,2,Y,사업개발실(business-development) +4f99f34f-f9e5-4464-9ec5-0944a09eb2e0,임효진,hjlim1@samaneng.com,2,Y,CM사업부(cm-division) +7b33ff3a-70ba-4365-b1c4-7eae193293b8,장경진,kjjang@samaneng.com,2,Y,CM사업부(cm-division) +7357f84a-0ae8-4878-966f-7636bd53fe96,장기영,kyjang@samaneng.com,2,Y,수력부(hydropower) +d9145b79-19b0-4f43-9dae-be0200530133,장덕진,djjang@samaneng.com,2,Y,물환경3부(water-environment-3) +3f053836-3c54-4035-ab56-75dd1b72d268,장동화,dhjang@samaneng.com,2,Y,구조부(structures) +44c59223-b9ac-4e06-93d6-1975186ceb1a,장두진,djjang1@samaneng.com,2,Y,플랜트2부(plant-2) +10d72a73-32ce-40d9-b106-d5439518781d,장래욱,ruchang@samaneng.com,2,Y,플랜트2부(plant-2) +eed4fc3b-3ed5-4ef8-b268-0bfab2b7ba5d,장면학,mhjang1@samaneng.com,2,Y,플랜트2부(plant-2) +d7db5751-4390-4e76-8c22-3686a93ff814,장명희,mhjang@samaneng.com,2,Y,지반터널부(geotech-tunnel) +883e5e87-c47a-4565-94b6-f32cff9ec6cb,장미연,myjang@samaneng.com,2,Y,플랜트2부(plant-2) +3cedf787-685e-4c4f-aff0-63993ed7ab7f,장민수,msjang@samaneng.com,2,Y,철도2부(railway-2) +76295fe1-0e7e-4b06-b076-1ff658731664,장보식,bsjang@samaneng.com,2,Y,수자원1부(water-resources-1) +00f952a0-5608-4f5a-b042-36b840736262,장부식,bsjang2@samaneng.com,2,Y,철도1부(railway-1) +768a9b9c-5a0f-4a15-8f10-cbecd096524c,장상현,shjang1@samaneng.com,2,Y,수자원2부(water-resources-2) +94ffb63a-5eec-4d79-a30e-0d20054dc584,장성현,shchang@samaneng.com,2,Y,철도2부(railway-2) +8419228a-f9d2-4f07-865a-6b94cd2dc56d,장세현,shjang3@samaneng.com,2,Y,물환경2부(water-environment-2) +85dbca06-9105-4637-8294-717f36d1e5fb,장소희,shjang2@samaneng.com,2,Y,플랜트2부(plant-2) +8248936c-2d6e-4feb-9bb0-a90f843ffe0d,장연경,ykjang@samaneng.com,2,Y,도시계획부(urban-planning) +0c4e5777-0c23-47d9-a79d-b52928f211fd,장연수,ysjang@samaneng.com,2,Y,플랜트2부(plant-2) +fced1a08-8836-468d-af5a-7a1e3a675b6a,장영규,ykjang1@samaneng.com,2,Y,CM사업부(cm-division) +cf9d9ac2-7a31-41cc-9161-6adb37c2705c,장영완,ywjang@samaneng.com,2,Y,CM사업부(cm-division) +4d7af2ac-337e-4844-8a97-bbe2a4d3a81d,장완식,wsjang@samaneng.com,2,Y,CM사업부(cm-division) +572cd34b-2ce4-4911-a86c-2da6a68a8d84,장우현,whjang@samaneng.com,2,Y,물환경1부(water-environment-1) +05fb4801-ff54-4fc2-9b24-06b01cbbc977,장유선,ysjang3@samaneng.com,2,Y,수자원1부(water-resources-1) +a6453a41-b0dc-4f97-a7ef-3bcaf3fd6a84,장윤정,yjjang@samaneng.com,2,Y,도시계획부(urban-planning) +96ac6bad-a456-4bb6-8764-63b500c228db,장은경,ekjang@samaneng.com,2,Y,플랜트2부(plant-2) +0b7c2ac0-871f-4ed0-a9d0-5c98a9c638ad,장은호,ehjang@samaneng.com,2,Y,CM사업부(cm-division) +9b472d26-70cc-4b15-94c2-10750b25f20d,장익근,igjang@samaneng.com,2,Y,수자원1부(water-resources-1) +a5e8fedc-d5f5-4382-a4e8-e403ba2a8efd,장진영,jyjang1@samaneng.com,2,Y,도로부(road) +2bb1be69-0007-4d42-b9af-72f62b326530,장진영,jyjang@samaneng.com,2,Y,도로부(road) +c18cbb8a-f162-4ffb-bb1f-1bec15449720,장채운,cwjang1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +878a761e-b156-4fc3-bb41-af6b92f70570,장철원,cwjang@samaneng.com,2,Y,도시계획부(urban-planning) +a9f209d8-a51a-4916-8f81-7156d7cc7304,장하영,hyjang@samaneng.com,2,Y,CM사업부(cm-division) +84b36527-0db3-4e61-8b97-74b25ad6d065,장홍준,hjjang1@samaneng.com,2,Y,물환경2부(water-environment-2) +36682993-0388-4dfd-b9f4-e16288f91846,장홍준,hjjang@samaneng.com,2,Y,기획부(planning) +1060b99a-fe1b-411a-9d4c-4a9a88e807dd,장효송,hsjang@samaneng.com,2,Y,플랜트2부(plant-2) +3c69a15a-0240-4237-868c-defbd5a6c0cd,장희원,hwjang@samaneng.com,2,Y,PQ팀(pq-team) +b9a36aaf-b38e-4456-ad21-29b6b48076b3,전남희,nhjun@samaneng.com,2,Y,철도2부(railway-2) +f376599c-bfd2-4705-b4e1-06c993ead385,전범식,bsjeon@samaneng.com,2,Y,CM사업부(cm-division) +98f3a86f-b224-4061-995e-46bd8ef89e12,전범진,bjjeon@samaneng.com,2,Y,수력부(hydropower) +9f633bed-1c18-4417-85f4-e1d534004f16,전병익,bijun@samaneng.com,2,Y,물환경1부(water-environment-1) +4758503c-02f8-4253-811e-bc784e9c1ca7,전보민,bmjeon@samaneng.com,2,Y,철도1부(railway-1) +02ae554f-4164-4e26-a86a-c13ece8cf2e4,전상표,spjeon@samaneng.com,2,Y,물환경2부(water-environment-2) +b3c19356-a324-4bc9-b1ce-e11919334ecc,전성구,sgjeon@samaneng.com,2,Y,수자원2부(water-resources-2) +263ec0c8-9ffe-4e3b-9369-c966014c7513,전소라,srjeon@samaneng.com,2,Y,CM사업부(cm-division) +2359dc31-5226-4c68-91d9-dc9d4428bc6b,전순환,swjun@samaneng.com,2,Y,플랜트2부(plant-2) +cce268b1-39af-4b19-a7e1-aaf2a9a981ac,전아은,aejeon@samaneng.com,2,Y,도시계획부(urban-planning) +56d1f37d-93e3-4c5c-a1bd-2fbc9180ba9c,전윤희,yhjeon@samaneng.com,2,Y,플랜트2부(plant-2) +c7f32c9c-b235-484f-9ef3-024675042dfd,전지영,jyjeon@samaneng.com,2,Y,CM사업부(cm-division) +504ab98e-f8d9-419a-8865-a90d37b6fb3f,전태훈,thjeon@samaneng.com,2,Y,지반터널부(geotech-tunnel) +c4463dff-a01a-4402-ae0e-41cbaa7efbb5,전필성,psjeon@samaneng.com,2,Y,물환경1부(water-environment-1) +5e5124f4-bffb-4dbc-839e-4587b3623007,전한설,hsjeon@samaneng.com,2,Y,도로부(road) +623bd084-e97e-4a4f-aad4-a8e4e459065b,전현정,hjjeon1@samaneng.com,2,Y,철도2부(railway-2) +fcfee728-3b71-4fce-a713-714ceb3e4244,전형근,hgjeon@samaneng.com,2,Y,철도2부(railway-2) +45ad04c0-e8d5-451a-8151-40dd6b99dcf9,전형민,hmjeon@samaneng.com,2,Y,플랜트1부(plant-1) +a3baf885-8a43-4292-836d-18d29296e6ed,전형섭,hsjeon2@samaneng.com,2,Y,수자원1부(water-resources-1) +927bfb60-f8c3-4572-89ed-cc6516a51bd3,전형진,hjjeon@samaneng.com,2,Y,플랜트1부(plant-1) +cea9adf6-e97d-48e6-b3f2-3a903adfe4df,전호성,hsjeon3@samaneng.com,2,Y,사업개발실(business-development) +cc17b352-97df-413b-907e-8d5b73ffd8c9,전홍찬,hcjun@samaneng.com,2,Y,도로부(road) +eeae6f8b-6a09-4d86-aaab-443aa57798b3,전효만,hmjun@samaneng.com,2,Y,플랜트1부(plant-1) +26648142-14a9-4b39-bf2b-81c645e7f728,전희숙,hsjeon1@samaneng.com,2,Y,CM사업부(cm-division) +0f187592-6cab-47e4-af9e-3d1acef90122,정경열,kyjung@samaneng.com,2,Y,플랜트2부(plant-2) +fe93ec02-02db-4ae5-9375-9e1e22cb141c,정경조,kjjeong@samaneng.com,2,Y,플랜트1부(plant-1) +ab7db4bb-1b3f-46a5-9236-631daccdc568,정계영,gyjung1@samaneng.com,2,Y,물환경1부(water-environment-1) +f117e004-ac8b-4fc8-ad49-970fc2e04f21,정공주,gjjung@samaneng.com,2,Y,CM사업부(cm-division) +f829a0cb-fa16-4d95-a53c-073dd9564a21,정광남,knjeong@samaneng.com,2,Y,CM사업부(cm-division) +f69528ee-0956-4d7a-8a2b-3dbead8642b6,정광섭,kschung@samaneng.com,2,Y,플랜트2부(plant-2) +92bb8d64-ae78-4de6-8a14-1b92b8eaec8c,정광호,khjung@samaneng.com,2,Y,철도2부(railway-2) +6371aec3-2756-4846-9b73-3116aff80fa0,정국환,ghjeong1@samaneng.com,2,Y,플랜트2부(plant-2) +79fc3974-fc2f-4449-b58d-bc36c1cfdfd3,정권,kjeong@samaneng.com,2,Y,CM사업부(cm-division) +102d7491-03eb-437d-bf69-61e64ba7ecdf,정귀한,ghjeong@samaneng.com,2,Y,수자원2부(water-resources-2) +35ae81a5-cdbf-43b0-aae7-1eb7ba5a4d6d,정규영,gyjung@samaneng.com,2,Y,지반터널부(geotech-tunnel) +04268038-f776-4a97-9320-7b4c459385f7,정근식,gsjung@samaneng.com,2,Y,CM사업부(cm-division) +ede2916f-90bb-4ed2-8018-5b0699f43474,정기일,kijeong@samaneng.com,2,Y,물환경2부(water-environment-2) +4bc9c6db-d67c-4618-89e4-207908546b2b,정기철,kcjeong@samaneng.com,2,Y,플랜트2부(plant-2) +fe3105ad-6f47-4e27-9c34-ad34fe2bda74,정낙훈,nhjung@samaneng.com,2,Y,물환경1부(water-environment-1) +78627242-9ad2-486b-b8e5-6538901a1236,정다경,dkjung@samaneng.com,2,Y,플랜트2부(plant-2) +de70ec29-1c57-4f18-a79c-2cfd175bc804,정대환,dhjeong@samaneng.com,2,Y,구조부(structures) +4c069ee8-d46e-491f-85ee-7c14cb2780ec,정도윤,dyjung@samaneng.com,2,Y,플랜트2부(plant-2) +d759bec4-3727-4eb3-8cb4-a0ef112a6cce,정동언,dejeong@samaneng.com,2,Y,플랜트2부(plant-2) +f268bef0-676d-4a70-9b88-3d9ff2e3b5b6,정동희,dhjung@samaneng.com,2,Y,PQ팀(pq-team) +5135f170-6473-421d-8fb2-c82d4f651fe8,정만직,mjjeong@samaneng.com,2,Y,플랜트2부(plant-2) +3a89bc85-d2c9-4e31-9caa-53cd237957d0,정미경,mkjung@samaneng.com,2,Y,물환경2부(water-environment-2) +35a54f55-a161-4dce-a146-fe7cbdd060bf,정상구,sgchung@samaneng.com,2,Y,기획부(planning) +a4abbdee-9cd2-4f72-a8dd-af2295442036,정상봉,sbjung@samaneng.com,2,Y,CM사업부(cm-division) +d17f2c4c-1362-4d1c-8a5c-42b2fec8b1f4,정서연,syjung1@samaneng.com,2,Y,수자원2부(water-resources-2) +d8a48797-4fc6-4bcf-9d80-fabce7ee7cb2,정선진,sjjeong@samaneng.com,2,Y,플랜트2부(plant-2) +3569908b-7f03-414a-8b39-837b0eacb19f,정성오,sojung@samaneng.com,2,Y,수자원2부(water-resources-2) +89ff5f2d-269a-4b80-8397-aca29d4d868f,정성운,sujeong@samaneng.com,2,Y,CM사업부(cm-division) +b3aea9ff-37d1-4fc7-878a-5d98e4994ed3,정성일,sijung@samaneng.com,2,Y,CM사업부(cm-division) +af952d48-67f2-45a4-86b2-8d77d0b9dad7,정소연,syjung@samaneng.com,2,Y,지반터널부(geotech-tunnel) +9da6bf58-bdee-44ad-b845-a98d5513f166,정소연,sychung@samaneng.com,2,Y,교통계획부(transport-planning) +614456b2-7ccf-44ab-892a-8a4fad21657c,정송수,ssjung@samaneng.com,2,Y,플랜트2부(plant-2) +4e182235-6e4d-4958-badf-42fe4f4fee1f,정수지,sjjung@samaneng.com,2,Y,도시계획부(urban-planning) +9aae7d20-e92d-4dda-a552-b67e6c3f9f47,정순철,scjeong@samaneng.com,2,Y,플랜트2부(plant-2) +e3e81647-a84c-4064-ac8b-024ecec5838e,정승엽,syjeong@samaneng.com,2,Y,CM사업부(cm-division) +b806c51b-3eac-4533-b79d-ff3f0d41676a,정승조,scchung@samaneng.com,2,Y,CM사업부(cm-division) +3448d2cd-4243-478f-9f9d-123f186326e6,정양성,ysjung@samaneng.com,2,Y,CM사업부(cm-division) +76885d97-83f6-4c1e-8ec3-49ebbbb73205,정연배,ybjung@samaneng.com,2,Y,플랜트2부(plant-2) +294e69bb-32a4-4256-8199-5909ce938a42,정영기,ykjung@samaneng.com,2,Y,환경평가부(environment-assessment) +9c6d421c-5cee-4ef2-9bf3-263ea7d25ac7,정완순,wsjung@samaneng.com,2,Y,물환경2부(water-environment-2) +69546963-ea13-461b-8185-bc0659643774,정용권,ykchung@samaneng.com,2,Y,플랜트2부(plant-2) +0aa33b0a-7d90-4683-9090-df1c00351725,정용주,yjjeong@samaneng.com,2,Y,도시개발부(urban-development) +9308940d-b113-4354-8e39-7c1e50206dbf,정용찬,ycjung@samaneng.com,2,Y,도시개발부(urban-development) +35c99308-5639-414a-8766-afa60fd908ec,정용헌,yhjung1@samaneng.com,2,Y,물환경3부(water-environment-3) +75038dce-58ae-4adf-883b-8c5d269126cc,정우진,wjjung@samaneng.com,2,Y,수자원2부(water-resources-2) +d5d91b12-19ab-4b64-85db-5b5528082cc0,정우철,wcjeong@samaneng.com,2,Y,수자원2부(water-resources-2) +fea89198-fb34-4d23-93a3-acd88561f0d9,정우형,whjung@samaneng.com,2,Y,도로부(road) +9dfa0eb5-6c20-4938-bcdd-e1accc5dc9e0,정원빈,wbjeong@samaneng.com,2,Y,도시개발부(urban-development) +f9047983-f7c0-464e-8ba7-c70678a5f9b9,정원준,wjjeong@samaneng.com,2,Y,도시개발부(urban-development) +f42cf8f3-7482-43bc-80cc-ce72dafb8ab3,정유석,ysjeong@samaneng.com,2,Y,플랜트2부(plant-2) +f51507dc-ee8f-4ea9-9fdb-0fab33b968aa,정유숙,ysjung1@samaneng.com,2,Y,철도2부(railway-2) +a7918efd-701f-4842-9fcc-7d5483c336a0,정윤호,yhjung@samaneng.com,2,Y,CM사업부(cm-division) +556cdb5e-7da9-4a1c-a533-026cf9731766,정은구,egjeong@samaneng.com,2,Y,도시개발부(urban-development) +ca9b7424-2adb-4a3e-9d52-dd9c2c488d7b,정은선,esjung@samaneng.com,2,Y,해외사업부(overseas-business) +0e9f9767-1e90-453b-bc4c-8aec325afc54,정은택,etjeong@samaneng.com,2,Y,철도1부(railway-1) +891e3577-1e64-4e5e-a007-03b3cbb63b8e,정은희,ehjung@samaneng.com,2,Y,CM사업부(cm-division) +219aa7e5-68d7-4789-971a-172ef5722c29,정의택,etjung@samaneng.com,2,Y,물환경3부(water-environment-3) +3256dd24-cb93-4997-b497-4fb5af7a5c97,정이준,ijjung@samaneng.com,2,Y,수력부(hydropower) +27faa022-b15a-46dc-bf55-42ac1b68b1a2,정인식,ischung@samaneng.com,2,Y,CM사업부(cm-division) +8f89f56b-4815-48ff-99fb-43971d061845,정일구,ikjeong@samaneng.com,2,Y,물환경3부(water-environment-3) +be4e6dd6-8b1e-49f8-bcd9-583f221f945d,정일영,iyjung@samaneng.com,2,Y,CM사업부(cm-division) +c02e284e-3877-4e1e-ab31-497de4a3bce5,정일훈,yhchung@samaneng.com,2,Y,플랜트2부(plant-2) +8a1640db-30db-4d82-b930-fe77d451d1c6,정재근,jkjung@samaneng.com,2,Y,물환경1부(water-environment-1) +4580d8da-2249-46e6-b23d-f0d2358f53ac,정재령,jrjung@samaneng.com,2,Y,플랜트1부(plant-1) +0e3cee4e-b1e6-4c8c-a72e-9e89047d9a94,정재열,jyjung3@samaneng.com,2,Y,업무(operations) +39abd4ec-096a-4bc2-95e0-aba90a45dab5,정재영,jyjung@samaneng.com,2,Y,플랜트2부(plant-2) +2f1f93d3-b8e7-46a2-a130-7c40ce763eb9,정재욱,jwjeong@samaneng.com,2,Y,물환경3부(water-environment-3) +55e865d8-b83c-4269-9967-104e631d012e,정재인,jijeong@samaneng.com,2,Y,CM사업부(cm-division) +5e16108d-4d66-4145-b779-eb76748b87d2,정정열,jyjeong1@samaneng.com,2,Y,물환경1부(water-environment-1) +20ee2d1e-1c0b-460f-bdb7-8064fc2b4834,정종문,jmjung@samaneng.com,2,Y,플랜트2부(plant-2) +f3cf3712-e2c5-48e3-adf0-1238f965e982,정종용,jyjeong2@samaneng.com,2,Y,항만부(harbor) +bd098177-6bf2-40f8-aae0-18959243c7d9,정주화,jhjeong@samaneng.com,2,Y,플랜트2부(plant-2) +5015c341-06ba-4d8e-9d4a-03a42f43eb09,정주희,jhjung1@samaneng.com,2,Y,CM사업부(cm-division) +4acc1d7e-bc6d-4ebd-84b5-fb54cf547017,정준영,jyjeong4@samaneng.com,2,Y,CM사업부(cm-division) +a0fa5372-6ffe-478c-b0b9-b739ae0232a8,정준표,jpjoung@samaneng.com,2,Y,물환경1부(water-environment-1) +eaa8e54f-7ed1-422d-be43-b553ea5fe15e,정지영,jyjung2@samaneng.com,2,Y,플랜트2부(plant-2) +4e3b9f92-ad99-4821-b408-23ff8d4b2958,정지현,jhjung@samaneng.com,2,Y,물환경1부(water-environment-1) +9c9e3de8-7423-49e6-931b-cf2dc627ccb5,정진철,jcjung@samaneng.com,2,Y,플랜트2부(plant-2) +f6560e84-3ddb-454a-b64b-205edd79b906,정진호,jhchung54@samaneng.com,2,Y,수자원1부(water-resources-1) +fdbb7a41-160d-4f6e-bccb-9122770820d6,정찬영,cyjeong1@samaneng.com,2,Y,물환경2부(water-environment-2) +e4e33983-eaba-4020-960d-a11657439819,정창근,ckjung@samaneng.com,2,Y,수자원2부(water-resources-2) +f9b23072-b4a3-485b-977b-282b629af368,정창화,chjeong@samaneng.com,2,Y,도시계획부(urban-planning) +b1c1528b-b656-4b93-817b-75cba0d4891c,정청담,cdjeong@samaneng.com,2,Y,항만부(harbor) +9884df36-da10-4db9-bace-8573e4d260b1,정충원,cwjung@samaneng.com,2,Y,항만부(harbor) +76fe81f3-71ec-43cb-af2d-9f40df59c603,정태영,tyjeong@samaneng.com,2,Y,물환경1부(water-environment-1) +e8e4d288-3a62-4980-8208-1f0323183c6b,정평기,pkjeong@samaneng.com,2,Y,항만부(harbor) +486d82ef-bf25-4d91-9fb5-ee6898dd3fa0,정평회,phjeong@samaneng.com,2,Y,CM사업부(cm-division) +3e52cdb7-a560-456b-9080-6d474721436e,정해진,hjjeong@samaneng.com,2,Y,플랜트2부(plant-2) +5e61f10e-98fa-4cc3-a86e-9f1b4ce57143,정현,hjeong@samaneng.com,2,Y,물환경2부(water-environment-2) +96f9bb0b-4ee8-43a5-b920-89910e1d6fd8,정현교,hkjung1@samaneng.com,2,Y,물환경2부(water-environment-2) +e4ab6e36-6693-410d-b73c-8a3dff52c479,정현식,hsjeong1@samaneng.com,2,Y,물환경1부(water-environment-1) +1960b861-dd62-4ec8-ac21-f7d4541e7ef7,정혜영,hyjung@samaneng.com,2,Y,도시개발부(urban-development) +ff69fcae-e13d-489d-8a53-77068bf1859a,정홍택,htjeong@samaneng.com,2,Y,항만부(harbor) +9f7275f0-eb38-4732-a662-93cbab60c076,정환주,hjjung@samaneng.com,2,Y,CM사업부(cm-division) +edfa9b44-a365-43e0-b27a-449549761cd4,정희엽,hyjeong@samaneng.com,2,Y,항만부(harbor) +186032c1-4fd9-4f0f-a018-7705ed2b7f7b,정희원,hwjeong@samaneng.com,2,Y,플랜트2부(plant-2) +a81f496e-bb25-4d1d-a961-4c1774718916,조강주,kjcho2@samaneng.com,2,Y,플랜트2부(plant-2) +e13affa6-b6fa-4b31-a432-fde422cb1227,조길문,kmcho@samaneng.com,2,Y,항만부(harbor) +c36ca711-e3c3-4a1c-8ed4-c4fd01883792,조남욱,nwcho@samaneng.com,2,Y,철도2부(railway-2) +15163bbd-40a2-43b7-a888-fae54edb10f8,조대현,dhjo@samaneng.com,2,Y,철도1부(railway-1) +f5085dc2-88fa-466f-9216-5befbe2d117e,조동진,djcho@samaneng.com,2,Y,수자원2부(water-resources-2) +242a8685-78ba-4cb3-b967-7b5974bcca47,조래수,rscho@samaneng.com,2,Y,CM사업부(cm-division) +cfb89857-be8d-4548-aff2-a711f19ab6f1,조명훈,mhcho1@samaneng.com,2,Y,해외사업부(overseas-business) +4dafd11e-2e65-4605-8a70-a7f3c8389752,조문국,mgjo@samaneng.com,2,Y,CM사업부(cm-division) +d1a87cef-dce8-4721-92e2-e8760f65a992,조미미,mmjo@samaneng.com,2,Y,CM사업부(cm-division) +9617d4ee-41ba-482d-a893-8a66f0624b00,조민현,mhcho@samaneng.com,2,Y,물환경2부(water-environment-2) +9d0938d1-85db-415d-9ac8-a1ba1636ee31,조병광,bkcho@samaneng.com,2,Y,플랜트2부(plant-2) +eae1c683-648e-401d-ab1e-bf5abd2d2681,조봉현,bhjo@samaneng.com,2,Y,플랜트2부(plant-2) +37c487cd-d861-4023-879b-5c249b22a11d,조석규,skcho@samaneng.com,2,Y,CM사업부(cm-division) +371402a4-1fd4-4a30-bd61-d08b96ac95db,조성곤,sgjo@samaneng.com,2,Y,CM사업부(cm-division) +40743c44-cd2f-488a-b67e-56decee905d3,조성복,sbcho@samaneng.com,2,Y,도시계획부(urban-planning) +fd45064e-3e2b-4410-a9db-d114dfe82f25,조성선,sscho@samaneng.com,2,Y,CM사업부(cm-division) +c4869e63-e049-45b0-859b-8e01541dd735,조성환,shjo@samaneng.com,2,Y,해외사업부(overseas-business) +5aeaa422-df4e-4cd9-bbea-5f8036598402,조안기,akcho@samaneng.com,2,Y,CM사업부(cm-division) +8d907e4b-9b9f-4b8b-8d43-f9c81e333368,조연경,ykjo@samaneng.com,2,Y,물환경2부(water-environment-2) +cd1f9b56-90a2-4b16-8169-eb86e47eb76a,조영민,ymcho1@samaneng.com,2,Y,도시계획부(urban-planning) +02f830a1-c58c-4a8d-8107-0c9ba5ca31dc,조영삼,yscho2@samaneng.com,2,Y,CM사업부(cm-division) +a8d3ae27-e543-49fc-9830-28c48f53e529,조영수,yscho1@samaneng.com,2,Y,플랜트2부(plant-2) +e7019c8d-c2bd-410d-b1c2-3f1c7b5e42f7,조영훈,yhcho16@samaneng.com,2,Y,재무회계팀(finance) +416a5657-964e-4a16-a79b-f1a7b61a25a5,조용근,ykcho@samaneng.com,2,Y,CM사업부(cm-division) +bdec0122-05cd-45af-94b8-a845a738ccd4,조용익,yijo@samaneng.com,2,Y,플랜트2부(plant-2) +9769ff34-6193-4892-8631-22133eca0be4,조우진,wjjo@samaneng.com,2,Y,물환경1부(water-environment-1) +1a1838d5-0955-4ea0-8f22-04b9336424a9,조원석,wscho@samaneng.com,2,Y,CM사업부(cm-division) +2e227b70-20c9-45ec-9562-e226f5e71a13,조윤상,yscho@samaneng.com,2,Y,CM사업부(cm-division) +39e676d3-be17-4320-90f5-7935f897b16b,조은영,eycho@samaneng.com,2,Y,물환경1부(water-environment-1) +4575ef1b-b222-462e-b423-72dbfb5d904d,조인철,icjo@samaneng.com,2,Y,플랜트2부(plant-2) +aa760e29-4692-4b12-93f3-14c2e92ca6c2,조인환,ihjo@samaneng.com,2,Y,수자원1부(water-resources-1) +ae34f60e-1c47-46e7-b7af-fac6e5b2dba4,조재영,jycho@samaneng.com,2,Y,물환경2부(water-environment-2) +5a6a985a-774f-49bc-b7b3-d595a0b622c7,조재유,jycho1@samaneng.com,2,Y,수자원2부(water-resources-2) +779ea58b-839d-42f4-89c3-a714f3814cb6,조정묵,jmjo@samaneng.com,2,Y,수자원1부(water-resources-1) +581c45b8-d26b-408e-a576-457c7e502940,조진수,jscho1@samaneng.com,2,Y,철도2부(railway-2) +acbaf17d-a407-4111-9b1b-fef6331f0782,조창형,chcho@samaneng.com,2,Y,플랜트2부(plant-2) +80a07018-c6f8-495a-97e5-098a498aa527,조항언,hujo@samaneng.com,2,Y,철도1부(railway-1) +2883b205-05c3-40dc-ad36-f34f8bc1c527,조현선,hscho@samaneng.com,2,Y,수자원2부(water-resources-2) +bcf80c67-a414-4fd3-beec-b6e6192f781d,조혜경,hkcho@samaneng.com,2,Y,CM사업부(cm-division) +638b9e00-bc83-4e3f-9637-a9e230cd0e1d,조혜정,hjcho@samaneng.com,2,Y,재무회계팀(finance) +e42d6631-a5ad-4f6f-8beb-479b6931b893,조호현,hhjo@samaneng.com,2,Y,CM사업부(cm-division) +1995c362-7ab3-4fae-9be8-3154d5245402,조흥석,hscho1@samaneng.com,2,Y,지반터널부(geotech-tunnel) +0375a03f-8404-4778-90d9-51b8cd746a2d,주삼언,sechu@samaneng.com,2,Y,플랜트2부(plant-2) +dc9d6fc5-934d-44b1-8fe4-d418909b34e7,주승민,smjoo@samaneng.com,2,Y,환경평가부(environment-assessment) +5bca3ba9-2c54-4e75-84f9-ced9df54db2f,주영덕,ydjoo@samaneng.com,2,Y,물환경1부(water-environment-1) +c929ca70-9378-4385-a46b-6137d1cea9df,주현수,hsju@samaneng.com,2,Y,해외사업부(overseas-business) +02b5e8be-447f-411a-9ab9-e0b2873c504d,주호식,hsjoo1@samaneng.com,2,Y,플랜트1부(plant-1) +3c9b1821-30fd-48fa-96aa-af71b2c46836,지덕영,dyji@samaneng.com,2,Y,CM사업부(cm-division) +1dba00e4-8024-46ee-8666-d80b1fc82fbf,지성현,shji@samaneng.com,2,Y,철도2부(railway-2) +a9cc40c6-ab59-45d4-8982-fd7f718f6a72,지승환,shjee@samaneng.com,2,Y,인사총무부(hr-admin) +2a1717b4-35a6-433a-8930-b5089f5edae3,진민화,mhjin@samaneng.com,2,Y,플랜트2부(plant-2) +c61bc884-300c-470f-a48b-5f66f9f23e07,진충문,cmjin@samaneng.com,2,Y,지반터널부(geotech-tunnel) +0648d8b4-4308-43bc-8416-06e1d8378808,차기준,kjcha1@samaneng.com,2,Y,도시계획부(urban-planning) +5c7f8bae-6eeb-453f-aebc-08542a47fe3c,차문자,mjcha@samaneng.com,2,Y,CM사업부(cm-division) +d5e4716b-1a66-4cde-b2ea-244beaba352f,차승구,sgcha@samaneng.com,2,Y,플랜트2부(plant-2) +670d267c-6166-4da1-ab47-e53c8ab6b6b6,차영주,yjcha@samaneng.com,2,Y,플랜트2부(plant-2) +99337cac-3fc8-4c98-a6e2-0c81b63046a3,차진한,jhcha@samaneng.com,2,Y,CM사업부(cm-division) +6573e26f-c02d-44b0-a8db-34e21f541177,차호준,hjcha@samaneng.com,2,Y,플랜트1부(plant-1) +da26c5d5-a80e-48ce-8f95-5d5ab325c53f,차홍근,hgcha@samaneng.com,2,Y,물환경2부(water-environment-2) +6fe346cb-fb7d-48e9-8e83-0edd1b749d1f,채병구,bkchae@samaneng.com,2,Y,CM사업부(cm-division) +9a437c61-97a9-4f21-be47-f74ee899ad40,채정기,jkchae@samaneng.com,2,Y,플랜트1부(plant-1) +0bf9da01-a81b-4238-b488-1796bac6aece,채종현,jhchae@samaneng.com,2,Y,사업개발실(business-development) +0e25bd7b-1668-443a-9d73-b408f891ad78,채희웅,hwchae@samaneng.com,2,Y,도로부(road) +6484a0b2-b166-41a4-9f40-28fe6c04c96a,천민규,mkcheon@samaneng.com,2,Y,물환경2부(water-environment-2) +6afb9d42-b568-4c82-b9a7-705796ef83b7,천세현,shcheon@samaneng.com,2,Y,물환경1부(water-environment-1) +2dd6ad11-5da5-43a0-9793-c6c13546f713,천승호,shchun@samaneng.com,2,Y,조경레저부(landscape-leisure) +1656fc5a-401e-442e-a7d2-99655bd6712f,천영석,yscheon@samaneng.com,2,Y,CM사업부(cm-division) +396e1771-501f-47a9-a14b-f6589387404b,최경문,kmchoi1@samaneng.com,2,Y,CM사업부(cm-division) +f94c377b-d1f2-40b5-8326-cd4a72c8cc83,최경수,gschoi@samaneng.com,2,Y,도시계획부(urban-planning) +8926ec8c-1909-4df9-9c09-076a902ffe41,최경호,khchoi3@samaneng.com,2,Y,플랜트2부(plant-2) +f897eb58-494e-4a61-a929-abe6b2cfea1d,최광민,kmchoi@samaneng.com,2,Y,철도1부(railway-1) +4ecf9972-ac24-464d-898f-b1160bca27f7,최광수,kschoi@samaneng.com,2,Y,플랜트2부(plant-2) +881fbbb1-c955-4ed6-8b2e-6bf9677afc7d,최광일,kichoe@samaneng.com,2,Y,수자원2부(water-resources-2) +6e5d3665-87b6-4d62-9e5c-0a95015a9023,최광현,khchoi@samaneng.com,2,Y,해외사업부(overseas-business) +8fd2e4ad-4510-491a-a520-01ce9731371b,최근영,kychoi1@samaneng.com,2,Y,CM사업부(cm-division) +53c400d9-9533-484c-aad2-15e3b1c12811,최기연,kychoi@samaneng.com,2,Y,구조부(structures) +ebe3d6e1-24cf-40f3-80ba-de1c1ba1c6c0,최기평,gpchoi@samaneng.com,2,Y,CM사업부(cm-division) +ab352fb1-9040-4447-9ea3-7ef463ff52b2,최기호,khchoi2@samaneng.com,2,Y,철도2부(railway-2) +363b9837-0359-4f74-8f98-545fa5d30604,최길용,kychoi2@samaneng.com,2,Y,CM사업부(cm-division) +299bfbb6-39a1-4212-9589-2cdffc4f8e9d,최낙용,nychoi@samaneng.com,2,Y,CM사업부(cm-division) +7d4a5583-faee-445d-90bb-0cf9d1978089,최난,nchoi@samaneng.com,2,Y,CM사업부(cm-division) +b8a44e3b-5e4b-47fd-b830-6b4da6a7b59b,최도현,dhchoi1@samaneng.com,2,Y,CM사업부(cm-division) +b8093104-ab89-49d9-a488-adc38880767e,최동규,dkchoi@samaneng.com,2,Y,도시계획부(urban-planning) +362d33b1-8ad0-41ab-85a5-aa600bffa53d,최동석,dschoi1@samaneng.com,2,Y,플랜트2부(plant-2) +3cbf4765-e147-4e99-a3b3-3e9853d406fc,최란,rchoi@samaneng.com,2,Y,교통계획부(transport-planning) +ef33c824-b893-40ab-8e13-14400988e564,최무호,mhchoi@samaneng.com,2,Y,철도1부(railway-1) +4f8733a3-fe1b-4819-9002-c630af71102d,최민주,mjchoi@samaneng.com,2,Y,사업개발실(business-development) +23e7b105-5479-4ae8-8835-6ebd6c941891,최병석,bschoi2@samaneng.com,2,Y,CM사업부(cm-division) +9512158d-66d4-4e68-9d7b-8aac5d00ac4c,최상민,smchoi@samaneng.com,2,Y,물환경2부(water-environment-2) +87d46987-c68a-44b5-a355-ea8e2eba7557,최상인,sichoi@samaneng.com,2,Y,도시계획부(urban-planning) +d1210c06-47a7-495b-89b1-1782ccbbddd2,최선미,smchoi1@samaneng.com,2,Y,CM사업부(cm-division) +0330a54e-aafc-4897-b62e-2a00b9470c61,최선환,shchoi3@samaneng.com,2,Y,물환경2부(water-environment-2) +edf52d13-a023-479a-a19e-0424355de02c,최성균,sgchoi@samaneng.com,2,Y,철도1부(railway-1) +b4dae592-91ee-4d05-a7e8-7df0a7d366e1,최성배,sbchoi1@samaneng.com,2,Y,사업개발실(business-development) +3880e333-b6ba-4275-8250-076767296210,최성환,shchoi1@samaneng.com,2,Y,플랜트2부(plant-2) +265c39de-3265-4580-951a-0f953c854dff,최솔비,sbchoi@samaneng.com,2,Y,플랜트2부(plant-2) +61b29aa8-eae0-4c12-a3d3-3db8fddaa387,최수혁,shchoi4@samaneng.com,2,Y,수자원2부(water-resources-2) +d22fbd11-cb82-4ba1-a958-b4fe87262a73,최순호,shchoi5@samaneng.com,2,Y,플랜트2부(plant-2) +dcacf98b-7c9d-4ac6-9a39-0b7ccb48b78b,최승우,swchoi1@samaneng.com,2,Y,물환경3부(water-environment-3) +93686abb-473c-4760-958a-33db8abffe7a,최승제,sjchoi@samaneng.com,2,Y,수자원2부(water-resources-2) +14a96edf-3eb0-43fb-86ea-830398ee9e59,최연서,yschoi@samaneng.com,2,Y,플랜트2부(plant-2) +b02178ea-4c73-49c3-a0c2-40241b95f463,최영록,yrchoi@samaneng.com,2,Y,플랜트2부(plant-2) +4ac8f4de-ccf4-4bdb-a3bb-5ebb1bed9c4d,최영민,ymchoi@samaneng.com,2,Y,CM사업부(cm-division) +f746e954-f4a0-4869-b39c-2ec989862648,최영욱,ywchoi@samaneng.com,2,Y,플랜트2부(plant-2) +8e3b44d2-a728-4482-9e05-1072ca7fcde5,최영종,yjchoi@samaneng.com,2,Y,도시계획부(urban-planning) +2bc066ac-38d1-4275-929d-4e85f1e0e424,최영주,yjchoi4@samaneng.com,2,Y,철도2부(railway-2) +1080f04e-3430-415a-8613-daf0bb9a4b8a,최영훈,yhchoi2@samaneng.com,2,Y,플랜트2부(plant-2) +96a7516d-cefb-4e27-8159-739bd73d5f0f,최오혁,ohchoi@samaneng.com,2,Y,구조부(structures) +6150d74b-3188-405c-9eee-07ff854b315d,최완동,wdchoi@samaneng.com,2,Y,플랜트2부(plant-2) +9c5aa551-090b-41e7-a0a9-5db73affeb27,최용준,yjchoi6@samaneng.com,2,Y,물환경1부(water-environment-1) +c2496d9a-4ad0-4605-a93f-94643059a662,최원석,wschoi1@samaneng.com,2,Y,CM사업부(cm-division) +070ace2f-4442-4431-b36c-d3f4e65b0677,최원준,wjchoi@samaneng.com,2,Y,CM사업부(cm-division) +3df41a55-7a50-4ac6-b63e-32d2c0bad1da,최원현,whchoi@samaneng.com,2,Y,도시개발부(urban-development) +4b68644f-44c4-45ca-aeb2-6c94a3bde010,최원형,whchoi1@samaneng.com,2,Y,CM사업부(cm-division) +87230909-b8f7-43f2-b6cc-9de5a9cfa862,최원호,whchoi2@samaneng.com,2,Y,도로부(road) +f44c0b08-ebf6-4cea-ab42-b7cbed111f61,최윤주,yjchoi2@samaneng.com,2,Y,수자원1부(water-resources-1) +2a0ae86d-fda2-4bc1-abcd-8bcf4464eb10,최은선,eschoi2@samaneng.com,2,Y,교통계획부(transport-planning) +0bcd4d1c-72f6-4ed0-a389-73741afc167a,최은수,eschoi@samaneng.com,2,Y,도시개발부(urban-development) +7fd412f2-c643-478e-84e3-2d96a00c96ba,최의균,ekchoi@samaneng.com,2,Y,CM사업부(cm-division) +0a4b9a59-35be-4cd4-8e34-f4f27c4c30b2,최장규,jkchoi@samaneng.com,2,Y,물환경3부(water-environment-3) +3830f512-5a7f-411d-b5b2-1a4db412c0a3,최재영,jychoi@samaneng.com,2,Y,CM사업부(cm-division) +73fd8b7e-5999-4cf2-ba4a-fa35cf10650d,최재우,jwchoi2@samaneng.com,2,Y,플랜트2부(plant-2) +273c01f8-999a-44b9-9287-71fad5f04793,최재원,jwchoi6@samaneng.com,2,Y,인사총무부(hr-admin) +47f67ef4-b5aa-4846-96ff-1a03abe3362e,최정호,jhchoi5@samaneng.com,2,Y,도시계획부(urban-planning) +c3494d32-a2cc-4144-832c-5e6ccc413f10,최정훈,jhchoi4@samaneng.com,2,Y,환경평가부(environment-assessment) +44294968-6628-41f7-909c-2d27eb7d215b,최제현,jhchoi7@samaneng.com,2,Y,수력부(hydropower) +ce5dcbd3-1a6c-40db-8687-27d87ebf6c68,최종원,jwchoi5@samaneng.com,2,Y,도로부(road) +fa70eb83-f645-4ee6-90be-988a58918105,최종학,jhchoi9@samaneng.com,2,Y,수자원1부(water-resources-1) +1f24fcae-ebda-4a47-b5d9-8064a96d22c7,최종환,jhchoi@samaneng.com,2,Y,수력부(hydropower) +7043a8b6-82af-46de-8b97-5daec967a55b,최종훈,jhchoi1@samaneng.com,2,Y,조경레저부(landscape-leisure) +edb1bfd7-ccfc-4d3a-9723-a00f11170a2c,최준환,jhchoi8@samaneng.com,2,Y,해외사업부(overseas-business) +e644b1ad-4bb8-4179-a957-a5d429cc0528,최지영,jychoi3@samaneng.com,2,Y,조경레저부(landscape-leisure) +17b72dcf-f81d-4082-b0da-c4bfaa1ef55f,최지훈,jhchoi2@samaneng.com,2,Y,CM사업부(cm-division) +8f1b425e-1927-4498-be04-e8b1ccb2694b,최진우,jwchoi@samaneng.com,2,Y,CM사업부(cm-division) +64ef6773-0ab3-4a10-a88c-e707e4303892,최진원,jwchoi4@samaneng.com,2,Y,물환경2부(water-environment-2) +1dad0012-10b7-4ecd-b3ac-89b6b1caa15d,최찬수,cschoi@samaneng.com,2,Y,CM사업부(cm-division) +e529feb0-31be-4229-8cff-680d07cac1eb,최찬용,cychoi1@samaneng.com,2,Y,구조부(structures) +28abb7d0-fd90-4f58-9601-dde55ec96f08,최창열,cychoi@samaneng.com,2,Y,철도2부(railway-2) +5eb428f0-1810-4d08-8acf-5a55eee27e9b,최천동,cdchoi@samaneng.com,2,Y,항만부(harbor) +4548d00a-a564-4b0c-8606-f089c1d0dee2,최철준A,cjchoi@samaneng.com,2,Y,플랜트2부(plant-2) +242ac320-5c67-4876-bfd4-9ce1af89e321,최철준B,cjchoi1@samaneng.com,2,Y,CM사업부(cm-division) +330233dc-78e7-4903-9252-524383cb67eb,최현민,hmchoi@samaneng.com,2,Y,CM사업부(cm-division) +e5e690a6-72b1-4418-80c7-feecfd43f3c6,최현석,hschoi@samaneng.com,2,Y,플랜트2부(plant-2) +8258b72e-61f7-44d0-8585-219fc7a520c6,최현진,hjchoi1@samaneng.com,2,Y,CM사업부(cm-division) +a70a79d9-b1d4-4643-beff-f8e54d2c6291,최형규,hkchoi@samaneng.com,2,Y,플랜트2부(plant-2) +369a0276-c234-46d1-9315-b1ce3b3ae22b,최형기,hkchoi1@samaneng.com,2,Y,플랜트2부(plant-2) +1be53325-fcf2-46f3-af27-911b9d147b9f,최호삼,hschoi2@samaneng.com,2,Y,플랜트2부(plant-2) +2e047ede-f03d-4769-9ec9-e44b9c2af555,최홍찬,hcchoi1@samaneng.com,2,Y,수자원2부(water-resources-2) +61371ea1-f3a9-4d26-a30c-8973a4075528,최희윤,hychoe@samaneng.com,2,Y,물환경2부(water-environment-2) +cd196fcc-2825-447c-944f-960c2197db80,추경일,kichu@samaneng.com,2,Y,CM사업부(cm-division) +87ec8e25-f10b-46f3-95a8-8c5f37aebd0b,추재영,jychoo@samaneng.com,2,Y,물환경3부(water-environment-3) +264c9d82-b9f7-4d51-8a2c-2a0c54f9fce7,추정호,jhchoo@samaneng.com,2,Y,도로부(road) +19d43439-c4e6-4068-b9ee-a898d507a529,콰윰 아딜,adilqayyum@samaneng.com,2,Y,수자원1부(water-resources-1) +db450ff8-8341-484c-a3e2-cc0cb1232660,태종태,jttae@samaneng.com,2,Y,CM사업부(cm-division) +8e1ae8f7-9d48-4f91-88de-a1ade5585639,팔콘,falcon@samaneng.com,2,Y,항만부(harbor) +724ffb07-f290-4683-b7b6-91c174e573d3,표범열,bypyo@samaneng.com,2,Y,물환경1부(water-environment-1) +1883e50b-f8ce-466b-b2e8-9d0d2a28e681,표연준,yjpyo@samaneng.com,2,Y,도로부(road) +b975bd4a-f340-4dde-a592-d251fd5d4a5b,피태희,thpi@samaneng.com,2,Y,철도2부(railway-2) +d8ca555b-5e7d-4a89-a6d3-7b7f519211ff,하광효,khha@samaneng.com,2,Y,플랜트2부(plant-2) +4502e988-9cb4-42df-9719-b6bc31067ee4,하문수,msha@samaneng.com,2,Y,철도1부(railway-1) +d50ee488-6c9d-4e0a-a812-73e18ddeb1e0,하민호,mhha@samaneng.com,2,Y,교통계획부(transport-planning) +20699867-811e-4d90-9d93-16267a75fb64,하성호,shha1@samaneng.com,2,Y,환경평가부(environment-assessment) +91a6ee4b-78e7-45ae-8e1e-6aeffea421d4,하신용,syha@samaneng.com,2,Y,구조부(structures) +3f9593e1-28c9-4185-bf7b-e5e84b464d46,하연재,yjha@samaneng.com,2,Y,도시계획부(urban-planning) +e60cb502-d623-4cc9-9f42-d83253772026,하재성,jsha@samaneng.com,2,Y,CM사업부(cm-division) +0d447a85-2696-419a-bd57-a2951cef0ae7,하창봉,cbha@samaneng.com,2,Y,철도2부(railway-2) +8e1e8e7a-5b48-48ca-ab60-cdd20b05a1ae,한경섭,kshan@samaneng.com,2,Y,CM사업부(cm-division) +6aff911c-b924-40cd-8c95-19673c89fa33,한국진,kjhan@samaneng.com,2,Y,물환경2부(water-environment-2) +0e5c82d9-a869-4095-8d75-8d6a9983638b,한나영,nyhan@samaneng.com,2,Y,물환경2부(water-environment-2) +ef6f0141-e4d4-4376-af9b-3c6e0d932ea7,한대영,dyhan@samaneng.com,2,Y,수자원2부(water-resources-2) +d0e08856-9470-46ca-af69-b0c60cd021f5,한동윤,dyhan1@samaneng.com,2,Y,구조부(structures) +91989c9c-a42c-4e54-b469-afc6844779ce,한동현,dhhan@samaneng.com,2,Y,플랜트1부(plant-1) +8c116ce6-6d13-4ebe-891b-51fa9107947e,한명석,mshan@samaneng.com,2,Y,플랜트2부(plant-2) +f470af11-609c-4a0c-bec7-38143bd396cd,한민정,mjhan@samaneng.com,2,Y,플랜트2부(plant-2) +cc1c094b-5ecc-47b0-9f6b-6ea293a0d569,한상연,syhan@samaneng.com,2,Y,철도2부(railway-2) +424dfa4b-ae19-4150-865b-1dbe3a5897e4,한상욱,swhan2@samaneng.com,2,Y,CM사업부(cm-division) +bf6a5882-c4a6-4e8f-a7b8-1943e59684d0,한새란,srhan@samaneng.com,2,Y,도시계획부(urban-planning) +4a6eb70f-f17b-4003-be50-40e80f2b631f,한선구,skhan@samaneng.com,2,Y,철도2부(railway-2) +998893d2-e445-4644-9775-f9621c6b477d,한성숙,sshan@samaneng.com,2,Y,수자원1부(water-resources-1) +336bc6ad-6c4f-4d4b-9ef0-0804df6b8485,한성원,swhan@samaneng.com,2,Y,철도2부(railway-2) +da66bfa7-506e-41fa-908c-f48e6a257f2c,한승완,swhan1@samaneng.com,2,Y,환경평가부(environment-assessment) +eaa56df1-6f77-4420-8482-80c4ca5c52b9,한승철,schan@samaneng.com,2,Y,플랜트2부(plant-2) +6769daf3-a89f-4b27-8347-78e5f18aa308,한승한,shhan@samaneng.com,2,Y,항만부(harbor) +728420dc-11c8-44bd-bc2c-1f8a4c926e57,한영민,ymhan@samaneng.com,2,Y,철도2부(railway-2) +1f08c980-4007-4ab4-bd05-50413b68b8bd,한용배,ybhan@samaneng.com,2,Y,플랜트2부(plant-2) +25d57002-b751-4793-99cd-9bf06a040146,한용우,yuhan@samaneng.com,2,Y,플랜트2부(plant-2) +563cd1cf-849e-4ca8-b530-86871710429c,한은홍,ehhan@samaneng.com,2,Y,조경레저부(landscape-leisure) +3bf7b90c-e1c3-46d3-9c41-6bc53f93838a,한재욱,jwhan@samaneng.com,2,Y,플랜트2부(plant-2) +f639bbad-8129-4f3f-b148-14a776f44d34,한재형,jhhan@samaneng.com,2,Y,수자원1부(water-resources-1) +4ba803c1-d1a0-4d32-a043-2c25e0186500,한정규,jghan@samaneng.com,2,Y,기획부(planning) +372b48fc-3870-4c23-89fb-7ae0f98bd9a3,한정식,jshan@samaneng.com,2,Y,수력부(hydropower) +82cc7064-49dd-43ba-b409-c41a0ca3eca3,한정주,jjhan1@samaneng.com,2,Y,CM사업부(cm-division) +a10d6f9f-93e2-4daa-82f1-290a185583c6,한주영,jyhan1@samaneng.com,2,Y,물환경3부(water-environment-3) +6969a801-910e-4fbe-bcc6-e0e54b88daf5,한준영,jyhan@samaneng.com,2,Y,플랜트2부(plant-2) +b141e8ed-200d-4df9-98e0-f652e34e2c9c,한지훈,jhhan1@samaneng.com,2,Y,도시개발부(urban-development) +2a19e3f0-02d4-4a87-9530-9a03d6053ba6,한창학,chhan@samaneng.com,2,Y,플랜트2부(plant-2) +e6d04423-81bc-45d7-b408-a85904390c1c,한택림,trhan@samaneng.com,2,Y,플랜트2부(plant-2) +050beb86-f9c0-4da0-abef-9dd219639c28,한하람,hlhan@samaneng.com,2,Y,CM사업부(cm-division) +3d144843-839a-477f-a89d-5ec44f6fc458,함덕재,djham@samaneng.com,2,Y,철도2부(railway-2) +0b87ec32-5bf1-4dd8-b339-319dfcdd966d,함해운,huham@samaneng.com,2,Y,구조부(structures) +b7a1eab6-224e-4097-9101-83c2314b2fec,함홍일,hiham@samaneng.com,2,Y,구조부(structures) +947bc01a-1b5b-4691-a93a-4c6f874efea0,허동우,dwheo@samaneng.com,2,Y,플랜트2부(plant-2) +8e7e9166-7546-4893-9f25-0c905b5f85e6,허두홍,dhhur@samaneng.com,2,Y,안전품질관리실(safety-quality) +55f420e6-b07b-4e55-a7f9-a0d4ad587f8f,허만혁,mhhur@samaneng.com,2,Y,플랜트2부(plant-2) +1e52f79c-b898-4b69-9511-f9a1aa8993e5,허봉주,bjher@samaneng.com,2,Y,CM사업부(cm-division) +6af92202-d267-47a0-9648-ee9833232219,허성무,smhuh@samaneng.com,2,Y,철도1부(railway-1) +c5f54b25-3e3b-41ef-90f0-ef102cbe711c,허세욱,swheo@samaneng.com,2,Y,CM사업부(cm-division) +a6e4fb35-ef88-44c8-88fa-2905e7196389,허승,shur@samaneng.com,2,Y,대외협력팀(external-relations) +0ca0b31e-a3ca-438d-8ee4-76804cbf9cf1,허영회,yhhuh@samaneng.com,2,Y,지반터널부(geotech-tunnel) +37b5b31f-74ce-4787-a5f2-201461c32761,허용화,yhheo@samaneng.com,2,Y,플랜트2부(plant-2) +78dbc4a4-6456-4b61-be4b-d477b6c20518,허욱,wheo@samaneng.com,2,Y,구조부(structures) +94858918-2b49-499c-8c86-82dd09eab9af,허정근,jkheo@samaneng.com,2,Y,플랜트2부(plant-2) +5a9f8547-d19c-4ea6-b956-71a28c1f7d2a,허준호,jhheo1@samaneng.com,2,Y,수자원2부(water-resources-2) +1e26d3eb-e7a6-4e62-9afb-422b52c80f8f,허진경,jkhuh@samaneng.com,2,Y,CM사업부(cm-division) +8c912053-56c4-48ec-93b5-f84027a97f4e,허창택,ctheo@samaneng.com,2,Y,CM사업부(cm-division) +dbf055f0-9382-41c9-9e78-8ebdba970874,허한구,hgher@samaneng.com,2,Y,CM사업부(cm-division) +94ed703f-72aa-4a16-b4fe-11b47dd53c23,허현,hheo@samaneng.com,2,Y,플랜트2부(plant-2) +8c784ede-f0dd-4db6-add5-f5505fb841d8,허후,hhuh@samaneng.com,2,Y,CM사업부(cm-division) +071f3e14-2191-411a-bd82-91c70496115b,허훈,hhun@samaneng.com,2,Y,철도2부(railway-2) +de93fb65-19c1-477b-b73f-c55c21063060,현기림,krhyun@samaneng.com,2,Y,물환경1부(water-environment-1) +cccb2fff-7b6b-47d0-8494-e48a91e00d64,현도현,dhhyun@samaneng.com,2,Y,물환경3부(water-environment-3) +0c2c70a0-d39a-4792-b74e-1ac053b12211,현민종,mjhyun@samaneng.com,2,Y,CM사업부(cm-division) +93457498-900b-41ac-a567-95933b2e9eff,현종내,jnhyun@samaneng.com,2,Y,수자원1부(water-resources-1) +71f1d301-ca4a-4eee-9ec1-01f44b28a7c2,형남석,nshyung@samaneng.com,2,Y,플랜트2부(plant-2) +ecf765df-6980-42d8-9124-8d2b0c9adc91,호샘물,smho@samaneng.com,2,Y,CM사업부(cm-division) +54150eb3-a8d3-4039-8a77-c376ab271013,홍경의,kehong@samaneng.com,2,Y,PQ팀(pq-team) +0ef8cb6f-ade2-45dd-8af8-2422bf85f3c9,홍경표,kphong@samaneng.com,2,Y,플랜트1부(plant-1) +75676056-b83d-43f4-b943-ead75ea28ab9,홍관영,kyhong@samaneng.com,2,Y,항만부(harbor) +967d54e4-0857-4d4b-b990-fcb85067cc57,홍균표,kphong1@samaneng.com,2,Y,플랜트2부(plant-2) +63b50c40-a034-41eb-8a60-b73f5ac10b7e,홍기석,kshong@samaneng.com,2,Y,플랜트2부(plant-2) +f2bd3b27-6ea3-4913-b53d-5d30a18cdc8d,홍기훈,khhong@samaneng.com,2,Y,대외협력팀(external-relations) +16fdf54f-f298-47c9-a76b-f4d2792a0606,홍도균,dghong@samaneng.com,2,Y,물환경2부(water-environment-2) +819618c2-45ca-4646-b69a-aa255b241006,홍두표,dphong@samaneng.com,2,Y,도로부(road) +3067f526-3903-429d-8930-912127beec80,홍만기,mkhong@samaneng.com,2,Y,CM사업부(cm-division) +dfcd03f5-172e-4f54-816c-106b55675862,홍만표,mphong@samaneng.com,2,Y,수자원2부(water-resources-2) +41f5e8f3-c5d7-4cd7-aa57-d69701145d94,홍석찬,schong@samaneng.com,2,Y,도로부(road) +760f7fdb-363a-4ed3-b94b-390ae8520e6e,홍성덕,sdhong1@samaneng.com,2,Y,철도2부(railway-2) +110785d4-28b0-41b8-94cb-899e9e5bf3d1,홍성돈,sdhong@samaneng.com,2,Y,플랜트2부(plant-2) +62d463cb-c034-4cd9-aef7-62a346d353f6,홍성빈,sbhong@samaneng.com,2,Y,인사총무부(hr-admin) +34a138a5-94f4-499f-b95f-6c47e72b84d4,홍성일,sihong@samaneng.com,2,Y,CM사업부(cm-division) +11971347-c3fc-43a6-885e-212ac22ed020,홍승호,shhong@samaneng.com,2,Y,플랜트2부(plant-2) +c3f57fe3-6af4-41cf-b9dd-bf415897c84e,홍용의,yehong@samaneng.com,2,Y,물환경2부(water-environment-2) +16c91297-ab54-4fa4-8459-dbd79e223404,홍원표,wphong@samaneng.com,2,Y,플랜트2부(plant-2) +15e01909-57ce-4c45-9087-0b3c3cb39532,홍윤기,ykhong@samaneng.com,2,Y,CM사업부(cm-division) +eeb1fc7b-e2de-484b-aff4-d28c21c4bda8,홍윤정,yjhong@samaneng.com,2,Y,플랜트1부(plant-1) +89336b21-6db0-4e19-965d-9914f2f5e631,홍익표,iphong@samaneng.com,2,Y,CM사업부(cm-division) +feb8437c-a633-4fb9-9864-1be93b49656d,홍정우,jwhong1@samaneng.com,2,Y,CM사업부(cm-division) +49fe3fac-6698-447f-b587-2c6b596d4293,홍정우,jwhong@samaneng.com,2,Y,항만부(harbor) +ea9622b0-bdaa-4133-ae89-ab0080a4bf88,홍종성,jshong1@samaneng.com,2,Y,철도2부(railway-2) +07b6ba0e-9fb4-46d6-9509-b789b62b680f,홍준기,jkhong@samaneng.com,2,Y,환경평가부(environment-assessment) +869ea65e-0579-4c87-90c3-c99b822806b6,홍준영,jyhong1@samaneng.com,2,Y,철도1부(railway-1) +638e70d0-43eb-40b7-8c45-2b315e164735,홍진엽,jyhong@samaneng.com,2,Y,플랜트2부(plant-2) +98b74ebb-e50a-494c-8e09-1f2e9a1f988e,홍창선,cshong1@samaneng.com,2,Y,물환경1부(water-environment-1) +3bfc0fec-6dcc-4360-8976-678347575e78,홍창수,cshong@samaneng.com,2,Y,CM사업부(cm-division) +8838a929-f134-4adc-9494-e1da1255b0a5,홍창오,cohong@samaneng.com,2,Y,수자원2부(water-resources-2) +c0e314de-c571-4407-9cb3-8b947f2dabe5,홍창의,cehong@samaneng.com,2,Y,플랜트2부(plant-2) +cf5eb409-f00c-46b4-9cfd-ec13cc44e793,홍현표,hphong@samaneng.com,2,Y,수자원2부(water-resources-2) +4a77d4b4-3185-4a93-949f-c7a610b9e8a1,황건욱,kwhwang1@samaneng.com,2,Y,물환경1부(water-environment-1) +8fa13de1-174b-4761-bc39-626a9c2e76d7,황경우,kwhwang@samaneng.com,2,Y,수자원2부(water-resources-2) +6074b497-a30a-4a87-ad75-3be9f150a4cc,황길용,gyhwang@samaneng.com,2,Y,CM사업부(cm-division) +e7c57f8e-d436-4004-abd9-28c8495caef1,황동규,dkhwang@samaneng.com,2,Y,지반터널부(geotech-tunnel) +34ab5ecc-1b85-430b-8607-332cd20ee44e,황서우,swhwang@samaneng.com,2,Y,CM사업부(cm-division) +2f8622b8-7333-4437-8a2e-e254ebfc85be,황윤성,yshwang@samaneng.com,2,Y,수자원1부(water-resources-1) +66a8f8ba-3fbe-481b-806a-3476a167d4d4,황인백,ibhwang@samaneng.com,2,Y,철도2부(railway-2) +58183ead-4ab2-4d22-93f9-bddb6140c33d,황인성,ishwang@samaneng.com,2,Y,물환경3부(water-environment-3) +d3e4811a-9cef-42e1-8dd1-99649d80aae1,황재민,jmhwang@samaneng.com,2,Y,구조부(structures) +b1df8524-1e91-4f65-9733-27470932a5af,황준호,jhhwang1@samaneng.com,2,Y,CM사업부(cm-division) +28f81f74-f281-4b2e-9e54-d90fc28da3cb,황지영,jyhwang@samaneng.com,2,Y,CM사업부(cm-division) +346e9bea-0741-425b-95e5-b214537c846f,황태진,tjhwang@samaneng.com,2,Y,CM사업부(cm-division) +f9eb1507-cefb-40a9-8a34-abf02886e824,황하수,hshwang1@samaneng.com,2,Y,물환경2부(water-environment-2) +69c2ab47-806b-4155-b00f-b53ebc373e61,황혜정,hjhwang2@samaneng.com,2,Y,CM사업부(cm-division) +70440976-5186-4f8f-b10e-2134885eded3,황혜진,hjhwang1@samaneng.com,2,Y,수자원2부(water-resources-2) +ba92e160-684c-4705-8b65-ff6087979b24,공병승,bskong@samaneng.com,1,N, +e8ce81d7-f682-4f7b-8ea8-75de62eac7ea,곽병구,bgkwak1@samaneng.com,1,N, +f3469d30-5c83-4171-b71e-93509feb5873,권현진,hjkwon2@samaneng.com,1,N, +26bc52b9-8e06-4a6d-935d-e857500dfaf3,김대수,dskim@samaneng.com,1,N, +3bf6cd28-480a-414e-8aae-62fddc6215ab,김봉식,bskim5@samaneng.com,1,N, +d6283634-9159-4ecd-b121-930b952b3ca5,김정만,jmkim1@samaneng.com,1,N, +995a96bc-ec0b-45a0-a780-d0a8198af86c,박승양,sypark@samaneng.com,1,N, +a1b4a6ea-d783-43f2-8ded-dd9400c9dd73,박호식,hspark3@samaneng.com,1,N, +63e8ad9f-2b6f-4faa-b8ae-3d47875748f5,서동석,dsseo1@samaneng.com,1,N, +bfefd442-f625-4537-8e72-56f919764ea1,서정택,jtseo@samaneng.com,1,N, +a5226e20-64a6-4882-8650-b1bd021fd925,신정하,jhshin2@samaneng.com,1,N, +fdbe4d03-221c-4966-b37e-fb4f8557420e,여형구,hgyeo@samaneng.com,1,N, +59aa19b6-3223-48e8-825c-ec0b8ab342df,정갑균,ggjeong@samaneng.com,1,N, +56ee2c75-0a33-440e-9852-7cb02d62d482,정홍섭,hsjeong2@samaneng.com,1,N, +c54a8119-e1b2-4767-90ca-d45b2eac65f8,조호연,hycho@samaneng.com,1,N, +fa3d0d72-e1cc-4101-8e95-dbe13a561a4f,최대선,dschoi@samaneng.com,1,N, +d0209fc9-dfbe-4411-ada2-3d02929f6b99,최동식,dschoi16@samaneng.com,1,N, diff --git a/docs/references/saman_current_app_direct_employees_summary_2026-07-16.txt b/docs/references/saman_current_app_direct_employees_summary_2026-07-16.txt new file mode 100644 index 0000000..fb6c6fb --- /dev/null +++ b/docs/references/saman_current_app_direct_employees_summary_2026-07-16.txt @@ -0,0 +1,37 @@ +삼안 직접 소속 판정 요약 (2026-07-16) +selected_tenant_name=삼안 +selected_tenant_slug=saman +selected_tenant_memberCount_raw=0 +selected_tenant_totalMemberCount_raw=None +current_app_direct_employee_count=1862 + +[현재 앱 직접 소속 판정식] +employee.tenantSlug == selectedTenant.slug +AND (employee.department is empty OR employee.department == selectedTenant.name) + +[이번 삼안 데이터에서 걸린 이유] +- department_empty: 1862 + +[직급 상위 20] +- : 1845 +- 부사장: 14 +- 사장: 1 +- 이사: 1 +- 회장: 1 + +[직위 상위 20] +- : 1861 +- 대표이사: 1 + +[판단 메모] +- 1862명 전원이 source_tenant_slug=saman에서 내려온 members다. +- 1862명 전원의 employee_department_raw가 빈 문자열이다. +- 따라서 현재 앱 로직에서는 1862명 전원이 직접 소속으로 분류된다. +- 이 집합에서 직위가 확인되는 값은 대표이사 1건뿐이며, 나머지 1861건은 직위가 비어 있다. + + +[대안별 예상 인원 수] +- 현재 앱 직접 소속 규칙 유지: 1862명 +- 다른 하위조직 membership이 없는 루트 전용 인원만 사용: 17명 +- 임원/대표이사급만 사용: 17명 +- 이번 삼안 데이터에서는 `루트 전용 17명`과 `임원/대표이사급 17명`이 동일 집합이다. diff --git a/docs/references/saman_root_only_members_2026-07-16.csv b/docs/references/saman_root_only_members_2026-07-16.csv new file mode 100644 index 0000000..d4cf244 --- /dev/null +++ b/docs/references/saman_root_only_members_2026-07-16.csv @@ -0,0 +1,18 @@ +employee_id,employee_name,employee_email,membership_count_across_tenants,has_non_saman_membership,non_saman_memberships +ba92e160-684c-4705-8b65-ff6087979b24,공병승,bskong@samaneng.com,1,N, +e8ce81d7-f682-4f7b-8ea8-75de62eac7ea,곽병구,bgkwak1@samaneng.com,1,N, +f3469d30-5c83-4171-b71e-93509feb5873,권현진,hjkwon2@samaneng.com,1,N, +26bc52b9-8e06-4a6d-935d-e857500dfaf3,김대수,dskim@samaneng.com,1,N, +3bf6cd28-480a-414e-8aae-62fddc6215ab,김봉식,bskim5@samaneng.com,1,N, +d6283634-9159-4ecd-b121-930b952b3ca5,김정만,jmkim1@samaneng.com,1,N, +995a96bc-ec0b-45a0-a780-d0a8198af86c,박승양,sypark@samaneng.com,1,N, +a1b4a6ea-d783-43f2-8ded-dd9400c9dd73,박호식,hspark3@samaneng.com,1,N, +63e8ad9f-2b6f-4faa-b8ae-3d47875748f5,서동석,dsseo1@samaneng.com,1,N, +bfefd442-f625-4537-8e72-56f919764ea1,서정택,jtseo@samaneng.com,1,N, +a5226e20-64a6-4882-8650-b1bd021fd925,신정하,jhshin2@samaneng.com,1,N, +fdbe4d03-221c-4966-b37e-fb4f8557420e,여형구,hgyeo@samaneng.com,1,N, +59aa19b6-3223-48e8-825c-ec0b8ab342df,정갑균,ggjeong@samaneng.com,1,N, +56ee2c75-0a33-440e-9852-7cb02d62d482,정홍섭,hsjeong2@samaneng.com,1,N, +c54a8119-e1b2-4767-90ca-d45b2eac65f8,조호연,hycho@samaneng.com,1,N, +fa3d0d72-e1cc-4101-8e95-dbe13a561a4f,최대선,dschoi@samaneng.com,1,N, +d0209fc9-dfbe-4411-ada2-3d02929f6b99,최동식,dschoi16@samaneng.com,1,N, diff --git a/docs/review_android_physical_device_transition_2026-07-08.md b/docs/review_android_physical_device_transition_2026-07-08.md new file mode 100644 index 0000000..9d64b7e --- /dev/null +++ b/docs/review_android_physical_device_transition_2026-07-08.md @@ -0,0 +1,204 @@ +# Android 공기계 로컬 USB 테스트 전환 검토 + +작성일: 2026-07-08 +상태: 검토 완료 + +## 1. 목적 + +기존 Windows Android Studio emulator + WSL/Docker Flutter 기반 테스트는 유지하되, 앞으로의 기본 수동/통합 테스트 경로를 "집에서 가져온 Android 공기계 + 로컬 PC USB 연결" 방식으로 전환할 수 있는지 검토한다. + +이번 검토의 범위는 아래와 같다. + +- 현재 저장소에서 emulator 전용 가정이 어디에 있는지 확인 +- 공기계 연결 방식으로 바꿀 때 유지 가능한 코드와 추가 필요한 보강점을 구분 +- 실제 전환 시 가장 작은 변경 경로를 제안 + +## 2. 결론 요약 + +- 앱 코드 자체는 공기계 테스트로 전환 가능한 구조다. 실행 시점에 `TDC114_API_BASE`를 `--dart-define`으로 주입하는 방식이라 target만 안정적으로 잡히면 emulator와 device를 공용으로 사용할 수 있다. +- 현재 가장 강하게 emulator에 묶여 있는 부분은 앱 로직이 아니라 운영 스크립트와 문서다. +- 공기계 전환의 핵심 이점은 Windows emulator portproxy, Docker local ADB, remote ADB server, VM service dynamic port 문제를 대부분 피할 수 있다는 점이다. +- 다만 실기기에서는 emulator 전용 주소 `10.0.2.2`를 쓸 수 없고, 로컬 HTTP 접근은 Android cleartext 정책에 막힐 가능성이 높다. +- 따라서 "기존 emulator 코드는 유지"하면서도, 앞으로는 실기기용 env/체크 스크립트/실행 절차를 별도로 추가하는 방식이 가장 안전하다. + +## 3. 현재 코드/스크립트 구조에서 확인한 사항 + +### 3.1 target 선택 자체는 이미 공용화되어 있음 + +- `scripts/integration_tests.sh` + - `TDC114_FLUTTER_DEVICE_ID` 또는 `TDC114_ADB_CONNECT_ADDRESS`가 있으면 해당 target으로 실행한다. + - 즉, Flutter가 실기기를 인식하기만 하면 integration test 명령 자체는 재사용 가능하다. +- `scripts/manual-postlogin-run.sh` + - `TDC114_FLUTTER_DEVICE_ID` 또는 `TDC114_ADB_CONNECT_ADDRESS` 기반으로 `flutter run -d `를 실행한다. + - 수동 점검 경로도 공기계 전환에 재사용 가능하다. +- `scripts/flutter-docker.sh` + - `ADB_SERVER_SOCKET`, `TDC114_ADB_CONNECT_ADDRESS`를 Docker에 전달한다. + - 구조상 device 연결 경로도 수용할 수 있다. + +### 3.2 실제로는 preflight와 운영 정책이 emulator 기준임 + +- `scripts/check-android-emulator-env.sh` + - 이름부터 emulator 전용이다. + - Windows Android Studio, Device Manager, portproxy, emulator GUI 복구 절차를 전제로 한다. +- `scripts/startup.sh` + - 기본 Android precheck 스크립트가 `check-android-emulator-env.sh`로 고정돼 있다. +- 문서 다수 + - `docs/checklist_morning_startup_runtime_2026-07-03.md` + - `docs/policy_android_studio_wsl_adb_2026-07-03.md` + - `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` + - 위 문서들은 현재 운영 중심축이 emulator임을 보여준다. + +### 3.3 emulator 전용 API 주소 가정이 남아 있음 + +- `scripts/integration_tests.sh` + - bootstrap용 base URL에서 `10.0.2.2 -> 127.0.0.1` 치환을 수행한다. +- `scripts/manual-postlogin-run.sh` + - 동일하게 `10.0.2.2 -> 127.0.0.1` 치환을 수행한다. +- 문서 전반 + - emulator env는 `TDC114_API_BASE=http://10.0.2.2:5000`을 표준으로 본다. + +이 부분은 "실기기에서 무엇을 쓸지"만 정하면 큰 문제는 아니다. 실기기는 아래 둘 중 하나면 된다. + +- `adb reverse tcp:5000 tcp:5000` 후 `http://127.0.0.1:5000` +- 같은 LAN에서 `http://:5000` + +## 4. 공기계 전환 시 기대 효과 + +### 4.1 사라지거나 크게 줄어드는 문제 + +- Windows emulator GUI 상태 의존 +- `5037` ADB server 공유 문제 +- `5555`/`5557`/`5559` 같은 emulator adbd portproxy 관리 +- Docker 내부 local ADB key와 Windows ADB key 불일치 +- remote Windows ADB server가 만든 VM service dynamic port가 Docker localhost와 어긋나는 문제 + +즉, 지금까지 반복된 문제의 상당수는 "앱" 문제가 아니라 "Windows emulator를 WSL/Docker Flutter에서 원격으로 다루는 구조"에서 생겼다. USB 실기기는 이 복잡도를 상당히 낮춘다. + +### 4.2 새로 관리해야 하는 문제 + +- 공기계의 USB 디버깅/RSA 승인 상태 +- `adb reverse` 재설정 필요 여부 +- 단말과 PC가 같은 네트워크인지 여부(LAN IP 방식일 때) +- Android의 cleartext HTTP 허용 여부 + +## 5. 가장 중요한 기술 리스크 + +### 5.1 Android cleartext HTTP 차단 가능성 + +현재 `app/android/app/src/main/AndroidManifest.xml`에는 아래가 없다. + +- `android:usesCleartextTraffic="true"` +- debug용 `network_security_config` + +로컬 Baron API는 현재 문서와 스크립트 기준으로 주로 `http://127.0.0.1:5000`, `http://10.0.2.2:5000`, `http://:5000`를 사용한다. 실기기에서 debug APK를 띄웠을 때 Android 버전에 따라 cleartext가 차단될 수 있다. + +따라서 공기계 전환 전에 가장 먼저 확인할 항목은 이것이다. + +1. 공기계에서 `flutter run --dart-define=TDC114_API_BASE=http://127.0.0.1:5000` 또는 LAN IP로 실행 +2. 로그인/디렉토리 API 호출이 실제로 되는지 확인 +3. 차단되면 debug 전용 cleartext 허용 설정 추가 + +### 5.2 `adb reverse`와 Docker 컨테이너 내부 ADB의 관계 + +실기기에서 가장 단순한 API 접근 방식은 `adb reverse tcp:5000 tcp:5000`이다. 다만 현재 테스트 명령은 `scripts/flutter-docker.sh`를 통해 Docker 컨테이너 안에서 실행되는 경우가 많다. + +검토 시점 기준으로 확인된 점: + +- `flutter drive`/`flutter run`은 Docker 내부에서 수행된다. +- `adb reverse`를 누가 실행하느냐에 따라 적용 대상이 달라질 수 있다. + +따라서 실무상 가장 안전한 기준은 아래 순서다. + +1. 먼저 Windows 또는 WSL host에서 `adb devices`로 공기계가 `device` 상태인지 확인 +2. 같은 ADB 경로에서 `adb reverse tcp:5000 tcp:5000` 실행 +3. 이후 Docker Flutter가 동일 device를 보는지 확인 + +만약 Docker 내부 ADB와 host ADB가 서로 다른 서버/세션을 쓰면 `adb reverse`가 예상대로 먹지 않을 수 있다. 그 경우에는 LAN IP 방식을 백업 경로로 잡는 것이 안전하다. + +## 6. 변경 영향 검토 + +### 6.1 그대로 재사용 가능한 것 + +- `app/` 내부 Dart 앱 코드 대부분 +- `app/integration_test/app_smoke_test.dart` +- `app/test_driver/integration_driver.dart` +- `scripts/api-smoke.sh` +- `scripts/check-baron-api-env.sh` +- `scripts/integration_tests.sh`의 기본 실행 구조 +- `scripts/manual-postlogin-run.sh`의 post-login seed 구조 + +### 6.2 공기계 기준으로 별도 추가하는 편이 좋은 것 + +- 실기기 전용 env 예시 + - `scripts/.env.android-device.local`는 이미 문서상 가정만 있고 tracked example은 부족하다. +- 실기기 preflight 스크립트 + - 예: `scripts/check-android-device-env.sh` +- 실기기 실행 가이드 문서 + - USB 디버깅, RSA 승인, `adb reverse`, LAN IP fallback 포함 + +### 6.3 나중에 일반화하면 좋은 것 + +- `check-android-emulator-env.sh`를 유지한 채, 상위 래퍼 `check-android-target-env.sh`를 만들어 + - `TDC114_ANDROID_TARGET_KIND=emulator|device` + - 또는 env 유무 기준으로 분기 +- `startup.sh`에서 precheck script를 교체 가능하게 유지하되, 기본 정책 문구를 "Android target" 기준으로 일반화 + +## 7. 권장 전환 방식 + +기존 emulator 코드는 그대로 두고 아래 순서로 가는 것을 권장한다. + +1. 이번 테스트까지만 기존 emulator 경로 사용 +2. 그 다음부터는 공기계를 기본 target으로 사용 +3. 초기에는 `manual-postlogin-run.sh` 중심으로 수동 기능점검부터 안정화 +4. 그 다음 `integration_tests.sh`를 공기계 target으로 재사용 +5. 충분히 안정화된 뒤에만 `startup.sh` 기본 Android precheck를 실기기 기준으로 확장 + +## 8. 최소 실행 초안 + +### 8.1 공기계 수동 점검 + +```bash +# 1) 공기계 USB 연결 후 host에서 device 확인 +adb devices + +# 2) reverse 방식 선택 시 +adb reverse tcp:5000 tcp:5000 + +# 3) 실기기용 env 준비 +# scripts/.env.android-device.local +TDC114_API_BASE=http://127.0.0.1:5000 +TDC114_SMOKE_PHONE=010xxxxxxxx + +# 4) 앱 실행 +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local \ +TDC114_FLUTTER_DEVICE_ID= \ +./scripts/manual-postlogin-run.sh +``` + +### 8.2 공기계 integration test + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local \ +TDC114_FLUTTER_DEVICE_ID= \ +./scripts/integration_tests.sh +``` + +LAN IP 방식을 쓰는 경우 env의 `TDC114_API_BASE`만 `http://:5000`로 바꾼다. + +## 9. 최종 판단 + +공기계 전환은 타당하다. 현재 막힌 문제의 대부분은 emulator 자체보다도 "Windows emulator + WSL/Docker Flutter + 원격 ADB/portproxy" 조합에서 발생했다. + +따라서 다음 기본 방침은 합리적이다. + +- emulator 경로는 보존 +- 앞으로의 기본 테스트는 공기계 USB 연결 방식으로 전환 +- 초기 목표는 "수동 post-login 점검 안정화" +- 그 다음 "integration_tests.sh 공기계 재사용" + +단, 실전 전환 전에 반드시 먼저 확인할 항목은 아래 2개다. + +1. 공기계에서 local HTTP API가 cleartext 차단 없이 실제 호출되는가 +2. `adb reverse`가 Docker Flutter 실행 경로에서도 안정적으로 유지되는가 + +이 2개가 통과하면 emulator 대비 운영 복잡도는 확실히 낮아질 가능성이 높다. diff --git a/docs/review_baron_sso_repo_commit_policy_2026-07-15.md b/docs/review_baron_sso_repo_commit_policy_2026-07-15.md new file mode 100644 index 0000000..fb38fb4 --- /dev/null +++ b/docs/review_baron_sso_repo_commit_policy_2026-07-15.md @@ -0,0 +1,159 @@ +# Baron SSO 레포/커밋 운영 검토 + +작성일: 2026-07-15 +상태: review + +목적: `tdc114plus` 앱 저장소와 Baron SSO 관련 소스코드의 저장소 분리 여부, 커밋 정책, 로컬 빌드 부담 완화 방안을 함께 검토한다. + +## 1. 현재 상태 요약 + +- `tdc114plus`는 현재 별도 Gitea 저장소(`https://gitea.hmac.kr/kevin/tdc114plus.git`)에서 관리 중이다. +- 앱 저장소의 정책 문서에는 이미 `Baron SSO backend/orgFront 변경과 tdc114plus Flutter 앱 변경은 저장소와 커밋을 분리한다`는 원칙이 들어 있다. +- Baron SSO 참조 기준 문서에는 공식 Baron SSO 저장소 `origin/dev`를 기준으로 보고, 실제 수정이 필요하면 `/home/ubuntu/workspace/baron-sso-tdc114plus-api` worktree의 `feature/tdc114plus-api` 브랜치에서 작업하도록 정리돼 있다. +- 즉, 방향성 자체는 이미 “분리 관리” 쪽으로 잡혀 있으나, Gitea 상의 장기 운영 단위와 커밋 연결 규칙은 아직 명문화가 약하다. + +## 2. 검토 결론 + +### 2.1 Baron SSO 관련 별도 Gitea 저장소 생성 필요 여부 + +결론: + +- "완전히 새로운 독립 저장소"를 지금 즉시 만들어야 하는 수준의 필수 사항은 아니다. +- 다만 `tdc114plus` 대응용 Baron SSO 변경을 장기간 추적할 계획이라면, Gitea 상에서 팀이 명확히 보이는 관리 단위는 꼭 두는 편이 좋다. + +권장안: + +1. 최우선 권장: 기존 Baron SSO 공식 저장소를 기준으로 하고, 팀/개인 fork에서 `feature/tdc114plus-*` 브랜치 규칙으로 관리한다. +2. 차선 권장: Baron SSO 수정이 계속 누적되고 담당자/릴리스 이력이 분리되어야 하면, Gitea에 `baron-sso-tdc114plus` 성격의 전용 fork 또는 전용 미러 저장소를 둔다. +3. 비권장: Baron SSO 코드를 `tdc114plus` 앱 저장소 안으로 복사하거나 subtree/submodule처럼 강결합해 같이 버전 관리한다. + +판단 이유: + +- 현재 문서와 스크립트는 이미 Baron SSO를 외부 worktree로 전제하고 있다. +- 앱 저장소와 Baron SSO 저장소를 섞으면 커밋 단위, 리뷰 단위, 배포 책임이 흐려진다. +- 반대로 완전 별도 저장소를 새로 만들더라도 upstream 동기화 책임이 생기므로, 운영 이점이 분명할 때만 택하는 것이 좋다. + +### 2.2 커밋 정책 수립 필요 여부 + +결론: + +- 필요하다. +- 특히 앱 저장소와 Baron SSO 저장소를 동시에 건드리는 작업이 이미 발생할 수 있으므로, "무엇을 한 커밋으로 묶고 무엇을 분리할지"를 바로 정해야 한다. + +## 3. 권장 운영 정책 + +### 3.1 저장소 경계 정책 + +- `tdc114plus` 저장소: + - Flutter 앱 코드 + - 앱 문서 + - 앱 테스트/빌드 스크립트 + - 앱에서만 사용하는 mock/contract 코드 +- Baron SSO 저장소 또는 fork: + - backend + - orgFront + - userFront + - 신규 앱 지원용 API endpoint, DTO, auth 연동 코드 + +금지: + +- Baron SSO 소스 파일을 `tdc114plus` 저장소로 복사 반입 +- APK, 로그 덤프, 대용량 캐시 산출물을 tracked 파일로 커밋 +- 한 커밋에 앱 코드와 Baron SSO 서버 코드를 동시에 포함 + +### 3.2 브랜치 정책 + +- `tdc114plus`: + - `main`: 항상 analyze/test 통과 상태만 반영 + - 기능 작업: `feature/-` + - 문서/운영 작업: `docs/`, `ops/` +- Baron SSO: + - 기준 브랜치: `origin/dev` + - tdc114plus 전용 작업: `feature/tdc114plus-api`, `feature/tdc114plus-auth`, `fix/tdc114plus-org-context` + +### 3.3 커밋 단위 정책 + +한 커밋에는 아래 중 한 가지 성격만 담는다. + +1. 앱 기능 변경 +2. 앱 리팩터링 +3. 테스트 추가/수정 +4. 문서/운영 스크립트 변경 +5. Baron SSO API 변경 + +권장 규칙: + +- 기능 변경과 포맷 변경을 섞지 않는다. +- 리네임/이동 커밋과 로직 변경 커밋을 가능하면 분리한다. +- APK 빌드 결과물, 캡처 이미지, 임시 로그는 별도 보관하고 git tracked 대상에서 제외한다. +- 앱과 서버를 함께 바꿔야 하면 저장소별로 각각 커밋하고, 커밋 메시지 본문에 상대 저장소 커밋 해시를 남긴다. + +커밋 메시지 예시: + +```text +feat(auth): add hosted login callback handling +``` + +```text +fix(directory): align org-context subtree parsing with swagger +``` + +```text +docs(ops): add Android device startup checklist +``` + +```text +feat(baron-api): add tdc114plus org-context support endpoint +``` + +교차 저장소 작업 시 본문 예시: + +```text +Related-Baron-Commit: abc1234 +Related-App-Commit: def5678 +``` + +### 3.4 main 반영 게이트 + +`tdc114plus` 저장소는 `main` 반영 전에 최소 아래를 권장한다. + +```bash +./scripts/flutter-docker.sh analyze +./scripts/flutter-docker.sh test +``` + +Baron SSO 저장소는 팀 표준 게이트를 따르되, 최소한 아래 둘 중 하나는 남기는 편이 좋다. + +- API smoke 결과 +- 변경 endpoint 수동 검증 로그 또는 문서 링크 + +## 4. 로컬 PC 성능 저하 및 네트워크 끊김 이슈 대응 + +현재 문제: + +- APK 빌드나 대형 파일 변경 작업 중 로컬 PC 자원이 크게 소모되면서 네트워크 접속이 끊긴다. +- 이 경우 원격 작업 세션, 빌드 검증, 로그 수집이 함께 불안정해질 수 있다. + +권장 대응: + +1. APK 빌드와 통합 검증은 로컬 PC보다 현재처럼 Docker/WSL/원격 작업공간 기준으로 우선 수행한다. +2. 로컬 PC는 편집/간단 확인 위주로 쓰고, 무거운 빌드/테스트는 스크립트로 표준화된 원격 환경에서 수행한다. +3. 빌드 결과물은 git에 올리지 말고, 필요 시 릴리스 산출물 저장 위치를 별도로 둔다. +4. `main` 반영 기준을 "로컬에서 한번 실행"이 아니라 "표준 스크립트 실행 결과 확인"으로 바꾼다. +5. 장기적으로는 Gitea 연동 CI 또는 별도 빌드 머신을 두어 APK 생성과 smoke test를 오프로드하는 것이 가장 효과적이다. + +## 5. 바로 실행할 추천안 + +우선순위 순서: + +1. Baron SSO는 새 독립 저장소를 바로 만들기보다, 현재 공식 저장소 + fork/worktree 체계를 팀 표준으로 먼저 확정한다. +2. `tdc114plus`와 Baron SSO 각각에 브랜치 접두사와 커밋 메시지 규칙을 정한다. +3. 교차 저장소 작업 시 서로의 커밋 해시를 본문에 남기는 규칙을 추가한다. +4. `main` 반영 전 검증 명령을 문서상 필수 게이트로 고정한다. +5. APK 빌드는 로컬 PC가 아닌 원격/Docker 기준으로 수행하는 운영 정책을 확정한다. + +## 6. 최종 판단 + +- Baron SSO 관련 코드는 분리 관리가 맞다. +- 다만 "신규 독립 레포 생성"은 필수라기보다 운영 선택지이며, 먼저 fork/worktree + 브랜치 정책만 명확히 해도 상당수 문제가 해결된다. +- 지금 가장 시급한 것은 저장소 추가보다 커밋 경계, 교차 저장소 연결 방식, 빌드 오프로드 정책을 확정하는 일이다. diff --git a/docs/review_tdc114plus_direct_docs_audit_2026-07-10.md b/docs/review_tdc114plus_direct_docs_audit_2026-07-10.md new file mode 100644 index 0000000..42fe904 --- /dev/null +++ b/docs/review_tdc114plus_direct_docs_audit_2026-07-10.md @@ -0,0 +1,51 @@ +# tdc114plus docs 바로 하위 주요 문서 전수 검토 기록 + +작성일: 2026-07-10 +상태: 검토 완료 + +목적: `docs/` 바로 하위 `.md` 문서를 신규 개발 기준에 맞춰 전수 검토하고, 코드 수정 전 적용해야 할 정책/가이드 보정 사항을 기록한다. + +## 1. 검토 기준 + +- 신규 앱은 Baron SSO에 등록되는 별도 모바일 RP다. +- 로그인 기본 방식은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`다. +- Flutter 앱은 headless API를 직접 호출하지 않는다. +- 조직/직원 데이터 기준 원본은 `GET https://sadmin.hmac.kr/api/v1/integrations/org-context`다. +- 조직 drilldown은 `자식 조직이 있으면 하위조직 목록`, `leaf 조직이면 직원 목록`을 따른다. +- 하위조직 카드 인원 수는 직접 소속 수가 아니라 subtree 합산 인원 수를 표시한다. + +## 2. 검토 범위 + +`docs/` 바로 하위 `.md` 31개를 기준으로 검토했다. + +- `00_` 계약/정책/가이드 문서 전체 +- Android/ADB/실기기 운영 체크리스트 +- Baron org-context 참고 문서 +- staging 로그인 시나리오 +- 기존 정책 검토/전환 리뷰 문서 + +하위 폴더(`docs/references`, `docs/test-logs`, `docs/troubleshooting`, `docs/daily-issues`)는 이번 범위에서 제외했다. + +## 3. 확인 결과 + +- 핵심 계약 문서(`00_contract_tdc114plus_api_2026-07-02.md`)는 Hosted Login + PKCE 기준과 일치한다. +- 화면 정책 문서(`00_policy_tdc114plus_screen_feature_2026-07-07.md`)는 leaf/비-leaf 조직 표시 규칙과 subtree 인원 수 정책을 포함하도록 정리되어 있다. +- 외부 API 사용 문서(`00_guide_tdc114plus_external_api_usage_2026-07-03.md`)는 운영 Key를 앱에 넣지 않는다는 원칙과 일치한다. +- org-context 매핑 문서에는 `memberCount`와 `totalMemberCount` 차이를 더 명확히 보강했다. +- 쉬운 설명 문서에는 headless 직접 호출 중심 설명이 남아 있어 Hosted Login + PKCE 기준으로 개정했다. +- staging 검증 시나리오에는 headless API 배포 전제가 남아 있어 Hosted Login + PKCE 검증 기준으로 개정했다. +- Android/ADB/실기기 문서는 현재 USB 실기기 + Windows ADB 서버 공유 운영 기준과 충돌하지 않는다. + +## 4. 이번에 개정한 문서 + +- `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` +- `docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md` +- `docs/guide_baron_org_context_api_reference_2026-07-03.md` +- `docs/guide_new_app_baron_sso_easy_explanation_2026-07-08.md` +- `docs/scenario_staging_baron_sso_login_verification_2026-07-06.md` + +## 5. 코드 수정 판단 + +현재 화면 정책상 `CM본부 -> CM사업부 -> 호남지역총괄본부` 흐름에서 `호남지역총괄본부 0명`은 API 데이터가 leaf 직접 소속 0명이라면 정상일 수 있다. + +다만 코드상 선택 조직의 직원 검색 범위가 선택 조직 자신만 보고 descendant tenant를 포함하지 않는 문제가 있다. 따라서 다음 코드 수정은 `현재 선택 scope의 subtree 전체를 직원 검색 범위로 사용`하도록 보완한다. diff --git a/docs/review_tdc114plus_policy_document_2026-07-07.md b/docs/review_tdc114plus_policy_document_2026-07-07.md new file mode 100644 index 0000000..931f728 --- /dev/null +++ b/docs/review_tdc114plus_policy_document_2026-07-07.md @@ -0,0 +1,87 @@ +# tdc114plus 정책 문서 개편 검토 + +작성일: 2026-07-07 +상태: review v1.0 + +목적: `docs/` 아래 기존 정책/계약/절차 문서가 새로 수립한 `분리형 API 전환 정책` 기준으로 수정 가능한지 검토하고, 문서별 후속 조치 방향을 정리한다. + +관련 기준 문서: + +- `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` + +백업 위치: + +- `/home/ubuntu/workspace/tdc114plus/temp/docs-policy-backup/` + +## 1. 결론 + +- 기존 문서들은 대부분 `수정 가능`하다. +- 다만 전부를 새로 쓰는 것은 아니고, 문서 성격에 따라 `전면 개정`, `부분 개정`, `유지`, `기록 보존`으로 나눠야 한다. +- 특히 `개발 정책`, `API 계약`, `테스트 정책`, `작업 타임테이블`, `외부 API 사용 가이드`는 새 정책 기준으로 반드시 재정렬하는 것이 맞다. +- 반대로 Android 설치/ADB/체크리스트류 문서는 분리형 API 정책과 직접 충돌하지 않으므로 기본 유지가 맞다. + +## 2. 문서별 판정 + +| 문서 | 판정 | 이유 | 권장 조치 | +| --- | --- | --- | --- | +| `docs/00_policy_tdc114plus_development_2026-07-02.md` | 전면 개정 권장 | Baron SSO API 생성 중심 문구가 강하고 Swagger 중심 인터페이스 개발 원칙이 상위 기준으로 드러나지 않음 | 새 정책을 반영해 상위 실행 원칙 문구 재작성 | +| `docs/00_contract_tdc114plus_api_2026-07-02.md` | 전면 개정 권장 | 현재 계약이 Baron SSO 전용 설계와 내부 추정 구조에 많이 기대고 있음 | Swagger 기준 endpoint/DTO 문서로 재작성 | +| `docs/00_policy_tdc114plus_testing_2026-07-02.md` | 부분 개정 권장 | 테스트 구조는 유효하지만 실제 API 연동 기준이 Baron SSO runtime 중심임 | mock 우선, Swagger 계약 검증, remote/mock 전환 테스트 기준 추가 | +| `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` | 부분 개정 권장 | 기존 진행 이력은 보존 가치가 있으나 실행 Phase가 이전 방식 중심으로 적혀 있음 | 새 정책 Phase 기준으로 다음 작업 구간만 재정렬 | +| `docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md` | 부분 개정 권장 | 외부 API 활용 방식 문서이므로 새 정책과 잘 결합 가능 | Swagger 우선 사용 원칙과 data source 분리 기준 추가 | +| `docs/guide_baron_sso_reference_source_2026-07-02.md` | 부분 개정 권장 | 완전 삭제할 문서는 아니지만, 이제는 Baron SSO 코드 참조 문서이지 앱 개발 상위 기준 문서는 아님 | 제목/목적을 `참조용 문서` 성격으로 낮추고 우선순위 하향 | +| `docs/00_policy_tdc114plus_screen_feature_2026-07-07.md` | 부분 개정 가능 | 화면 정책 자체는 유효하지만 일부 용어가 Baron SSO 전제에 묶여 있음 | 화면 규칙은 유지하고 API/세션 관련 표현만 일반화 | +| `docs/dev_env_tdc114plus_setup_plan_2026-07-02.md` | 기록 보존 중심 | 초기 환경 구축 기록 성격이 강하고 현재는 실행 정책 문서라기보다 이력 문서에 가까움 | 원본 유지, 필요 시 현재 환경 기준 별도 문서 신설 | +| `docs/guide_tdc114plus_development_decision_brief_2026-07-01.md` | 기록 보존 중심 | 초기 판단 근거 문서라 현재 정책으로 덮어쓰는 대상이 아님 | 원본 유지 | +| `docs/guide_tdc114plus_script_automation_plan_2026-07-02.md` | 부분 개정 가능 | 자동화 계획은 계속 유효하나 검증 대상을 Swagger 계약 기준으로 보강할 필요가 있음 | smoke/test 분리를 명확히 보강 | +| `docs/policy_android_app_install_execution_2026-07-06.md` | 유지 | API 분리 정책과 직접 충돌 없음 | 유지 | +| `docs/policy_android_studio_wsl_adb_2026-07-03.md` | 유지 | 개발 장비/실행 정책 문서라 독립적임 | 유지 | +| `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` | 부분 개정 가능 | 시나리오는 유효하나 API 대상 URL/테스트 전제가 바뀔 수 있음 | 실제 API 대상 설명만 갱신 | +| `docs/checklist_pre_staging_manual_2026-07-06.md` | 부분 개정 가능 | staging 체크리스트는 유지 가능하나 기준 API가 Swagger 중심으로 바뀌어야 함 | 체크 항목 갱신 | +| `docs/scenario_staging_baron_sso_login_verification_2026-07-06.md` | 부분 개정 가능 | 로그인 검증 흐름은 유효하지만 Baron SSO 내부 구현 전제가 강함 | 인터페이스 계약 기준으로 표현 수정 | +| `docs/checklist_morning_startup_runtime_2026-07-03.md` | 유지 | 운영성 체크리스트라 정책 변경 영향이 낮음 | 유지 | +| `docs/checklist_evening_shutdown_runtime_2026-07-06.md` | 유지 | 운영성 체크리스트라 정책 변경 영향이 낮음 | 유지 | +| `docs/guide_baron_org_context_api_reference_2026-07-03.md` | 참조용 유지 | 특정 외부 연동 참고자료로 쓸 수 있음 | 정책 문서가 아닌 reference로 유지 | +| `docs/guide_baron_sso_org_context_mirror_recovery_request_2026-07-03.md` | 기록 보존 | 이슈 대응 기록 문서임 | 유지 | + +## 3. 우선 개편 대상 + +가장 먼저 손대야 할 문서는 아래 다섯 개다. + +1. `docs/00_policy_tdc114plus_development_2026-07-02.md` +2. `docs/00_contract_tdc114plus_api_2026-07-02.md` +3. `docs/00_policy_tdc114plus_testing_2026-07-02.md` +4. `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` +5. `docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md` + +이유: + +- 새 정책의 실행력은 위 다섯 문서가 실제로 같은 방향을 보느냐에 달려 있다. +- 특히 `개발 정책`과 `API 계약`이 이전 기준에 남아 있으면 이후 코드 작업도 다시 Baron SSO 종속 방식으로 흔들릴 수 있다. + +## 4. 수정 방식 제안 + +권장 순서: + +1. `tdc114plus-development-policy`를 먼저 고친다. +2. 그 다음 `tdc114plus-api-contract`를 Swagger 기준으로 재작성한다. +3. 이후 `tdc114plus-testing-policy`를 mock/contract/real API 3단계 구조로 맞춘다. +4. `tdc114plus-work-progress-timetable`의 다음 작업 구간을 새 Phase 기준으로 정리한다. +5. 마지막으로 `external-api-usage-guide`, `screen-feature-policy`, staging 체크리스트 문서를 정렬한다. + +## 5. 해석 원칙 + +- 기존 문서에 적힌 과거 진행 이력은 가능한 보존한다. +- 다만 앞으로의 실행 기준은 `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md`를 상위 기준으로 둔다. +- Baron SSO 관련 문구가 있어도 `참조`, `연동 대상`, `과거 구현 근거` 수준이면 유지 가능하다. +- Baron SSO 소스 수정 또는 Baron SSO 전용 endpoint 추가를 기본 개발 방식처럼 서술한 부분은 새 정책에 맞춰 수정해야 한다. + +## 6. 다음 문서 작업 제안 + +다음 실제 수정 작업은 아래 순서가 가장 적절하다. + +1. `docs/00_policy_tdc114plus_development_2026-07-02.md` 개정 +2. `docs/00_contract_tdc114plus_api_2026-07-02.md` 개정 +3. `docs/00_policy_tdc114plus_testing_2026-07-02.md` 개정 + +이 세 문서가 먼저 정리되면, 이후 코드 구조 개편도 문서 기준으로 일관되게 진행할 수 있다. diff --git a/docs/scenario_android_emulator_device_integration_test_2026-07-03.md b/docs/scenario_android_emulator_device_integration_test_2026-07-03.md new file mode 100644 index 0000000..e8cd9f6 --- /dev/null +++ b/docs/scenario_android_emulator_device_integration_test_2026-07-03.md @@ -0,0 +1,267 @@ +# Android target 통합테스트 진행 시나리오 + +작성일: 2026-07-03 +상태: v0.1 진행 중 + +목적: `tdc114plus` Flutter 앱의 실제 Baron SSO API 로그인, 직원목록 진입, 플랫폼 액션 수동 검증을 Android 실기기 우선, emulator fallback 기준으로 단계적으로 확인한다. + +## 1. 적용 범위 + +이 시나리오는 아래 작업에 적용한다. + +- Android 실기기 준비 +- Android emulator fallback 준비 +- Android 런타임에서 Baron SSO local API 접근 확인 +- `app/integration_test/` + `app/test_driver/` 기반 Flutter integration test 실행 +- 실제 기기 수동 smoke: 로그인, 직원목록, 전화/문자 버튼, 즐겨찾기 유지 + +Playwright MCP는 이 시나리오의 실행 대상이 아니다. Playwright MCP가 필요한 단계가 오면 테스트 정책에 따라 사용자 확인과 정책 문서 갱신을 먼저 진행한다. + +## 2. 사전 원칙 + +- 전화번호와 token은 명령 출력, 문서, git tracked 파일에 남기지 않는다. +- `scripts/.env.smoke.local`, `scripts/.env.android-emulator.local`, `scripts/.env.android-device.local`은 `.gitignore` 대상이다. +- 기본 테스트 타깃은 Android 실기기다. +- Android emulator에서는 host `127.0.0.1`이 아니라 보통 `10.0.2.2`로 host machine에 접근한다. +- Android 실기기는 `adb reverse` 또는 PC LAN IP 중 하나를 선택한다. +- Flutter 앱 변경 후에는 `./scripts/format-dart.sh`, `./scripts/quality-gate.sh`를 실행한다. +- 테스트 실행 결과는 `docs/test-logs/2026-07-test-execution-log.md`에 누적 기록한다. + +## 3. 진행 체크리스트 + +| 단계 | 상태 | 목적 | 명령/확인 | 완료 기준 | +| --- | --- | --- | --- | --- | +| 0 | 완료 | 시나리오 문서 생성 | 본 문서 작성 | 문서가 `docs/`에 존재 | +| 1 | 완료 | Baron SSO local runtime 준비 확인 | `./scripts/check-baron-api-env.sh` | failure/warning 없이 통과 | +| 1-A | 완료 | `baron_backend` 미실행 시 복구 | Baron SSO API worktree에서 `docker compose up -d backend` | `baron_backend` running/healthy | +| 1-B | 완료 | Ory/UserFront runtime 확인 및 복구 | `docker ps -a`, 필요 시 Ory/UserFront 컨테이너 시작 | `ory_kratos`, `ory_hydra`, `ory_keto`, `ory_oathkeeper`, `ory_postgres`, `baron_userfront` running | +| 2 | 완료 | host 기준 authenticated API smoke 확인 | `./scripts/api-smoke.sh` | phone-login/직원목록/조직도 HTTP 200 | +| 3 | 완료 | Flutter/Docker가 인식하는 device 확인 | `./scripts/flutter-docker.sh devices` | Android target이 표시되거나 부재 원인 확인 | +| 3-A | 완료 | host/WSL ADB 상태 확인 | `adb devices` 또는 `which adb` | ADB 설치/연결 상태 확인 | +| 3-B | 완료 | Android target 준비 | Windows Android Studio emulator 실행 + WSL/Docker에서 ADB 접근 구성 | Flutter devices에 Android target 표시 | +| 4 | 대기 | 실기기용 API 주소 결정 | `scripts/.env.android-device.local` | 실기기에서 접근 가능한 `TDC114_API_BASE` 확정 | +| 4-A | 완료 | Android target Docker ADB 인식 확인 | `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices` | 실기기 또는 fallback emulator 표시 | +| 5 | 완료 | emulator integration test 실행 | `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/integration_tests.sh` | `+3: All tests passed!` | +| 5-B | 완료 | 로그인 완료 가정 기능점검 | `TDC114_SMOKE_ASSUME_LOGGED_IN=1` 기반 세션 bootstrap 후 emulator integration test 실행 | 앱이 post-login 상태에서 직원검색/즐겨찾기/상세 액션 smoke를 통과 | +| 5-A | 완료 | Docker local ADB 방식 검증 | Windows `5555` portproxy + Docker 내부 `adb connect` | integration test runner가 VM service에 연결 | +| 6 | 대기 | 실기기 연결 확인 | `adb devices` 또는 Flutter devices | device 상태 표시 | +| 7 | 대기 | 실기기 API 접근 방식 결정 | `adb reverse tcp:5000 tcp:5000` 또는 PC LAN IP | 실기기 브라우저/API 접근 가능 | +| 8 | 대기 | 실기기 integration test 실행 | `TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local ./scripts/integration_tests.sh` | 로그인 후 직원목록 진입 | +| 9 | 대기 | 플랫폼 액션 수동 smoke | 실제 앱에서 전화/문자 버튼 확인 | 전화/문자 intent가 정상 호출 | +| 10 | 대기 | 즐겨찾기 유지 수동 smoke | 즐겨찾기 토글 후 앱 재실행 | 즐겨찾기 상태 유지 | +| 11 | 대기 | 결과 기록 | 테스트 로그 업데이트 | 성공/실패와 후속 조치 기록 | + +## 4. 환경 파일 예시 + +### 4.1 Host smoke + +기본 파일: + +```text +scripts/.env.smoke.local +``` + +예시: + +```bash +TDC114_API_BASE=http://127.0.0.1:5000 +TDC114_SMOKE_PHONE=010xxxxxxxx +``` + +### 4.2 Android emulator fallback + +기본 파일: + +```text +scripts/.env.android-emulator.local +``` + +예시: + +```bash +TDC114_API_BASE=http://10.0.2.2:5000 +TDC114_SMOKE_PHONE=010xxxxxxxx +``` + +### 4.3 Android 실기기 + +`adb reverse`를 쓰는 경우: + +```bash +TDC114_API_BASE=http://127.0.0.1:5000 +TDC114_SMOKE_PHONE=010xxxxxxxx +``` + +PC LAN IP를 쓰는 경우: + +```bash +TDC114_API_BASE=http://:5000 +TDC114_SMOKE_PHONE=010xxxxxxxx +``` + +## 5. 실패별 분기 + +| 증상 | 의미 | 다음 조치 | +| --- | --- | --- | +| `No supported devices connected.` | Flutter가 실행 가능한 Android target을 못 봄 | USB 디버깅 실기기 확인, 필요 시 Android Studio emulator fallback 실행, Docker/ADB 접근 방식 확인 | +| `Integration tests and unit tests cannot be run in a single invocation.` | 현재 Flutter 버전에서 Android integration을 `flutter test`로 호출함 | `flutter drive --driver=test_driver/integration_driver.dart --target=integration_test/...` 경로로 전환 | +| Linux desktop만 표시됨 | WSL/Docker Flutter는 보이지만 앱에 Linux runner가 없음 | Android target 연결 또는 별도 desktop runner 추가 검토 | +| `adb: command not found` | WSL에 Android platform-tools가 없음 | Windows Android Studio platform-tools를 PATH로 연결하거나 WSL에 Android SDK platform-tools 설치 | +| Windows `adb -a -P 5037 nodaemon server`에서 10048 | 기존 ADB server 또는 다른 프로세스가 5037 포트를 이미 사용 중 | `Get-Process adb`/`Stop-Process`, `netstat -ano | findstr :5037`, `taskkill /PID ... /F` 후 재시도 | +| `WebSocketChannelException`, `127.0.0.1:` connection refused | remote Windows ADB server가 만든 VM service forward가 Docker container localhost와 맞지 않음 | Windows emulator adbd `5555`를 portproxy로 노출하고 Docker 내부 local ADB server에서 `adb connect` 방식 검증 | +| Docker local ADB가 `unauthorized` | Docker container의 ADB key가 emulator에서 승인된 Windows ADB key와 다름 | Windows 사용자 ADB key를 git ignored `.android-adb/`에 복사하고 Docker `/root/.android`로 마운트 | +| integration test 로그인 화면/validation은 통과하지만 real API login test 실패 | 앱/API 문제 또는 backend runtime 중단 가능 | 먼저 `./scripts/api-smoke.sh`로 host authenticated smoke 재확인, 502면 Baron/Ory runtime 복구 | +| API smoke는 통과하지만 integration test login 실패 | Android 런타임에서 API base URL 접근 실패 가능 | emulator는 `10.0.2.2`, 실기기는 `adb reverse` 또는 PC LAN IP 확인 | +| HTTP cleartext 차단 | Android 앱이 `http://` 접근을 막을 수 있음 | Android network security config 또는 manifest 확인 | +| phone-login 401 | 테스트 전화번호가 Baron SSO 등록자와 불일치 | env 파일의 전화번호와 Baron SSO 등록 상태 확인 | +| phone-login 503 | Baron SSO/Ory/Kratos 세션 발급 문제 | backend 로그 확인, 인증 민감 영역으로 별도 검토 | +| backend는 running인데 `kratos`, `keto`, `hydra` DNS 실패 | Ory runtime 컨테이너가 중지됨 | Ory/UserFront 컨테이너 시작 후 runtime 점검 재실행 | +| employee/orgchart 401/403 | token/session/권한 문제 | 앱 세션 저장/전달, backend auth middleware 확인 | + +## 6. 현재 실행 메모 + +- 2026-07-03: 문서 생성. 다음 단계는 1단계 `check-baron-api-env.sh` 실행이다. +- 2026-07-03: 1단계 실행 결과 `baron_backend`가 running 상태가 아니어서 1-A 복구 단계를 추가했다. +- 2026-07-03: 1-A에서 `docker compose up -d backend` 실행 후 1단계 재검증 통과. `baron_backend`, `baron_gateway` running 확인. +- 2026-07-03: 2단계 API smoke에서 phone-login 503 발생. backend 로그에서 `kratos`, `keto`, `hydra`, `oathkeeper` DNS 실패 확인. 1-B Ory/UserFront 복구 단계를 추가했다. +- 2026-07-03: 1-B에서 Ory/UserFront 컨테이너를 시작했다. `baron_backend`, `baron_userfront`, `baron_gateway`, Ory 핵심 컨테이너 running 확인. +- 2026-07-03: 2단계 API smoke 재실행 통과. phone-login, employee list, tenant list, orgchart 모두 HTTP 200. +- 2026-07-03: 3단계 `./scripts/flutter-docker.sh devices` 실행 결과 Docker Flutter는 `Linux desktop`만 인식하고 Android emulator/device는 인식하지 못했다. 3-A ADB 상태 확인 단계를 추가했다. +- 2026-07-03 08:11 KST: 3-A 확인 결과 WSL에 `adb`가 설치되어 있지 않다. `./scripts/integration_tests.sh`는 Linux desktop만 발견했지만 앱에 Linux runner가 없어 `No supported devices connected.`로 종료했다. 3-B Android target 준비 단계가 필요하다. +- 2026-07-03 오전: Windows Android Studio에서 `Medium Phone` Android 15 API 35 emulator를 생성하고 Windows `adb.exe devices`에서 `emulator-5554 device`를 확인했다. +- 2026-07-03 오전: Windows `adb -a -P 5037 nodaemon server`는 기존 ADB server 자동 재기동으로 `10048` 오류가 반복되어 `netsh interface portproxy` 방식으로 전환했다. +- 2026-07-03 오전: 관리자 PowerShell에서 `0.0.0.0:5037 -> 127.0.0.1:5037` portproxy와 방화벽 rule을 추가했다. WSL에서 `172.21.128.1:5037` 연결 성공, Docker Flutter 내부 `adb devices`에서 `emulator-5554 device` 확인. +- 2026-07-03 10:22 KST: `scripts/integration_tests.sh`를 실시간 출력 방식으로 개선한 뒤 emulator integration test를 재실행했다. APK 빌드/설치는 성공했지만 test loading 단계에서 `WebSocketChannelException`, `127.0.0.1:` connection refused로 실패했다. remote Windows ADB server의 VM service port forward가 Docker container localhost와 맞지 않는 구조로 판단하고 5-A를 추가했다. +- 2026-07-03 11:06 KST: Windows 관리자 PowerShell에서 `0.0.0.0:5555 -> 127.0.0.1:5555` portproxy와 방화벽 rule을 추가했다. Docker local ADB 방식에서 최초 `unauthorized`가 발생했으나 Windows 사용자 ADB key를 git ignored `.android-adb/`에 복사하고 Docker `/root/.android`로 마운트해 `172.21.128.1:5555 device` 상태를 확보했다. +- 2026-07-03 11:06 KST: Docker local ADB 방식으로 integration test를 재실행했다. 최초 real API login test 실패는 Baron/Ory runtime 중단에 따른 `api-smoke.sh` 502와 연관됨을 확인했고, Ory/UserFront 및 backend 재시작 후 authenticated API smoke 통과, 최종 integration test `+3: All tests passed!`를 확인했다. +- 2026-07-06: 신규 링크 로그인 전환 이후에는 local 승인 완료 E2E가 막힐 수 있으므로, Android target 기능점검은 `TDC114_SMOKE_ASSUME_LOGGED_IN=1`을 이용한 post-login 세션 seed 경로를 함께 사용한다. +- 2026-07-06: local Baron SSO runtime에 테스트 번호 `010-9136-5338`용 identity와 local user를 맞춘 뒤 legacy `phone-login` HTTP 200, headless 로그인 시작 응답, `link/poll` pending 상태까지 확인했다. +- 2026-07-06: 로그인 완료 가정 기능점검 재시도에서는 host `api-smoke.sh`는 다시 통과했지만, `172.21.128.1:5555`는 `offline`, `172.21.128.1:5037` 경로는 `protocol fault`라 Android target 연결이 실패했다. 현재 blocker는 앱/API가 아니라 Windows emulator 또는 ADB/portproxy 상태다. + +## 7. 3-B Android target 준비 상세 절차 + +아래 중 하나를 선택한다. + +### 7.0 현재 WSL 확인 결과 + +2026-07-03 현재 확인한 내용: + +- WSL 내부 `adb` 명령은 없다. +- WSL 내부 `java` 명령은 없다. +- WSL 내부 `sdkmanager`, `emulator` 명령은 없다. +- `ANDROID_HOME`, `ANDROID_SDK_ROOT` 환경 변수는 설정되어 있지 않다. +- `/dev/kvm` 장치가 확인되지 않아 WSL 내부 Android emulator 가속 실행 가능성이 낮다. +- 일반적인 Windows Android SDK 경로(`/mnt/c/Users/*/AppData/Local/Android/Sdk/platform-tools`)가 WSL에서 바로 발견되지 않았다. +- WSL에서 `powershell.exe`를 호출해 Windows 경로를 자동 탐색하려 했으나 현재 세션에서는 `UtilBindVsockAnyPort` 오류로 실행되지 않았다. + +따라서 캡쳐처럼 Ubuntu/WSL 내부에 Android SDK, emulator, AVD를 직접 설치하는 경로는 현재 즉시 진행 가능하지 않다. 진행하려면 Java, Android command-line tools, platform-tools, emulator, system image, KVM/GUI 조건을 새로 맞춰야 한다. 더 안정적인 다음 단계는 Windows에서 Android Studio/SDK 설치 여부와 `adb.exe` 위치를 직접 확인하는 것이다. + +### 7.0-A Ubuntu/WSL 내부 emulator 경로 판단 + +캡쳐의 Ubuntu 설치 방식은 아래 조건이 모두 충족될 때만 추천한다. + +1. WSL에서 `/dev/kvm`이 보인다. +2. WSLg 또는 별도 X server로 emulator GUI 표시가 가능하다. +3. Java 11 이상과 Android command-line tools 설치가 가능하다. +4. `sdkmanager`, `avdmanager`, `emulator`, `adb`가 WSL 내부 PATH에 잡힌다. +5. Docker Flutter 컨테이너에서도 해당 emulator/ADB에 접근할 수 있다. + +현재 환경은 1, 3, 4가 충족되지 않는다. 그래서 우선순위는 `Windows Android Studio emulator 또는 실기기 + WSL/ADB 연결` 방식으로 둔다. + +### 7.1 Android emulator 사용 + +1. Windows Android Studio를 연다. +2. Device Manager에서 Pixel 계열 emulator를 생성하거나 기존 emulator를 시작한다. +3. Windows 터미널에서 `adb devices`로 emulator가 보이는지 확인한다. +4. WSL에서 Android platform-tools를 사용할 수 있게 한다. + - 방법 A: Windows Android SDK `platform-tools` 경로를 WSL `PATH`에 연결한다. + - 방법 B: WSL에 Android SDK platform-tools를 별도로 설치한다. +5. WSL에서 `adb devices`가 emulator를 표시하는지 확인한다. +6. Docker Flutter가 Android device를 볼 수 있도록 `flutter-docker.sh`의 ADB socket/device mount 필요 여부를 확인한다. + +### 7.2 Android 실기기 사용 + +1. 휴대폰에서 개발자 옵션을 활성화한다. +2. USB 디버깅을 켠다. +3. USB로 PC에 연결하고 RSA 디버깅 허용 팝업을 승인한다. +4. Windows 또는 WSL에서 `adb devices`가 `device` 상태로 표시되는지 확인한다. +5. 실기기에서 local API 접근은 `adb reverse tcp:5000 tcp:5000` 또는 PC LAN IP 방식 중 하나를 선택한다. + +### 7.3 Windows emulator + Docker local ADB server 방식 + +`ADB_SERVER_SOCKET=tcp::5037` 방식은 Flutter device 목록 확인과 APK 설치까지 가능했지만, integration test loading 단계에서 VM service dynamic port가 Docker container의 `127.0.0.1`로 연결되지 않는 문제가 발생했다. + +다음 검증은 Docker container 내부의 local ADB server가 Windows emulator adbd에 직접 붙는 방식으로 진행한다. + +1. Windows 관리자 PowerShell에서 emulator adbd port를 노출한다. + +```powershell +netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5555 connectaddress=127.0.0.1 connectport=5555 +netsh advfirewall firewall add rule name="ADB emulator 5555 for WSL" dir=in action=allow protocol=TCP localport=5555 +netsh interface portproxy show v4tov4 +``` + +2. WSL에서 `5555` 연결을 확인한다. + +```bash +nc -vz 172.21.128.1 5555 +``` + +3. Docker Flutter container 내부에서 local ADB server로 emulator에 직접 연결한다. + +```bash +docker run --rm ghcr.io/cirruslabs/flutter:stable sh -lc 'adb connect 172.21.128.1:5555 && adb devices' +``` + +4. 이 방식에서 device가 표시되면 `scripts/flutter-docker.sh`에 `TDC114_ADB_CONNECT_ADDRESS` 같은 optional env를 추가해 테스트 실행 전 `adb connect`를 수행하도록 보강한다. + +5. Docker ADB가 `unauthorized`로 표시되면 Windows에서 이미 승인된 ADB key를 local ignored directory에 복사한다. + +```bash +mkdir -p .android-adb +cp /mnt/c/Users/user/.android/adbkey .android-adb/adbkey.new +cp /mnt/c/Users/user/.android/adbkey.pub .android-adb/adbkey.pub.new +mv -f .android-adb/adbkey.new .android-adb/adbkey +mv -f .android-adb/adbkey.pub.new .android-adb/adbkey.pub +chmod 600 .android-adb/adbkey +``` + +6. 최종 실행 명령: + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 \ +./scripts/integration_tests.sh +``` + +현재 환경의 통과 기준 출력: + +```text ++3: All tests passed! +``` + +### 7.4 로그인 완료 가정 기능점검 + +신규 링크 로그인 흐름에서는 local runtime에서 실제 승인 완료까지 항상 검증할 수 있는 것이 아니므로, Android target 기능점검은 아래 보조 경로를 사용한다. + +1. 기본은 mock 세션 seed를 사용한다. +2. legacy 호환 점검이 꼭 필요할 때만 host 기준 `phone-login` API로 유효 세션을 1회 발급받는다. +3. 해당 세션 또는 mock user 정보를 Flutter app 시작 전에 `SharedPreferences`에 seed 한다. +4. 앱이 `AuthGate`에서 로그인 화면 대신 `직원검색`으로 바로 진입하는지 확인한다. +5. 직원 목록, 즐겨찾기, 직원 상세, 전화/문자 버튼 노출을 integration test로 점검한다. +6. local runtime이 유효 세션을 발급하지 못하면 mock directory 모드로 fallback 하여 post-login UI 기능만 별도로 점검한다. + +실행 예시: + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +TDC114_SMOKE_ASSUME_LOGGED_IN=1 \ +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 \ +./scripts/integration_tests.sh +``` + +주의: + +- 이 경로는 "로그인 완료 이후 앱 기능" 점검용이다. +- 실제 `headless phone-login -> 승인 -> link/poll 성공` 자체를 대체하지는 않는다. +- local `phone-login` bootstrap이 `401 login_failed`이면 자동으로 mock directory fallback을 사용한다. diff --git a/docs/scenario_staging_baron_sso_login_verification_2026-07-06.md b/docs/scenario_staging_baron_sso_login_verification_2026-07-06.md new file mode 100644 index 0000000..b4f53bd --- /dev/null +++ b/docs/scenario_staging_baron_sso_login_verification_2026-07-06.md @@ -0,0 +1,354 @@ +# staging Baron SSO 승인 로그인 검증 시나리오 + +작성일: 2026-07-06 +상태: v0.2 진행 중 + +목적: `tdc114plus` 신규 전화번호 승인 로그인 흐름을 local Baron SSO runtime 대신 staging Baron SSO 환경에서 우선 검증하기 위한 절차를 정리한다. 공식 기준은 `Baron SSO Hosted Login + OIDC Authorization Code + PKCE`이며, headless 직접 호출은 레거시/참고 검증으로만 본다. + +## 1. 왜 staging 경로를 우선 쓰는가 + +- 현재 local Baron SSO runtime에는 테스트 대상 전화번호의 identity/user mirror가 없을 수 있다. +- 이 경우 local에서는 `Hosted Login -> 문자/메일 링크 인증 -> App Link callback -> PKCE token 교환`을 끝까지 확인하기 어렵다. +- staging Baron SSO에 테스트 번호, RP 등록, redirect URI, 실제 링크 발송 경로가 준비되어 있다면 실제 승인 완료 end-to-end 검증을 더 빠르게 진행할 수 있다. + +## 2. 적용 범위 + +이 시나리오는 아래 검증에 적용한다. + +- staging Baron API smoke +- Android target 기준 staging API integration test +- 실제 승인 완료 로그인 1회 검증 +- staging 반영 검토 전환 판단 + +## 3. 필요한 값 + +아래 값이 준비되어야 한다. + +- `TDC114_API_BASE` + - staging Baron API base URL +- `TDC114_SMOKE_PHONE` + - staging Baron SSO에 등록된 테스트 전화번호 +- 선택값 `TDC114_SMOKE_EXPECTED_NAME` + - 로그인 후 화면에서 확인할 사용자명 +- 선택값 `TDC114_SMOKE_EXPECTED_TENANT_LABEL` + - 로그인 후 화면에서 확인할 조직 또는 테넌트 라벨 + +권장 env 파일: + +```text +scripts/.env.staging.local +``` + +기본 예시는 아래 파일을 복사해서 사용한다. + +```text +scripts/smoke.staging.env.example +``` + +## 4. 선행 조건 + +아래 조건이 먼저 만족되어야 한다. + +- Flutter auth/model/widget test 통과 +- backend handler/server test 통과 +- staging 대상 Baron SSO Hosted Login, authorization endpoint, token endpoint가 사용 가능함 +- 테스트 번호 수신 단말에서 링크 승인 가능 +- 테스트 결과를 `docs/test-logs/2026-07-test-execution-log.md`에 기록할 준비가 되어 있음 + +배포 전 내부 준비 기준은 아래 순서를 따른다. + +1. 로컬 구현 완료 고정 +2. 자동화 테스트 고정 +3. 로컬 API 계약 검증 +4. Android target UI 기능 확인 +5. Android target 실사용 흐름 점검 +6. 수동 점검 체크리스트 정리 +7. staging 반영 직전 검토 + +## 5. 권장 진행 순서 + +### 5.1 1단계: env 준비 + +예시: + +```bash +cp scripts/smoke.staging.env.example scripts/.env.staging.local +``` + +값을 채운다. + +```bash +TDC114_API_BASE=https://staging.example.com +TDC114_SMOKE_PHONE=010xxxxxxxx +TDC114_SMOKE_AUTH_FLOW=link +TDC114_SMOKE_EXPECTED_NAME=홍길동 +TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3 +``` + +사용자명과 조직 라벨은 optional이다. 값이 자주 바뀌거나 확실하지 않으면 비워둔다. + +### 5.2 2단계: staging API smoke + +먼저 host 기준 smoke를 확인한다. + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.staging.local ./scripts/api-smoke.sh +``` + +확인 포인트: + +- Hosted Login authorization URL 생성 가능 +- RP `client_id`, `redirect_uri`, PKCE `code_challenge` 조합이 Baron SSO에서 거부되지 않음 +- App Link callback과 token 교환에 필요한 endpoint가 확인됨 +- 레거시 headless smoke는 필요 시 참고로만 수행 + +주의: + +- staging의 공식 성공 기준은 앱 직접 headless 호출이 아니라 Hosted Login 진입과 PKCE callback 완료다. +- 실제 승인 완료는 integration test 또는 수동 검증으로 이어서 확인한다. + +### 5.3 3단계: Android target 준비 + +기존 Android runtime 절차를 따른다. + +- emulator는 `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` +- ADB 정책은 `docs/policy_android_studio_wsl_adb_2026-07-03.md` + +핵심은 `TDC114_API_BASE`를 staging 값으로 바꾸고, 독립형 실기기 테스트에서는 `TDC114_SKIP_SESSION_BOOTSTRAP=true`로 로컬 legacy bootstrap을 끄는 것이다. + +공기계 독립 실행 권장 env: + +```text +scripts/.env.android-device.staging.local +``` + +예시: + +```text +TDC114_API_BASE=https://staging.example.com +TDC114_SKIP_SESSION_BOOTSTRAP=true +TDC114_SMOKE_AUTH_FLOW=link +TDC114_SMOKE_PHONE=010xxxxxxxx +``` + +로그인만 staging, 직원/조직 데이터만 production으로 분리해야 하면 아래 override를 추가한다. + +```text +TDC114_AUTH_API_BASE=https://staging.example.com +TDC114_DIRECTORY_API_BASE=https://production.example.com +TDC114_ORGANIZATION_API_BASE=https://production.example.com +``` + +### 5.4 4단계: staging integration test 실행 + +emulator fallback 예시: + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.staging.local \ +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 \ +./scripts/integration_tests.sh +``` + +이미 승인된 prefix 경로를 쓰는 경우에는 기존 Android emulator 실행 방식과 동일하게 적용한다. + +integration test의 현재 검증 기준: + +- 로그인 화면 표시 +- 빈 전화번호 validation +- `TDC114_SMOKE_PHONE`가 있으면 실제 번호 입력 후 로그인 시도 +- 로그인 성공 시 `직원검색`, `검색 결과` 확인 +- optional expected 값이 있으면 사용자명/조직 라벨까지 추가 확인 + +### 5.4-A 4-A단계: 공기계 독립 로그인 실행 + +공기계 또는 실사용 폰에 staging 직접 로그인 화면을 띄우려면 아래 경로를 사용한다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 \ +TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.staging.local \ +TDC114_FLUTTER_DEVICE_ID= \ +./scripts/manual-postlogin-run.sh +``` + +이 모드에서는: + +- 앱이 local legacy `phone-login` bootstrap을 시도하지 않는다. +- 앱이 staging Baron API를 직접 사용한다. +- 로그인은 앱의 `Baron SSO로 로그인` 버튼으로 Hosted Login을 열고, 인증 완료 후 App Link callback과 PKCE token 교환으로 완료한다. + +### 5.5 5단계: 실제 승인 완료 수동 확인 + +테스트 단말에서 아래를 수행한다. + +1. 앱에서 `Baron SSO로 로그인` 탭 +2. 열린 Baron SSO Hosted Login 화면에서 휴대폰번호 입력 +3. 수신된 문자 또는 메일의 링크 열기 +4. `https://114.hmac.kr/auth/callback` App Link로 앱 복귀 확인 +5. PKCE token 교환 후 `직원검색` 진입 확인 + +성공 기준: + +- Baron SSO authorization endpoint 진입 성공 +- 사용자가 수신 링크를 열 수 있음 +- App Link callback 수신 및 `state` 검증 성공 +- 앱 세션 저장 후 `직원검색` 화면 진입 + +## 5-A. staging 배포 전 수동 점검 체크리스트 + +아래 항목은 staging 반영 요청 전에 미리 채워두는 것을 권장한다. + +### 5-A.1 에뮬레이터 기준 확인 + +- 로그인 화면이 정상 표시되는가 +- 빈 전화번호 validation이 정상 동작하는가 +- `Baron SSO로 로그인` 버튼이 Hosted Login 화면을 여는가 +- 인증 대기 중 문구와 로딩 상태가 정상 표시되는가 +- 오류 발생 시 내부 시스템 정보 없이 일반화된 안내 문구가 보이는가 +- 로그인 성공 후 `직원검색` 첫 화면으로 진입하는가 +- 첫 화면에서 기본 검색 결과가 표시되는가 +- 직원 상세, 즐겨찾기, 전화/문자 버튼이 기존처럼 동작하는가 + +### 5-A.2 예외 시나리오 확인 + +- 미등록 번호 입력 시 generic 실패 안내가 보이는가 +- 레거시 headless fallback을 켠 경우에만 만료된 `pendingRef`/poll 종료 처리가 자연스러운가 +- poll 간격이 짧을 때 제한 응답 또는 재시도 대기 처리가 되는가 +- 앱 재실행 후 세션 복원이 되는가 +- 인증 만료 시 세션 정리 후 재로그인 흐름으로 복귀하는가 + +### 5-A.3 staging 반영 직전 확인 + +- 정확한 staging `TDC114_API_BASE`를 확보했는가 +- 해당 base에서 Hosted Login authorization endpoint와 token endpoint를 사용할 수 있는가 +- 테스트 번호로 문자 또는 메일 수신이 가능한가 +- staging 로그 확인 담당자와 확인 위치를 알고 있는가 +- 실패 시 되돌릴 범위와 회귀 확인 방법을 문서로 정리했는가 + +## 6. 예외 케이스 점검 + +실제 승인 완료 1회가 끝나면 아래를 추가 확인한다. + +- 미등록 번호 입력 시 generic 실패 메시지 +- 레거시 headless fallback을 켠 경우에만 만료된 `pendingRef` 처리 +- polling 간격이 너무 짧을 때 `slow_down` 또는 유사 제한 동작 +- 로그인 성공 후 directory API 401 없이 첫 화면 진입 가능한지 + +## 7. 성공 시 다음 판단 + +아래가 충족되면 staging 반영 검토 시작 가능 단계로 본다. + +- 실제 승인 완료 end-to-end 1회 이상 통과 +- 예외 케이스 점검 완료 +- 테스트 번호, 로그 확인 포인트, 롤백 경로 정리 + +## 8. 현재 메모 + +- 2026-07-06 현재 local runtime에는 테스트 대상 전화번호 identity/user mirror가 없어 local 승인 완료 검증이 막혀 있다. +- 따라서 다음 실질 작업은 staging 번호와 staging API base를 확보해 위 절차로 1회 end-to-end를 끝까지 확인하는 것이다. + +## 9. 팀장 공유용 문서 버전 + +이번 신규앱 로그인은 기존의 선인증 전화번호 로그인과 다르게, `전화번호 입력 -> 링크 발송 -> 사용자 승인 -> 승인 상태 polling -> 세션 저장`의 비동기 승인 절차를 거친다. 따라서 단순히 앱 소스 구현만 완료되었다고 해서 staging 반영 가능 상태라고 보기는 어렵고, staging Baron SSO 쪽에도 신규 로그인 흐름을 실제로 수용할 준비가 필요하다. + +기존 로그인은 Baron SSO가 전화번호 확인 후 바로 세션을 발급하는 구조여서, 로컬 또는 기존 테스트 계정만으로도 비교적 빠르게 검증이 가능했다. 반면 이번 로그인은 사용자의 승인 링크 발송과 승인 완료 상태 변경이 중간에 개입하므로, staging 환경에서는 앱 코드 외에도 API 라우트 배포, 테스트 사용자 데이터, 링크 발송 경로, 승인 후 상태 조회가 모두 함께 맞아야 실제 end-to-end 검증이 가능하다. + +따라서 이번 건은 "앱 구현 완료 후 즉시 staging 반영"이 아니라, "앱 구현과 backend 구현을 고정한 뒤 staging 준비 항목을 맞추고, 실제 승인 완료를 1회 이상 확인한 후 반영 검토" 순서로 접근하는 것이 안전하다. + +## 10. staging 단계에서 준비가 필요한 항목 + +아래 항목은 로컬 준비가 아니라 staging 환경에서 선행되어야 하는 준비 사항이다. + +### 10.1 staging 신규앱 API 배포 필요 여부 + +현재 기준으로는 필요 가능성이 매우 높다. + +- 신규앱은 legacy 즉시 로그인이나 앱 직접 headless 호출보다 Baron SSO Hosted Login + PKCE 계약을 기본으로 사용한다. +- 따라서 staging 대상 Baron SSO/RP 설정에 아래 OIDC endpoint와 설정이 실제 사용 가능해야 한다. + - Authorization endpoint + - Token endpoint + - TDC114PLUS RP `client_id` + - `https://114.hmac.kr/auth/callback` redirect URI +- 추가로 로그인 이후 첫 화면 진입까지 확인하려면 아래 데이터 API도 확인되어야 한다. + - `GET /api/v1/integrations/org-context` + - 필요 시 `GET /api/v1/public/orgchart` + +정리: + +- staging에 TDC114PLUS RP 설정과 Hosted Login 흐름이 아직 반영되지 않았다면, 실제 승인 로그인 검증 전에 RP 등록/설정 반영이 선행되어야 한다. +- 단순 Baron SSO 대표 URL만 알고 있는 상태로는 부족하고, 실제 OIDC discovery/authorization/token endpoint와 redirect URI 허용 여부가 필요하다. + +### 10.2 staging API base URL 확정 + +아래가 명확해야 한다. + +- 신규앱이 호출해야 하는 정확한 staging `TDC114_API_BASE` +- 해당 base가 실제로 Swagger 공개 route를 제공하는지 +- gateway, reverse proxy, auth middleware가 신규 route를 정상 통과시키는지 + +현재 확인상 `https://sso.hmac.kr`는 Baron SSO 대표 주소일 수는 있으나, 앱 데이터 API base로 확정할 근거는 부족했다. + +### 10.3 staging 테스트 사용자 준비 + +staging Baron SSO에는 아래 조건을 만족하는 테스트 사용자가 준비되어야 한다. + +- 테스트 전화번호가 staging Baron SSO 인증 대상 사용자로 존재 +- 해당 사용자가 링크 발송 대상 lookup에서 조회 가능 +- 승인 완료 후 앱 세션 발급 대상 사용자로 연결 가능 +- 직원검색/조직도 API에서 앱 사용자로도 정상 조회 가능 + +쉽게 말하면 staging에서는 "전화번호를 아는 인증 사용자"와 "앱이 직원으로 인식하는 사용자 정보"가 둘 다 준비되어 있어야 한다. + +### 10.4 staging 링크 발송 경로 준비 + +이번 로그인은 사용자가 실제 링크를 수신해야 하므로 아래가 staging에서 준비되어야 한다. + +- 문자 또는 메일 발송 provider가 staging에서 활성화되어 있는지 +- 테스트 번호에서 실제 링크를 수신 가능한지 +- 링크 클릭 후 staging Baron SSO가 인증 완료 상태로 전환되고 redirect URI로 authorization code를 돌려주는지 + +이 항목이 안 맞으면 Hosted Login 진입은 성공해도 실제 승인 완료 검증은 끝까지 진행되지 않는다. + +### 10.5 staging callback/token 교환 경로 준비 + +신규앱은 승인 후 App Link callback으로 authorization code를 받고, token endpoint에서 PKCE token 교환을 수행한다. 따라서 staging에서는 아래가 준비되어야 한다. + +- `https://114.hmac.kr/auth/callback` redirect URI 허용 +- callback에 `code`, `state` 전달 +- token endpoint에서 `authorization_code + code_verifier` 교환 허용 +- Client Secret 없이 PKCE 공개 앱으로 token 교환 가능 + +이 부분은 단순 route 존재 여부만으로는 부족하고, 실제 링크 승인과 callback/token 교환이 연결되어 있어야 한다. + +### 10.6 staging 로그 확인 포인트 확보 + +실제 승인 로그인 검증 중에는 실패 원인 분리가 중요하므로 아래를 알아야 한다. + +- staging backend 로그 확인 위치 +- 필요 시 gateway 또는 auth 로그 확인 위치 +- Hosted Login 진입, 링크 발송, callback redirect, token 교환 실패 로그를 누가 확인할 수 있는지 + +이 정보가 없으면 staging에서 실패가 나도 앱 문제인지, API 미배포인지, 사용자 데이터 문제인지 구분이 늦어진다. + +### 10.7 staging 반영 실패 대비 경로 + +아래도 staging 단계에서 미리 정리되어야 한다. + +- 신규앱 API가 미반영 상태로 남을 경우의 원복 또는 비활성 경로 +- 기존 로그인 방식과 신규 로그인 방식의 분리 여부 +- 문제가 생겼을 때 local 회귀 검증을 어떤 기준으로 다시 확인할지 + +이번 변경은 신규 로그인 플로우가 추가된 형태이므로, staging에서도 route 단위로 반영 범위와 되돌림 범위를 설명할 수 있어야 한다. + +## 11. staging 준비 완료 판단 기준 + +아래가 충족되어야 staging에서 실제 승인 로그인 검증을 진행할 수 있다고 본다. + +1. staging `TDC114_API_BASE`가 확정되었다. +2. staging Baron SSO에 TDC114PLUS RP와 Hosted Login + PKCE 설정이 반영되었다. +3. staging Baron SSO에 테스트 전화번호 사용자가 준비되었다. +4. 테스트 번호에서 실제 링크 수신이 가능하다. +5. 승인 후 App Link callback과 PKCE token 교환이 session 발급까지 이어진다. +6. 로그인 후 `직원검색` 첫 화면 진입이 가능하다. +7. 실패 시 확인할 로그 위치와 담당자 경로가 정리되었다. + +위 기준이 충족되기 전에는 "staging 반영 가능"이라고 단정하지 않고, "staging 반영 검토 준비 단계"로 표현하는 것이 정확하다. diff --git a/docs/tdc114plus-api-contract-2026-07-02.md b/docs/tdc114plus-api-contract-2026-07-02.md deleted file mode 100644 index df46acf..0000000 --- a/docs/tdc114plus-api-contract-2026-07-02.md +++ /dev/null @@ -1,436 +0,0 @@ -# tdc114plus API 계약 - -작성일: 2026-07-02 -상태: v1.0 1차 구현 기준 확정 - -목적: `tdc114plus` Flutter 앱이 Baron SSO backend 및 orgFront 데이터와 연동하기 위해 필요한 API 계약을 정의한다. 본 문서는 구현 전 계약 기준이며, 실제 Baron SSO backend 구현은 `/home/ubuntu/workspace/baron-sso-tdc114plus-api`의 `feature/tdc114plus-api` 브랜치에서 진행한다. - -## 1. 설계 기준 - -확인한 기준 문서: - -- `docs/tdc114plus-development-decision-brief-2026-07-01.md` -- `docs/tdc114plus-development-policy-2026-07-02.md` -- `docs/baron-sso-reference-source-policy-2026-07-02.md` -- `docs/references/baron-safe-policies/api-contract.md` -- Baron SSO `docs/API_DESIGN_POLICY.md` -- Baron SSO `docs/identity-redis-mirror-policy-2026-06-09.md` -- Baron SSO `docs/references/baron-safe-policies/nonstandard-phone-only-login-technical-review-2026-06-23.md` - -확인한 기존 Baron SSO 코드: - -- `backend/cmd/server/main.go` -- `backend/internal/handler/auth_handler.go` -- `backend/internal/handler/tenant_handler.go` -- `backend/internal/handler/user_handler.go` -- `backend/internal/domain/user.go` -- `backend/internal/domain/tenant.go` -- `orgfront/src/lib/adminApi.ts` - -## 2. 핵심 원칙 - -- 기존 Baron SSO API 응답을 `tdc114plus` 요구사항에 맞게 직접 변경하지 않는다. -- `tdc114plus` 전용 endpoint와 response DTO를 둔다. -- JSON field는 camelCase를 사용한다. -- 목록 응답은 `items`, `limit`, `offset`, `total`, `nextCursor` 형식을 따른다. -- 직원/조직 데이터는 Baron SSO `orgFront` 및 backend read model을 기준으로 제공한다. -- 앱 자체 회원가입은 제공하지 않는다. -- 미등록 사용자는 앱 사용을 허용하지 않는다. -- 공지사항, 전자결재, 수신전화식별, 수신팝업은 1차 API 범위에서 제외한다. - -## 3. 1차 구현 확정사항 - -| 항목 | 1차 구현 기준 | 후속 검토 | -| --- | --- | --- | -| 전화번호 로그인 보안 수준 | Baron SSO 등록 사용자 확인, rate limit, 감사 로그, generic error message 적용 | SMS OTP, 기기 등록, 내부망 제한, 추가 인증 | -| token 종류 | 기존 Baron SSO session token 재사용 | 앱 전용 access token 또는 refresh token 분리 | -| 개인정보 마스킹 범위 | Baron SSO 등록 사용자에게 직원 검색/조직도 기본 필드 노출 | 권한별 전화번호/이메일/직급 마스킹 정책 | -| 즐겨찾기 동기화 | 1차는 앱 로컬 저장 | 서버 동기화 API 추가 | - -본 확정사항은 1차 개발 범위를 빠르게 구현하기 위한 기준이다. 운영 배포 전 보안 리뷰에서 전화번호 로그인, token 저장, 개인정보 노출 범위는 재검토한다. - -## 4. API namespace - -권장 namespace: - -```text -/api/v1/tdc114plus -``` - -이유: - -- 기존 `/api/v1/admin/users`, `/api/v1/admin/orgchart/snapshot`은 관리자/orgFront 성격이 강하다. -- 앱은 일반 등록 사용자용 직원검색/조직도 기능이므로 별도 namespace가 필요하다. -- 향후 감사 로그, 마스킹, 앱별 권한 정책을 독립적으로 적용하기 쉽다. - -## 5. 인증 API - -### 5.1 전화번호 로그인 - -```http -POST /api/v1/tdc114plus/auth/phone-login -``` - -설명: - -- 사용자가 앱 로그인창에 전화번호를 입력하면 Baron SSO 등록 사용자 여부를 확인한다. -- 등록 사용자이면 앱 사용에 필요한 Baron SSO session token을 반환한다. -- 기존 Baron SSO의 `/api/v1/auth/phone-login` 흐름을 참고하되, `tdc114plus` 전용 DTO와 오류 정책을 둔다. - -요청: - -```json -{ - "phoneNumber": "01012345678", - "device": { - "platform": "android", - "appVersion": "0.1.0", - "deviceName": "Pixel 8" - } -} -``` - -응답: - -```json -{ - "status": "ok", - "token": "baron-sso-session-token", - "expiresAt": "2026-07-02T12:00:00Z", - "user": { - "id": "user-uuid", - "name": "홍길동", - "phoneNumber": "+821012345678", - "tenantId": "tenant-uuid", - "tenantName": "한맥", - "tenantSlug": "hanmac", - "department": "기술연구소", - "grade": "책임", - "position": "팀장", - "jobTitle": "개발" - } -} -``` - -오류: - -| HTTP | code | 설명 | -| --- | --- | --- | -| 400 | `invalid_phone_number` | 전화번호 형식 오류 | -| 401 | `login_failed` | 등록 사용자 확인 실패. 사용자 존재 여부를 과도하게 드러내지 않는다. | -| 429 | `rate_limited` | 반복 시도 제한 | -| 503 | `identity_provider_unavailable` | Kratos/SSO 조회 실패 | - -보안 메모: - -- 전화번호 단독 로그인은 표준 인증으로 보기 어렵다. -- 1차 정책상 Baron SSO 등록 인원 확인용으로 사용하되, rate limit, 감사 로그, generic error message를 적용한다. -- 운영 전에는 SMS OTP, 기기 등록, 내부망 제한, 추가 인증 중 하나 이상을 후속 검토한다. - -### 5.2 내 프로필 - -```http -GET /api/v1/tdc114plus/me -Authorization: Bearer {token} -``` - -응답: - -```json -{ - "id": "user-uuid", - "name": "홍길동", - "phoneNumber": "+821012345678", - "email": "user@example.com", - "tenantId": "tenant-uuid", - "tenantName": "한맥", - "tenantSlug": "hanmac", - "department": "기술연구소", - "grade": "책임", - "position": "팀장", - "jobTitle": "개발", - "permissions": { - "directory": true, - "organization": true, - "favoritesSync": false - } -} -``` - -## 6. 직원검색/전화번호검색 API - -### 6.1 직원 목록 및 검색 - -```http -GET /api/v1/tdc114plus/directory/employees -Authorization: Bearer {token} -``` - -Query: - -| 이름 | 필수 | 설명 | -| --- | --- | --- | -| `q` | N | 이름, 전화번호, 부서, 직위, 직무 검색어 | -| `tenantId` | N | 가족사/회사/조직 필터 | -| `tenantSlug` | N | 가족사 slug 필터 | -| `department` | N | 부서명 필터 | -| `limit` | N | 기본 50 | -| `offset` | N | 기본 0 | -| `cursor` | N | cursor pagination 사용 시 | - -응답: - -```json -{ - "items": [ - { - "id": "user-uuid", - "name": "홍길동", - "phoneNumber": "+821012345678", - "phoneDisplay": "010-1234-5678", - "email": "user@example.com", - "tenantId": "tenant-uuid", - "tenantName": "한맥", - "tenantSlug": "hanmac", - "department": "기술연구소", - "grade": "책임", - "position": "팀장", - "jobTitle": "개발", - "status": "active", - "profileImageUrl": null, - "sortOrder": 100 - } - ], - "limit": 50, - "offset": 0, - "total": 1, - "nextCursor": "" -} -``` - -검색 규칙: - -- `q`는 이름, 전화번호, 부서, 직위, 직책, 직무, 이메일 일부를 대상으로 한다. -- 전화번호 검색은 숫자만 입력해도 매칭되도록 서버에서 정규화한다. -- 기본 노출 대상은 조직도 표시 가능한 사용자 상태로 제한한다. -- Baron SSO 기준 `active`, `temporary_leave`, `suspended`는 조직도 노출 후보로 볼 수 있다. -- `baron_guest`, `extended_leave`, `archived`는 기본 제외한다. - -### 6.2 직원 상세 - -```http -GET /api/v1/tdc114plus/directory/employees/{employeeId} -Authorization: Bearer {token} -``` - -응답: - -```json -{ - "id": "user-uuid", - "name": "홍길동", - "phoneNumber": "+821012345678", - "phoneDisplay": "010-1234-5678", - "email": "user@example.com", - "tenantId": "tenant-uuid", - "tenantName": "한맥", - "tenantSlug": "hanmac", - "joinedTenants": [ - { - "id": "tenant-uuid", - "name": "한맥", - "slug": "hanmac", - "type": "COMPANY", - "parentId": "parent-tenant-uuid" - } - ], - "department": "기술연구소", - "grade": "책임", - "position": "팀장", - "jobTitle": "개발", - "status": "active", - "profileImageUrl": null, - "actions": { - "call": true, - "sms": true, - "email": true - } -} -``` - -## 7. 가족사 필터/조직도 API - -### 7.1 가족사/조직 필터 목록 - -```http -GET /api/v1/tdc114plus/organization/tenants -Authorization: Bearer {token} -``` - -응답: - -```json -{ - "items": [ - { - "id": "tenant-uuid", - "name": "한맥", - "slug": "hanmac", - "type": "COMPANY", - "parentId": "hanmac-family-root", - "memberCount": 120, - "totalMemberCount": 350 - } - ], - "generatedAt": "2026-07-02T12:00:00Z" -} -``` - -### 7.2 조직도 snapshot - -```http -GET /api/v1/tdc114plus/organization/orgchart -Authorization: Bearer {token} -``` - -Query: - -| 이름 | 필수 | 설명 | -| --- | --- | --- | -| `tenantId` | N | 특정 가족사/조직 하위만 조회 | -| `refresh` | N | 서버 캐시 refresh 요청. 기본 `false` | - -응답: - -```json -{ - "tenants": [ - { - "id": "tenant-uuid", - "name": "기술연구소", - "slug": "rnd", - "type": "ORGANIZATION", - "parentId": "company-tenant-uuid", - "memberCount": 12, - "totalMemberCount": 38 - } - ], - "employees": [ - { - "id": "user-uuid", - "name": "홍길동", - "phoneNumber": "+821012345678", - "phoneDisplay": "010-1234-5678", - "tenantId": "tenant-uuid", - "tenantName": "기술연구소", - "tenantSlug": "rnd", - "department": "기술연구소", - "grade": "책임", - "position": "팀장", - "jobTitle": "개발", - "status": "active" - } - ], - "generatedAt": "2026-07-02T12:00:00Z", - "cache": { - "source": "redis", - "hit": true, - "ttlSeconds": 300 - } -} -``` - -구현 참고: - -- 기존 `GET /api/v1/admin/orgchart/snapshot`은 `tenants`, `users`, `generatedAt`, `cache` 구조를 가진다. -- `tdc114plus` 응답은 앱 의미에 맞춰 `users` 대신 `employees`를 사용한다. -- 기존 admin/orgFront API를 직접 변경하지 않고 별도 DTO에서 변환한다. - -## 8. 즐겨찾기 API - -1차 구현은 앱 로컬 저장을 기본으로 한다. - -서버 동기화는 후속 단계에서 검토한다. - -후속 후보: - -```http -GET /api/v1/tdc114plus/favorites -PUT /api/v1/tdc114plus/favorites -``` - -## 9. 오류 응답 공통 형식 - -Baron SSO API 설계 정책에 맞춰 신규 API는 `code`를 기본 포함한다. - -```json -{ - "error": "사람이 읽을 수 있는 메시지", - "code": "machine_readable_code", - "details": {} -} -``` - -공통 오류: - -| HTTP | code | 설명 | -| --- | --- | --- | -| 400 | `invalid_request` | 요청 형식 오류 | -| 401 | `unauthorized` | 토큰 없음/만료 | -| 403 | `forbidden` | tdc114plus 사용 권한 없음 | -| 404 | `not_found` | 직원/조직 없음 | -| 429 | `rate_limited` | 과도한 요청 | -| 503 | `dependency_unavailable` | Kratos, Redis, DB 등 의존성 장애 | - -## 10. 개인정보/보안 정책 - -- 전화번호 원문은 로그에 남기지 않고 마스킹 또는 정규화 값 일부만 기록한다. -- 직원 검색/상세 조회는 감사 로그 대상으로 둔다. -- 대량 조회, 짧은 시간 내 반복 조회는 이상 조회 탐지 후보로 기록한다. -- 1차 구현에서는 Baron SSO 등록 사용자에게 직원 검색/조직도 기본 필드를 노출한다. -- 권한별 민감정보 마스킹은 후속 정책에서 확정한다. -- 1차 앱에서는 `call`, `sms` 액션을 제공하되, 앱 내부에서 수신전화식별/수신팝업 기능은 구현하지 않는다. - -## 11. Baron SSO 구현 후보 - -신규 패키지/파일 후보: - -```text -backend/internal/domain/tdc114plus_models.go -backend/internal/handler/tdc114plus_handler.go -backend/internal/service/tdc114plus_service.go -backend/internal/service/tdc114plus_service_test.go -backend/internal/handler/tdc114plus_handler_test.go -``` - -라우트 후보: - -```go -tdc114plus := api.Group("/tdc114plus") -tdc114plus.Post("/auth/phone-login", tdc114plusHandler.PhoneLogin) -tdc114plus.Get("/me", requireAnyUser, tdc114plusHandler.GetMe) -tdc114plus.Get("/directory/employees", requireAnyUser, tdc114plusHandler.ListEmployees) -tdc114plus.Get("/directory/employees/:id", requireAnyUser, tdc114plusHandler.GetEmployee) -tdc114plus.Get("/organization/tenants", requireAnyUser, tdc114plusHandler.ListTenants) -tdc114plus.Get("/organization/orgchart", requireAnyUser, tdc114plusHandler.GetOrgChart) -``` - -## 12. 구현 전 확인사항 - -확정되어 바로 진행 가능한 항목: - -- 전용 namespace `/api/v1/tdc114plus` -- 전용 DTO -- 기존 admin/user/orgchart API는 변경하지 않음 -- 직원/조직 데이터는 기존 orgchart snapshot 및 identity mirror/read model 기반으로 변환 -- 전화번호 로그인은 1차에서 등록자 확인 + rate limit + audit + generic error message 기준으로 구현 -- token은 1차에서 기존 Baron SSO session token 재사용 -- 개인정보는 1차에서 Baron SSO 등록 사용자에게 기본 필드 노출 -- 즐겨찾기는 1차에서 앱 로컬 저장 - -운영 배포 전 재검토 항목: - -- SMS OTP, 기기 등록, 내부망 제한, 추가 인증 중 하나 이상 도입 여부 -- 앱 전용 access token 또는 refresh token 분리 여부 -- 권한별 개인정보 마스킹 범위 -- 즐겨찾기 서버 동기화 API 추가 여부 diff --git a/docs/tdc114plus-development-policy-2026-07-02.md b/docs/tdc114plus-development-policy-2026-07-02.md deleted file mode 100644 index 918ba1e..0000000 --- a/docs/tdc114plus-development-policy-2026-07-02.md +++ /dev/null @@ -1,112 +0,0 @@ -# tdc114plus 개발 정책 - -작성일: 2026-07-02 - -목적: `tdc114plus` 개발 중 Baron SSO 연동 방식, 개발 도구, AI coding assistant 활용 기준, Flutter/플랫폼 구현 원칙을 정리한다. - -## 1. Baron SSO 연동 원칙 - -`tdc114plus` 개발 중 Baron SSO 소스코드와 연동이 필요한 부분은 기존 Baron SSO 소스코드를 임의로 변경해서 맞추지 않는다. - -기본 원칙은 다음과 같다. - -- `tdc114plus`에 필요한 데이터 요청, 인증 확인, 조직/직원 데이터 제공은 Baron SSO 쪽에 필요한 API를 생성하여 진행한다. -- 기존 Baron SSO의 로그인, 세션, consent, userfront, orgFront 동작을 직접 변형하지 않는다. -- 기존 API 응답 구조를 `tdc114plus` 요구사항에 맞춰 임의로 변경하지 않는다. -- `tdc114plus` 전용 응답 형식이 필요하면 별도 API endpoint 또는 별도 response DTO를 둔다. -- Baron SSO 소스 수정이 필요한 경우 `/home/ubuntu/workspace/baron-sso-tdc114plus-api`의 `feature/tdc114plus-api` 브랜치에서 진행한다. -- `tdc114plus` 앱 저장소에는 Flutter 앱 코드, API client, model, provider, test를 둔다. -- Baron SSO backend/orgFront 변경과 `tdc114plus` Flutter 앱 변경은 저장소와 커밋을 분리한다. - -## 2. VS Code 기반 AI 개발 방식 - -앱 개발은 VS Code를 기본 IDE로 두고, AI coding assistant를 활용한 개발 방식을 권장한다. - -목표: - -- 반복적인 Flutter 화면/상태관리 코드 작성 속도를 높인다. -- API 계약 변경 시 model, service, provider, test 코드를 일관되게 갱신한다. -- 문서와 코드의 불일치를 줄인다. -- 보안 민감 영역은 AI가 제안하더라도 사람이 반드시 리뷰한다. - -권장 VS Code 구성: - -| 항목 | 내용 | -| --- | --- | -| Flutter/Dart extension | Flutter 개발, debug, format, test 실행 | -| REST Client 또는 Thunder Client | API 계약 검증 | -| Docker extension | mock/preview 서버 실행 | -| Git/Gitea 연동 | branch, commit, PR 확인 | -| AI coding assistant | 코드 생성, 리팩터링, 테스트 초안, 문서화 보조 | - -AI 활용 절차: - -1. 작업 전 정책 문서와 API 계약을 먼저 확인한다. -2. AI에게 변경 범위를 명확히 지시한다. -3. 생성된 코드는 반드시 `flutter analyze`와 테스트를 통과시킨다. -4. API 계약 변경이 있으면 문서, model, service, provider, test를 함께 갱신한다. -5. 보안 민감 코드, 인증 코드, 개인정보 처리 코드는 사람이 직접 리뷰한다. - -## 3. Flutter 공통 구현 원칙 - -- 공통 Flutter 코드는 처음부터 Android/iOS 모두를 고려해 작성한다. -- 화면, 상태관리, API client, repository, model은 플랫폼 공통 코드로 우선 설계한다. -- 플랫폼별 차이가 있는 기능은 공통 interface를 먼저 만들고 Android/iOS 구현체를 분리한다. -- 공지사항, 전자결재, 수신전화식별, 수신팝업은 1차 범위에서 보류한다. -- 1차 범위는 직원검색, 전화번호검색, 가족사 필터, 조직도, 직원목록, 전화걸기, 문자보내기, 즐겨찾기에 집중한다. - -## 4. 플랫폼별 구현 원칙 - -- 플랫폼별 네이티브 기능은 Android에서 먼저 PoC를 완성한 뒤 iOS로 확장한다. -- iOS를 너무 늦게 검증하지 않는다. -- PoC 중에도 최소한 WebView, 로그인 세션, APNs 준비 가능 여부는 확인한다. -- 푸시, 생체 인증, 보안 저장소, bridge는 플랫폼별 차이가 크므로 공통 인터페이스와 플랫폼 구현체를 분리한다. -- 운영 배포 전에는 Android/iOS 모두 동일한 보안 기준을 통과해야 한다. - -## 5. 검증 원칙 - -Flutter 앱 변경 시 최소 검증: - -```bash -./scripts/flutter-docker.sh analyze -./scripts/flutter-docker.sh test -``` - -상세 테스트 기준은 아래 정식 정책을 따른다. - -- `docs/tdc114plus-testing-policy-2026-07-02.md` - -Baron SSO API 변경 시 최소 검증: - -- 변경한 backend/orgFront 영역의 기존 테스트 확인 -- 신규 API handler/service/model 테스트 추가 -- 기존 로그인, 세션, userfront, orgFront 주요 흐름 회귀 확인 -- API 계약 문서와 구현 응답 형식 일치 확인 - -## 6. 질문 및 확인 원칙 - -작업 진행 중 확인사항이나 질문이 발생하면, 먼저 관련 정책/결정/참고 md 파일을 확인한다. - -진행 순서: - -1. 현재 작업과 관련된 정책 문서를 먼저 확인한다. -2. 정책 문서에서 판단 가능한 내용은 문서 기준으로 진행한다. -3. 정책 간 충돌, 해석 불명확, 보안 영향, 기존 Baron SSO 동작 변경, 배포 영향이 있는 경우에만 사용자에게 질문한다. -4. 사용자에게 질문할 때는 확인한 문서, 판단이 필요한 지점, 가능한 선택지, 권장안을 함께 제시한다. -5. 새로운 결정이 내려지면 관련 md 문서와 작업진행 타임테이블을 갱신한다. - -즉, 작업 중 매 판단마다 바로 질문하지 않는다. 먼저 문서를 확인하고, 문서 기준으로 처리 가능한 작업은 진행한다. 문서 확인 후에도 결정이 필요한 경우에만 질문한다. - -## 7. 문서 우선순위 - -개발 중 판단 기준은 아래 순서로 적용한다. - -1. `docs/tdc114plus-development-decision-brief-2026-07-01.md` -2. `docs/tdc114plus-work-progress-timetable-2026-07-02.md` -3. `docs/tdc114plus-development-policy-2026-07-02.md` -4. `docs/tdc114plus-testing-policy-2026-07-02.md` -5. `docs/tdc114plus-api-contract-2026-07-02.md` -6. `docs/baron-sso-reference-source-policy-2026-07-02.md` -7. `docs/references/baron-safe-policies/` - -Baron Safe 참고 문서는 참고 자료이며, `tdc114plus`의 직접 정책보다 우선하지 않는다. diff --git a/docs/tdc114plus-script-automation-plan-2026-07-02.md b/docs/tdc114plus-script-automation-plan-2026-07-02.md deleted file mode 100644 index 165aa07..0000000 --- a/docs/tdc114plus-script-automation-plan-2026-07-02.md +++ /dev/null @@ -1,108 +0,0 @@ -# tdc114plus 테스트 자동화 스크립트 계획 - -작성일: 2026-07-02 -상태: v1.0 초기 스크립트 기준 - -목적: `docs/tdc114plus-testing-policy-2026-07-02.md`에 정의한 테스트 정책을 실제 `scripts/` 파일과 연결하고, 즉시 사용 가능한 스크립트와 향후 구현이 필요한 scaffold 스크립트를 구분한다. - -## 1. 즉시 사용 가능한 스크립트 - -| 스크립트 | 목적 | 실행 예 | -| --- | --- | --- | -| `scripts/format-dart.sh` | Docker Flutter 이미지에서 `dart format lib test` 실행 | `./scripts/format-dart.sh` | -| `scripts/quality-gate.sh` | `flutter analyze`, `flutter test` 순차 실행 | `./scripts/quality-gate.sh` | -| `scripts/generate-release-report.sh` | git 상태와 릴리스 체크리스트 report 생성 | `./scripts/generate-release-report.sh` | -| `scripts/perf_smoke.sh` | 현재 앱/테스트 파일 수와 기본 상태 출력 | `./scripts/perf_smoke.sh` | - -## 2. Scaffold 상태의 스크립트 - -아래 스크립트는 파일은 존재하지만, 기반 기능이 아직 없으므로 실행 시 scaffold 안내와 함께 종료한다. - -| 스크립트 | 현재 상태 | 완성 조건 | -| --- | --- | --- | -| `scripts/mock-server.sh` | `status`, `stop`은 가능. `start`는 미구현 안내 | API 계약 기반 mock server 구현 | -| `scripts/save-snapshots.sh` | snapshot source가 있으면 report 경로로 복사 | widget/integration screenshot 또는 snapshot 생성 체계 | -| `scripts/integration_tests.sh` | `TDC114_API_BASE`와 `integration_test/` 필요 | staging API 또는 mock server 기반 integration test | -| `scripts/redteam/run_all.sh` | 현재 AI 기능 없음 안내 | LLM/프롬프트 기반 기능이 실제 추가될 때 | - -## 3. Phase별 사용 기준 - -### Phase 3: Mock 기반 1차 UI - -필수: - -```bash -./scripts/format-dart.sh -./scripts/quality-gate.sh -``` - -선택: - -```bash -./scripts/save-snapshots.sh -``` - -단, snapshot 산출물이 생긴 뒤 사용한다. - -### Phase 4: 실제 API 연동 - -필수 후보: - -```bash -TDC114_API_BASE=https://staging.example.com ./scripts/integration_tests.sh -``` - -완성 조건: - -- `app/integration_test/` 테스트 추가 -- staging 또는 local mock API endpoint 확정 -- 민감정보 없는 test fixture 사용 - -### Phase 5: 핵심 액션 - -필수 후보: - -```bash -./scripts/quality-gate.sh -./scripts/perf_smoke.sh -``` - -추가 예정: - -- 전화걸기/문자보내기 URL 생성 테스트 -- 즐겨찾기 로컬 저장소 테스트 - -### Phase 6: 빌드/배포 준비 - -필수 후보: - -```bash -./scripts/generate-release-report.sh -``` - -추가 예정: - -- Android debug APK build wrapper -- 수동 검증 체크리스트 자동 생성 - -## 4. 운영 원칙 - -- 문서에 명령을 추가할 때는 실제 `scripts/` 파일도 함께 추가하거나 scaffold 상태를 명시한다. -- scaffold 스크립트는 조용히 성공하지 않고, 미구현이면 non-zero exit code로 종료한다. -- 실제 CI gate에 연결할 수 있는 스크립트는 `quality-gate.sh`부터 시작한다. -- AI/LLM redteam 자동화는 현재 앱 범위 밖이므로 `redteam/run_all.sh`는 보류 상태로 유지한다. -- 자동화 스크립트 실행 결과는 `docs/test-logs/YYYY-MM-test-execution-log.md`에 월별로 누적 기록한다. - -## 5. Playwright MCP 활용 예정 - -Playwright MCP는 향후 web/preview 기반 화면 확인이 가능해지는 시점부터 테스트 정책에 활용한다. - -우선 적용 후보: - -- 로그인 화면 smoke test -- 직원목록/검색/가족사 필터 화면 회귀 확인 -- 직원 상세 화면 표시 확인 -- screenshot 기반 UI 리뷰 자료 생성 -- 텍스트 overflow, 주요 버튼 표시, 라우팅 이동 확인 - -현재는 Flutter web/preview 실행 방식이 확정되지 않았으므로 별도 `scripts/playwright-*` 파일은 만들지 않는다. 실행 방식이 확정되면 Playwright MCP 시나리오 문서와 월별 테스트 로그 기록 형식을 추가한다. diff --git a/docs/tdc114plus-testing-policy-2026-07-02.md b/docs/tdc114plus-testing-policy-2026-07-02.md deleted file mode 100644 index e7d32f7..0000000 --- a/docs/tdc114plus-testing-policy-2026-07-02.md +++ /dev/null @@ -1,294 +0,0 @@ -# tdc114plus 테스트 정책 - -작성일: 2026-07-02 -상태: v1.0 1차 개발 기준 확정 - -목적: `tdc114plus` Flutter 앱 개발 중 적용할 테스트 기준, 자동화 원칙, 단계별 검증 범위를 정의한다. 본 문서는 `docs/references/ai-testing/ai_testing_policy_draft.md`의 일반 원칙 중 `tdc114plus`에 적용 가능한 부분을 앱/API/보안 중심으로 재해석한 정식 정책이다. - -## 1. 적용 범위 - -본 정책은 아래 영역에 적용한다. - -- Flutter 앱 화면, 라우팅, 상태관리 -- API client, repository, provider -- API 계약 기반 model, DTO, JSON 변환 -- Baron SSO 로그인 연동 -- orgFront 직원/조직 데이터 연동 -- 전화번호, 개인정보, 즐겨찾기 로컬 저장 -- 전화걸기, 문자보내기 등 플랫폼 액션 - -현재 `tdc114plus`는 LLM/AI 추론 기능을 포함하지 않으므로 아래 항목은 1차 적용 대상에서 제외한다. - -- AI 모델 추론 결과 평가 -- Evaluator LLM 기반 자동 채점 -- multi-engine AI 교차 검증 -- 프롬프트 jailbreak/redteam matrix -- PSI 기반 AI 학습 데이터 drift 계산 - -위 항목은 향후 앱에 실제 AI 기능이 추가될 경우 별도 정책으로 확장한다. - -## 2. 기본 검증 게이트 - -Flutter 앱 코드를 변경한 모든 작업은 아래 검증을 통과해야 한다. - -```bash -./scripts/flutter-docker.sh analyze -./scripts/flutter-docker.sh test -``` - -추가로 Dart 파일을 많이 수정했거나 새 파일을 추가한 경우 formatter를 적용한다. - -```bash -./scripts/format-dart.sh -``` - -검증 실패 상태의 코드는 `main` 브랜치에 반영하지 않는다. - -자동화 스크립트의 구현 상태와 향후 보강 계획은 아래 문서를 따른다. - -- `docs/tdc114plus-script-automation-plan-2026-07-02.md` - -## 3. 테스트 강도 기준 - -### 3.1 강한 테스트가 필요한 영역 - -아래 영역은 결정론적 로직으로 보고 단위 테스트를 우선 작성한다. - -- API model `fromJson`, `toJson` -- API error parsing -- 전화번호 입력 검증 및 정규화 -- 로그인 성공/실패 상태 전이 -- 인증 token 저장/삭제 -- 직원검색 query/filter 생성 -- 가족사/조직 필터 상태 -- 즐겨찾기 추가/삭제/조회 -- 개인정보 표시/마스킹 정책 -- API 실패, 401, 403, 404, timeout 처리 - -이 영역의 테스트는 통과율 100%를 기준으로 한다. - -### 3.2 화면 테스트가 필요한 영역 - -아래 화면 흐름은 widget test 또는 integration test로 검증한다. - -- 앱 실행 후 로그인 화면 표시 -- 전화번호 입력 후 로그인 성공/실패 흐름 -- 직원목록 진입 -- 직원 검색어 입력과 결과 표시 -- 가족사 필터 선택/해제 -- 조직도 화면 탐색 -- 직원 상세 화면 표시 -- 전화걸기/문자보내기 액션 노출 -- 즐겨찾기 토글 - -Phase 3에서는 실제 API가 없으므로 mock 데이터와 fake repository를 사용한다. - -### 3.3 Playwright MCP 활용 예정 영역 - -향후 화면 회귀 검증과 브라우저 기반 점검에는 Playwright MCP를 활용한다. - -적용 후보: - -- Flutter web 또는 preview 환경에서 로그인/직원목록/상세 화면 흐름 점검 -- mock 데이터 기반 검색/필터 UI 회귀 확인 -- 화면 깨짐, overflow, 주요 텍스트 노출 여부 확인 -- screenshot 기반 수동 리뷰 자료 생성 -- Baron SSO orgFront/backend 관리 화면 확인이 필요한 경우 브라우저 자동화 보조 - -현재 1차 앱은 Android/iOS Flutter 앱 중심이므로 Playwright MCP는 필수 검증 게이트가 아니다. Phase 3에서 web/preview 실행 방식이 정해지면 Playwright MCP 검증 시나리오와 실행 로그 기록 방식을 추가한다. - -## 4. 단계별 테스트 전략 - -### 4.1 Phase 3: Mock 기반 1차 UI - -목표: - -- API 없이 앱의 핵심 화면 흐름을 검증한다. -- 확정 API 계약과 Dart model이 화면에서 자연스럽게 사용되는지 확인한다. - -필수 테스트: - -- mock 직원 목록 렌더링 -- 검색어 입력 시 목록 필터링 -- 가족사 필터 선택 시 목록 필터링 -- 직원 상세 진입 -- 즐겨찾기 토글 상태 변경 -- 로그인 화면에서 직원목록 화면으로 이동 - -선택 테스트: - -- Playwright MCP 기반 web/preview 화면 smoke test -- Playwright MCP screenshot 기반 UI 회귀 확인 - -완료 기준: - -- `flutter analyze` 통과 -- `flutter test` 통과 -- 주요 mock 시나리오 widget test 추가 - -### 4.2 Phase 4: 실제 API 연동 - -목표: - -- Baron SSO와 orgFront 연동 시 계약 불일치를 조기에 발견한다. -- 인증/권한/오류 처리 흐름을 검증한다. - -필수 테스트: - -- API response parsing -- 로그인 성공/실패 -- 미등록 사용자 오류 -- session token 저장/삭제 -- 직원목록 API 성공/실패 -- 조직도 API 성공/실패 -- 401/403 발생 시 재로그인 또는 오류 안내 -- 네트워크 timeout 대응 - -완료 기준: - -- API client/repository 단위 테스트 -- staging 또는 mock server 기반 연동 테스트 -- API 계약 문서와 구현 응답 필드 일치 확인 - -### 4.3 Phase 5: 핵심 액션 - -목표: - -- 전화걸기, 문자보내기, 즐겨찾기 기능을 사용자 흐름 기준으로 검증한다. - -필수 테스트: - -- 전화번호가 없는 직원의 call/sms 액션 비활성 -- 전화번호가 있는 직원의 call/sms URL 생성 -- 즐겨찾기 로컬 저장/삭제/복원 -- 앱 재실행 후 즐겨찾기 유지 - -완료 기준: - -- 플랫폼 액션 wrapper 테스트 -- 즐겨찾기 repository 테스트 -- 수동 검증 체크리스트 작성 - -### 4.4 Phase 6: 빌드/배포 준비 - -목표: - -- Android APK와 최소 iOS 준비 상태를 확인한다. -- 운영 배포 전 보안 민감 영역을 재검토한다. - -필수 테스트: - -- Android debug APK 빌드 -- 앱 시작 smoke test -- 로그인/검색/상세/즐겨찾기 주요 흐름 수동 검증 -- token 저장 위치 검토 -- 전화번호/이메일/직급 노출 범위 검토 - -완료 기준: - -- APK 빌드 성공 -- 주요 수동 검증 체크리스트 통과 -- 운영 배포 전 보안 재검토 항목 문서화 - -## 5. 커버리지 정책 - -초기 개발 속도를 고려하여 전체 라인 커버리지 수치를 즉시 강제하지 않는다. - -단계별 기준: - -| 단계 | 기준 | -| --- | --- | -| Phase 3 | 핵심 model과 mock UI 흐름 테스트 확보 | -| Phase 4 | API client/repository/error 처리 테스트 확보 | -| Phase 5 | 즐겨찾기와 연락 액션 테스트 확보 | -| Phase 6 | 주요 기능 회귀 테스트와 수동 검증 체크리스트 확보 | - -장기 목표: - -- 핵심 도메인/model/repository 라인 커버리지 80% 이상 -- 로그인, 개인정보, token 처리 영역 테스트 누락 없음 -- 주요 사용자 시나리오 90% 이상 테스트 또는 수동 체크리스트로 관리 - -## 6. 보안 민감 영역 테스트 - -아래 항목은 일반 UI 변경보다 높은 기준으로 검증한다. - -- 전화번호 로그인 -- SSO 미등록 사용자 처리 -- session token 저장/삭제 -- 로그아웃 -- 개인정보 노출 필드 -- 직원 검색/상세 조회 -- 네트워크 오류와 인증 만료 - -원칙: - -- 미등록 사용자 여부를 과도하게 드러내는 메시지를 피한다. -- 전화번호 원문을 로그에 남기지 않는다. -- token 값을 테스트 fixture나 로그에 실제값으로 남기지 않는다. -- 개인정보 마스킹 정책이 변경되면 model, UI, test를 함께 갱신한다. - -## 7. Mock 데이터 정책 - -Mock 데이터는 확정 API 계약과 같은 field 이름을 사용한다. - -필수 mock case: - -- 로그인 성공 사용자 -- 로그인 실패 사용자 -- 직원목록 0건 -- 직원목록 다건 -- 가족사 2개 이상 -- 조직도 parent/child 구조 -- 전화번호가 없는 직원 -- 이메일이 없는 직원 -- 즐겨찾기 등록된 직원 - -Mock 데이터가 API 계약과 달라지는 경우 API 계약 문서를 먼저 확인하고, 필요한 경우 계약 문서와 model/test를 함께 수정한다. - -## 8. 리포트 및 기록 - -자동화 검증 결과는 커밋 메시지 또는 작업 완료 보고에 아래 형식으로 요약한다. - -```text -검증: -- ./scripts/flutter-docker.sh analyze -- ./scripts/flutter-docker.sh test -``` - -세부 테스트 실행 결과는 월별 누적 로그에 기록한다. - -```text -docs/test-logs/YYYY-MM-test-execution-log.md -``` - -예시: - -```text -docs/test-logs/2026-07-test-execution-log.md -``` - -각 로그 항목은 `YYYY-MM-DD HH:mm KST` 단위로 남기고, 목적, 실행 명령, 결과, 주요 출력, 후속 조치를 포함한다. - -실행하지 못한 검증이 있으면 이유를 함께 기록한다. - -## 9. 참고 문서와 우선순위 - -참고 원문: - -- `docs/references/ai-testing/ai_testing_policy_draft.md` -- `docs/references/ai-testing/tdc114plus_test_strategy.md` -- `docs/tdc114plus-script-automation-plan-2026-07-02.md` -- `docs/test-logs/README.md` - -본 문서는 위 참고문서보다 `tdc114plus` 개발에 우선 적용한다. - -정책 우선순위: - -1. `docs/tdc114plus-development-decision-brief-2026-07-01.md` -2. `docs/tdc114plus-work-progress-timetable-2026-07-02.md` -3. `docs/tdc114plus-development-policy-2026-07-02.md` -4. `docs/tdc114plus-testing-policy-2026-07-02.md` -5. `docs/tdc114plus-api-contract-2026-07-02.md` -6. `docs/baron-sso-reference-source-policy-2026-07-02.md` -7. `docs/references/` diff --git a/docs/tdc114plus-work-progress-timetable-2026-07-02.md b/docs/tdc114plus-work-progress-timetable-2026-07-02.md deleted file mode 100644 index ad514d8..0000000 --- a/docs/tdc114plus-work-progress-timetable-2026-07-02.md +++ /dev/null @@ -1,143 +0,0 @@ -# tdc114plus 작업진행 절차 및 타임테이블 - -작성일: 2026-07-02 -관리 원칙: 신규 작업이 발생하면 본 문서의 작업 목록과 타임테이블을 수정/추가하여 최신 상태로 유지한다. - -## 1. 현재 기준 - -`tdc114plus`는 Baron SSO 등록 사용자를 대상으로 하는 직원검색/조직도 모바일 앱이다. - -1차 개발은 아래 기본 기능에 집중한다. - -- Baron SSO 전화번호 로그인 -- Baron SSO 등록 사용자만 앱 사용 허용 -- Baron SSO `orgFront` 기반 개인/조직 정보 연계 -- 직원검색 -- 전화번호검색 -- 가족사 필터 -- 조직도 -- 직원목록 -- 전화걸기 -- 문자보내기 -- 즐겨찾기 - -1차 보류 기능은 아래와 같다. - -- 공지사항 -- 전자결재 -- 수신전화식별 -- 수신팝업 - -## 2. 작업진행 절차 - -| 순서 | 단계 | 상태 | 작업 내용 | 산출물 | -| --- | --- | --- | --- | --- | -| 1 | 저장소 초기화 | 완료 | Gitea `tdc114plus` 저장소 clone, `main` 브랜치 생성, 초기 문서/스크립트 구성 | 초기 커밋 | -| 2 | 문서 이관 | 완료 | Baron SSO에 보관한 신규 앱 판단 문서와 개발환경 구성 문서를 `tdc114plus/docs/`로 이관 | `docs/*.md` | -| 3 | Flutter 앱 골격 생성 | 완료 | `app/` 하위에 Android/iOS Flutter 프로젝트 생성 | Flutter 기본 프로젝트 | -| 4 | Baron Safe식 기본 구조 반영 | 완료 | `core`, `features`, `shared` 방향의 기본 구조와 라우팅/상태관리 의존성 추가 | 앱 구조 초안 | -| 5 | 기본 화면 뼈대 구성 | 완료 | Baron SSO 전화번호 로그인 화면, 직원검색 홈 화면 초안 구성 | 로그인/직원검색 화면 | -| 6 | Docker Flutter 실행환경 구성 | 완료 | 로컬 Flutter 부재 대응용 Docker Flutter 스크립트 구성 | `scripts/flutter-docker.sh` | -| 7 | 기본 검증 | 완료 | `flutter analyze`, `flutter test` 통과 확인 | 검증 결과 | -| 8 | Baron Safe 참고 정책 이관 | 완료 | Baron Safe 진행 시 생성한 개발 정책 관련 md 파일을 참고 폴더로 복사 | `docs/references/baron-safe-policies/` | -| 9 | Baron SSO 참조 소스 기준 정리 | 완료 | tdc114plus 개발 시 참조할 Baron SSO 원격/브랜치/업데이트 정책 정리 | `docs/baron-sso-reference-source-policy-2026-07-02.md` | -| 10 | 최신 Baron SSO API 개발 worktree 생성 | 완료 | `origin/dev` 기준 `feature/tdc114plus-api` worktree를 생성해 orgFront/backend 확인 및 API 개발 준비 | `/home/ubuntu/workspace/baron-sso-tdc114plus-api` | -| 11 | tdc114plus 개발 정책 정리 | 완료 | Baron SSO API 생성 우선 원칙, VS Code 기반 AI 개발 방식, Flutter/플랫폼 구현 원칙 정리 | `docs/tdc114plus-development-policy-2026-07-02.md` | -| 12 | API 계약 정리 | 완료 | Baron SSO 로그인 API, orgFront 직원/조직 API 계약 정리 | `docs/tdc114plus-api-contract-2026-07-02.md` | -| 13 | API 계약 검토 및 확정 | 완료 | API 계약 초안의 추가 확인사항 검토 후 1차 구현 기준 확정 | `docs/tdc114plus-api-contract-2026-07-02.md` | -| 14 | 데이터 모델 설계 | 완료 | 직원, 조직, 가족사, 즐겨찾기 모델 정의 | Dart model 및 model test | -| 15 | 테스트 정책 정식화 | 완료 | AI testing 참고 초안을 tdc114plus Flutter 앱/API/보안 중심 테스트 정책으로 재해석 | `docs/tdc114plus-testing-policy-2026-07-02.md` | -| 16 | 테스트 자동화 스크립트 초기 구성 | 완료 | 테스트 정책 기반 scripts 추가 및 scaffold 상태 문서화 | `scripts/*.sh`, `docs/tdc114plus-script-automation-plan-2026-07-02.md` | -| 17 | 테스트 실행 로그 관리 체계 생성 | 완료 | 월별 누적 테스트 로그 폴더와 2026-07 로그 파일 생성 | `docs/test-logs/` | -| 18 | Mock 데이터 기반 화면 확장 | 완료 | 직원목록, 검색, 가족사 필터, 조직도, 직원 상세, 즐겨찾기 화면을 mock 데이터로 우선 구현 | 동작 가능한 UI 및 widget test | -| 19 | Baron SSO 로그인 연동 | 다음 작업 | 전화번호 입력 후 SSO 등록 인원 여부 확인 연동 | 로그인 client/repository | -| 20 | orgFront 데이터 연동 | 대기 | 직원/조직 데이터 API 연동 | directory/organization client | -| 21 | 전화/문자 액션 구현 | 대기 | `url_launcher` 기반 전화걸기/문자보내기 구현 | 연락 액션 | -| 22 | 즐겨찾기 구현 | 대기 | 1차 로컬 저장 기반 즐겨찾기 구현 | favorites feature | -| 23 | Android APK 빌드 확인 | 대기 | debug APK 빌드 및 실행 확인 | APK 산출물 | - -## 3. 단계별 타임테이블 - -| 단계 | 예상 순서 | 목표 | 주요 작업 | 완료 기준 | -| --- | --- | --- | --- | --- | -| Phase 0 | 완료 | 저장소와 개발환경 출발점 확보 | clone, 문서 이관, README, scripts 구성 | Gitea `main` push 완료 | -| Phase 1 | 완료 | Flutter 앱 실행 골격 확보 | Flutter create, 라우터, 로그인/직원검색 화면 초안 | analyze/test 통과 | -| Phase 2 | 완료 | Baron SSO 참조 기준 확정 및 API 계약 준비 | 공식 `origin/dev` 기준 확인, API 개발 worktree 생성, Baron Safe 참고 정책 확인 | `feature/tdc114plus-api` worktree 생성 | -| Phase 2-1 | 완료 | API 계약 초안 작성 | 개발 정책 확인 후 SSO 로그인 API, orgFront 직원/조직 API, 응답 필드, 오류 정책 정리 | API 계약 초안 작성 완료 | -| Phase 2-2 | 완료 | API 계약 검토 및 확정 | token 종류, 전화번호 로그인 보안 수준, 개인정보 마스킹 범위, 즐겨찾기 동기화 여부 확인 | API 계약 확정본 | -| Phase 2-3 | 완료 | Dart 데이터 모델 설계 | 확정된 API 계약 기준으로 직원, 조직, 로그인, 즐겨찾기 model 정의 | analyze/test 통과 | -| Phase 2-4 | 완료 | 테스트 정책 정식화 | AI testing 참고 초안을 tdc114plus 적용 기준으로 정리 | `docs/tdc114plus-testing-policy-2026-07-02.md` | -| Phase 2-5 | 완료 | 테스트 자동화 스크립트 초기 구성 | 즉시 실행 가능한 quality/format/report 스크립트와 scaffold 스크립트 추가 | `docs/tdc114plus-script-automation-plan-2026-07-02.md` | -| Phase 2-6 | 완료 | 테스트 실행 로그 관리 체계 생성 | 월별 누적 테스트 로그 문서와 작성 규칙 추가 | `docs/test-logs/` | -| Phase 3 | 완료 | Mock 기반 1차 UI 완성 | 직원목록, 검색, 가족사 필터, 조직도, 상세 화면 구성 | analyze/test 통과 | -| Phase 4 | 다음 | 실제 API 연동 | SSO 로그인, orgFront 직원/조직 데이터 연동 | 등록 사용자 로그인 및 직원목록 조회 | -| Phase 5 | 이후 | 핵심 액션 완성 | 전화걸기, 문자보내기, 즐겨찾기 저장 | 1차 기본 기능 수동 검증 | -| Phase 6 | 이후 | 빌드/배포 준비 | Android debug APK, README 실행법, 잔여 이슈 정리 | APK 빌드 성공 | - -## 4. 다음 작업 판단 - -현재 다음 작업은 **Phase 4: 실제 API 연동 준비 및 Baron SSO 로그인 연동**이다. - -공식 Baron SSO `origin/dev` 기준의 API 개발용 worktree는 `/home/ubuntu/workspace/baron-sso-tdc114plus-api`에 생성 완료했다. 기존 `baron-sso` 작업 브랜치는 수정/미추적 파일이 많으므로 직접 merge/rebase하지 않는다. - -API 계약 정리 시 아래 문서를 우선 참고한다. - -- `docs/tdc114plus-development-policy-2026-07-02.md` -- `docs/tdc114plus-testing-policy-2026-07-02.md` -- `docs/baron-sso-reference-source-policy-2026-07-02.md` -- `docs/references/baron-safe-policies/api-contract.md` -- `docs/references/baron-safe-policies/runtime-config.md` -- `docs/references/baron-safe-policies/nonstandard-phone-only-login-technical-review-2026-06-23.md` - -우선 정리할 내용: - -1. Baron SSO 전화번호 로그인 요청/응답 형식 -2. SSO 미등록 사용자 응답 정책 -3. 로그인 성공 후 앱이 저장하거나 유지해야 할 값 -4. orgFront 직원 목록 API 경로와 응답 필드 -5. orgFront 조직도 API 경로와 응답 필드 -6. 가족사 필터 기준 필드 -7. 개인정보 마스킹 또는 권한 필드 필요 여부 -8. API 실패/네트워크 오류 시 앱 표시 정책 - -API 계약 확정본: - -- `docs/tdc114plus-api-contract-2026-07-02.md` - -1차 구현 기준 확정사항: - -1. 전화번호 로그인은 등록자 확인, rate limit, 감사 로그, generic error message 기준으로 구현한다. -2. token은 기존 Baron SSO session token을 1차 재사용한다. -3. 개인정보는 Baron SSO 등록 사용자에게 기본 필드를 노출한다. -4. 즐겨찾기는 1차 앱 로컬 저장으로 구현한다. - -## 5. 신규 작업 추가 규칙 - -새 작업이 발생하면 아래 기준으로 본 문서를 갱신한다. - -- 바로 진행할 작업이면 `작업진행 절차`에 상태 `다음 작업`으로 추가한다. -- 후속 검토 작업이면 상태 `대기`로 추가한다. -- 보류 결정된 작업은 1차 범위와 섞지 않고 별도 보류 목록에 추가한다. -- 완료된 작업은 상태를 `완료`로 바꾸고 산출물 위치를 기록한다. -- 일정 또는 우선순위가 바뀌면 `단계별 타임테이블`의 Phase를 수정한다. - -## 6. 질문 및 확인 발생 시 처리 순서 - -작업 진행 중 확인사항이나 질문이 발생하면 아래 순서로 처리한다. - -1. 관련 정책/결정/참고 md 파일을 먼저 확인한다. -2. 문서 기준으로 판단 가능한 내용은 문서 기준에 따라 진행한다. -3. 문서 확인 후에도 결정이 필요하거나 정책 충돌이 있으면 사용자에게 질문한다. -4. 질문 시에는 확인한 문서, 판단 지점, 가능한 선택지, 권장안을 함께 제시한다. -5. 사용자 답변으로 새 결정이 생기면 관련 md 파일과 본 타임테이블을 갱신한다. - -## 7. 현재 원격 반영 상태 확인 - -`tdc114plus` 원격 저장소 반영 상태는 아래 명령으로 확인한다. - -```bash -git -C /home/ubuntu/workspace/tdc114plus log --oneline origin/main -n 10 -git -C /home/ubuntu/workspace/tdc114plus status --short --branch -``` - -현재 문서 기준 다음 작업은 `Phase 4: 실제 API 연동 준비 및 Baron SSO 로그인 연동`이다. diff --git a/docs/test-logs/2026-07-test-execution-log.md b/docs/test-logs/2026-07-test-execution-log.md index 7a52630..82e08bb 100644 --- a/docs/test-logs/2026-07-test-execution-log.md +++ b/docs/test-logs/2026-07-test-execution-log.md @@ -5,103 +5,641 @@ ## 2026-07-02 11:38 KST - API 계약 초안 문서화 - 목적: Baron SSO 로그인, 직원검색, 조직도 API 계약 초안 작성 상태 확인 -- 실행 명령: - - 문서 확인 및 git diff 확인 -- 결과: 통과 -- 주요 출력: - - `docs/tdc114plus-api-contract-2026-07-02.md` 생성 - - `docs/tdc114plus-work-progress-timetable-2026-07-02.md` 갱신 -- 후속 조치: - - API 계약 검토 및 확정 단계로 이동 +- 결과: [통과] ## 2026-07-02 12:10 KST - Dart API 모델 검증 - 목적: 확정 API 계약 기준 Dart model과 JSON parsing 테스트 검증 -- 실행 명령: - - `./scripts/flutter-docker.sh analyze` - - `./scripts/flutter-docker.sh test` -- 결과: 통과 -- 주요 출력: - - `flutter analyze`: No issues found - - `flutter test`: All tests passed -- 후속 조치: - - Phase 2-3 Dart 데이터 모델 설계 완료 - - 다음 단계는 Phase 3 Mock 기반 1차 UI 완성 +- 결과: [통과] ## 2026-07-02 13:05 KST - 테스트 정책 정식화 검토 - 목적: `ai_testing_policy_draft.md`를 tdc114plus에 적용 가능한 정책으로 재해석 -- 실행 명령: - - `docs/references/ai-testing/ai_testing_policy_draft.md` 확인 - - `docs/references/ai-testing/tdc114plus_test_strategy.md` 확인 -- 결과: 통과 -- 주요 출력: - - LLM/AI 추론 테스트 정책은 1차 앱 범위에서 제외 - - Flutter 앱/API/model/repository/보안 중심 테스트 정책으로 정식화 -- 후속 조치: - - `docs/tdc114plus-testing-policy-2026-07-02.md` 생성 +- 결과: [통과] ## 2026-07-02 13:20 KST - 테스트 자동화 스크립트 초기 검증 - 목적: 테스트 정책에 맞춘 자동화 스크립트 scaffold와 즉시 실행 가능 스크립트 검증 -- 실행 명령: - - `bash -n scripts/*.sh scripts/redteam/run_all.sh` - - `./scripts/perf_smoke.sh` - - `./scripts/mock-server.sh status` - - `./scripts/format-dart.sh` - - `./scripts/quality-gate.sh` -- 결과: 통과 -- 주요 출력: - - shell 문법 검사 통과 - - `perf_smoke.sh`: app/test 파일 수 출력, runtime probe는 아직 미구현 - - `mock-server.sh status`: mock server not running - - `format-dart.sh`: Formatted 16 files, 0 changed - - `quality-gate.sh`: analyze 통과, All tests passed -- 후속 조치: - - `docs/tdc114plus-script-automation-plan-2026-07-02.md` 생성 - - Phase 3부터 `format-dart.sh`, `quality-gate.sh`를 기본 검증 명령으로 사용 +- 결과: [통과] ## 2026-07-02 13:35 KST - 테스트 로그 관리 체계 생성 - 목적: 테스트 진행과 결과를 월별 md 파일에 누적 기록하는 구조 생성 -- 실행 명령: - - `mkdir -p docs/test-logs` - - `docs/test-logs/README.md` 작성 - - `docs/test-logs/2026-07-test-execution-log.md` 작성 -- 결과: 통과 -- 주요 출력: - - 테스트 로그 저장 위치: `docs/test-logs/` - - 월별 누적 파일명: `YYYY-MM-test-execution-log.md` - - 세부 항목은 `YYYY-MM-DD HH:mm KST` 단위로 기록 -- 후속 조치: - - 이후 테스트/검증 실행 시 `docs/test-logs/2026-07-test-execution-log.md`에 계속 누적 +- 결과: [통과] ## 2026-07-02 13:45 KST - Playwright MCP 향후 활용 정책 반영 - 목적: 추후 Playwright MCP를 tdc114plus 테스트 정책에 활용할 수 있도록 예정 영역 명시 -- 실행 명령: - - `docs/tdc114plus-testing-policy-2026-07-02.md` 갱신 - - `docs/tdc114plus-script-automation-plan-2026-07-02.md` 갱신 -- 결과: 통과 -- 주요 출력: - - Playwright MCP는 현재 필수 게이트가 아닌 향후 web/preview 화면 회귀 검증 후보로 분리 - - Phase 3 선택 테스트에 Playwright MCP 기반 smoke/screenshot 검증 후보 추가 -- 후속 조치: - - Flutter web/preview 실행 방식이 정해지면 Playwright MCP 시나리오와 로그 기록 방식을 구체화 +- 결과: [통과] ## 2026-07-02 14:05 KST - Phase 3 Mock UI 1차 구현 검증 - 목적: 직원목록, 검색, 가족사 필터, 조직도, 직원 상세, 즐겨찾기 mock UI 구현 결과 검증 -- 실행 명령: +- 결과: [실패 후 통과] +- 명령: - `./scripts/format-dart.sh` - `./scripts/quality-gate.sh` -- 결과: 1차 실패 후 수정하여 통과 - 주요 출력: - - `format-dart.sh`: `directory_screen.dart`, `widget_test.dart` 포맷 적용 - 1차 `quality-gate.sh`: analyze 통과, widget test 4건 실패 - - 실패 원인: 전역 `GoRouter`가 이전 테스트의 `/directory` 위치를 유지하여 helper가 로그인 버튼을 찾지 못함 - - 수정 내용: 테스트 helper가 이미 직원검색 화면이면 로그인 단계를 건너뛰도록 보정 - - 최종 `quality-gate.sh`: analyze 통과, `flutter test` All tests passed + - 원인: 전역 `GoRouter`가 이전 테스트의 `/directory` 위치를 유지해 로그인 버튼 탐색 실패 + - 조치: 테스트 helper가 이미 직원검색 화면이면 로그인 단계를 건너뛰도록 보정 + - 최종: analyze 통과, `flutter test` All tests passed - 후속 조치: - - Phase 3 Mock 기반 1차 UI 완성 처리 - - 다음 단계는 Phase 4 실제 API 연동 준비 및 Baron SSO 로그인 연동 + - Phase 4 실제 API 연동 준비 및 Baron SSO 로그인 연동 진행 + +## 2026-07-02 14:25 KST - Phase 4 Baron SSO 로그인 client 1차 검증 + +- 목적: `POST /api/v1/tdc114plus/auth/phone-login` 계약 기반 Flutter auth client, repository, session store, 로그인 화면 상태 검증 +- 결과: [실패 후 통과] +- 명령: + - `./scripts/format-dart.sh` + - `./scripts/quality-gate.sh` +- 주요 출력: + - 1차 `quality-gate.sh`: analyzer lint 5건 실패 + - 2차 `quality-gate.sh`: widget test 1건 실패 + - 원인: auth client/repository 생성자 초기화 lint, 전역 `GoRouter` 상태 공유 + - 조치: 생성자 필드 초기화 방식 정리, 앱 build 시 `createAppRouter()`로 새 router 생성 + - 최종: analyze 통과, `flutter test` All tests passed +- 후속 조치: + - Baron SSO backend 전용 phone-login endpoint 구현 + +## 2026-07-02 14:45 KST - Phase 4 Baron SSO phone-login endpoint 1차 검증 + +- 목적: Baron SSO backend에 `tdc114plus` 전용 전화번호 로그인 endpoint와 응답 DTO, 전화번호 audit body masking 구현 검증 +- 결과: [통과] + +## 2026-07-02 15:10 KST - Phase 4 직원/조직 API client 1차 검증 + +- 목적: Baron SSO backend의 `tdc114plus` 직원/조직 endpoint와 Flutter directory/organization API client 계약 검증 +- 결과: [통과] + +## 2026-07-02 15:20 KST - 테스트 로그 작성 규칙 간소화 + +- 목적: 통과 로그는 컴팩트하게, 실패 발생 로그만 자세히 남기도록 규칙과 기존 로그 정리 +- 결과: [통과] + +## 2026-07-02 15:25 KST - 테스트 로그 형식 재정의 + +- 목적: 통과 시 `[목적/결과]`, 실패 시 `[목적/명령/주요 출력/후속 조치]` 형식으로 로그 작성 규칙 재정의 +- 결과: [통과] + +## 2026-07-02 15:35 KST - Phase 4 직원검색 repository 상태 전환 검증 + +- 목적: Flutter 직원검색/조직도 mock 화면을 `DirectoryRepository`/`FutureProvider` 기반 상태로 전환하고 API repository 주입 구조와 기존 UI 흐름을 검증 +- 결과: [통과] + +## 2026-07-02 15:45 KST - Phase 4 Baron SSO 직원/조직 응답 정합성 보강 검증 + +- 목적: tdc114plus backend 직원/조직 endpoint의 tenant type 제한, 하위 조직 포함 `totalMemberCount`, 직원 정렬, 상세 추가소속 변환 로직 검증 +- 결과: [통과] + +## 2026-07-02 15:55 KST - Phase 4 API smoke 스크립트 및 로컬 gateway 확인 + +- 목적: `TDC114_API_BASE` 대상 tdc114plus API smoke 자동화 추가와 현재 로컬 Baron SSO gateway 접근 상태 확인 +- 결과: [실패] +- 명령: + - `bash -n scripts/api-smoke.sh` + - `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh` +- 주요 출력: + - `bash -n scripts/api-smoke.sh`: 통과 + - `api-smoke.sh`: `GET /api/v1/tdc114plus/directory/employees` 단계에서 HTTP 502 + - Docker 상태: `baron_gateway`, DB, Redis, ClickHouse는 실행 중이나 `baron_backend` 컨테이너는 미실행 + - Baron SSO API worktree에는 `.env.sample`만 있고 `.env`/`config/.generated` 실행 설정이 없어 backend compose 실행 전 환경 준비 필요 +- 후속 조치: + - Baron SSO backend 실행 환경 파일과 민감정보 없는 `TDC114_SMOKE_PHONE` 테스트 계정 준비 후 API smoke 재실행 + +## 2026-07-03 10:20 KST - Phase 4 org-context external fallback 보강 + +- 목적: 외부 Baron org-context `includeUsers=true` 오류 발생 시 tdc114plus backend가 기존 DB 기반 직원검색/조직도 fallback을 사용하도록 보강 +- 결과: [코드 수정 완료] +- 주요 작업: + - `backend/internal/handler/tdc114plus_handler.go`의 `ListEmployees`, `GetEmployee`, `ListTenants`, `GetOrgChart`에서 external org-context 요청 실패 시 DB fallback으로 전환 + - `backend/internal/handler/tdc114plus_handler_test.go`에 external org-context 500 에러 시 DB fallback 동작 검증 테스트 추가 +- 검증: + - `go` tooling 부재로 로컬 `go test` 실행 불가 + - 코드 및 테스트 구조 수정 완료 +- 후속 조치: + - `go` 환경 설치 후 `go test ./backend/internal/handler` 실행 + +## 2026-07-02 15:05 KST - Phase 4 Flutter integration_test scaffold 검증 + +- 목적: `app/integration_test/` scaffold와 `scripts/integration_tests.sh` Dart define 연동, 디바이스 사전조건 안내 동작 검증 +- 결과: [실패] +- 명령: + - `./scripts/format-dart.sh` + - `./scripts/quality-gate.sh` + - `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/integration_tests.sh` +- 주요 출력: + - `format-dart.sh`: 통과 + - `quality-gate.sh`: analyze 통과, `flutter test` All tests passed + - `integration_tests.sh`: `integration_test` scaffold는 인식되지만 `No supported devices connected.` + - 현재 앱 프로젝트는 Android/iOS runner만 있고, Docker Flutter 환경에서 연결된 Android emulator/device 또는 추가 desktop/web runner가 없어 integration runtime 시작 불가 + - 스크립트에 디바이스 부재 시 원인과 다음 조치를 안내하는 메시지 추가 +- 후속 조치: + - Android emulator/device 연결 또는 추가 desktop/web runner 준비 후 `scripts/integration_tests.sh` 재실행 + +## 2026-07-02 15:15 KST - 연락 액션 wrapper 및 widget test 검증 + +- 목적: `url_launcher` 기반 전화/SMS wrapper와 직원 상세 액션 버튼 연동, 버튼 비활성/호출 흐름 검증 +- 결과: [실패 후 통과] +- 명령: + - `./scripts/format-dart.sh` + - `./scripts/quality-gate.sh` +- 주요 출력: + - 1차 `quality-gate.sh`: analyzer lint 1건 실패 + - 2차 `quality-gate.sh`: widget test 1건 실패 + - 원인: async gap 뒤 `BuildContext` 사용 lint, 검색 입력과 직원명 텍스트가 같은 finder 충돌 + - 조치: `ScaffoldMessenger`를 await 전 미리 확보하고, widget test에서 직원 목록 항목 finder를 명확히 지정 + - 최종: analyze 통과, `flutter test` All tests passed +- 후속 조치: + - 실제 Android/iOS 환경에서 전화/문자 launch smoke 진행 + +## 2026-07-02 15:21 KST - Phase 5 로컬 즐겨찾기 구현 검증 + +- 결과: [실패 후 통과] +- 목적: `SharedPreferences` 기반 즐겨찾기 로컬 저장소와 직원목록/조직도/상세 화면의 즐겨찾기 토글 흐름 검증 +- 명령: + - `./scripts/format-dart.sh` + - `./scripts/quality-gate.sh` +- 주요 출력: + - 1차 `quality-gate.sh`: analyzer lint 1건 실패 + - 2차 `quality-gate.sh`: favorites repository test 2건 실패 + - 원인: 생성자 필드 초기화 lint, `SharedPreferencesAsync`의 테스트 platform mock 초기화 부재 +- 조치: 저장소 생성자 정리, 테스트용 `FavoritesKeyValueStore` 주입 구조 추가 +- 최종: analyze 통과, `flutter test` All tests passed +- 후속 조치: + - 실제 Android/iOS 환경에서 앱 재실행 후 즐겨찾기 유지 수동 검증 + +## 2026-07-02 15:29 KST - Phase 4 세션 복원 및 인증 만료 재로그인 검증 + +- 결과: [실패 후 통과] +- 목적: 앱 시작 시 저장 세션 자동 진입과 직원/조직 조회 `401/403` 발생 시 재로그인 흐름 검증 +- 명령: + - `./scripts/format-dart.sh` + - `./scripts/quality-gate.sh` +- 주요 출력: + - 1차 `quality-gate.sh`: auth gate `BuildContext` async gap lint 1건, widget test helper const/lifecycle 문제로 test 실패 + - 원인: `AuthGateScreen` post-frame async redirect 구현의 context lint, root route가 추가되며 기존 widget test가 로그인 화면 렌더링 완료 전 입력 +- 조치: router 참조를 동기 확보해 redirect 처리, test helper가 `AuthGate` 완료 후 상호작용하도록 보정 +- 최종: analyze 통과, `flutter test` All tests passed +- 후속 조치: + - 실제 Baron SSO 환경에서 세션 만료 토큰 또는 권한 없는 응답 기준 재로그인 수동 검증 + +## 2026-07-02 15:34 KST - Phase 4 Baron SSO 실행 준비 상태 점검 스크립트 검증 + +- 결과: [실패] +- 목적: Baron SSO API worktree의 `.env`, compose, config, Docker runtime 준비 상태를 자동 점검해 API smoke blocker를 빠르게 확인 +- 명령: + - `bash -n scripts/check-baron-api-env.sh` + - `./scripts/check-baron-api-env.sh` +- 주요 출력: + - `bash -n`: 통과 + - `check-baron-api-env.sh`: Baron SSO worktree, compose, `.env.sample`, restored compose reference 확인 + - blocker: `/home/ubuntu/workspace/baron-sso-tdc114plus-api/.env` 부재 + - warning: `baron_net`, `ory-net`, `baron_backend`, `baron_gateway` 상태가 미준비 또는 현재 세션에서 확인 불가 +- 후속 조치: + - Baron SSO worktree에 `.env`를 준비하고 Docker runtime 상태를 맞춘 뒤 `check-baron-api-env.sh`, `api-smoke.sh` 순서로 재실행 + +## 2026-07-02 15:48 KST - Phase 4 Baron SSO 로컬 runtime 재기동 및 API smoke 재검증 + +- 결과: [실패 후 부분 통과] +- 목적: Baron SSO worktree `.env` bootstrap, backend/userfront 재기동, `tdc114plus` 최소 API smoke 재확인 +- 명령: + - `./scripts/bootstrap-baron-api-env.sh` + - `./scripts/check-baron-api-env.sh` + - `docker compose up -d backend userfront` + - `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh` +- 주요 출력: + - `.env.sample` 기반 Baron SSO `.env` 생성 및 localhost/알림 비활성 override 추가 + - stale `baron_backend`, `baron_userfront` 컨테이너 이름 충돌 정리 후 runtime 재기동 + - 1차 `api-smoke.sh`: sandbox localhost 제한으로 `curl (7)` 또는 userfront/gateway 준비 타이밍 영향으로 실패 + - 재검증: `unauthorized directory guard` HTTP 401, `invalid phone-login validation` HTTP 400 통과 + - authenticated smoke는 `TDC114_SMOKE_PHONE` 미설정으로 skip +- 후속 조치: + - 민감정보 없는 `TDC114_SMOKE_PHONE` 테스트 계정 준비 후 authenticated smoke 재실행 + +## 2026-07-02 15:50 KST - Phase 4 ORY runtime 재가동 확인 + +- 결과: [통과] +- 목적: authenticated smoke에 필요한 Kratos/Hydra/Keto/Oathkeeper 로컬 runtime 상태 복구 확인 +- 명령: + - `docker start ory_postgres ory_clickhouse ory_kratos ory_hydra ory_keto ory_oathkeeper ory_vector` + - `docker ps --format '{{.Names}} {{.Status}}'` + - `TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh` +- 주요 출력: + - `baron_backend`, `baron_userfront`, `baron_gateway` healthy 확인 + - `ory_postgres`, `ory_kratos`, `ory_hydra`, `ory_keto`, `ory_oathkeeper` running 확인 + - 최소 API smoke 재실행 시 401/400 guard 검증 유지, authenticated smoke는 테스트 계정 미설정으로 skip + +## 2026-07-02 15:54 KST - Phase 4 authenticated smoke env 주입 경로 검증 + +- 결과: [실패] +- 목적: `api-smoke.sh`, `integration_tests.sh`가 `scripts/.env.smoke.local` 기반으로 authenticated smoke 값을 자동 로드하는지 검증 +- 명령: + - `bash -n scripts/api-smoke.sh` + - `bash -n scripts/integration_tests.sh` + +## 2026-07-06 08:40 KST - 신규 전화번호 승인 로그인 API 전환 검증 + +- 결과: [통과] +- 목적: 기존 선인증 `phone-login` 흐름과 별도로 `link/init -> link/poll -> 앱 세션 저장` 경로를 신규 API 형태로 추가하고, 기존 화면 영향 최소화 원칙을 지키는지 점검 +- 주요 작업: + - Flutter auth client, repository, model, login screen에 승인 링크 요청/대기/polling 흐름 추가 + - Baron SSO backend에 `POST /api/v1/tdc114plus/auth/link/init`, `POST /api/v1/tdc114plus/auth/link/poll` route 및 handler 추가 + - 기존 직원검색, 상세, 즐겨찾기 흐름이 신규 로그인 추가로 회귀하지 않도록 앱 측 상태 전이 보강 +- 검증: + - Flutter unit/widget 기준 신규 로그인 상태 흐름 반영 확인 + - backend handler/server test 기준 신규 route 동작 확인 +- 후속 조치: + - Android emulator 기준 수동 화면 점검과 실제 승인 완료 E2E 준비 + +## 2026-07-06 09:10 KST - local Baron SSO runtime 링크 로그인 smoke 검증 + +- 결과: [부분 통과] +- 목적: local Baron SSO runtime에서 `link/init`, `link/poll` API 계약과 기본 오류 응답이 실제 route 기준으로 동작하는지 확인 +- 명령: + - `TDC114_SMOKE_ENV_FILE=scripts/.env.smoke.local ./scripts/api-smoke.sh` +- 주요 출력: + - invalid `link/init` validation 400 확인 + - 임의 `pendingRef` 기준 `link/poll` expired pending 응답 확인 + - 실제 전화번호 `010-9136-5338` 기준 `link/init`은 `401 login_failed` + - 원인: local Baron SSO runtime에는 해당 번호의 identity/user mirror가 준비되지 않아 local 승인 완료 경로를 끝까지 검증할 수 없음 +- 후속 조치: + - staging Baron SSO 또는 동등 검증 환경에서 실제 승인 완료 E2E 검증 진행 + +## 2026-07-06 09:35 KST - Android emulator 신규 로그인 화면 흐름 점검 + +- 결과: [부분 통과] +- 목적: 에뮬레이터에서 신규 전화번호 승인 로그인 UI가 보이고, 로그인 이후 직원검색 진입 흐름이 기존처럼 유지되는지 확인 +- 검증: + - 로그인 화면 표시 확인 + - 빈 전화번호 validation 확인 + - 사용자 전화번호 입력 영역 및 로그인 요청 버튼 확인 + - 로그인 성공 후 `직원검색`, `검색 결과`, 직원 목록 표시 확인 +- 제한 사항: + - local runtime에서는 실제 승인 링크 완료까지 이어지는 E2E 성공을 아직 확인하지 못함 +- 후속 조치: + - 인증 대기 문구, 재시도, 세션 복원, 인증 만료 후 재로그인 흐름 추가 점검 + +## 2026-07-06 10:05 KST - staging API base 후보 점검 + +- 결과: [실패] +- 목적: staging Baron SSO 검증을 위해 제공된 `https://sso.hmac.kr`가 `tdc114plus` staging API base로 직접 사용 가능한지 확인 +- 명령: + - `TDC114_SMOKE_ENV_FILE=scripts/.env.staging.local ./scripts/api-smoke.sh` +- 주요 출력: + - `GET /api/v1/tdc114plus/directory/employees`에서 HTTP 404 + - 응답 본문: `{"error":"Cannot GET /api/v1/tdc114plus/directory/employees","code":"not_found"}` + - 해석: `https://sso.hmac.kr`는 Baron SSO 진입 주소일 수는 있으나, 현재 확인 기준으로 `tdc114plus` API route가 직접 노출된 staging base는 아님 +- 후속 조치: + - 정확한 staging `TDC114_API_BASE`와 신규 API 배포 여부 확인 필요 + +## 2026-07-06 10:30 KST - staging 반영 전 단계 분류 및 문서 반영 + +- 결과: [통과] +- 목적: 팀장 보고 전 단계로, staging 배포 전에 로컬/에뮬레이터/문서 기준으로 무엇을 먼저 끝내야 하는지 순서화 +- 주요 작업: + - 작업 기준 문서에 `Phase 4-2-a ~ 4-2-g` 하위 단계 추가 + - 각 단계별 실행 체크포인트 추가 + - staging 검증 시나리오 문서에 배포 전 수동 점검 체크리스트와 직전 확인 항목 추가 +- 후속 조치: + - 수동 점검 체크리스트 문서화 및 실제 체크 결과 누적 + +## 2026-07-06 11:20 KST - 로그인 완료 가정 Android emulator 기능점검 재시도 + +- 결과: [실패] +- 목적: local 승인 완료 E2E 대신, 로그인 완료를 가정한 post-login 기능을 Android emulator에서 integration test로 점검 +- 명령: + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/integration_tests.sh` +- 주요 출력: + - local `phone-login` bootstrap은 `401 login_failed` + - 스크립트는 이에 대응해 mock directory fallback 모드로 전환 + - 이후 Docker local ADB 연결에서 `172.21.128.1:5555 offline` + - Flutter runner는 Android target을 잡지 못해 `No supported devices connected.`로 종료 +- 해석: + - post-login mock fallback 로직 자체는 준비되었으나, 이번 실패 원인은 앱 기능이 아니라 현재 emulator/ADB 연결 상태다. +- 후속 조치: + - Windows emulator 실행 상태와 `5555` 연결 상태를 다시 확인한 뒤 integration test 재실행 + - `cp scripts/smoke.env.example /tmp/tdc114plus-smoke.env` + - `TDC114_SMOKE_ENV_FILE=/tmp/tdc114plus-smoke.env ./scripts/api-smoke.sh` +- 주요 출력: + - shell 문법 검사 통과 + - 임시 smoke env 파일 자동 로드 확인 + - 최소 guard smoke는 통과 + - 예시 전화번호 기준 `phone-login success` 단계는 HTTP 401 `login_failed` +- 후속 조치: + - `scripts/.env.smoke.local`에 실제 민감정보 없는 `TDC114_SMOKE_PHONE` 테스트 계정을 넣고 authenticated smoke 재실행 + +## 2026-07-02 16:03 KST - Phase 4 runtime 및 최소 API smoke 재검증 + +- 결과: [통과] +- 목적: Baron SSO local runtime 준비 상태와 tdc114plus 최소 API guard smoke 유지 여부 확인 + +## 2026-07-02 16:03 KST - Phase 4/5 Flutter quality gate 재검증 + +- 결과: [통과] +- 목적: 현재 Flutter 변경분의 format, analyze, widget/unit test 회귀 상태 확인 + +## 2026-07-02 16:08 KST - Phase 4 authenticated API smoke 재시도 + +- 결과: [실패 후 통과] +- 목적: `scripts/.env.smoke.local`의 실제 등록 전화번호로 tdc114plus phone-login, 직원목록, 조직도 authenticated smoke 확인 +- 명령: + - `./scripts/api-smoke.sh` + - `./scripts/check-baron-api-env.sh` + - `docker ps -a --format '{{.Names}} {{.Status}}'` + - `docker logs --tail 120 baron_backend` + - `docker exec baron_backend sh -lc 'cd /app && GOCACHE=/tmp/baron-sso-go-cache /usr/local/go/bin/go test ./internal/handler -run TestTdc114Plus -count=1'` + - `docker compose up -d --build backend` +- 주요 출력: + - unauthorized directory guard HTTP 401 통과 + - invalid phone-login validation HTTP 400 통과 + - 1차 phone-login success 단계에서 HTTP 503 `identity_provider_unavailable` + - backend 로그: `[Tdc114Plus] phone login session issue failed`, `IssueSession(loginID)` 경로에서 Ory provider가 `405 Method Not Allowed` 반환 + - 조치: `tdc114plus` phone-login session 발급을 기존 Baron SSO phone-login/headless 흐름과 같은 `InitiateLinkLogin` + Redis session polling 방식으로 전환 + - 2차 backend 로그: Kratos `return_to`가 `http://127.0.0.1`로 계산되어 `self_service_flow_return_to_forbidden` + - 조치: `tdc114plus` code-flow 초기화는 request host보다 configured `USERFRONT_URL`을 우선 사용하도록 보정 + - Docker runtime 점검은 0 failure, 0 warning이며 `baron_backend`, `baron_gateway`, Ory 핵심 컨테이너는 실행 중 + - focused backend test 통과: `ok baron-sso-backend/internal/handler` + - 최종 `api-smoke.sh`: phone-login HTTP 200, employee list HTTP 200, tenant list HTTP 200, orgchart HTTP 200 + - 실제 응답 shape/count 점검 중 directory에 tenant 없는 active 계정이 포함되는 불일치 발견 + - 조치: `tdc114plus` directory 대상 사용자를 조직도 표시 상태와 primary tenant 보유 기준으로 제한 + - 최종 count 재확인: directory employees 1, total 1, with_tenant 1, orgchart employees 1 + +## 2026-07-03 08:11 KST - Android integration 준비 시나리오 1차 진행 + +- 결과: [실패] +- 목적: Android emulator/device 통합테스트 실행을 위한 runtime, API smoke, device 인식 상태 확인 +- 명령: + - `./scripts/check-baron-api-env.sh` + - `docker compose up -d backend` + - `docker start ory_postgres ory_clickhouse ory_kratos ory_hydra ory_keto ory_oathkeeper ory_vector baron_userfront` + - `./scripts/api-smoke.sh` + - `./scripts/flutter-docker.sh devices` + - `which adb` + - `adb devices` + - `./scripts/integration_tests.sh` +- 주요 출력: + - 최초 runtime 점검에서 `baron_backend` 미실행 확인 후 backend 시작 + - 최초 API smoke는 Ory/Kratos/Hydra/Keto 컨테이너 중지로 phone-login HTTP 503 + - Ory/UserFront 컨테이너 시작 후 API smoke 통과: phone-login, employee list, tenant list, orgchart HTTP 200 + - Docker Flutter devices는 `Linux desktop`만 표시 + - WSL에는 `adb`가 없어 `adb devices` 실행 불가 + - integration test는 앱에 Linux runner가 없고 Android/iOS device가 없어 `No supported devices connected.` +- 후속 조치: + - Windows Android Studio emulator 또는 Android 실기기를 준비하고, WSL/Docker에서 ADB/device 접근이 가능하도록 구성한 뒤 재실행 + +## 2026-07-03 10:22 KST - Android emulator integration test 2차 진행 + +- 결과: [실패] +- 목적: Windows Android Studio emulator를 WSL/Docker Flutter CLI에서 인식시킨 뒤 `app/integration_test/app_smoke_test.dart` 실행 +- 명령: + - `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices` + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/integration_tests.sh` + - `nc -vz 172.21.128.1 5555` +- 주요 출력: + - Docker Flutter devices에서 Android emulator 인식 성공: `emulator-5554`, Android 15 API 35 + - `scripts/integration_tests.sh`를 실시간 출력 방식으로 개선해 Gradle 진행 상황 확인 가능 + - 첫 Android 빌드 중 Docker Flutter image 내부에 NDK 28.2.13676358, CMake 3.22.1 자동 설치 + - APK 빌드 성공: `Built build/app/outputs/flutter-apk/app-debug.apk` + - APK 설치 성공 + - test loading 단계에서 실패: `WebSocketChannelException: SocketException: Connection refused`, address `127.0.0.1`, dynamic VM service port +- 판단: + - 앱/API 로그인 실패가 아니라 remote Windows ADB server와 Docker Flutter CLI 조합에서 VM service port forward가 컨테이너의 `127.0.0.1`로 연결되지 않는 구조적 문제 + - Windows ADB server는 emulator를 볼 수 있고 Docker도 ADB server에는 접근 가능하지만, Flutter test runner가 연결해야 하는 forwarded VM service port는 Docker container localhost가 아니라 Windows host localhost 쪽에 생성되는 것으로 판단 + - WSL에서 Windows emulator adbd port `172.21.128.1:5555`는 현재 `Connection refused` +- 후속 조치: + - Windows 관리자 PowerShell에서 emulator adbd port `5555`도 `portproxy`로 노출 검토 + - Docker container 내부 ADB server가 `172.21.128.1:5555`에 직접 `adb connect`한 뒤 integration test를 실행하는 방식 검증 + - 또는 Windows host에서 Flutter CLI를 직접 실행하는 경로를 대안으로 검토 + +## 2026-07-03 11:06 KST - Android emulator integration test 3차 진행 + +- 결과: [실패 후 통과] +- 목적: Windows emulator adbd `5555` portproxy와 Docker local ADB server 방식으로 Flutter integration test 최종 검증 +- 명령: + - `nc -vz 172.21.128.1 5555` + - `TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/flutter-docker.sh devices` + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/integration_tests.sh` + - `./scripts/api-smoke.sh` +- 주요 출력: + - `172.21.128.1:5555` 연결 성공 + - 1차 Docker local ADB 연결은 `unauthorized`로 표시 + - Windows 사용자 ADB key(`/mnt/c/Users/user/.android/adbkey`)를 git ignored `.android-adb/`에 복사해 Docker `/root/.android`로 마운트 + - 이후 Docker local ADB 연결 성공: `172.21.128.1:5555 device` + - 최초 integration test 재실행은 앱 테스트 2건 통과 후 real API login test 실패 + - 원인 확인 중 host API smoke가 `502 Bad Gateway`로 실패했고 `baron_backend` 및 Ory 계열 컨테이너가 내려가 있었음 + - Ory/UserFront 컨테이너와 `baron_backend` 재시작 후 `api-smoke.sh` 통과: phone-login, employee list, tenant list, orgchart HTTP 200 + - 최종 integration test 통과: `+3: All tests passed!` +- 후속 조치: + - `ghcr.io/cirruslabs/flutter:stable` 컨테이너가 매번 새로 뜨며 NDK/CMake를 반복 설치해 Android integration test 시간이 길어짐 + - 반복 실행 시간을 줄이려면 Android SDK/Gradle cache volume을 `scripts/flutter-docker.sh`에 추가 검토 + +## 2026-07-06 15:15 KST - local 로그인 가능 사용자 확보 및 emulator post-login 점검 재시도 + +- 결과: [부분 성공] +- 목적: local Baron SSO runtime에서 테스트 번호를 실제 로그인 가능한 사용자로 맞춘 뒤 host smoke와 Android emulator post-login 기능점검을 재검증 +- 명령: + - `./scripts/api-smoke.sh` + - `/bin/bash -lc 'TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/integration_tests.sh'` + - `/bin/bash -lc 'ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices'` + - `/bin/bash -lc 'TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/flutter-docker.sh devices'` +- 주요 작업: + - local Kratos에 테스트 번호 `010-9136-5338`용 identity 생성 + - 동일 identity ID로 local Baron `users` row 동기화 + - `tdc114plus` `link/init`이 `pendingRef`를 반환하는 것과 `link/poll` 첫 응답이 `authorization_pending`인 것을 직접 확인 +- 주요 출력: + - host `api-smoke.sh` 재통과: `phone-login`, 직원목록, 가족사목록, 조직도 HTTP 200 + - `TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555` 경로: `failed to connect`, `172.21.128.1:5555 offline` + - 해당 상태로 `integration_tests.sh`는 Android device를 잡지 못하고 `No supported devices connected.` 종료 + - `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037` 경로: `adb: failed to check server version: protocol fault (couldn't read status)` +- 판단: + - local 앱/API 쪽 blocker였던 "로그인 가능한 사용자 없음" 문제는 해소됨 + - 현재 blocker는 Android emulator/Windows ADB/portproxy 계층이며, 앱 코드 변경 없이 Windows 측 emulator 재기동 또는 portproxy 복구가 우선 +- 다음 조치: + - Windows `adb devices`가 `device`인지 재확인 + - Windows `5037`, `5555` portproxy 상태 재확인 + - emulator가 `device` 상태로 돌아오면 동일 명령으로 `5-B` post-login 기능점검 재실행 + +## 2026-07-06 16:20 KST - emulator post-login 기능점검 최종 통과 + +- 결과: [성공] +- 목적: Windows emulator 복구 후 Android emulator에서 post-login 상태 기능점검과 integration smoke를 최종 통과 +- 명령: + - `/bin/bash -lc 'TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5557 ./scripts/flutter-docker.sh devices'` + - `/bin/bash -lc 'TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5557 ./scripts/integration_tests.sh'` +- 주요 작업: + - Windows `adb devices`에서 `emulator-5556 device` 확인 + - 관리자 PowerShell에서 `0.0.0.0:5557 -> 127.0.0.1:5557` portproxy 추가 + - smoke override 타입 처리와 integration test 시나리오를 `assume logged in` 모드와 충돌하지 않도록 정리 +- 주요 출력: + - Docker Flutter devices: `172.21.128.1:5557 device` + - Android APK 빌드/설치 성공 + - 최종 integration test 결과: `+4: All tests passed!` +- 확인 범위: + - 로그인 화면 smoke + - 빈 전화번호 validation smoke + - post-login 상태 기준 직원검색 진입 + - 즐겨찾기/직원 상세/전화/문자 버튼 노출 smoke + +## 2026-07-07 00:00 KST - Phase 6 실제 API smoke 완료, Android integration runtime 기준 재정렬 + +- 결과: [부분 통과] +- 목적: 실제 API smoke 완료 후 Android emulator bridge 기준 포트와 integration 실행 흐름을 최신 정책 기준으로 재정렬 +- 명령: + - `./scripts/api-smoke.sh` + - `TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5559 ./scripts/check-android-emulator-env.sh` + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5559 ./scripts/integration_tests.sh` +- 주요 출력: + - `api-smoke.sh`: unauthorized guard, validation, phone-login, employee list, tenant list, orgchart까지 통과 + - `check-android-emulator-env.sh`: `172.21.128.1:5559 offline` + - `integration_tests.sh`: Android preflight를 먼저 수행하도록 보강했고, 현재는 Flutter 실행 전에 `offline` 상태에서 중단 + - 현재 blocker는 앱/API 코드가 아니라 Windows emulator 또는 ADB/portproxy 상태다 +- 후속 조치: + - Windows Android Studio에서 emulator 1대만 실행 + - Windows `adb.exe devices`에서 `device` 상태 확인 + - `5559 -> 127.0.0.1:5559` portproxy 및 방화벽 rule 확인 후 integration 재실행 + +## 2026-07-07 00:20 KST - Phase 6 Android emulator integration smoke 재통과 + +- 결과: [통과] +- 목적: 활성 emulator `emulator-5560 device` 기준 bridge `172.21.128.1:5561`로 Android integration runner를 `flutter drive` 방식으로 재정렬한 뒤 실제 smoke를 재검증 +- 명령: + - `TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5561 ./scripts/check-android-emulator-env.sh` + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5561 ./scripts/integration_tests.sh` +- 주요 출력: + - preflight 통과: `172.21.128.1:5561 device` + - `scripts/integration_tests.sh`를 `flutter drive --driver=test_driver/integration_driver.dart --target=integration_test/app_smoke_test.dart` 기준으로 전환 + - Android APK 빌드/설치 성공 + - VM service 연결 성공 후 `All tests passed!` +- 확인 범위: + - 로그인 화면 smoke + - 빈 전화번호 validation smoke + - post-login 상태 기준 직원검색/상세/즐겨찾기 액션 smoke + +## 2026-07-07 02:55 KST - 직원검색 상단 칩/조직 drill-down 정책 반영 검증 + +- 결과: [통과] +- 목적: 직원검색 화면에서 `본인팀 칩 고정 노출`, `다른 회사 선택 후에도 본인팀 칩 유지`, `전체 > 회사 > 부서 > 개인` drill-down 규칙을 정책대로 반영했는지 검증 +- 명령: + - `./scripts/format-dart.sh` + - `../scripts/flutter-docker.sh test test/widget_test.dart test/directory/directory_filters_test.dart` +- 주요 출력: + - `DirectoryQuery`에 `department` scope를 추가해 회사/부서 drill-down 조회를 분리 + - 세션 `department`와 tenant 이름을 매칭해 본인팀 고정 칩 slug를 계산하도록 변경 + - widget test 추가: + - 초기 화면에서 본인팀 칩 노출 + - 다른 회사 선택 후에도 본인팀 칩 유지 + - `전체 > 한맥 > 기술연구소 > 직원목록` drill-down + - 최종 결과: `All tests passed!` + +## 2026-07-07 03:10 KST - manual-postlogin-run 경로 복구 및 emulator 실행 확인 + +- 결과: [통과] +- 목적: Android emulator 수동 점검 기본 경로인 `manual-postlogin-run.sh`가 실제 `flutter run` 설치/실행까지 이어지는지 확인 +- 명령: + - `./scripts/check-baron-api-env.sh` + - `./scripts/api-smoke.sh` + - `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5561 ./scripts/manual-postlogin-run.sh` +- 주요 출력: + - Baron runtime ready-ish, API smoke 전체 통과 + - `scripts/flutter-docker.sh`의 첫 인자 중복 전달 문제를 수정 + - `manual-postlogin-run.sh`를 `flutter-docker.sh run ...` 조합으로 정렬 + - Android APK 빌드 성공, emulator `172.21.128.1:5561 device`에 설치 성공 + - `Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...` 이후 VM service 연결과 앱 실행 확인 + +## 2026-07-07 04:20 KST - leaf 조직 0건 표시 수정 및 칩 영역 구분선 반영 + +- 결과: [통과] +- 목적: 실제 화면에서 leaf 조직 칩 선택 시 `검색 결과 0명`이 나오던 원인을 수정하고, 상단 칩 영역과 하위 경로 칩 영역 사이 구분선을 추가 +- 주요 작업: + - leaf 조직 선택 시 직원 조회를 `회사 tenantSlug + department` 조합이 아니라 `선택 tenantSlug` 기준으로 변경 + - mock/fake/smoke repository도 같은 기준으로 정렬 + - 상단 회사/고정팀 칩 영역과 breadcrumb 칩 영역 사이에 `Divider` 추가 +- 검증: + - `../scripts/flutter-docker.sh test test/widget_test.dart test/directory/directory_filters_test.dart` + - 결과: `All tests passed!` + +## 2026-07-08 16:55 KST - 독립형 실기기 전환용 split API base 지원 및 production host 검증 + +- 결과: [부분 통과] +- 목적: USB 없는 독립형 실기기 테스트를 위해 `로그인은 staging`, `직원/조직 데이터는 production` 조합까지 수용할 수 있도록 앱과 실행 스크립트의 API base 주입 구조를 분리하고, 현재 알려진 production host가 실제 신규앱 route를 제공하는지 확인 +- 주요 작업: + - `AppEnvironment`에 `TDC114_AUTH_API_BASE`, `TDC114_DIRECTORY_API_BASE`, `TDC114_ORGANIZATION_API_BASE` override 추가 + - auth/directory/organization provider가 각자 분리된 base URL을 사용하도록 변경 + - `manual-postlogin-run.sh`, `integration_tests.sh`가 위 override를 `--dart-define`으로 전달하도록 보강 + - staging/production 실기기 env example과 Android 설치 정책 문서에 split-base 규칙 추가 +- 검증: + - `../scripts/flutter-docker.sh test test/widget_test.dart test/auth test/directory test/organization` + - 결과: `All tests passed!` + - `TDC114_SMOKE_ENV_FILE=/tmp/tdc114plus-noenv TDC114_API_BASE=https://admin.brsw.kr TDC114_SKIP_AUTH_SMOKE=true ./scripts/api-smoke.sh` + - 결과: `GET /api/v1/tdc114plus/directory/employees` 기준 HTTP 404 `not_found` +- 해석: + - `https://admin.brsw.kr`는 Baron org-context 참고 host로는 사용 가능하지만, 현재 확인 기준 `tdc114plus` 신규앱 public API base는 아니다 + - 따라서 USB 없는 독립형 실기기 최종 검증의 외부 blocker는 `신규앱 public TDC114_API_BASE` 확정이다 + +## 2026-07-08 18:40 KST - 전용 tdc114plus API 전제 철회 및 Swagger 직접 소비 기준으로 재정렬 + +- 결과: [기준 수정] +- 목적: 사용자 확인 사항인 `tdc114plus 앱 전용 API는 없다`를 정책 문서에 반영하고, 앱이 Baron Swagger 공개 API를 직접 소비하는 방향으로 기준을 수정 +- 확인 사실: + - `https://admin.brsw.kr`는 org-context 참고 host로는 사용 가능하지만 `GET /api/v1/tdc114plus/directory/employees` 기준 HTTP 404 + - `https://sorg.hmac.kr/login?returnTo=%2Fchart`는 HTML 로그인 화면이며 JSON API endpoint가 아님 + - Swagger 캡쳐상 `Public /api/v1/public/orgchart` 같은 조직도 관련 공개 API 흔적은 존재 + - 사용자 확인 기준: `tdc114plus 앱 전용 API는 없고, 저 사이트가 주는 API를 사용해서 앱 내용을 구성` +- 조치: + - `00_guide_tdc114plus_external_api_usage`, `00_contract_tdc114plus_api`, 타임테이블 문서를 전용 API 전제 철회 기준으로 개정 + - 현재 코드의 `/api/v1/tdc114plus/...` 경로는 확정 계약이 아니라 재매핑 대상이라고 명시 +- 다음 단계: + - Swagger 공개 path 기준으로 직원검색/조직도/로그인 대응 endpoint를 다시 표준화 + - 코드 변경은 실제 공개 path가 확정되기 전까지 보류 + +## 2026-07-08 19:10 KST - org-context 응답을 현재 앱 화면/모델 기준으로 매핑 판단 + +- 결과: [진행] +- 목적: `GET /api/v1/integrations/org-context` 설명과 예시 응답을 기준으로, 현재 앱 화면 정책과 데이터 모델에 얼마나 직접 매핑 가능한지 판단 +- 확인 사실: + - `tenantSlug` 기준 subtree 조회가 가능하다 + - `tree`, `tenants[]`, `tenant.members[]` 구조가 존재한다 + - `includeUsers=true`면 조직별 직접 소속 사용자 목록이 들어온다 + - `includeUserIds=true`일 때만 `members[].id`, `members[].phone`가 포함된다 +- 판단: + - 조직도/가족사/하위조직 drilldown 구조에는 매우 잘 맞는다 + - 현재 `Employee.tenantId`, `tenantName`, `tenantSlug`는 상위 tenant 정보를 member에 주입하는 flatten 가공이 필요하다 + - `totalMemberCount`, `profileImageUrl` 같은 필드는 직접 제공되지 않는다 + - 데이터 구조 기준 API로는 유력하지만, 운영 Key 필요 API이므로 모바일 앱 직접 호출 방식은 보안 검토 전까지 확정하지 않는다 +- 산출물: + - `docs/00_guide_tdc114plus_org_context_mapping_2026-07-08.md` + +## 2026-07-08 19:35 KST - headless 계약 + Baron 기존 API 활용 기준 재정렬 고정 + +- 결과: [기준 수정] +- 목적: 사용자 지시에 따라 `바론SSO 문서 정책`과 `현재 일부 구현 흔적` 불일치를 정식 정책으로 고정하고, 옛 `tdc114plus` 전용 API 가정은 기능 보존 테스트를 동반해 단계적으로 제거하는 원칙을 반영 +- 조치: + - `docs/00_policy_tdc114plus_decoupled_api_migration_2026-07-07.md` + - `docs/00_guide_tdc114plus_work_progress_timetable_2026-07-02.md` + - `docs/00_guide_tdc114plus_external_api_usage_2026-07-03.md` + - `docs/00_contract_tdc114plus_api_2026-07-02.md` +- 반영 내용: + - 신규 앱 기준을 `headless 로그인 계약 + Baron 기존 Swagger API 활용`으로 명시 + - `/api/v1/tdc114plus/...` 경로 가정을 레거시 흔적으로 분류 + - 레거시 제거 순서를 `실제 사용처 확인 -> 대체 path/DTO 반영 -> mock/real 테스트 통과 -> 실제 화면 확인 -> 제거`로 고정 + - 타임테이블에 `레거시 전용 API 흔적 단계적 제거` 단계를 추가 +- 다음 단계: + - 현재 코드의 레거시 path를 `유지`, `교체`, `제거`로 분류 + - `교체` 대상부터 Swagger endpoint 재매핑과 기능 보존 테스트를 병행 +## 2026-07-09 TDC114PLUS PKCE/App Link 검증 + +- RP Client ID: `39d6190d-72f6-4a58-a84f-cdc5ece3e8af` +- Redirect URI: `https://114.hmac.kr/auth/callback` +- `assetlinks.json` 외부 HTTPS 200 및 `application/json` 응답 확인 +- debug APK 공기계 설치 성공 +- callback URL이 `kr.co.baron.tdc114plus/.MainActivity`를 직접 실행하고 test code를 수신하는 것 확인 +- PKCE S256 verifier/challenge/state 생성 계층 구현 +- Client Secret 없는 authorization code token 요청 계층 구현 +- PKCE 신규 테스트 및 기존 auth 회귀 테스트: 13건 통과 +- Flutter analyze: `No issues found` +- 확인된 blocker: + - 등록 RP는 PKCE 공개 클라이언트이며 Client Secret/개인키가 없음 + - Swagger headless API는 `private_key_jwt client_assertion`을 필수 요구 + - 모바일 공개 RP용 assertion 발급 또는 면제 계약 확인 전 실제 headless 호출 연결 보류 diff --git a/docs/test-logs/README.md b/docs/test-logs/README.md index eb0b694..7610192 100644 --- a/docs/test-logs/README.md +++ b/docs/test-logs/README.md @@ -32,16 +32,35 @@ YYYY-MM-test-execution-log.md 각 실행 결과는 년월일시까지 남긴다. -권장 형식: +기본 원칙: + +- 결과가 `[통과]`인 경우에는 `목적`과 `결과`만 컴팩트하게 기록한다. +- 테스트 진행 중 실패가 발생한 경우에만 `목적`, `명령`, `주요 출력`, `후속 조치`를 기록한다. +- 반복된 Docker dependency download 출력이나 전체 로그를 붙이지 않는다. +- 실패 없이 통과한 항목에는 명령 목록, 주요 출력, 후속 조치를 길게 남기지 않는다. + +통과 시 권장 형식: ```markdown ## YYYY-MM-DD HH:mm KST - 작업명 -- 목적: -- 실행 명령: -- 결과: +- 결과: [통과] +- 목적: 무엇을 확인했는지 1문장 +``` + +실패 후 수정하여 통과한 경우 권장 형식: + +```markdown +## YYYY-MM-DD HH:mm KST - 작업명 + +- 결과: [실패 후 통과] +- 목적: 무엇을 확인했는지 1문장 +- 명령: + - `실패 또는 재검증에 사용한 핵심 명령` - 주요 출력: + - 실패 원인, 수정 내용, 최종 통과 결과 - 후속 조치: + - 필요한 경우만 작성 ``` ## 4. 기록 대상 @@ -63,6 +82,7 @@ YYYY-MM-test-execution-log.md - 성공 결과뿐 아니라 실패 결과도 남긴다. - 실패 로그는 원인, 재현 명령, 후속 조치를 함께 적는다. +- 성공 로그는 `목적`과 `[통과]` 결과만 남긴다. - 비슷한 성격의 테스트는 같은 월별 로그 파일에 계속 누적한다. - 월이 바뀌면 새 월별 로그 파일을 만든다. -- 테스트 정책 변경이 있으면 `docs/tdc114plus-testing-policy-2026-07-02.md`와 함께 갱신한다. +- 테스트 정책 변경이 있으면 `docs/00_policy_tdc114plus_testing_2026-07-02.md`와 함께 갱신한다. diff --git a/docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md b/docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md new file mode 100644 index 0000000..969f9bd --- /dev/null +++ b/docs/troubleshooting/android-studio-wsl-adb-timetable-260703.md @@ -0,0 +1,127 @@ +# Android Studio / WSL ADB 연동 트러블슈팅 타임테이블 + +작성일: 2026-07-03 +대상 작업: Windows Android Studio emulator 준비, Windows ADB 확인, WSL/Docker Flutter CLI 연동 +관련 시나리오: `docs/scenario_android_emulator_device_integration_test_2026-07-03.md` + +## 1. 요약 + +2026-07-03 오전에는 `tdc114plus` Flutter integration test 실행을 위해 Windows Android Studio에서 Android emulator를 만들고, WSL 및 Docker 기반 Flutter CLI에서 해당 emulator를 인식하도록 연결했다. + +최종적으로 아래 상태까지 확인했다. + +- Windows PowerShell `adb devices`: `emulator-5554 device` 확인 +- Windows `netsh interface portproxy`: `0.0.0.0:5037 -> 127.0.0.1:5037` 설정 +- WSL에서 Windows host `172.21.128.1:5037` 연결 성공 +- Flutter Docker 컨테이너 내부 `adb devices`: `emulator-5554 device` 확인 +- `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices`: Android emulator 표시 확인 + +통합테스트 실행은 아직 최종 성공/실패 판정 전이다. 기존 `scripts/integration_tests.sh`가 출력을 임시 파일에 모았다가 종료 후 출력하는 구조라, Android 첫 빌드 중 진행 상태 확인이 어려웠다. 다음 단계에서는 실시간 출력이 가능하도록 스크립트를 보강한 뒤 재실행한다. + +## 2. 기대 시간과 실제 소요 시간 + +| 구간 | 설치/연동 전 기대 시간 | 실제 소요 시간 | 판정 | +| --- | ---: | ---: | --- | +| Android Studio 설치 및 Setup Wizard | 15-25분 | 약 25-35분 추정 | 대체로 정상 범위 | +| AVD 생성 및 system image 다운로드 | 10-20분 | 약 15-25분 추정 | 정상 범위 | +| Windows `adb devices` 확인 | 5분 | 약 5-10분 | 정상 범위 | +| WSL/Docker에서 Windows ADB 접근 구성 | 10-15분 | 최소 49분 이상 | 지연 발생 | +| Flutter Docker에서 emulator 인식 확인 | 5-10분 | 약 10분 | 정상 범위 | +| 전체 Android Studio 설치부터 Docker device 인식까지 | 30-45분 | 약 50-70분 추정 | 지연 발생 | + +실제 소요 시간 중 명령 로그로 확인 가능한 핵심 구간은 아래와 같다. + +- 08:45 KST: `adb -a -P 5037 nodaemon server` 첫 실패 확인 +- 08:54 KST: `adb -a -P 5037 nodaemon server` 재시도 실패 확인 +- 09:00 ~ 09:30 KST: 업무회의참여 +- 09:34 KST: emulator용 local env 파일 생성 +- 09:34 KST 이후: `flutter-docker.sh devices`에서 Android emulator 인식 확인 + +따라서 Windows ADB를 WSL/Docker에서 접근 가능하게 만드는 구간만 최소 49분 이상 소요되었다. + +## 3. 타임테이블 + +| 시간(KST) | 단계 | 수행 내용 | 결과 | +| --- | --- | --- | --- | +| 오전 초반 | Android Studio 설치 시작 | Android Studio 공식 다운로드 페이지에서 Windows용 Android Studio 설치 | 설치 진행 | +| 오전 초반 | Setup Wizard | usage statistics는 전송하지 않는 방향으로 선택, Standard 설치, SDK license 수락 | Android Studio 초기 설정 완료 | +| 오전 중반 | Device Manager 진입 | Android Studio Welcome 화면에서 Device Manager 열기 | 가상 기기 목록 화면 진입 | +| 오전 중반 | AVD 생성 | Medium Phone 선택, Android 15 API 35, Google Play Intel x86_64 system image 선택 | `Medium Phone` AVD 생성 | +| 오전 중반 | Emulator 실행 | Device Manager에서 `Medium Phone` 실행 | Windows ADB에서 emulator 확인 가능 상태 | +| 오전 중반 | Windows ADB 경로 확인 | PowerShell에서 기본 `adb devices` 실행 | `adb`가 PATH에 없어 실패 | +| 오전 중반 | Windows ADB 직접 실행 | `& "$env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe" devices` | `emulator-5554 device` 확인 | +| 08:45 | ADB 외부 바인딩 1차 시도 | `adb -a -P 5037 nodaemon server` | `10048`, `0.0.0.0:5037` bind 실패 | +| 08:45-08:54 | 포트 점유 원인 확인 | `Get-Process adb`, `netstat -ano`, `taskkill`, `Get-CimInstance` 반복 | Android Studio/ADB client가 일반 ADB server를 계속 재기동하는 패턴 확인 | +| 08:54 | ADB 외부 바인딩 재시도 | 기존 ADB 종료 후 `adb -a -P 5037 nodaemon server` 재실행 | 동일하게 `10048` 실패 | +| 08:54 이후 | 2순위 방식 전환 | `adb -a` 대신 Windows `portproxy` 방식으로 전환 결정 | 우회 경로 확정 | +| 오전 후반 | 관리자 PowerShell 실행 | 관리자 권한 PowerShell에서 `netsh interface portproxy` 설정 | `0.0.0.0:5037 -> 127.0.0.1:5037` 등록 | +| 오전 후반 | 방화벽 허용 | `netsh advfirewall firewall add rule name="ADB 5037 for WSL"` | 방화벽 rule 추가 완료 | +| 오전 후반 | WSL 연결 확인 | WSL에서 Windows host `172.21.128.1:5037` TCP 연결 확인 | 연결 성공 | +| 오전 후반 | Docker 내부 ADB 확인 | `ghcr.io/cirruslabs/flutter:stable` 컨테이너에서 `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 adb devices` | `emulator-5554 device` 확인 | +| 오전 후반 | 스크립트 보강 | `scripts/flutter-docker.sh`가 `ADB_SERVER_SOCKET`을 Docker 컨테이너에 전달하도록 수정 | 프로젝트 스크립트에서도 emulator 인식 가능 | +| 오전 후반 | Flutter device 확인 | `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices` | Android emulator와 Linux desktop 표시 | +| 09:34 | Emulator env 준비 | `scripts/.env.android-emulator.local` 생성, API base를 `http://10.0.2.2:5000`으로 설정 | 민감정보 없는 방식으로 local env 준비 | +| 09:34 이후 | Integration test 1차 실행 | `TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local ADB_SERVER_SOCKET=... ./scripts/integration_tests.sh` | 출력이 종료 후 표시되는 구조라 진행 상태 판단 곤란 | +| 09:50 전후 | 실행 방식 재검토 | 프로세스 확인 및 실시간 출력 재실행 준비 | 다음 단계에서 스크립트 출력 개선 필요 | + +## 4. 지연 원인 + +가장 큰 지연 원인은 `adb -a -P 5037 nodaemon server` 방식이 Windows 환경에서 안정적으로 동작하지 않은 점이다. + +세부 원인은 아래와 같다. + +- Windows ADB server가 기본적으로 `127.0.0.1:5037`에 먼저 바인딩되었다. +- Android Studio, Device Manager, emulator 또는 다른 ADB client가 일반 ADB server를 자동으로 다시 띄웠다. +- 기존 ADB PID를 종료해도 즉시 새 PID가 `127.0.0.1:5037`을 다시 점유했다. +- `netstat`에는 잠깐 포트가 비어 보였지만, `adb -a` 실행 시점에는 다시 점유되어 `10048` 오류가 반복되었다. +- WSL 내부에는 `adb`, `flutter`, `java`, `sdkmanager`, `emulator`가 PATH에 없어서 WSL 단독 emulator 방식으로 바로 전환할 수 없었다. +- `scripts/integration_tests.sh`는 출력을 임시 파일에 모았다가 종료 후 출력하므로, Android 첫 빌드가 오래 걸릴 때 진행 상태를 실시간으로 확인하기 어려웠다. + +## 5. 다음 동일 상황에서 지연을 줄이는 방법 + +다음부터 Windows Android Studio emulator를 WSL/Docker Flutter에서 사용할 때는 아래 순서를 우선 적용한다. + +1. Windows에서 emulator를 먼저 실행하고 `adb.exe devices`로 `device` 상태를 확인한다. +2. `adb -a -P 5037 nodaemon server`는 1차 시도만 한다. +3. `10048`이 1회라도 재현되면 즉시 `portproxy` 방식으로 전환한다. +4. 관리자 PowerShell에서 아래를 적용한다. + +```powershell +netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=5037 connectaddress=127.0.0.1 connectport=5037 +netsh advfirewall firewall add rule name="ADB 5037 for WSL" dir=in action=allow protocol=TCP localport=5037 +netsh interface portproxy show v4tov4 +``` + +5. WSL에서 Windows host IP를 확인한다. + +```bash +awk '/nameserver/ {print $2; exit}' /etc/resolv.conf +``` + +6. Docker Flutter 실행 시 아래 환경변수를 넘긴다. + +```bash +ADB_SERVER_SOCKET=tcp::5037 +``` + +이번 환경에서는 ``가 `172.21.128.1`이었다. + +7. 프로젝트 스크립트 기준으로 device 인식을 먼저 확인한다. + +```bash +ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/flutter-docker.sh devices +``` + +8. emulator에서 host API는 `127.0.0.1`이 아니라 `10.0.2.2`를 사용한다. + +```bash +TDC114_API_BASE=http://10.0.2.2:5000 +``` + +## 6. 후속 작업 + +- `scripts/integration_tests.sh`를 실시간 출력이 가능하도록 개선한다. +- 동일 환경에서 integration test를 재실행한다. +- 성공/실패 결과를 `docs/test-logs/2026-07-test-execution-log.md`에 누적 기록한다. +- `docs/scenario_android_emulator_device_integration_test_2026-07-03.md`의 3-B 단계에 portproxy 우선 전환 기준을 보강한다. + diff --git a/docs/troubleshooting/flutter-docker-repeated-delay-countermeasures-2026-07-03.md b/docs/troubleshooting/flutter-docker-repeated-delay-countermeasures-2026-07-03.md new file mode 100644 index 0000000..57130f5 --- /dev/null +++ b/docs/troubleshooting/flutter-docker-repeated-delay-countermeasures-2026-07-03.md @@ -0,0 +1,142 @@ +# Flutter Docker 반복 지연 대응 정리 + +작성일: 2026-07-03 +대상: Windows Android Studio emulator + WSL/Docker Flutter CLI 조합에서 반복 실행 시 느려지는 항목 + +## 1. 목적 + +Android integration test와 Docker Flutter 실행에서 반복적으로 오래 걸리는 문제를 따로 모아, 다음 실행부터 시간을 줄일 수 있는 대응안을 정리한다. + +## 2. 반복 지연 항목 + +| 항목 | 실제 증상 | 원인 | 우선 대응 | +| --- | --- | --- | --- | +| NDK 재설치 | 매 integration test에서 NDK license 확인 및 설치 반복 | Docker container가 매번 새로 뜨고 Android SDK 쓰기 경로가 유지되지 않음 | `.docker-cache/flutter/android-sdk/ndk` 유지 | +| CMake 재설치 | 매 integration test에서 CMake license 확인 및 설치 반복 | 위와 동일 | `.docker-cache/flutter/android-sdk/cmake` 유지 | +| Android SDK license 재확인 | license accept 로그 반복 | licenses 디렉터리 비지속 | `.docker-cache/flutter/android-sdk/licenses` 유지 | +| Gradle dependency 준비 시간 | `assembleDebug`가 매번 길어짐 | `/root/.gradle` 비지속 | `.docker-cache/flutter/gradle` 유지 | +| Flutter pub dependency 준비 | `flutter pub get` 반복 시간이 누적 | `/root/.pub-cache` 비지속 | `.docker-cache/flutter/pub` 유지 | +| ADB unauthorized | emulator 연결은 되지만 `unauthorized` | Docker ADB key와 Windows 승인 key 불일치 | `.android-adb/`에 Windows ADB key 재사용 | +| Integration test 직전 API 실패 | real API login test만 실패 | Baron/Ory runtime 중단 | `./scripts/api-smoke.sh` 선행 | + +## 3. 이미 적용한 대응 + +현재 저장소에는 아래 대응이 이미 반영되어 있다. + +- `scripts/flutter-docker.sh` + - `.android-adb/`를 Docker `/root/.android`로 마운트 + - `.docker-cache/flutter/gradle`를 Docker `/root/.gradle`로 마운트 + - `.docker-cache/flutter/pub`를 Docker `/root/.pub-cache`로 마운트 + - `.docker-cache/flutter/android-sdk/licenses`를 Docker `/opt/android-sdk-linux/licenses`로 마운트 + - `.docker-cache/flutter/android-sdk/ndk`를 Docker `/opt/android-sdk-linux/ndk`로 마운트 + - `.docker-cache/flutter/android-sdk/cmake`를 Docker `/opt/android-sdk-linux/cmake`로 마운트 +- `.gitignore` + - `.android-adb/` + - `.docker-cache/` + +## 4. 권장 실행 순서 + +반복 지연과 실패를 줄이려면 아래 순서를 기본값으로 사용한다. + +1. Windows emulator를 먼저 실행한다. +2. Windows `adb.exe devices`에서 `device` 상태를 확인한다. +3. `5555` portproxy까지 준비한다. +4. host 기준 `./scripts/api-smoke.sh`를 먼저 실행한다. +5. 아래 명령으로 Docker local ADB 상태를 확인한다. + +```bash +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/flutter-docker.sh devices +``` + +6. 이후 integration test를 실행한다. + +```bash +TDC114_SMOKE_ENV_FILE=scripts/.env.android-emulator.local \ +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 \ +./scripts/integration_tests.sh +``` + +## 5. 지연을 더 줄이는 추가 후보 + +아래는 아직 이번 턴에서 적용하지 않았지만, 추가로 검토할 가치가 있다. + +### 5.1 Flutter Docker image 고정 + +`ghcr.io/cirruslabs/flutter:stable` 대신 검증된 tag를 고정하면 image 내부 Android SDK 구성이 갑자기 바뀌는 위험을 줄일 수 있다. + +예: + +```bash +FLUTTER_DOCKER_IMAGE=ghcr.io/cirruslabs/flutter:3.32.5 +``` + +효과: + +- 예측 가능한 SDK/Gradle 조합 유지 +- cache 호환성 추적이 쉬워짐 + +주의: + +- 프로젝트 Flutter 버전과 맞지 않는 tag는 피한다. + +### 5.2 Android 빌드 전용 warm-up 명령 + +긴 integration test 전에 아래를 먼저 실행해 build cache를 예열할 수 있다. + +```bash +TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5555 ./scripts/flutter-docker.sh build apk --debug +``` + +효과: + +- 첫 integration test에서 체감 지연 감소 + +주의: + +- 근본 해결은 cache 유지이며, warm-up은 보조 수단이다. + +### 5.3 runtime health gate 자동화 + +integration test 시작 전에 `./scripts/check-baron-api-env.sh`와 `./scripts/api-smoke.sh`를 자동으로 선행하도록 `integration_tests.sh`를 확장할 수 있다. + +효과: + +- 앱 테스트 실패와 backend runtime 실패를 더 빨리 구분 + +주의: + +- 테스트 시작 시간은 조금 늘어나지만, 재시도 횟수는 줄일 가능성이 크다. + +## 6. 언제 cache를 비워야 하는가 + +아래 상황이 아니면 cache 삭제를 먼저 하지 않는다. + +- Flutter Docker image를 크게 변경했다. +- Gradle/NDK/CMake 관련 이상한 충돌이 반복된다. +- cache 안 파일이 root 권한 꼬임으로 재사용되지 않는다. + +부분 삭제 우선순위: + +1. `.docker-cache/flutter/android-sdk/cmake` +2. `.docker-cache/flutter/android-sdk/ndk` +3. `.docker-cache/flutter/gradle` +4. `.docker-cache/flutter/pub` + +전체 삭제는 마지막 수단으로 둔다. + +## 7. 현재 결론 + +매번 너무 오래 걸리는 문제는 어느 정도 해결 또는 완화가 가능하다. + +- 해결 가능한 부분: + - ADB unauthorized + - NDK/CMake 반복 설치 + - Gradle/pub cache 반복 준비 + - backend runtime 미감지 상태에서 앱 테스트를 먼저 돌리는 문제 + +- 완화만 가능한 부분: + - Android 첫 빌드 자체의 절대 시간 + - Docker image pull 또는 변경 직후 초기 warm-up 비용 + - emulator 자체 부팅 시간 + +다음 실행부터는 `5555 + Docker local ADB + cache 유지 + api-smoke 선행` 조합을 기본값으로 사용한다. diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..4694482 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,49 @@ +# scripts 폴더 안내 + +이 폴더는 `tdc114plus` 앱 초기 설정, Flutter 실행 보조, 테스트 자동화용 shell script를 모아둔 위치이다. + +## 파일별 용도 + +- `api-smoke.sh`: `TDC114_API_BASE` 대상 Baron SSO 연동 API에 최소 smoke test를 수행한다. `TDC114_SMOKE_PHONE`이 있으면 `TDC114_SMOKE_AUTH_FLOW`에 따라 legacy `phone-login` 호환 경로 또는 headless 링크 흐름을 확인한다. +- `smoke.env.example`: authenticated smoke용 로컬 env 예시 파일이다. `scripts/.env.smoke.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`을 넣어 사용할 수 있다. +- `smoke.staging.env.example`: staging Baron SSO 검증용 env 예시 파일이다. `scripts/.env.staging.local`로 복사해 `TDC114_API_BASE`, `TDC114_SMOKE_PHONE`과 optional expected label 값을 넣어 사용할 수 있다. +- `android-device.env.example`: Android 공기계 USB 테스트용 env 예시 파일이다. `scripts/.env.android-device.local`로 복사해 `adb reverse` 기준 `TDC114_API_BASE=http://127.0.0.1:5000`, `TDC114_AUTH_API_BASE=http://127.0.0.1:5001`을 사용한다. +- `android-device.staging.env.example`: Android 공기계/실폰의 USB 없는 staging 직접 로그인 테스트용 env 예시 파일이다. `scripts/.env.android-device.staging.local`로 복사해 공개 staging HTTPS base URL을 넣어 사용한다. +- `android-device.production.env.example`: Android 공기계/실폰의 USB 없는 production 직접 로그인 테스트용 env 예시 파일이다. `scripts/.env.android-device.production.local`로 복사해 공개 production HTTPS base URL을 넣어 사용한다. +- `bootstrap-baron-api-env.sh`: Baron SSO API worktree의 `.env.sample`을 바탕으로 로컬 smoke용 `.env`를 생성하고 localhost/알림 비활성 override를 덧붙인다. +- `check-baron-api-env.sh`: Baron SSO API worktree의 `.env`, compose, config, Docker runtime 준비 상태를 점검해 실제 API smoke 가능 여부를 빠르게 확인한다. +- `check-android-device-env.sh`: Android 공기계 USB 연결, Windows ADB server 공유, 선택적 `adb reverse` 상태를 점검한다. +- `host-adb.sh`: Docker를 거치지 않고 WSL 호스트의 Linux adb로 Windows ADB server에 접속한다. ADB 로그/스크린샷/reverse 조회처럼 Flutter가 필요 없는 작업에 사용한다. +- `install-host-adb-from-docker.sh`: Docker Flutter 이미지에서 Linux adb 바이너리를 `.tools/android-platform-tools/adb`로 1회 추출한다. 이후 ADB 조회 작업은 Docker 권한 없이 `host-adb.sh`로 처리한다. +- `startup.sh`: Baron SSO runtime 기동, 상태 확인, API smoke 재시도를 자동화한다. `check-baron-api-env.sh`에 warning이 남거나 `api-smoke.sh`가 실패하면 비정상 종료한다. +- `shutdown.sh`: 대상 helper 프로세스 종료, compose 로그 수집, Baron SSO runtime 중지, 선택적 컨테이너 정리와 권한 복구를 자동화한다. +- `bootstrap.sh`: 로컬 Flutter SDK가 설치된 환경에서 `app/` 프로젝트의 `flutter pub get`을 실행한다. +- `create-flutter-app.sh`: `app/` Flutter 프로젝트가 없을 때 Android/iOS 기반 앱 골격을 생성한다. +- `flutter-docker.sh`: Docker Flutter 이미지를 이용해 `app/` 디렉터리에서 Flutter 명령을 실행한다. `.android-adb/`, `.docker-cache/flutter/` 아래 ADB key, Gradle, pub, Android SDK 일부 cache를 재사용한다. +- `manual-postlogin-run.sh`: Android target에 `dart-define`을 포함한 `flutter run` 경로로 앱을 띄운다. 기본 정책은 Baron SSO Hosted Login + PKCE 진입이며, 필요 시에만 legacy local `phone-login` bootstrap으로 post-login 상태를 seed 한다. +- `format-dart.sh`: Docker Flutter 환경에서 Dart 코드 포맷을 적용한다. +- `generate-release-report.sh`: 현재 git 상태와 릴리스 점검 항목을 기반으로 report를 생성한다. +- `integration_tests.sh`: `app/integration_test/` smoke test를 실행한다. Android target 선행 확인은 실기기 기준이 기본이며 emulator는 fallback이다. `TDC114_API_BASE`와 `TDC114_SMOKE_PHONE`을 넘기면 실제 API 로그인 smoke까지 확장할 수 있다. +- `mock-server.sh`: 향후 mock API 서버 제어용 scaffold 스크립트이다. 현재는 `status`, `stop`만 간단히 동작하고 `start`는 미구현 안내를 출력한다. +- `perf_smoke.sh`: 현재 앱/테스트 파일 수와 기본 상태를 빠르게 확인하는 경량 smoke 스크립트이다. +- `quality-gate.sh`: Docker Flutter 환경에서 `flutter analyze`와 `flutter test`를 순서대로 실행한다. +- `save-snapshots.sh`: widget/integration snapshot 산출물이 있으면 지정한 report 경로로 복사해 보관한다. +- `test.sh`: 로컬 Flutter SDK가 설치된 환경에서 `flutter analyze`와 `flutter test`를 실행한다. +- `redteam/run_all.sh`: 현재 앱 범위에서는 미사용인 AI/LLM redteam 자동화용 scaffold 스크립트이다. + +## 참고 + +- 테스트 자동화 운영 기준은 `docs/guide_tdc114plus_script_automation_plan_2026-07-02.md`를 따른다. +- Docker 기반 Flutter 검증이 기본 경로이므로 일반적인 앱 변경 후에는 `format-dart.sh`, `quality-gate.sh`를 우선 사용한다. +- `api-smoke.sh`, `integration_tests.sh`는 `scripts/.env.smoke.local` 파일이 있으면 자동으로 읽는다. +- staging 검증 시에는 `TDC114_SMOKE_ENV_FILE=scripts/.env.staging.local` 방식으로 env 파일을 명시해 실행한다. +- Android 공기계 USB 검증 시에는 `TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local`과 `TDC114_FLUTTER_DEVICE_ID=`를 명시한다. +- ADB 로그 조회, `devices`, `reverse --list`, `screencap` 등 Flutter가 필요 없는 ADB 작업은 `flutter-docker.sh adb` 대신 `ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/host-adb.sh ...`를 우선 사용한다. +- USB 없는 staging 직접 로그인 검증 시에는 `TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.staging.local`과 `TDC114_FLUTTER_DEVICE_ID=`를 명시한다. +- 로그인만 staging, 직원/조직 정보만 production으로 분리해야 할 경우 `TDC114_AUTH_API_BASE`, `TDC114_DIRECTORY_API_BASE`, `TDC114_ORGANIZATION_API_BASE`를 추가로 지정한다. 값을 비우면 모두 `TDC114_API_BASE`를 따른다. +- `startup.sh`, `shutdown.sh`는 테스트나 다른 worktree 재사용을 위해 `BARON_SSO_WORKTREE`, `TDC114_LOG_BASE`, `DOCKER_BIN` 같은 환경 변수 override를 지원한다. +- 업무 시작 절차에서는 앱 직접 App Link callback 테스트 서버를 더 이상 기동하지 않는다. 현재 로그인은 `tdc114plus-auth`의 `/api/v1/auth/link/init`, `/api/v1/auth/link/poll` 경로를 사용한다. +- Windows Android Studio emulator + WSL/Docker Flutter 운영 기준은 `docs/policy_android_studio_wsl_adb_2026-07-03.md`를 따른다. +- Android 앱 설치/실행 재발 방지 기준은 `docs/policy_android_app_install_execution_2026-07-06.md`를 따른다. +- 반복 지연 대응 정리는 `docs/troubleshooting/flutter-docker-repeated-delay-countermeasures-2026-07-03.md`를 참고한다. +- `TDC114_SESSION_BOOTSTRAP_MODE=legacy-phone-login`은 옛 호환 점검용 예외 경로다. 신규 정책 기본값은 mock seed 또는 실제 Hosted Login + PKCE 검증이다. diff --git a/scripts/android-device.env.example b/scripts/android-device.env.example new file mode 100644 index 0000000..c4fa0f8 --- /dev/null +++ b/scripts/android-device.env.example @@ -0,0 +1,18 @@ +# Copy this file to scripts/.env.android-device.local for physical Android device checks. + +# Physical devices cannot use the Android emulator-only 10.0.2.2 host alias. +# Preferred path: +# adb reverse tcp:5000 tcp:5000 +# adb reverse tcp:5001 tcp:5001 +# TDC114_API_BASE=http://127.0.0.1:5000 +# TDC114_AUTH_API_BASE=http://127.0.0.1:5001 +# +# Fallback path: +# TDC114_API_BASE=http://:5000 +# TDC114_AUTH_API_BASE=http://:5001 +TDC114_API_BASE=http://127.0.0.1:5000 +TDC114_AUTH_API_BASE=http://127.0.0.1:5001 + +# Use a test phone number that exists in the local Baron SSO test data. +TDC114_SMOKE_PHONE=01012345678 +TDC114_SMOKE_ASSUME_LOGGED_IN=1 diff --git a/scripts/android-device.production.env.example b/scripts/android-device.production.env.example new file mode 100644 index 0000000..f601f84 --- /dev/null +++ b/scripts/android-device.production.env.example @@ -0,0 +1,20 @@ +# Copy this file to scripts/.env.android-device.production.local for USB-free production-style tests. + +# The app talks directly to the public Baron production API over HTTPS. +# No adb reverse is required in this mode. +TDC114_API_BASE=https://production.example.com + +# Skip local phone-login bootstrap and open the normal in-app login flow. +TDC114_SKIP_SESSION_BOOTSTRAP=true + +# Optional hints for smoke/integration helpers. +TDC114_SMOKE_AUTH_FLOW=link +# TDC114_SMOKE_PHONE=010xxxxxxxx +# TDC114_SMOKE_EXPECTED_NAME=홍길동 +# TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3 + +# Optional split mode: +# Keep everything on production unless a temporary login/data split is required. +# TDC114_AUTH_API_BASE=https://production.example.com +# TDC114_DIRECTORY_API_BASE=https://production.example.com +# TDC114_ORGANIZATION_API_BASE=https://production.example.com diff --git a/scripts/android-device.staging.env.example b/scripts/android-device.staging.env.example new file mode 100644 index 0000000..d1c6e94 --- /dev/null +++ b/scripts/android-device.staging.env.example @@ -0,0 +1,24 @@ +# Copy this file to scripts/.env.android-device.staging.local for USB-free staging login tests. + +# The app talks directly to the public Baron staging API over HTTPS. +# No adb reverse is required in this mode. +TDC114_API_BASE=https://sso.hmac.kr +TDC114_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr +TDC114_ORG_CONTEXT_TENANT_SLUG=hanmac-family +TDC114_BARON_KEY_ID=replace-with-staging-key-id +TDC114_BARON_KEY_SECRET=replace-with-staging-key-secret + +# Skip local phone-login bootstrap and open the normal in-app login flow. +TDC114_SKIP_SESSION_BOOTSTRAP=true + +# Optional hints for smoke/integration helpers. +TDC114_SMOKE_AUTH_FLOW=link +TDC114_SMOKE_PHONE=010xxxxxxxx +# TDC114_SMOKE_EXPECTED_NAME=홍길동 +# TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3 + +# Optional split mode: +# Login and org-context stay on staging by default. +# TDC114_AUTH_API_BASE=https://sso.hmac.kr +# TDC114_DIRECTORY_API_BASE=https://sadmin.hmac.kr +# TDC114_ORGANIZATION_API_BASE=https://sadmin.hmac.kr diff --git a/scripts/api-smoke.sh b/scripts/api-smoke.sh new file mode 100755 index 0000000..94bc99a --- /dev/null +++ b/scripts/api-smoke.sh @@ -0,0 +1,145 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +LOCAL_ENV_FILE="${TDC114_SMOKE_ENV_FILE:-$ROOT_DIR/scripts/.env.smoke.local}" + +if [ -f "$LOCAL_ENV_FILE" ]; then + # shellcheck disable=SC1090 + source "$LOCAL_ENV_FILE" +fi + +if [ -z "${TDC114_API_BASE:-}" ]; then + echo "TDC114_API_BASE is required for API smoke tests." >&2 + echo "Example: TDC114_API_BASE=http://127.0.0.1:5000 $0" >&2 + if [ -f "$LOCAL_ENV_FILE" ]; then + echo "Loaded local smoke env from $LOCAL_ENV_FILE" >&2 + fi + exit 64 +fi + +if [ "${TDC114_API_BASE:-}" = "https://staging.example.com" ]; then + echo "TDC114_API_BASE still points to the example placeholder. Update $LOCAL_ENV_FILE first." >&2 + exit 64 +fi + +BASE_URL="${TDC114_API_BASE%/}" +AUTH_FLOW="${TDC114_SMOKE_AUTH_FLOW:-phone-login}" +TMP_DIR="$(mktemp -d)" +trap 'rm -rf "$TMP_DIR"' EXIT + +request() { + local method="$1" + local path="$2" + local body="${3:-}" + local token="${4:-}" + local output_file="$TMP_DIR/response" + local headers=(-H "Accept: application/json") + if [ -n "$token" ]; then + headers+=(-H "Authorization: Bearer $token") + fi + if [ -n "$body" ]; then + headers+=(-H "Content-Type: application/json") + curl -sS --max-time 10 -o "$output_file" -w "%{http_code}" \ + -X "$method" "${headers[@]}" --data "$body" "$BASE_URL$path" + else + curl -sS --max-time 10 -o "$output_file" -w "%{http_code}" \ + -X "$method" "${headers[@]}" "$BASE_URL$path" + fi +} + +assert_status() { + local name="$1" + local actual="$2" + shift 2 + for expected in "$@"; do + if [ "$actual" = "$expected" ]; then + echo "PASS $name: HTTP $actual" + return 0 + fi + done + echo "FAIL $name: HTTP $actual" >&2 + echo "Response body:" >&2 + sed -n '1,40p' "$TMP_DIR/response" >&2 + exit 1 +} + +extract_json_string() { + local key="$1" + sed -n "s/.*\"$key\"[[:space:]]*:[[:space:]]*\"\\([^\"]*\\)\".*/\\1/p" "$TMP_DIR/response" | head -n 1 +} + +echo "tdc114plus API smoke: $BASE_URL" + +status="$(request GET "/api/v1/tdc114plus/directory/employees")" +assert_status "unauthorized directory guard" "$status" 401 403 + +status="$(request POST "/api/v1/tdc114plus/auth/phone-login" '{"phoneNumber":"123","device":{"platform":"smoke","appVersion":"0.1.0","deviceName":"api-smoke"}}')" +assert_status "invalid phone-login validation" "$status" 400 + +status="$(request POST "/api/v1/tdc114plus/auth/link/init" '{"phoneNumber":"123","device":{"platform":"smoke","appVersion":"0.1.0","deviceName":"api-smoke"}}')" +assert_status "invalid link-init validation" "$status" 400 + +status="$(request POST "/api/v1/tdc114plus/auth/link/poll" '{"pendingRef":"api-smoke-missing-ref"}')" +assert_status "link-poll expired pendingRef" "$status" 200 + +if [ "${TDC114_SKIP_AUTH_SMOKE:-false}" = "true" ]; then + echo "SKIP authenticated smoke: TDC114_SKIP_AUTH_SMOKE=true" + exit 0 +fi + +if [ -z "${TDC114_SMOKE_PHONE:-}" ]; then + echo "SKIP authenticated smoke: TDC114_SMOKE_PHONE is not set" + exit 0 +fi + +if [ "$AUTH_FLOW" = "link" ]; then + login_body="$(printf '{"phoneNumber":"%s","device":{"platform":"smoke","appVersion":"0.1.0","deviceName":"api-smoke"}}' "$TDC114_SMOKE_PHONE")" + status="$(request POST "/api/v1/tdc114plus/auth/link/init" "$login_body")" + assert_status "link-init success" "$status" 200 + + pending_ref="$(extract_json_string "pendingRef")" + if [ -z "$pending_ref" ]; then + echo "FAIL link-init success: pendingRef is missing" >&2 + exit 1 + fi + + status="$(request POST "/api/v1/tdc114plus/auth/link/poll" "$(printf '{"pendingRef":"%s"}' "$pending_ref")")" + assert_status "link-poll pending" "$status" 200 + + poll_code="$(extract_json_string "code")" + if [ -n "$poll_code" ] && [ "$poll_code" != "authorization_pending" ] && [ "$poll_code" != "slow_down" ]; then + echo "FAIL link-poll pending: unexpected code=$poll_code" >&2 + sed -n '1,40p' "$TMP_DIR/response" >&2 + exit 1 + fi + + echo "PASS staging link smoke: init succeeded and poll is pending" + echo "NOTE manual approval is still required to complete end-to-end login." + exit 0 +fi + +if [ "$AUTH_FLOW" != "phone-login" ]; then + echo "Unknown TDC114_SMOKE_AUTH_FLOW=$AUTH_FLOW" >&2 + echo "Expected one of: phone-login, link" >&2 + exit 64 +fi + +login_body="$(printf '{"phoneNumber":"%s","device":{"platform":"smoke","appVersion":"0.1.0","deviceName":"api-smoke"}}' "$TDC114_SMOKE_PHONE")" +status="$(request POST "/api/v1/tdc114plus/auth/phone-login" "$login_body")" +assert_status "phone-login success" "$status" 200 + +token="$(extract_json_string "token")" +if [ -z "$token" ]; then + echo "FAIL phone-login success: token is missing" >&2 + exit 1 +fi + +status="$(request GET "/api/v1/tdc114plus/directory/employees?limit=10" "" "$token")" +assert_status "employee list" "$status" 200 + +status="$(request GET "/api/v1/tdc114plus/organization/tenants" "" "$token")" +assert_status "tenant list" "$status" 200 + +status="$(request GET "/api/v1/tdc114plus/organization/orgchart" "" "$token")" +assert_status "orgchart" "$status" 200 diff --git a/scripts/bootstrap-baron-api-env.sh b/scripts/bootstrap-baron-api-env.sh new file mode 100755 index 0000000..e026d2f --- /dev/null +++ b/scripts/bootstrap-baron-api-env.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +BARON_DIR="${BARON_SSO_WORKTREE:-/home/ubuntu/workspace/baron-sso-tdc114plus-api}" +SOURCE_FILE="$BARON_DIR/.env.sample" +TARGET_FILE="$BARON_DIR/.env" + +if [ ! -f "$SOURCE_FILE" ]; then + echo "Baron SSO env sample not found: $SOURCE_FILE" >&2 + exit 1 +fi + +if [ -f "$TARGET_FILE" ]; then + echo "Target env file already exists: $TARGET_FILE" >&2 + echo "Remove or rename it first if you want to regenerate from the sample." >&2 + exit 1 +fi + +cp "$SOURCE_FILE" "$TARGET_FILE" + +cat >>"$TARGET_FILE" <<'EOF' + +# --- tdc114plus local smoke overrides --- +# Added by scripts/bootstrap-baron-api-env.sh +APP_ENV=development +BACKEND_LOG_LEVEL=debug +CLIENT_LOG_DEBUG=true +CORS_ALLOWED_ORIGINS=http://localhost:5000 +USERFRONT_URL=http://localhost:5000 +BACKEND_PUBLIC_URL=http://localhost:5000 +BACKEND_URL=http://localhost:5000 +OATHKEEPER_PUBLIC_URL=http://localhost:5000 +ADMINFRONT_URL=http://localhost:5173 +DEVFRONT_URL=http://localhost:5174 +ORGFRONT_URL=http://localhost:5175 +KRATOS_UI_URL=http://localhost:5000 +KRATOS_BROWSER_URL=http://localhost:5000/auth +WORKS_ADMIN_OAUTH_TOKEN_URL=https://auth.worksmobile.com/oauth2/v2.0/token +WORKSMOBILE_ENABLED=false +WORKSMOBILE_RELAY_ENABLED=false +LOGIN_LOGOUT_SMS_ENABLED=false +LOGIN_LOGOUT_NAVER_ENABLED=false +VITE_CLIENT_LOG_DEBUG=false +DEV_SERVER_WATCH_POLLING=true +EOF + +echo "Created $TARGET_FILE from $SOURCE_FILE" +echo "A local smoke override block was appended to prefer localhost URLs and disable optional external notifications." +echo "Next steps:" +echo " 1. Review $TARGET_FILE and replace any placeholder secrets if your local backend requires real values." +echo " 2. Run ./scripts/check-baron-api-env.sh" +echo " 3. If runtime looks ready, run TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh" diff --git a/scripts/check-android-device-env.sh b/scripts/check-android-device-env.sh new file mode 100755 index 0000000..6453f58 --- /dev/null +++ b/scripts/check-android-device-env.sh @@ -0,0 +1,248 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +FLUTTER_DOCKER_SCRIPT="$ROOT_DIR/scripts/flutter-docker.sh" +HOST_ADB_SCRIPT="${TDC114_HOST_ADB_SCRIPT:-$ROOT_DIR/scripts/host-adb.sh}" +LOCAL_ENV_FILE="${TDC114_SMOKE_ENV_FILE:-$ROOT_DIR/scripts/.env.android-device.local}" + +if [ -f "$LOCAL_ENV_FILE" ]; then + # shellcheck disable=SC1090 + source "$LOCAL_ENV_FILE" +fi + +ADB_SOCKET="${ADB_SERVER_SOCKET:-}" +DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-}" +API_BASE="${TDC114_API_BASE:-}" +AUTH_API_BASE="${TDC114_AUTH_API_BASE:-}" +REVERSE_PORT="${TDC114_ANDROID_REVERSE_PORT:-5000}" +AUTH_REVERSE_PORT="${TDC114_AUTH_ANDROID_REVERSE_PORT:-5001}" + +is_reverse_mode() { + [ "$API_BASE" = "http://127.0.0.1:${REVERSE_PORT}" ] +} + +is_auth_reverse_mode() { + [ "$AUTH_API_BASE" = "http://127.0.0.1:${AUTH_REVERSE_PORT}" ] +} + +print_header() { + echo "[android-device-preflight]" + if [ -n "$ADB_SOCKET" ]; then + echo "ADB server socket: $ADB_SOCKET" + else + echo "ADB server socket: default container adb server" + fi + if [ -n "$DEVICE_ID" ]; then + echo "Target device id: $DEVICE_ID" + else + echo "Target device id: first physical device in adb devices" + fi + if [ -n "$API_BASE" ]; then + echo "TDC114_API_BASE: $API_BASE" + if is_reverse_mode; then + echo "Connection mode: local adb-reverse" + else + echo "Connection mode: direct HTTPS/LAN" + fi + fi + if [ -n "$AUTH_API_BASE" ]; then + echo "TDC114_AUTH_API_BASE: $AUTH_API_BASE" + if is_auth_reverse_mode; then + echo "Auth connection mode: local adb-reverse" + else + echo "Auth connection mode: direct HTTPS/LAN" + fi + fi + echo +} + +fail_with_help() { + local reason="$1" + print_header + echo "FAIL $reason" + echo + echo "Windows-side checklist:" + echo "1. Connect the Android phone by USB." + echo "2. Enable Developer options > USB debugging." + echo "3. Accept the RSA debugging prompt on the phone." + echo "4. In Windows PowerShell, run adb.exe devices and confirm the phone is device." + echo "5. If using local API through adb reverse, run adb reverse tcp:${REVERSE_PORT} tcp:${REVERSE_PORT} from the same ADB server path." + if is_auth_reverse_mode; then + echo " Also run adb reverse tcp:${AUTH_REVERSE_PORT} tcp:${AUTH_REVERSE_PORT} for the local auth server." + fi + echo "6. If using direct staging/production HTTPS mode, confirm TDC114_API_BASE points to the public app API host." + if [ -n "$ADB_SOCKET" ]; then + echo "7. If WSL reports connection refused to ${ADB_SOCKET}, recreate the Windows 5037 portproxy and firewall rule first." + fi + echo + echo "Recommended WSL command:" + echo " ADB_SERVER_SOCKET=tcp::5037 \\" + echo " TDC114_FLUTTER_DEVICE_ID= \\" + echo " TDC114_SMOKE_ENV_FILE=scripts/.env.android-device.local \\" + echo " ./scripts/manual-postlogin-run.sh" +} + +fail_with_adb_help() { + local reason="$1" + print_header + echo "FAIL $reason" + echo + echo "WSL host-adb checklist:" + echo "1. Confirm $HOST_ADB_SCRIPT exists and is executable." + echo "2. If host adb is missing, run ./scripts/install-host-adb-from-docker.sh once." + echo "3. Confirm ADB_SERVER_SOCKET points to the Windows ADB server, usually tcp:172.21.128.1:5037." + echo "4. After host adb access recovers, rerun this script." + echo + echo "Recommended WSL command:" + echo " ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 ./scripts/host-adb.sh devices" +} + +if [ ! -x "$HOST_ADB_SCRIPT" ]; then + echo "Missing executable script: $HOST_ADB_SCRIPT" >&2 + exit 1 +fi + +if [[ "$DEVICE_ID" == emulator-* ]]; then + fail_with_help "TDC114_FLUTTER_DEVICE_ID points to an emulator, not a physical Android device." + exit 1 +fi + +env_args=() +if [ -n "$ADB_SOCKET" ]; then + env_args+=("ADB_SERVER_SOCKET=$ADB_SOCKET") +fi + +set +e +if [ "${#env_args[@]}" -gt 0 ]; then + OUTPUT="$(env "${env_args[@]}" "$HOST_ADB_SCRIPT" devices 2>&1)" +else + OUTPUT="$("$HOST_ADB_SCRIPT" devices 2>&1)" +fi +STATUS=$? +set -e + +if [ "$STATUS" -ne 0 ]; then + if printf '%s\n' "$OUTPUT" | grep -Fq "Host adb is not available"; then + fail_with_adb_help "Host adb is not ready." + printf '%s\n' "$OUTPUT" + exit "$STATUS" + fi + + fail_with_help "ADB devices command failed." + if printf '%s\n' "$OUTPUT" | grep -Fq "Connection refused"; then + echo + echo "Hint: Windows ADB itself may be alive, but WSL shared access to port 5037 is blocked." + echo "Rebuild portproxy: 0.0.0.0:5037 -> 127.0.0.1:5037, then retry." + fi + if printf '%s\n' "$OUTPUT" | grep -Fq "protocol fault (couldn't read status)"; then + echo + echo "Hint: Windows port 5037 may be owned by portproxy before adb.exe starts." + echo "In Windows Administrator PowerShell: delete the 5037 portproxy, start adb.exe, confirm adb.exe devices, then recreate the portproxy." + fi + if printf '%s\n' "$OUTPUT" | grep -Fq "failed to read response from server"; then + echo + echo "Hint: Windows adb.exe may be talking to a stale or non-ADB listener on port 5037." + echo "In Windows Administrator PowerShell: inspect netstat -ano | findstr 5037 before restarting adb.exe." + fi + printf '%s\n' "$OUTPUT" + exit "$STATUS" +fi + +if [ -n "$DEVICE_ID" ]; then + DEVICE_PATTERN="^${DEVICE_ID}[[:space:]]+device$" + OFFLINE_PATTERN="^${DEVICE_ID}[[:space:]]+offline$" + UNAUTHORIZED_PATTERN="^${DEVICE_ID}[[:space:]]+unauthorized$" +else + DEVICE_PATTERN="^[[:alnum:]_.:-]+[[:space:]]+device$" + OFFLINE_PATTERN="^[[:alnum:]_.:-]+[[:space:]]+offline$" + UNAUTHORIZED_PATTERN="^[[:alnum:]_.:-]+[[:space:]]+unauthorized$" +fi + +if [ -z "$DEVICE_ID" ]; then + DETECTED_UNAUTHORIZED_ID="$(printf '%s\n' "$OUTPUT" | awk '$2 == "unauthorized" && $1 !~ /^emulator-/ {print $1; exit}')" + if [ -n "$DETECTED_UNAUTHORIZED_ID" ]; then + fail_with_help "Physical Android device is unauthorized." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + DETECTED_OFFLINE_ID="$(printf '%s\n' "$OUTPUT" | awk '$2 == "offline" && $1 !~ /^emulator-/ {print $1; exit}')" + if [ -n "$DETECTED_OFFLINE_ID" ]; then + fail_with_help "Physical Android device is offline." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + DETECTED_DEVICE_ID="$(printf '%s\n' "$OUTPUT" | awk '$2 == "device" && $1 !~ /^emulator-/ {print $1; exit}')" + if [ -z "$DETECTED_DEVICE_ID" ]; then + fail_with_help "No usable physical Android device was detected." + printf '%s\n' "$OUTPUT" + exit 1 + fi + DEVICE_ID="$DETECTED_DEVICE_ID" +else + if printf '%s\n' "$OUTPUT" | grep -Eq "$UNAUTHORIZED_PATTERN"; then + fail_with_help "Physical Android device is unauthorized." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + if printf '%s\n' "$OUTPUT" | grep -Eq "$OFFLINE_PATTERN"; then + fail_with_help "Physical Android device is offline." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + if ! printf '%s\n' "$OUTPUT" | grep -Eq "$DEVICE_PATTERN"; then + fail_with_help "No usable physical Android device was detected." + printf '%s\n' "$OUTPUT" + exit 1 + fi +fi + +if [ -z "$DEVICE_ID" ]; then + fail_with_help "No usable physical Android device was detected." + printf '%s\n' "$OUTPUT" + exit 1 +fi + +if is_reverse_mode || is_auth_reverse_mode; then + reverse_args=("adb") + if [ -n "$DEVICE_ID" ]; then + reverse_args+=("-s" "$DEVICE_ID") + fi + reverse_args+=("reverse" "--list") + + set +e + if [ "${#env_args[@]}" -gt 0 ]; then + REVERSE_OUTPUT="$(env "${env_args[@]}" "$HOST_ADB_SCRIPT" "${reverse_args[@]:1}" 2>&1)" + else + REVERSE_OUTPUT="$("$HOST_ADB_SCRIPT" "${reverse_args[@]:1}" 2>&1)" + fi + REVERSE_STATUS=$? + set -e + + if [ "$REVERSE_STATUS" -ne 0 ]; then + fail_with_help "adb reverse tcp:${REVERSE_PORT} tcp:${REVERSE_PORT} is not active." + printf '%s\n' "$OUTPUT" + printf '%s\n' "$REVERSE_OUTPUT" + exit 1 + fi + if is_reverse_mode && ! printf '%s\n' "$REVERSE_OUTPUT" | grep -Fq "tcp:${REVERSE_PORT} tcp:${REVERSE_PORT}"; then + fail_with_help "adb reverse tcp:${REVERSE_PORT} tcp:${REVERSE_PORT} is not active." + printf '%s\n' "$OUTPUT" + printf '%s\n' "$REVERSE_OUTPUT" + exit 1 + fi + if is_auth_reverse_mode && ! printf '%s\n' "$REVERSE_OUTPUT" | grep -Fq "tcp:${AUTH_REVERSE_PORT} tcp:${AUTH_REVERSE_PORT}"; then + fail_with_help "adb reverse tcp:${AUTH_REVERSE_PORT} tcp:${AUTH_REVERSE_PORT} is not active." + printf '%s\n' "$OUTPUT" + printf '%s\n' "$REVERSE_OUTPUT" + exit 1 + fi +fi + +print_header +echo "PASS Physical Android device is ready for Docker/WSL Flutter checks." +printf '%s\n' "$OUTPUT" diff --git a/scripts/check-android-emulator-env.sh b/scripts/check-android-emulator-env.sh new file mode 100755 index 0000000..5e9c694 --- /dev/null +++ b/scripts/check-android-emulator-env.sh @@ -0,0 +1,186 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +DEFAULT_ANDROID_ADDRESS="${TDC114_STARTUP_ANDROID_ADDRESS:-172.21.128.1:5559}" +ADB_ADDRESS="${TDC114_ADB_CONNECT_ADDRESS:-$DEFAULT_ANDROID_ADDRESS}" +ADB_HOST="${ADB_ADDRESS%%:*}" +ADB_PORT="${ADB_ADDRESS##*:}" +ADB_SOCKET="${ADB_SERVER_SOCKET:-}" +FLUTTER_DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-}" +FLUTTER_DOCKER_SCRIPT="$ROOT_DIR/scripts/flutter-docker.sh" + +print_common_header() { + echo "[android-preflight]" + if [ -n "$ADB_SOCKET" ]; then + echo "Target ADB server socket: $ADB_SOCKET" + if [ -n "$FLUTTER_DEVICE_ID" ]; then + echo "Target Flutter device id: $FLUTTER_DEVICE_ID" + fi + echo "Policy default: Windows ADB server sharing via ADB_SERVER_SOCKET" + else + echo "Target emulator address: $ADB_ADDRESS" + echo "Fallback direct emulator bridge: $DEFAULT_ANDROID_ADDRESS" + fi + echo +} + +print_success() { + print_common_header + echo "PASS Android emulator is reachable from Docker/WSL." + echo "Next step: continue runtime startup and later run integration/manual Android checks." +} + +print_failure_no_address() { + echo "[android-preflight]" + echo "FAIL Android emulator address is empty." + echo "Set TDC114_ADB_CONNECT_ADDRESS first, for example:" + echo " TDC114_ADB_CONNECT_ADDRESS=$DEFAULT_ANDROID_ADDRESS ./scripts/startup.sh --auto --wait=40" +} + +print_failure_instructions() { + local reason="$1" + + print_common_header + echo "FAIL $reason" + echo + echo "Local PC work required before startup continues:" + echo "1. On Windows, open Android Studio." + echo "2. In Device Manager, keep only one manual-test emulator running." + echo "3. In Windows PowerShell, run adb.exe devices and confirm the emulator is in device state." + echo "4. If it is offline or missing there too, restart the emulator first." + if [ -n "$ADB_SOCKET" ]; then + echo "5. If Windows adb is healthy but WSL still fails, make sure portproxy forwards 5037 -> 127.0.0.1:5037 and the firewall rule for 5037 still exists." + else + echo "5. If Windows adb is healthy but WSL still fails, make sure portproxy forwards $ADB_PORT -> 127.0.0.1:$ADB_PORT and the firewall rule for that port still exists." + fi + echo "6. After Windows-side recovery, rerun:" + if [ -n "$ADB_SOCKET" ]; then + echo " ADB_SERVER_SOCKET=$ADB_SOCKET ./scripts/startup.sh --auto --wait=40" + else + echo " TDC114_ADB_CONNECT_ADDRESS=$ADB_ADDRESS ./scripts/startup.sh --auto --wait=40" + fi + echo + echo "Minimum Windows-side action I cannot do from here:" + echo "- Start or restart the emulator GUI." + if [ -n "$ADB_SOCKET" ]; then + echo "- If needed, fix Windows adb/portproxy state for port 5037." + else + echo "- If needed, fix Windows adb/portproxy state for port $ADB_PORT." + fi + echo + echo "What I can keep doing from WSL after that:" + echo "- Recheck Docker/WSL visibility." + echo "- Continue Baron runtime startup." + echo "- Run API smoke and integration commands." +} + +if [ -z "$ADB_ADDRESS" ]; then + print_failure_no_address + exit 1 +fi + +if [ ! -x "$FLUTTER_DOCKER_SCRIPT" ]; then + echo "Missing executable script: $FLUTTER_DOCKER_SCRIPT" >&2 + exit 1 +fi + +if [ -n "$ADB_SOCKET" ]; then + set +e + OUTPUT="$(ADB_SERVER_SOCKET="$ADB_SOCKET" "$FLUTTER_DOCKER_SCRIPT" adb devices 2>&1)" + STATUS=$? + set -e + + if [ -n "$FLUTTER_DEVICE_ID" ]; then + DEVICE_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+device$" + OFFLINE_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+offline$" + UNAUTHORIZED_PATTERN="^${FLUTTER_DEVICE_ID}[[:space:]]+unauthorized$" + else + DEVICE_PATTERN="^emulator-[0-9]+[[:space:]]+device$" + OFFLINE_PATTERN="^emulator-[0-9]+[[:space:]]+offline$" + UNAUTHORIZED_PATTERN="^emulator-[0-9]+[[:space:]]+unauthorized$" + fi + + if printf '%s\n' "$OUTPUT" | grep -Eq "$DEVICE_PATTERN"; then + print_success + printf '%s\n' "$OUTPUT" + exit 0 + fi + + if printf '%s\n' "$OUTPUT" | grep -Eq "$OFFLINE_PATTERN"; then + print_failure_instructions "Android emulator is visible through Windows ADB server but offline." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + if printf '%s\n' "$OUTPUT" | grep -Eq "$UNAUTHORIZED_PATTERN"; then + print_common_header + echo "FAIL Android emulator is unauthorized through Windows ADB server." + echo + echo "Local PC work required before startup continues:" + echo "1. Bring the emulator window to front." + echo "2. Accept the RSA debugging prompt if it is visible." + echo "3. Confirm Windows PowerShell adb.exe devices shows device." + echo + echo "After approval, rerun:" + echo " ADB_SERVER_SOCKET=$ADB_SOCKET ./scripts/startup.sh --auto --wait=40" + printf '%s\n' "$OUTPUT" + exit 1 + fi + + if printf '%s\n' "$OUTPUT" | grep -Eq "protocol fault|Connection refused|cannot connect|failed to check server version"; then + print_failure_instructions "Docker/WSL could not use the Windows ADB server socket." + printf '%s\n' "$OUTPUT" + exit 1 + fi + + print_failure_instructions "Android emulator was not detected through the Windows ADB server socket." + printf '%s\n' "$OUTPUT" + exit "${STATUS:-1}" +fi + +set +e +OUTPUT="$(TDC114_ADB_CONNECT_ADDRESS="$ADB_ADDRESS" "$FLUTTER_DOCKER_SCRIPT" adb-devices 2>&1)" +STATUS=$? +set -e + +if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+device$"; then + print_success + printf '%s\n' "$OUTPUT" + exit 0 +fi + +if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+offline$"; then + print_failure_instructions "Android emulator is visible but offline." + printf '%s\n' "$OUTPUT" + exit 1 +fi + +if printf '%s\n' "$OUTPUT" | grep -Eq "^${ADB_ADDRESS}[[:space:]]+unauthorized$"; then + print_common_header + echo "FAIL Android emulator is unauthorized." + echo + echo "Local PC work required before startup continues:" + echo "1. Bring the emulator window to front." + echo "2. Accept the RSA debugging prompt if it is visible." + echo "3. If no prompt appears, restart the emulator once and check adb.exe devices again on Windows." + echo + echo "After approval, rerun:" + echo " TDC114_ADB_CONNECT_ADDRESS=$ADB_ADDRESS ./scripts/startup.sh --auto --wait=40" + echo + echo "What I can do after that:" + echo "- Retry WSL/Docker device detection." + echo "- Continue the rest of startup automatically." + printf '%s\n' "$OUTPUT" + exit 1 +fi + +if printf '%s\n' "$OUTPUT" | grep -Eq "failed to connect to ${ADB_HOST}:${ADB_PORT}|Connection refused|cannot connect|protocol fault"; then + print_failure_instructions "Docker/WSL could not connect to the Windows emulator bridge." + printf '%s\n' "$OUTPUT" + exit 1 +fi + +print_failure_instructions "Android emulator was not detected in a usable state." +printf '%s\n' "$OUTPUT" +exit "${STATUS:-1}" diff --git a/scripts/check-baron-api-env.sh b/scripts/check-baron-api-env.sh new file mode 100755 index 0000000..f4e7b65 --- /dev/null +++ b/scripts/check-baron-api-env.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +BARON_DIR="${BARON_SSO_WORKTREE:-/home/ubuntu/workspace/baron-sso-tdc114plus-api}" + +failures=0 +warnings=0 + +section() { + printf '\n[%s]\n' "$1" +} + +pass() { + printf 'PASS %s\n' "$1" +} + +warn() { + printf 'WARN %s\n' "$1" + warnings=$((warnings + 1)) +} + +fail() { + printf 'FAIL %s\n' "$1" + failures=$((failures + 1)) +} + +check_file() { + local path="$1" + local label="$2" + if [ -f "$path" ]; then + pass "$label: $path" + else + fail "$label: missing $path" + fi +} + +section "worktree" +if [ -d "$BARON_DIR/.git" ] || [ -f "$BARON_DIR/.git" ]; then + pass "Baron SSO worktree found: $BARON_DIR" +else + fail "Baron SSO worktree not found: $BARON_DIR" +fi + +check_file "$BARON_DIR/docker-compose.yaml" "compose file" +check_file "$BARON_DIR/.env.sample" "env sample" + +section "runtime files" +if [ -f "$BARON_DIR/.env" ]; then + pass "runtime env file exists" +else + fail "runtime env file missing (.env)" + if [ -f "$BARON_DIR/config-restored/env.redacted" ]; then + warn "redacted env reference exists at config-restored/env.redacted" + fi +fi + +if find "$BARON_DIR/config" -maxdepth 1 -type f ! -name '.gitkeep' | grep -q .; then + pass "config directory has runtime files" +else + warn "config directory has no runtime files beyond .gitkeep" +fi + +if [ -f "$BARON_DIR/config-restored/compose/docker-compose.yaml" ]; then + pass "restored compose reference exists" +else + warn "restored compose reference is missing" +fi + +section "docker" +if ! command -v docker >/dev/null 2>&1; then + warn "docker command not found" +else + if docker network inspect baron_net >/dev/null 2>&1; then + pass "docker network baron_net exists" + else + warn "docker network baron_net not found or not accessible" + fi + + if docker network inspect ory-net >/dev/null 2>&1; then + pass "docker network ory-net exists" + else + warn "docker network ory-net not found or not accessible" + fi + + if docker ps --format '{{.Names}}' 2>/dev/null | grep -qx 'baron_backend'; then + pass "baron_backend container is running" + else + warn "baron_backend container is not running" + fi + + if docker ps --format '{{.Names}}' 2>/dev/null | grep -qx 'baron_gateway'; then + pass "baron_gateway container is running" + else + warn "baron_gateway container is not running" + fi +fi + +section "next steps" +if [ "$failures" -gt 0 ]; then + printf 'RESULT blocked: %d failure(s), %d warning(s)\n' "$failures" "$warnings" + printf 'Hint: create %s/.env from .env.sample and prepare runtime config before API smoke.\n' "$BARON_DIR" + exit 1 +fi + +printf 'RESULT ready-ish: %d failure(s), %d warning(s)\n' "$failures" "$warnings" +printf 'Next command example: TDC114_API_BASE=http://127.0.0.1:5000 ./scripts/api-smoke.sh\n' diff --git a/scripts/check-wsl-maintenance.sh b/scripts/check-wsl-maintenance.sh new file mode 100755 index 0000000..78518a3 --- /dev/null +++ b/scripts/check-wsl-maintenance.sh @@ -0,0 +1,141 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +STATE_DIR="${TDC114_WSL_MAINTENANCE_STATE_DIR:-$ROOT_DIR/.tmp}" +STATE_FILE="${TDC114_WSL_MAINTENANCE_STATE_FILE:-$STATE_DIR/wsl-maintenance-last-check.txt}" +ANCHOR_DATE="${TDC114_WSL_MAINTENANCE_ANCHOR_DATE:-2026-07-16}" +INTERVAL_DAYS="${TDC114_WSL_MAINTENANCE_INTERVAL_DAYS:-14}" +MODE="${1:-status}" +TODAY="${TDC114_WSL_MAINTENANCE_TODAY:-$(date +%F)}" + +usage() { + cat </dev/null 2>&1; then + echo "Invalid date: $value" >&2 + exit 2 + fi +} + +require_non_negative_integer() { + local value="$1" + case "$value" in + ''|*[!0-9]*) + echo "Interval must be a non-negative integer: $value" >&2 + exit 2 + ;; + esac +} + +days_since() { + local from_date="$1" + local to_date="$2" + local from_epoch + local to_epoch + + from_epoch="$(date -d "$from_date" +%s)" + to_epoch="$(date -d "$to_date" +%s)" + echo $(((to_epoch - from_epoch) / 86400)) +} + +print_due_message() { + local base_date="$1" + local elapsed_days="$2" + local next_due_date + + next_due_date="$(date -d "$base_date + $INTERVAL_DAYS days" +%F)" + + cat <&2 + exit 2 + fi + + if [ "$elapsed_days" -ge "$INTERVAL_DAYS" ]; then + print_due_message "$base_date" "$elapsed_days" + else + print_not_due_message "$base_date" "$elapsed_days" + fi + ;; + record) + printf '%s\n' "$TODAY" > "$STATE_FILE" + echo "Recorded WSL maintenance date: $TODAY" + ;; + reset) + rm -f "$STATE_FILE" + echo "Removed recorded WSL maintenance date: $STATE_FILE" + ;; + --help|-h|help) + usage + ;; + *) + echo "Unknown mode: $MODE" >&2 + usage >&2 + exit 2 + ;; +esac diff --git a/scripts/export_baron_org_context_csv.py b/scripts/export_baron_org_context_csv.py new file mode 100644 index 0000000..1d2e1d3 --- /dev/null +++ b/scripts/export_baron_org_context_csv.py @@ -0,0 +1,266 @@ +#!/usr/bin/env python3 + +import argparse +import csv +import json +from collections import defaultdict +from pathlib import Path + + +ROOT_SLUG = "hanmac-family" + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Export Baron org-context JSON to CSV files for photo mapping." + ) + parser.add_argument("--input", required=True, help="Path to org-context JSON file") + parser.add_argument( + "--output-dir", required=True, help="Directory where CSV files will be written" + ) + return parser.parse_args() + + +def normalize_phone(phone: str) -> str: + digits = "".join(ch for ch in (phone or "") if ch.isdigit()) + if digits.startswith("82") and len(digits) >= 11: + digits = "0" + digits[2:] + return digits + + +def format_phone(phone: str) -> str: + digits = normalize_phone(phone) + if len(digits) == 11: + return f"{digits[:3]}-{digits[3:7]}-{digits[7:]}" + if len(digits) == 10: + return f"{digits[:3]}-{digits[3:6]}-{digits[6:]}" + return phone or "" + + +def email_local_part(email: str) -> str: + if "@" not in (email or ""): + return "" + return email.split("@", 1)[0].strip() + + +def load_json(path: Path) -> dict: + with path.open("r", encoding="utf-8") as handle: + return json.load(handle) + + +def build_tree_indexes(tree: dict) -> tuple[dict, dict, dict]: + tenant_by_id: dict[str, dict] = {} + parent_by_id: dict[str, str | None] = {} + children_by_id: dict[str, list[str]] = defaultdict(list) + + def visit(node: dict, parent_id: str | None) -> None: + tenant_id = node.get("id", "") + if not tenant_id: + return + tenant_by_id[tenant_id] = node + parent_by_id[tenant_id] = parent_id + if parent_id: + children_by_id[parent_id].append(tenant_id) + for child in node.get("children", []) or []: + if isinstance(child, dict): + visit(child, tenant_id) + + visit(tree, None) + return tenant_by_id, parent_by_id, children_by_id + + +def build_flat_tenant_index(tenants: list[dict]) -> dict[str, dict]: + return { + tenant.get("id", ""): tenant + for tenant in tenants + if isinstance(tenant, dict) and tenant.get("id") + } + + +def tenant_path( + tenant_id: str, tenant_by_id: dict[str, dict], parent_by_id: dict[str, str | None] +) -> list[dict]: + path: list[dict] = [] + current_id = tenant_id + while current_id: + node = tenant_by_id.get(current_id) + if node is None: + break + path.append(node) + current_id = parent_by_id.get(current_id) or "" + path.reverse() + return path + + +def resolve_company(path: list[dict], tenant: dict) -> tuple[str, str]: + if not path: + return tenant.get("id", ""), tenant.get("name", "") + + if len(path) == 1: + return path[0].get("id", ""), path[0].get("name", "") + + for node in path[1:]: + node_type = (node.get("type") or "").upper() + if node_type in {"COMPANY", "ORGANIZATION"}: + return node.get("id", ""), node.get("name", "") + + first_child = path[1] + return first_child.get("id", ""), first_child.get("name", "") + + +def row_sort_key(row: dict) -> tuple: + phone_key = row["phone_normalized"] or "99999999999" + return ( + row["company_name"], + phone_key, + row["department_name"], + row["name"], + row["email"], + ) + + +def primary_preference(row: dict) -> tuple: + return ( + 0 if row["is_primary"] == "true" else 1, + 0 if row["phone_normalized"] else 1, + 0 if row["grade"] else 1, + 0 if row["position"] else 1, + row["company_name"], + row["department_name"], + row["email"], + ) + + +def build_rows(payload: dict) -> tuple[list[dict], list[dict], list[dict]]: + tree = payload.get("tree") or {} + tenants = payload.get("tenants") or [] + tree_tenant_by_id, parent_by_id, _children_by_id = build_tree_indexes(tree) + flat_tenant_by_id = build_flat_tenant_index(tenants) + + for tenant_id, tenant in flat_tenant_by_id.items(): + tree_tenant_by_id.setdefault(tenant_id, tenant) + + membership_rows: list[dict] = [] + for tenant in tenants: + if not isinstance(tenant, dict): + continue + tenant_id = tenant.get("id", "") + tenant_name = tenant.get("name", "") + path = tenant_path(tenant_id, tree_tenant_by_id, parent_by_id) + company_tenant_id, company_name = resolve_company(path, tenant) + path_names = " > ".join( + node.get("name", "") + for node in path + if node.get("name") and node.get("slug") != ROOT_SLUG + ) + + for member in tenant.get("members", []) or []: + if not isinstance(member, dict): + continue + raw_phone = (member.get("phone") or member.get("phoneNumber") or "").strip() + row = { + "company_tenant_id": company_tenant_id, + "company_name": company_name, + "department_tenant_id": tenant_id, + "department_name": tenant_name, + "department_path": path_names, + "email": (member.get("email") or "").strip(), + "email_id": email_local_part(member.get("email") or ""), + "phone_raw": raw_phone, + "phone_normalized": normalize_phone(raw_phone), + "phone_display": format_phone(raw_phone), + "name": (member.get("name") or "").strip(), + "grade": (member.get("grade") or "").strip(), + "position": (member.get("position") or "").strip(), + "member_department": (member.get("department") or "").strip(), + "is_primary": "true" if member.get("isPrimary") else "false", + "member_id": (member.get("id") or "").strip(), + } + membership_rows.append(row) + + membership_rows.sort(key=row_sort_key) + + primary_rows = [row for row in membership_rows if row["is_primary"] == "true"] + + phone_index: dict[str, list[dict]] = defaultdict(list) + for row in membership_rows: + if row["phone_normalized"]: + phone_index[row["phone_normalized"]].append(row) + + deduped_rows: list[dict] = [] + for phone in sorted(phone_index): + best = sorted(phone_index[phone], key=primary_preference)[0] + duplicate_count = len(phone_index[phone]) + selected = dict(best) + selected["duplicate_row_count_for_phone"] = str(duplicate_count) + deduped_rows.append(selected) + + deduped_rows.sort(key=row_sort_key) + return membership_rows, primary_rows, deduped_rows + + +def write_csv(path: Path, rows: list[dict], fieldnames: list[str]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + with path.open("w", encoding="utf-8-sig", newline="") as handle: + writer = csv.DictWriter(handle, fieldnames=fieldnames) + writer.writeheader() + for row in rows: + writer.writerow({field: row.get(field, "") for field in fieldnames}) + + +def write_summary(path: Path, membership_rows: list[dict], primary_rows: list[dict], deduped_rows: list[dict]) -> None: + company_counts: dict[str, int] = defaultdict(int) + for row in deduped_rows: + company_counts[row["company_name"]] += 1 + + lines = [ + "Baron org-context CSV export summary", + f"membership_rows={len(membership_rows)}", + f"primary_rows={len(primary_rows)}", + f"deduped_phone_rows={len(deduped_rows)}", + "company_counts:", + ] + for company_name in sorted(company_counts): + lines.append(f"- {company_name}: {company_counts[company_name]}") + path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main() -> None: + args = parse_args() + payload = load_json(Path(args.input)) + membership_rows, primary_rows, deduped_rows = build_rows(payload) + + output_dir = Path(args.output_dir) + fieldnames = [ + "company_tenant_id", + "company_name", + "department_tenant_id", + "department_name", + "department_path", + "email", + "email_id", + "phone_raw", + "phone_normalized", + "phone_display", + "name", + "grade", + "position", + "member_department", + "is_primary", + "member_id", + ] + deduped_fieldnames = fieldnames + ["duplicate_row_count_for_phone"] + + write_csv(output_dir / "baron_org_context_membership_rows.csv", membership_rows, fieldnames) + write_csv(output_dir / "baron_org_context_primary_rows.csv", primary_rows, fieldnames) + write_csv(output_dir / "baron_org_context_phone_mapping.csv", deduped_rows, deduped_fieldnames) + write_summary( + output_dir / "baron_org_context_export_summary.txt", + membership_rows, + primary_rows, + deduped_rows, + ) + + +if __name__ == "__main__": + main() diff --git a/scripts/flutter-docker.sh b/scripts/flutter-docker.sh index b093977..a290030 100755 --- a/scripts/flutter-docker.sh +++ b/scripts/flutter-docker.sh @@ -3,10 +3,65 @@ set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" IMAGE="${FLUTTER_DOCKER_IMAGE:-ghcr.io/cirruslabs/flutter:stable}" +ADB_KEY_DIR="$ROOT_DIR/.android-adb" +CACHE_ROOT="${FLUTTER_DOCKER_CACHE_ROOT:-$ROOT_DIR/.docker-cache/flutter}" +GRADLE_CACHE_DIR="$CACHE_ROOT/gradle" +PUB_CACHE_DIR="$CACHE_ROOT/pub" +ANDROID_LICENSES_DIR="$CACHE_ROOT/android-sdk/licenses" +ANDROID_NDK_DIR="$CACHE_ROOT/android-sdk/ndk" +ANDROID_CMAKE_DIR="$CACHE_ROOT/android-sdk/cmake" +MODE="${1:-flutter}" +if [ "$#" -gt 0 ]; then + shift || true +fi + +DOCKER_ENV_ARGS=() +if [ -n "${ADB_SERVER_SOCKET:-}" ]; then + DOCKER_ENV_ARGS+=("-e" "ADB_SERVER_SOCKET=${ADB_SERVER_SOCKET}") +fi +if [ -n "${TDC114_ADB_CONNECT_ADDRESS:-}" ]; then + DOCKER_ENV_ARGS+=("-e" "TDC114_ADB_CONNECT_ADDRESS=${TDC114_ADB_CONNECT_ADDRESS}") +fi + +mkdir -p "$ADB_KEY_DIR" +mkdir -p "$GRADLE_CACHE_DIR" +mkdir -p "$PUB_CACHE_DIR" +mkdir -p "$ANDROID_LICENSES_DIR" +mkdir -p "$ANDROID_NDK_DIR" +mkdir -p "$ANDROID_CMAKE_DIR" docker run --rm \ -u 0:0 \ + "${DOCKER_ENV_ARGS[@]}" \ -v "$ROOT_DIR:/workspace" \ + -v "$ADB_KEY_DIR:/root/.android" \ + -v "$GRADLE_CACHE_DIR:/root/.gradle" \ + -v "$PUB_CACHE_DIR:/root/.pub-cache" \ + -v "$ANDROID_LICENSES_DIR:/opt/android-sdk-linux/licenses" \ + -v "$ANDROID_NDK_DIR:/opt/android-sdk-linux/ndk" \ + -v "$ANDROID_CMAKE_DIR:/opt/android-sdk-linux/cmake" \ -w /workspace/app \ "$IMAGE" \ - sh -lc "flutter pub get && flutter $* && chown -R 1000:1000 /workspace/app" + sh -lc ' + set -e + if command -v sdkmanager >/dev/null 2>&1; then + yes | sdkmanager --licenses >/tmp/android-sdk-licenses.log 2>&1 || { + cat /tmp/android-sdk-licenses.log >&2 + exit 1 + } + fi + if [ -n "${TDC114_ADB_CONNECT_ADDRESS:-}" ]; then + adb connect "$TDC114_ADB_CONNECT_ADDRESS" || true + adb devices + fi + if [ "$1" = "adb-devices" ]; then + exit 0 + fi + if [ "$1" = "adb" ]; then + shift + exec adb "$@" + fi + flutter pub get + flutter "$@" + chown -R 1000:1000 /workspace/app + ' sh "$MODE" "$@" diff --git a/scripts/host-adb.sh b/scripts/host-adb.sh new file mode 100755 index 0000000..1480317 --- /dev/null +++ b/scripts/host-adb.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +LOCAL_ADB_BIN="$ROOT_DIR/.tools/android-platform-tools/adb" +ADB_BIN="${TDC114_HOST_ADB_BIN:-}" + +if [ -z "$ADB_BIN" ]; then + if [ -x "$LOCAL_ADB_BIN" ]; then + ADB_BIN="$LOCAL_ADB_BIN" + elif command -v adb >/dev/null 2>&1; then + ADB_BIN="$(command -v adb)" + fi +fi + +if [ -z "$ADB_BIN" ] || [ ! -x "$ADB_BIN" ]; then + cat >&2 <&2 echo "Example: TDC114_API_BASE=https://staging.example.com $0" >&2 + if [ -f "$LOCAL_ENV_FILE" ]; then + echo "Loaded local smoke env from $LOCAL_ENV_FILE" >&2 + fi exit 64 fi @@ -16,4 +26,152 @@ if [ ! -d "$APP_DIR/integration_test" ]; then exit 2 fi -"$ROOT_DIR/scripts/flutter-docker.sh" test integration_test +if [ -n "${TDC114_ADB_CONNECT_ADDRESS:-}" ] || [ -n "${TDC114_FLUTTER_DEVICE_ID:-}" ] || [ -n "${ADB_SERVER_SOCKET:-}" ]; then + "$ANDROID_PREFLIGHT_SCRIPT" +fi + +TEST_ARGS=( + "drive" + "--dart-define=TDC114_API_BASE=${TDC114_API_BASE}" +) + +append_optional_define() { + local key="$1" + local value="${!key:-}" + if [ -n "$value" ]; then + TEST_ARGS+=("--dart-define=${key}=${value}") + fi +} + +append_optional_define "SSO_BASE_URL" +append_optional_define "TDC114_AUTH_API_BASE" +append_optional_define "TDC114_DIRECTORY_API_BASE" +append_optional_define "TDC114_ORGANIZATION_API_BASE" +append_optional_define "TDC114_ORG_CONTEXT_API_BASE" +append_optional_define "TDC114_ORG_CONTEXT_TENANT_SLUG" +append_optional_define "TDC114_BARON_KEY_ID" +append_optional_define "TDC114_BARON_KEY_SECRET" + +TEST_DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-${TDC114_ADB_CONNECT_ADDRESS:-}}" +if [ -n "$TEST_DEVICE_ID" ]; then + TEST_ARGS+=("-d" "$TEST_DEVICE_ID") +fi + +if [ "${TDC114_SMOKE_ASSUME_LOGGED_IN:-}" = "1" ] || [ "${TDC114_SMOKE_ASSUME_LOGGED_IN:-}" = "true" ]; then + TEST_ARGS+=("--dart-define=TDC114_SMOKE_ASSUME_LOGGED_IN=true") + bootstrap_mode="${TDC114_SESSION_BOOTSTRAP_MODE:-mock}" + preauth_exports="" + + if [ -z "${TDC114_SMOKE_PHONE:-}" ]; then + TDC114_SMOKE_PHONE=01012345678 + fi + + if [ "$bootstrap_mode" = "legacy-phone-login" ]; then + bootstrap_api_base="${TDC114_SESSION_BOOTSTRAP_API_BASE:-$TDC114_API_BASE}" + bootstrap_api_base="${bootstrap_api_base//10.0.2.2/127.0.0.1}" + bootstrap_api_base="${bootstrap_api_base//localhost/127.0.0.1}" + + login_payload="$(printf '{"phoneNumber":"%s","device":{"platform":"android","appVersion":"integration-smoke","deviceName":"android-bootstrap"}}' "$TDC114_SMOKE_PHONE")" + set +e + login_response="$( + curl -fsS \ + -H 'content-type: application/json' \ + -d "$login_payload" \ + "${bootstrap_api_base%/}/api/v1/tdc114plus/auth/phone-login" 2>/tmp/tdc114plus_integration_bootstrap.err + )" + bootstrap_status=$? + set -e + + if [ "$bootstrap_status" -eq 0 ]; then + preauth_exports="$( + python3 -c ' +import json, sys +data = json.loads(sys.argv[1]) +user = data.get("user") or {} +fields = { + "TDC114_PREAUTH_TOKEN": data.get("token", ""), + "TDC114_PREAUTH_EXPIRES_AT": data.get("expiresAt", ""), + "TDC114_PREAUTH_USER_ID": user.get("id", ""), + "TDC114_PREAUTH_USER_NAME": user.get("name", ""), + "TDC114_PREAUTH_USER_PHONE": user.get("phoneNumber", ""), + "TDC114_PREAUTH_TENANT_ID": user.get("tenantId", ""), + "TDC114_PREAUTH_TENANT_NAME": user.get("tenantName", ""), + "TDC114_PREAUTH_TENANT_SLUG": user.get("tenantSlug", ""), + "TDC114_PREAUTH_DEPARTMENT": user.get("department", ""), + "TDC114_PREAUTH_GRADE": user.get("grade", ""), + "TDC114_PREAUTH_POSITION": user.get("position", ""), + "TDC114_PREAUTH_JOB_TITLE": user.get("jobTitle", ""), +} +for key, value in fields.items(): + if value is None: + value = "" + print(f"{key}={value}") +' "$login_response" + )" + else + echo "WARN legacy integration bootstrap phone-login failed; falling back to mock directory mode." >&2 + cat /tmp/tdc114plus_integration_bootstrap.err >&2 || true + fi + else + echo "INFO integration session bootstrap uses mock mode by default under the current headless-login policy." >&2 + fi + + if [ -z "$preauth_exports" ]; then + preauth_exports="$(cat <<'EOF' +TDC114_PREAUTH_TOKEN=mock-session-token +TDC114_PREAUTH_EXPIRES_AT=2099-12-31T23:59:59Z +TDC114_PREAUTH_USER_ID=user-001 +TDC114_PREAUTH_USER_NAME=김하늘 +TDC114_PREAUTH_USER_PHONE=+821012345678 +TDC114_PREAUTH_TENANT_ID=tenant-hanmac +TDC114_PREAUTH_TENANT_NAME=한맥 +TDC114_PREAUTH_TENANT_SLUG=hanmac +TDC114_PREAUTH_DEPARTMENT=기술연구소 +TDC114_PREAUTH_GRADE=책임 +TDC114_PREAUTH_POSITION=팀장 +TDC114_PREAUTH_JOB_TITLE=Flutter 개발 +EOF +)" + TEST_ARGS+=("--dart-define=TDC114_SMOKE_USE_MOCK_DIRECTORY=true") + fi + + while IFS='=' read -r key value; do + [ -n "$key" ] || continue + TEST_ARGS+=("--dart-define=${key}=${value}") + done <<< "$preauth_exports" +fi + +if [ -n "${TDC114_SMOKE_PHONE:-}" ]; then + TEST_ARGS+=("--dart-define=TDC114_SMOKE_PHONE=${TDC114_SMOKE_PHONE}") +fi + +if [ -n "${TDC114_SMOKE_EXPECTED_NAME:-}" ]; then + TEST_ARGS+=("--dart-define=TDC114_SMOKE_EXPECTED_NAME=${TDC114_SMOKE_EXPECTED_NAME}") +fi + +if [ -n "${TDC114_SMOKE_EXPECTED_TENANT_LABEL:-}" ]; then + TEST_ARGS+=("--dart-define=TDC114_SMOKE_EXPECTED_TENANT_LABEL=${TDC114_SMOKE_EXPECTED_TENANT_LABEL}") +fi + +TEST_ARGS+=( + "--driver=test_driver/integration_driver.dart" + "--target=integration_test/app_smoke_test.dart" +) + +OUTPUT_FILE="$(mktemp)" +trap 'rm -f "$OUTPUT_FILE"' EXIT + +set +e +"$ROOT_DIR/scripts/flutter-docker.sh" "${TEST_ARGS[@]}" 2>&1 | tee "$OUTPUT_FILE" +status=$? +set -e + +if [ "$status" -ne 0 ] && grep -q "No supported devices connected." "$OUTPUT_FILE"; then + echo >&2 + echo "integration test requires a supported runtime target." >&2 + echo "Current Flutter project only has Android/iOS runners." >&2 + echo "Connect an Android physical device first, or use an emulator fallback, before retrying." >&2 + exit 2 +fi + +exit "$status" diff --git a/scripts/manual-postlogin-run.sh b/scripts/manual-postlogin-run.sh new file mode 100755 index 0000000..d4b8135 --- /dev/null +++ b/scripts/manual-postlogin-run.sh @@ -0,0 +1,142 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +LOCAL_ENV_FILE="${TDC114_SMOKE_ENV_FILE:-$ROOT_DIR/scripts/.env.android-device.local}" + +if [ -f "$LOCAL_ENV_FILE" ]; then + # shellcheck disable=SC1090 + source "$LOCAL_ENV_FILE" +fi + +APP_API_BASE="${TDC114_API_BASE:-}" +if [ -z "$APP_API_BASE" ]; then + echo "TDC114_API_BASE is required." >&2 + exit 64 +fi + +if [ -z "${TDC114_ADB_CONNECT_ADDRESS:-}" ] && [ -z "${ADB_SERVER_SOCKET:-}" ]; then + echo "Either ADB_SERVER_SOCKET or TDC114_ADB_CONNECT_ADDRESS is required." >&2 + echo "Example: ADB_SERVER_SOCKET=tcp:172.21.128.1:5037 TDC114_FLUTTER_DEVICE_ID=ce091719b0a418620d7e $0" >&2 + exit 64 +fi + +if [ -n "${ADB_SERVER_SOCKET:-}" ] && [ -z "${TDC114_ADB_CONNECT_ADDRESS:-}" ] && [ -z "${TDC114_FLUTTER_DEVICE_ID:-}" ]; then + echo "TDC114_FLUTTER_DEVICE_ID is required when using ADB_SERVER_SOCKET." >&2 + echo "Example: TDC114_FLUTTER_DEVICE_ID=ce091719b0a418620d7e" >&2 + exit 64 +fi + +SMOKE_PHONE="${TDC114_SMOKE_PHONE:-01091365338}" +BOOTSTRAP_API_BASE="${TDC114_SESSION_BOOTSTRAP_API_BASE:-$APP_API_BASE}" +BOOTSTRAP_API_BASE="${BOOTSTRAP_API_BASE//10.0.2.2/127.0.0.1}" +BOOTSTRAP_API_BASE="${BOOTSTRAP_API_BASE//localhost/127.0.0.1}" +DEVICE_ID="${TDC114_FLUTTER_DEVICE_ID:-$TDC114_ADB_CONNECT_ADDRESS}" +SKIP_SESSION_BOOTSTRAP="${TDC114_SKIP_SESSION_BOOTSTRAP:-false}" + +tmp_body="$(mktemp)" +tmp_err="$(mktemp)" +trap 'rm -f "$tmp_body" "$tmp_err"' EXIT + +DEFINE_ARGS=( + "--dart-define=TDC114_API_BASE=${APP_API_BASE}" +) + +append_optional_define() { + local key="$1" + local value="${!key:-}" + if [ -n "$value" ]; then + DEFINE_ARGS+=("--dart-define=${key}=${value}") + fi +} + +append_optional_define "SSO_BASE_URL" +append_optional_define "TDC114_AUTH_API_BASE" +append_optional_define "TDC114_DIRECTORY_API_BASE" +append_optional_define "TDC114_ORGANIZATION_API_BASE" +append_optional_define "TDC114_ORG_CONTEXT_API_BASE" +append_optional_define "TDC114_ORG_CONTEXT_TENANT_SLUG" +append_optional_define "TDC114_BARON_KEY_ID" +append_optional_define "TDC114_BARON_KEY_SECRET" + +if [ "$SKIP_SESSION_BOOTSTRAP" = "1" ] || [ "$SKIP_SESSION_BOOTSTRAP" = "true" ]; then + echo "Skipping session bootstrap; app will open its normal login flow." >&2 +else + login_payload="$(printf '{"phoneNumber":"%s","device":{"platform":"android","appVersion":"manual-smoke","deviceName":"android-manual"}}' "$SMOKE_PHONE")" + + set +e + http_code="$( + curl -sS \ + -o "$tmp_body" \ + -w '%{http_code}' \ + -H 'content-type: application/json' \ + -d "$login_payload" \ + "${BOOTSTRAP_API_BASE%/}/api/v1/tdc114plus/auth/phone-login" 2>"$tmp_err" + )" + curl_status=$? + set -e + + if [ "$curl_status" -eq 0 ] && [ "$http_code" = "200" ]; then + mapfile -t exported < <( + python3 - "$tmp_body" <<'PY' +import json +import sys + +with open(sys.argv[1], 'r', encoding='utf-8') as fh: + data = json.load(fh) + +user = data.get("user") or {} +fields = { + "TDC114_PREAUTH_TOKEN": data.get("token", ""), + "TDC114_PREAUTH_EXPIRES_AT": data.get("expiresAt", ""), + "TDC114_PREAUTH_USER_ID": user.get("id", ""), + "TDC114_PREAUTH_USER_NAME": user.get("name", ""), + "TDC114_PREAUTH_USER_PHONE": user.get("phoneNumber", ""), + "TDC114_PREAUTH_TENANT_ID": user.get("tenantId", ""), + "TDC114_PREAUTH_TENANT_NAME": user.get("tenantName", ""), + "TDC114_PREAUTH_TENANT_SLUG": user.get("tenantSlug", ""), + "TDC114_PREAUTH_DEPARTMENT": user.get("department", "") or "", + "TDC114_PREAUTH_GRADE": user.get("grade", "") or "", + "TDC114_PREAUTH_POSITION": user.get("position", "") or "", + "TDC114_PREAUTH_JOB_TITLE": user.get("jobTitle", "") or "", +} + +for key, value in fields.items(): + print(f"{key}={value}") +PY + ) + for entry in "${exported[@]}"; do + DEFINE_ARGS+=("--dart-define=${entry}") + done + echo "Using real local phone-login bootstrap for manual post-login run." >&2 + else + echo "WARN local phone-login bootstrap failed; using mock directory fallback." >&2 + if [ -s "$tmp_err" ]; then + cat "$tmp_err" >&2 + fi + if [ -s "$tmp_body" ]; then + cat "$tmp_body" >&2 + fi + DEFINE_ARGS+=( + "--dart-define=TDC114_SMOKE_USE_MOCK_DIRECTORY=true" + "--dart-define=TDC114_PREAUTH_TOKEN=mock-session-token" + "--dart-define=TDC114_PREAUTH_EXPIRES_AT=2099-12-31T23:59:59Z" + "--dart-define=TDC114_PREAUTH_USER_ID=user-001" + "--dart-define=TDC114_PREAUTH_USER_NAME=김하늘" + "--dart-define=TDC114_PREAUTH_USER_PHONE=+821012345678" + "--dart-define=TDC114_PREAUTH_TENANT_ID=tenant-hanmac" + "--dart-define=TDC114_PREAUTH_TENANT_NAME=한맥" + "--dart-define=TDC114_PREAUTH_TENANT_SLUG=hanmac" + "--dart-define=TDC114_PREAUTH_DEPARTMENT=기술연구소" + "--dart-define=TDC114_PREAUTH_GRADE=책임" + "--dart-define=TDC114_PREAUTH_POSITION=팀장" + "--dart-define=TDC114_PREAUTH_JOB_TITLE=Flutter 개발" + ) + fi +fi + +echo "Launching app on device ${DEVICE_ID} with post-login seed..." >&2 +exec "$ROOT_DIR/scripts/flutter-docker.sh" \ + run \ + -d "$DEVICE_ID" \ + "${DEFINE_ARGS[@]}" diff --git a/scripts/shutdown.sh b/scripts/shutdown.sh new file mode 100755 index 0000000..c68bd50 --- /dev/null +++ b/scripts/shutdown.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# scripts/shutdown.sh +# Graceful / safe shutdown helper for tdc114plus development environment +# Usage: ./scripts/shutdown.sh [--dry-run] [--auto] + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +BARON_DIR="${BARON_SSO_WORKTREE:-/home/ubuntu/workspace/baron-sso-tdc114plus-api}" +LOG_BASE_DIR="${TDC114_LOG_BASE:-$ROOT_DIR/logs}" +LOG_DIR="$LOG_BASE_DIR/$(date +%F)" +LOG_FILE="$LOG_DIR/shutdown.log" +DOCKER_BIN="${DOCKER_BIN:-docker}" +ADB_BIN="${ADB_BIN:-adb}" +ADB_DISCONNECT_ADDRESS="${TDC114_ADB_CONNECT_ADDRESS:-${TDC114_STARTUP_ANDROID_ADDRESS:-}}" +ADB_SERVER_SOCKET_VALUE="${ADB_SERVER_SOCKET:-}" +PKILL_BIN="${PKILL_BIN:-pkill}" +CHMOD_BIN="${CHMOD_BIN:-chmod}" +CHOWN_BIN="${CHOWN_BIN:-chown}" +AUTH_PORT="${TDC114_AUTH_PORT:-5001}" + +DRY_RUN=true +AUTO=false + +for arg in "$@"; do + case "$arg" in + --dry-run) DRY_RUN=true ;; + --auto) DRY_RUN=false; AUTO=true ;; + --help|-h) + cat <&2; exit 2 ;; + esac +done + +mkdir -p "$LOG_DIR" + +log() { + echo "$*" | tee -a "$LOG_FILE" +} + +action() { + log "+ $*" + if [ "$DRY_RUN" = false ]; then + set +e + bash -lc "$*" 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + return "$rc" + fi +} + +action_cmd() { + log "+ $*" + if [ "$DRY_RUN" = false ]; then + set +e + "$@" 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + return "$rc" + fi +} + +compose_cmd() { + printf "%s compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml %s" \ + "$DOCKER_BIN" "$1" +} + +log "Shutdown started: $(date)" + +# 1) Stop only tdc114plus-related helper processes. +action_cmd "$PKILL_BIN" -f "$ROOT_DIR/scripts/integration_tests.sh" || true +action_cmd "$PKILL_BIN" -f "$ROOT_DIR/scripts/flutter-docker.sh" || true +action "lsof -nP -iTCP:$AUTH_PORT -sTCP:LISTEN -t 2>/dev/null | xargs -r kill || true" + +# 2) Disconnect adb only when the current target address is explicit. +if [ -n "$ADB_DISCONNECT_ADDRESS" ]; then + action_cmd env TDC114_ADB_CONNECT_ADDRESS="$ADB_DISCONNECT_ADDRESS" "$ADB_BIN" disconnect "$ADB_DISCONNECT_ADDRESS" || true +else + log "Skipping adb disconnect because TDC114_ADB_CONNECT_ADDRESS is not set." + if [ -n "$ADB_SERVER_SOCKET_VALUE" ]; then + log "ADB_SERVER_SOCKET is in use; physical USB device remains managed by the shared host ADB server." + else + log "No explicit Android target connection was provided for disconnect." + fi +fi + +# 3) Save compose logs before bringing the stack down. +action "cd '$BARON_DIR' && $(compose_cmd "logs --no-color") > '$LOG_DIR/baron-compose.log' 2>&1 || true" + +# 4) Docker compose down for Baron SSO (safe stop). +action "cd '$BARON_DIR' && $(compose_cmd "down")" + +# 5) Optional: force remove old containers (only when --auto). +if [ "$AUTO" = true ]; then + action "$DOCKER_BIN ps -a --format '{{.Names}}' | grep -iE 'baron|ory|tdc114' | xargs -r $DOCKER_BIN rm -f || true" +else + log "(skipping destructive container rm; pass --auto to enable)" +fi + +# 6) Restore generated config ownership and permissions when needed. +action "cd '$BARON_DIR' && $CHMOD_BIN -R u+w config/.generated/ 2>/dev/null || true" +action "cd '$BARON_DIR' && $CHOWN_BIN -R \$(id -u):\$(id -g) config/.generated/ 2>/dev/null || true" + +log "Shutdown finished: $(date)" + +if [ "$DRY_RUN" = true ]; then + log "Dry-run mode: no shutdown actions were executed. Use --auto to run for real." +fi + +exit 0 diff --git a/scripts/smoke.env.example b/scripts/smoke.env.example new file mode 100644 index 0000000..3af44b4 --- /dev/null +++ b/scripts/smoke.env.example @@ -0,0 +1,4 @@ +# Copy this file to scripts/.env.smoke.local for local authenticated smoke runs. + +TDC114_API_BASE=http://127.0.0.1:5000 +TDC114_SMOKE_PHONE=01012345678 diff --git a/scripts/smoke.staging.env.example b/scripts/smoke.staging.env.example new file mode 100644 index 0000000..597677a --- /dev/null +++ b/scripts/smoke.staging.env.example @@ -0,0 +1,16 @@ +TDC114_API_BASE=https://sso.hmac.kr +TDC114_ORG_CONTEXT_API_BASE=https://sadmin.hmac.kr +TDC114_ORG_CONTEXT_TENANT_SLUG=hanmac-family +TDC114_BARON_KEY_ID=replace-with-staging-key-id +TDC114_BARON_KEY_SECRET=replace-with-staging-key-secret +TDC114_SMOKE_PHONE=010xxxxxxxx +TDC114_SMOKE_AUTH_FLOW=link + +# Optional: set these only when the staging account has stable expected labels. +# TDC114_SMOKE_EXPECTED_NAME=홍길동 +# TDC114_SMOKE_EXPECTED_TENANT_LABEL=IS3 + +# Optional split mode: +# TDC114_AUTH_API_BASE=https://sso.hmac.kr +# TDC114_DIRECTORY_API_BASE=https://sadmin.hmac.kr +# TDC114_ORGANIZATION_API_BASE=https://sadmin.hmac.kr diff --git a/scripts/start-auth-server.sh b/scripts/start-auth-server.sh new file mode 100755 index 0000000..0d8c466 --- /dev/null +++ b/scripts/start-auth-server.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env bash +# Start the local tdc114plus-auth broker with one env file. +# Usage: ./scripts/start-auth-server.sh [--restart] [--env-file=PATH] + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +AUTH_DIR="${TDC114_AUTH_WORKTREE:-/home/ubuntu/workspace/tdc114plus-auth}" +ENV_FILE="$ROOT_DIR/scripts/.env.android-device.local" +NAVER_WORKS_ENV_FILE="${NAVER_WORKS_ENV_FILE:-$ROOT_DIR/secrets/naver_works_service_account.local.env}" +AUTH_GOCACHE="${AUTH_GOCACHE:-/tmp/tdc114plus-auth-gocache}" +LOG_BASE_DIR="${TDC114_LOG_BASE:-$ROOT_DIR/logs}" +LOG_DIR="$LOG_BASE_DIR/$(date +%F)" +LOG_FILE="$LOG_DIR/tdc114plus-auth.log" +PORT="${TDC114_AUTH_PORT:-5001}" +RESTART=false + +for arg in "$@"; do + case "$arg" in + --restart) RESTART=true ;; + --env-file=*) ENV_FILE="${arg#*=}" ;; + --help|-h) + cat <&2; exit 2 ;; + esac +done + +mkdir -p "$LOG_DIR" +mkdir -p "$AUTH_GOCACHE" + +log() { + echo "$*" +} + +fail() { + echo "FAIL $*" >&2 + exit 1 +} + +require_file() { + [ -f "$1" ] || fail "missing file: $1" +} + +require_dir() { + [ -d "$1" ] || fail "missing directory: $1" +} + +listener_pids() { + lsof -nP -iTCP:"$PORT" -sTCP:LISTEN -t 2>/dev/null || true +} + +wait_for_health() { + local i=1 + while [ "$i" -le 20 ]; do + if curl -fsSL --max-time 2 "http://127.0.0.1:$PORT/health" >/dev/null 2>&1; then + return 0 + fi + sleep 0.5 + i=$((i + 1)) + done + return 1 +} + +require_dir "$AUTH_DIR" +require_file "$AUTH_DIR/cmd/server/main.go" +require_file "$ENV_FILE" +require_file "$AUTH_DIR/secrets/private_key.pem" +require_file "$AUTH_DIR/secrets/public_key.pem" + +current_pids="$(listener_pids)" +if [ -n "$current_pids" ]; then + if [ "$RESTART" = true ]; then + log "Stopping existing auth server on :$PORT" + # shellcheck disable=SC2086 + kill $current_pids 2>/dev/null || true + sleep 1 + else + if wait_for_health; then + log "tdc114plus-auth is already running on :$PORT" + exit 0 + fi + fail "port $PORT is already in use, but health check failed. Run with --restart." + fi +fi + +set -a +# shellcheck source=/dev/null +source "$ENV_FILE" +set +a + +if [ -f "$NAVER_WORKS_ENV_FILE" ]; then + set -a + # shellcheck source=/dev/null + source "$NAVER_WORKS_ENV_FILE" + set +a + + if [ -n "${WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE:-}" ] && [[ "$WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE" != /* ]]; then + WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE="$ROOT_DIR/$WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE" + export WORKS_ADMIN_OAUTH_CLIENT_PRIVATE_KEY_FILE + fi +fi + +: "${TDC114_ORG_CONTEXT_API_BASE:?TDC114_ORG_CONTEXT_API_BASE is required in $ENV_FILE}" +: "${TDC114_ORG_CONTEXT_TENANT_SLUG:?TDC114_ORG_CONTEXT_TENANT_SLUG is required in $ENV_FILE}" +: "${TDC114_BARON_KEY_ID:?TDC114_BARON_KEY_ID is required in $ENV_FILE}" +: "${TDC114_BARON_KEY_SECRET:?TDC114_BARON_KEY_SECRET is required in $ENV_FILE}" + +UPSTREAM_ORG_CONTEXT_BASE="${TDC114_AUTH_UPSTREAM_ORG_CONTEXT_API_BASE:-}" +if [ -z "$UPSTREAM_ORG_CONTEXT_BASE" ]; then + UPSTREAM_ORG_CONTEXT_BASE="$TDC114_ORG_CONTEXT_API_BASE" +fi + +log "Starting tdc114plus-auth on :$PORT" +log "Log file: $LOG_FILE" + +( + cd "$AUTH_DIR" + setsid env \ + GOCACHE="$AUTH_GOCACHE" \ + PORT="$PORT" \ + AUTH_PROVIDER=baron \ + APP_SESSION_SECRET="${APP_SESSION_SECRET:-tdc114plus-dev-session}" \ + BARON_BASE_URL="${BARON_BASE_URL:-https://sso.hmac.kr}" \ + BARON_CLIENT_ID="${BARON_CLIENT_ID:-243f0b04-a417-4fbe-ae59-a90b16783a79}" \ + BARON_OIDC_AUTHORIZATION_URL="${BARON_OIDC_AUTHORIZATION_URL:-https://sso.hmac.kr/oidc/oauth2/auth}" \ + BARON_OIDC_TOKEN_URL="${BARON_OIDC_TOKEN_URL:-https://sso.hmac.kr/oidc/oauth2/token}" \ + BARON_OIDC_REDIRECT_URI="${BARON_OIDC_REDIRECT_URI:-https://114-auth.hmac.kr/api/v1/auth/oidc/callback}" \ + BARON_OIDC_SCOPES="${BARON_OIDC_SCOPES:-openid profile email}" \ + BARON_PRIVATE_KEY_PATH="${BARON_PRIVATE_KEY_PATH:-./secrets/private_key.pem}" \ + BARON_PUBLIC_KEY_PATH="${BARON_PUBLIC_KEY_PATH:-./secrets/public_key.pem}" \ + BARON_JWKS_KID="${BARON_JWKS_KID:-tdc114plus-auth-key-1}" \ + BARON_LINK_RETURN_URI="${BARON_LINK_RETURN_URI:-}" \ + BARON_ORG_CONTEXT_BASE_URL="$UPSTREAM_ORG_CONTEXT_BASE" \ + BARON_ORG_CONTEXT_TENANT_SLUG="$TDC114_ORG_CONTEXT_TENANT_SLUG" \ + BARON_ORG_CONTEXT_KEY_ID="$TDC114_BARON_KEY_ID" \ + BARON_ORG_CONTEXT_KEY_SECRET="$TDC114_BARON_KEY_SECRET" \ + go run ./cmd/server >>"$LOG_FILE" 2>&1 < /dev/null & +) + +if ! wait_for_health; then + tail -n 80 "$LOG_FILE" >&2 || true + fail "tdc114plus-auth did not become healthy on :$PORT" +fi + +log "tdc114plus-auth ready on :$PORT" diff --git a/scripts/startup.sh b/scripts/startup.sh new file mode 100755 index 0000000..1639770 --- /dev/null +++ b/scripts/startup.sh @@ -0,0 +1,443 @@ +#!/usr/bin/env bash +# scripts/startup.sh +# Startup helper for tdc114plus development environment +# Usage: ./scripts/startup.sh [--dry-run] [--auto] [--wait=N] [--skip-android-check] + +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +BARON_DIR="${BARON_SSO_WORKTREE:-/home/ubuntu/workspace/baron-sso-tdc114plus-api}" +LOG_BASE_DIR="${TDC114_LOG_BASE:-$ROOT_DIR/logs}" +LOG_DIR="$LOG_BASE_DIR/$(date +%F)" +LOG_FILE="$LOG_DIR/startup.log" +CHECK_SCRIPT="${TDC114_CHECK_SCRIPT:-$ROOT_DIR/scripts/check-baron-api-env.sh}" +API_SMOKE_SCRIPT="${TDC114_API_SMOKE_SCRIPT:-$ROOT_DIR/scripts/api-smoke.sh}" +DOCKER_BIN="${DOCKER_BIN:-docker}" +MAKE_BIN="${MAKE_BIN:-make}" +CHMOD_BIN="${CHMOD_BIN:-chmod}" +REQUIRE_AUTH_SMOKE="${TDC114_REQUIRE_AUTH_SMOKE:-false}" +ANDROID_PRECHECK_SCRIPT="${TDC114_ANDROID_PRECHECK_SCRIPT:-$ROOT_DIR/scripts/check-android-device-env.sh}" +AUTH_SERVER_SCRIPT="${TDC114_AUTH_SERVER_SCRIPT:-$ROOT_DIR/scripts/start-auth-server.sh}" +START_AUTH_SERVER="${TDC114_START_AUTH_SERVER:-true}" +DAILY_HANDOFF_DIR="${TDC114_DAILY_HANDOFF_DIR:-$ROOT_DIR/docs/daily-issues}" +REQUIRE_DAILY_HANDOFF="${TDC114_REQUIRE_DAILY_HANDOFF:-true}" +WSL_MAINTENANCE_SCRIPT="${TDC114_WSL_MAINTENANCE_SCRIPT:-$ROOT_DIR/scripts/check-wsl-maintenance.sh}" +WSL_MAINTENANCE_ENABLED="${TDC114_WSL_MAINTENANCE_ENABLED:-true}" + +DRY_RUN=true +AUTO=false +WAIT=30 +RETRIES=6 +SLEEP_BETWEEN=10 +SKIP_ANDROID_CHECK=false + +for arg in "$@"; do + case "$arg" in + --dry-run) DRY_RUN=true ;; + --auto) DRY_RUN=false; AUTO=true ;; + --wait=*) WAIT=${arg#*=} ;; + --skip-android-check|--skip-device-check) SKIP_ANDROID_CHECK=true ;; + --help|-h) + cat <&2; exit 2 ;; + *) echo "Unknown arg: $arg" >&2; exit 2 ;; + esac +done + +case "$WAIT" in + ''|*[!0-9]*) + echo "--wait must be a non-negative integer" >&2 + exit 2 + ;; +esac + +mkdir -p "$LOG_DIR" + +log() { + echo "$*" | tee -a "$LOG_FILE" +} + +run_cmd() { + log "+ $*" + if [ "$DRY_RUN" = false ]; then + set +e + bash -lc "$*" 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + return "$rc" + fi +} + +run_cmd_capture() { + local output_file="$1" + shift + + log "+ $*" + if [ "$DRY_RUN" = false ]; then + set +e + bash -lc "$*" 2>&1 | tee "$output_file" | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + return "$rc" + fi +} + +compose_cmd() { + printf "%s compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml %s" \ + "$DOCKER_BIN" "$1" +} + +ensure_required_paths() { + if [ ! -d "$BARON_DIR" ]; then + log "Startup aborted: Baron worktree not found at $BARON_DIR" + exit 1 + fi + if [ ! -x "$CHECK_SCRIPT" ]; then + log "Startup aborted: check script is missing or not executable at $CHECK_SCRIPT" + exit 1 + fi + if [ ! -x "$API_SMOKE_SCRIPT" ]; then + log "Startup aborted: api smoke script is missing or not executable at $API_SMOKE_SCRIPT" + exit 1 + fi + if [ "$SKIP_ANDROID_CHECK" = false ] && [ ! -x "$ANDROID_PRECHECK_SCRIPT" ]; then + log "Startup aborted: Android precheck script is missing or not executable at $ANDROID_PRECHECK_SCRIPT" + exit 1 + fi + if [ "$START_AUTH_SERVER" = true ] && [ ! -x "$AUTH_SERVER_SCRIPT" ]; then + log "Startup aborted: auth server script is missing or not executable at $AUTH_SERVER_SCRIPT" + exit 1 + fi + if [ ! -d "$DAILY_HANDOFF_DIR" ]; then + log "Startup aborted: daily handoff directory is missing at $DAILY_HANDOFF_DIR" + exit 1 + fi + if [ "$WSL_MAINTENANCE_ENABLED" = true ] && [ ! -x "$WSL_MAINTENANCE_SCRIPT" ]; then + log "Startup aborted: WSL maintenance script is missing or not executable at $WSL_MAINTENANCE_SCRIPT" + exit 1 + fi +} + +review_daily_handoff() { + local today + local handoff_file + + today="$(date +%F)" + handoff_file="$(find "$DAILY_HANDOFF_DIR" -maxdepth 1 -type f -name '20*.md' ! -name "$today*" | sort | tail -n 1 || true)" + + if [ -z "$handoff_file" ]; then + log "Daily handoff review: no previous handoff file found in $DAILY_HANDOFF_DIR" + if [ "$REQUIRE_DAILY_HANDOFF" = true ]; then + log "Startup aborted: previous daily handoff is required. Set TDC114_REQUIRE_DAILY_HANDOFF=false only for exceptional recovery." + exit 1 + fi + return 0 + fi + + log "Daily handoff review required before startup" + log "Daily handoff file: $handoff_file" + log "----- daily handoff excerpt start -----" + sed -n '1,160p' "$handoff_file" | tee -a "$LOG_FILE" + log "----- daily handoff excerpt end -----" +} + +review_wsl_maintenance() { + if [ "$WSL_MAINTENANCE_ENABLED" != true ]; then + log "WSL maintenance reminder skipped by TDC114_WSL_MAINTENANCE_ENABLED=$WSL_MAINTENANCE_ENABLED" + return 0 + fi + + log "WSL maintenance review started: $WSL_MAINTENANCE_SCRIPT status" + set +e + ( + cd "$ROOT_DIR" + "$WSL_MAINTENANCE_SCRIPT" status + ) 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -ne 0 ]; then + log "Startup aborted: WSL maintenance review script failed" + exit 1 + fi +} + +run_android_precheck() { + if [ "$SKIP_ANDROID_CHECK" = true ]; then + log "Android target preflight skipped by option" + return 0 + fi + + log "Android target preflight started: $ANDROID_PRECHECK_SCRIPT" + set +e + ( + cd "$ROOT_DIR" + "$ANDROID_PRECHECK_SCRIPT" + ) 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -ne 0 ]; then + log "Startup paused: Android target preflight did not pass" + log "Resolve the physical-device or ADB steps above, then rerun startup." + exit 1 + fi + + log "Android target preflight passed" +} + +ensure_auth_server() { + if [ "$START_AUTH_SERVER" != true ]; then + log "tdc114plus-auth startup skipped by TDC114_START_AUTH_SERVER=$START_AUTH_SERVER" + return 0 + fi + + log "tdc114plus-auth startup started: $AUTH_SERVER_SCRIPT --restart" + set +e + ( + cd "$ROOT_DIR" + "$AUTH_SERVER_SCRIPT" --restart + ) 2>&1 | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -ne 0 ]; then + log "Startup aborted: tdc114plus-auth did not start" + exit 1 + fi + + log "tdc114plus-auth ready" +} + +ensure_generated_config_writable() { + local generated_dir="$BARON_DIR/config/.generated" + + run_cmd "mkdir -p '$generated_dir'" + run_cmd "cd '$BARON_DIR' && $CHMOD_BIN -R u+w config/.generated 2>/dev/null || true" + + if [ "$DRY_RUN" = false ] && [ ! -w "$generated_dir" ]; then + log "Startup aborted: $generated_dir is not writable by $(id -un). Fix ownership/permissions before startup." + exit 1 + fi +} + +sanitize_rendered_kratos_config() { + local kratos_config="$BARON_DIR/config/.generated/ory/kratos/kratos.yml" + + if [ ! -f "$kratos_config" ]; then + log "Startup aborted: rendered Kratos config is missing at $kratos_config" + exit 1 + fi + + if grep -Fq " - []" "$kratos_config"; then + log "Rendered Kratos config contains invalid empty allowed_return_urls entry; removing it automatically" + set +e + perl -0pi -e 's/^[ ]*-\s*\[\]\n//mg' "$kratos_config" + local rc=$? + set -e + if [ "$rc" -ne 0 ]; then + log "Startup aborted: failed to sanitize $kratos_config" + exit 1 + fi + fi +} + +ensure_rendered_ory_files() { + local oathkeeper_entrypoint="$BARON_DIR/config/.generated/ory/oathkeeper/entrypoint.sh" + + sanitize_rendered_kratos_config + + if [ ! -x "$oathkeeper_entrypoint" ]; then + log "Startup aborted: rendered Oathkeeper entrypoint is missing or not executable at $oathkeeper_entrypoint" + exit 1 + fi +} + +capture_failure_diagnostics() { + local prefix="${1:-runtime}" + + if [ "$DRY_RUN" = true ]; then + return 0 + fi + + run_cmd "mkdir -p '$LOG_DIR'" + run_cmd "cd '$BARON_DIR' && $(compose_cmd "ps") > '$LOG_DIR/${prefix}-compose-ps.log' 2>&1 || true" + run_cmd "$DOCKER_BIN ps -a --format '{{.Names}} {{.Status}}' | grep -E 'baron|ory' > '$LOG_DIR/${prefix}-docker-ps.log' 2>&1 || true" + run_cmd "$DOCKER_BIN logs --tail 120 ory_kratos > '$LOG_DIR/${prefix}-ory_kratos.log' 2>&1 || true" + run_cmd "$DOCKER_BIN logs --tail 120 ory_stack_check > '$LOG_DIR/${prefix}-ory_stack_check.log' 2>&1 || true" + run_cmd "$DOCKER_BIN logs --tail 120 oathkeeper > '$LOG_DIR/${prefix}-oathkeeper.log' 2>&1 || true" + run_cmd "$DOCKER_BIN logs --tail 120 baron_backend > '$LOG_DIR/${prefix}-baron_backend.log' 2>&1 || true" +} + +run_check_script() { + local attempt="$1" + local output_file="$LOG_DIR/check-baron-api-env.attempt-${attempt}.log" + + set +e + ( + cd "$ROOT_DIR" + "$CHECK_SCRIPT" + ) 2>&1 | tee "$output_file" | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -ne 0 ]; then + log "check-baron-api-env.sh failed on attempt $attempt" + return 1 + fi + + if ! grep -Fq "RESULT ready-ish: 0 failure(s), 0 warning(s)" "$output_file"; then + log "check-baron-api-env.sh reported warnings on attempt $attempt" + return 1 + fi + + log "check-baron-api-env.sh passed with zero warnings" + return 0 +} + +run_api_smoke_script() { + local attempt="$1" + local output_file="$LOG_DIR/api-smoke.attempt-${attempt}.log" + local fallback_output_file="$LOG_DIR/api-smoke.base-only.attempt-${attempt}.log" + + set +e + ( + cd "$ROOT_DIR" + "$API_SMOKE_SCRIPT" + ) 2>&1 | tee "$output_file" | tee -a "$LOG_FILE" + local rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -ne 0 ]; then + if [ "$REQUIRE_AUTH_SMOKE" != "true" ] && grep -Fq '"code":"login_failed"' "$output_file"; then + log "api-smoke authenticated login failed; retrying in base-smoke-only mode because TDC114_REQUIRE_AUTH_SMOKE is false" + set +e + ( + cd "$ROOT_DIR" + TDC114_SKIP_AUTH_SMOKE=true "$API_SMOKE_SCRIPT" + ) 2>&1 | tee "$fallback_output_file" | tee -a "$LOG_FILE" + rc=${PIPESTATUS[0]} + set -e + + if [ "$rc" -eq 0 ]; then + log "api-smoke base-smoke-only mode passed" + return 0 + fi + fi + + log "api-smoke.sh failed on attempt $attempt" + return 1 + fi + + log "api-smoke.sh passed" + return 0 +} + +start_stack() { + local down_cmd="cd '$BARON_DIR' && $(compose_cmd "down")" + local up_cmd="cd '$BARON_DIR' && $(compose_cmd "up -d")" + local output_file="$LOG_DIR/compose-up.initial.log" + + run_cmd_capture "$LOG_DIR/compose-down.initial.log" "$down_cmd" || true + + if run_cmd_capture "$output_file" "$up_cmd"; then + return 0 + fi + + if grep -Eq "name conflict|is already in use by container" "$output_file"; then + log "compose up failed due to stale or conflicting containers; attempting automatic cleanup" + run_cmd "cd '$BARON_DIR' && $(compose_cmd "down") >/dev/null 2>&1 || true" + run_cmd "$DOCKER_BIN ps -a --format '{{.Names}}' | grep -iE 'baron|ory' | xargs -r $DOCKER_BIN rm -f || true" + run_cmd_capture "$LOG_DIR/compose-up.retry.log" "$up_cmd" + return $? + fi + + if grep -Eq "dependency failed to start|didn't complete successfully|is unhealthy" "$output_file"; then + log "compose up reported dependency or health issues; continuing to stabilization checks before declaring failure" + return 0 + fi + + return 1 +} + +ensure_required_paths + +log "Startup started: $(date)" + +# 0) Always review the previous daily handoff before starting runtime work. +review_daily_handoff +review_wsl_maintenance + +# 1) Verify Android target readiness before backend startup work +run_android_precheck + +# 2) Ensure networks and config rendered (if Makefile target exists) +if [ -f "$BARON_DIR/Makefile" ]; then + ensure_generated_config_writable + run_cmd "cd '$BARON_DIR' && $MAKE_BIN ensure-networks || true" + if ! run_cmd "cd '$BARON_DIR' && $MAKE_BIN render-ory-config"; then + log "Startup aborted: make render-ory-config failed" + exit 1 + fi + ensure_rendered_ory_files +fi + +# 3) Start all necessary compose stacks, retrying once after conflict cleanup +start_stack + +# 4) Wait for services to stabilize +run_cmd "sleep $WAIT" + +# 5) Show container status +run_cmd "$DOCKER_BIN ps --format '{{.Names}} {{.Status}}' | grep -E 'baron|ory' || true" + +# 5-1) Start local auth broker used by the app. +ensure_auth_server + +# 6) Run health checks and smoke tests with retries +startup_ok=false +i=1 +while [ "$i" -le "$RETRIES" ]; do + log "Health check attempt $i/$RETRIES" + if [ "$DRY_RUN" = false ]; then + if run_check_script "$i" && run_api_smoke_script "$i"; then + startup_ok=true + break + fi + else + log "(dry-run) would run check-baron-api-env.sh and api-smoke.sh" + startup_ok=true + break + fi + i=$((i + 1)) + if [ "$i" -le "$RETRIES" ]; then + run_cmd "sleep $SLEEP_BETWEEN" + fi +done + +# 7) Save logs +run_cmd "cd '$BARON_DIR' && $(compose_cmd "logs --no-color") > '$LOG_DIR/baron-compose.log' 2>&1 || true" + +if [ "$startup_ok" = false ]; then + capture_failure_diagnostics "startup-failure" + log "Startup failed: health checks did not pass after $RETRIES attempt(s)" + exit 1 +fi + +log "Startup finished: $(date)" + +if [ "$DRY_RUN" = true ]; then + log "Dry-run mode: no actions were actually performed. Use --auto to run for real." +fi + +exit 0 diff --git a/scripts/test_runtime_helpers.sh b/scripts/test_runtime_helpers.sh new file mode 100755 index 0000000..8c79cae --- /dev/null +++ b/scripts/test_runtime_helpers.sh @@ -0,0 +1,441 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)" +TMP_ROOT="$(mktemp -d)" +trap 'rm -rf "$TMP_ROOT"' EXIT + +PASS_COUNT=0 + +say() { + printf '%s\n' "$*" +} + +fail() { + printf 'FAIL %s\n' "$*" >&2 + exit 1 +} + +assert_file_contains() { + local file="$1" + local pattern="$2" + if ! grep -Fq "$pattern" "$file"; then + fail "expected '$pattern' in $file" + fi +} + +assert_not_exists_or_empty() { + local file="$1" + if [ -e "$file" ] && [ -s "$file" ]; then + fail "expected empty or missing file: $file" + fi +} + +new_fixture() { + local name="$1" + local dir="$TMP_ROOT/$name" + mkdir -p "$dir/bin" "$dir/baron/config/.generated/ory/kratos" "$dir/baron/config/.generated/ory/oathkeeper" "$dir/logs" "$dir/state" + touch "$dir/baron/Makefile" + cat > "$dir/baron/config/.generated/ory/kratos/kratos.yml" <<'EOF' +selfservice: + allowed_return_urls: + - http://localhost:5000 + - [] +EOF + cat > "$dir/baron/config/.generated/ory/oathkeeper/entrypoint.sh" <<'EOF' +#!/usr/bin/env sh +exit 0 +EOF + cat > "$dir/bin/docker" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +log_file="${TEST_CMD_LOG:?}" +printf 'docker %s\n' "$*" >> "$log_file" + +case "$*" in + "compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml up -d") + if [ "${TEST_DOCKER_UP_FAIL_ONCE:-0}" = "1" ] && [ ! -f "${TEST_STATE_DIR:?}/docker-up.failed" ]; then + touch "${TEST_STATE_DIR}/docker-up.failed" + echo "name conflict" + exit 1 + fi + if [ "${TEST_DOCKER_UP_HEALTH_FAILURE:-0}" = "1" ] && [ ! -f "${TEST_STATE_DIR:?}/docker-up.health-failed" ]; then + touch "${TEST_STATE_DIR}/docker-up.health-failed" + echo "dependency failed to start: container baron_backend is unhealthy" + exit 1 + fi + echo "compose up ok" + ;; + "compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down") + echo "compose down ok" + ;; + "compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml logs --no-color") + echo "fake compose logs" + ;; + "ps --format {{.Names}} {{.Status}}") + printf 'baron_backend Up (healthy)\nory_kratos Up\n' + ;; + "ps -a --format {{.Names}}") + printf 'old_baron_backend\nold_ory_kratos\n' + ;; + "ps --format {{.Names}}") + printf 'baron_backend\nbaron_gateway\n' + ;; + "rm -f old_baron_backend old_ory_kratos") + echo "removed stale containers" + ;; + *) + ;; +esac +EOF + cat > "$dir/bin/make" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +printf 'make %s\n' "$*" >> "${TEST_CMD_LOG:?}" +EOF + cat > "$dir/bin/adb" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +printf 'adb %s\n' "$*" >> "${TEST_CMD_LOG:?}" +EOF + cat > "$dir/bin/pkill" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +printf 'pkill %s\n' "$*" >> "${TEST_CMD_LOG:?}" +EOF + cat > "$dir/bin/chmod" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +printf 'chmod %s\n' "$*" >> "${TEST_CMD_LOG:?}" +EOF + cat > "$dir/bin/chown" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +printf 'chown %s\n' "$*" >> "${TEST_CMD_LOG:?}" +EOF + cat > "$dir/check.sh" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +state_dir="${TEST_STATE_DIR:?}" +attempt_file="$state_dir/check-attempts" +count=0 +if [ -f "$attempt_file" ]; then + count="$(cat "$attempt_file")" +fi +count=$((count + 1)) +printf '%s' "$count" > "$attempt_file" + +mode="${CHECK_MODE:-pass}" +case "$mode" in + pass) + echo "RESULT ready-ish: 0 failure(s), 0 warning(s)" + ;; + warn_then_pass) + if [ "$count" -eq 1 ]; then + echo "RESULT ready-ish: 0 failure(s), 1 warning(s)" + else + echo "RESULT ready-ish: 0 failure(s), 0 warning(s)" + fi + ;; + fail) + echo "RESULT blocked: 1 failure(s), 0 warning(s)" + exit 1 + ;; + *) + echo "unknown CHECK_MODE=$mode" >&2 + exit 2 + ;; +esac +EOF + cat > "$dir/api-smoke.sh" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +state_dir="${TEST_STATE_DIR:?}" +attempt_file="$state_dir/api-attempts" +count=0 +if [ -f "$attempt_file" ]; then + count="$(cat "$attempt_file")" +fi +count=$((count + 1)) +printf '%s' "$count" > "$attempt_file" + +mode="${API_MODE:-pass}" +case "$mode" in + pass) + echo "PASS api smoke" + ;; + login_failed) + if [ "${TDC114_SKIP_AUTH_SMOKE:-false}" = "true" ]; then + echo "SKIP authenticated smoke: TDC114_SKIP_AUTH_SMOKE=true" + exit 0 + fi + echo 'FAIL phone-login success: HTTP 401' >&2 + echo 'Response body:' >&2 + echo '{"error":"Login failed","code":"login_failed"}' >&2 + exit 1 + ;; + fail) + echo "FAIL api smoke" >&2 + exit 1 + ;; + *) + echo "unknown API_MODE=$mode" >&2 + exit 2 + ;; +esac +EOF + cat > "$dir/wsl-maintenance.sh" <<'EOF' +#!/usr/bin/env bash +set -euo pipefail +mode="${1:-status}" +case "$mode" in + status) + echo "${TEST_WSL_MAINTENANCE_OUTPUT:-WSL maintenance reminder: OK}" + ;; + *) + echo "unsupported mode: $mode" >&2 + exit 2 + ;; +esac +EOF + chmod +x "$dir/bin/docker" "$dir/bin/make" "$dir/bin/adb" "$dir/bin/pkill" \ + "$dir/bin/chmod" "$dir/bin/chown" "$dir/check.sh" "$dir/api-smoke.sh" \ + "$dir/wsl-maintenance.sh" "$dir/baron/config/.generated/ory/oathkeeper/entrypoint.sh" + printf '%s\n' "$dir" +} + +run_case() { + local name="$1" + shift + say "CASE $name" + "$@" + PASS_COUNT=$((PASS_COUNT + 1)) +} + +test_startup_dry_run() { + local fixture + fixture="$(new_fixture startup-dry-run)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_CHECK_SCRIPT="$fixture/check.sh" \ + TDC114_API_SMOKE_SCRIPT="$fixture/api-smoke.sh" \ + TDC114_WSL_MAINTENANCE_SCRIPT="$fixture/wsl-maintenance.sh" \ + TDC114_START_AUTH_SERVER=false \ + DOCKER_BIN="$fixture/bin/docker" \ + MAKE_BIN="$fixture/bin/make" \ + bash "$ROOT_DIR/scripts/startup.sh" --dry-run --wait=0 --skip-android-check + + assert_not_exists_or_empty "$cmd_log" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "WSL maintenance reminder: OK" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "Dry-run mode: no actions were actually performed" +} + +test_startup_auto_retry_success() { + local fixture + fixture="$(new_fixture startup-auto-success)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + TEST_DOCKER_UP_FAIL_ONCE=1 \ + CHECK_MODE=warn_then_pass \ + API_MODE=pass \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_CHECK_SCRIPT="$fixture/check.sh" \ + TDC114_API_SMOKE_SCRIPT="$fixture/api-smoke.sh" \ + TDC114_WSL_MAINTENANCE_SCRIPT="$fixture/wsl-maintenance.sh" \ + TDC114_START_AUTH_SERVER=false \ + DOCKER_BIN="$fixture/bin/docker" \ + MAKE_BIN="$fixture/bin/make" \ + bash "$ROOT_DIR/scripts/startup.sh" --auto --wait=0 --skip-android-check + + assert_file_contains "$cmd_log" "docker rm -f old_baron_backend old_ory_kratos" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "check-baron-api-env.sh reported warnings on attempt 1" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "check-baron-api-env.sh passed with zero warnings" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "api-smoke.sh passed" + if grep -Fq " - []" "$fixture/baron/config/.generated/ory/kratos/kratos.yml"; then + fail "expected startup to sanitize invalid empty allowed_return_urls entry" + fi +} + +test_startup_auto_health_failure_tolerated() { + local fixture + fixture="$(new_fixture startup-auto-health-failure)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + TEST_DOCKER_UP_HEALTH_FAILURE=1 \ + CHECK_MODE=pass \ + API_MODE=pass \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_CHECK_SCRIPT="$fixture/check.sh" \ + TDC114_API_SMOKE_SCRIPT="$fixture/api-smoke.sh" \ + TDC114_WSL_MAINTENANCE_SCRIPT="$fixture/wsl-maintenance.sh" \ + TDC114_START_AUTH_SERVER=false \ + DOCKER_BIN="$fixture/bin/docker" \ + MAKE_BIN="$fixture/bin/make" \ + bash "$ROOT_DIR/scripts/startup.sh" --auto --wait=0 --skip-android-check + + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "compose up reported dependency or health issues; continuing to stabilization checks before declaring failure" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "api-smoke.sh passed" +} + +test_startup_login_failed_falls_back_to_base_smoke() { + local fixture + fixture="$(new_fixture startup-login-fallback)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + CHECK_MODE=pass \ + API_MODE=login_failed \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_CHECK_SCRIPT="$fixture/check.sh" \ + TDC114_API_SMOKE_SCRIPT="$fixture/api-smoke.sh" \ + TDC114_WSL_MAINTENANCE_SCRIPT="$fixture/wsl-maintenance.sh" \ + TDC114_START_AUTH_SERVER=false \ + DOCKER_BIN="$fixture/bin/docker" \ + MAKE_BIN="$fixture/bin/make" \ + bash "$ROOT_DIR/scripts/startup.sh" --auto --wait=0 --skip-android-check + + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "api-smoke authenticated login failed; retrying in base-smoke-only mode because TDC114_REQUIRE_AUTH_SMOKE is false" + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "api-smoke base-smoke-only mode passed" +} + +test_startup_auto_failure() { + local fixture + fixture="$(new_fixture startup-auto-failure)" + local cmd_log="$fixture/commands.log" + set +e + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + CHECK_MODE=fail \ + API_MODE=pass \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_CHECK_SCRIPT="$fixture/check.sh" \ + TDC114_API_SMOKE_SCRIPT="$fixture/api-smoke.sh" \ + TDC114_WSL_MAINTENANCE_SCRIPT="$fixture/wsl-maintenance.sh" \ + TDC114_START_AUTH_SERVER=false \ + DOCKER_BIN="$fixture/bin/docker" \ + MAKE_BIN="$fixture/bin/make" \ + bash "$ROOT_DIR/scripts/startup.sh" --auto --wait=0 --skip-android-check + local rc=$? + set -e + + if [ "$rc" -eq 0 ]; then + fail "startup auto failure case should exit non-zero" + fi + assert_file_contains "$fixture/logs/$(date +%F)/startup.log" "Startup failed: health checks did not pass" +} + +test_wsl_maintenance_schedule() { + local fixture + fixture="$(new_fixture wsl-maintenance-schedule)" + local state_dir="$fixture/state" + + TDC114_WSL_MAINTENANCE_STATE_DIR="$state_dir" \ + TDC114_WSL_MAINTENANCE_ANCHOR_DATE=2026-07-16 \ + TDC114_WSL_MAINTENANCE_TODAY=2026-07-20 \ + bash "$ROOT_DIR/scripts/check-wsl-maintenance.sh" status > "$fixture/status-not-due.txt" + + assert_file_contains "$fixture/status-not-due.txt" "WSL maintenance reminder: OK" + assert_file_contains "$fixture/status-not-due.txt" "Next due date: 2026-07-30" + + TDC114_WSL_MAINTENANCE_STATE_DIR="$state_dir" \ + TDC114_WSL_MAINTENANCE_ANCHOR_DATE=2026-07-16 \ + TDC114_WSL_MAINTENANCE_TODAY=2026-07-30 \ + bash "$ROOT_DIR/scripts/check-wsl-maintenance.sh" status > "$fixture/status-due.txt" + + assert_file_contains "$fixture/status-due.txt" "WSL maintenance reminder: DUE" + assert_file_contains "$fixture/status-due.txt" "./scripts/check-wsl-maintenance.sh record" + + TDC114_WSL_MAINTENANCE_STATE_DIR="$state_dir" \ + TDC114_WSL_MAINTENANCE_TODAY=2026-07-30 \ + bash "$ROOT_DIR/scripts/check-wsl-maintenance.sh" record > "$fixture/record.txt" + + assert_file_contains "$fixture/record.txt" "Recorded WSL maintenance date: 2026-07-30" + + TDC114_WSL_MAINTENANCE_STATE_DIR="$state_dir" \ + TDC114_WSL_MAINTENANCE_ANCHOR_DATE=2026-07-16 \ + TDC114_WSL_MAINTENANCE_TODAY=2026-08-05 \ + bash "$ROOT_DIR/scripts/check-wsl-maintenance.sh" status > "$fixture/status-after-record.txt" + + assert_file_contains "$fixture/status-after-record.txt" "WSL maintenance reminder: OK" + assert_file_contains "$fixture/status-after-record.txt" "Base date: 2026-07-30" +} + +test_shutdown_dry_run() { + local fixture + fixture="$(new_fixture shutdown-dry-run)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5562 \ + DOCKER_BIN="$fixture/bin/docker" \ + ADB_BIN="$fixture/bin/adb" \ + PKILL_BIN="$fixture/bin/pkill" \ + CHMOD_BIN="$fixture/bin/chmod" \ + CHOWN_BIN="$fixture/bin/chown" \ + bash "$ROOT_DIR/scripts/shutdown.sh" --dry-run + + assert_not_exists_or_empty "$cmd_log" + assert_file_contains "$fixture/logs/$(date +%F)/shutdown.log" "Dry-run mode: no shutdown actions were executed" +} + +test_shutdown_auto_order_and_scope() { + local fixture + fixture="$(new_fixture shutdown-auto)" + local cmd_log="$fixture/commands.log" + + TEST_CMD_LOG="$cmd_log" \ + TEST_STATE_DIR="$fixture/state" \ + BARON_SSO_WORKTREE="$fixture/baron" \ + TDC114_LOG_BASE="$fixture/logs" \ + TDC114_ADB_CONNECT_ADDRESS=172.21.128.1:5562 \ + DOCKER_BIN="$fixture/bin/docker" \ + ADB_BIN="$fixture/bin/adb" \ + PKILL_BIN="$fixture/bin/pkill" \ + CHMOD_BIN="$fixture/bin/chmod" \ + CHOWN_BIN="$fixture/bin/chown" \ + bash "$ROOT_DIR/scripts/shutdown.sh" --auto + + assert_file_contains "$cmd_log" "pkill -f $ROOT_DIR/scripts/integration_tests.sh" + assert_file_contains "$cmd_log" "pkill -f $ROOT_DIR/scripts/flutter-docker.sh" + assert_file_contains "$cmd_log" "adb disconnect 172.21.128.1:5562" + assert_file_contains "$cmd_log" "docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml logs --no-color" + assert_file_contains "$cmd_log" "docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down" + assert_file_contains "$cmd_log" "docker rm -f old_baron_backend old_ory_kratos" + assert_file_contains "$cmd_log" "chmod -R u+w config/.generated/" + assert_file_contains "$cmd_log" "chown -R" + + local logs_line + local down_line + logs_line="$(grep -n "docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml logs --no-color" "$cmd_log" | head -n1 | cut -d: -f1)" + down_line="$(grep -n "docker compose -f docker-compose.yaml -f compose.infra.yaml -f compose.ory.yaml down" "$cmd_log" | head -n1 | cut -d: -f1)" + if [ -z "$logs_line" ] || [ -z "$down_line" ] || [ "$logs_line" -ge "$down_line" ]; then + fail "expected compose logs collection before compose down" + fi +} + +run_case "startup dry-run" test_startup_dry_run +run_case "startup auto retry success" test_startup_auto_retry_success +run_case "startup auto health failure tolerated" test_startup_auto_health_failure_tolerated +run_case "startup login failure falls back" test_startup_login_failed_falls_back_to_base_smoke +run_case "startup auto failure" test_startup_auto_failure +run_case "wsl maintenance schedule" test_wsl_maintenance_schedule +run_case "shutdown dry-run" test_shutdown_dry_run +run_case "shutdown auto order and scope" test_shutdown_auto_order_and_scope + +say "PASS $PASS_COUNT case(s)"