Skip to content

Conversation

@doup2001
Copy link
Member

@doup2001 doup2001 commented Dec 28, 2025

πŸ“Œ μž‘μ—…ν•œ λ‚΄μš©

  • 상세 쑰회 APIμ—μ„œ 거리(distance) κ°’μ˜ 계산 ν˜Ήμ€ ν‘œκΈ° λ‘œμ§μ„ λ¦¬νŒ©ν„°λ§ν•˜μ—¬ 보닀 μ •ν™•ν•˜κ³  μΌκ΄€λœ ν˜•νƒœλ‘œ ν‘œμ‹œλ˜λ„λ‘ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή/μ•±)μ—μ„œ 상세 쑰회 μ‹œ, μ‚¬μš©μžμ—κ²Œ λ…ΈμΆœλ˜λŠ” 거리 ν‘œν˜„ 포맷(λ‹¨μœ„, 반올림/μ ˆμ‚¬ κ·œμΉ™ λ“±)을 μ •λ¦¬ν•˜κ³  μ½”λ“œμ— λ°˜μ˜ν–ˆμŠ΅λ‹ˆλ‹€.
    ​

πŸ” μ°Έκ³  사항

  • κΈ°μ‘΄ 거리 계산/ν‘œν˜„ 방식에 μ˜μ‘΄ν•˜λŠ” λ‹€λ₯Έ APIλ‚˜ 화면이 μžˆλŠ”μ§€ ν•œλ²ˆ 더 확인이 ν•„μš”ν•©λ‹ˆλ‹€.
    ​- 거리 포맷(예: m/㎞ μ „ν™˜ κΈ°μ€€, μ†Œμˆ˜μ  자리수 λ“±)에 λŒ€ν•œ 기획/λ””μžμΈ ν•©μ˜κ°€ μžˆλ‹€λ©΄, 이번 PR λ‚΄μš©μ΄ ν•΄λ‹Ή 정책을 μ •ν™•νžˆ λ”°λ₯΄λŠ”μ§€ 리뷰 μ‹œ ν•¨κ»˜ λ΄μ£Όμ„Έμš”.

πŸ–ΌοΈ μŠ€ν¬λ¦°μƒ·

πŸ”— κ΄€λ ¨ 이슈

βœ… 체크리슀트

  • λ‘œμ»¬μ—μ„œ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ μ™„λ£Œ
  • μ½”λ“œ 리뷰 반영 μ™„λ£Œ
  • λ¬Έμ„œν™” ν•„μš” μ—¬λΆ€ 확인

Summary by CodeRabbit

릴리슀 λ…ΈνŠΈ

  • μƒˆλ‘œμš΄ κΈ°λŠ₯

    • 주택단지 쑰회 μ‹œ 톡합 ꡐ톡 정보 제곡 μΆ”κ°€ - 총 μ†Œμš” μ‹œκ°„, 거리, 상세 경둜 정보λ₯Ό ν•¨κ»˜ μ œκ³΅ν•©λ‹ˆλ‹€.
  • κ°œμ„  사항

    • ꡐ톡 정보 쑰회 방식이 κ°œμ„ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 λͺ…ν™•ν•˜κ³  μ™„μ „ν•œ ꡐ톡 데이터λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

✏️ Tip: You can customize this high-level summary in your review settings.

@doup2001 doup2001 self-assigned this Dec 28, 2025
@doup2001 doup2001 added the 🐞 BugFix Something isn't working label Dec 28, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 28, 2025

κ°œμš”

λŒ€μ€‘κ΅ν†΅ 경둜 μ •λ³΄μ˜ 데이터 ꡬ쑰λ₯Ό μž¬μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€. 기쑴의 μ„Έκ·Έλ¨ΌνŠΈ λͺ©λ‘ 기반 λ°©μ‹μ—μ„œ 총 μ‹œκ°„, 거리 및 μ„Έκ·Έλ¨ΌνŠΈλ₯Ό ν¬ν•¨ν•˜λŠ” 톡합 TransitInfoResponse둜 λ³€κ²½ν•˜κ³ , ComplexService에 μƒˆλ‘œμš΄ getTransitInfo() λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜λ©° getSegments()λ₯Ό deprecateν–ˆμŠ΅λ‹ˆλ‹€.

변경사항

