diff --git a/frontend/src/tabs/weather/components/WeatherRightPanel.tsx b/frontend/src/tabs/weather/components/WeatherRightPanel.tsx
index b009ec8..c22f7d4 100755
--- a/frontend/src/tabs/weather/components/WeatherRightPanel.tsx
+++ b/frontend/src/tabs/weather/components/WeatherRightPanel.tsx
@@ -33,12 +33,34 @@ interface WeatherRightPanelProps {
weatherData: WeatherData | null
}
+/** 풍속 등급 색상 */
+function windColor(speed: number): string {
+ if (speed >= 14) return '#ef4444'
+ if (speed >= 10) return '#f97316'
+ if (speed >= 6) return '#eab308'
+ return '#22c55e'
+}
+
+/** 파고 등급 색상 */
+function waveColor(height: number): string {
+ if (height >= 3) return '#ef4444'
+ if (height >= 2) return '#f97316'
+ if (height >= 1) return '#eab308'
+ return '#22c55e'
+}
+
+/** 풍향 텍스트 */
+function windDirText(deg: number): string {
+ const dirs = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW']
+ return dirs[Math.round(deg / 22.5) % 16]
+}
+
export function WeatherRightPanel({ weatherData }: WeatherRightPanelProps) {
if (!weatherData) {
return (
-
+
-
지도에서 해양 지점을 클릭하세요
+
지도에서 해양 지점을 클릭하세요
)
@@ -48,225 +70,185 @@ export function WeatherRightPanel({ weatherData }: WeatherRightPanelProps) {
const sunsetTime = '17:58'
const moonrise = '19:35'
const moonset = '01:50'
- const moonPhase = '상현달 14일'
- const moonVisibility = '6.7 m'
+ const windDir = windDirText(weatherData.wind.direction)
+ const wSpd = Number(weatherData.wind.speed)
+ const wHgt = Number(weatherData.wave.height)
+ const wTemp = Number(weatherData.temperature.current)
return (
-
- {/* Header */}
-
-
-
📍 {weatherData.stationName}
-
- 기상예보관
-
+
+ {/* 헤더 */}
+
+
+ 📍 {weatherData.stationName}
+ 기상예보관
-
- {weatherData.location.lat.toFixed(2)}°N, {weatherData.location.lon.toFixed(2)}°E · 현지시각{' '}
- {weatherData.currentTime}
+
+ {weatherData.location.lat.toFixed(2)}°N, {weatherData.location.lon.toFixed(2)}°E · {weatherData.currentTime}
- {/* Scrollable Content */}
-
- {/* Wind Speed */}
-
-
-
🌬️ 바람 현황
+ {/* 스크롤 콘텐츠 */}
+
+
+ {/* ── 핵심 지표 3칸 카드 ── */}
+
+
+
{wSpd.toFixed(1)}
+
풍속 (m/s)
-
-
{Number(weatherData.wind.speed).toFixed(1)}
-
m/s
-
NW 315°
+
+
{wHgt.toFixed(1)}
+
파고 (m)
-
-
- 순간최고
-
- 1k:
- {Number(weatherData.wind.speed_1k).toFixed(1)} m/s
-
-
-
- 평균
-
- 3k:
- {Number(weatherData.wind.speed_3k).toFixed(1)} m/s
-
-
-
-
- 기압
-
- {weatherData.pressure} hPa (Fresh)
-
-
-
-
가시거리
-
{weatherData.visibility} km
+
+
{wTemp.toFixed(1)}
+
수온 (°C)
- {/* Wave Height */}
-
-
-
🌊 파도
+ {/* ── 바람 상세 ── */}
+
+
🌬️ 바람 현황
+
+ {/* 풍향 컴파스 */}
+
+
+
+
+
풍향{windDir} {weatherData.wind.direction}°
+
기압{weatherData.pressure} hPa
+
1k 최고{Number(weatherData.wind.speed_1k).toFixed(1)}
+
3k 평균{Number(weatherData.wind.speed_3k).toFixed(1)}
+
가시거리{weatherData.visibility} km
+
-
-
{Number(weatherData.wave.height).toFixed(1)}
-
m
-
주기:{weatherData.wave.period}초
+ {/* 풍속 게이지 바 */}
+
-
-
-
치유파고
-
{Number(weatherData.wave.height).toFixed(1)} m
+
+
+ {/* ── 파도 상세 ── */}
+
+
🌊 파도
+
+
+
{wHgt.toFixed(1)}m
+
유의파고
-
-
최고파고
-
- {(weatherData.wave.height * 1.6).toFixed(1)} m
-
+
+
{(wHgt * 1.6).toFixed(1)}m
+
최고파고
-
-
파향
-
NW 128°
+
+
{weatherData.wave.period}s
+
주기
-
-
주기(초)
-
- 4 (Moderate)
-
-
+
+
+ {/* 파고 게이지 바 */}
+
+
+
{wHgt.toFixed(1)}/5m
+
+
+
+ {/* ── 수온/공기 ── */}
+
+
🌡️ 수온 · 공기
+
+
+
{wTemp.toFixed(1)}°
+
수온
+
+
+
- {/* Temperature */}
-
-
- 🌡️ 수온 • 공기
-
-
- {Number(weatherData.temperature.current).toFixed(1)}
- °C
- 체감온도
-
-
-
-
- {/* Hourly Forecast */}
-
-
- ⏰ 시간별 예보
-
-
- {weatherData.forecast.map((forecast, index) => (
-
-
{forecast.hour}
-
{forecast.icon}
-
- {forecast.temperature}°
-
-
- 🌬️
- {forecast.windSpeed}
-
+ {/* ── 시간별 예보 ── */}
+
+
⏰ 시간별 예보
+
+ {weatherData.forecast.map((f, i) => (
+
+ {f.hour}
+ {f.icon}
+ {f.temperature}°
+ {f.windSpeed}
))}
- {/* Sun and Moon */}
-
-
-
☀️ 천문 • 조석
+ {/* ── 천문/조석 ── */}
+
+
☀️ 천문 · 조석
+
+ {[
+ { icon: '🌅', label: '일출', value: sunriseTime },
+ { icon: '🌄', label: '일몰', value: sunsetTime },
+ { icon: '🌙', label: '월출', value: moonrise },
+ { icon: '🌜', label: '월몰', value: moonset },
+ ].map((item, i) => (
+
+
{item.icon}
+
{item.label}
+
{item.value}
+
+ ))}
-
-
-
-
🌅
-
-
일출
-
- {sunriseTime}
- (8.6m)
-
-
-
-
-
🌄
-
-
일몰
-
- {sunsetTime}
-
-
-
-
-
+
+ 🌓
+ 상현달 14일
+ 조차 6.7m
+
+
-
-
-
🌙
-
-
월출
-
- {moonrise}
- (8.8m)
-
-
-
-
-
🌜
-
-
월몰
-
- {moonset}
- (1.8m)
-
-
-
-
-
-
-
🌓
-
-
달
-
- {moonPhase}
- 조차
- {moonVisibility}
-
-
+ {/* ── 날씨 특보 ── */}
+
- {/* Alert */}
-
-
- 🚨 날씨 특보
-
-
-
- 주의
- 풍랑주의보 예상 08:00~
-
-
-
)