✨ 리팩토링 할 부분
상위 이슈: #395
선행 이슈: #396, #399, #397
UserCommandService / InterestCommandService가
User Account 책임과 Personalization Profile 생성 트리거를 함께 다루는 현재 결합을
후속 분리 가능한 seam으로 정리한다.
🏷️ 도메인
📌 현재 코드의 문제점
- 온보딩 완료와 관심사 변경이 User Account 상태 변경이면서 동시에
PersonalizationProfileService 생성 트리거 역할도 한다.
- 현재는
PersonalizationProfileService.generatePersonalizationProfile(...)를 서비스에서 직접 호출해 경계가 강하게 묶여 있다.
UserCommandService는 global/security의 UserAuthCacheService에도 의존해 User Account / Auth shared layer 경계가 서비스 내부에서 함께 보인다.
- roadmap 상 후속 이벤트 분리(
OnboardingCompleted, UserInterestsChanged)를 하기 전 단계 설명이 코드에 충분히 드러나지 않는다.
🎯 리팩토링 방향
- 아직 이벤트는 도입하지 않는다.
- 대신 User Account 내부 책임과 Personalization Profile 트리거를 서비스 책임/문서 기준으로 분리한다.
global/security는 별도 독립 컨텍스트가 아니라 User Account가 기대는 shared layer seam으로만 다룬다.
- 후속 이벤트 분리 시 어느 seam을 교체하면 되는지 코드와 테스트에서 드러나게 정리한다.
✅ 작업 체크리스트
💡 기대 효과
✨ 리팩토링 할 부분
상위 이슈: #395
선행 이슈: #396, #399, #397
UserCommandService/InterestCommandService가User Account 책임과 Personalization Profile 생성 트리거를 함께 다루는 현재 결합을
후속 분리 가능한 seam으로 정리한다.
🏷️ 도메인
📌 현재 코드의 문제점
PersonalizationProfileService생성 트리거 역할도 한다.PersonalizationProfileService.generatePersonalizationProfile(...)를 서비스에서 직접 호출해 경계가 강하게 묶여 있다.UserCommandService는global/security의UserAuthCacheService에도 의존해 User Account / Auth shared layer 경계가 서비스 내부에서 함께 보인다.OnboardingCompleted,UserInterestsChanged)를 하기 전 단계 설명이 코드에 충분히 드러나지 않는다.🎯 리팩토링 방향
global/security는 별도 독립 컨텍스트가 아니라 User Account가 기대는 shared layer seam으로만 다룬다.✅ 작업 체크리스트
completeOnboarding()책임 분해 포인트 명확화updateUserInterests()책임 분해 포인트 명확화UserAuthCacheServiceeviction seam의 범위와 책임 명시💡 기대 효과