@@ -43,7 +43,7 @@ public class TmapRouteService {
4343 private final RestTemplate restTemplate ;
4444 private final AIPredictedCellRepository aiPredictedCellRepository ;
4545
46- private static final int MAX_BYPASS_ATTEMPTS = 3 ;
46+ private static final int MAX_BYPASS_ATTEMPTS = 5 ;
4747
4848
4949 // 안전 경로 조회
@@ -70,9 +70,10 @@ public RouteResponse getSafeRoute(RouteRequest request) {
7070
7171 // 4. 우회 경로 반환
7272 RouteResponse safeRoute = findBypassRoute (request , originalRoute , dangerCells );
73+ boolean finalSafe = GeoUtils .isRouteSafe (safeRoute .getPath (), dangerCells );
7374 log .info ("최종 경로 - 거리: {}m, 시간: {}분, 안전여부: {}" ,
7475 safeRoute .getTotalDistance (), safeRoute .getTotalTime (),
75- safeRoute != originalRoute ? "✅" : "⚠️" );
76+ finalSafe ? "✅" : "⚠️" );
7677 return safeRoute ;
7778 }
7879
@@ -137,16 +138,20 @@ private RouteResponse findBypassRoute(
137138 rep .getLongitude (), rep .getLatitude ());
138139 });
139140
140- // 3. 반복 우회 시도 (최대 3회)
141+ // 3. 반복 우회 시도 (최대 3회, 우회거리 증가 )
141142 for (int iteration = 1 ; iteration <= MAX_BYPASS_ATTEMPTS ; iteration ++) {
142- log .info ("=== 우회 반복 {}/3 ===" , iteration );
143+ log .info ("=== 우회 반복 {}/{} ===" , iteration , MAX_BYPASS_ATTEMPTS );
144+
145+ // 반복 횟수에 따라 우회 거리(km) 점점 증가
146+ double distanceKm = 0.5 * iteration ;
143147
144148 // 4. passList 생성 (최대 5개 경유지)
145149 String passList = GeoUtils .generatePassList (
146150 groups ,
147151 request .getStartLon (), request .getStartLat (),
148152 request .getEndLon (), request .getEndLat (),
149- dangerCells
153+ dangerCells ,
154+ distanceKm
150155 );
151156
152157 log .info ("생성된 passList: {}" , passList );
@@ -179,7 +184,7 @@ private RouteResponse findBypassRoute(
179184 }
180185 }
181186
182- log .error ("❌ 모든 우회 시도 실패 (3회 ) - 위험 경로 반환" );
187+ log .error ("❌ 모든 우회 시도 실패 ({}회 ) - 위험 경로 반환" , MAX_BYPASS_ATTEMPTS );
183188 return originalRoute ;
184189 }
185190
0 commit comments