From b093c63827e75a40c3d2d2eade5bce1552b0fc18 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 4 Sep 2025 20:55:26 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat=20(=20#43=20)=20:=20KafkaTopics?= =?UTF-8?q?=EC=97=90=20SUBMIT=5FAPPLICATION=5FFINAL=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/global/kafka/configuration/KafkaTopics.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaTopics.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaTopics.kt index 44fc1a2b..a954e5fc 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaTopics.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaTopics.kt @@ -31,4 +31,10 @@ object KafkaTopics { * 이 이벤트 수신 시 보상 트랜잭션으로 원서를 삭제함 */ const val USER_RECEIPT_CODE_UPDATE_FAILED = "user-receipt-code-update-failed" + + /** + * 최종 제출 이벤트 토픽 + * 최종 제출 시 성적 서비스에 성적 계산을 요청하기 위해 사용 + */ + const val SUBMIT_APPLICATION_FINAL = "submit-application-final" } From 46aa129eb11e046846e927d7ae84ee566041bf89 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 4 Sep 2025 20:55:46 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat=20(=20#43=20)=20:=20KafkaProducerConfi?= =?UTF-8?q?g=EC=97=90=20submitApplicationFinalTemplate=20=EB=B0=8F=20submi?= =?UTF-8?q?tApplicationFinalProducerFactory=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/KafkaProducerConfig.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaProducerConfig.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaProducerConfig.kt index f365723c..db065097 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaProducerConfig.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/configuration/KafkaProducerConfig.kt @@ -41,6 +41,26 @@ class KafkaProducerConfig( return DefaultKafkaProducerFactory(producerConfig()) } + /** + * 최종 제출 이벤트 발행을 위한 KafkaTemplate을 생성합니다. + * + * @return 설정된 KafkaTemplate 인스턴스 + */ + @Bean + fun submitApplicationFinalTemplate(): KafkaTemplate { + return KafkaTemplate(submitApplicationFinalProducerFactory()) + } + + /** + * 최종 제출 이벤트용 Producer Factory를 생성합니다. + * + * @return 설정된 DefaultKafkaProducerFactory 인스턴스 + */ + @Bean + fun submitApplicationFinalProducerFactory(): DefaultKafkaProducerFactory { + return DefaultKafkaProducerFactory(producerConfig()) + } + /** * Kafka Producer의 기본 설정을 구성합니다. * From b532cc07732341def4646788caaa8c6067e3b519 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 4 Sep 2025 20:56:05 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat=20(=20#43=20)=20:=20ApplicationCreateE?= =?UTF-8?q?ventContract=EC=97=90=20submitApplicationFinal=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/interfaces/ApplicationCreateEventContract.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/domain/application/interfaces/ApplicationCreateEventContract.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/domain/application/interfaces/ApplicationCreateEventContract.kt index 55577bfe..183aaa24 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/domain/application/interfaces/ApplicationCreateEventContract.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/domain/application/interfaces/ApplicationCreateEventContract.kt @@ -4,4 +4,5 @@ import java.util.UUID interface ApplicationCreateEventContract { fun publishCreateApplication(receiptCode: Long, userId: UUID) + fun submitApplicationFinal(receiptCode: Long) } \ No newline at end of file From ff64a956eac2672cd60cdfcf7583fe2ccb40bcfd Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 4 Sep 2025 20:56:18 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat=20(=20#43=20)=20:=20ApplicationEventPr?= =?UTF-8?q?oducer=EC=97=90=20submitApplicationFinal=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../producer/ApplicationEventProducer.kt | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/producer/ApplicationEventProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/producer/ApplicationEventProducer.kt index 40ecd8f9..11f5c23e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/producer/ApplicationEventProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/producer/ApplicationEventProducer.kt @@ -20,8 +20,9 @@ import java.util.UUID @Component class ApplicationEventProducer( private val mapper: ObjectMapper, - private val createApplicationTemplate: KafkaTemplate -): ApplicationCreateEventContract { + private val createApplicationTemplate: KafkaTemplate, + private val submitApplicationFinalTemplate: KafkaTemplate, +) : ApplicationCreateEventContract { /** * 원서 생성 이벤트를 발행합니다. @@ -39,4 +40,19 @@ class ApplicationEventProducer( mapper.writeValueAsString(createApplicationEvent) ) } + + /** + * 최종 제출 이벤트를 발행합니다. + * + * 원서가 성공적으로 최종 제출된 후 성적 서비스에서 해당 원서의 성적을 + * 계산하도록 이벤트를 발행합니다. + * + * @param receiptCode 최종 제출한 원서의 접수번호 + */ + override fun submitApplicationFinal(receiptCode: Long) { + submitApplicationFinalTemplate.send( + KafkaTopics.SUBMIT_APPLICATION_FINAL, + receiptCode + ) + } }