μ§‘ν•© / 파일(λ“€) λ³€κ²½ μš”μ•½
응닡 DTO ꡬ쑰 λ³€κ²½
ComplexDetailResponse.java
distance ν•„λ“œλ₯Ό List<SegmentResponse>μ—μ„œ TransitInfoResponse둜 λ³€κ²½; νŒ©ν† λ¦¬ λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜ 및 null 체크 둜직 μ—…λ°μ΄νŠΈ
μƒˆλ‘œμš΄ Transit 정보 λ ˆμ½”λ“œ
TransitInfoResponse.java
μƒˆλ‘œμš΄ 곡개 λ ˆμ½”λ“œ μΆ”κ°€: totalTime(λ¬Έμžμ—΄), totalTimeMinutes(숫자), totalDistance(km), segments(μ„Έκ·Έλ¨ΌνŠΈ 리슀트); @Builder, @JsonInclude, @Schema μ–΄λ…Έν…Œμ΄μ…˜ 포함
μ„œλΉ„μŠ€ 계측 λ¦¬νŒ©ν† λ§
ComplexService.java
μƒˆλ‘œμš΄ 곡개 λ©”μ„œλ“œ getTransitInfo(String id, String pinPointId) μΆ”κ°€; κΈ°μ‘΄ getSegments() λ©”μ„œλ“œλ₯Ό @Deprecated둜 ν‘œμ‹œ; ComplexDetailResponse 생성 λ‘œμ§μ„ TransitInfo 기반으둜 λ³€κ²½
맀퍼 μœ ν‹Έλ¦¬ν‹° ν™•μž₯
TransitResponseMapper.java
μƒˆλ‘œμš΄ 곡개 λ©”μ„œλ“œ toTransitInfoResponse(RootResult route) μΆ”κ°€: null μž…λ ₯ 처리, 총 μ‹œκ°„/거리 계산, μ„Έκ·Έλ¨ΌνŠΈ λͺ©λ‘ λ³€ν™˜ ν›„ TransitInfoResponse λ°˜ν™˜

μ˜ˆμƒ μ½”λ“œ 리뷰 λ…Έλ ₯

🎯 4 (λ³΅μž‘ν•¨) | ⏱️ ~45λΆ„

μ‹œ

🐰 μ„Έκ·Έλ¨ΌνŠΈλ“€ λ¬Άμ–΄μ„œ ν†΅ν•©ν–ˆλ„€,
μ‹œκ°„κ³Ό 거리 ν•œλˆˆμ— 보넀!
μ „ν™˜ 과정도 μš°μ•„ν•˜κ²Œ,
μƒˆλ‘œμš΄ TransitInfo ν™˜μ˜ν•΄~
μ—¬ν–‰ 정보, 더 κΉ”λ”ν•΄μ‘Œμ–΄! 🚌✨

Pre-merge checks and finishing touches

βœ… Passed checks (3 passed)
Check name Status Explanation
Title check βœ… Passed PR 제λͺ©μ΄ λ³€κ²½ μ‚¬ν•­μ˜ 핡심을 λͺ…ν™•νžˆ λ°˜μ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. '거리 ν‘œν˜„ μˆ˜μ •'은 거리 계산 및 ν‘œκΈ° 둜직의 λ¦¬νŒ©ν„°λ§μ΄λΌλŠ” μ£Όμš” λ³€κ²½ λ‚΄μš©κ³Ό μΌμΉ˜ν•©λ‹ˆλ‹€.
Description check βœ… Passed PR μ„€λͺ…이 ν…œν”Œλ¦Ώμ˜ μ£Όμš” μ„Ήμ…˜(μž‘μ—… λ‚΄μš©, μ°Έκ³  사항, 체크리슀트)을 ν¬ν•¨ν•˜κ³  있으며, λ³€κ²½ 사항과 κ²€ν†  μ‹œ κ³ λ €ν•΄μ•Ό ν•  사항을 μΆ©λΆ„νžˆ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
Docstring Coverage βœ… Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • πŸ“ Generate docstrings
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/λŒ€μ€‘κ΅ν†΅-거리-μ‹œκ°„-μˆ˜μ •

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

Test Results

22 tests  Β±0   22 βœ… Β±0   1s ⏱️ -1s
 3 suites Β±0    0 πŸ’€ Β±0 
 3 files   Β±0    0 ❌ Β±0 

Results for commit 4dfc6b2. ± Comparison against base commit 08e3a27.

