From 17922bf74ce0f8892991cf0b0f7df277cd69cae4 Mon Sep 17 00:00:00 2001 From: htlee Date: Sat, 4 Apr 2026 11:04:41 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20history/detail=20API=20500=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=E2=80=94=20candidate=5Fcount=20=EC=BB=AC=EB=9F=BC?= =?UTF-8?q?=20=EB=B6=80=EC=9E=AC=20=EC=8B=9C=20=EC=95=88=EC=A0=84=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mapGroupRow에서 candidate_count를 읽을 때 optionalInt로 변경하여 해당 컬럼이 없는 SQL (history, detail)에서도 정상 동작하도록 수정 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../gc/mda/kcg/domain/fleet/GroupPolygonService.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java b/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java index 0daf126..4140333 100644 --- a/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java +++ b/backend/src/main/java/gc/mda/kcg/domain/fleet/GroupPolygonService.java @@ -1409,7 +1409,7 @@ public class GroupPolygonService { .members(members) .color(rs.getString("color")) .resolution(rs.getString("resolution")) - .candidateCount(nullableInt(rs, "candidate_count")) + .candidateCount(optionalInt(rs, "candidate_count")) .parentInference(mapParentInferenceSummary(rs)) .build(); } @@ -1566,6 +1566,15 @@ public class GroupPolygonService { return ((Number) value).intValue(); } + /** 컬럼이 ResultSet에 존재하지 않으면 null 반환 (history/detail SQL 호환) */ + private Integer optionalInt(ResultSet rs, String column) throws SQLException { + try { + return nullableInt(rs, column); + } catch (SQLException e) { + return null; + } + } + private Map parseJsonObject(String json) { return parseJsonValue(json, new TypeReference>() {}, Map.of()); }