From 2d6d41e127b062fe26aff1245378125c11de93a1 Mon Sep 17 00:00:00 2001 From: MIJUUUUU Date: Mon, 21 Sep 2026 08:49:30 +0900 Subject: [PATCH 1/2] fix(client): hide transit provider names --- src/components/trip/TransitPanel.tsx | 30 +++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/components/trip/TransitPanel.tsx b/src/components/trip/TransitPanel.tsx index 19965da..ab64d5f 100644 --- a/src/components/trip/TransitPanel.tsx +++ b/src/components/trip/TransitPanel.tsx @@ -37,6 +37,25 @@ function transitLabel(transit: ScheduleTransit) { return `${route} · ${transit.totalMinutes}분`; } +function hasPublicTransitSegment(transit: ScheduleTransit) { + return transit.segments.some((segment) => segment.mode !== "WALK"); +} + +function transitSummaryModeLabel(transit: ScheduleTransit) { + if (hasPublicTransitSegment(transit)) return "대중교통"; + const mode = transit.segments[0]?.mode ?? "WALK"; + return modeInfo(mode).label; +} + +function providerDisplayLabel(provider: string | null) { + const key = provider?.toUpperCase(); + if (!key || key === "FAKE" || key === "UNKNOWN") return null; + if (key === "ODSAY") return "대중교통 경로"; + if (key === "TMAP") return "도보 경로"; + if (key === "INTERNAL_WALK") return null; + return null; +} + function SegmentDetail({ segment }: { segment: ScheduleTransitSegment }) { const mode = modeInfo(segment.mode); const lineName = present(segment.lineName); @@ -154,7 +173,8 @@ export default function TransitPanel({ const originName = present(transit.originName); const destinationName = present(transit.destinationName); const warnings = transit.warnings.filter((warning) => present(warning)); - const hasPublicRide = transit.segments.some((segment) => segment.mode !== "WALK"); + const hasPublicRide = hasPublicTransitSegment(transit); + const providerLabel = providerDisplayLabel(provider); const statusLabel = !hasRouteGeometry ? "경로 상세 없음" : estimated @@ -181,7 +201,7 @@ export default function TransitPanel({ const hasExpandableDetails = usesSpontaneousRoadGuidance ? roadGuidanceLines.length > 0 : transit.segments.length > 0; - const primaryMode = roadSegment?.mode ?? transit.segments[0]?.mode ?? "WALK"; + const primaryMode = hasPublicRide ? "TRANSIT" : roadSegment?.mode ?? transit.segments[0]?.mode ?? "WALK"; const PrimaryModeIcon = primaryMode === "WALK" ? Footprints : Route; if (appearance === "spontaneous-result") { @@ -219,9 +239,9 @@ export default function TransitPanel({ - {modeInfo(primaryMode).label} {transit.totalMinutes}분 + {transitSummaryModeLabel(transit)} {transit.totalMinutes}분 - {provider && {provider}} + {providerLabel && {providerLabel}} {hasExpandableDetails && ( @@ -302,7 +322,7 @@ export default function TransitPanel({ {transit.walkMinutes > 0 && 도보 {transit.walkMinutes}분} {hasPublicRide && 환승 {transit.transferCount}회} {transit.fareAmount != null && 약 {transit.fareAmount.toLocaleString()}원} - {provider && {provider}} + {providerLabel && {providerLabel}} {usesSpontaneousRoadGuidance ? ( From 6e88828bb7f642de11464ce6138257d43f7bd77d Mon Sep 17 00:00:00 2001 From: MIJUUUUU Date: Mon, 21 Sep 2026 08:55:31 +0900 Subject: [PATCH 2/2] fix(client): make all schedules toggle clickable --- src/app/(app)/trips/page.tsx | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/app/(app)/trips/page.tsx b/src/app/(app)/trips/page.tsx index 45f2956..98e8f62 100644 --- a/src/app/(app)/trips/page.tsx +++ b/src/app/(app)/trips/page.tsx @@ -159,6 +159,7 @@ export default function TripsPage() { const { resetDraft } = useTripDraft(); const [schedules, setSchedules] = useState([]); + const [showAllSchedules, setShowAllSchedules] = useState(false); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [now, setNow] = useState(() => new Date()); @@ -202,6 +203,8 @@ export default function TripsPage() { const upcoming = sorted.find((s) => diffDays(today, parseDate(s.endDate)) >= 0); return upcoming ?? sorted[sorted.length - 1]; }, [sorted, today]); + const visibleSchedules = showAllSchedules ? sorted : sorted.slice(0, 3); + const canToggleSchedules = sorted.length > 3; return (
@@ -326,16 +329,28 @@ export default function TripsPage() {

모든 일정 {sorted.length}

- - 전체 보기 - + {canToggleSchedules && ( + + )}
{sorted.length === 0 ? (

아직 만든 일정이 없어요

) : (
    - {sorted.map((t) => ( + {visibleSchedules.map((t) => (