[FE-11] 모바일 대기질 타입·좌표 필드·라벨 매핑
작업 내용 (설계 의도)
근거: design-fe-app.md — 대기질 응답 타입 + FacilityResponse 좌표(BE 역제안) + 등급→라벨 순수 매핑.
변경 사항
mobile/api/types.ts:AirQualityGrade유니온 +AirQualityResponse타입 추가(pm10/pm25/pm10Grade/pm25Grade/representativeGrade/stationName/measuredAt, null 허용) — BE 계약 1:1.FacilityResponse에lat: number,lng: number, 지역 필드(sidoCode,sidoName,sigunguCode,sigunguName) 추가 — BE 역제안 채택 전제(FacilityResponse에 좌표·지역 노출).
- 신규
mobile/lib/air-quality-format.ts— 등급→{ label, tokenKey }순수 매핑,isBadOrWorse(grade)(BAD/VERY_BAD true) 순수 함수. 색 미포함(컴포넌트가 useTheme로 해석).
의존
- 없음 (wave 1)
롤백
- 타입 추가만. BE 역제안 미채택(좌표 미노출) 시 좌표 필드를 optional로 두고 상세/예약이 좌표 없을 때 대기질 미조회로 폴백(설계 문서 2안).
다이어그램
클래스 의존
flowchart LR Types[types AirQualityResponse] --> Hook[useAirQuality 후행] Format[air-quality-format] --> Badge[AirQualityBadge 후행] Format --> Warn[AirQualityWarning 후행]
테스트 케이스
- 등급 매핑이 각 등급에 한글 라벨과 토큰키를 반환한다
- isBadOrWorse가 BAD·VERY_BAD에 true, GOOD·MODERATE·UNKNOWN에 false를 반환한다
- 알 수 없는 grade가 들어와도 UNKNOWN으로 폴백한다
- FacilityResponse 타입에 lat/lng·지역 필드가 포함된다(타입 컴파일 확인)