@doup2001 doup2001 merged commit d4871fb into develop Dec 28, 2025
2 of 3 checks passed
@doup2001 doup2001 deleted the fix/λŒ€μ€‘κ΅ν†΅-거리-μ‹œκ°„-μˆ˜μ • branch December 28, 2025 11:37
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
src/main/java/com/pinHouse/server/platform/housing/complex/application/util/TransitResponseMapper.java (1)

241-263: LGTM! μƒˆλ‘œμš΄ TransitInfoResponse 생성 λ©”μ„œλ“œκ°€ 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

null 체크와 κΈ°μ‘΄ toSegmentResponses μž¬μ‚¬μš©μ΄ μ μ ˆν•©λ‹ˆλ‹€. λ‹€λ§Œ, 거리 계산 둜직(Math.round(route.totalDistance() / 100.0) / 10.0)이 toSummaryResponse (line 219)와 μ€‘λ³΅λ©λ‹ˆλ‹€.

πŸ”Ž 쀑볡 제거λ₯Ό μœ„ν•œ 헬퍼 λ©”μ„œλ“œ μΆ”μΆœ μ œμ•ˆ
+    /** 거리(m)λ₯Ό km둜 λ³€ν™˜ (μ†Œμˆ˜μ  1자리) */
+    private double toDistanceKm(double distanceM) {
+        return Math.round(distanceM / 100.0) / 10.0;
+    }
+
     private TransitRoutesResponse.SummaryResponse toSummaryResponse(RootResult route) {
         int totalMinutes = route.totalTime();
         int transferCount = countTransfers(route);

         return TransitRoutesResponse.SummaryResponse.builder()
                 .totalMinutes(totalMinutes)
-                .totalDistanceKm(Math.round(route.totalDistance() / 100.0) / 10.0)
+                .totalDistanceKm(toDistanceKm(route.totalDistance()))
                 // ...
src/main/java/com/pinHouse/server/platform/housing/complex/application/dto/response/ComplexDetailResponse.java (1)

60-64: isEmpty() μ‚¬μš©μ€ 쒋은 κ°œμ„ μž…λ‹ˆλ‹€.

equals("") λŒ€μ‹  isEmpty()λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λͺ…ν™•ν•˜κ³  κ΄€μš©μ μž…λ‹ˆλ‹€. λ‹€λ§Œ, NumberFormatException λ°©μ–΄ 둜직이 μ—†μŠ΅λ‹ˆλ‹€. totalHouseholdsκ°€ μˆ«μžκ°€ μ•„λ‹Œ λ¬Έμžμ—΄μΌ 경우 μ˜ˆμ™Έκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ”Ž NumberFormatException λ°©μ–΄ 둜직 μ œμ•ˆ
 .totalHouseholds(
-        document.getTotalHouseholds() == null || document.getTotalHouseholds().isEmpty()
-                ? 0
-                : Integer.parseInt(document.getTotalHouseholds())
+        parseTotalHouseholds(document.getTotalHouseholds())
 )

// 별도 헬퍼 λ©”μ„œλ“œ μΆ”κ°€
+private static Integer parseTotalHouseholds(String value) {
+    if (value == null || value.isEmpty()) {
+        return 0;
+    }
+    try {
+        return Integer.parseInt(value);
+    } catch (NumberFormatException e) {
+        return 0;
+    }
+}
src/main/java/com/pinHouse/server/platform/housing/complex/application/service/ComplexService.java (1)

478-486: @Deprecated μ–΄λ…Έν…Œμ΄μ…˜μ— μΆ”κ°€ 정보λ₯Ό ν¬ν•¨ν•˜μ„Έμš”.

μ£Όμ„μœΌλ‘œ λŒ€μ²΄ λ©”μ„œλ“œλ₯Ό μ–ΈκΈ‰ν–ˆμ§€λ§Œ, ν‘œμ€€ Javadoc @deprecated νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λ©΄ IDE와 λ¬Έμ„œ λ„κ΅¬μ—μ„œ 더 잘 μΈμ‹λ©λ‹ˆλ‹€.

πŸ”Ž Deprecation μ–΄λ…Έν…Œμ΄μ…˜ κ°œμ„  μ œμ•ˆ
-    /// Segment 리슀트 쑰회 (μž„λŒ€μ£Όνƒ μƒμ„Έμ‘°νšŒμš©) - Deprecated, use getTransitInfo instead
-    @Deprecated
+    /**
+     * Segment 리슀트 쑰회 (μž„λŒ€μ£Όνƒ μƒμ„Έμ‘°νšŒμš©)
+     * @deprecated Use {@link #getTransitInfo(String, String)} instead.
+     */
+    @Deprecated(forRemoval = true)
     @Transactional(readOnly = true)
     public List<TransitRoutesResponse.SegmentResponse> getSegments(String id, String pinPointId) throws UnsupportedEncodingException {
πŸ“œ Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 08e3a27 and 4dfc6b2.

πŸ“’ Files selected for processing (4)
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/dto/response/ComplexDetailResponse.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/dto/response/TransitInfoResponse.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/service/ComplexService.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/util/TransitResponseMapper.java
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test
πŸ”‡ Additional comments (4)
src/main/java/com/pinHouse/server/platform/housing/complex/application/dto/response/ComplexDetailResponse.java (1)

48-49: ν•„λ“œ νƒ€μž… 변경이 API 응닡 ꡬ쑰에 영ν–₯을 μ€λ‹ˆλ‹€.

distance ν•„λ“œ νƒ€μž…μ΄ List<SegmentResponse>μ—μ„œ TransitInfoResponse둜 λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” API 응닡 ꡬ쑰의 breaking changeμž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ κΈ°μ‘΄ λ°°μ—΄ ν˜•νƒœμ˜ distanceλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ—ˆλ‹€λ©΄ μˆ˜μ •μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ˜ν•œ, ν•„λ“œλͺ… distanceκ°€ 이제 TransitInfoResponse νƒ€μž…μ„ λ‹΄κ³  μžˆμ–΄ μ˜λ―Έκ°€ λͺ¨ν˜Έν•΄μ‘ŒμŠ΅λ‹ˆλ‹€. λͺ…확성을 μœ„ν•΄ transitInfo둜 변경을 κ³ λ €ν•΄ λ³΄μ„Έμš”.

src/main/java/com/pinHouse/server/platform/housing/complex/application/dto/response/TransitInfoResponse.java (1)

1-29: LGTM! μƒˆλ‘œμš΄ DTOκ°€ 잘 μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

TransitInfoResponse recordκ°€ μ μ ˆν•œ μ–΄λ…Έν…Œμ΄μ…˜(@Builder, @JsonInclude, @Schema)κ³Ό ν•¨κ»˜ κΉ”λ”ν•˜κ²Œ μ •μ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ TransitRoutesResponse.SegmentResponseλ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ 일관성을 μœ μ§€ν•œ 점도 μ’‹μŠ΅λ‹ˆλ‹€.

src/main/java/com/pinHouse/server/platform/housing/complex/application/service/ComplexService.java (2)

72-76: LGTM! getTransitInfo둜의 μ „ν™˜μ΄ 잘 μ μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

getSegments λŒ€μ‹  getTransitInfoλ₯Ό ν˜ΈμΆœν•˜κ³  ComplexDetailResponse.from에 transitInfoλ₯Ό μ „λ‹¬ν•˜λŠ” 변경이 μ μ ˆν•©λ‹ˆλ‹€.


469-476: getTransitInfo λ©”μ„œλ“œκ°€ 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν…œν”Œλ¦Ώ λ©”μ„œλ“œ νŒ¨ν„΄μ„ ν™œμš©ν•œ κ΅¬ν˜„μ΄ κΉ”λ”ν•©λ‹ˆλ‹€. λ‹€λ§Œ, 두 κ°€μ§€ 확인이 ν•„μš”ν•©λ‹ˆλ‹€:

  1. getEasyDistanceλŠ” Redis 캐싱을 μ‚¬μš©ν•˜μ§€λ§Œ getTransitInfoλŠ” 캐싱이 μ—†μŠ΅λ‹ˆλ‹€. 상세 쑰회 APIμ—μ„œ λΉˆλ²ˆν•˜κ²Œ ν˜ΈμΆœλœλ‹€λ©΄ 캐싱 μΆ”κ°€λ₯Ό κ³ λ €ν•΄ λ³΄μ„Έμš”.
  2. 이 λ©”μ„œλ“œκ°€ μ™ΈλΆ€μ—μ„œλ„ μ‚¬μš©λœλ‹€λ©΄ ComplexUseCase μΈν„°νŽ˜μ΄μŠ€μ— μΆ”κ°€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐞 BugFix Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants