Skip to content

Commit 13663a1

Browse files
committed
refactor: EventListener Apply #93
1 parent 5a8f23a commit 13663a1

4 files changed

Lines changed: 45 additions & 19 deletions

File tree

src/main/java/sopt/comfit/report/dto/request/MatchExperienceRequestDto.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,21 @@ public record MatchExperienceRequestDto(
1414
Long experienceId,
1515

1616
@NotBlank
17-
@Schema(example = "[직무 설명 (JD 원문)]\n" +
18-
"\n" +
19-
"CJ ENM 엔터테인먼트부문은\n" +
20-
"콘텐츠 기획 및 운영 전반을 담당할 인재를 모집합니다.\n" +
21-
"\n" +
22-
"주요 업무\n" +
23-
"- 콘텐츠 기획 및 운영 업무 지원\n" +
24-
"- 디지털 콘텐츠 성과 분석 및 인사이트 도출\n" +
25-
"- 유관 부서 및 외부 파트너와의 협업\n" +
26-
"\n" +
27-
"자격 요건\n" +
28-
"- 콘텐츠 및 엔터테인먼트 산업에 대한 관심\n" +
29-
"- 데이터 기반으로 문제를 분석하고 개선안을 도출한 경험\n" +
30-
"- 원활한 커뮤니케이션 및 협업 능력 \n" +
31-
"\n" +
32-
"우대 사항\n" +
33-
"- 디지털 콘텐츠 또는 마케팅 관련 프로젝트 경험\n" +
34-
"- 글로벌 콘텐츠 트렌드에 대한 이해")
17+
@Schema(example = """
18+
업무 내용
19+
고객센터의 각 채널 (Call Chat Mail App) 로 유입되는 고객 문의 운영 , 관리
20+
VOC , Inquiry 분석 및 개선
21+
신규사업, 마케팅, 이벤트 관련 고객 서비스 운영 지원
22+
자격 요건
23+
3년 이상의 유관업무 경력이 있는 분 또는 프로세스 수립/개선 업무 경험이 있는분
24+
유연한 사고와 원활한 커뮤니케이션 능력이 있는 분
25+
주말 스케줄 근무 가능하신 분 - 1~2개월마다 1회 주말 근무 (주말근무시 : 11:00~20:00(휴게포함)
26+
우대사항
27+
온라인 커머스 또는 배달서비스 비즈니스에 대한 이해도가 있으신 분
28+
고객 중심의 서비스 마인드 보유하신 분
29+
변화에 빠르게 적응 가능하신 분
30+
일본어 가능하신 분
31+
""")
3532
String jobDescription
3633
) {
3734
}

src/main/java/sopt/comfit/report/job/AIReportJobService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package sopt.comfit.report.job;
22

33
import lombok.RequiredArgsConstructor;
4+
import org.springframework.context.ApplicationEventPublisher;
45
import org.springframework.data.redis.core.StringRedisTemplate;
56
import org.springframework.stereotype.Service;
67
import org.springframework.transaction.annotation.Transactional;
@@ -17,6 +18,7 @@ public class AIReportJobService {
1718

1819
private final AIReportJobRepository reportJobRepository;
1920
private final StringRedisTemplate redisTemplate;
21+
private final ApplicationEventPublisher eventPublisher;
2022

2123
@Transactional
2224
public Long createJob(MatchExperienceCommandDto command) {
@@ -34,7 +36,7 @@ public Long createJob(MatchExperienceCommandDto command) {
3436

3537
reportJobRepository.save(job);
3638

37-
redisTemplate.opsForList().leftPush(Constants.JOB_QUEUE_KEY, String.valueOf(job.getId()));
39+
eventPublisher.publishEvent(new JobCreatedEvent(job.getId()));
3840

3941
return job.getId();
4042
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package sopt.comfit.report.job;
2+
3+
public record JobCreatedEvent(Long jobId) {
4+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package sopt.comfit.report.job;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.data.redis.core.StringRedisTemplate;
5+
import org.springframework.stereotype.Component;
6+
import org.springframework.transaction.event.TransactionPhase;
7+
import org.springframework.transaction.event.TransactionalEventListener;
8+
import sopt.comfit.global.constants.Constants;
9+
10+
@Component
11+
@RequiredArgsConstructor
12+
public class JobEventListener {
13+
14+
private final StringRedisTemplate stringRedisTemplate;
15+
16+
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
17+
public void handleJobCreated(JobCreatedEvent event) {
18+
stringRedisTemplate.opsForList().leftPush(
19+
Constants.JOB_QUEUE_KEY,
20+
String.valueOf(event.jobId())
21+
);
22+
}
23+
}

0 commit comments

Comments
 (0)