## ✨ 리팩토링 할 부분 `domain/recommendation`에 남아 있는 Recommendation 컨텍스트를 최상위 `recommendation` 패키지로 승격하고 application/domain/infrastructure/presentation 경계를 정리한다. <br> ## 🏷️ 도메인 (해당하는 것에 체크) - [ ] 📝 domain:post (게시글) - [ ] 👤 domain:useraccount (사용자 계정) - [ ] 🧠 domain:personalization (개인화 프로필) - [ ] 🏢 domain:source (테크블로그 출처) - [ ] 🔍 domain:search (검색) - [ ] 🔔 domain:notification (알림) - [x] 📊 domain:recommendation (추천) - [ ] 🎯 domain:activity (사용자 활동) - [ ] 🔐 domain:auth (인증/보안) - [ ] 🌐 infra (인프라/배포) <br> ## 📌 현재 코드의 문제점 - Recommendation은 핵심 하위 도메인이지만 여전히 `com.techfork.domain.recommendation` 아래에 남아 있다. - controller/service/entity/repository 중심의 기존 패키지가 application/domain/infrastructure/presentation 책임을 명확히 드러내지 못한다. - 이후 `RecommendationSet` 도입과 후보 탐색/RRF/MMR 책임 분리를 먼저 진행하면 새로 추가한 클래스까지 다시 이동해야 한다. - `useraccount`, `personalization`, `post`, `activity`, `auth` 등 이미 정리된 최상위 컨텍스트와 물리적 경계 패턴이 다르다. <br> ## 🎯 리팩토링 방향 - `com.techfork.domain.recommendation`을 `com.techfork.recommendation` 최상위 컨텍스트로 이동한다. - 현재 책임을 다음 계층으로 재배치한다. - `application`: command/query service, 추천 생성 orchestration, listener, scheduler - `domain`: `RecommendedPost`, `RecommendationHistory`, MMR 정책 - `infrastructure`: repository, 외부 기술 연동 및 설정 - `presentation`: controller, converter, response DTO - 테스트 패키지와 전체 import를 새 경계에 맞게 동기화한다. - Spring bean 이름과 component scan, API endpoint/response shape, DB/Elasticsearch schema, 추천 생성 결과는 유지한다. - `RecommendationSet` 도입, 후보 탐색/RRF/MMR 책임 분리, `global` support 소유권 회수는 후속 이슈 범위로 유지한다. <br> ## 💡 기대 효과 - [x] 가독성 향상 - [ ] 성능 개선 - [x] 유지보수성 향상 - [ ] 코드 중복 제거 - [x] 기타: Recommendation 핵심 하위 도메인의 물리적 소유 경계 명확화 <br>
Activity
[refactor/#452] Recommendation 최상위 컨텍스트 패키지 승격 (#455)