From ca7b145c7fc655fb396f7e184ae3fe1d0459d95a Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 3 Apr 2026 11:23:02 +0900 Subject: [PATCH] feat: Enhance logging and configuration for Smart Factory integration - Added companyCode to the AuthController for improved logging. - Updated sendSmartFactoryLog function to support company-specific API keys. - Configured environment variables for company-specific Smart Factory API keys in Docker Compose files. This update ensures that logs are more informative and that the correct API keys are used based on the company context. --- .../src/controllers/authController.ts | 1 + backend-node/src/utils/smartFactoryLog.ts | 5 +++- docker/deploy/docker-compose.yml | 2 ++ docker/prod/docker-compose.backend.prod.yml | 2 ++ frontend/package-lock.json | 30 +++++++++---------- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/backend-node/src/controllers/authController.ts b/backend-node/src/controllers/authController.ts index 402665f5..4b40ce6e 100644 --- a/backend-node/src/controllers/authController.ts +++ b/backend-node/src/controllers/authController.ts @@ -89,6 +89,7 @@ export class AuthController { userId: userInfo.userId, remoteAddr, useType: "접속", + companyCode: userInfo.companyCode, }).catch(() => {}); // POP 랜딩 경로 조회 diff --git a/backend-node/src/utils/smartFactoryLog.ts b/backend-node/src/utils/smartFactoryLog.ts index ea8d9aec..18c5b573 100644 --- a/backend-node/src/utils/smartFactoryLog.ts +++ b/backend-node/src/utils/smartFactoryLog.ts @@ -15,8 +15,11 @@ export async function sendSmartFactoryLog(params: { userId: string; remoteAddr: string; useType?: string; + companyCode?: string; }): Promise { - const apiKey = process.env.SMART_FACTORY_API_KEY; + // 회사별 키 우선 조회, 없으면 공통 키 폴백 + const apiKey = (params.companyCode && process.env[`SMART_FACTORY_API_KEY_${params.companyCode}`]) + || process.env.SMART_FACTORY_API_KEY; if (!apiKey) { logger.warn( diff --git a/docker/deploy/docker-compose.yml b/docker/deploy/docker-compose.yml index f653f617..e0984a9e 100644 --- a/docker/deploy/docker-compose.yml +++ b/docker/deploy/docker-compose.yml @@ -22,6 +22,8 @@ services: KMA_API_KEY: ${KMA_API_KEY} ITS_API_KEY: ${ITS_API_KEY} EXPRESSWAY_API_KEY: ${EXPRESSWAY_API_KEY:-} + SMART_FACTORY_API_KEY_COMPANY_10: ${SMART_FACTORY_API_KEY_COMPANY_10:-} + SMART_FACTORY_API_KEY_COMPANY_9: ${SMART_FACTORY_API_KEY_COMPANY_9:-} volumes: - backend_uploads:/app/uploads - backend_data:/app/data diff --git a/docker/prod/docker-compose.backend.prod.yml b/docker/prod/docker-compose.backend.prod.yml index 06a769f2..755475ff 100644 --- a/docker/prod/docker-compose.backend.prod.yml +++ b/docker/prod/docker-compose.backend.prod.yml @@ -23,6 +23,8 @@ services: - KMA_API_KEY=${KMA_API_KEY} - ITS_API_KEY=${ITS_API_KEY} - EXPRESSWAY_API_KEY=${EXPRESSWAY_API_KEY:-} + - SMART_FACTORY_API_KEY_COMPANY_10=${SMART_FACTORY_API_KEY_COMPANY_10:-} + - SMART_FACTORY_API_KEY_COMPANY_9=${SMART_FACTORY_API_KEY_COMPANY_9:-} restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3001/health"] diff --git a/frontend/package-lock.json b/frontend/package-lock.json index abfdc06a..29555748 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -37,8 +37,8 @@ "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.13.23", "@tiptap/core": "^2.27.1", - "@tiptap/extension-image": "^3.20.5", - "@tiptap/extension-link": "^3.20.5", + "@tiptap/extension-image": "^2.27.1", + "@tiptap/extension-link": "^2.27.1", "@tiptap/extension-placeholder": "^2.27.1", "@tiptap/pm": "^2.27.1", "@tiptap/react": "^2.27.2", @@ -1420,7 +1420,7 @@ "version": "1.58.2", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "playwright": "1.58.2" @@ -4034,16 +4034,16 @@ } }, "node_modules/@tiptap/extension-image": { - "version": "3.20.5", - "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-3.20.5.tgz", - "integrity": "sha512-qxKupWKhX75Xc9GJ9Uel+KIFL9x6tb8W3RvQM1UolyJX/H7wyBO7sXp9XmKRkHZsDXRgLVbnkYBe+X83o16AIA==", + "version": "2.27.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.27.2.tgz", + "integrity": "sha512-5zL/BY41FIt72azVrCrv3n+2YJ/JyO8wxCcA4Dk1eXIobcgVyIdo4rG39gCqIOiqziAsqnqoj12QHTBtHsJ6mQ==", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.20.5" + "@tiptap/core": "^2.7.0" } }, "node_modules/@tiptap/extension-italic": { @@ -4060,9 +4060,9 @@ } }, "node_modules/@tiptap/extension-link": { - "version": "3.20.5", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-3.20.5.tgz", - "integrity": "sha512-0PukrSYnHX2CrGSThlKfQWxpPWmL7QAvdpDUraKknGvVNSH7tUjchTshy5JdLrn/SQAU92REowRCB6zzCNEFjA==", + "version": "2.27.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.27.2.tgz", + "integrity": "sha512-bnP61qkr0Kj9Cgnop1hxn2zbOCBzNtmawxr92bVTOE31fJv6FhtCnQiD6tuPQVGMYhcmAj7eihtvuEMFfqEPcQ==", "license": "MIT", "dependencies": { "linkifyjs": "^4.3.2" @@ -4072,8 +4072,8 @@ "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@tiptap/core": "^3.20.5", - "@tiptap/pm": "^3.20.5" + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" } }, "node_modules/@tiptap/extension-list-item": { @@ -6681,7 +6681,7 @@ "version": "19.2.2", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.2.tgz", "integrity": "sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==", - "dev": true, + "devOptional": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.2.0" @@ -13035,7 +13035,7 @@ "version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "playwright-core": "1.58.2" @@ -13054,7 +13054,7 @@ "version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" -- 2.49.1