From a46b14db7f7e63ee58c62e344e883279aa3c4f40 Mon Sep 17 00:00:00 2001 From: DanielLee <198891672+sanghyeonhd@users.noreply.github.com> Date: Thu, 22 Jan 2026 20:07:39 +0900 Subject: [PATCH 1/2] dev profile fix --- .../kamco/cd/kamcoback/config/GlobalExceptionHandler.java | 2 +- .../repository/label/LabelAllocateRepositoryImpl.java | 8 ++++---- .../repository/mapsheet/MapSheetMngRepositoryImpl.java | 4 ++-- src/main/resources/application-dev.yml | 1 + 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java index 8eaea370..755d5322 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/GlobalExceptionHandler.java @@ -378,7 +378,7 @@ public class GlobalExceptionHandler { HttpStatus.valueOf(codeName), errorLog.getId()); - return ResponseEntity.status(HttpStatus.UNAUTHORIZED) // ๐Ÿ”ฅ ์—ฌ๊ธฐ์„œ 401 ์ง€์ • + return ResponseEntity.status(HttpStatus.UNAUTHORIZED) // ์—ฌ๊ธฐ์„œ 401 ์ง€์ • .body(body); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java index fd9631b6..304f8d59 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java @@ -1152,7 +1152,7 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto // ๋‚ ์งœ๋ณ„ ์ „์ฒด ๊ฑด์ˆ˜ Expression dailyTotalCnt = Expressions.numberTemplate(Long.class, "COUNT(*)"); - // โญ ์ „์ฒด ๊ธฐ๊ฐ„ ์ด ๊ฑด์ˆ˜ (์œˆ๋„์šฐ ํ•จ์ˆ˜) + // ์ „์ฒด ๊ธฐ๊ฐ„ ์ด ๊ฑด์ˆ˜ (์œˆ๋„์šฐ ํ•จ์ˆ˜) Expression totalCnt = Expressions.numberTemplate(Long.class, "SUM(COUNT(*)) OVER ()"); // ์ƒํƒœ๋ณ„ ์นด์šดํŠธ (Postgres FILTER ์‚ฌ์šฉ) @@ -1192,7 +1192,7 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto LabelingStatDto.class, workDate, dailyTotalCnt, - totalCnt, // โญ ์ „์ฒด ์ผ์ž ๋ฐฐ์ • ๊ฑด์ˆ˜ + totalCnt, // ์ „์ฒด ์ผ์ž ๋ฐฐ์ • ๊ฑด์ˆ˜ assignedCnt, skipCnt, completeCnt, @@ -1233,7 +1233,7 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto // ๋‚ ์งœ๋ณ„ ์ „์ฒด ๊ฑด์ˆ˜ Expression dailyTotalCnt = Expressions.numberTemplate(Long.class, "COUNT(*)"); - // โญ ์ „์ฒด ๊ธฐ๊ฐ„ ์ด ๊ฑด์ˆ˜ (์œˆ๋„์šฐ ํ•จ์ˆ˜) + // ์ „์ฒด ๊ธฐ๊ฐ„ ์ด ๊ฑด์ˆ˜ (์œˆ๋„์šฐ ํ•จ์ˆ˜) Expression totalCnt = Expressions.numberTemplate(Long.class, "SUM(COUNT(*)) OVER ()"); // ์ƒํƒœ๋ณ„ ์นด์šดํŠธ (Postgres FILTER ์‚ฌ์šฉ) @@ -1277,7 +1277,7 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto LabelingStatDto.class, workDate, dailyTotalCnt, - totalCnt, // โญ ์ „์ฒด ์ผ์ž ๋ฐฐ์ • ๊ฑด์ˆ˜ + totalCnt, // ์ „์ฒด ์ผ์ž ๋ฐฐ์ • ๊ฑด์ˆ˜ assignedCnt, skipCnt, completeCnt, diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java index d979e192..99cb8012 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/mapsheet/MapSheetMngRepositoryImpl.java @@ -426,7 +426,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport "concat({0}, substring({1}, 1, 5))", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum), - // โœ… ํŠœํ”Œ ๋ฐฉ์ง€: concat์œผ๋กœ ๋ฌธ์ž์—ด ์ƒ์„ฑ + // ํŠœํ”Œ ๋ฐฉ์ง€: concat์œผ๋กœ ๋ฌธ์ž์—ด ์ƒ์„ฑ Expressions.stringTemplate( "concat('(', {0}, ',', {1}, ')')", mapInkx5kEntity.mapidNm, mapSheetMngHstEntity.mapSheetNum), @@ -437,7 +437,7 @@ public class MapSheetMngRepositoryImpl extends QuerydslRepositorySupport // fid ํƒ€์ž… ์ฃผ์˜ (Long์ด๋ฉด DTO๋„ Long์œผ๋กœ ๋งž์ถ”๋Š” ๊ฑธ ์ถ”์ฒœ) mapInkx5kEntity.fid, // ๋˜๋Š” mapInkx5kEntity.fid.intValue() - // โœ… createdDate ๋ง๊ณ  ZonedDateTime์œผ๋กœ ๋งคํ•‘๋œ ํ•„๋“œ๋กœ + // createdDate ๋ง๊ณ  ZonedDateTime์œผ๋กœ ๋งคํ•‘๋œ ํ•„๋“œ๋กœ mapSheetMngHstEntity.createdDate, // (์˜ˆ์‹œ) mapSheetMngHstEntity.syncState, mapSheetMngHstEntity.syncTfwFileName, diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 0c166d2d..041eb843 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -19,6 +19,7 @@ spring: datasource: url: jdbc:postgresql://192.168.2.127:15432/kamco_cds + #url: jdbc:postgresql://localhost:15432/kamco_cds username: kamco_cds password: kamco_cds_Q!W@E#R$ hikari: From 88dbb481296716b2d38191cf2f25f40d91f7eec1 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Thu, 22 Jan 2026 20:18:17 +0900 Subject: [PATCH 2/2] =?UTF-8?q?ip=20=ED=98=B8=EC=B6=9C=20X-Forwarded-For?= =?UTF-8?q?=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/CustomAuthenticationProvider.java | 5 ++--- .../kamcoback/config/api/ApiLogFunction.java | 18 +++++++++++----- .../config/api/ApiResponseAdvice.java | 2 +- .../kamco/cd/kamcoback/log/dto/EventType.java | 21 ++++++++++++++----- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java b/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java index c9228a3f..ad216577 100644 --- a/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java +++ b/src/main/java/com/kamco/cd/kamcoback/auth/CustomAuthenticationProvider.java @@ -21,11 +21,10 @@ import org.springframework.web.context.request.ServletRequestAttributes; @RequiredArgsConstructor public class CustomAuthenticationProvider implements AuthenticationProvider { + private final MembersRepository membersRepository; ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - private final MembersRepository membersRepository; - @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { String username = authentication.getName(); @@ -61,7 +60,7 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { // front์—์„œ ์ „๋‹ฌํ•œ ์‚ฌ์šฉ์ž ip ๋“ฑ๋ก HttpServletRequest req = (attr != null) ? attr.getRequest() : null; - String ip = (req != null) ? HeaderUtil.get(req, "kamco-userIp") : null; + String ip = (req != null) ? HeaderUtil.get(req, "kamco-user-ip") : null; UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java index f9b48d09..8acefce9 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiLogFunction.java @@ -35,6 +35,14 @@ public class ApiLogFunction { return ip; } + public static String getXFowardedForIp(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if (ip != null) { + ip = ip.split(",")[0].trim(); + } + return ip; + } + // ์‚ฌ์šฉ์ž ID ์ถ”์ถœ ์˜ˆ์‹œ (Spring Security ๊ธฐ์ค€) public static String getUserId(HttpServletRequest request) { try { @@ -53,15 +61,15 @@ public class ApiLogFunction { return EventType.DOWNLOAD; } if (uri.contains("/print")) { - return EventType.PRINT; + return EventType.OTHER; } // ์ผ๋ฐ˜ CRUD return switch (method) { - case "POST" -> EventType.CREATE; - case "GET" -> EventType.READ; - case "DELETE" -> EventType.DELETE; - case "PUT", "PATCH" -> EventType.UPDATE; + case "POST" -> EventType.ADDED; + case "GET" -> EventType.LIST; + case "DELETE" -> EventType.REMOVE; + case "PUT", "PATCH" -> EventType.MODIFIED; default -> EventType.OTHER; }; } diff --git a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java index 72cb50bc..41076e3f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/api/ApiResponseAdvice.java @@ -66,7 +66,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice { if (body instanceof ApiResponseDto apiResponse) { response.setStatusCode(apiResponse.getHttpStatus()); - String ip = ApiLogFunction.getClientIp(servletRequest); + String ip = ApiLogFunction.getXFowardedForIp(servletRequest); Long userid = null; if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth diff --git a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java index 2f923681..bad76c10 100644 --- a/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java +++ b/src/main/java/com/kamco/cd/kamcoback/log/dto/EventType.java @@ -7,16 +7,27 @@ import lombok.Getter; @Getter @AllArgsConstructor public enum EventType implements EnumType { - CREATE("์ƒ์„ฑ"), - READ("์กฐํšŒ"), - UPDATE("์ˆ˜์ •"), - DELETE("์‚ญ์ œ"), + LIST("๋ชฉ๋ก"), + DETAIL("์ƒ์„ธ"), + POPUP("ํŒ์—…"), + STATUS("์ƒํƒœ"), + ADDED("์ถ”๊ฐ€"), + MODIFIED("์ˆ˜์ •"), + REMOVE("์‚ญ์ œ"), DOWNLOAD("๋‹ค์šด๋กœ๋“œ"), - PRINT("์ถœ๋ ฅ"), + LOGIN("๋กœ๊ทธ์ธ"), OTHER("๊ธฐํƒ€"); private final String desc; + public static EventType fromName(String name) { + try { + return EventType.valueOf(name.toUpperCase()); + } catch (Exception e) { + return OTHER; + } + } + @Override public String getId() { return name();