✨ 개선할 기능
Recommendation 컨텍스트를 DDD 관점으로 점진 개선한다.
🏷️ 도메인 (해당하는 것에 체크)
📌 현재 상태 (AS-IS)
🎯 개선 방향 (TO-BE)
- 다른 컨텍스트처럼 application/domain/infrastructure 경계를 명확히 한다.
- 우선 테스트로 현재 동작을 고정한 뒤, 작은 리팩터링 이슈로 분리한다.
- API 응답과 DB schema는 1차 개선에서 유지한다.
- ID reference 전환, VO 도입, 이벤트 추가는 4.5 1차 완료 후 별도 이슈로 둔다.
💡 개선 이유
Recommendation은 Personalization, Activity, Post, Elasticsearch에 모두 의존하므로 테스트 없이 구조를 바꾸면 위험하다.
4.5 단계에서는 큰 재설계보다 안전망 → 경계 정리 → 도메인 개념 캡슐화 순서로 진행한다.
하위 이슈
| 순서 |
이슈 |
목적 |
| 1 |
#420 |
Recommendation DDD 리팩터링 전 회귀 테스트 보강 |
| 2 |
#421 |
Recommendation application 경계 정리 |
| 3 |
#452 |
Recommendation 최상위 컨텍스트 패키지 승격 |
| 4 |
#424 |
RecommendationHistory 클릭 기록 용어 정리 (#420에서 함께 완료) |
| 5 |
#456 |
Recommendation 조회 응답 매핑 경계 정리 |
| 6 |
#422 |
RecommendationSet 개념 1차 도입 |
| 7 |
#423 |
추천 후보 탐색/RRF/MMR 책임 분리 |
| 8 |
#425 |
Recommendation DDD 개선 문서 동기화 |
| 9 |
#453 |
Cross-context lookup 계약 고도화(2차) |
진행 원칙
- 테스트 안전망을 먼저 만든다.
- API 응답 shape와 DB schema는 1차 개선에서 유지한다.
- 이미 정리된 Activity/User Account/Personalization/Post 컨텍스트의 DDD 패턴을 따른다.
RecommendationSet 도입 전에 #456에서 application → presentation 역방향 의존을 제거한다.
ManyToOne -> ID reference와 cross-context ID/projection 계약 고도화는 1차 완료 후 #453에서 진행한다.
RankOrder VO와 Recommendation 이벤트 추가는 별도 후속 이슈로 분리한다.
✨ 개선할 기능
Recommendation 컨텍스트를 DDD 관점으로 점진 개선한다.
🏷️ 도메인 (해당하는 것에 체크)
📌 현재 상태 (AS-IS)
recommendation패키지 경계가 마련됐다.RecommendedPost,RecommendationHistory는recommendation.domain에 있지만RecommendationSet은 아직 도입되지 않았다.LlmRecommendationService는 여전히 Elasticsearch 후보 탐색, RRF 조립, MMR 호출, 이력화/저장을 함께 담당한다.MmrService는 후속 책임 분리를 위해recommendation.application.ranking에 임시 배치되어 있다.RecommendationQueryService가 presentation converter/response DTO를 참조하는 역방향 의존은 #456에서 정리한다.RecommendationHistory.markAsClicked()와 관련 테스트는 [TEST] Recommendation DDD 리팩터링 전 회귀 테스트 보강 #420 / PR #449에서 이미 반영되어 #424를 완료 처리했다.🎯 개선 방향 (TO-BE)
💡 개선 이유
Recommendation은 Personalization, Activity, Post, Elasticsearch에 모두 의존하므로 테스트 없이 구조를 바꾸면 위험하다.
4.5 단계에서는 큰 재설계보다 안전망 → 경계 정리 → 도메인 개념 캡슐화 순서로 진행한다.
하위 이슈
진행 원칙
RecommendationSet도입 전에 #456에서 application → presentation 역방향 의존을 제거한다.ManyToOne -> ID reference와 cross-context ID/projection 계약 고도화는 1차 완료 후 #453에서 진행한다.RankOrderVO와 Recommendation 이벤트 추가는 별도 후속 이슈로 분리한다.