Skip to content

[#257] 상세 경로 안내 변경된 디자인 반영#258

Open
jieeeunnn wants to merge 6 commits intodevelopfrom
feat/update-route-detail-design#257
Open

[#257] 상세 경로 안내 변경된 디자인 반영#258
jieeeunnn wants to merge 6 commits intodevelopfrom
feat/update-route-detail-design#257

Conversation

@jieeeunnn
Copy link
Member

@jieeeunnn jieeeunnn commented Mar 15, 2026

#️⃣연관된 이슈

📝작업 내용

  • 상세 경로 안내에 변경된 디자인 시스템 반영

PR 발행 전 체크 리스트

  • 발행자 확인
  • 프로젝트 설정 확인
  • 라벨 확인
  • 코드 린트 확인

스크린샷 (선택)

  • 디자인 QA 내용
스크린샷 2026-03-15 오후 4 49 59
  • 반영한 디자인
image

💬리뷰 요구사항(선택)

  • 리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요
    • 코덱스 이용해서 작업했는데 숫자를 그대로 고정시키거나 색상을 맘대로 바꾼 부분이 조금 있네용..
      그런 부분은 일단 보고 수정해두긴 했는데 원래 담당자 현석오빠 함 확인해보고 이상한 부분 있으면 얘기해주세요~~

Summary by CodeRabbit

릴리스 노트

  • 스타일 개선
    • 여정 타임라인을 수평 기준으로 재구성하여 표시가 더 일관되고 가독성이 좋아졌습니다.
    • 탑승·하차 시간과 아이콘 배치가 개선되어 시각적 흐름이 명확해졌습니다.
    • 정렬·간격 조정으로 요약 화면의 여백과 패딩이 더 촘촘해졌습니다.
  • 버그 수정/품질 개선
    • 구간별 시간 막대 너비 분배와 긴 역명 처리(말줄임) 안정성이 향상되었습니다.

@jieeeunnn jieeeunnn linked an issue Mar 15, 2026 that may be closed by this pull request
1 task
@coderabbitai
Copy link

coderabbitai bot commented Mar 15, 2026

Warning

Rate limit exceeded

@jieeeunnn has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 6 minutes and 32 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: f7f62607-498f-4367-9ac3-e77bf7b70de0

📥 Commits

Reviewing files that changed from the base of the PR and between c569e0d and 5034fe5.

📒 Files selected for processing (2)
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/SummaryBarChart.kt

Walkthrough

여정 상세의 타임라인 레이아웃을 세로에서 가로로 전환하고, 막대 차트의 너비 분배 알고리즘과 UI 치수 상수를 추가·조정했습니다. 내부 레이아웃·렌더링 로직과 일부 텍스트 측정/트렁케이션 로직이 변경되었습니다.

변경사항

Cohort / File(s) 요약
타임라인 레이아웃 재설계
app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetail.kt, app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt
Column 기반 수직 타임라인을 Row 기반 수평 타임라인으로 전환. timelineColumnWidth, timelineIconSize 등 타임라인 치수 도입, markerYOffset 처리, boardingTime 위치 변경, zIndex 적용. Walk 구간 높이 계산(walkTimelineHeight)과 lineOffsetY 계산 도입. DisembarkingStationText(private) 추가 및 정렬/줄바꿈(ellipsis) 개선. BoxWithConstraints/측정 API 사용.
막대 차트 너비 할당 알고리즘 변경
app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/SummaryBarChart.kt
막대 너비 계산을 2단계(모든 바에 최소 너비 할당 → 남은 너비를 sectionTime 비례로 분배)로 변경. 빈 입력 처리 보강, 최소 너비 합계 ≥ 전체 너비일 때 균등 분배로 전환. 기본 바 너비 상수 25.dp → 18.dp 조정.
UI 치수 상수 추가 및 패딩 조정
app/src/main/java/com/depromeet/team6/presentation/util/Dimens.kt, app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItinerarySummary.kt
LegTimelineIconSize(26.dp), LegTimelineTimeIconGap(5.dp), LegTimelineTimeSlotWidth(44.dp) 상수 추가. ItinerarySummary에서 배경 제거 및 텍스트/차트 패딩 미세 조정(상단 2.dp 등).

예상 코드 리뷰 노력

🎯 4 (Complex) | ⏱️ ~50분

기술적 주의사항:

  • 성능: ItineraryInfoDetailLegs.kt에서 BoxWithConstraints, 텍스트 측정 및 동적 높이 계산이 빈번한 recomposition에서 호출되면 레이아웃 비용이 커질 수 있습니다. measure/layout 작업과 text measurement 호출 빈도를 최소화하거나 remember/derivedStateOf로 캐싱 가능한 값인지 검토하세요.
  • 레이아웃 안정성: timelineColumnWidth, timelineAxisOffset, lineOffsetY 등 오프셋 계산이 다양한 화면 폭/폰트 크기/locale(글자 너비)에 대해 경계값(음수, 0, 너무 큰 값)을 생산하지 않는지 확인하세요. min/max 제약을 명확히 적용하세요.
  • 텍스트 측정과 트렁케이션: DisembarkingStationText의 단/다중 라인 분기 로직이 다국어(긴 단어, CJK)와 접근성 폰트 스케일에서 일관되게 동작하는지 검증하세요. 텍스트 측정 결과에 따라 layout shift가 발생하면 사용자 경험 저하로 이어질 수 있습니다.
  • SummaryBarChart 알고리즘: 최소 너비 합계가 전체 너비 이상인 경우 균등 분배로 전환하는 동작은 시각적 왜곡을 초래할 수 있음. 극단적 케이스(많은 바, 매우 작은 컨테이너)와 소수 케이스(하나의 매우 긴 구간)에서 기대한 비율이 유지되는지 테스트하세요.
  • 재사용성/테스트: 새로 추가된 치수 상수와 private composable들은 유닛/스크린샷 테스트로 시각적 회귀를 검증하는 것이 좋습니다. 레이아웃 변경은 스냅샷 테스트로 회귀 탐지가 용이합니다.
🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.69% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 PR의 핵심 변경사항을 명확하게 요약하고 있습니다. 상세 경로 안내 UI의 디자인 시스템 반영이라는 주요 목적을 정확히 반영합니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/update-route-detail-design#257
📝 Coding Plan
  • Generate coding plan for human review comments

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.

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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt`:
- Line 18: There are duplicate imports of the same Compose Box type (one as Box
and one aliased as LayoutBox) and both Box and LayoutBox are used
interchangeably; remove the redundant aliased import (LayoutBox) and standardize
all usages to the single imported symbol (choose either Box or LayoutBox but
keep one) in this file, updating references where Box/LayoutBox are used (search
for Box and LayoutBox in ItineraryInfoDetailLegs.kt) and ensure imports only
include the chosen name.

In
`@app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/SummaryBarChart.kt`:
- Around line 165-177: The code in SummaryBarChart.kt can produce negative
allocated widths if LegInfo.sectionTime is negative; update the computation to
treat sectionTime as non-negative by using leg.sectionTime.coerceAtLeast(0) when
computing remainingTimeSum and when calculating each leg's allocation (so
remainingTimeSum = legs.sumOf { it.sectionTime.coerceAtLeast(0)
}.coerceAtLeast(1) and use the same non-negative value for per-leg ratio),
keeping the existing min width and equal-distribution fallback logic intact.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 755bc2b6-44dc-4bc2-bcb8-128af146b02d

📥 Commits

Reviewing files that changed from the base of the PR and between 65261c7 and 0dd589d.

📒 Files selected for processing (5)
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetail.kt
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItinerarySummary.kt
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/SummaryBarChart.kt
  • app/src/main/java/com/depromeet/team6/presentation/util/Dimens.kt

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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt`:
- Line 276: The hardcoded dot offsets (14.dp / 6.dp) used for the drop-off
marker positions should be derived from the existing timeline metrics instead of
fixed values; replace usages with calculations based on timelineAxisOffset,
timelineIconSize (and timelineTimeIconGap / timelineTimeSlotWidth if needed) so
the marker x/y aligns with the axis math (e.g., compute center =
timelineAxisOffset and halfIcon = timelineIconSize / 2 and use those to position
the marker). Update all places referencing the hardcoded 14.dp/6.dp (including
the code around the timelineAxisOffset declaration, DetailLegsSubway placement,
and the other two occurrences noted) to use the derived values so future Dimens
changes remain consistent with the axis calculation.
- Around line 800-806: The branch computing useCompactSingleLine is based only
on stationName measurement (stationLayout) which allows the suffix label ("하차")
to be truncated; change the decision to measure the combined string (e.g.,
stationName plus the suffix/space) using textMeasurer.measure with the same
stationStyle and Constraints, and derive useCompactSingleLine from that
combinedLayout.lineCount > 2 so the rendering block that uses maxLines = 2 won't
drop the suffix; apply the same change to the similar logic referenced later
(the other measurement around the same UI block) so both places use the
combined-string measurement to decide compact/expanded layout.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 55e1fb15-d94e-45ca-8779-be3279531918

📥 Commits

Reviewing files that changed from the base of the PR and between 0dd589d and c569e0d.

📒 Files selected for processing (1)
  • app/src/main/java/com/depromeet/team6/presentation/ui/itinerary/component/ItineraryInfoDetailLegs.kt

@jieeeunnn jieeeunnn self-assigned this Mar 15, 2026
@jieeeunnn jieeeunnn added the feat Feature label Mar 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat Feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 상세 경로 안내 변경된 디자인 반영

1 participant