Skip to content

[이상혁] 프리코스 미션 제출합니다.#7

Open
pureliture wants to merge 34 commits intonext-step:mainfrom
pureliture:lsh1756
Open

[이상혁] 프리코스 미션 제출합니다.#7
pureliture wants to merge 34 commits intonext-step:mainfrom
pureliture:lsh1756

Conversation

@pureliture
Copy link

No description provided.

pureliture and others added 23 commits December 10, 2025 11:03
- Add CityCoordinateMapper for city to coordinate conversion
- Add WeatherSummarizer for generating weather summary
- Add OpenMeteoClient for external API integration
- Add WeatherFacade for orchestrating components
- Add WeatherController for exposing API endpoint
- Add common error handling and response structure
- Add README.md with feature list and strategy
- 도시명-좌표 매핑을 위한 CityCoordinateMapper 추가
- 날씨 요약 생성을 위한 WeatherSummarizer 추가
- 외부 API 연동용 OpenMeteoClient 추가
- 컴포넌트 조합을 위한 WeatherFacade 추가
- API 노출용 WeatherController 추가
- 공통 에러 처리 및 응답 구조 추가
- README.md에 기능 목록 및 구현 전략 문서화
- 패키지 구조를 재구성하여 `component`, `common`, `weather` 등으로 리팩토링
- `lombok` 라이브러리 의존성 추가 및 관련 어노테이션 적용
- 클래스 이름 및 테스트 클래스도 리팩토링에 맞게 업데이트
refactor: 패키지 구조 변경 및 롬복 의존성 추가
…e-by-jules

Revert "Implement weather lookup service API"
…489900308132

Implement Weather Lookup Service
- Move hardcoded city coordinates and weather codes to application.yml
- Create CityProperties and WeatherProperties for configuration binding
- Refactor CityCoordinateMapper and WeatherSummarizer to use properties
- Add feature-focused JavaDoc in Korean
- Update tests to verify property loading
- 하드코딩된 도시 좌표 및 날씨 코드를 application.yml로 이동
- 설정 바인딩을 위한 CityProperties 및 WeatherProperties 생성
- CityCoordinateMapper 및 WeatherSummarizer가 프로퍼티를 사용하도록 리팩토링
- 기능 정의 위주의 JavaDoc 추가 (한국어)
- 프로퍼티 로딩 검증을 위한 테스트 업데이트
…-add-javadoc-4032132527334309169

Externalize configuration and add JavaDoc
- 기존 Java 코드를 모두 Kotlin으로 변환
- application.yml에 있던 도시 및 날씨 코드 정보를 H2 데이터베이스로 이관
- Flyway를 사용하여 데이터베이스 스키마 및 초기 데이터 마이그레이션 적용
- 도시 정보에 국가 정보(Country) 추가 및 테이블 관계 설정
- Gradle 설정 수정 (Lombok 제거, H2/MySQL 의존성 추가, Gradle 8.5로 다운그레이드)
- 테스트 코드 변환 (JUnit 5, AssertJ 사용) 및 통합 테스트 환경 구성
…on-12354673897242376297

refactor: Java 코드를 Kotlin으로 변환 및 DB 마이그레이션
- `build.gradle.kts`에 `spring-boot-starter-reactor-netty` 의존성 추가
- `RestClientConfiguration`을 통해 Netty Loop 기반의 `RestClient` 전역 설정 추가
- `OpenMeteoClient`를 `RestTemplate`에서 `RestClient`로 마이그레이션
- 변경된 구현 검증을 위한 `OpenMeteoClientTest` 테스트 추가
- `build.gradle.kts`에 `spring-boot-starter-reactor-netty` 의존성 추가
- `RestClientConfiguration`을 통해 Netty Loop 기반의 `RestClient` 전역 설정 추가
- `OpenMeteoClient`를 `RestTemplate`에서 `RestClient` 빈을 주입받도록 마이그레이션
- 변경된 구현 검증을 위한 `OpenMeteoClientTest` 테스트 추가
…8066578026897287

refactor(infrastructure): outbound 요청을 위해 Netty 기반 RestClient로 전환
- 메서드별 불필요한 주석 제거로 코드 간결화
- `ConstraintViolationException` 핸들러 추가로 유효성 검사 예외 처리 개선
- DTO, 도메인 클래스의 기본 생성자 제거
- `@NotBlank` 애너테이션 추가로 입력값 유효성 검증 강화
- 코드 가독성 및 유지 보수성 향상
…code

refactor: README, guidelines 문서 업데이트 및 코드 리팩토링
- Add WeatherPageController to handle UI requests
- Add weather.html template using Bootstrap 5
- Integrate with existing WeatherService
- Add WebMvcTest for the new controller
…881106

Implement Simple Weather UI using Thymeleaf
@pureliture pureliture changed the title 과제 제출 과제 제출(이상혁/lsh1756) Dec 14, 2025
@pureliture pureliture changed the title 과제 제출(이상혁/lsh1756) [이상혁] 프리코스 미션 제출합니다. Dec 14, 2025
google-labs-jules bot and others added 5 commits December 15, 2025 00:50
- RestClientProperties 추가: 타임아웃 및 재시도 설정 바인딩
- RetryInterceptor 구현: 네트워크 오류(IOException) 시 재시도 로직 적용
- RestClientConfiguration 수정:
  - HttpClient에 타임아웃 설정 적용
  - RestClient에 재시도 인터셉터 등록
- application.yml 기본 설정 추가
- README.md 기능 목록 및 구현 상세 업데이트
…-1737343418767739749

RestClient 회복탄력성 기능 추가 (Timeout, Retry)
- 모든 Kotlin 소스 코드(.kt)를 Java(.java)로 변환
- Java 21 Record를 활용하여 DTO 및 Value Object 구현
- JPA Entity 및 Repository를 Java로 변환
- build.gradle.kts에서 Kotlin 플러그인 제거 및 Java 설정 추가
- JUnit 5 및 AssertJ를 사용한 테스트 코드 변환
- 코드 스타일 가이드(indent 2, max lines 15, no else/switch) 준수
- main 브랜치의 RestClient Resilience (Timeout, Retry) 기능을 Java로 변환하여 적용
- RestClientConfiguration, RestClientProperties, RetryInterceptor를 Java로 구현
- RetryInterceptorTest를 Java로 변환
- application.yml 업데이트
pureliture and others added 6 commits December 15, 2025 11:02
…va-13955598188319680154

# Conflicts:
#	src/main/kotlin/sunshine/infrastructure/configuration/RestClientConfiguration.kt
#	src/main/resources/application.yml
…98188319680154

refactor: Kotlin 코드베이스를 Java 21로 전체 변환
…r domain

- common: infrastructure 추상화 예외(DatabaseException, RestApiException, LlmException) 및 핸들러 정의
- infrastructure: 목적지 기반 패키지 재구성 및 OpenMeteoClient 인터페이스 추출
- domain: Weather 도메인 모델 및 WeatherReader 인터페이스(Port) 정의로 DIP 적용
- infrastructure: OpenMeteoWeatherReader(Adapter) 구현
- weather: WeatherService가 구체 클래스 대신 WeatherReader 인터페이스에 의존하도록 변경
- weather: Weather 도메인 모델에 humidity, apparentTemperature 필드 추가 및 UI 반영
- 예외 관련 클래스와 패키지 구조를 재조정: common.exception.model 및 common.exception.aspect로 이동
- RestClient 도입 및 OpenMeteo API 호출 클라이언트 단순화
- OpenMeteoClient 인터페이스 및 관련 구성 요소 제거
- CityRepository 메서드 Optional 반환으로 수정
- 테스트 코드와 import 경로를 변경된 구조에 맞게 수정
- 중복된 기능 제거 및 코드 정리
…구조 개선

SystemException 클래스를 추가하여 공통 예외 처리를 위한 기반 클래스를 도입했으며, InfrastructureException이 SystemException을 상속받도록 계층 구조를 리팩토링했습니다.
…ecture-17063010789371085660

Refactor infrastructure and apply DIP to Weather domain
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.

1 participant