Skip to content

[REFACTOR] User Account 서비스 책임과 Personalization/Auth shared 경계 정리 #398

@Dimo-2562

Description

@Dimo-2562

✨ 리팩토링 할 부분

상위 이슈: #395
선행 이슈: #396, #399, #397

UserCommandService / InterestCommandService
User Account 책임과 Personalization Profile 생성 트리거를 함께 다루는 현재 결합을
후속 분리 가능한 seam으로 정리한다.


🏷️ 도메인

  • 👤 domain:user
  • 🧠 domain:personalization
  • 🔐 domain:auth

📌 현재 코드의 문제점

  • 온보딩 완료와 관심사 변경이 User Account 상태 변경이면서 동시에 PersonalizationProfileService 생성 트리거 역할도 한다.
  • 현재는 PersonalizationProfileService.generatePersonalizationProfile(...)를 서비스에서 직접 호출해 경계가 강하게 묶여 있다.
  • UserCommandServiceglobal/securityUserAuthCacheService에도 의존해 User Account / Auth shared layer 경계가 서비스 내부에서 함께 보인다.
  • roadmap 상 후속 이벤트 분리(OnboardingCompleted, UserInterestsChanged)를 하기 전 단계 설명이 코드에 충분히 드러나지 않는다.

🎯 리팩토링 방향

  • 아직 이벤트는 도입하지 않는다.
  • 대신 User Account 내부 책임과 Personalization Profile 트리거를 서비스 책임/문서 기준으로 분리한다.
  • global/security는 별도 독립 컨텍스트가 아니라 User Account가 기대는 shared layer seam으로만 다룬다.
  • 후속 이벤트 분리 시 어느 seam을 교체하면 되는지 코드와 테스트에서 드러나게 정리한다.

✅ 작업 체크리스트

  • completeOnboarding() 책임 분해 포인트 명확화
  • updateUserInterests() 책임 분해 포인트 명확화
  • UserAuthCacheService eviction seam의 범위와 책임 명시
  • profile generation trigger 보호 테스트 보강
  • 문서/주석으로 후속 이벤트 분리 seam 명시

💡 기대 효과

  • 유지보수성 향상
  • 기타: User Account / Personalization / Auth shared 경계가 다음 단계에서 자연스럽게 분리될 수 있는 기반 확보

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions