Skip to content

[REFACTOR] common: MissionCyclePolicy를 common으로 이동하여 날짜 계산 로직 통일 #166

@ryuwldnjs

Description

@ryuwldnjs

개요

미션 사이클(오전 6시 기준) 날짜 계산 로직이 3곳에서 중복 구현되어 있음.
MissionCyclePolicycommon 패키지로 이동하고 모든 도메인에서 통일된 구현체를 사용하도록 정리.

부모 이슈: #141


문제점

미션 사이클 날짜 보정 로직(오전 6시 기준 날짜 계산)이 3곳에 각자 구현되어 있음:

위치 메서드명
member/MemberService.getAdjustedDate() member 도메인 자체 구현
team/TeamActivityService.getMissionDate() team 도메인 자체 구현
recommendation/MissionCyclePolicy.getMissionCycleStart() 유일하게 클래스로 분리됨

동일한 정책 로직이 분산되어 있어, 기준 시각(오전 6시)이 변경될 경우 3곳을 모두 수정해야 함.


해결 방안

  1. recommendation/MissionCyclePolicycommon/ 패키지로 이동
  2. MemberService.getAdjustedDate() 제거 → MissionCyclePolicy 사용으로 교체
  3. TeamActivityService.getMissionDate() 제거 → MissionCyclePolicy 사용으로 교체

기대 효과

  • 미션 사이클 정책 변경 시 단일 지점 수정으로 대응 가능
  • 도메인별 중복 구현 제거

변경 파일

src/main/java/com/ryu/studyhelper/
│
├── common/
│   └── MissionCyclePolicy.java              ← 신규 (recommendation에서 이동, public)
│                                               + toMissionDate(LocalDateTime) 메서드 추가
│
├── recommendation/
│   └── service/
│       ├── MissionCyclePolicy.java           ← 삭제
│       ├── RecommendationService.java        ← import 추가
│       ├── RecommendationEmailService.java   ← import 추가
│       └── ScheduledRecommendationService.java ← import 추가
│
└── team/
    └── service/
        └── TeamActivityService.java          ← getMissionDate() 제거, MISSION_RESET_TIME 제거
                                                 MissionCyclePolicy.toMissionDate() 사용으로 교체

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions