Skip to content

[REFACTOR] 미션 승인/거절 로직 고도화 및 팩토리명 정리 - #137

Merged
goodjunseon merged 4 commits into
devfrom
refactor/136
Jan 20, 2026
Merged

[REFACTOR] 미션 승인/거절 로직 고도화 및 팩토리명 정리#137
goodjunseon merged 4 commits into
devfrom
refactor/136

Conversation

@goodjunseon

Copy link
Copy Markdown
Member

1. 한줄 요약 (What / Why)

  • What: 미션 승인/거절 로직에 기간 검증을 추가하고, 승인 시점이 시작일을 지났다면 상태를 즉시 진행중으로 전환하며 도메인 생성 메서드명을 표준화했습니다.
  • Why: 미션 종료 이후 승인으로 인한 상태 불일치와 승인 후 시작 지연을 방지하고, 도메인 팩토리 명명 일관성으로 코드 가독성을 높이기 위함입니다.

2. 리뷰 포인트 (최대 3개)

  1. 승인/거절 가능 여부 판단이 LocalDate.now() 기준이라 서버 타임존 및 기간 경계 처리에 문제가 없는지
  2. 승인 시 즉시 진행 상태 전환이 배치(findAllMissionsStartingToday)와 중복/충돌 없이 동작하는지
  3. 종료일 경과 시 LATE_MISSION_APPROVAL 예외 추가로 클라이언트/문서화에 누락된 영향은 없는지

3. 테스트 방법 (간단히)

  • ./gradlew test
  • POST /api/missions/{missionId}/approval (본인 수신자, { "accept": true } 시 종료일 이전이고 시작일 ≤ 오늘이면 즉시 진행중 전환, { "accept": false } 시 거절 처리 확인)

4) 리스크/주의사항 (있으면)

  • 서버 타임존 변경 시 승인 가능 기간 계산 오차 가능
  • 종료일 이후 요청이 새 예외 코드로 떨어지므로 클라이언트 예외 처리 점검 필요
  • 승인 즉시 진행 전환이 기존 스케줄러와 중복 처리되지 않는지 모니터링 필요

🔗 Relation Issue

- 미션 승인 시점/시작일 비교 후 즉시 진행중인 상태로 변경하는 로직 추가
- 미션 승인 시점/종료일 비교 후 진행 중인 상태로 변경되는 예외 처리 추가

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the mission approval/rejection logic by adding period validation to prevent approval after mission end dates, implementing immediate state transition to IN_PROGRESS when approval happens on or after the start date, and standardizing domain factory method naming from create to of.

Changes:

  • Added validation to prevent mission approval after end date with new LATE_MISSION_APPROVAL error code
  • Implemented immediate state transition to IN_PROGRESS during approval if start date has already passed
  • Renamed factory method from Mission.create() to Mission.of() for naming consistency

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
MissionController.java Updated API documentation to describe immediate IN_PROGRESS state transition behavior
Mission.java Renamed static factory method from create to of
MissionErrorCode.java Added LATE_MISSION_APPROVAL error code for expired mission approval attempts
MissionBatchService.java Clarified comment to specify that query targets APPROVAL_ACCEPTED status
MissionApprovalService.java Added validateNotExpired() check and logic for immediate state transition when start date ≤ today
CreateMissionService.java Updated factory method call from Mission.create() to Mission.of()
ApproveMissionUseCase.java Added interface comment for the decide method

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread oneco/src/main/java/com/oneco/backend/mission/presentation/MissionController.java Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@Gimini-3

Copy link
Copy Markdown
Collaborator

수고하셨습니다!

@goodjunseon
goodjunseon merged commit 5274918 into dev Jan 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] 미션 요청 수락 시, 진행일이 오늘일 경우 바로 미션 진행중 상태로 상태 변경하도록 수정

3 participants