o2o-site-AEO/solution/site/src/lib/use-live-weather.test.ts
김성경 cd771719df [fix] site,solution/backend: 날씨 상태 라벨을 코드별 고유값으로 — 구간 뭉치기 제거
WMO weather_code 51~57(이슬비 3단계), 61~67(비/어는비 혼재) 등을 "이슬비"·"비"
같은 큰 구간으로 뭉쳐 표시하던 것을 코드 하나당 고유 라벨로 바꿨다. 서버
프리렌더 스냅샷(site_payload._WEATHER_CONDITION_BY_CODE)과 브라우저 재조회
(use-live-weather.ts WEATHER_CONDITION_BY_CODE)가 같은 표를 봐야 하이드레이션
전후로 문구가 안 바뀐다는 기존 불변식은 유지한다.

- docs/WEATHER.md: 27개 코드 전체를 "구간→분류" 표에서 "코드→고유 라벨" 표로 재작성
- weather_notes.json: 코드별 문구 갱신
- use-live-weather.ts/.test.ts, weather.test.tsx: 새 라벨 반영
2026-09-22 08:36:09 +09:00

45 lines
1.1 KiB
TypeScript

import {expect, it} from 'vitest';
import {condition} from './use-live-weather';
const WEATHER_CODE_LABELS: Record<number, string> = {
0: '맑음',
1: '대체로 맑음',
2: '구름 조금',
3: '흐림',
45: '안개',
48: '착빙성 안개',
51: '가벼운 이슬비',
53: '보통 이슬비',
55: '강한 이슬비',
56: '가벼운 착빙성 이슬비',
57: '강한 착빙성 이슬비',
61: '약한 비',
63: '보통 비',
65: '강한 비',
66: '약한 착빙성 비',
67: '강한 착빙성 비',
71: '약한 눈',
73: '보통 눈',
75: '강한 눈',
77: '싸라기눈',
80: '약한 소나기',
81: '보통 소나기',
82: '강한 소나기',
85: '약한 소나기눈',
86: '강한 소나기눈',
95: '뇌우',
96: '약한 우박 뇌우',
99: '강한 우박 뇌우',
};
it('gives every WMO weather code its own label', () => {
for (const [code, label] of Object.entries(WEATHER_CODE_LABELS)) {
expect(condition(Number(code))).toBe(label);
}
});
it('falls back to overcast for unknown codes', () => {
expect(condition(4)).toBe('흐림');
expect(condition(-1)).toBe('흐림');
});