Skip to content

Conversation

@lovelyminari
Copy link

프리코스 과제 개발

도시 이름과 위도/경도를 매핑하는 City enum을 추가함
도시명을 소문자로 정규화하여 Map 캐시로 빠르게 조회할 수 있도록 구현함
Open-Meteo weather_code 값을 WeatherCondition enum으로 추상화함
enum 내부 Map을 사용해 코드 → 한글 설명 매핑을 구현함
외부 Open-Meteo 응답을 파싱하기 위한 OpenMeteoResponse DTO를 추가함
클라이언트에 반환할 WeatherResponse, 에러 응답용 ErrorResponse를 정의함
Open-Meteo API 호출을 위한 WebClient 설정을 추가함
위도와 경도를 받아 현재 날씨를 조회하는 OpenMeteoClient.getCurrentWeather를 구현함
외부 API 호출 실패 시 ExternalApiException으로 감싸서 던지도록 처리함
city 파라미터를 검증하고 City로 변환하는 로직을 추가함
OpenMeteoClient로 날씨를 조회하고 유효성을 확인함
조회된 데이터를 바탕으로 한 줄 요약 문장을 포함한 WeatherResponse를 생성함
GET /api/weather?city=도시명 형태의 REST API를 추가함
요청 파라미터를 WeatherService에 전달하고 WeatherResponse를 JSON으로 반환함
InvalidRequestException, UnsupportedCityException, ExternalApiException을 정의함
@RestControllerAdvice를 사용해 중앙집중식 예외 처리를 구현함
에러 발생 시 ErrorResponse 구조로 코드, 메시지, 타임스탬프, 요청 경로를 반환함
FakeOpenMeteoClient를 사용해 외부 API 의존성을 제거하고 서비스 로직만 검증함
정상 케이스에서 요약 문장이 기대한 형식으로 생성되는지 확인함
잘못된 city 입력과 미지원 도시 입력 시 예외가 발생하는지 테스트함
MockMvc와 @WebMvcTest를 사용해 /api/weather 엔드포인트를 검증함
정상 요청 시 200 응답과 WeatherResponse JSON 구조를 확인함
InvalidRequestException, UnsupportedCityException, ExternalApiException 발생 시
각각 400/400/502 상태 코드와 에러 코드가 기대값과 일치하는지 테스트함
프로젝트 개요, 아키텍처, API 명세, 예외 처리 전략을 README에 정리함
City/WeatherCondition enum을 활용한 자료구조 설계를 문서화함
AI 도구 활용 방식과 Lessons Learned 섹션을 추가해 개발 과정의 회고를 정리함
@lovelyminari lovelyminari changed the title 프리코스 과제 [지선미, 정미소] 실시간 날씨와 옷차림 추천 실습 결과물 제출합니다. Dec 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants