Skip to content

Conversation

@doup2001
Copy link
Member

@doup2001 doup2001 commented Jan 9, 2026

📌 작업한 내용

  • 방 비교 API에 인프라(편의시설/교통 등) 기반 비교 파라미터를 추가하여, 사용자가 방을 비교할 때 주변 인프라 요소도 함께 고려할 수 있도록 기능을 확장함.
  • 방 비교 시 필요한 데이터를 효율적으로 조회하기 위해, Room/Comparison 관련 Repository에 커스텀 쿼리를 추가하여 다중 조건 기반 비교가 가능하도록 구현함.
  • 핀 포인트 목록 조회 시, 각 핀을 생성한 유저의 이름 필드를 응답에 추가하여, 핀 목록에서 작성자를 바로 식별할 수 있도록 개선함.[1]
  • 핀 포인트 단건/목록 응답 DTO를 정의·정리하고, 도메인 엔티티와 매핑하여 클라이언트가 일관된 구조의 핀 포인트 데이터를 받을 수 있도록 구성함.
  • 홈 화면 공고 목록 조회 API에 지역(location) 필드를 추가하고, 관련 DTO 및 매핑 로직을 구현하여, 클라이언트에서 공고를 지역 정보를 기반으로 노출/필터링할 수 있도록 지원함.
  • 방 비교 기능에서 DB 매핑 오류가 있던 부분을 수정하여, 잘못된 조인/필드 매핑으로 인한 비교 데이터 불일치 및 런타임 에러 발생 가능성을 제거함.

🔍 참고 사항

🖼️ 스크린샷

🔗 관련 이슈

✅ 체크리스트

  • 로컬에서 빌드 및 테스트 완료
  • 코드 리뷰 반영 완료
  • 문서화 필요 여부 확인 (API 스펙/Swagger 업데이트 필요)

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 홈 공지사항 목록에 지역 정보 추가
    • 실거래가 단지 비교 시 주변시설 매칭 순서 정렬 지원
    • 실거래가 단지 비교 시 핀포인트 거리 기반 정렬 지원
    • 핀포인트 목록 조회 시 사용자명 정보 포함
  • 개선

    • 공지사항 상세 조회 응답 구조 개선으로 전체 항목 수 제공
    • 단지 검색 정렬 옵션 확대 (면적, 주변환경, 거리 기준)

✏️ Tip: You can customize this high-level summary in your review settings.

@doup2001 doup2001 self-assigned this Jan 9, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 9, 2026

Caution

Review failed

The pull request is closed.

Walkthrough

PR는 홈 공지 응답 DTO를 도입하고, MongoDB 집계를 통한 단지 정렬 기능을 구현하며, 주변시설 기반 정렬을 추가하고, 핀포인트 응답을 래퍼 DTO로 변경합니다.

Changes

Cohort / File(s) 변경 요약
Home 모듈 - 공지 응답 DTO
src/main/java/com/pinHouse/server/platform/home/application/dto/HomeNoticeListResponse.java, src/main/java/com/pinHouse/server/platform/home/application/dto/HomeNoticeResponse.java
새로운 공지 응답 레코드 2개 추가: HomeNoticeListResponse(region, content, hasNext, totalElements), HomeNoticeResponse(id, thumbnailUrl, name 등 10개 필드 및 factory 메서드)
Home 모듈 - API 레이어
src/main/java/com/pinHouse/server/platform/home/application/service/HomeService.java, src/main/java/com/pinHouse/server/platform/home/application/usecase/HomeUseCase.java, src/main/java/com/pinHouse/server/platform/home/presentation/HomeApi.java, src/main/java/com/pinHouse/server/platform/home/presentation/swagger/HomeApiSpec.java
getDeadlineApproachingNotices 반환 타입을 SliceResponse에서 HomeNoticeListResponse로 변경, DTO 매핑 업데이트
Complex 모듈 - 정렬 기능 추가
src/main/java/com/pinHouse/server/platform/housing/complex/application/service/ComplexService.java, src/main/java/com/pinHouse/server/platform/housing/complex/application/usecase/ComplexUseCase.java
loadSortedComplexes(noticeId, sortType) 메서드 추가로 정렬된 단지 목록 조회
Complex 모듈 - MongoDB 저장소
src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/ComplexDocumentRepository.java, src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/CustomComplexDocumentRepository.java, src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/CustomComplexDocumentRepositoryImpl.java
CustomComplexDocumentRepository 인터페이스 및 구현체 추가, MongoDB 집계 파이프라인을 통한 정렬된 단지 조회 (파이프라인: 필터 → unwind → 정렬 → 그룹화 → 프로젝션)
Notice 모듈 - 정렬 옵션 확장
src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/UnitTypeSortType.java, src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/UnitTypeCompareResponse.java
UnitTypeSortType에 FACILITY_MATCH, DISTANCE_ASC 상수 추가 및 라벨 변경, nearbyFacilities 필드 설명 업데이트
Notice 모듈 - 비교 로직 개선
src/main/java/com/pinHouse/server/platform/housing/notice/application/service/NoticeService.java
compareUnitTypes에 nearbyFacilities 파라미터 추가, 주변시설 매칭 정렬(sortByFacilityMatch) 및 거리 정렬(sortByDistance) 로직 추가, DB/애플리케이션 2단계 정렬 구현
Notice 모듈 - 공지 API
src/main/java/com/pinHouse/server/platform/housing/notice/application/usecase/NoticeUseCase.java, src/main/java/com/pinHouse/server/platform/housing/notice/presentation/NoticeApi.java, src/main/java/com/pinHouse/server/platform/housing/notice/presentation/swagger/NoticeApiSpec.java
compareUnitTypes 메서드 시그니처에 nearbyFacilities 파라미터 추가, 엔드포인트 및 문서화 업데이트
PinPoint 모듈 - 응답 래퍼
src/main/java/com/pinHouse/server/platform/pinPoint/application/dto/PinPointListResponse.java
새로운 레코드 추가: PinPointListResponse(userName, pinPoints) 및 factory 메서드
PinPoint 모듈 - API 레이어
src/main/java/com/pinHouse/server/platform/pinPoint/application/service/PinPointService.java, src/main/java/com/pinHouse/server/platform/pinPoint/application/usecase/PinPointUseCase.java, src/main/java/com/pinHouse/server/platform/pinPoint/presentation/PinPointApi.java, src/main/java/com/pinHouse/server/platform/pinPoint/presentation/swagger/PinPointApiSpec.java
loadPinPoints 반환 타입을 List에서 PinPointListResponse로 변경

Sequence Diagram(s)

sequenceDiagram
    actor Client
    participant NoticeApi
    participant NoticeService
    participant ComplexService
    participant ComplexRepository
    participant MongoDB

    Client->>NoticeApi: compareUnitTypes(noticeId, pinPointId, sortType, nearbyFacilities)
    NoticeApi->>NoticeService: compareUnitTypes(...)
    
    alt sortType == FACILITY_MATCH
        NoticeService->>ComplexService: loadComplexes(noticeId)
        ComplexService->>ComplexRepository: findByNoticeId(noticeId)
        ComplexRepository->>MongoDB: query
        MongoDB-->>ComplexRepository: ComplexDocuments
        ComplexRepository-->>ComplexService: List<ComplexDocument>
        ComplexService-->>NoticeService: List<ComplexDocument>
        
        NoticeService->>NoticeService: sortByFacilityMatch(items, nearbyFacilities)
        Note over NoticeService: 시설 교집합 수로 정렬<br/>(예금, 면적, 지역, 단지명, 방타입 순)
    else sortType == DISTANCE_ASC
        NoticeService->>ComplexService: loadComplexes(noticeId)
        ComplexService->>ComplexRepository: findByNoticeId(noticeId)
        ComplexRepository->>MongoDB: query
        MongoDB-->>ComplexRepository: ComplexDocuments
        ComplexRepository-->>ComplexService: List<ComplexDocument>
        ComplexService-->>NoticeService: List<ComplexDocument>
        
        NoticeService->>NoticeService: sortByDistance(items)
        Note over NoticeService: 거리로 정렬<br/>(예금, 지역, 단지명, 방타입 순)
    else Other sortType
        NoticeService->>ComplexService: loadSortedComplexes(noticeId, sortType)
        ComplexService->>ComplexRepository: findSortedComplexesWithUnitTypes(noticeId, sortType)
        ComplexRepository->>MongoDB: aggregation pipeline
        Note over MongoDB: match → unwind → sort → group → project
        MongoDB-->>ComplexRepository: sorted ComplexDocuments
        ComplexRepository-->>ComplexService: List<ComplexDocument>
        ComplexService-->>NoticeService: List<ComplexDocument>
    end
    
    NoticeService->>NoticeService: buildComparisonItems(complexes)
    NoticeService-->>NoticeApi: UnitTypeCompareResponse
    NoticeApi-->>Client: ApiResponse<UnitTypeCompareResponse>
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 정렬의 마법, 주변시설 매칭
MongoDB 파이프라인으로 춤을 춘다
거리, 면적, 시설 모두 한곳에
홈 공지부터 핀포인트까지
새로운 구조로 우아하게 정렬되리!

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 236efc2 and b1a0325.

📒 Files selected for processing (22)
  • src/main/java/com/pinHouse/server/platform/home/application/dto/HomeNoticeListResponse.java
  • src/main/java/com/pinHouse/server/platform/home/application/dto/HomeNoticeResponse.java
  • src/main/java/com/pinHouse/server/platform/home/application/service/HomeService.java
  • src/main/java/com/pinHouse/server/platform/home/application/usecase/HomeUseCase.java
  • src/main/java/com/pinHouse/server/platform/home/presentation/HomeApi.java
  • src/main/java/com/pinHouse/server/platform/home/presentation/swagger/HomeApiSpec.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/service/ComplexService.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/application/usecase/ComplexUseCase.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/ComplexDocumentRepository.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/CustomComplexDocumentRepository.java
  • src/main/java/com/pinHouse/server/platform/housing/complex/domain/repository/CustomComplexDocumentRepositoryImpl.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/UnitTypeCompareResponse.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/application/dto/UnitTypeSortType.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/application/service/NoticeService.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/application/usecase/NoticeUseCase.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/presentation/NoticeApi.java
  • src/main/java/com/pinHouse/server/platform/housing/notice/presentation/swagger/NoticeApiSpec.java
  • src/main/java/com/pinHouse/server/platform/pinPoint/application/dto/PinPointListResponse.java
  • src/main/java/com/pinHouse/server/platform/pinPoint/application/service/PinPointService.java
  • src/main/java/com/pinHouse/server/platform/pinPoint/application/usecase/PinPointUseCase.java
  • src/main/java/com/pinHouse/server/platform/pinPoint/presentation/PinPointApi.java
  • src/main/java/com/pinHouse/server/platform/pinPoint/presentation/swagger/PinPointApiSpec.java

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@doup2001 doup2001 added 🐞 BugFix Something isn't working ✨ Feature 기능 개발 labels Jan 9, 2026
@github-actions
Copy link

github-actions bot commented Jan 9, 2026

Test Results

22 tests  ±0   22 ✅ ±0   0s ⏱️ ±0s
 3 suites ±0    0 💤 ±0 
 3 files   ±0    0 ❌ ±0 

Results for commit b1a0325. ± Comparison against base commit 236efc2.

@doup2001 doup2001 merged commit 9e52c0c into develop Jan 9, 2026
2 of 3 checks passed
@doup2001 doup2001 deleted the feat/홈-관련-기능-구현 branch January 9, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐞 BugFix Something isn't working ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants