[FE-12] 모바일 대기질 조회 API + useAirQuality 훅
작업 내용 (설계 의도)
근거: design-fe-app.md FR-12/13 — 대기질 조회(BE 경유, TanStack Query). 외부 API 직접 호출 금지.
변경 사항
- 신규
mobile/api/air-quality.ts—getAirQuality(lat, lng)→getBeClient().get<AirQualityResponse>('/air-quality', { params: { lat, lng } }). 기존 axios be-client 패턴. - 신규
mobile/lib/useAirQuality.ts—useQuery(['air-quality', lat, lng], () => getAirQuality(lat,lng), { enabled: lat!=null && lng!=null }). staleTime 상속. BE가 실패 시 200+UNKNOWN 반환 → 쿼리는 success, 폴백 판단은 컴포넌트.
의존
- FE-11 (AirQualityResponse 타입)
다이어그램
처리 흐름
sequenceDiagram participant H as useAirQuality participant A as api/air-quality participant B as BE /air-quality H->>A: getAirQuality(lat,lng) A->>B: GET /air-quality B-->>A: 200 (값 or UNKNOWN) A-->>H: AirQualityResponse
테스트 케이스
- 좌표가 주어지면 훅이 대기질 데이터를 반환한다
- 좌표가 null이면 enabled=false로 조회하지 않는다
- API 실패 시 훅이 에러 상태를 노출한다
- BE UNKNOWN 응답을 success 데이터로 담는다(폴백은 컴포넌트 판단)