Skip to content

Commit e172b89

Browse files
authored
feat: 사용하지 않는 지원 조회 경로 제거 (#566)
* Guard recruit-scoped application flow against legacy lookup The expanded recruitment flow relies on recruitId to identify one application among multiple active notices, so the old member/jobFamily-only lookup path is removed and missing recruitId calls are logged at the apply API boundary. Constraint: Existing public apply URLs remain unchanged while recruitId is required as a query parameter Rejected: Keep unused member-only active recruit repository methods | they allow ambiguous single-application lookup when multiple notices are active Rejected: Put apply-specific logging in GlobalExceptionHandler | common exception handling should not know apply API paths Confidence: high Scope-risk: narrow Tested: ./gradlew test --tests org.ject.support.domain.apply.controller.LegacyApplyApiExceptionHandlerTest --tests org.ject.support.domain.apply.controller.ApplyControllerTest --tests org.ject.support.domain.apply.service.ApplyServiceTest -x jacocoTestCoverageVerification --rerun-tasks Tested: ./gradlew test --tests org.ject.support.domain.recruit.service.RecruitUpdatedEventHandlerTest --tests org.ject.support.domain.recruit.service.RecruitFlagServiceTest --tests org.ject.support.domain.recruit.service.AccessPeriodVerifierTest -x jacocoTestCoverageVerification --rerun-tasks Not-tested: QuestionControllerTest requires Redis Testcontainers/Docker and fails locally during DockerClientProviderStrategy initialization Related: #565 * Drop unsupported legacy apply logging Frontend and server will release together, and there are no app clients that need a compatibility window. Missing recruitId requests should remain ordinary required-parameter failures instead of getting a dedicated legacy observation path. Constraint: No separate legacy client rollout is required Rejected: Keep deprecation logging for missing recruitId | adds code for a compatibility scenario the product does not need Confidence: high Scope-risk: narrow Tested: ./gradlew test --tests org.ject.support.domain.apply.controller.ApplyControllerTest --tests org.ject.support.domain.apply.service.ApplyServiceTest --tests org.ject.support.domain.recruit.service.RecruitUpdatedEventHandlerTest --tests org.ject.support.domain.recruit.service.RecruitFlagServiceTest --tests org.ject.support.domain.recruit.service.AccessPeriodVerifierTest -x jacocoTestCoverageVerification --rerun-tasks Related: #565
1 parent 31d55f9 commit e172b89

6 files changed

Lines changed: 1 addition & 60 deletions

File tree

src/main/java/org/ject/support/domain/apply/repository/ApplyRepository.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,11 @@
1313

1414
public interface ApplyRepository extends JpaRepository<Apply, Long> {
1515

16-
boolean existsByMemberId(Long memberId);
17-
18-
@Query("select a from Apply a where a.member.id = :memberId")
19-
Optional<Apply> findByMemberId(Long memberId);
20-
21-
@Query("select a from Apply a join a.recruit r where a.member.id = :memberId and r.startDate <= :now and r.endDate >= :now")
22-
Optional<Apply> findByMemberIdInActiveRecruit(@Param("memberId") Long memberId, @Param("now") LocalDateTime now);
23-
2416
@Query("select a from Apply a join a.recruit r where a.member.id = :memberId and r.id = :recruitId and r.startDate <= :now and r.endDate >= :now")
2517
Optional<Apply> findByMemberIdAndRecruitIdInActiveRecruit(@Param("memberId") Long memberId,
2618
@Param("recruitId") Long recruitId,
2719
@Param("now") LocalDateTime now);
2820

29-
@Query("select count(a) > 0 from Apply a join a.recruit r where a.member.id = :memberId and r.startDate <= :now and r.endDate >= :now")
30-
boolean existsByMemberIdInActiveRecruit(@Param("memberId") Long memberId, @Param("now") LocalDateTime now);
31-
3221
@Query("""
3322
select exists (
3423
select 1 from Apply a join a.recruit r

src/main/java/org/ject/support/domain/recruit/repository/RecruitQueryRepository.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/main/java/org/ject/support/domain/recruit/repository/RecruitQueryRepositoryImpl.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/main/java/org/ject/support/domain/recruit/repository/RecruitRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.time.LocalDateTime;
1010
import java.util.List;
1111

12-
public interface RecruitRepository extends JpaRepository<Recruit, Long>, RecruitQueryRepository {
12+
public interface RecruitRepository extends JpaRepository<Recruit, Long> {
1313
@Query("SELECT r FROM Recruit r LEFT JOIN FETCH r.questions "
1414
+ "WHERE r.startDate <= :now AND r.endDate >= :now")
1515
List<Recruit> findActiveRecruits(@Param("now") LocalDateTime now);

src/main/java/org/ject/support/domain/recruit/service/RecruitCanceledEventHandler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.ject.support.domain.recruit.service;
22

33
import lombok.RequiredArgsConstructor;
4-
import org.springframework.cache.annotation.CacheEvict;
54
import org.ject.support.domain.recruit.dto.RecruitCanceledEvent;
65
import org.springframework.stereotype.Service;
76
import org.springframework.transaction.event.TransactionPhase;
@@ -16,7 +15,6 @@ public class RecruitCanceledEventHandler {
1615
/**
1716
* 모집 취소 시 호출됨
1817
*/
19-
@CacheEvict(value = "activeRecruit", key = "#event.jobFamily().name()")
2018
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
2119
public void handleRecruitCanceled(RecruitCanceledEvent event) {
2220
recruitFlagService.deleteRecruitFlag(event.recruitId(), event.jobFamily());

src/main/java/org/ject/support/domain/recruit/service/RecruitUpdatedEventHandler.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package org.ject.support.domain.recruit.service;
22

33
import lombok.RequiredArgsConstructor;
4-
import org.springframework.cache.annotation.CacheEvict;
5-
import org.springframework.cache.annotation.Caching;
64
import org.ject.support.domain.recruit.domain.Recruit;
75
import org.ject.support.domain.recruit.dto.RecruitUpdatedEvent;
86
import org.ject.support.domain.recruit.exception.RecruitErrorCode;
@@ -22,10 +20,6 @@ public class RecruitUpdatedEventHandler {
2220
/**
2321
* 모집 수정 시 호출됨
2422
*/
25-
@Caching(evict = {
26-
@CacheEvict(value = "activeRecruit", key = "#event.previousJobFamily().name()"),
27-
@CacheEvict(value = "activeRecruit", key = "#event.currentJobFamily().name()")
28-
})
2923
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
3024
public void handleRecruitUpdated(RecruitUpdatedEvent event) {
3125
// 기존 스케줄 작업 제거

0 commit comments

Comments
 (0)