@@ -47,7 +47,7 @@ DDD 목표 지도 작성
4747 - 예: ` ScrabPost ` , ` scrap_posts ` , ` Bookmark `
4848 - 예: ` searchWord ` , ` query ` , ` keyKeywords ` , ` PostKeyword `
4949 - 예: 계정 프로필과 개인화 프로필
50- - Search, Recommendation, Personalization Profile(` UserProfileService ` ) 쪽은 여러 컨텍스트와 외부 인프라가 얽혀 있어 리팩터링 위험이 크다.
50+ - Search, Recommendation, Personalization Profile(` PersonalizationProfileService ` ) 쪽은 여러 컨텍스트와 외부 인프라가 얽혀 있어 리팩터링 위험이 크다.
5151
5252따라서 안전한 전환 전략은 다음이다.
5353
@@ -265,14 +265,14 @@ PostKeyword
265265| 표준 용어 | 코드상 표현 | 의미 |
266266| ---| ---| ---|
267267| 계정 프로필 | ` User.nickName ` , ` description ` , ` profileImage ` | 사용자에게 보이는 기본 프로필 |
268- | 개인화 프로필 | ` UserProfileDocument .profileText` , ` profileVector ` | 검색/추천에 쓰이는 활동 기반 LLM/임베딩 프로필 |
268+ | 개인화 프로필 | ` PersonalizationProfileDocument .profileText` , ` profileVector ` | 검색/추천에 쓰이는 활동 기반 LLM/임베딩 프로필 |
269269
270270권장 순서:
271271
272272``` text
2732731. 문서/API 설명에서 `User Account`와 `Personalization Profile` 경계를 고정
274- 2. UserProfileService 테스트 작성
275- 3. UserProfileDocument의 역할을 Personalization Profile projection으로 명확히 함
274+ 2. PersonalizationProfileService 테스트 작성
275+ 3. PersonalizationProfileDocument의 역할을 Personalization Profile projection으로 명확히 함
2762764. 필요하면 패키지/이벤트/포트 분리를 후속 단계에서 진행
277277```
278278
@@ -458,14 +458,14 @@ InterestCommandServiceTest
458458
459459``` text
460460Personalization Profile
461- - UserProfileDocument (개인화 검색/추천용 read model projection)
462- - UserProfileService (Personalization Profile 생성 서비스로 위치 재정의)
461+ - PersonalizationProfileDocument (개인화 검색/추천용 read model projection)
462+ - PersonalizationProfileService (Personalization Profile 생성 서비스로 위치 재정의)
463463```
464464
465465##### 먼저 작성할 테스트
466466
467467``` text
468- UserProfileServiceTest
468+ PersonalizationProfileServiceTest
469469- 관심사, 읽은 게시글, 북마크, 검색 기록을 모아 활동 데이터를 구성한다.
470470- LLM 응답에서 프로필 텍스트와 핵심 키워드를 파싱한다.
471471- 파싱 실패 시 fallback 정책을 따른다.
@@ -479,7 +479,7 @@ UserProfileServiceTest
479479현재 Personalization Profile 생성 서비스 의존:
480480
481481``` text
482- UserProfileService
482+ PersonalizationProfileService
483483- User 관심사
484484- ReadPost
485485- Bookmark
@@ -492,8 +492,8 @@ UserProfileService
492492
493493정리 방향:
494494
495- - ` UserProfileDocument ` 를 Personalization Profile projection으로 명확히 한다.
496- - ` UserProfileService ` 를 User Account 서비스가 아닌 Personalization Profile 생성 서비스로 위치를 재정의한다.
495+ - ` PersonalizationProfileDocument ` 를 Personalization Profile projection으로 명확히 한다.
496+ - ` PersonalizationProfileService ` 를 User Account 서비스가 아닌 Personalization Profile 생성 서비스로 위치를 재정의한다.
497497- 관심사 변경/온보딩 완료는 장기적으로 ` UserInterestsChanged ` , ` OnboardingCompleted ` 이벤트로 분리한다.
498498
499499분리 후보 (점진적으로 적용):
@@ -514,7 +514,7 @@ PersonalizedProfileRepository
514514##### 왜 네 번째인가
515515
516516- 복잡도가 높다.
517- - Elasticsearch, Personalization Profile(` UserProfileDocument ` ), Activity, Post에 모두 의존한다.
517+ - Elasticsearch, Personalization Profile(` PersonalizationProfileDocument ` ), Activity, Post에 모두 의존한다.
518518- 테스트 없이 건드리면 위험하다.
519519
520520##### 목표 모델
@@ -587,7 +587,7 @@ SearchServiceImplTest
587587
588588- Elasticsearch 호출을 adapter로 감싸기
589589- ` PostDocument ` 를 검색 read model로 명시
590- - ` UserProfileDocument ` 를 Personalization Profile read model로 명시
590+ - ` PersonalizationProfileDocument ` 를 Personalization Profile read model로 명시
591591- Activity의 북마크 여부 조회를 query composition으로 유지하되 포트 도입 검토
592592
593593---
@@ -651,7 +651,7 @@ src/test/java/com/techfork/domain
651651 user
652652 UserTest
653653 InterestCommandServiceTest
654- UserProfileServiceTest
654+ PersonalizationProfileServiceTest
655655
656656 recommendation
657657 MmrServiceTest
@@ -686,7 +686,7 @@ src/test/java/com/techfork/domain
686686
687687``` text
688688[ ] P0 테스트가 모두 존재하고 ./gradlew test -PexcludeIntegration 통과
689- [ ] UserProfileServiceTest로 Personalization Profile 생성 흐름 보호
689+ [ ] PersonalizationProfileServiceTest로 Personalization Profile 생성 흐름 보호
690690[ ] MmrServiceTest + LlmRecommendationServiceTest로 추천 생성 핵심 흐름 보호
691691[ ] SearchServiceImplTest로 일반/개인화 검색 회귀 보호
692692[ ] User Account aggregate 책임과 Personalization Profile 생성 책임이
@@ -737,7 +737,7 @@ TechnicalPostIndexed
7377374. Post 도메인 테스트 작성
7387385. Post를 “기술 게시글” 기준으로 정리
7397396. User 관심사/온보딩 테스트 작성
740- 7. UserProfileService 테스트 작성
740+ 7. PersonalizationProfileService 테스트 작성
7417418. Personalization Profile 책임 분리
7427429. Recommendation 테스트 작성
74374310. PersonalizedProfileGenerated 이벤트 도입
@@ -802,8 +802,8 @@ TechnicalPostIndexed
802802- 핵심 키워드 파싱
803803
804804리팩터링:
805- - UserProfileDocument를 Personalization Profile projection으로 명확히 함
806- - UserProfileService 책임 분리
805+ - PersonalizationProfileDocument를 Personalization Profile projection으로 명확히 함
806+ - PersonalizationProfileService 책임 분리
807807- PersonalizedProfileGenerated 이벤트 도입 준비
808808```
809809
@@ -866,19 +866,19 @@ TechnicalPostIndexed
866866
867867``` text
868868목표:
869- - UserProfileService를 Personalization Profile 생성 서비스로 테스트로 고정한다.
869+ - PersonalizationProfileService를 Personalization Profile 생성 서비스로 테스트로 고정한다.
870870
871871선행 테스트:
872872- 관심사, 읽은 게시글, 북마크, 검색 기록을 활동 데이터로 수집한다.
873873- LLM 응답에서 profileText와 keyKeywords를 파싱한다.
874874- 파싱 실패 시 fallback 정책을 따른다.
875- - profileText를 임베딩하여 UserProfileDocument를 저장한다.
875+ - profileText를 임베딩하여 PersonalizationProfileDocument를 저장한다.
876876- 개인화 프로필 생성 후 추천 생성을 호출한다.
877877- 추천 생성 실패가 개인화 프로필 저장을 깨뜨리지 않는다.
878878
879879리팩터링:
880- - UserProfileDocument를 Personalization Profile projection으로 명확히 함
881- - UserProfileService 책임 분리 (PersonalizedProfileGenerated 이벤트 도입 준비)
880+ - PersonalizationProfileDocument를 Personalization Profile projection으로 명확히 함
881+ - PersonalizationProfileService 책임 분리 (PersonalizedProfileGenerated 이벤트 도입 준비)
882882```
883883
884884### 5.8 작업 단위 8: 1차 이벤트 도입
@@ -893,11 +893,11 @@ TechnicalPostIndexed
893893
894894도입 순서:
8958951. UserInterestsChanged
896- - InterestCommandService가 UserProfileService를 직접 호출하는 대신 이벤트 발행
896+ - InterestCommandService가 PersonalizationProfileService를 직접 호출하는 대신 이벤트 발행
897897 - 리스너: @TransactionalEventListener(AFTER_COMMIT) + @Async
898898
8998992. PersonalizedProfileGenerated
900- - UserProfileService가 LlmRecommendationService를 직접 호출하는 대신 이벤트 발행
900+ - PersonalizationProfileService가 LlmRecommendationService를 직접 호출하는 대신 이벤트 발행
901901 - 리스너: 추천 생성 트리거
902902
9039033. TechnicalPostIndexed
0 commit comments