summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/knox-sync/employee-sync-service.ts22
-rw-r--r--lib/knox-sync/master-sync-service.ts6
2 files changed, 20 insertions, 8 deletions
diff --git a/lib/knox-sync/employee-sync-service.ts b/lib/knox-sync/employee-sync-service.ts
index 3055e1ef..200dd86f 100644
--- a/lib/knox-sync/employee-sync-service.ts
+++ b/lib/knox-sync/employee-sync-service.ts
@@ -1,3 +1,9 @@
+/**
+ * Knox Employee 동기화 서비스
+ * Knox Employee 데이터를 Users 테이블과 동기화
+ * 스테이지 계정을 추가해주려는 목적이라 메일에 '@stage' 문자열이 있는지 확인함. 운영에서는 전부 무시될 것임
+ */
+
'use server';
import * as cron from 'node-cron';
@@ -10,7 +16,7 @@ import {
searchEmployees,
Employee,
} from '@/lib/knox-api/employee/employee';
-import { sql, eq, and, ne } from 'drizzle-orm';
+import { eq, and, ne, isNotNull, like } from 'drizzle-orm';
import {
KNOX_COMPANIES,
delay,
@@ -29,7 +35,12 @@ const DO_FIRST_RUN = process.env.KNOX_EMPLOYEE_SYNC_FIRST_RUN === 'true';
async function insertEmployees(employees: Employee[]) {
if (!employees.length) return;
- const rows = employees.map((e) => ({
+ // @stage 도메인을 가진 직원만 필터링
+ const filteredEmployees = employees.filter(e => e.emailAddress && e.emailAddress.includes('@stage'));
+
+ if (!filteredEmployees.length) return;
+
+ const rows = filteredEmployees.map((e) => ({
epId: e.epId,
employeeNumber: e.employeeNumber,
userId: e.userId,
@@ -190,7 +201,7 @@ async function syncEmployeesToUsers(): Promise<void> {
try {
console.log('[KNOX-SYNC] Users 테이블 동기화 시작');
- // Knox employee 테이블에서 이메일이 있는 레코드들 조회
+ // Knox employee 테이블에서 이메일이 있는 레코드들 조회 (@stage 도메인만)
const employees = await db
.select({
fullName: employeeTable.fullName,
@@ -203,8 +214,9 @@ async function syncEmployeesToUsers(): Promise<void> {
.from(employeeTable)
.where(
and(
- sql`${employeeTable.emailAddress} IS NOT NULL`,
- sql`${employeeTable.emailAddress} != ''`
+ isNotNull(employeeTable.emailAddress),
+ ne(employeeTable.emailAddress, ''),
+ like(employeeTable.emailAddress, '%@stage%')
)
);
diff --git a/lib/knox-sync/master-sync-service.ts b/lib/knox-sync/master-sync-service.ts
index 8950f514..edeb446e 100644
--- a/lib/knox-sync/master-sync-service.ts
+++ b/lib/knox-sync/master-sync-service.ts
@@ -35,9 +35,9 @@ export async function syncAllKnoxData(): Promise<void> {
// 3단계: 임직원 동기화 (조직 완료 후)
console.log('[KNOX-SYNC] 3/3: 임직원 동기화는 생략 (SHI-API를 통한 nonsap 사용자로 동기화함');
- // console.log('[KNOX-SYNC] 3/3: 임직원 동기화 시작');
- // await syncKnoxEmployees();
- // console.log('[KNOX-SYNC] 3/3: 임직원 동기화 완료 ✅');
+ console.log('[KNOX-SYNC] 3/3: 임직원 동기화 시작');
+ await syncKnoxEmployees();
+ console.log('[KNOX-SYNC] 3/3: 임직원 동기화 완료 ✅');
const overallDuration = Math.round((Date.now() - overallStartTime) / 1000);
console.log(`[KNOX-SYNC] 🎉 Knox 통합 동기화 완료 - 총 ${overallDuration}초 소요`);