From 170167d2f097517067a533484bf75d389eaecb72 Mon Sep 17 00:00:00 2001 From: coehgns Date: Sat, 27 Dec 2025 23:00:07 +0900 Subject: [PATCH 01/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=ED=98=84?= =?UTF-8?q?=EC=9E=AC=20=EC=84=9C=EB=B9=84=EC=8A=A4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20app?= =?UTF-8?q?lication=20api=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/ChangePhotoUseCase.kt | 35 ------ .../usecase/UpdateApplicationTypeUseCase.kt | 34 ------ .../usecase/UpdateEducationalStatusUseCase.kt | 82 ------------- .../usecase/UpdateInformationUseCase.kt | 38 ------ .../usecase/UpdateIntroduceUseCase.kt | 27 ----- .../usecase/UpdateStudyPlanUseCase.kt | 27 ----- .../presentation/WebApplicationAdapter.kt | 114 ------------------ .../presentation/WebGraduationInfoAdapter.kt | 40 ------ .../UpdateGraduationInformationWebRequest.kt | 46 ------- .../presentation/dto/response/.gitkeep | 0 10 files changed, 443 deletions(-) delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/response/.gitkeep diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt deleted file mode 100644 index cbb752eb..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/ChangePhotoUseCase.kt +++ /dev/null @@ -1,35 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ChangeApplicationPhotoRequest -import hs.kr.entrydsm.application.domain.file.exception.FileExceptions -import hs.kr.entrydsm.application.domain.file.spi.CheckFilePort -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class ChangePhotoUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val checkFilePort: CheckFilePort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: ChangeApplicationPhotoRequest) { - if (!checkFilePort.existsPath(request.path)) { - throw FileExceptions.PathNotFound() - } - - val userId = securityPort.getCurrentUserId() - val application = - queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - photoPath = request.path, - ), - ) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt deleted file mode 100644 index 9e40183c..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateApplicationTypeUseCase.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateApplicationTypeRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateApplicationTypeUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateApplicationTypeRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - request.run { - commandApplicationPort.save( - application.copy( - applicationType = applicationType, - applicationRemark = applicationRemark, - isDaejeon = isDaejeon, - isOutOfHeadcount = isOutOfHeadcount, - veteransNumber = veteransNumber - ), - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt deleted file mode 100644 index 524d064d..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateEducationalStatusUseCase.kt +++ /dev/null @@ -1,82 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.model.Application -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryScorePort -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateEducationalStatusRequest -import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions -import hs.kr.entrydsm.application.domain.applicationCase.spi.CommandApplicationCasePort -import hs.kr.entrydsm.application.domain.applicationCase.spi.QueryApplicationCasePort -import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions -import hs.kr.entrydsm.application.domain.graduationInfo.spi.CommandGraduationInfoPort -import hs.kr.entrydsm.application.domain.graduationInfo.spi.QueryGraduationInfoPort -import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions -import hs.kr.entrydsm.application.domain.score.spi.CommandScorePort -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort -import org.springframework.transaction.support.TransactionSynchronization -import org.springframework.transaction.support.TransactionSynchronizationManager - -@UseCase -class UpdateEducationalStatusUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, - private val applicationEventPort: ApplicationEventPort, - private val commandApplicationCasePort: CommandApplicationCasePort, - private val queryApplicationCasePort: QueryApplicationCasePort, - private val queryGraduationInfoPort: QueryGraduationInfoPort, - private val commandGraduationInfoPort: CommandGraduationInfoPort -) { - fun execute(request: UpdateEducationalStatusRequest) { - val userId = securityPort.getCurrentUserId() - val application = - queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - if (isEducationalStatusChanged(application.educationalStatus, request.educationalStatus)) { - if (!isPermissibleStatusTransition(application.educationalStatus, request.educationalStatus)) { - deleteGraduationInfoAndApplicationCase(application) - } - } - - commandApplicationPort.save( - application.copy( - educationalStatus = request.educationalStatus, - ) - ) - - TransactionSynchronizationManager.registerSynchronization(object : TransactionSynchronization { - override fun afterCommit() { - applicationEventPort.updateEducationalStatus(application.receiptCode, request.graduateDate) - } - }) - } - - private fun isEducationalStatusChanged( - applicationStatus: EducationalStatus?, - requestStatus: EducationalStatus - ): Boolean { - applicationStatus ?: return false - return applicationStatus != requestStatus - } - - private fun isPermissibleStatusTransition(applicationStatus: EducationalStatus?, requestStatus: EducationalStatus): Boolean { - return (applicationStatus == EducationalStatus.PROSPECTIVE_GRADUATE && requestStatus == EducationalStatus.GRADUATE) || - (applicationStatus == EducationalStatus.GRADUATE && requestStatus == EducationalStatus.PROSPECTIVE_GRADUATE) - } - - private fun deleteGraduationInfoAndApplicationCase(application: Application) { - val applicationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) - ?: throw ApplicationCaseExceptions.ApplicationCaseNotFoundException() - commandApplicationCasePort.delete(applicationCase) - - val graduationInfo = queryGraduationInfoPort.queryGraduationInfoByApplication(application) - ?: throw GraduationInfoExceptions.GraduationNotFoundException() - commandGraduationInfoPort.delete(graduationInfo) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt deleted file mode 100644 index a09983ee..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateInformationUseCase.kt +++ /dev/null @@ -1,38 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateInformationRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateInformationUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateInformationRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - request.run { - commandApplicationPort.save( - application.copy( - sex = sex, - birthDate = birthDate, - applicantName = applicantName, - applicantTel = applicantTel, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - ), - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt deleted file mode 100644 index bea137f7..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateIntroduceUseCase.kt +++ /dev/null @@ -1,27 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateIntroduceRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateIntroduceUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateIntroduceRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - selfIntroduce = request.content, - ), - ) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt deleted file mode 100644 index 463a231e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/UpdateStudyPlanUseCase.kt +++ /dev/null @@ -1,27 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.UpdateStudyPlanRequest -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class UpdateStudyPlanUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val commandApplicationPort: CommandApplicationPort, -) { - fun execute(request: UpdateStudyPlanRequest) { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - commandApplicationPort.save( - application.copy( - studyPlan = request.content, - ), - ) - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index bf9b9fde..c8366b6e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,34 +1,18 @@ package hs.kr.entrydsm.application.domain.application.presentation -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.* import hs.kr.entrydsm.application.domain.application.usecase.* -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.* import hs.kr.entrydsm.application.domain.application.usecase.dto.response.* import hs.kr.entrydsm.application.domain.file.presentation.converter.ImageFileConverter import hs.kr.entrydsm.application.domain.file.presentation.dto.response.UploadImageWebResponse -import org.springframework.http.MediaType import org.springframework.web.bind.annotation.* import org.springframework.web.multipart.MultipartFile -import java.nio.charset.StandardCharsets -import javax.servlet.http.HttpServletResponse -import javax.validation.Valid @RestController @RequestMapping("/application") class WebApplicationAdapter( private val createApplicationUseCase: CreateApplicationUseCase, - private val getInformationUseCase: GetInformationUseCase, - private val getIntroduceUseCase: GetIntroduceUseCase, - private val getStudyPlanUseCase: GetStudyPlanUseCase, - private val updateApplicationTypeUseCase: UpdateApplicationTypeUseCase, - private val updateEducationalStatusUseCase: UpdateEducationalStatusUseCase, - private val updateInformationUseCase: UpdateInformationUseCase, - private val updateIntroduceUseCase: UpdateIntroduceUseCase, - private val updateStudyPlanUseCase: UpdateStudyPlanUseCase, private val uploadPhotoUseCase: UploadPhotoUseCase, - private val getApplicationTypeUseCase: GetApplicationTypeUseCase, private val getMyApplicationStatusUseCase: GetMyApplicationStatusUseCase, - private val introductionPdfUseCase: GetIntroductionPdfUseCase ) { @PostMapping fun createApplication() { @@ -44,107 +28,9 @@ class WebApplicationAdapter( ) } - @GetMapping - fun getInformation(): GetInformationResponse { - return getInformationUseCase.execute() - } - - @GetMapping("/intro") - fun getIntroduce(): GetIntroduceResponse { - return getIntroduceUseCase.execute() - } - - @GetMapping("/study-plan") - fun getStudyPlan(): GetStudyPlanResponse { - return getStudyPlanUseCase.execute() - } - - @PatchMapping("/type") - fun updateApplicationType( - @RequestBody @Valid request: UpdateApplicationTypeWebRequest, - ) { - updateApplicationTypeUseCase.execute( - request.run { - UpdateApplicationTypeRequest( - applicationType = applicationType, - applicationRemark = applicationRemark, - isDaejeon = isDaejeon, - isOutOfHeadcount = isOutOfHeadcount, - veteransNumber = veteransNumber - ) - }, - ) - } - - @GetMapping("/type") - fun getApplicationType(): GetApplicationTypeResponse = getApplicationTypeUseCase.execute() - - @PatchMapping("/graduation/type") - fun updateEducationalStatus( - @RequestBody @Valid request: UpdateEducationalStatusWebRequest, - ) { - updateEducationalStatusUseCase.execute( - request.run { - UpdateEducationalStatusRequest( - educationalStatus = educationalStatus, - graduateDate = graduateDate - ) - }, - ) - } - - @PatchMapping - fun updateInformation( - @RequestBody @Valid request: UpdateInformationWebRequest, - ) { - updateInformationUseCase.execute( - request.run { - UpdateInformationRequest( - sex = sex, - birthDate = birthDate, - applicantName = applicantName, - applicantTel = applicantTel, - parentTel = parentTel, - parentName = parentName, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - parentRelation = parentRelation - ) - }, - ) - } - - @PatchMapping("/intro") - fun updateIntroduce( - @RequestBody @Valid request: UpdateIntroduceWebRequest, - ) { - updateIntroduceUseCase.execute( - UpdateIntroduceRequest(request.content), - ) - } - - @PatchMapping("/study-plan") - fun updateStudyPlan( - @RequestBody @Valid request: UpdateStudyPlanWebRequest, - ) { - updateStudyPlanUseCase.execute( - UpdateStudyPlanRequest(request.content), - ) - } - // @PostMapping("/final-submit") // fun submitApplicationFinal() = submitApplicationFinalUseCase.execute() @GetMapping("/status") fun getMyApplicationStatus(): GetApplicationStatusResponse = getMyApplicationStatusUseCase.execute() - - @GetMapping("/pdf/introduction", produces = [MediaType.APPLICATION_PDF_VALUE]) - fun getIntroductionPdf(response: HttpServletResponse): ByteArray { - response.setHeader("Content-Disposition", "attachment; filename=\"${encodeFileName()}.pdf\"") - return introductionPdfUseCase.execute() - } - private fun encodeFileName(): String { - return String(WebApplicationPdfAdapter.FILE_NAME.toByteArray(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) - } } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt deleted file mode 100644 index b963d841..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/WebGraduationInfoAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package hs.kr.entrydsm.application.domain.graduationInfo.presentation - -import hs.kr.entrydsm.application.domain.graduationInfo.presentation.dto.request.UpdateGraduationInformationWebRequest -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.GetGraduationInformationUseCase -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.UpdateGraduationInformationUseCase -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PatchMapping -import org.springframework.web.bind.annotation.RequestBody -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController -import javax.validation.Valid - -@RestController -@RequestMapping("/application") -class WebGraduationInfoAdapter( - private val getGraduationInformationUseCase: GetGraduationInformationUseCase, - private val updateGraduationInformationUseCase: UpdateGraduationInformationUseCase, -) { - @GetMapping("/graduation") - fun getGraduationInformation() = getGraduationInformationUseCase.execute() - - @PatchMapping("/graduation") - fun updateGraduationInformation( - @RequestBody @Valid request: UpdateGraduationInformationWebRequest, - ) { - updateGraduationInformationUseCase.execute( - request.run { - UpdateGraduationInformationRequest( - gradeNumber = gradeNumber, - classNumber = classNumber, - studentNumber = studentNumber, - schoolCode = schoolCode, - teacherName = teacherName, - teacherTel = teacherTel - ) - }, - ) - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt deleted file mode 100644 index ea1b1aaf..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/request/UpdateGraduationInformationWebRequest.kt +++ /dev/null @@ -1,46 +0,0 @@ -package hs.kr.entrydsm.application.domain.graduationInfo.presentation.dto.request - -import org.hibernate.validator.constraints.Length -import javax.validation.constraints.NotBlank -import javax.validation.constraints.Pattern -import javax.validation.constraints.Size - -data class UpdateGraduationInformationWebRequest( - @Length( - max = 1, - message = "grade_number는 1자 이하여야 합니다.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "grade_number는 숫자여야합니다.", - ) - val gradeNumber: String, - @Length( - max = 2, - message = "class_number는 2자 이하여야 합니다.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "class_number는 숫자여야합니다.", - ) - val classNumber: String, - @Length( - max = 2, - message = "student_number는 2자 이하여야 합니다.", - ) @Pattern( - regexp = NUMERIC_REGEXP, - message = "student_number는 숫자여야합니다.", - ) - val studentNumber: String, - @NotBlank(message = "school_code는 Null, 공백, 띄어쓰기를 허용하지 않습니다.") - val schoolCode: String, - - @NotBlank(message = "teacher_name Null, 공백, 띄어쓰기를 허용하지 않습니다.",) - @Size(max = 4) - val teacherName: String, - - @NotBlank(message = "teacher_tel Null, 공백, 띄어쓰기를 허용하지 않습니다.") - val teacherTel: String -) { - companion object { - const val NUMERIC_REGEXP = "^\\d{1,5}" - } -} diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/response/.gitkeep b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/presentation/dto/response/.gitkeep deleted file mode 100644 index e69de29b..00000000 From 0cda217aef963b910b8e2131ba3ccdc7e9d17c83 Mon Sep 17 00:00:00 2001 From: coehgns Date: Sat, 27 Dec 2025 23:08:45 +0900 Subject: [PATCH 02/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=ED=98=84?= =?UTF-8?q?=EC=9E=AC=20=EC=84=9C=EB=B9=84=EC=8A=A4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20app?= =?UTF-8?q?lication=20api=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/GetApplicationTypeUseCase.kt | 34 -------------- .../usecase/GetInformationUseCase.kt | 38 ---------------- .../usecase/GetIntroduceUseCase.kt | 21 --------- .../usecase/GetStudyPlanUseCase.kt | 21 --------- .../usecase/SubmitApplicationFinalUseCase.kt | 45 ------------------- 5 files changed, 159 deletions(-) delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt deleted file mode 100644 index c3cb1dc5..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetApplicationTypeUseCase.kt +++ /dev/null @@ -1,34 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryGraduationInfoPort -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationTypeResponse -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetApplicationTypeUseCase( - private val queryApplicationPort: QueryApplicationPort, - private val securityPort: SecurityPort, - private val applicationQueryGraduationInfoPort: ApplicationQueryGraduationInfoPort -) { - fun execute(): GetApplicationTypeResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - val graduationInfo = applicationQueryGraduationInfoPort.queryGraduationInfoByApplication(application) - - return GetApplicationTypeResponse( - educationalStatus = application.educationalStatus, - applicationType = application.applicationType, - isDaejeon = application.isDaejeon, - applicationRemark = application.applicationRemark, - isOutOfHeadCount = application.isOutOfHeadcount, - graduatedDate = graduationInfo?.graduateDate, - veteransNumber = application.veteransNumber - ) - } -} \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt deleted file mode 100644 index 13faa1b4..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetInformationUseCase.kt +++ /dev/null @@ -1,38 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetInformationResponse -import hs.kr.entrydsm.application.domain.file.spi.GenerateFileUrlPort -import hs.kr.entrydsm.application.domain.file.usecase.`object`.PathList -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetInformationUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val generateFileUrlPort: GenerateFileUrlPort -) { - fun execute(): GetInformationResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return application.run { - GetInformationResponse( - sex = sex, - birthDate = birthDate, - photoPath = photoPath?.let { generateFileUrlPort.generateFileUrl(it, PathList.PHOTO) }, - applicantName = applicantName, - applicantTel = applicantTel, - parentName = parentName, - parentTel = parentTel, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - parentRelation = parentRelation - ) - } - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt deleted file mode 100644 index f07e3151..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetIntroduceUseCase.kt +++ /dev/null @@ -1,21 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetIntroduceResponse -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class GetIntroduceUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, -) { - fun execute(): GetIntroduceResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return GetIntroduceResponse(application.selfIntroduce) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt deleted file mode 100644 index 313b0c64..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/GetStudyPlanUseCase.kt +++ /dev/null @@ -1,21 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetStudyPlanResponse -import hs.kr.entrydsm.application.global.annotation.ReadOnlyUseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@ReadOnlyUseCase -class GetStudyPlanUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, -) { - fun execute(): GetStudyPlanResponse { - val userId = securityPort.getCurrentUserId() - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - - return GetStudyPlanResponse(application.studyPlan) - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt deleted file mode 100644 index dbff714e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationFinalUseCase.kt +++ /dev/null @@ -1,45 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase - -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.spi.* -import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions -import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions -import hs.kr.entrydsm.application.domain.status.exception.StatusExceptions -import hs.kr.entrydsm.application.global.annotation.UseCase -import hs.kr.entrydsm.application.global.security.spi.SecurityPort - -@UseCase -class SubmitApplicationFinalUseCase( - private val securityPort: SecurityPort, - private val queryApplicationPort: QueryApplicationPort, - private val applicationQueryUserPort: ApplicationQueryUserPort, - private val applicationQueryGraduationInfoPort: ApplicationQueryGraduationInfoPort, - private val applicationQueryStatusPort: ApplicationQueryStatusPort, - private val applicationQueryScorePort: ApplicationQueryScorePort, - private val applicationEventPort: ApplicationEventPort -) { - fun execute(){ - val userId = securityPort.getCurrentUserId() - - val application = queryApplicationPort.queryApplicationByUserId(userId) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - val graduationInfo = applicationQueryGraduationInfoPort.queryGraduationInfoByApplication(application) - ?: throw GraduationInfoExceptions.GraduationNotFoundException() - - val score = applicationQueryScorePort.queryScoreByReceiptCode(application.receiptCode) - - if(graduationInfo.hasEmptyInfo() || score == null || application.hasEmptyInfo()) { - throw ApplicationExceptions.ApplicationProcessNotComplete() - } - - val status = applicationQueryStatusPort.queryStatusByReceiptCode(application.receiptCode) - ?: throw StatusExceptions.StatusNotFoundException() - - if(status.isSubmitted) { - throw StatusExceptions.AlreadySubmittedException() - } - - applicationEventPort.submitApplicationFinal(application.receiptCode) - } -} \ No newline at end of file From 90d25de55efd8bcfdb01c8297767fd58369e47a1 Mon Sep 17 00:00:00 2001 From: coehgns Date: Sat, 27 Dec 2025 23:11:29 +0900 Subject: [PATCH 03/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=ED=98=84?= =?UTF-8?q?=EC=9E=AC=20=EC=84=9C=EB=B9=84=EC=8A=A4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20app?= =?UTF-8?q?lication=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/hooks/pre-push | 11 ----------- .../UpdateEducationalStatusEventRequest.kt | 5 ----- .../application/service/CheckTelService.kt | 19 ------------------- .../request/ChangeApplicationPhotoRequest.kt | 5 ----- .../request/UpdateApplicationTypeRequest.kt | 12 ------------ .../request/UpdateEducationalStatusRequest.kt | 9 --------- .../dto/request/UpdateInformationRequest.kt | 18 ------------------ .../dto/request/UpdateIntroduceRequest.kt | 5 ----- .../dto/request/UpdateStudyPlanRequest.kt | 5 ----- .../response/GetApplicationTypeResponse.kt | 17 ----------------- .../dto/response/GetInformationResponse.kt | 18 ------------------ .../dto/response/GetIntroduceResponse.kt | 5 ----- .../dto/response/GetStudyPlanResponse.kt | 5 ----- 13 files changed, 134 deletions(-) delete mode 100755 .github/hooks/pre-push delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt diff --git a/.github/hooks/pre-push b/.github/hooks/pre-push deleted file mode 100755 index 8308eb18..00000000 --- a/.github/hooks/pre-push +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# .git/hooks/pre-push - -echo "🔨 Gradle 빌드 검증 (push 전 실행)…" - -if ! ./gradlew clean build --no-daemon; then - echo "❌ 빌드 실패—푸시 중단" - exit 1 -fi - -echo "✅ 빌드 성공—푸시 진행" diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt deleted file mode 100644 index 6483ce1b..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/request/UpdateEducationalStatusEventRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.event.request - -data class UpdateEducationalStatusEventRequest( - val receiptCode: Long, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt deleted file mode 100644 index cd06f79e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/service/CheckTelService.kt +++ /dev/null @@ -1,19 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.service - -import hs.kr.entrydsm.application.domain.application.model.Application -import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort -import hs.kr.entrydsm.application.global.annotation.DomainService -import java.util.UUID - -@DomainService -class CheckTelService( - private val applicationQueryUserPort: ApplicationQueryUserPort, -) { - fun checkParentPutApplicantTel( - userId: UUID, - applicantTel: String, - ): String { - val user = applicationQueryUserPort.queryUserByUserId(userId) - return if (user.isParent) Application.DEFAULT_TEL else applicantTel - } -} diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt deleted file mode 100644 index bcdc7c65..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ChangeApplicationPhotoRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class ChangeApplicationPhotoRequest( - val path: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt deleted file mode 100644 index b681650e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateApplicationTypeRequest.kt +++ /dev/null @@ -1,12 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType - -data class UpdateApplicationTypeRequest( - val applicationType: ApplicationType, - val applicationRemark: ApplicationRemark?, - val isDaejeon: Boolean, - val isOutOfHeadcount: Boolean, - val veteransNumber: Int? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt deleted file mode 100644 index 87d2444c..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateEducationalStatusRequest.kt +++ /dev/null @@ -1,9 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.YearMonth - -data class UpdateEducationalStatusRequest( - val educationalStatus: EducationalStatus, - val graduateDate: YearMonth -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt deleted file mode 100644 index 460f71c4..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateInformationRequest.kt +++ /dev/null @@ -1,18 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -import hs.kr.entrydsm.application.domain.application.model.types.Sex -import java.time.LocalDate - -data class UpdateInformationRequest( - val sex: Sex, - val birthDate: LocalDate, - val applicantName: String, - val applicantTel: String, - val parentTel: String, - val parentName: String, - val parentRelation: String, - val streetAddress: String, - val postalCode: String, - val detailAddress: String, -) - diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt deleted file mode 100644 index b4ada8f4..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateIntroduceRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class UpdateIntroduceRequest( - val content: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt deleted file mode 100644 index 4da74584..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/UpdateStudyPlanRequest.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.request - -data class UpdateStudyPlanRequest( - val content: String, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt deleted file mode 100644 index 0794fae0..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetApplicationTypeResponse.kt +++ /dev/null @@ -1,17 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationRemark -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.LocalDate -import java.time.YearMonth - -data class GetApplicationTypeResponse( - val educationalStatus: EducationalStatus?, - val applicationType: ApplicationType?, - val isDaejeon: Boolean?, - val applicationRemark: ApplicationRemark?, - val isOutOfHeadCount: Boolean?, - val graduatedDate: YearMonth?, - val veteransNumber: Int? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt deleted file mode 100644 index e4c24134..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetInformationResponse.kt +++ /dev/null @@ -1,18 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -import hs.kr.entrydsm.application.domain.application.model.types.Sex -import java.time.LocalDate - -data class GetInformationResponse( - val sex: Sex?, - val birthDate: LocalDate?, - val photoPath: String?, - val applicantName: String?, - val applicantTel: String?, - val parentTel: String?, - val parentName: String?, - val streetAddress: String?, - val postalCode: String?, - val detailAddress: String?, - val parentRelation: String? -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt deleted file mode 100644 index baacfc70..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetIntroduceResponse.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -data class GetIntroduceResponse( - val content: String?, -) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt deleted file mode 100644 index 68adbedc..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/response/GetStudyPlanResponse.kt +++ /dev/null @@ -1,5 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.usecase.dto.response - -data class GetStudyPlanResponse( - val content: String?, -) From f5624242b58bac17eca265ed76dd6d43a70b2e1d Mon Sep 17 00:00:00 2001 From: coehgns Date: Sun, 28 Dec 2025 23:42:26 +0900 Subject: [PATCH 04/96] feat ( #74 ) : SubmissionApplicationWebRequest.kt --- .../SubmissionApplicationWebRequest.kt | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt new file mode 100644 index 00000000..9777bf19 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt @@ -0,0 +1,92 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.application.model.types.Sex +import java.math.BigDecimal +import java.time.LocalDate + +data class SubmissionApplicationWebRequest( + val applicantName: String, + val applicantTel: String, + val applicationType: ApplicationType, + val educationalStatus: EducationalStatus, + val birthDate: LocalDate, + val applicantGender: Sex, + val streetAddress: String, + val postalCode: String, + val detailAddress: String, + val isDaejeon: Boolean, + val parentName: String, + val parentTel: String, + val parentRelation: String, + val guardianGender: String, + val schoolCode: String, + val schoolName: String, + val studentId: String, + val schoolPhone: String, + val teacherName: String, + val nationalMeritChild: Boolean, + val specialAdmissionTarget: Boolean, + val graduationDate: String, + val studyPlan: String, + val selfIntroduce: String, + + // 요청 형식 이렇게 바꿔서 기존 프론트에서 구현된 원서 제출 api의 request body 수정해야함. + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + +// val korean_3_1: Int, +// val social_3_1: Int, +// val history_3_1: Int, +// val math_3_1: Int, +// val science_3_1: Int, +// val tech_3_1: Int, +// val english_3_1: Int, +// +// val korean_3_2: Int, +// val social_3_2: Int, +// val history_3_2: Int, +// val math_3_2: Int, +// val science_3_2: Int, +// val tech_3_2: Int, +// val english_3_2: Int, +// +// val korean_2_2: Int, +// val social_2_2: Int, +// val history_2_2: Int, +// val math_2_2: Int, +// val science_2_2: Int, +// val tech_2_2: Int, +// val english_2_2: Int, +// +// val korean_2_1: Int, +// val social_2_1: Int, +// val history_2_1: Int, +// val math_2_1: Int, +// val science_2_1: Int, +// val tech_2_1: Int, +// val english_2_1: Int, + + val gedKorean: BigDecimal = BigDecimal.ZERO, + val gedSocial: BigDecimal = BigDecimal.ZERO, + val gedHistory: BigDecimal = BigDecimal.ZERO, + val gedMath: BigDecimal = BigDecimal.ZERO, + val gedScience: BigDecimal = BigDecimal.ZERO, + val gedTech: BigDecimal = BigDecimal.ZERO, + val gedEnglish: BigDecimal = BigDecimal.ZERO, + + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int, + + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) From caf97fabfe4df4ae5795e116aa2f2f90df9e7be3 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 08:48:24 +0900 Subject: [PATCH 05/96] refactor ( #74 ) : optGrade -> historyGrade --- .../domain/applicationCase/model/QualificationCase.kt | 6 +++--- .../applicationCase/usecase/GetQualificationCaseUseCase.kt | 2 +- .../usecase/UpdateQualificationCaseUseCase.kt | 2 +- .../usecase/dto/request/UpdateQualificationCaseRequest.kt | 4 +++- .../usecase/dto/response/GetQualificationCaseResponse.kt | 2 +- .../domain/entity/QualificationCaseJpaEntity.kt | 2 +- .../presentation/WebApplicationCaseAdapter.kt | 2 +- .../dto/request/UpdateQualificationCaseWebRequest.kt | 2 +- .../global/document/pdf/data/PdfDataConverter.kt | 2 +- .../excel/generator/PrintApplicationCheckListGenerator.kt | 2 +- .../global/excel/generator/PrintApplicationInfoGenerator.kt | 2 +- 11 files changed, 15 insertions(+), 13 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt index 848a529e..60fc5602 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt @@ -15,7 +15,7 @@ data class QualificationCase( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, // 일반전형 여부 val isCommon: Boolean = true, ) : ApplicationCase( @@ -37,7 +37,7 @@ data class QualificationCase( fun calculateAverageScore(): BigDecimal { val totalPoints = - optGrade + + historyGrade + socialGrade + mathGrade + englishGrade + @@ -55,7 +55,7 @@ data class QualificationCase( getScorePoint(mathGrade), getScorePoint(scienceGrade), getScorePoint(englishGrade), - getScorePoint(optGrade) + getScorePoint(historyGrade) ).sum() return BigDecimal(totalPoints).divide(BigDecimal(6), 3, RoundingMode.HALF_UP) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt index 6aca35cd..f4772a33 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt @@ -32,7 +32,7 @@ class GetQualificationCaseUseCase( mathGrade = qualificationCase.mathGrade, scienceGrade = qualificationCase.scienceGrade, englishGrade = qualificationCase.englishGrade, - optGrade = qualificationCase.optGrade, + historyGrade = qualificationCase.historyGrade, extraScore = qualificationCase.extraScoreItem.run { GetExtraScoreResponse( hasCertificate = hasCertificate, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt index 2be3da66..31efad3b 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt @@ -37,7 +37,7 @@ class UpdateQualificationCaseUseCase( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - optGrade = request.optGrade, + historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt index c55db39e..c2417c47 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt @@ -8,6 +8,8 @@ data class UpdateQualificationCaseRequest( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, + + //val optGrade: BigDecimal = BigDecimal.ZERO, val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt index fb222466..48916013 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt @@ -8,6 +8,6 @@ data class GetQualificationCaseResponse( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: GetExtraScoreResponse ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt index f52153b2..8c304fba 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt @@ -15,7 +15,7 @@ class QualificationCaseJpaEntity( override val extraScoreItem: ExtraScoreItem, val koreanGrade: BigDecimal, val socialGrade: BigDecimal, - val optGrade: BigDecimal, + val historyGrade: BigDecimal, val mathGrade: BigDecimal, val scienceGrade: BigDecimal, val englishGrade: BigDecimal, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt index e5f55937..0236c787 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt @@ -56,7 +56,7 @@ class WebApplicationCaseAdapter( mathGrade = mathGrade, scienceGrade = scienceGrade, englishGrade = englishGrade, - optGrade = optGrade, + historyGrade = historyGrade, extraScore = extraScore ) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt index 72b4ad39..45125a22 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt @@ -19,7 +19,7 @@ data class UpdateQualificationCaseWebRequest( @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull val englishGrade: BigDecimal = BigDecimal.ZERO, @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val optGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, @field:NotNull val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt index a32dfb25..511b02ae 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt @@ -253,7 +253,7 @@ class PdfDataConverter( put("mathThirdGradeFirstSemester", applicationCase.mathGrade) put("scienceThirdGradeFirstSemester", applicationCase.scienceGrade) put("englishThirdGradeFirstSemester", applicationCase.englishGrade) - put("techAndHomeThirdGradeFirstSemester", applicationCase.optGrade) + put("techAndHomeThirdGradeFirstSemester", applicationCase.historyGrade) } } else if(applicationCase is GraduationCase) { val grades = applicationCase.gradesPerSubject() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt index 8efa7d0b..f6312db1 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt @@ -283,7 +283,7 @@ class PrintApplicationCheckListGenerator( getCell(dh + 13, 3).setCellValue("X") getCell(dh + 14, 3).setCellValue(qualificationCase.mathGrade.toString()) getCell(dh + 15, 3).setCellValue(qualificationCase.scienceGrade.toString()) - getCell(dh + 16, 3).setCellValue(qualificationCase.optGrade.toString()) + getCell(dh + 16, 3).setCellValue(qualificationCase.historyGrade.toString()) getCell(dh + 17, 3).setCellValue(qualificationCase.englishGrade.toString()) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt index 32d2093e..17deac24 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt @@ -121,7 +121,7 @@ class PrintApplicationInfoGenerator( row.createCell(17).setCellValue("X") row.createCell(18).setCellValue(applicationService.safeGetValue(qualificationCase.mathGrade)) row.createCell(19).setCellValue(applicationService.safeGetValue(qualificationCase.scienceGrade)) - row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.optGrade)) + row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.historyGrade)) row.createCell(21).setCellValue(applicationService.safeGetValue(qualificationCase.englishGrade)) for (i in 22..53) { row.createCell(i).setCellValue("X") From 1fdc4ac9131e20e77e7f7c345b765038b38cf808 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 08:48:47 +0900 Subject: [PATCH 06/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20graduationDa?= =?UTF-8?q?te=20=ED=83=80=EC=9E=85=20String=20->=20YearMonth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/dto/request/SubmissionApplicationWebRequest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt index 9777bf19..9f0a82c8 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt @@ -5,6 +5,7 @@ import hs.kr.entrydsm.application.domain.application.model.types.EducationalStat import hs.kr.entrydsm.application.domain.application.model.types.Sex import java.math.BigDecimal import java.time.LocalDate +import java.time.YearMonth data class SubmissionApplicationWebRequest( val applicantName: String, @@ -28,7 +29,7 @@ data class SubmissionApplicationWebRequest( val teacherName: String, val nationalMeritChild: Boolean, val specialAdmissionTarget: Boolean, - val graduationDate: String, + val graduationDate: YearMonth, val studyPlan: String, val selfIntroduce: String, From eafdf50d61757ba3ed6da213aad038ebe728af86 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:50:28 +0900 Subject: [PATCH 07/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20ApplicationCaseS?= =?UTF-8?q?ervice=EC=97=90=20=EB=A9=94=EC=84=9C=EB=93=9C=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 --- .../service/ApplicationCaseService.kt | 101 +++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index 9e00e206..b03fe96e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -1,15 +1,30 @@ package hs.kr.entrydsm.application.domain.applicationCase.service +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.applicationCase.event.spi.ApplicationCaseEventPort import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.applicationCase.factory.ApplicationCaseFactory import hs.kr.entrydsm.application.domain.applicationCase.model.ApplicationCase import hs.kr.entrydsm.application.domain.applicationCase.model.GraduationCase import hs.kr.entrydsm.application.domain.applicationCase.model.QualificationCase +import hs.kr.entrydsm.application.domain.applicationCase.model.vo.ExtraScoreItem +import hs.kr.entrydsm.application.domain.applicationCase.spi.ApplicationCaseQueryApplicationPort +import hs.kr.entrydsm.application.domain.applicationCase.spi.CommandApplicationCasePort +import hs.kr.entrydsm.application.domain.applicationCase.spi.QueryApplicationCasePort +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import hs.kr.entrydsm.application.global.annotation.DomainService @DomainService -class ApplicationCaseService { +class ApplicationCaseService( + private val applicationCaseQueryApplicationPort: ApplicationCaseQueryApplicationPort, + private val commandApplicationCasePort: CommandApplicationCasePort, + private val queryApplicationCasePort: QueryApplicationCasePort, + private val applicationCaseFactory: ApplicationCaseFactory, + private val applicationCaseEventPort: ApplicationCaseEventPort, +) { fun hasEducationalStatusMismatch(application: Application, applicationCase: ApplicationCase): Boolean { application.educationalStatus ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() @@ -20,4 +35,88 @@ class ApplicationCaseService { applicationCase !is QualificationCase } } + + fun initializeApplicationCase(receiptCode: Long, educationalStatus: EducationalStatus?) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + if (!queryApplicationCasePort.isExistsApplicationCaseByApplication(application)) { + commandApplicationCasePort.save( + applicationCaseFactory.createApplicationCase( + receiptCode, + educationalStatus + ) + ) + } + } + + fun updateGraduationScore(application: Application, request: UpdateGraduationCaseRequest) { + val graduationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) + + if (graduationCase !is GraduationCase) { + throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + } + + request.run { + commandApplicationCasePort.save( + graduationCase.copy( + volunteerTime = volunteerTime, + absenceDayCount = absenceDayCount, + lectureAbsenceCount = lectureAbsenceCount, + latenessCount = latenessCount, + earlyLeaveCount = earlyLeaveCount, + koreanGrade = koreanGrade, + socialGrade = socialGrade, + historyGrade = historyGrade, + mathGrade = mathGrade, + scienceGrade = scienceGrade, + englishGrade = englishGrade, + techAndHomeGrade = techAndHomeGrade, + extraScoreItem = ExtraScoreItem( + hasCertificate = extraScore.hasCertificate, + hasCompetitionPrize = extraScore.hasCompetitionPrize + ) + ) + ) + } + + applicationCaseEventPort.updateGraduationCase(graduationCase) + } + + fun updateGraduationScore(receiptCode: Long, request: UpdateGraduationCaseRequest) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + updateGraduationScore(application, request) + } + + fun updateQualificationScore(application: Application, request: UpdateQualificationCaseRequest) { + val qualificationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) + + if (qualificationCase !is QualificationCase) { + throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + } + + commandApplicationCasePort.save( + qualificationCase.copy( + koreanGrade = request.koreanGrade, + scienceGrade = request.scienceGrade, + socialGrade = request.socialGrade, + mathGrade = request.mathGrade, + englishGrade = request.englishGrade, + historyGrade = request.historyGrade, + extraScoreItem = ExtraScoreItem( + hasCertificate = request.extraScore.hasCertificate, + hasCompetitionPrize = request.extraScore.hasCompetitionPrize + ) + ) + ) + + applicationCaseEventPort.updateQualificationCase(qualificationCase) + } + + fun updateQualificationScore(receiptCode: Long, request: UpdateQualificationCaseRequest) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + updateQualificationScore(application, request) + } } \ No newline at end of file From dee8fdfeef8e39bbc3ed662bc9dcc659f7df930f Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:50:52 +0900 Subject: [PATCH 08/96] feat ( #74 ) : SubmitApplicationConsumer.kt --- .../event/SubmitApplicationConsumer.kt | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt new file mode 100644 index 00000000..aa92c6b2 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -0,0 +1,109 @@ +package hs.kr.entrydsm.application.domain.application.event + +import com.fasterxml.jackson.databind.ObjectMapper +import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationSubmittedEvent +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.applicationCase.service.ApplicationCaseService +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest +import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService +import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest +import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics +import org.springframework.kafka.annotation.KafkaListener +import org.springframework.stereotype.Component + +@Component +class SubmitApplicationConsumer( + private val objectMapper: ObjectMapper, + private val applicationCaseService: ApplicationCaseService, + private val graduationInfoService: GraduationInfoService +) { + + @KafkaListener( + topics = [KafkaTopics.SUBMIT_APPLICATION], + groupId = "application-submitted", + containerFactory = "kafkaListenerContainerFactory" + ) + fun submitApplication(message: String) { + val event = objectMapper.readValue(message, ApplicationSubmittedEvent::class.java) + + initializeApplicationCase(event) + updateGraduationDate(event) + updateScore(event) + updateGraduationInformation(event) + } + + private fun initializeApplicationCase(event: ApplicationSubmittedEvent) { + applicationCaseService.initializeApplicationCase( + event.receiptCode, + event.educationalStatus + ) + } + + private fun updateGraduationDate(event: ApplicationSubmittedEvent) { + graduationInfoService.changeGraduationDate( + event.receiptCode, + event.graduationDate + ) + } + + private fun updateScore(event: ApplicationSubmittedEvent) { + when (event.educationalStatus) { + EducationalStatus.QUALIFICATION_EXAM -> { + applicationCaseService.updateQualificationScore( + event.receiptCode, + UpdateQualificationCaseRequest( + koreanGrade = event.scoreData.gedKorean, + socialGrade = event.scoreData.gedSocial, + mathGrade = event.scoreData.gedMath, + scienceGrade = event.scoreData.gedScience, + englishGrade = event.scoreData.gedEnglish, + historyGrade = event.scoreData.gedHistory, + extraScore = ExtraScoreRequest( + hasCertificate = event.scoreData.infoProcessingCert, + hasCompetitionPrize = event.scoreData.algorithmAward + ) + ) + ) + } + else -> { + applicationCaseService.updateGraduationScore( + event.receiptCode, + UpdateGraduationCaseRequest( + volunteerTime = event.scoreData.volunteer, + absenceDayCount = event.scoreData.absence, + lectureAbsenceCount = event.scoreData.classExit, + latenessCount = event.scoreData.tardiness, + earlyLeaveCount = event.scoreData.earlyLeave, + koreanGrade = event.scoreData.koreanGrade, + socialGrade = event.scoreData.socialGrade, + historyGrade = event.scoreData.historyGrade, + mathGrade = event.scoreData.mathGrade, + scienceGrade = event.scoreData.scienceGrade, + englishGrade = event.scoreData.englishGrade, + techAndHomeGrade = event.scoreData.techAndHomeGrade, + extraScore = ExtraScoreRequest( + hasCertificate = event.scoreData.infoProcessingCert, + hasCompetitionPrize = event.scoreData.algorithmAward + ) + ) + ) + } + } + } + + private fun updateGraduationInformation(event: ApplicationSubmittedEvent) { + graduationInfoService.updateGraduationInformation( + event.receiptCode, + UpdateGraduationInformationRequest( + gradeNumber = "2", + classNumber = "1", + studentNumber = "15", + schoolCode = event.schoolCode, + teacherName = event.teacherName, + teacherTel = event.schoolPhone + ) + ) + } +} \ No newline at end of file From 6ee10994e2e52a509f26411b5e9a452d8d58fa90 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:52:34 +0900 Subject: [PATCH 09/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20ApplicationEvent?= =?UTF-8?q?Port=EC=97=90=20submitApplication=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/event/spi/ApplicationEventPort.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt index b531b924..14102831 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt @@ -1,15 +1,18 @@ package hs.kr.entrydsm.application.domain.application.event.spi -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.time.YearMonth +import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import java.util.UUID interface ApplicationEventPort { fun create(receiptCode: Long, userId: UUID) - fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) + fun submitApplication(submissionData: SubmissionData) - fun submitApplicationFinal(receiptCode: Long) + // 미사용 + //fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) + + // 미사용 + //fun submitApplicationFinal(receiptCode: Long) fun createApplicationScoreRollback(receiptCode: Long) } From 3f93e2b0a205918db8497ed56fc8b21b8bb85fa9 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:53:10 +0900 Subject: [PATCH 10/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20ApplicationProdu?= =?UTF-8?q?cer=EC=97=90=20submitApplication=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/event/ApplicationProducer.kt | 58 +++++++++++++------ 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 6f0aa53b..d49265c4 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -1,24 +1,24 @@ package hs.kr.entrydsm.application.domain.application.event import com.fasterxml.jackson.databind.ObjectMapper +import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationScoreData +import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationSubmittedEvent import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent +import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.application.event.dto.UpdateEducationalStatusEvent -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics import org.springframework.kafka.core.KafkaTemplate import org.springframework.stereotype.Component -import java.time.YearMonth import java.util.* @Component class ApplicationProducer( private val mapper: ObjectMapper, private val createApplicationTemplate: KafkaTemplate, - private val updateEducationalStatusTemplate: KafkaTemplate, - private val submitApplicationFinalTemplate: KafkaTemplate, - private val createApplicationRollbackTemplate: KafkaTemplate + private val createApplicationRollbackTemplate: KafkaTemplate, + private val publishApplicationSubmittedTemplate: KafkaTemplate ) : ApplicationEventPort { + override fun create(receiptCode: Long, userId: UUID) { val createApplicationEvent = CreateApplicationEvent( userId = userId, @@ -30,10 +30,41 @@ class ApplicationProducer( ) } - override fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) { - updateEducationalStatusTemplate.send( - KafkaTopics.UPDATE_EDUCATIONAL_STATUS, - UpdateEducationalStatusEvent(receiptCode, graduateDate), + override fun submitApplication(submissionData: SubmissionData) { + val event = ApplicationSubmittedEvent( + receiptCode = submissionData.receiptCode, + userId = submissionData.userId, + educationalStatus = submissionData.educationalStatus, + graduationDate = submissionData.graduationDate, + schoolCode = submissionData.schoolCode, + teacherName = submissionData.teacherName, + schoolPhone = submissionData.schoolPhone, + scoreData = ApplicationScoreData( + koreanGrade = submissionData.scoreData.koreanGrade, + socialGrade = submissionData.scoreData.socialGrade, + historyGrade = submissionData.scoreData.historyGrade, + mathGrade = submissionData.scoreData.mathGrade, + scienceGrade = submissionData.scoreData.scienceGrade, + englishGrade = submissionData.scoreData.englishGrade, + techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, + gedKorean = submissionData.scoreData.gedKorean, + gedSocial = submissionData.scoreData.gedSocial, + gedHistory = submissionData.scoreData.gedHistory, + gedMath = submissionData.scoreData.gedMath, + gedScience = submissionData.scoreData.gedScience, + gedEnglish = submissionData.scoreData.gedEnglish, + absence = submissionData.scoreData.absence, + tardiness = submissionData.scoreData.tardiness, + earlyLeave = submissionData.scoreData.earlyLeave, + classExit = submissionData.scoreData.classExit, + volunteer = submissionData.scoreData.volunteer, + algorithmAward = submissionData.scoreData.algorithmAward, + infoProcessingCert = submissionData.scoreData.infoProcessingCert + ) + ) + publishApplicationSubmittedTemplate.send( + KafkaTopics.SUBMIT_APPLICATION, + mapper.writeValueAsString(event) ) } @@ -43,11 +74,4 @@ class ApplicationProducer( receiptCode ) } - - override fun submitApplicationFinal(receiptCode: Long) { - submitApplicationFinalTemplate.send( - KafkaTopics.SUBMIT_APPLICATION_FINAL, - receiptCode - ) - } } From ace382661cba22e3c48ee4f782d402295c8b02bf Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:53:51 +0900 Subject: [PATCH 11/96] feat ( #74 ) : SubmitApplicationEvent.kt --- .../application/event/ApplicationProducer.kt | 4 +- .../event/SubmitApplicationConsumer.kt | 12 +++--- .../event/dto/SubmitApplicationEvent.kt | 40 +++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index d49265c4..12c03787 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -2,7 +2,7 @@ package hs.kr.entrydsm.application.domain.application.event import com.fasterxml.jackson.databind.ObjectMapper import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationScoreData -import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationSubmittedEvent +import hs.kr.entrydsm.application.domain.application.event.dto.SubmitApplicationEvent import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort @@ -31,7 +31,7 @@ class ApplicationProducer( } override fun submitApplication(submissionData: SubmissionData) { - val event = ApplicationSubmittedEvent( + val event = SubmitApplicationEvent( receiptCode = submissionData.receiptCode, userId = submissionData.userId, educationalStatus = submissionData.educationalStatus, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index aa92c6b2..24240223 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -1,7 +1,7 @@ package hs.kr.entrydsm.application.domain.application.event import com.fasterxml.jackson.databind.ObjectMapper -import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationSubmittedEvent +import hs.kr.entrydsm.application.domain.application.event.dto.SubmitApplicationEvent import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.domain.applicationCase.service.ApplicationCaseService import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest @@ -26,7 +26,7 @@ class SubmitApplicationConsumer( containerFactory = "kafkaListenerContainerFactory" ) fun submitApplication(message: String) { - val event = objectMapper.readValue(message, ApplicationSubmittedEvent::class.java) + val event = objectMapper.readValue(message, SubmitApplicationEvent::class.java) initializeApplicationCase(event) updateGraduationDate(event) @@ -34,21 +34,21 @@ class SubmitApplicationConsumer( updateGraduationInformation(event) } - private fun initializeApplicationCase(event: ApplicationSubmittedEvent) { + private fun initializeApplicationCase(event: SubmitApplicationEvent) { applicationCaseService.initializeApplicationCase( event.receiptCode, event.educationalStatus ) } - private fun updateGraduationDate(event: ApplicationSubmittedEvent) { + private fun updateGraduationDate(event: SubmitApplicationEvent) { graduationInfoService.changeGraduationDate( event.receiptCode, event.graduationDate ) } - private fun updateScore(event: ApplicationSubmittedEvent) { + private fun updateScore(event: SubmitApplicationEvent) { when (event.educationalStatus) { EducationalStatus.QUALIFICATION_EXAM -> { applicationCaseService.updateQualificationScore( @@ -93,7 +93,7 @@ class SubmitApplicationConsumer( } } - private fun updateGraduationInformation(event: ApplicationSubmittedEvent) { + private fun updateGraduationInformation(event: SubmitApplicationEvent) { graduationInfoService.updateGraduationInformation( event.receiptCode, UpdateGraduationInformationRequest( diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt new file mode 100644 index 00000000..cfb9faad --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt @@ -0,0 +1,40 @@ +package hs.kr.entrydsm.application.domain.application.event.dto + +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.math.BigDecimal +import java.time.YearMonth +import java.util.UUID + +data class SubmitApplicationEvent( + val receiptCode: Long, + val userId: UUID, + val educationalStatus: EducationalStatus, + val graduationDate: YearMonth, + val schoolCode: String, + val teacherName: String, + val schoolPhone: String, + val scoreData: ApplicationScoreData +) + +data class ApplicationScoreData( + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + val gedKorean: BigDecimal, + val gedSocial: BigDecimal, + val gedHistory: BigDecimal, + val gedMath: BigDecimal, + val gedScience: BigDecimal, + val gedEnglish: BigDecimal, + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int, + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) \ No newline at end of file From 36dd445eb529220f9dd21a4fcf15dd1d78d46646 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:54:25 +0900 Subject: [PATCH 12/96] feat ( #74 ) : GraduationInfoService --- .../service/GraduationInfoService.kt | 62 ++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt index 4dd61efc..09ce8d8e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt @@ -1,15 +1,32 @@ package hs.kr.entrydsm.application.domain.graduationInfo.service +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.graduationInfo.exception.GraduationInfoExceptions +import hs.kr.entrydsm.application.domain.graduationInfo.factory.GraduationInfoFactory import hs.kr.entrydsm.application.domain.graduationInfo.model.Graduation import hs.kr.entrydsm.application.domain.graduationInfo.model.GraduationInfo import hs.kr.entrydsm.application.domain.graduationInfo.model.Qualification +import hs.kr.entrydsm.application.domain.graduationInfo.model.vo.StudentNumber +import hs.kr.entrydsm.application.domain.graduationInfo.spi.CommandGraduationInfoPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.GraduationInfoQueryApplicationPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.GraduationInfoQuerySchoolPort +import hs.kr.entrydsm.application.domain.graduationInfo.spi.QueryGraduationInfoPort +import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest +import hs.kr.entrydsm.application.domain.school.exception.SchoolExceptions import hs.kr.entrydsm.application.global.annotation.DomainService +import java.time.YearMonth @DomainService -class GraduationInfoService { +class GraduationInfoService( + private val graduationInfoQueryApplicationPort: GraduationInfoQueryApplicationPort, + private val commandGraduationInfoPort: CommandGraduationInfoPort, + private val queryGraduationInfoPort: QueryGraduationInfoPort, + private val graduationInfoFactory: GraduationInfoFactory, + private val graduationInfoQuerySchoolPort: GraduationInfoQuerySchoolPort +) { fun hasEducationalStatusMismatch(application: Application, graduationInfo: GraduationInfo): Boolean { application.educationalStatus ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() @@ -20,4 +37,47 @@ class GraduationInfoService { graduationInfo !is Qualification } } + + fun changeGraduationDate(receiptCode: Long, graduateDate: YearMonth) { + val application = graduationInfoQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + queryGraduationInfoPort.queryGraduationInfoByApplication(application)?.let { + commandGraduationInfoPort.save(it.changeGraduateDate(graduateDate)) + } ?: commandGraduationInfoPort.save( + graduationInfoFactory.createGraduationInfo( + receiptCode = receiptCode, + educationalStatus = application.educationalStatus, + graduateDate = graduateDate + ) + ) + } + + fun updateGraduationInformation(receiptCode: Long, request: UpdateGraduationInformationRequest) { + val application = graduationInfoQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + val graduation = queryGraduationInfoPort.queryGraduationInfoByApplication(application) + + if (graduation !is Graduation) throw GraduationInfoExceptions.EducationalStatusUnmatchedException() + + if (!graduationInfoQuerySchoolPort.isExistsSchoolBySchoolCode(request.schoolCode)) { + throw SchoolExceptions.SchoolNotFoundException() + } + + request.run { + commandGraduationInfoPort.save( + graduation.copy( + studentNumber = StudentNumber( + gradeNumber = gradeNumber, + classNumber = classNumber, + studentNumber = studentNumber + ), + schoolCode = schoolCode, + teacherName = teacherName, + teacherTel = teacherTel + ) + ) + } + } } \ No newline at end of file From b69dfa4afb923f8a70900c5791e9e5c57ea43da0 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:54:38 +0900 Subject: [PATCH 13/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20KafkaTopics?= =?UTF-8?q?=EC=97=90=20SUBMIT=5FAPPLICATION=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/entrydsm/application/global/kafka/config/KafkaTopics.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt index 7a330303..63c545cd 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/kafka/config/KafkaTopics.kt @@ -2,6 +2,7 @@ package hs.kr.entrydsm.application.global.kafka.config object KafkaTopics { const val CREATE_APPLICATION = "create-application" + const val SUBMIT_APPLICATION = "submit-application" const val UPDATE_EDUCATIONAL_STATUS = "update-educational-status" const val UPDATE_GRADUATION_CASE = "update-graduation-case" const val UPDATE_QUALIFICATION_CASE = "update-qualification-case" From 26d65ed3e75e90caf59658b2616b6ae6a8e92e27 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:55:18 +0900 Subject: [PATCH 14/96] feat ( #74 ) : SubmissionData --- .../application/event/dto/SubmissionData.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt new file mode 100644 index 00000000..d5d71c72 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt @@ -0,0 +1,40 @@ +package hs.kr.entrydsm.application.domain.application.event.dto + +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.math.BigDecimal +import java.time.YearMonth +import java.util.UUID + +data class SubmissionData( + val receiptCode: Long, + val userId: UUID, + val educationalStatus: EducationalStatus, + val graduationDate: YearMonth, + val schoolCode: String, + val teacherName: String, + val schoolPhone: String, + val scoreData: ScoreData +) + +data class ScoreData( + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + val gedKorean: BigDecimal, + val gedSocial: BigDecimal, + val gedHistory: BigDecimal, + val gedMath: BigDecimal, + val gedScience: BigDecimal, + val gedEnglish: BigDecimal, + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int, + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) \ No newline at end of file From 59e1617fdf117d4df573b3258d75e7cba4c45f63 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:56:42 +0900 Subject: [PATCH 15/96] feat ( #74 ) : SubmitApplicationUseCase --- .../usecase/SubmitApplicationUseCase.kt | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt new file mode 100644 index 00000000..a4ac3553 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -0,0 +1,101 @@ +package hs.kr.entrydsm.application.domain.application.usecase + +import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData +import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData +import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions +import hs.kr.entrydsm.application.domain.application.model.Application +import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort +import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort +import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationWebRequest +import hs.kr.entrydsm.application.domain.user.model.User +import hs.kr.entrydsm.application.global.annotation.UseCase +import hs.kr.entrydsm.application.global.security.spi.SecurityPort +import java.util.UUID + +@UseCase +class SubmitApplicationUseCase( + private val securityPort: SecurityPort, + private val applicationEventPort: ApplicationEventPort, + private val commandApplicationPort: CommandApplicationPort, + private val applicationQueryUserPort: ApplicationQueryUserPort, + private val queryApplicationPort: QueryApplicationPort +) { + + fun execute(request: SubmissionApplicationWebRequest) { + val userId = securityPort.getCurrentUserId() + val user = applicationQueryUserPort.queryUserByUserId(userId) + if (queryApplicationPort.isExistsApplicationByUserId(userId)) { + throw ApplicationExceptions.ApplicationExistsException() + } + val application = commandApplicationPort.save(createWithUserInfo(request, user)) + + applicationEventPort.submitApplication( + createSubmissionData(application, userId, request) + ) + + applicationEventPort.create(application.receiptCode, userId) + } + + private fun createWithUserInfo(request: SubmissionApplicationWebRequest, user: User): Application { + return request.run { + Application( + applicantName = user.name, + applicantTel = user.phoneNumber, + birthDate = birthDate, + sex = applicantGender, + streetAddress = streetAddress, + postalCode = postalCode, + detailAddress = detailAddress, + isDaejeon = isDaejeon, + parentName = parentName, + parentTel = parentTel, + parentRelation = parentRelation, + educationalStatus = educationalStatus, + applicationType = applicationType, + studyPlan = studyPlan, + selfIntroduce = selfIntroduce, + userId = user.id + ) + } + } + + private fun createSubmissionData( + application: Application, + userId: UUID, + request: SubmissionApplicationWebRequest + ): SubmissionData { + return SubmissionData( + receiptCode = application.receiptCode, + userId = userId, + educationalStatus = request.educationalStatus, + graduationDate = request.graduationDate, + schoolCode = request.schoolCode, + teacherName = request.teacherName, + schoolPhone = request.schoolPhone, + scoreData = ScoreData( + koreanGrade = request.koreanGrade, + socialGrade = request.socialGrade, + historyGrade = request.historyGrade, + mathGrade = request.mathGrade, + scienceGrade = request.scienceGrade, + englishGrade = request.englishGrade, + techAndHomeGrade = request.techAndHomeGrade, + gedKorean = request.gedKorean, + gedSocial = request.gedSocial, + gedHistory = request.gedHistory, + gedMath = request.gedMath, + gedScience = request.gedScience, + gedEnglish = request.gedEnglish, + absence = request.absence, + tardiness = request.tardiness, + earlyLeave = request.earlyLeave, + classExit = request.classExit, + volunteer = request.volunteer, + algorithmAward = request.algorithmAward, + infoProcessingCert = request.infoProcessingCert + ) + ) + } +} \ No newline at end of file From 8f6d38b5e839598ec645d41ad80ec36069494fe1 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 18:59:20 +0900 Subject: [PATCH 16/96] refactor ( #74 ) : WebApplicationAdapter.kt --- .../presentation/WebApplicationAdapter.kt | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index c8366b6e..e297f3f1 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,22 +1,36 @@ package hs.kr.entrydsm.application.domain.application.presentation -import hs.kr.entrydsm.application.domain.application.usecase.* -import hs.kr.entrydsm.application.domain.application.usecase.dto.response.* +import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase +import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase +import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationStatusResponse import hs.kr.entrydsm.application.domain.file.presentation.converter.ImageFileConverter import hs.kr.entrydsm.application.domain.file.presentation.dto.response.UploadImageWebResponse -import org.springframework.web.bind.annotation.* +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestPart +import org.springframework.web.bind.annotation.RestController import org.springframework.web.multipart.MultipartFile +import javax.validation.Valid @RestController @RequestMapping("/application") class WebApplicationAdapter( - private val createApplicationUseCase: CreateApplicationUseCase, private val uploadPhotoUseCase: UploadPhotoUseCase, private val getMyApplicationStatusUseCase: GetMyApplicationStatusUseCase, + private val submitApplicationUseCase: SubmitApplicationUseCase ) { +// @PostMapping +// fun createApplication() { +// createApplicationUseCase.execute() +// } + @PostMapping - fun createApplication() { - createApplicationUseCase.execute() + fun submission(@RequestBody @Valid request: SubmissionApplicationWebRequest) { + submitApplicationUseCase.execute(request) } @PostMapping("/photo") From b96e146e3445a7a9d99b87718316dd6341c8062a Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:08:24 +0900 Subject: [PATCH 17/96] refactor ( #74 ) : event -> submitApplicationEvent --- .../application/event/ApplicationProducer.kt | 4 +- .../event/SubmitApplicationConsumer.kt | 74 +++++++++---------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 12c03787..85ae53f8 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -31,7 +31,7 @@ class ApplicationProducer( } override fun submitApplication(submissionData: SubmissionData) { - val event = SubmitApplicationEvent( + val submitApplicationEvent = SubmitApplicationEvent( receiptCode = submissionData.receiptCode, userId = submissionData.userId, educationalStatus = submissionData.educationalStatus, @@ -64,7 +64,7 @@ class ApplicationProducer( ) publishApplicationSubmittedTemplate.send( KafkaTopics.SUBMIT_APPLICATION, - mapper.writeValueAsString(event) + mapper.writeValueAsString(submitApplicationEvent) ) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 24240223..757d8b9f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -26,66 +26,66 @@ class SubmitApplicationConsumer( containerFactory = "kafkaListenerContainerFactory" ) fun submitApplication(message: String) { - val event = objectMapper.readValue(message, SubmitApplicationEvent::class.java) + val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) - initializeApplicationCase(event) - updateGraduationDate(event) - updateScore(event) - updateGraduationInformation(event) + initializeApplicationCase(submitApplicationEvent) + updateGraduationDate(submitApplicationEvent) + updateScore(submitApplicationEvent) + updateGraduationInformation(submitApplicationEvent) } - private fun initializeApplicationCase(event: SubmitApplicationEvent) { + private fun initializeApplicationCase(submitApplicationEvent: SubmitApplicationEvent) { applicationCaseService.initializeApplicationCase( - event.receiptCode, - event.educationalStatus + submitApplicationEvent.receiptCode, + submitApplicationEvent.educationalStatus ) } - private fun updateGraduationDate(event: SubmitApplicationEvent) { + private fun updateGraduationDate(submitApplicationEvent: SubmitApplicationEvent) { graduationInfoService.changeGraduationDate( - event.receiptCode, - event.graduationDate + submitApplicationEvent.receiptCode, + submitApplicationEvent.graduationDate ) } - private fun updateScore(event: SubmitApplicationEvent) { - when (event.educationalStatus) { + private fun updateScore(submitApplicationEvent: SubmitApplicationEvent) { + when (submitApplicationEvent.educationalStatus) { EducationalStatus.QUALIFICATION_EXAM -> { applicationCaseService.updateQualificationScore( - event.receiptCode, + submitApplicationEvent.receiptCode, UpdateQualificationCaseRequest( - koreanGrade = event.scoreData.gedKorean, - socialGrade = event.scoreData.gedSocial, - mathGrade = event.scoreData.gedMath, - scienceGrade = event.scoreData.gedScience, - englishGrade = event.scoreData.gedEnglish, - historyGrade = event.scoreData.gedHistory, + koreanGrade = submitApplicationEvent.scoreData.gedKorean, + socialGrade = submitApplicationEvent.scoreData.gedSocial, + mathGrade = submitApplicationEvent.scoreData.gedMath, + scienceGrade = submitApplicationEvent.scoreData.gedScience, + englishGrade = submitApplicationEvent.scoreData.gedEnglish, + historyGrade = submitApplicationEvent.scoreData.gedHistory, extraScore = ExtraScoreRequest( - hasCertificate = event.scoreData.infoProcessingCert, - hasCompetitionPrize = event.scoreData.algorithmAward + hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, + hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward ) ) ) } else -> { applicationCaseService.updateGraduationScore( - event.receiptCode, + submitApplicationEvent.receiptCode, UpdateGraduationCaseRequest( - volunteerTime = event.scoreData.volunteer, - absenceDayCount = event.scoreData.absence, - lectureAbsenceCount = event.scoreData.classExit, - latenessCount = event.scoreData.tardiness, - earlyLeaveCount = event.scoreData.earlyLeave, - koreanGrade = event.scoreData.koreanGrade, - socialGrade = event.scoreData.socialGrade, - historyGrade = event.scoreData.historyGrade, - mathGrade = event.scoreData.mathGrade, - scienceGrade = event.scoreData.scienceGrade, - englishGrade = event.scoreData.englishGrade, - techAndHomeGrade = event.scoreData.techAndHomeGrade, + volunteerTime = submitApplicationEvent.scoreData.volunteer, + absenceDayCount = submitApplicationEvent.scoreData.absence, + lectureAbsenceCount = submitApplicationEvent.scoreData.classExit, + latenessCount = submitApplicationEvent.scoreData.tardiness, + earlyLeaveCount = submitApplicationEvent.scoreData.earlyLeave, + koreanGrade = submitApplicationEvent.scoreData.koreanGrade, + socialGrade = submitApplicationEvent.scoreData.socialGrade, + historyGrade = submitApplicationEvent.scoreData.historyGrade, + mathGrade = submitApplicationEvent.scoreData.mathGrade, + scienceGrade = submitApplicationEvent.scoreData.scienceGrade, + englishGrade = submitApplicationEvent.scoreData.englishGrade, + techAndHomeGrade = submitApplicationEvent.scoreData.techAndHomeGrade, extraScore = ExtraScoreRequest( - hasCertificate = event.scoreData.infoProcessingCert, - hasCompetitionPrize = event.scoreData.algorithmAward + hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, + hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward ) ) ) From f948c17b6465dd1a6186b524706cf670a177be6d Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:11:01 +0900 Subject: [PATCH 18/96] refactor ( #74 ) : event -> submitApplicationEvent --- .../application/event/SubmitApplicationConsumer.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 757d8b9f..5228403e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -42,7 +42,7 @@ class SubmitApplicationConsumer( } private fun updateGraduationDate(submitApplicationEvent: SubmitApplicationEvent) { - graduationInfoService.changeGraduationDate( + graduationInfoService.changeGraduationInfo( submitApplicationEvent.receiptCode, submitApplicationEvent.graduationDate ) @@ -93,16 +93,16 @@ class SubmitApplicationConsumer( } } - private fun updateGraduationInformation(event: SubmitApplicationEvent) { + private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { graduationInfoService.updateGraduationInformation( - event.receiptCode, + submitApplicationEvent.receiptCode, UpdateGraduationInformationRequest( gradeNumber = "2", classNumber = "1", studentNumber = "15", - schoolCode = event.schoolCode, - teacherName = event.teacherName, - teacherTel = event.schoolPhone + schoolCode = submitApplicationEvent.schoolCode, + teacherName = submitApplicationEvent.teacherName, + teacherTel = submitApplicationEvent.schoolPhone ) ) } From 68e722f9772c0fbe2342e94b0d18415f2d04dd57 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:12:07 +0900 Subject: [PATCH 19/96] refactor ( #74 ) : GraduationInfoService --- .../domain/graduationInfo/service/GraduationInfoService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt index 09ce8d8e..6b5029f1 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/service/GraduationInfoService.kt @@ -38,7 +38,7 @@ class GraduationInfoService( } } - fun changeGraduationDate(receiptCode: Long, graduateDate: YearMonth) { + fun changeGraduationInfo(receiptCode: Long, graduateDate: YearMonth) { val application = graduationInfoQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) ?: throw ApplicationExceptions.ApplicationNotFoundException() From 52857cf33577f1968526ebb4767363375d8723f1 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:19:08 +0900 Subject: [PATCH 20/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationUseCase=EC=9D=98=20createSubmissionData=EC=9D=98=20Submiss?= =?UTF-8?q?ionData=EC=97=90=20gradeNumber,=20classNumber,=20studentNumber?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/usecase/SubmitApplicationUseCase.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index a4ac3553..33296ce0 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -71,6 +71,9 @@ class SubmitApplicationUseCase( userId = userId, educationalStatus = request.educationalStatus, graduationDate = request.graduationDate, + gradeNumber = request.studentId.substring(0, 1), + classNumber = request.studentId.substring(1, 2), + studentNumber = request.studentId.substring(2), schoolCode = request.schoolCode, teacherName = request.teacherName, schoolPhone = request.schoolPhone, From 7e942a0372802a959fe8c3b741736c4ef5a2e93c Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:19:37 +0900 Subject: [PATCH 21/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20SubmissionData?= =?UTF-8?q?=EC=97=90=20gradeNumber,=20classNumber,=20studentNumber=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/domain/application/event/dto/SubmissionData.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt index d5d71c72..a1deea5e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt @@ -10,6 +10,9 @@ data class SubmissionData( val userId: UUID, val educationalStatus: EducationalStatus, val graduationDate: YearMonth, + val gradeNumber: String, + val classNumber: String, + val studentNumber: String, val schoolCode: String, val teacherName: String, val schoolPhone: String, From bdc849bd5260a7332d2f8213d5eaab8a3db1b38d Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:20:06 +0900 Subject: [PATCH 22/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20=ED=95=98?= =?UTF-8?q?=EB=93=9C=20=EC=BD=94=EB=94=A9=EB=90=98=EC=96=B4=EC=9E=88?= =?UTF-8?q?=EB=8D=98=20updateGraduationInformation=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/event/SubmitApplicationConsumer.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 5228403e..b8ac22ca 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -97,9 +97,9 @@ class SubmitApplicationConsumer( graduationInfoService.updateGraduationInformation( submitApplicationEvent.receiptCode, UpdateGraduationInformationRequest( - gradeNumber = "2", - classNumber = "1", - studentNumber = "15", + gradeNumber = submitApplicationEvent.gradeNumber, + classNumber = submitApplicationEvent.classNumber, + studentNumber = submitApplicationEvent.studentNumber, schoolCode = submitApplicationEvent.schoolCode, teacherName = submitApplicationEvent.teacherName, teacherTel = submitApplicationEvent.schoolPhone From 3a85312786520d5fce53578603fee107f46ae226 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:20:26 +0900 Subject: [PATCH 23/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20SubmitApplicatio?= =?UTF-8?q?nEvent=EC=97=90=20gradeNumber,=20classNumber,=20studentNumber?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/event/dto/SubmitApplicationEvent.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt index cfb9faad..2ec8aba5 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt @@ -10,6 +10,9 @@ data class SubmitApplicationEvent( val userId: UUID, val educationalStatus: EducationalStatus, val graduationDate: YearMonth, + val gradeNumber: String, + val classNumber: String, + val studentNumber: String, val schoolCode: String, val teacherName: String, val schoolPhone: String, From 574868d504b3f7c03a5d46f61635417efc51f089 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:21:55 +0900 Subject: [PATCH 24/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20ApplicationProdu?= =?UTF-8?q?cer=EC=97=90=20gradeNumber,=20classNumber,=20studentNumber=20?= =?UTF-8?q?=ED=95=84=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 --- .../domain/application/event/ApplicationProducer.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 85ae53f8..934381ad 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -36,6 +36,9 @@ class ApplicationProducer( userId = submissionData.userId, educationalStatus = submissionData.educationalStatus, graduationDate = submissionData.graduationDate, + gradeNumber = submissionData.gradeNumber, + classNumber = submissionData.classNumber, + studentNumber = submissionData.studentNumber, schoolCode = submissionData.schoolCode, teacherName = submissionData.teacherName, schoolPhone = submissionData.schoolPhone, From 3fc93799c7d42e39765d479a304fbd972474fc70 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:40:15 +0900 Subject: [PATCH 25/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationConsumer=EC=9D=98=20updateGraduationDate=20->=20updateGrad?= =?UTF-8?q?uationInfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/event/SubmitApplicationConsumer.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index b8ac22ca..437a2f2b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -29,7 +29,7 @@ class SubmitApplicationConsumer( val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) initializeApplicationCase(submitApplicationEvent) - updateGraduationDate(submitApplicationEvent) + updateGraduationInfo(submitApplicationEvent) updateScore(submitApplicationEvent) updateGraduationInformation(submitApplicationEvent) } @@ -41,7 +41,7 @@ class SubmitApplicationConsumer( ) } - private fun updateGraduationDate(submitApplicationEvent: SubmitApplicationEvent) { + private fun updateGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { graduationInfoService.changeGraduationInfo( submitApplicationEvent.receiptCode, submitApplicationEvent.graduationDate From 48bd716485b5f36c6ff15c1030c54989eff3cc2f Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 19:46:51 +0900 Subject: [PATCH 26/96] feat ( #74 ) : ConverterYearMonthAttribute --- .../config/ConverterYearMonthAttribute.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt new file mode 100644 index 00000000..9cec434f --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/graduationInfo/config/ConverterYearMonthAttribute.kt @@ -0,0 +1,17 @@ +package hs.kr.entrydsm.application.global.document.graduationInfo.config + +import java.time.YearMonth +import javax.persistence.AttributeConverter +import javax.persistence.Converter + +@Converter(autoApply = true) +class ConverterYearMonthAttribute : AttributeConverter { + + override fun convertToDatabaseColumn(attribute: YearMonth?): String? { + return attribute?.toString() + } + + override fun convertToEntityAttribute(dbData: String?): YearMonth? { + return dbData?.let { YearMonth.parse(it) } + } +} \ No newline at end of file From bb09ef4b6f40f62ff5401458a1868ba5162b1c31 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:11:24 +0900 Subject: [PATCH 27/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20educationalStatu?= =?UTF-8?q?s=EA=B0=80=20QUALIFICATION=5FEXAM=EC=9D=BC=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=20updateGraduationInformation=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=20=EC=95=88=EB=90=98=EA=B2=8C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=96=E3=85=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/event/SubmitApplicationConsumer.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 437a2f2b..fec0f63e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -94,6 +94,9 @@ class SubmitApplicationConsumer( } private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { + if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { + return + } graduationInfoService.updateGraduationInformation( submitApplicationEvent.receiptCode, UpdateGraduationInformationRequest( From b331683abc395ade565d35ee0a62902980e9e21d Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:16:13 +0900 Subject: [PATCH 28/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20ApplicationC?= =?UTF-8?q?aseService=EC=9D=98=20=20updateGraduationScore=20->=20updateGra?= =?UTF-8?q?duationCase=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/applicationCase/service/ApplicationCaseService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index b03fe96e..ec2159be 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -50,7 +50,7 @@ class ApplicationCaseService( } } - fun updateGraduationScore(application: Application, request: UpdateGraduationCaseRequest) { + fun updateGraduationCase(application: Application, request: UpdateGraduationCaseRequest) { val graduationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) if (graduationCase !is GraduationCase) { @@ -86,7 +86,7 @@ class ApplicationCaseService( fun updateGraduationScore(receiptCode: Long, request: UpdateGraduationCaseRequest) { val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) ?: throw ApplicationExceptions.ApplicationNotFoundException() - updateGraduationScore(application, request) + updateGraduationCase(application, request) } fun updateQualificationScore(application: Application, request: UpdateQualificationCaseRequest) { From 4402cc279e60a41339aad663f07435c5c1c1d207 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:17:06 +0900 Subject: [PATCH 29/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20UpdateGraduatio?= =?UTF-8?q?nCaseRequest=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20import=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/dto/request/UpdateGraduationCaseRequest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt index 0c0f697c..1a24f976 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateGraduationCaseRequest.kt @@ -1,7 +1,5 @@ package hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request -import hs.kr.entrydsm.application.domain.applicationCase.model.GraduationCase - data class UpdateGraduationCaseRequest( val volunteerTime: Int, val absenceDayCount: Int, From d13be61922ecf3a523dcfbacff719d62f4365901 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:30:40 +0900 Subject: [PATCH 30/96] refactor ( #74 ) : SubmissionApplicationRequest --- ...est.kt => SubmissionApplicationRequest.kt} | 34 +------------------ 1 file changed, 1 insertion(+), 33 deletions(-) rename casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/{SubmissionApplicationWebRequest.kt => SubmissionApplicationRequest.kt} (71%) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt similarity index 71% rename from casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt rename to casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt index 9f0a82c8..3b8eec75 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt @@ -7,7 +7,7 @@ import java.math.BigDecimal import java.time.LocalDate import java.time.YearMonth -data class SubmissionApplicationWebRequest( +data class SubmissionApplicationRequest( val applicantName: String, val applicantTel: String, val applicationType: ApplicationType, @@ -42,38 +42,6 @@ data class SubmissionApplicationWebRequest( val englishGrade: String, val techAndHomeGrade: String, -// val korean_3_1: Int, -// val social_3_1: Int, -// val history_3_1: Int, -// val math_3_1: Int, -// val science_3_1: Int, -// val tech_3_1: Int, -// val english_3_1: Int, -// -// val korean_3_2: Int, -// val social_3_2: Int, -// val history_3_2: Int, -// val math_3_2: Int, -// val science_3_2: Int, -// val tech_3_2: Int, -// val english_3_2: Int, -// -// val korean_2_2: Int, -// val social_2_2: Int, -// val history_2_2: Int, -// val math_2_2: Int, -// val science_2_2: Int, -// val tech_2_2: Int, -// val english_2_2: Int, -// -// val korean_2_1: Int, -// val social_2_1: Int, -// val history_2_1: Int, -// val math_2_1: Int, -// val science_2_1: Int, -// val tech_2_1: Int, -// val english_2_1: Int, - val gedKorean: BigDecimal = BigDecimal.ZERO, val gedSocial: BigDecimal = BigDecimal.ZERO, val gedHistory: BigDecimal = BigDecimal.ZERO, From 09733978f333e11680b23f464e2ead083be02f5e Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:31:23 +0900 Subject: [PATCH 31/96] refactor ( #74 ) : WebApplicationAdapter --- .../presentation/WebApplicationAdapter.kt | 65 ++++++++++++++++--- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index e297f3f1..c8b0555f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,9 +1,10 @@ package hs.kr.entrydsm.application.domain.application.presentation +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationStatusResponse import hs.kr.entrydsm.application.domain.file.presentation.converter.ImageFileConverter import hs.kr.entrydsm.application.domain.file.presentation.dto.response.UploadImageWebResponse @@ -23,14 +24,10 @@ class WebApplicationAdapter( private val getMyApplicationStatusUseCase: GetMyApplicationStatusUseCase, private val submitApplicationUseCase: SubmitApplicationUseCase ) { -// @PostMapping -// fun createApplication() { -// createApplicationUseCase.execute() -// } @PostMapping fun submission(@RequestBody @Valid request: SubmissionApplicationWebRequest) { - submitApplicationUseCase.execute(request) + submitApplicationUseCase.execute(request.toSubmissionApplicationRequest()) } @PostMapping("/photo") @@ -42,9 +39,59 @@ class WebApplicationAdapter( ) } -// @PostMapping("/final-submit") -// fun submitApplicationFinal() = submitApplicationFinalUseCase.execute() - @GetMapping("/status") fun getMyApplicationStatus(): GetApplicationStatusResponse = getMyApplicationStatusUseCase.execute() + + private fun SubmissionApplicationWebRequest.toSubmissionApplicationRequest(): SubmissionApplicationRequest = + SubmissionApplicationRequest( + applicantName = applicantName, + applicantTel = applicantTel, + applicationType = applicationType, + educationalStatus = educationalStatus, + birthDate = birthDate, + applicantGender = applicantGender, + streetAddress = streetAddress, + postalCode = postalCode, + detailAddress = detailAddress, + isDaejeon = isDaejeon, + parentName = parentName, + parentTel = parentTel, + parentRelation = parentRelation, + guardianGender = guardianGender, + schoolCode = schoolCode, + schoolName = schoolName, + studentId = studentId, + schoolPhone = schoolPhone, + teacherName = teacherName, + nationalMeritChild = nationalMeritChild, + specialAdmissionTarget = specialAdmissionTarget, + graduationDate = graduationDate, + studyPlan = studyPlan, + selfIntroduce = selfIntroduce, + + koreanGrade = koreanGrade, + socialGrade = socialGrade, + historyGrade = historyGrade, + mathGrade = mathGrade, + scienceGrade = scienceGrade, + englishGrade = englishGrade, + techAndHomeGrade = techAndHomeGrade, + + gedKorean = gedKorean, + gedSocial = gedSocial, + gedHistory = gedHistory, + gedMath = gedMath, + gedScience = gedScience, + gedTech = gedTech, + gedEnglish = gedEnglish, + + absence = absence, + tardiness = tardiness, + earlyLeave = earlyLeave, + classExit = classExit, + volunteer = volunteer, + + algorithmAward = algorithmAward, + infoProcessingCert = infoProcessingCert + ) } From d9f080f4f754d341708a00ed10ebc8093f53f504 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:33:18 +0900 Subject: [PATCH 32/96] feat ( #74 ) : SubmissionApplicationWebRequest --- .../SubmissionApplicationWebRequest.kt | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt new file mode 100644 index 00000000..22108e84 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt @@ -0,0 +1,173 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.application.model.types.Sex +import java.math.BigDecimal +import java.time.LocalDate +import java.time.YearMonth +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.Min +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull +import javax.validation.constraints.Past +import javax.validation.constraints.Pattern +import javax.validation.constraints.Size + +data class SubmissionApplicationWebRequest( + + @field:NotBlank + @field:Size(max = 10) + val applicantName: String, + + @field:NotBlank + @field:Pattern( + regexp = "^01[0-9]-?[0-9]{3,4}-?[0-9]{4}$", + message = "전화번호 형식이 올바르지 않습니다" + ) + val applicantTel: String, + + @field:NotNull + val applicationType: ApplicationType, + + @field:NotNull + val educationalStatus: EducationalStatus, + + @field:NotNull + @field:Past + val birthDate: LocalDate, + + @field:NotNull + val applicantGender: Sex, + + @field:NotBlank + val streetAddress: String, + + @field:NotBlank + val postalCode: String, + + @field:NotBlank + val detailAddress: String, + + @field:NotNull + val isDaejeon: Boolean, + + @field:NotBlank + @field:Size(max = 20) + val parentName: String, + + @field:NotBlank + @field:Pattern( + regexp = "^01[0-9]-?[0-9]{3,4}-?[0-9]{4}$" + ) + val parentTel: String, + + @field:NotBlank + val parentRelation: String, + + @field:NotBlank + val guardianGender: String, + + @field:NotBlank + val schoolCode: String, + + @field:NotBlank + val schoolName: String, + + @field:NotBlank + val studentId: String, + + @field:NotBlank + val schoolPhone: String, + + @field:NotBlank + val teacherName: String, + + @field:NotNull + val nationalMeritChild: Boolean, + + @field:NotNull + val specialAdmissionTarget: Boolean, + + @field:NotNull + val graduationDate: YearMonth, + + @field:NotBlank + @field:Size(max = 1500) + val studyPlan: String, + + @field:NotBlank + @field:Size(max = 1500) + val selfIntroduce: String, + + @field:NotBlank + val koreanGrade: String, + + @field:NotBlank + val socialGrade: String, + + @field:NotBlank + val historyGrade: String, + + @field:NotBlank + val mathGrade: String, + + @field:NotBlank + val scienceGrade: String, + + @field:NotBlank + val englishGrade: String, + + @field:NotBlank + val techAndHomeGrade: String, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedKorean: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedSocial: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedHistory: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedMath: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedScience: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedTech: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin("0.0") + @field:DecimalMax("100.0") + val gedEnglish: BigDecimal = BigDecimal.ZERO, + + @field:Min(0) + val absence: Int, + + @field:Min(0) + val tardiness: Int, + + @field:Min(0) + val earlyLeave: Int, + + @field:Min(0) + val classExit: Int, + + @field:Min(0) + val volunteer: Int, + + @field:NotNull + val algorithmAward: Boolean, + + @field:NotNull + val infoProcessingCert: Boolean +) From 7ffbd6e047c565db937781181df37897e1d422ec Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:39:45 +0900 Subject: [PATCH 33/96] refactor ( #74 ) : SubmissionApplicationWebRequest --- .../SubmissionApplicationWebRequest.kt | 122 ++++++++---------- 1 file changed, 56 insertions(+), 66 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt index 22108e84..302c34b8 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt @@ -11,163 +11,153 @@ import javax.validation.constraints.DecimalMin import javax.validation.constraints.Min import javax.validation.constraints.NotBlank import javax.validation.constraints.NotNull -import javax.validation.constraints.Past -import javax.validation.constraints.Pattern import javax.validation.constraints.Size data class SubmissionApplicationWebRequest( - @field:NotBlank - @field:Size(max = 10) + @field:NotBlank(message = "지원자 이름은 필수입니다") + @field:Size(max = 10, message = "지원자 이름은 10자 이하여야 합니다") val applicantName: String, - @field:NotBlank - @field:Pattern( - regexp = "^01[0-9]-?[0-9]{3,4}-?[0-9]{4}$", - message = "전화번호 형식이 올바르지 않습니다" - ) + @field:NotBlank(message = "지원자 전화번호는 필수입니다") val applicantTel: String, - @field:NotNull + @field:NotNull(message = "지원 유형은 필수입니다") val applicationType: ApplicationType, - @field:NotNull + @field:NotNull(message = "학력 상태는 필수입니다") val educationalStatus: EducationalStatus, - @field:NotNull - @field:Past + @field:NotNull(message = "생년월일은 필수입니다") val birthDate: LocalDate, - @field:NotNull + @field:NotNull(message = "지원자 성별은 필수입니다") val applicantGender: Sex, - @field:NotBlank + @field:NotBlank(message = "주소는 필수입니다") val streetAddress: String, - @field:NotBlank + @field:NotBlank(message = "우편번호는 필수입니다") val postalCode: String, - @field:NotBlank + @field:NotBlank(message = "상세 주소는 필수입니다") val detailAddress: String, - @field:NotNull + @field:NotNull(message = "대전 지역 여부는 필수입니다") val isDaejeon: Boolean, - @field:NotBlank - @field:Size(max = 20) + @field:NotBlank(message = "보호자 이름은 필수입니다") + @field:Size(max = 20, message = "보호자 이름은 20자 이하여야 합니다") val parentName: String, - @field:NotBlank - @field:Pattern( - regexp = "^01[0-9]-?[0-9]{3,4}-?[0-9]{4}$" - ) + @field:NotBlank(message = "보호자 전화번호는 필수입니다") val parentTel: String, - @field:NotBlank + @field:NotBlank(message = "보호자 관계는 필수입니다") val parentRelation: String, - @field:NotBlank + @field:NotBlank(message = "보호자 성별은 필수입니다") val guardianGender: String, - @field:NotBlank + @field:NotBlank(message = "학교 코드는 필수입니다") val schoolCode: String, - @field:NotBlank + @field:NotBlank(message = "학교명은 필수입니다") val schoolName: String, - @field:NotBlank + @field:NotBlank(message = "학번은 필수입니다") val studentId: String, - @field:NotBlank + @field:NotBlank(message = "학교 전화번호는 필수입니다") val schoolPhone: String, - @field:NotBlank + @field:NotBlank(message = "담임 교사 이름은 필수입니다") val teacherName: String, - @field:NotNull + @field:NotNull(message = "국가유공자 자녀 여부는 필수입니다") val nationalMeritChild: Boolean, - @field:NotNull + @field:NotNull(message = "특별전형 대상 여부는 필수입니다") val specialAdmissionTarget: Boolean, - @field:NotNull + @field:NotNull(message = "졸업(예정)일은 필수입니다") val graduationDate: YearMonth, - @field:NotBlank - @field:Size(max = 1500) + @field:NotBlank(message = "학업 계획서는 필수입니다") + @field:Size(max = 1500, message = "학업 계획서는 1500자 이하여야 합니다") val studyPlan: String, - @field:NotBlank - @field:Size(max = 1500) + @field:NotBlank(message = "자기소개서는 필수입니다") + @field:Size(max = 1500, message = "자기소개서는 1500자 이하여야 합니다") val selfIntroduce: String, - @field:NotBlank + @field:NotNull(message = "국어 성적은 필수입니다") val koreanGrade: String, - @field:NotBlank + @field:NotNull(message = "사회 성적은 필수입니다") val socialGrade: String, - @field:NotBlank + @field:NotNull(message = "역사 성적은 필수입니다") val historyGrade: String, - @field:NotBlank + @field:NotNull(message = "수학 성적은 필수입니다") val mathGrade: String, - @field:NotBlank + @field:NotNull(message = "과학 성적은 필수입니다") val scienceGrade: String, - @field:NotBlank + @field:NotNull(message = "영어 성적은 필수입니다") val englishGrade: String, - @field:NotBlank + @field:NotNull(message = "기술·가정 성적은 필수입니다") val techAndHomeGrade: String, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 국어 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 국어 점수는 100점 이하여야 합니다") val gedKorean: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 사회 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 사회 점수는 100점 이하여야 합니다") val gedSocial: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") val gedHistory: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 수학 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 수학 점수는 100점 이하여야 합니다") val gedMath: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 과학 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 과학 점수는 100점 이하여야 합니다") val gedScience: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 기술 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 기술 점수는 100점 이하여야 합니다") val gedTech: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") - @field:DecimalMax("100.0") + @field:DecimalMin(value = "0.0", message = "GED 영어 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 영어 점수는 100점 이하여야 합니다") val gedEnglish: BigDecimal = BigDecimal.ZERO, - @field:Min(0) + @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") val absence: Int, - @field:Min(0) + @field:Min(value = 0, message = "지각 횟수는 0 이상이어야 합니다") val tardiness: Int, - @field:Min(0) + @field:Min(value = 0, message = "조퇴 횟수는 0 이상이어야 합니다") val earlyLeave: Int, - @field:Min(0) + @field:Min(value = 0, message = "결과 횟수는 0 이상이어야 합니다") val classExit: Int, - @field:Min(0) + @field:Min(value = 0, message = "봉사 시간은 0 이상이어야 합니다") val volunteer: Int, - @field:NotNull + @field:NotNull(message = "알고리즘 수상 여부는 필수입니다") val algorithmAward: Boolean, - @field:NotNull + @field:NotNull(message = "자격증 여부는 필수입니다") val infoProcessingCert: Boolean ) From 3aa7cb3bc3cacc287bdbe86d9e31bc185618d337 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:47:19 +0900 Subject: [PATCH 34/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmissionAp?= =?UTF-8?q?plicationWebRequest=EC=9D=98=20studentId=205=EC=9E=90=EB=A6=AC?= =?UTF-8?q?=EB=A1=9C=20=EA=B3=A0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/dto/request/SubmissionApplicationWebRequest.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt index 302c34b8..5f17dfbb 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt @@ -66,6 +66,7 @@ data class SubmissionApplicationWebRequest( val schoolName: String, @field:NotBlank(message = "학번은 필수입니다") + @field:Size(min = 5, max = 5, message = "학번은 5자리여야 합니다") val studentId: String, @field:NotBlank(message = "학교 전화번호는 필수입니다") From c11d1e8679221e3126bef492bc9f3a103b824474 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:49:36 +0900 Subject: [PATCH 35/96] refactor ( #74 ) : submission -> submitApplication --- .../domain/application/presentation/WebApplicationAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index c8b0555f..562c33cc 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -26,7 +26,7 @@ class WebApplicationAdapter( ) { @PostMapping - fun submission(@RequestBody @Valid request: SubmissionApplicationWebRequest) { + fun submitApplication(@RequestBody @Valid request: SubmissionApplicationWebRequest) { submitApplicationUseCase.execute(request.toSubmissionApplicationRequest()) } From 83e8adbdd980c3724b72762d3f206e629603db92 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:53:09 +0900 Subject: [PATCH 36/96] feat ( #74 ) : SubmitApplicationMapper --- .../mapper/SubmitApplicationMapper.kt | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt new file mode 100644 index 00000000..c3ca9647 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt @@ -0,0 +1,75 @@ +package hs.kr.entrydsm.application.domain.application.mapper + +import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData +import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData +import hs.kr.entrydsm.application.domain.application.model.Application +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.user.model.User +import java.util.UUID + +object SubmitApplicationMapper { + + fun toApplication(request: SubmissionApplicationRequest, user: User): Application { + return request.run { + Application( + applicantName = user.name, + applicantTel = user.phoneNumber, + birthDate = birthDate, + sex = applicantGender, + streetAddress = streetAddress, + postalCode = postalCode, + detailAddress = detailAddress, + isDaejeon = isDaejeon, + parentName = parentName, + parentTel = parentTel, + parentRelation = parentRelation, + educationalStatus = educationalStatus, + applicationType = applicationType, + studyPlan = studyPlan, + selfIntroduce = selfIntroduce, + userId = user.id + ) + } + } + + fun toSubmissionData( + request: SubmissionApplicationRequest, + application: Application, + userId: UUID + ): SubmissionData { + return SubmissionData( + receiptCode = application.receiptCode, + userId = userId, + educationalStatus = request.educationalStatus, + graduationDate = request.graduationDate, + gradeNumber = request.studentId.substring(0, 1), + classNumber = request.studentId.substring(1, 2), + studentNumber = request.studentId.substring(2), + schoolCode = request.schoolCode, + teacherName = request.teacherName, + schoolPhone = request.schoolPhone, + scoreData = ScoreData( + koreanGrade = request.koreanGrade, + socialGrade = request.socialGrade, + historyGrade = request.historyGrade, + mathGrade = request.mathGrade, + scienceGrade = request.scienceGrade, + englishGrade = request.englishGrade, + techAndHomeGrade = request.techAndHomeGrade, + gedKorean = request.gedKorean, + gedSocial = request.gedSocial, + gedHistory = request.gedHistory, + gedMath = request.gedMath, + gedScience = request.gedScience, + gedEnglish = request.gedEnglish, + absence = request.absence, + tardiness = request.tardiness, + earlyLeave = request.earlyLeave, + classExit = request.classExit, + volunteer = request.volunteer, + algorithmAward = request.algorithmAward, + infoProcessingCert = request.infoProcessingCert + ) + ) + } +} From 8520f09de5083daff83e1ddf1239c0a1052c26b3 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:53:45 +0900 Subject: [PATCH 37/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationUseCase=EC=97=90=20SubmitApplicationMapper=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/SubmitApplicationUseCase.kt | 80 ++----------------- 1 file changed, 7 insertions(+), 73 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 33296ce0..1539cf4b 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -1,18 +1,14 @@ package hs.kr.entrydsm.application.domain.application.usecase -import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData -import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.model.Application +import hs.kr.entrydsm.application.domain.application.mapper.SubmitApplicationMapper import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationWebRequest -import hs.kr.entrydsm.application.domain.user.model.User +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort -import java.util.UUID @UseCase class SubmitApplicationUseCase( @@ -23,82 +19,20 @@ class SubmitApplicationUseCase( private val queryApplicationPort: QueryApplicationPort ) { - fun execute(request: SubmissionApplicationWebRequest) { + fun execute(request: SubmissionApplicationRequest) { val userId = securityPort.getCurrentUserId() val user = applicationQueryUserPort.queryUserByUserId(userId) if (queryApplicationPort.isExistsApplicationByUserId(userId)) { throw ApplicationExceptions.ApplicationExistsException() } - val application = commandApplicationPort.save(createWithUserInfo(request, user)) + val application = commandApplicationPort.save( + SubmitApplicationMapper.toApplication(request, user) + ) applicationEventPort.submitApplication( - createSubmissionData(application, userId, request) + SubmitApplicationMapper.toSubmissionData(request, application, userId) ) applicationEventPort.create(application.receiptCode, userId) } - - private fun createWithUserInfo(request: SubmissionApplicationWebRequest, user: User): Application { - return request.run { - Application( - applicantName = user.name, - applicantTel = user.phoneNumber, - birthDate = birthDate, - sex = applicantGender, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - isDaejeon = isDaejeon, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - educationalStatus = educationalStatus, - applicationType = applicationType, - studyPlan = studyPlan, - selfIntroduce = selfIntroduce, - userId = user.id - ) - } - } - - private fun createSubmissionData( - application: Application, - userId: UUID, - request: SubmissionApplicationWebRequest - ): SubmissionData { - return SubmissionData( - receiptCode = application.receiptCode, - userId = userId, - educationalStatus = request.educationalStatus, - graduationDate = request.graduationDate, - gradeNumber = request.studentId.substring(0, 1), - classNumber = request.studentId.substring(1, 2), - studentNumber = request.studentId.substring(2), - schoolCode = request.schoolCode, - teacherName = request.teacherName, - schoolPhone = request.schoolPhone, - scoreData = ScoreData( - koreanGrade = request.koreanGrade, - socialGrade = request.socialGrade, - historyGrade = request.historyGrade, - mathGrade = request.mathGrade, - scienceGrade = request.scienceGrade, - englishGrade = request.englishGrade, - techAndHomeGrade = request.techAndHomeGrade, - gedKorean = request.gedKorean, - gedSocial = request.gedSocial, - gedHistory = request.gedHistory, - gedMath = request.gedMath, - gedScience = request.gedScience, - gedEnglish = request.gedEnglish, - absence = request.absence, - tardiness = request.tardiness, - earlyLeave = request.earlyLeave, - classExit = request.classExit, - volunteer = request.volunteer, - algorithmAward = request.algorithmAward, - infoProcessingCert = request.infoProcessingCert - ) - ) - } } \ No newline at end of file From 68ae7694eae2e1fb751833c421c9c3563d6e8cdd Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 22:55:20 +0900 Subject: [PATCH 38/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20=ED=95=99?= =?UTF-8?q?=EB=B2=88=204=EC=9E=90=EB=A6=AC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/SubmissionApplicationWebRequest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt index 5f17dfbb..161af41e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt @@ -47,7 +47,7 @@ data class SubmissionApplicationWebRequest( val isDaejeon: Boolean, @field:NotBlank(message = "보호자 이름은 필수입니다") - @field:Size(max = 20, message = "보호자 이름은 20자 이하여야 합니다") + @field:Size(max = 10, message = "보호자 이름은 10자 이하여야 합니다") val parentName: String, @field:NotBlank(message = "보호자 전화번호는 필수입니다") @@ -66,7 +66,7 @@ data class SubmissionApplicationWebRequest( val schoolName: String, @field:NotBlank(message = "학번은 필수입니다") - @field:Size(min = 5, max = 5, message = "학번은 5자리여야 합니다") + @field:Size(min = 4, max = 4, message = "학번은 4자리여야 합니다") val studentId: String, @field:NotBlank(message = "학교 전화번호는 필수입니다") From ac1108b8d8bbacb9cf0d6b6b71650ff12277d255 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 23:03:28 +0900 Subject: [PATCH 39/96] feat ( #74 ) : SubmissionApplicationWebRequestMapper --- .../SubmissionApplicationWebRequestMapper.kt | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt new file mode 100644 index 00000000..edf09bd0 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt @@ -0,0 +1,56 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest + +fun SubmissionApplicationWebRequest.toSubmissionApplicationRequest(): SubmissionApplicationRequest = + SubmissionApplicationRequest( + applicantName = applicantName, + applicantTel = applicantTel, + applicationType = applicationType, + educationalStatus = educationalStatus, + birthDate = birthDate, + applicantGender = applicantGender, + streetAddress = streetAddress, + postalCode = postalCode, + detailAddress = detailAddress, + isDaejeon = isDaejeon, + parentName = parentName, + parentTel = parentTel, + parentRelation = parentRelation, + guardianGender = guardianGender, + schoolCode = schoolCode, + schoolName = schoolName, + studentId = studentId, + schoolPhone = schoolPhone, + teacherName = teacherName, + nationalMeritChild = nationalMeritChild, + specialAdmissionTarget = specialAdmissionTarget, + graduationDate = graduationDate, + studyPlan = studyPlan, + selfIntroduce = selfIntroduce, + + koreanGrade = koreanGrade, + socialGrade = socialGrade, + historyGrade = historyGrade, + mathGrade = mathGrade, + scienceGrade = scienceGrade, + englishGrade = englishGrade, + techAndHomeGrade = techAndHomeGrade, + + gedKorean = gedKorean, + gedSocial = gedSocial, + gedHistory = gedHistory, + gedMath = gedMath, + gedScience = gedScience, + gedTech = gedTech, + gedEnglish = gedEnglish, + + absence = absence, + tardiness = tardiness, + earlyLeave = earlyLeave, + classExit = classExit, + volunteer = volunteer, + + algorithmAward = algorithmAward, + infoProcessingCert = infoProcessingCert + ) From e685155fc86fb76f643458e59fd4bd48afc4fb0d Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 23:03:42 +0900 Subject: [PATCH 40/96] refactor ( #74 ) : WebApplicationAdapter --- .../presentation/WebApplicationAdapter.kt | 58 +------------------ 1 file changed, 2 insertions(+), 56 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index 562c33cc..304b1e99 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,10 +1,10 @@ package hs.kr.entrydsm.application.domain.application.presentation import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.toSubmissionApplicationRequest import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest import hs.kr.entrydsm.application.domain.application.usecase.dto.response.GetApplicationStatusResponse import hs.kr.entrydsm.application.domain.file.presentation.converter.ImageFileConverter import hs.kr.entrydsm.application.domain.file.presentation.dto.response.UploadImageWebResponse @@ -26,9 +26,8 @@ class WebApplicationAdapter( ) { @PostMapping - fun submitApplication(@RequestBody @Valid request: SubmissionApplicationWebRequest) { + fun submitApplication(@RequestBody @Valid request: SubmissionApplicationWebRequest) = submitApplicationUseCase.execute(request.toSubmissionApplicationRequest()) - } @PostMapping("/photo") fun uploadFile(@RequestPart(name = "image") file: MultipartFile): UploadImageWebResponse { @@ -41,57 +40,4 @@ class WebApplicationAdapter( @GetMapping("/status") fun getMyApplicationStatus(): GetApplicationStatusResponse = getMyApplicationStatusUseCase.execute() - - private fun SubmissionApplicationWebRequest.toSubmissionApplicationRequest(): SubmissionApplicationRequest = - SubmissionApplicationRequest( - applicantName = applicantName, - applicantTel = applicantTel, - applicationType = applicationType, - educationalStatus = educationalStatus, - birthDate = birthDate, - applicantGender = applicantGender, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - isDaejeon = isDaejeon, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - guardianGender = guardianGender, - schoolCode = schoolCode, - schoolName = schoolName, - studentId = studentId, - schoolPhone = schoolPhone, - teacherName = teacherName, - nationalMeritChild = nationalMeritChild, - specialAdmissionTarget = specialAdmissionTarget, - graduationDate = graduationDate, - studyPlan = studyPlan, - selfIntroduce = selfIntroduce, - - koreanGrade = koreanGrade, - socialGrade = socialGrade, - historyGrade = historyGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - techAndHomeGrade = techAndHomeGrade, - - gedKorean = gedKorean, - gedSocial = gedSocial, - gedHistory = gedHistory, - gedMath = gedMath, - gedScience = gedScience, - gedTech = gedTech, - gedEnglish = gedEnglish, - - absence = absence, - tardiness = tardiness, - earlyLeave = earlyLeave, - classExit = classExit, - volunteer = volunteer, - - algorithmAward = algorithmAward, - infoProcessingCert = infoProcessingCert - ) } From 35539ac580ee2d1c26e69c951aa5737e8bad29e4 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 23:16:59 +0900 Subject: [PATCH 41/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20ApplicationC?= =?UTF-8?q?aseService=EC=9D=98=20updateQualificationScore=20->=20updateQua?= =?UTF-8?q?lificationCase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/applicationCase/service/ApplicationCaseService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index ec2159be..37f38803 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -89,7 +89,7 @@ class ApplicationCaseService( updateGraduationCase(application, request) } - fun updateQualificationScore(application: Application, request: UpdateQualificationCaseRequest) { + fun updateQualificationCase(application: Application, request: UpdateQualificationCaseRequest) { val qualificationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) if (qualificationCase !is QualificationCase) { @@ -117,6 +117,6 @@ class ApplicationCaseService( fun updateQualificationScore(receiptCode: Long, request: UpdateQualificationCaseRequest) { val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) ?: throw ApplicationExceptions.ApplicationNotFoundException() - updateQualificationScore(application, request) + updateQualificationCase(application, request) } } \ No newline at end of file From 541e4db6c95b203484885c7173cf9eb2209f4191 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 23:23:19 +0900 Subject: [PATCH 42/96] docs ( #74 ) : SubmitApplicationUseCase --- .../domain/application/usecase/SubmitApplicationUseCase.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 1539cf4b..c47b2011 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -33,6 +33,10 @@ class SubmitApplicationUseCase( SubmitApplicationMapper.toSubmissionData(request, application, userId) ) - applicationEventPort.create(application.receiptCode, userId) + /* + 이 부분 없애고 submitApplication에서 기존 create-application도 처리 가능함. + Casper-Feed, Casper-Status에서 create-application topcit을 submit-application으로 로직 수정하기. + */ + //applicationEventPort.create(application.receiptCode, userId) } } \ No newline at end of file From f92fbf2efcc73f3f94eccefbd94c16d2c9e11018 Mon Sep 17 00:00:00 2001 From: coehgns Date: Mon, 29 Dec 2025 23:26:15 +0900 Subject: [PATCH 43/96] docs ( #74 ) : SubmitApplicationUseCase --- .../domain/application/usecase/SubmitApplicationUseCase.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index c47b2011..d53617a6 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -36,6 +36,7 @@ class SubmitApplicationUseCase( /* 이 부분 없애고 submitApplication에서 기존 create-application도 처리 가능함. Casper-Feed, Casper-Status에서 create-application topcit을 submit-application으로 로직 수정하기. + 하지만 위처럼 수정할 시 submitApplication이라는 이벤트의 의미가 흐려질 거 같음. */ //applicationEventPort.create(application.receiptCode, userId) } From 2687776376007b05ac8892a64f8226b967008261 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 08:35:43 +0900 Subject: [PATCH 44/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmissionAp?= =?UTF-8?q?plicationWebRequestMapper=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/presentation/WebApplicationAdapter.kt | 2 +- .../SubmissionApplicationWebRequestMapper.kt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) rename casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/{dto/request => mapper}/SubmissionApplicationWebRequestMapper.kt (94%) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index 304b1e99..895d314d 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,7 +1,7 @@ package hs.kr.entrydsm.application.domain.application.presentation import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.toSubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.application.presentation.mapper.toSubmissionApplicationRequest import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt similarity index 94% rename from casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt rename to casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt index edf09bd0..7866e1d6 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt @@ -1,5 +1,6 @@ -package hs.kr.entrydsm.application.domain.application.presentation.dto.request +package hs.kr.entrydsm.application.domain.application.presentation.mapper +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest fun SubmissionApplicationWebRequest.toSubmissionApplicationRequest(): SubmissionApplicationRequest = From f29fa0cbb721d2d3b1362a7b187738a1a602f902 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 08:35:50 +0900 Subject: [PATCH 45/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationMapper=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EA=B5=AC=EC=A1=B0?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/SubmitApplicationUseCase.kt | 15 ++++++++++++--- .../mapper/SubmitApplicationMapper.kt | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) rename casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/{ => usecase}/mapper/SubmitApplicationMapper.kt (97%) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index d53617a6..c6ad67f9 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -2,13 +2,15 @@ package hs.kr.entrydsm.application.domain.application.usecase import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions -import hs.kr.entrydsm.application.domain.application.mapper.SubmitApplicationMapper +import hs.kr.entrydsm.application.domain.application.usecase.mapper.SubmitApplicationMapper import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.user.model.User import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort +import java.util.UUID @UseCase class SubmitApplicationUseCase( @@ -20,8 +22,15 @@ class SubmitApplicationUseCase( ) { fun execute(request: SubmissionApplicationRequest) { - val userId = securityPort.getCurrentUserId() - val user = applicationQueryUserPort.queryUserByUserId(userId) + val userId = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f") + val user = User( + id = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f"), + name = "채도훈", + phoneNumber = "01098852668", + isParent = false + ) + //val userId = securityPort.getCurrentUserId() + //val user = applicationQueryUserPort.queryUserByUserId(userId) if (queryApplicationPort.isExistsApplicationByUserId(userId)) { throw ApplicationExceptions.ApplicationExistsException() } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt similarity index 97% rename from casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt rename to casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index c3ca9647..fa23944a 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -1,4 +1,4 @@ -package hs.kr.entrydsm.application.domain.application.mapper +package hs.kr.entrydsm.application.domain.application.usecase.mapper import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData From e0940636d3526ab16d610a8d9c4c8788b5d5f2bb Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 12:07:58 +0900 Subject: [PATCH 46/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20SubmitApplicati?= =?UTF-8?q?onUseCase=20=ED=95=98=EB=93=9C=20=EC=BD=94=EB=94=A9=EB=90=9C=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/SubmitApplicationUseCase.kt | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index c6ad67f9..6f5a6aa1 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -7,10 +7,8 @@ import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPor import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest -import hs.kr.entrydsm.application.domain.user.model.User import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort -import java.util.UUID @UseCase class SubmitApplicationUseCase( @@ -22,15 +20,8 @@ class SubmitApplicationUseCase( ) { fun execute(request: SubmissionApplicationRequest) { - val userId = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f") - val user = User( - id = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f"), - name = "채도훈", - phoneNumber = "01098852668", - isParent = false - ) - //val userId = securityPort.getCurrentUserId() - //val user = applicationQueryUserPort.queryUserByUserId(userId) + val userId = securityPort.getCurrentUserId() + val user = applicationQueryUserPort.queryUserByUserId(userId) if (queryApplicationPort.isExistsApplicationByUserId(userId)) { throw ApplicationExceptions.ApplicationExistsException() } From 1b77fe7b42a14eac49eb35c2ff5ceec63988a019 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 12:17:58 +0900 Subject: [PATCH 47/96] refactor ( #74 ) : SubmissionApplicationWebRequest ->SubmitApplicationWebRequest --- ...licationWebRequest.kt => SubmitApplicationWebRequest.kt} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/{SubmissionApplicationWebRequest.kt => SubmitApplicationWebRequest.kt} (97%) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt similarity index 97% rename from casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt rename to casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt index 161af41e..a4050078 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmissionApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -13,7 +13,7 @@ import javax.validation.constraints.NotBlank import javax.validation.constraints.NotNull import javax.validation.constraints.Size -data class SubmissionApplicationWebRequest( +data class SubmitApplicationWebRequest( @field:NotBlank(message = "지원자 이름은 필수입니다") @field:Size(max = 10, message = "지원자 이름은 10자 이하여야 합니다") @@ -85,11 +85,11 @@ data class SubmissionApplicationWebRequest( val graduationDate: YearMonth, @field:NotBlank(message = "학업 계획서는 필수입니다") - @field:Size(max = 1500, message = "학업 계획서는 1500자 이하여야 합니다") + @field:Size(max = 1600, message = "학업 계획서는 1500자 이하여야 합니다") val studyPlan: String, @field:NotBlank(message = "자기소개서는 필수입니다") - @field:Size(max = 1500, message = "자기소개서는 1500자 이하여야 합니다") + @field:Size(max = 1600, message = "자기소개서는 1500자 이하여야 합니다") val selfIntroduce: String, @field:NotNull(message = "국어 성적은 필수입니다") From 66bade26283057a7d2a1dae8ebab5817b3a0b633 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 12:18:30 +0900 Subject: [PATCH 48/96] refactor ( #74 ) : SubmissionApplicationRequest ->SubmitApplicationRequest --- .../usecase/SubmitApplicationUseCase.kt | 17 +++++++++++++---- ...onRequest.kt => SubmitApplicationRequest.kt} | 2 +- .../usecase/mapper/SubmitApplicationMapper.kt | 6 +++--- .../presentation/WebApplicationAdapter.kt | 8 ++++---- .../SubmissionApplicationWebRequestMapper.kt | 8 ++++---- 5 files changed, 25 insertions(+), 16 deletions(-) rename casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/{SubmissionApplicationRequest.kt => SubmitApplicationRequest.kt} (98%) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 6f5a6aa1..a0c52f92 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -6,9 +6,11 @@ import hs.kr.entrydsm.application.domain.application.usecase.mapper.SubmitApplic import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPort import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest +import hs.kr.entrydsm.application.domain.user.model.User import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort +import java.util.UUID @UseCase class SubmitApplicationUseCase( @@ -19,9 +21,16 @@ class SubmitApplicationUseCase( private val queryApplicationPort: QueryApplicationPort ) { - fun execute(request: SubmissionApplicationRequest) { - val userId = securityPort.getCurrentUserId() - val user = applicationQueryUserPort.queryUserByUserId(userId) + fun execute(request: SubmitApplicationRequest) { + val userId = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f") + val user = User( + id = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f"), + name = "채도훈", + phoneNumber = "01098852668", + isParent = false + ) + //val userId = securityPort.getCurrentUserId() + //val user = applicationQueryUserPort.queryUserByUserId(userId) if (queryApplicationPort.isExistsApplicationByUserId(userId)) { throw ApplicationExceptions.ApplicationExistsException() } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt similarity index 98% rename from casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt rename to casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt index 3b8eec75..41fd1dbc 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmissionApplicationRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt @@ -7,7 +7,7 @@ import java.math.BigDecimal import java.time.LocalDate import java.time.YearMonth -data class SubmissionApplicationRequest( +data class SubmitApplicationRequest( val applicantName: String, val applicantTel: String, val applicationType: ApplicationType, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index fa23944a..9505067a 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -3,13 +3,13 @@ package hs.kr.entrydsm.application.domain.application.usecase.mapper import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.model.Application -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest import hs.kr.entrydsm.application.domain.user.model.User import java.util.UUID object SubmitApplicationMapper { - fun toApplication(request: SubmissionApplicationRequest, user: User): Application { + fun toApplication(request: SubmitApplicationRequest, user: User): Application { return request.run { Application( applicantName = user.name, @@ -33,7 +33,7 @@ object SubmitApplicationMapper { } fun toSubmissionData( - request: SubmissionApplicationRequest, + request: SubmitApplicationRequest, application: Application, userId: UUID ): SubmissionData { diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt index 895d314d..d2783a80 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/WebApplicationAdapter.kt @@ -1,7 +1,7 @@ package hs.kr.entrydsm.application.domain.application.presentation -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest -import hs.kr.entrydsm.application.domain.application.presentation.mapper.toSubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.presentation.mapper.toSubmitApplicationRequest import hs.kr.entrydsm.application.domain.application.usecase.GetMyApplicationStatusUseCase import hs.kr.entrydsm.application.domain.application.usecase.SubmitApplicationUseCase import hs.kr.entrydsm.application.domain.application.usecase.UploadPhotoUseCase @@ -26,8 +26,8 @@ class WebApplicationAdapter( ) { @PostMapping - fun submitApplication(@RequestBody @Valid request: SubmissionApplicationWebRequest) = - submitApplicationUseCase.execute(request.toSubmissionApplicationRequest()) + fun submitApplication(@RequestBody @Valid request: SubmitApplicationWebRequest) = + submitApplicationUseCase.execute(request.toSubmitApplicationRequest()) @PostMapping("/photo") fun uploadFile(@RequestPart(name = "image") file: MultipartFile): UploadImageWebResponse { diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt index 7866e1d6..490a2b75 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt @@ -1,10 +1,10 @@ package hs.kr.entrydsm.application.domain.application.presentation.mapper -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmissionApplicationWebRequest -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmissionApplicationRequest +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest -fun SubmissionApplicationWebRequest.toSubmissionApplicationRequest(): SubmissionApplicationRequest = - SubmissionApplicationRequest( +fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationRequest = + SubmitApplicationRequest( applicantName = applicantName, applicantTel = applicantTel, applicationType = applicationType, From 92b7501784734d7912391464740831bbc9d9678d Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 12:19:03 +0900 Subject: [PATCH 49/96] chore ( #74 ) : SubmitApplicationUseCase --- .../application/usecase/SubmitApplicationUseCase.kt | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index a0c52f92..2e64c440 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -7,10 +7,8 @@ import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPor import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest -import hs.kr.entrydsm.application.domain.user.model.User import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort -import java.util.UUID @UseCase class SubmitApplicationUseCase( @@ -22,15 +20,8 @@ class SubmitApplicationUseCase( ) { fun execute(request: SubmitApplicationRequest) { - val userId = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f") - val user = User( - id = UUID.fromString("5f2b8a90-c3d1-4e7a-9f8e-2c4b5d6a7e8f"), - name = "채도훈", - phoneNumber = "01098852668", - isParent = false - ) - //val userId = securityPort.getCurrentUserId() - //val user = applicationQueryUserPort.queryUserByUserId(userId) + val userId = securityPort.getCurrentUserId() + val user = applicationQueryUserPort.queryUserByUserId(userId) if (queryApplicationPort.isExistsApplicationByUserId(userId)) { throw ApplicationExceptions.ApplicationExistsException() } From c036b6b54bb98d078b83b6231a64b029db133383 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 16:20:17 +0900 Subject: [PATCH 50/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20CreateScoreA?= =?UTF-8?q?pplicationConsumer=EC=9D=98=20createScore=20topic=EC=9D=84=20SU?= =?UTF-8?q?BMIT=5FAPPLICATION=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/score/event/CreateScoreApplicationConsumer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt index 6e93d1cc..b2accf9c 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt @@ -23,7 +23,7 @@ class CreateScoreApplicationConsumer ( backoff = Backoff(delay = 100) ) @KafkaListener( - topics = [KafkaTopics.CREATE_APPLICATION], + topics = [KafkaTopics.SUBMIT_APPLICATION], groupId = "create-score", containerFactory = "kafkaListenerContainerFactory", ) From 90c1449fba4b68aa352a92f794319146d90ad6ea Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 16:22:38 +0900 Subject: [PATCH 51/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20=EA=B2=80?= =?UTF-8?q?=EC=A0=95=EA=B3=A0=EC=8B=9C=20=EA=B3=BC=EB=AA=A9=20=EC=9E=AC?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/event/dto/SubmissionData.kt | 3 ++- .../dto/request/SubmitApplicationRequest.kt | 5 +++-- .../usecase/mapper/SubmitApplicationMapper.kt | 3 ++- .../model/QualificationCase.kt | 8 ++++--- .../service/ApplicationCaseService.kt | 15 +++++++------ .../usecase/GetQualificationCaseUseCase.kt | 3 ++- .../usecase/UpdateQualificationCaseUseCase.kt | 3 ++- .../request/UpdateQualificationCaseRequest.kt | 4 ++-- .../response/GetQualificationCaseResponse.kt | 3 ++- .../application/event/ApplicationProducer.kt | 3 ++- .../event/dto/SubmitApplicationEvent.kt | 3 ++- .../request/SubmitApplicationWebRequest.kt | 22 +++++++++++-------- .../SubmissionApplicationWebRequestMapper.kt | 5 +++-- .../entity/QualificationCaseJpaEntity.kt | 3 ++- .../UpdateQualificationCaseWebRequest.kt | 4 +++- .../document/pdf/data/PdfDataConverter.kt | 2 +- .../PrintApplicationCheckListGenerator.kt | 2 +- .../PrintApplicationInfoGenerator.kt | 2 +- 18 files changed, 56 insertions(+), 37 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt index a1deea5e..e96894a3 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt @@ -29,7 +29,8 @@ data class ScoreData( val techAndHomeGrade: String, val gedKorean: BigDecimal, val gedSocial: BigDecimal, - val gedHistory: BigDecimal, + val gedOpt: BigDecimal, + //val gedHistory: BigDecimal, val gedMath: BigDecimal, val gedScience: BigDecimal, val gedEnglish: BigDecimal, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt index 41fd1dbc..2ac5d29f 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt @@ -44,11 +44,12 @@ data class SubmitApplicationRequest( val gedKorean: BigDecimal = BigDecimal.ZERO, val gedSocial: BigDecimal = BigDecimal.ZERO, - val gedHistory: BigDecimal = BigDecimal.ZERO, val gedMath: BigDecimal = BigDecimal.ZERO, val gedScience: BigDecimal = BigDecimal.ZERO, - val gedTech: BigDecimal = BigDecimal.ZERO, val gedEnglish: BigDecimal = BigDecimal.ZERO, + val gedOpt: BigDecimal = BigDecimal.ZERO, + //val gedHistory: BigDecimal = BigDecimal.ZERO, + //val gedTech: BigDecimal = BigDecimal.ZERO, val absence: Int, val tardiness: Int, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index 9505067a..02d18ec8 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -58,7 +58,8 @@ object SubmitApplicationMapper { techAndHomeGrade = request.techAndHomeGrade, gedKorean = request.gedKorean, gedSocial = request.gedSocial, - gedHistory = request.gedHistory, + //gedHistory = request.gedHistory, + gedOpt = request.gedOpt, gedMath = request.gedMath, gedScience = request.gedScience, gedEnglish = request.gedEnglish, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt index 60fc5602..331d5131 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt @@ -15,7 +15,9 @@ data class QualificationCase( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val historyGrade: BigDecimal = BigDecimal.ZERO, + val optGrade: BigDecimal = BigDecimal.ZERO, + //val historyGrade: BigDecimal = BigDecimal.ZERO, + // 일반전형 여부 val isCommon: Boolean = true, ) : ApplicationCase( @@ -37,7 +39,7 @@ data class QualificationCase( fun calculateAverageScore(): BigDecimal { val totalPoints = - historyGrade + + optGrade + socialGrade + mathGrade + englishGrade + @@ -55,7 +57,7 @@ data class QualificationCase( getScorePoint(mathGrade), getScorePoint(scienceGrade), getScorePoint(englishGrade), - getScorePoint(historyGrade) + getScorePoint(optGrade) ).sum() return BigDecimal(totalPoints).divide(BigDecimal(6), 3, RoundingMode.HALF_UP) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index 37f38803..b9c8a3e5 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -89,6 +89,12 @@ class ApplicationCaseService( updateGraduationCase(application, request) } + fun updateQualificationScore(receiptCode: Long, request: UpdateQualificationCaseRequest) { + val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + updateQualificationCase(application, request) + } + fun updateQualificationCase(application: Application, request: UpdateQualificationCaseRequest) { val qualificationCase = queryApplicationCasePort.queryApplicationCaseByApplication(application) @@ -103,7 +109,8 @@ class ApplicationCaseService( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - historyGrade = request.historyGrade, + optGrade = request.optGrade, + //historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize @@ -113,10 +120,4 @@ class ApplicationCaseService( applicationCaseEventPort.updateQualificationCase(qualificationCase) } - - fun updateQualificationScore(receiptCode: Long, request: UpdateQualificationCaseRequest) { - val application = applicationCaseQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) - ?: throw ApplicationExceptions.ApplicationNotFoundException() - updateQualificationCase(application, request) - } } \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt index f4772a33..09eac90f 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt @@ -32,7 +32,8 @@ class GetQualificationCaseUseCase( mathGrade = qualificationCase.mathGrade, scienceGrade = qualificationCase.scienceGrade, englishGrade = qualificationCase.englishGrade, - historyGrade = qualificationCase.historyGrade, + optGrade = qualificationCase.optGrade, + //historyGrade = qualificationCase.historyGrade, extraScore = qualificationCase.extraScoreItem.run { GetExtraScoreResponse( hasCertificate = hasCertificate, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt index 31efad3b..f56549c3 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt @@ -37,7 +37,8 @@ class UpdateQualificationCaseUseCase( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - historyGrade = request.historyGrade, + optGrade = request.optGrade, + //historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt index c2417c47..ae997a23 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt @@ -8,8 +8,8 @@ data class UpdateQualificationCaseRequest( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val historyGrade: BigDecimal = BigDecimal.ZERO, + val optGrade: BigDecimal = BigDecimal.ZERO, + //val historyGrade: BigDecimal = BigDecimal.ZERO, - //val optGrade: BigDecimal = BigDecimal.ZERO, val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt index 48916013..3afb62ea 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt @@ -8,6 +8,7 @@ data class GetQualificationCaseResponse( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val historyGrade: BigDecimal = BigDecimal.ZERO, + val optGrade: BigDecimal = BigDecimal.ZERO, + //val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: GetExtraScoreResponse ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 934381ad..fff2ef8b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -52,7 +52,8 @@ class ApplicationProducer( techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, gedKorean = submissionData.scoreData.gedKorean, gedSocial = submissionData.scoreData.gedSocial, - gedHistory = submissionData.scoreData.gedHistory, + gedOpt = submissionData.scoreData.gedOpt, + //gedHistory = submissionData.scoreData.gedHistory, gedMath = submissionData.scoreData.gedMath, gedScience = submissionData.scoreData.gedScience, gedEnglish = submissionData.scoreData.gedEnglish, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt index 2ec8aba5..067cf4a3 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt @@ -29,7 +29,8 @@ data class ApplicationScoreData( val techAndHomeGrade: String, val gedKorean: BigDecimal, val gedSocial: BigDecimal, - val gedHistory: BigDecimal, + val gedOpt: BigDecimal, + //val gedHistory: BigDecimal, val gedMath: BigDecimal, val gedScience: BigDecimal, val gedEnglish: BigDecimal, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt index a4050078..5434aed9 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -121,9 +121,9 @@ data class SubmitApplicationWebRequest( @field:DecimalMax(value = "100.0", message = "GED 사회 점수는 100점 이하여야 합니다") val gedSocial: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") - val gedHistory: BigDecimal = BigDecimal.ZERO, + @field:DecimalMin(value = "0.0", message = "GED 영어 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 영어 점수는 100점 이하여야 합니다") + val gedEnglish: BigDecimal = BigDecimal.ZERO, @field:DecimalMin(value = "0.0", message = "GED 수학 점수는 0점 이상이어야 합니다") @field:DecimalMax(value = "100.0", message = "GED 수학 점수는 100점 이하여야 합니다") @@ -133,13 +133,17 @@ data class SubmitApplicationWebRequest( @field:DecimalMax(value = "100.0", message = "GED 과학 점수는 100점 이하여야 합니다") val gedScience: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin(value = "0.0", message = "GED 기술 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 기술 점수는 100점 이하여야 합니다") - val gedTech: BigDecimal = BigDecimal.ZERO, + @field:DecimalMin(value = "0.0", message = "GED 선택과목 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 선택과목 점수는 100점 이하여야 합니다") + val gedOpt: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin(value = "0.0", message = "GED 영어 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 영어 점수는 100점 이하여야 합니다") - val gedEnglish: BigDecimal = BigDecimal.ZERO, + //@field:DecimalMin(value = "0.0", message = "GED 기술 점수는 0점 이상이어야 합니다") + //@field:DecimalMax(value = "100.0", message = "GED 기술 점수는 100점 이하여야 합니다") + //val gedTech: BigDecimal = BigDecimal.ZERO, + + //@field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") + //@field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") + //val gedHistory: BigDecimal = BigDecimal.ZERO, @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") val absence: Int, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt index 490a2b75..d8adea43 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt @@ -40,11 +40,12 @@ fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationR gedKorean = gedKorean, gedSocial = gedSocial, - gedHistory = gedHistory, gedMath = gedMath, gedScience = gedScience, - gedTech = gedTech, gedEnglish = gedEnglish, + gedOpt = gedOpt, + //gedHistory = gedHistory, + //gedTech = gedTech, absence = absence, tardiness = tardiness, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt index 8c304fba..090934e8 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt @@ -15,10 +15,11 @@ class QualificationCaseJpaEntity( override val extraScoreItem: ExtraScoreItem, val koreanGrade: BigDecimal, val socialGrade: BigDecimal, - val historyGrade: BigDecimal, + //val historyGrade: BigDecimal, val mathGrade: BigDecimal, val scienceGrade: BigDecimal, val englishGrade: BigDecimal, + val optGrade: BigDecimal ) : ApplicationCaseEntity( id = id, receiptCode = receiptCode, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt index 45125a22..45097065 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt @@ -19,7 +19,9 @@ data class UpdateQualificationCaseWebRequest( @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull val englishGrade: BigDecimal = BigDecimal.ZERO, @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val historyGrade: BigDecimal = BigDecimal.ZERO, + val optGrade: BigDecimal = BigDecimal.ZERO, + //@field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull + //val historyGrade: BigDecimal = BigDecimal.ZERO, @field:NotNull val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt index 511b02ae..a32dfb25 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt @@ -253,7 +253,7 @@ class PdfDataConverter( put("mathThirdGradeFirstSemester", applicationCase.mathGrade) put("scienceThirdGradeFirstSemester", applicationCase.scienceGrade) put("englishThirdGradeFirstSemester", applicationCase.englishGrade) - put("techAndHomeThirdGradeFirstSemester", applicationCase.historyGrade) + put("techAndHomeThirdGradeFirstSemester", applicationCase.optGrade) } } else if(applicationCase is GraduationCase) { val grades = applicationCase.gradesPerSubject() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt index f6312db1..8efa7d0b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt @@ -283,7 +283,7 @@ class PrintApplicationCheckListGenerator( getCell(dh + 13, 3).setCellValue("X") getCell(dh + 14, 3).setCellValue(qualificationCase.mathGrade.toString()) getCell(dh + 15, 3).setCellValue(qualificationCase.scienceGrade.toString()) - getCell(dh + 16, 3).setCellValue(qualificationCase.historyGrade.toString()) + getCell(dh + 16, 3).setCellValue(qualificationCase.optGrade.toString()) getCell(dh + 17, 3).setCellValue(qualificationCase.englishGrade.toString()) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt index 17deac24..32d2093e 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt @@ -121,7 +121,7 @@ class PrintApplicationInfoGenerator( row.createCell(17).setCellValue("X") row.createCell(18).setCellValue(applicationService.safeGetValue(qualificationCase.mathGrade)) row.createCell(19).setCellValue(applicationService.safeGetValue(qualificationCase.scienceGrade)) - row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.historyGrade)) + row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.optGrade)) row.createCell(21).setCellValue(applicationService.safeGetValue(qualificationCase.englishGrade)) for (i in 22..53) { row.createCell(i).setCellValue("X") From 5192e800f3bb42ba28dd699a82454049042a6315 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 16:22:48 +0900 Subject: [PATCH 52/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EB=A1=9C=EC=A7=81=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/WebApplicationCaseAdapter.kt | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt index 0236c787..62f0e9a7 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt @@ -19,49 +19,50 @@ class WebApplicationCaseAdapter( private val getGraduationCaseUseCase: GetGraduationCaseUseCase, private val getQualificationCaseUseCase: GetQualificationCaseUseCase, ) { - @PatchMapping("/graduation") - fun updateGraduationCase( - @RequestBody @Valid request: UpdateGraduationCaseWebRequest, - ) { - updateGraduationCaseUseCase.execute( - request.run { - UpdateGraduationCaseRequest( - volunteerTime = volunteerTime, - absenceDayCount = absenceDayCount, - lectureAbsenceCount = lectureAbsenceCount, - latenessCount = latenessCount, - earlyLeaveCount = earlyLeaveCount, - koreanGrade = koreanGrade, - socialGrade = socialGrade, - historyGrade = historyGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - techAndHomeGrade = techAndHomeGrade, - extraScore = extraScore - ) - } - ) - } +// @PatchMapping("/graduation") +// fun updateGraduationCase( +// @RequestBody @Valid request: UpdateGraduationCaseWebRequest, +// ) { +// updateGraduationCaseUseCase.execute( +// request.run { +// UpdateGraduationCaseRequest( +// volunteerTime = volunteerTime, +// absenceDayCount = absenceDayCount, +// lectureAbsenceCount = lectureAbsenceCount, +// latenessCount = latenessCount, +// earlyLeaveCount = earlyLeaveCount, +// koreanGrade = koreanGrade, +// socialGrade = socialGrade, +// historyGrade = historyGrade, +// mathGrade = mathGrade, +// scienceGrade = scienceGrade, +// englishGrade = englishGrade, +// techAndHomeGrade = techAndHomeGrade, +// extraScore = extraScore +// ) +// } +// ) +// } - @PatchMapping("/qualification") - fun updateQualificationCase( - @RequestBody @Valid request: UpdateQualificationCaseWebRequest, - ) { - updateQualificationCaseUseCase.execute( - request.run { - UpdateQualificationCaseRequest( - koreanGrade = koreanGrade, - socialGrade = socialGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - historyGrade = historyGrade, - extraScore = extraScore - ) - } - ) - } +// @PatchMapping("/qualification") +// fun updateQualificationCase( +// @RequestBody @Valid request: UpdateQualificationCaseWebRequest, +// ) { +// updateQualificationCaseUseCase.execute( +// request.run { +// UpdateQualificationCaseRequest( +// koreanGrade = koreanGrade, +// socialGrade = socialGrade, +// mathGrade = mathGrade, +// scienceGrade = scienceGrade, +// englishGrade = englishGrade, +// optGrade = optGrade, +// //historyGrade = historyGrade, +// extraScore = extraScore +// ) +// } +// ) +// } @GetMapping("/graduation") fun getGraduationCase() = getGraduationCaseUseCase.execute() From 6089bc3d699f43c4c5e3f063227e1a231474bc76 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 16:23:15 +0900 Subject: [PATCH 53/96] chore ( #74 ) : updateGraduationInfo -> initializeGraduationInfo --- .../event/SubmitApplicationConsumer.kt | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index fec0f63e..22e78454 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -29,7 +29,7 @@ class SubmitApplicationConsumer( val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) initializeApplicationCase(submitApplicationEvent) - updateGraduationInfo(submitApplicationEvent) + initializeGraduationInfo(submitApplicationEvent) updateScore(submitApplicationEvent) updateGraduationInformation(submitApplicationEvent) } @@ -41,13 +41,30 @@ class SubmitApplicationConsumer( ) } - private fun updateGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { + private fun initializeGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { graduationInfoService.changeGraduationInfo( submitApplicationEvent.receiptCode, submitApplicationEvent.graduationDate ) } + private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { + if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { + return + } + graduationInfoService.updateGraduationInformation( + submitApplicationEvent.receiptCode, + UpdateGraduationInformationRequest( + gradeNumber = submitApplicationEvent.gradeNumber, + classNumber = submitApplicationEvent.classNumber, + studentNumber = submitApplicationEvent.studentNumber, + schoolCode = submitApplicationEvent.schoolCode, + teacherName = submitApplicationEvent.teacherName, + teacherTel = submitApplicationEvent.schoolPhone + ) + ) + } + private fun updateScore(submitApplicationEvent: SubmitApplicationEvent) { when (submitApplicationEvent.educationalStatus) { EducationalStatus.QUALIFICATION_EXAM -> { @@ -59,7 +76,7 @@ class SubmitApplicationConsumer( mathGrade = submitApplicationEvent.scoreData.gedMath, scienceGrade = submitApplicationEvent.scoreData.gedScience, englishGrade = submitApplicationEvent.scoreData.gedEnglish, - historyGrade = submitApplicationEvent.scoreData.gedHistory, + optGrade = submitApplicationEvent.scoreData.gedOpt, extraScore = ExtraScoreRequest( hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward @@ -92,21 +109,4 @@ class SubmitApplicationConsumer( } } } - - private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { - if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { - return - } - graduationInfoService.updateGraduationInformation( - submitApplicationEvent.receiptCode, - UpdateGraduationInformationRequest( - gradeNumber = submitApplicationEvent.gradeNumber, - classNumber = submitApplicationEvent.classNumber, - studentNumber = submitApplicationEvent.studentNumber, - schoolCode = submitApplicationEvent.schoolCode, - teacherName = submitApplicationEvent.teacherName, - teacherTel = submitApplicationEvent.schoolPhone - ) - ) - } } \ No newline at end of file From 51f7b585da7f12bebe2bbeb1fabd3f5f1d4e0eb3 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 21:30:40 +0900 Subject: [PATCH 54/96] refactor ( #74 ) : optGrade -> historyGrade --- .../domain/application/event/dto/SubmissionData.kt | 3 +-- .../dto/request/SubmitApplicationRequest.kt | 4 +--- .../usecase/mapper/SubmitApplicationMapper.kt | 3 +-- .../applicationCase/model/QualificationCase.kt | 7 +++---- .../service/ApplicationCaseService.kt | 3 +-- .../usecase/GetQualificationCaseUseCase.kt | 3 +-- .../usecase/UpdateQualificationCaseUseCase.kt | 3 +-- .../dto/request/UpdateQualificationCaseRequest.kt | 3 +-- .../dto/response/GetQualificationCaseResponse.kt | 3 +-- .../application/event/ApplicationProducer.kt | 3 +-- .../application/event/SubmitApplicationConsumer.kt | 2 +- .../event/dto/SubmitApplicationEvent.kt | 3 +-- .../dto/request/SubmitApplicationWebRequest.kt | 14 +++----------- .../SubmissionApplicationWebRequestMapper.kt | 4 +--- .../domain/entity/QualificationCaseJpaEntity.kt | 3 +-- .../global/document/pdf/data/PdfDataConverter.kt | 3 ++- .../PrintApplicationCheckListGenerator.kt | 2 +- .../generator/PrintApplicationInfoGenerator.kt | 2 +- 18 files changed, 23 insertions(+), 45 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt index e96894a3..a1deea5e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt @@ -29,8 +29,7 @@ data class ScoreData( val techAndHomeGrade: String, val gedKorean: BigDecimal, val gedSocial: BigDecimal, - val gedOpt: BigDecimal, - //val gedHistory: BigDecimal, + val gedHistory: BigDecimal, val gedMath: BigDecimal, val gedScience: BigDecimal, val gedEnglish: BigDecimal, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt index 2ac5d29f..590d95ce 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt @@ -47,9 +47,7 @@ data class SubmitApplicationRequest( val gedMath: BigDecimal = BigDecimal.ZERO, val gedScience: BigDecimal = BigDecimal.ZERO, val gedEnglish: BigDecimal = BigDecimal.ZERO, - val gedOpt: BigDecimal = BigDecimal.ZERO, - //val gedHistory: BigDecimal = BigDecimal.ZERO, - //val gedTech: BigDecimal = BigDecimal.ZERO, + val gedHistory: BigDecimal = BigDecimal.ZERO, val absence: Int, val tardiness: Int, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index 02d18ec8..9505067a 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -58,8 +58,7 @@ object SubmitApplicationMapper { techAndHomeGrade = request.techAndHomeGrade, gedKorean = request.gedKorean, gedSocial = request.gedSocial, - //gedHistory = request.gedHistory, - gedOpt = request.gedOpt, + gedHistory = request.gedHistory, gedMath = request.gedMath, gedScience = request.gedScience, gedEnglish = request.gedEnglish, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt index 331d5131..2bb42b62 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/model/QualificationCase.kt @@ -15,8 +15,7 @@ data class QualificationCase( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, - //val historyGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, // 일반전형 여부 val isCommon: Boolean = true, @@ -39,7 +38,7 @@ data class QualificationCase( fun calculateAverageScore(): BigDecimal { val totalPoints = - optGrade + + historyGrade + socialGrade + mathGrade + englishGrade + @@ -57,7 +56,7 @@ data class QualificationCase( getScorePoint(mathGrade), getScorePoint(scienceGrade), getScorePoint(englishGrade), - getScorePoint(optGrade) + getScorePoint(historyGrade) ).sum() return BigDecimal(totalPoints).divide(BigDecimal(6), 3, RoundingMode.HALF_UP) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index b9c8a3e5..cedc9a9c 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -109,8 +109,7 @@ class ApplicationCaseService( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - optGrade = request.optGrade, - //historyGrade = request.historyGrade, + historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt index 09eac90f..f4772a33 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/GetQualificationCaseUseCase.kt @@ -32,8 +32,7 @@ class GetQualificationCaseUseCase( mathGrade = qualificationCase.mathGrade, scienceGrade = qualificationCase.scienceGrade, englishGrade = qualificationCase.englishGrade, - optGrade = qualificationCase.optGrade, - //historyGrade = qualificationCase.historyGrade, + historyGrade = qualificationCase.historyGrade, extraScore = qualificationCase.extraScoreItem.run { GetExtraScoreResponse( hasCertificate = hasCertificate, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt index f56549c3..31efad3b 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/UpdateQualificationCaseUseCase.kt @@ -37,8 +37,7 @@ class UpdateQualificationCaseUseCase( socialGrade = request.socialGrade, mathGrade = request.mathGrade, englishGrade = request.englishGrade, - optGrade = request.optGrade, - //historyGrade = request.historyGrade, + historyGrade = request.historyGrade, extraScoreItem = ExtraScoreItem( hasCertificate = request.extraScore.hasCertificate, hasCompetitionPrize = request.extraScore.hasCompetitionPrize diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt index ae997a23..9247bef0 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt @@ -8,8 +8,7 @@ data class UpdateQualificationCaseRequest( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, - //val historyGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: ExtraScoreRequest ) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt index 3afb62ea..48916013 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/response/GetQualificationCaseResponse.kt @@ -8,7 +8,6 @@ data class GetQualificationCaseResponse( val mathGrade: BigDecimal = BigDecimal.ZERO, val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, - val optGrade: BigDecimal = BigDecimal.ZERO, - //val historyGrade: BigDecimal = BigDecimal.ZERO, + val historyGrade: BigDecimal = BigDecimal.ZERO, val extraScore: GetExtraScoreResponse ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index fff2ef8b..934381ad 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -52,8 +52,7 @@ class ApplicationProducer( techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, gedKorean = submissionData.scoreData.gedKorean, gedSocial = submissionData.scoreData.gedSocial, - gedOpt = submissionData.scoreData.gedOpt, - //gedHistory = submissionData.scoreData.gedHistory, + gedHistory = submissionData.scoreData.gedHistory, gedMath = submissionData.scoreData.gedMath, gedScience = submissionData.scoreData.gedScience, gedEnglish = submissionData.scoreData.gedEnglish, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 22e78454..3d78a35b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -76,7 +76,7 @@ class SubmitApplicationConsumer( mathGrade = submitApplicationEvent.scoreData.gedMath, scienceGrade = submitApplicationEvent.scoreData.gedScience, englishGrade = submitApplicationEvent.scoreData.gedEnglish, - optGrade = submitApplicationEvent.scoreData.gedOpt, + historyGrade = submitApplicationEvent.scoreData.gedHistory, extraScore = ExtraScoreRequest( hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt index 067cf4a3..2ec8aba5 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmitApplicationEvent.kt @@ -29,8 +29,7 @@ data class ApplicationScoreData( val techAndHomeGrade: String, val gedKorean: BigDecimal, val gedSocial: BigDecimal, - val gedOpt: BigDecimal, - //val gedHistory: BigDecimal, + val gedHistory: BigDecimal, val gedMath: BigDecimal, val gedScience: BigDecimal, val gedEnglish: BigDecimal, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt index 5434aed9..a93df176 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -133,17 +133,9 @@ data class SubmitApplicationWebRequest( @field:DecimalMax(value = "100.0", message = "GED 과학 점수는 100점 이하여야 합니다") val gedScience: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin(value = "0.0", message = "GED 선택과목 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 선택과목 점수는 100점 이하여야 합니다") - val gedOpt: BigDecimal = BigDecimal.ZERO, - - //@field:DecimalMin(value = "0.0", message = "GED 기술 점수는 0점 이상이어야 합니다") - //@field:DecimalMax(value = "100.0", message = "GED 기술 점수는 100점 이하여야 합니다") - //val gedTech: BigDecimal = BigDecimal.ZERO, - - //@field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") - //@field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") - //val gedHistory: BigDecimal = BigDecimal.ZERO, + @field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") + val gedHistory: BigDecimal = BigDecimal.ZERO, @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") val absence: Int, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt index d8adea43..c0320f64 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt @@ -43,9 +43,7 @@ fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationR gedMath = gedMath, gedScience = gedScience, gedEnglish = gedEnglish, - gedOpt = gedOpt, - //gedHistory = gedHistory, - //gedTech = gedTech, + gedHistory = gedHistory, absence = absence, tardiness = tardiness, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt index 090934e8..8c304fba 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/domain/entity/QualificationCaseJpaEntity.kt @@ -15,11 +15,10 @@ class QualificationCaseJpaEntity( override val extraScoreItem: ExtraScoreItem, val koreanGrade: BigDecimal, val socialGrade: BigDecimal, - //val historyGrade: BigDecimal, + val historyGrade: BigDecimal, val mathGrade: BigDecimal, val scienceGrade: BigDecimal, val englishGrade: BigDecimal, - val optGrade: BigDecimal ) : ApplicationCaseEntity( id = id, receiptCode = receiptCode, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt index a32dfb25..f72dc69f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/document/pdf/data/PdfDataConverter.kt @@ -253,7 +253,8 @@ class PdfDataConverter( put("mathThirdGradeFirstSemester", applicationCase.mathGrade) put("scienceThirdGradeFirstSemester", applicationCase.scienceGrade) put("englishThirdGradeFirstSemester", applicationCase.englishGrade) - put("techAndHomeThirdGradeFirstSemester", applicationCase.optGrade) + // TODO 추후 역사로 수정해야 함. + put("techAndHomeThirdGradeFirstSemester", applicationCase.historyGrade) } } else if(applicationCase is GraduationCase) { val grades = applicationCase.gradesPerSubject() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt index 8efa7d0b..f6312db1 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationCheckListGenerator.kt @@ -283,7 +283,7 @@ class PrintApplicationCheckListGenerator( getCell(dh + 13, 3).setCellValue("X") getCell(dh + 14, 3).setCellValue(qualificationCase.mathGrade.toString()) getCell(dh + 15, 3).setCellValue(qualificationCase.scienceGrade.toString()) - getCell(dh + 16, 3).setCellValue(qualificationCase.optGrade.toString()) + getCell(dh + 16, 3).setCellValue(qualificationCase.historyGrade.toString()) getCell(dh + 17, 3).setCellValue(qualificationCase.englishGrade.toString()) } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt index 32d2093e..17deac24 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/global/excel/generator/PrintApplicationInfoGenerator.kt @@ -121,7 +121,7 @@ class PrintApplicationInfoGenerator( row.createCell(17).setCellValue("X") row.createCell(18).setCellValue(applicationService.safeGetValue(qualificationCase.mathGrade)) row.createCell(19).setCellValue(applicationService.safeGetValue(qualificationCase.scienceGrade)) - row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.optGrade)) + row.createCell(20).setCellValue(applicationService.safeGetValue(qualificationCase.historyGrade)) row.createCell(21).setCellValue(applicationService.safeGetValue(qualificationCase.englishGrade)) for (i in 22..53) { row.createCell(i).setCellValue("X") From 9abdff3a18d1e65b8b8d032835e434582c957f90 Mon Sep 17 00:00:00 2001 From: coehgns Date: Tue, 30 Dec 2025 21:47:42 +0900 Subject: [PATCH 55/96] docs ( #74 ) : UpdateQualificationCaseWebRequest --- .../dto/request/UpdateQualificationCaseWebRequest.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt index 45097065..67650298 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt @@ -7,6 +7,7 @@ import javax.validation.constraints.DecimalMin import javax.validation.constraints.Digits import javax.validation.constraints.NotNull +// 현재 사용되지 않음. data class UpdateQualificationCaseWebRequest( @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull val koreanGrade: BigDecimal = BigDecimal.ZERO, From 7dbc4bd76c4e106186aedb115097df4889f9f4d4 Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:36:31 +0900 Subject: [PATCH 56/96] feat ( #74 ) : AddressInfo --- .../domain/application/usecase/dto/request/AddressInfo.kt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt new file mode 100644 index 00000000..db0153c7 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AddressInfo.kt @@ -0,0 +1,8 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AddressInfo( + val isDaejeon: Boolean, + val streetAddress: String, + val detailAddress: String, + val postalCode: String +) \ No newline at end of file From b7386b54621b0b11775a8931368f7d7ec94bcf00 Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:36:41 +0900 Subject: [PATCH 57/96] feat ( #74 ) : ApplicantInfo --- .../usecase/dto/request/ApplicantInfo.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt new file mode 100644 index 00000000..dc938b9a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt @@ -0,0 +1,15 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.Sex +import java.time.LocalDate + +data class ApplicantInfo( + val applicantName: String, + val applicantTel: String, + val birthDate: LocalDate, + val applicantGender: Sex, + val parentName: String, + val parentTel: String, + val parentRelation: String, + val guardianGender: String +) \ No newline at end of file From b884f6744d0b5900b6dc2cbcaa9f611bfcffdb7c Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:36:49 +0900 Subject: [PATCH 58/96] feat ( #74 ) : ApplicationInfo --- .../usecase/dto/request/ApplicationInfo.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt new file mode 100644 index 00000000..11010959 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt @@ -0,0 +1,16 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.time.YearMonth + +data class ApplicationInfo( + val applicationType: ApplicationType, + val educationalStatus: EducationalStatus, + val studentId: String, + val graduationDate: YearMonth, + val studyPlan: String, + val selfIntroduce: String, + val nationalMeritChild: Boolean, + val specialAdmissionTarget: Boolean +) \ No newline at end of file From 8f83b75bcce01aec2f57001d141bc655af7b5d58 Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:36:56 +0900 Subject: [PATCH 59/96] feat ( #74 ) : AttendanceInfo --- .../application/usecase/dto/request/AttendanceInfo.kt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt new file mode 100644 index 00000000..7a4f03e0 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AttendanceInfo.kt @@ -0,0 +1,9 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AttendanceInfo( + val absence: Int, + val tardiness: Int, + val earlyLeave: Int, + val classExit: Int, + val volunteer: Int +) \ No newline at end of file From 74ebc4711761b774f963dd47524f2aed2dc82e8b Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:37:02 +0900 Subject: [PATCH 60/96] feat ( #74 ) : GradeInfo --- .../usecase/dto/request/GradeInfo.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt new file mode 100644 index 00000000..ace06d5a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/GradeInfo.kt @@ -0,0 +1,19 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +import java.math.BigDecimal + +data class GradeInfo( + val koreanGrade: String, + val socialGrade: String, + val historyGrade: String, + val mathGrade: String, + val scienceGrade: String, + val englishGrade: String, + val techAndHomeGrade: String, + val gedKorean: BigDecimal = BigDecimal.ZERO, + val gedSocial: BigDecimal = BigDecimal.ZERO, + val gedMath: BigDecimal = BigDecimal.ZERO, + val gedScience: BigDecimal = BigDecimal.ZERO, + val gedEnglish: BigDecimal = BigDecimal.ZERO, + val gedHistory: BigDecimal = BigDecimal.ZERO +) \ No newline at end of file From e6d77ea1bbc3a787a0d2f677d08b032586f45cfe Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:37:10 +0900 Subject: [PATCH 61/96] feat ( #74 ) : SchoolInfo --- .../domain/application/usecase/dto/request/SchoolInfo.kt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt new file mode 100644 index 00000000..755f041d --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SchoolInfo.kt @@ -0,0 +1,8 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class SchoolInfo( + val schoolCode: String, + val schoolName: String, + val schoolPhone: String, + val teacherName: String +) \ No newline at end of file From 6a21609226caa46df315344486257b542011a0dd Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:37:32 +0900 Subject: [PATCH 62/96] feat ( #74 ) : AddressInfoWebRequest --- .../dto/request/AddressInfoWebRequest.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt new file mode 100644 index 00000000..d6b6585f --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AddressInfoWebRequest.kt @@ -0,0 +1,18 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull + +data class AddressInfoWebRequest( + @field:NotNull(message = "대전 지역 여부는 필수입니다") + val isDaejeon: Boolean, + + @field:NotBlank(message = "주소는 필수입니다") + val streetAddress: String, + + @field:NotBlank(message = "상세 주소는 필수입니다") + val detailAddress: String, + + @field:NotBlank(message = "우편번호는 필수입니다") + val postalCode: String +) \ No newline at end of file From f32bd863633f2065330c3bb9f6b357dad2c5d641 Mon Sep 17 00:00:00 2001 From: coehgns Date: Wed, 31 Dec 2025 22:37:39 +0900 Subject: [PATCH 63/96] feat ( #74 ) : ApplicantInfoWebRequest --- .../dto/request/ApplicantInfoWebRequest.kt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt new file mode 100644 index 00000000..88047b20 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt @@ -0,0 +1,35 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.Sex +import java.time.LocalDate +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull +import javax.validation.constraints.Size + +data class ApplicantInfoWebRequest( + @field:NotBlank(message = "지원자 이름은 필수입니다") + @field:Size(max = 10, message = "지원자 이름은 10자 이하여야 합니다") + val applicantName: String, + + @field:NotBlank(message = "지원자 전화번호는 필수입니다") + val applicantTel: String, + + @field:NotNull(message = "생년월일은 필수입니다") + val birthDate: LocalDate, + + @field:NotNull(message = "지원자 성별은 필수입니다") + val applicantGender: Sex, + + @field:NotBlank(message = "보호자 이름은 필수입니다") + @field:Size(max = 10, message = "보호자 이름은 10자 이하여야 합니다") + val parentName: String, + + @field:NotBlank(message = "보호자 전화번호는 필수입니다") + val parentTel: String, + + @field:NotBlank(message = "보호자 관계는 필수입니다") + val parentRelation: String, + + @field:NotBlank(message = "보호자 성별은 필수입니다") + val guardianGender: String +) \ No newline at end of file From af0fd2b9a1563021599de4ef03227c0a0b01797c Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:20 +0900 Subject: [PATCH 64/96] feat ( #74 ) : ApplicationInfoWebRequest --- .../dto/request/ApplicationInfoWebRequest.kt | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt new file mode 100644 index 00000000..7d100f73 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt @@ -0,0 +1,37 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import java.time.YearMonth +import javax.validation.constraints.NotBlank +import javax.validation.constraints.NotNull +import javax.validation.constraints.Size + +data class ApplicationInfoWebRequest( + @field:NotNull(message = "지원 유형은 필수입니다") + val applicationType: ApplicationType, + + @field:NotNull(message = "학력 상태는 필수입니다") + val educationalStatus: EducationalStatus, + + @field:NotBlank(message = "학번은 필수입니다") + @field:Size(min = 4, max = 4, message = "학번은 4자리여야 합니다") + val studentId: String, + + @field:NotNull(message = "졸업(예정)일은 필수입니다") + val graduationDate: YearMonth, + + @field:NotBlank(message = "학업 계획서는 필수입니다") + @field:Size(max = 1600, message = "학업 계획서는 1500자 이하여야 합니다") + val studyPlan: String, + + @field:NotBlank(message = "자기소개서는 필수입니다") + @field:Size(max = 1600, message = "자기소개서는 1500자 이하여야 합니다") + val selfIntroduce: String, + + @field:NotNull(message = "국가유공자 자녀 여부는 필수입니다") + val nationalMeritChild: Boolean, + + @field:NotNull(message = "특별전형 대상 여부는 필수입니다") + val specialAdmissionTarget: Boolean +) \ No newline at end of file From 420fc97fc79c6866d6de7faf49448cea2a543795 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:27 +0900 Subject: [PATCH 65/96] feat ( #74 ) : AttendanceInfoWebRequest --- .../dto/request/AttendanceInfoWebRequest.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt new file mode 100644 index 00000000..d7fca982 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt @@ -0,0 +1,20 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.Min + +data class AttendanceInfoWebRequest( + @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") + val absence: Int, + + @field:Min(value = 0, message = "지각 횟수는 0 이상이어야 합니다") + val tardiness: Int, + + @field:Min(value = 0, message = "조퇴 횟수는 0 이상이어야 합니다") + val earlyLeave: Int, + + @field:Min(value = 0, message = "결과 횟수는 0 이상이어야 합니다") + val classExit: Int, + + @field:Min(value = 0, message = "봉사 시간은 0 이상이어야 합니다") + val volunteer: Int +) \ No newline at end of file From 8c5ef7771820c5703950b81601a509b190efd6c6 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:34 +0900 Subject: [PATCH 66/96] feat ( #74 ) : AwardAndCertificateInfo --- .../usecase/dto/request/AwardAndCertificateInfo.kt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt new file mode 100644 index 00000000..3fa17e00 --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/AwardAndCertificateInfo.kt @@ -0,0 +1,6 @@ +package hs.kr.entrydsm.application.domain.application.usecase.dto.request + +data class AwardAndCertificateInfo( + val algorithmAward: Boolean, + val infoProcessingCert: Boolean +) \ No newline at end of file From f0982f2370023226619817ee66ca1639d1f26e85 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:42 +0900 Subject: [PATCH 67/96] feat ( #74 ) : AwardAndCertificateInfoWebRequest --- .../dto/request/AwardAndCertificateInfoWebRequest.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt new file mode 100644 index 00000000..33375da8 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AwardAndCertificateInfoWebRequest.kt @@ -0,0 +1,11 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotNull + +data class AwardAndCertificateInfoWebRequest( + @field:NotNull(message = "알고리즘 수상 여부는 필수입니다") + val algorithmAward: Boolean, + + @field:NotNull(message = "자격증 여부는 필수입니다") + val infoProcessingCert: Boolean +) \ No newline at end of file From 8d211bd96b264c1894eff28a624eccf085de93b1 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:49 +0900 Subject: [PATCH 68/96] feat ( #74 ) : GradeInfoWebRequest --- .../dto/request/GradeInfoWebRequest.kt | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt new file mode 100644 index 00000000..46c7d49e --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt @@ -0,0 +1,53 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import java.math.BigDecimal +import javax.validation.constraints.DecimalMax +import javax.validation.constraints.DecimalMin +import javax.validation.constraints.NotNull + +data class GradeInfoWebRequest( + @field:NotNull(message = "국어 성적은 필수입니다") + val koreanGrade: String, + + @field:NotNull(message = "사회 성적은 필수입니다") + val socialGrade: String, + + @field:NotNull(message = "역사 성적은 필수입니다") + val historyGrade: String, + + @field:NotNull(message = "수학 성적은 필수입니다") + val mathGrade: String, + + @field:NotNull(message = "과학 성적은 필수입니다") + val scienceGrade: String, + + @field:NotNull(message = "영어 성적은 필수입니다") + val englishGrade: String, + + @field:NotNull(message = "기술·가정 성적은 필수입니다") + val techAndHomeGrade: String, + + @field:DecimalMin(value = "0.0", message = "GED 국어 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 국어 점수는 100점 이하여야 합니다") + val gedKorean: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 사회 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 사회 점수는 100점 이하여야 합니다") + val gedSocial: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 수학 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 수학 점수는 100점 이하여야 합니다") + val gedMath: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 과학 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 과학 점수는 100점 이하여야 합니다") + val gedScience: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 영어 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 영어 점수는 100점 이하여야 합니다") + val gedEnglish: BigDecimal = BigDecimal.ZERO, + + @field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") + @field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") + val gedHistory: BigDecimal = BigDecimal.ZERO +) \ No newline at end of file From 96bcecc302fc9d14a9647f6ed2f4b44c61429528 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:42:55 +0900 Subject: [PATCH 69/96] feat ( #74 ) : SchoolInfoWebRequest --- .../dto/request/SchoolInfoWebRequest.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt new file mode 100644 index 00000000..2bfb73c7 --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SchoolInfoWebRequest.kt @@ -0,0 +1,17 @@ +package hs.kr.entrydsm.application.domain.application.presentation.dto.request + +import javax.validation.constraints.NotBlank + +data class SchoolInfoWebRequest( + @field:NotBlank(message = "학교 코드는 필수입니다") + val schoolCode: String, + + @field:NotBlank(message = "학교명은 필수입니다") + val schoolName: String, + + @field:NotBlank(message = "학교 전화번호는 필수입니다") + val schoolPhone: String, + + @field:NotBlank(message = "담임 교사 이름은 필수입니다") + val teacherName: String +) \ No newline at end of file From ccd14d3892ff59a3b5d3f40dbf59174e1ba20af7 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:43:25 +0900 Subject: [PATCH 70/96] refactor ( #74 ) : SubmitApplicationMapper --- .../usecase/mapper/SubmitApplicationMapper.kt | 94 +++++++++---------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index 9505067a..faab411d 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -10,26 +10,24 @@ import java.util.UUID object SubmitApplicationMapper { fun toApplication(request: SubmitApplicationRequest, user: User): Application { - return request.run { - Application( - applicantName = user.name, - applicantTel = user.phoneNumber, - birthDate = birthDate, - sex = applicantGender, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - isDaejeon = isDaejeon, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - educationalStatus = educationalStatus, - applicationType = applicationType, - studyPlan = studyPlan, - selfIntroduce = selfIntroduce, - userId = user.id - ) - } + return Application( + applicantName = user.name, + applicantTel = user.phoneNumber, + birthDate = request.applicantInfo.birthDate, + sex = request.applicantInfo.applicantGender, + streetAddress = request.addressInfo.streetAddress, + postalCode = request.addressInfo.postalCode, + detailAddress = request.addressInfo.detailAddress, + isDaejeon = request.addressInfo.isDaejeon, + parentName = request.applicantInfo.parentName, + parentTel = request.applicantInfo.parentTel, + parentRelation = request.applicantInfo.parentRelation, + educationalStatus = request.applicationInfo.educationalStatus, + applicationType = request.applicationInfo.applicationType, + studyPlan = request.applicationInfo.studyPlan, + selfIntroduce = request.applicationInfo.selfIntroduce, + userId = user.id + ) } fun toSubmissionData( @@ -40,35 +38,35 @@ object SubmitApplicationMapper { return SubmissionData( receiptCode = application.receiptCode, userId = userId, - educationalStatus = request.educationalStatus, - graduationDate = request.graduationDate, - gradeNumber = request.studentId.substring(0, 1), - classNumber = request.studentId.substring(1, 2), - studentNumber = request.studentId.substring(2), - schoolCode = request.schoolCode, - teacherName = request.teacherName, - schoolPhone = request.schoolPhone, + educationalStatus = request.applicationInfo.educationalStatus, + graduationDate = request.applicationInfo.graduationDate, + gradeNumber = request.applicationInfo.studentId.substring(0, 1), + classNumber = request.applicationInfo.studentId.substring(1, 2), + studentNumber = request.applicationInfo.studentId.substring(2), + schoolCode = request.schoolInfo.schoolCode, + teacherName = request.schoolInfo.teacherName, + schoolPhone = request.schoolInfo.schoolPhone, scoreData = ScoreData( - koreanGrade = request.koreanGrade, - socialGrade = request.socialGrade, - historyGrade = request.historyGrade, - mathGrade = request.mathGrade, - scienceGrade = request.scienceGrade, - englishGrade = request.englishGrade, - techAndHomeGrade = request.techAndHomeGrade, - gedKorean = request.gedKorean, - gedSocial = request.gedSocial, - gedHistory = request.gedHistory, - gedMath = request.gedMath, - gedScience = request.gedScience, - gedEnglish = request.gedEnglish, - absence = request.absence, - tardiness = request.tardiness, - earlyLeave = request.earlyLeave, - classExit = request.classExit, - volunteer = request.volunteer, - algorithmAward = request.algorithmAward, - infoProcessingCert = request.infoProcessingCert + koreanGrade = request.gradeInfo.koreanGrade, + socialGrade = request.gradeInfo.socialGrade, + historyGrade = request.gradeInfo.historyGrade, + mathGrade = request.gradeInfo.mathGrade, + scienceGrade = request.gradeInfo.scienceGrade, + englishGrade = request.gradeInfo.englishGrade, + techAndHomeGrade = request.gradeInfo.techAndHomeGrade, + gedKorean = request.gradeInfo.gedKorean, + gedSocial = request.gradeInfo.gedSocial, + gedHistory = request.gradeInfo.gedHistory, + gedMath = request.gradeInfo.gedMath, + gedScience = request.gradeInfo.gedScience, + gedEnglish = request.gradeInfo.gedEnglish, + absence = request.attendanceInfo.absence, + tardiness = request.attendanceInfo.tardiness, + earlyLeave = request.attendanceInfo.earlyLeave, + classExit = request.attendanceInfo.classExit, + volunteer = request.attendanceInfo.volunteer, + algorithmAward = request.awardAndCertificateInfo.algorithmAward, + infoProcessingCert = request.awardAndCertificateInfo.infoProcessingCert ) ) } From c273e5e8cc25d221fcaf1038d588adde3d3ca1e9 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:43:33 +0900 Subject: [PATCH 71/96] refactor ( #74 ) : SubmitApplicationRequest --- .../dto/request/SubmitApplicationRequest.kt | 63 +++---------------- 1 file changed, 7 insertions(+), 56 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt index 590d95ce..24be5c58 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/SubmitApplicationRequest.kt @@ -1,60 +1,11 @@ package hs.kr.entrydsm.application.domain.application.usecase.dto.request -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.application.model.types.Sex -import java.math.BigDecimal -import java.time.LocalDate -import java.time.YearMonth - data class SubmitApplicationRequest( - val applicantName: String, - val applicantTel: String, - val applicationType: ApplicationType, - val educationalStatus: EducationalStatus, - val birthDate: LocalDate, - val applicantGender: Sex, - val streetAddress: String, - val postalCode: String, - val detailAddress: String, - val isDaejeon: Boolean, - val parentName: String, - val parentTel: String, - val parentRelation: String, - val guardianGender: String, - val schoolCode: String, - val schoolName: String, - val studentId: String, - val schoolPhone: String, - val teacherName: String, - val nationalMeritChild: Boolean, - val specialAdmissionTarget: Boolean, - val graduationDate: YearMonth, - val studyPlan: String, - val selfIntroduce: String, - - // 요청 형식 이렇게 바꿔서 기존 프론트에서 구현된 원서 제출 api의 request body 수정해야함. - val koreanGrade: String, - val socialGrade: String, - val historyGrade: String, - val mathGrade: String, - val scienceGrade: String, - val englishGrade: String, - val techAndHomeGrade: String, - - val gedKorean: BigDecimal = BigDecimal.ZERO, - val gedSocial: BigDecimal = BigDecimal.ZERO, - val gedMath: BigDecimal = BigDecimal.ZERO, - val gedScience: BigDecimal = BigDecimal.ZERO, - val gedEnglish: BigDecimal = BigDecimal.ZERO, - val gedHistory: BigDecimal = BigDecimal.ZERO, - - val absence: Int, - val tardiness: Int, - val earlyLeave: Int, - val classExit: Int, - val volunteer: Int, - - val algorithmAward: Boolean, - val infoProcessingCert: Boolean + val applicantInfo: ApplicantInfo, + val addressInfo: AddressInfo, + val applicationInfo: ApplicationInfo, + val schoolInfo: SchoolInfo, + val gradeInfo: GradeInfo, + val attendanceInfo: AttendanceInfo, + val awardAndCertificateInfo: AwardAndCertificateInfo ) From df50ce63b86004b2dce712820292af51117caf06 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:44:27 +0900 Subject: [PATCH 72/96] refactor ( #74 ) : SubmitApplicationWebRequestMapper --- .../SubmissionApplicationWebRequestMapper.kt | 56 -------------- .../SubmitApplicationWebRequestMapper.kt | 73 +++++++++++++++++++ 2 files changed, 73 insertions(+), 56 deletions(-) delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt create mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt deleted file mode 100644 index c0320f64..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmissionApplicationWebRequestMapper.kt +++ /dev/null @@ -1,56 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.presentation.mapper - -import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest -import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest - -fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationRequest = - SubmitApplicationRequest( - applicantName = applicantName, - applicantTel = applicantTel, - applicationType = applicationType, - educationalStatus = educationalStatus, - birthDate = birthDate, - applicantGender = applicantGender, - streetAddress = streetAddress, - postalCode = postalCode, - detailAddress = detailAddress, - isDaejeon = isDaejeon, - parentName = parentName, - parentTel = parentTel, - parentRelation = parentRelation, - guardianGender = guardianGender, - schoolCode = schoolCode, - schoolName = schoolName, - studentId = studentId, - schoolPhone = schoolPhone, - teacherName = teacherName, - nationalMeritChild = nationalMeritChild, - specialAdmissionTarget = specialAdmissionTarget, - graduationDate = graduationDate, - studyPlan = studyPlan, - selfIntroduce = selfIntroduce, - - koreanGrade = koreanGrade, - socialGrade = socialGrade, - historyGrade = historyGrade, - mathGrade = mathGrade, - scienceGrade = scienceGrade, - englishGrade = englishGrade, - techAndHomeGrade = techAndHomeGrade, - - gedKorean = gedKorean, - gedSocial = gedSocial, - gedMath = gedMath, - gedScience = gedScience, - gedEnglish = gedEnglish, - gedHistory = gedHistory, - - absence = absence, - tardiness = tardiness, - earlyLeave = earlyLeave, - classExit = classExit, - volunteer = volunteer, - - algorithmAward = algorithmAward, - infoProcessingCert = infoProcessingCert - ) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt new file mode 100644 index 00000000..f8c26b9a --- /dev/null +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt @@ -0,0 +1,73 @@ +package hs.kr.entrydsm.application.domain.application.presentation.mapper + +import hs.kr.entrydsm.application.domain.application.presentation.dto.request.SubmitApplicationWebRequest +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AddressInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ApplicantInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.ApplicationInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AttendanceInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.AwardAndCertificateInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.GradeInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SchoolInfo +import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest + +fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationRequest = + SubmitApplicationRequest( + applicantInfo = ApplicantInfo( + applicantName = applicantInfo.applicantName, + applicantTel = applicantInfo.applicantTel, + birthDate = applicantInfo.birthDate, + applicantGender = applicantInfo.applicantGender, + parentName = applicantInfo.parentName, + parentTel = applicantInfo.parentTel, + parentRelation = applicantInfo.parentRelation, + guardianGender = applicantInfo.guardianGender + ), + addressInfo = AddressInfo( + isDaejeon = addressInfo.isDaejeon, + streetAddress = addressInfo.streetAddress, + detailAddress = addressInfo.detailAddress, + postalCode = addressInfo.postalCode + ), + applicationInfo = ApplicationInfo( + applicationType = applicationInfo.applicationType, + educationalStatus = applicationInfo.educationalStatus, + studentId = applicationInfo.studentId, + graduationDate = applicationInfo.graduationDate, + studyPlan = applicationInfo.studyPlan, + selfIntroduce = applicationInfo.selfIntroduce, + nationalMeritChild = applicationInfo.nationalMeritChild, + specialAdmissionTarget = applicationInfo.specialAdmissionTarget + ), + schoolInfo = SchoolInfo( + schoolCode = schoolInfo.schoolCode, + schoolName = schoolInfo.schoolName, + schoolPhone = schoolInfo.schoolPhone, + teacherName = schoolInfo.teacherName + ), + gradeInfo = GradeInfo( + koreanGrade = gradeInfo.koreanGrade, + socialGrade = gradeInfo.socialGrade, + historyGrade = gradeInfo.historyGrade, + mathGrade = gradeInfo.mathGrade, + scienceGrade = gradeInfo.scienceGrade, + englishGrade = gradeInfo.englishGrade, + techAndHomeGrade = gradeInfo.techAndHomeGrade, + gedKorean = gradeInfo.gedKorean, + gedSocial = gradeInfo.gedSocial, + gedMath = gradeInfo.gedMath, + gedScience = gradeInfo.gedScience, + gedEnglish = gradeInfo.gedEnglish, + gedHistory = gradeInfo.gedHistory + ), + attendanceInfo = AttendanceInfo( + absence = attendanceInfo.absence, + tardiness = attendanceInfo.tardiness, + earlyLeave = attendanceInfo.earlyLeave, + classExit = attendanceInfo.classExit, + volunteer = attendanceInfo.volunteer + ), + awardAndCertificateInfo = AwardAndCertificateInfo( + algorithmAward = awardAndCertificateInfo.algorithmAward, + infoProcessingCert = awardAndCertificateInfo.infoProcessingCert + ) + ) From 0ce98b75f3f733ebf10ce0a6a4ec4f43e5258f6a Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:44:37 +0900 Subject: [PATCH 73/96] refactor ( #74 ) : SubmitApplicationWebRequest --- .../request/SubmitApplicationWebRequest.kt | 184 +++--------------- 1 file changed, 29 insertions(+), 155 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt index a93df176..f1739c78 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -1,160 +1,34 @@ package hs.kr.entrydsm.application.domain.application.presentation.dto.request -import hs.kr.entrydsm.application.domain.application.model.types.ApplicationType -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.application.model.types.Sex -import java.math.BigDecimal -import java.time.LocalDate -import java.time.YearMonth -import javax.validation.constraints.DecimalMax -import javax.validation.constraints.DecimalMin -import javax.validation.constraints.Min -import javax.validation.constraints.NotBlank +import javax.validation.Valid import javax.validation.constraints.NotNull -import javax.validation.constraints.Size data class SubmitApplicationWebRequest( - - @field:NotBlank(message = "지원자 이름은 필수입니다") - @field:Size(max = 10, message = "지원자 이름은 10자 이하여야 합니다") - val applicantName: String, - - @field:NotBlank(message = "지원자 전화번호는 필수입니다") - val applicantTel: String, - - @field:NotNull(message = "지원 유형은 필수입니다") - val applicationType: ApplicationType, - - @field:NotNull(message = "학력 상태는 필수입니다") - val educationalStatus: EducationalStatus, - - @field:NotNull(message = "생년월일은 필수입니다") - val birthDate: LocalDate, - - @field:NotNull(message = "지원자 성별은 필수입니다") - val applicantGender: Sex, - - @field:NotBlank(message = "주소는 필수입니다") - val streetAddress: String, - - @field:NotBlank(message = "우편번호는 필수입니다") - val postalCode: String, - - @field:NotBlank(message = "상세 주소는 필수입니다") - val detailAddress: String, - - @field:NotNull(message = "대전 지역 여부는 필수입니다") - val isDaejeon: Boolean, - - @field:NotBlank(message = "보호자 이름은 필수입니다") - @field:Size(max = 10, message = "보호자 이름은 10자 이하여야 합니다") - val parentName: String, - - @field:NotBlank(message = "보호자 전화번호는 필수입니다") - val parentTel: String, - - @field:NotBlank(message = "보호자 관계는 필수입니다") - val parentRelation: String, - - @field:NotBlank(message = "보호자 성별은 필수입니다") - val guardianGender: String, - - @field:NotBlank(message = "학교 코드는 필수입니다") - val schoolCode: String, - - @field:NotBlank(message = "학교명은 필수입니다") - val schoolName: String, - - @field:NotBlank(message = "학번은 필수입니다") - @field:Size(min = 4, max = 4, message = "학번은 4자리여야 합니다") - val studentId: String, - - @field:NotBlank(message = "학교 전화번호는 필수입니다") - val schoolPhone: String, - - @field:NotBlank(message = "담임 교사 이름은 필수입니다") - val teacherName: String, - - @field:NotNull(message = "국가유공자 자녀 여부는 필수입니다") - val nationalMeritChild: Boolean, - - @field:NotNull(message = "특별전형 대상 여부는 필수입니다") - val specialAdmissionTarget: Boolean, - - @field:NotNull(message = "졸업(예정)일은 필수입니다") - val graduationDate: YearMonth, - - @field:NotBlank(message = "학업 계획서는 필수입니다") - @field:Size(max = 1600, message = "학업 계획서는 1500자 이하여야 합니다") - val studyPlan: String, - - @field:NotBlank(message = "자기소개서는 필수입니다") - @field:Size(max = 1600, message = "자기소개서는 1500자 이하여야 합니다") - val selfIntroduce: String, - - @field:NotNull(message = "국어 성적은 필수입니다") - val koreanGrade: String, - - @field:NotNull(message = "사회 성적은 필수입니다") - val socialGrade: String, - - @field:NotNull(message = "역사 성적은 필수입니다") - val historyGrade: String, - - @field:NotNull(message = "수학 성적은 필수입니다") - val mathGrade: String, - - @field:NotNull(message = "과학 성적은 필수입니다") - val scienceGrade: String, - - @field:NotNull(message = "영어 성적은 필수입니다") - val englishGrade: String, - - @field:NotNull(message = "기술·가정 성적은 필수입니다") - val techAndHomeGrade: String, - - @field:DecimalMin(value = "0.0", message = "GED 국어 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 국어 점수는 100점 이하여야 합니다") - val gedKorean: BigDecimal = BigDecimal.ZERO, - - @field:DecimalMin(value = "0.0", message = "GED 사회 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 사회 점수는 100점 이하여야 합니다") - val gedSocial: BigDecimal = BigDecimal.ZERO, - - @field:DecimalMin(value = "0.0", message = "GED 영어 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 영어 점수는 100점 이하여야 합니다") - val gedEnglish: BigDecimal = BigDecimal.ZERO, - - @field:DecimalMin(value = "0.0", message = "GED 수학 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 수학 점수는 100점 이하여야 합니다") - val gedMath: BigDecimal = BigDecimal.ZERO, - - @field:DecimalMin(value = "0.0", message = "GED 과학 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 과학 점수는 100점 이하여야 합니다") - val gedScience: BigDecimal = BigDecimal.ZERO, - - @field:DecimalMin(value = "0.0", message = "GED 역사 점수는 0점 이상이어야 합니다") - @field:DecimalMax(value = "100.0", message = "GED 역사 점수는 100점 이하여야 합니다") - val gedHistory: BigDecimal = BigDecimal.ZERO, - - @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") - val absence: Int, - - @field:Min(value = 0, message = "지각 횟수는 0 이상이어야 합니다") - val tardiness: Int, - - @field:Min(value = 0, message = "조퇴 횟수는 0 이상이어야 합니다") - val earlyLeave: Int, - - @field:Min(value = 0, message = "결과 횟수는 0 이상이어야 합니다") - val classExit: Int, - - @field:Min(value = 0, message = "봉사 시간은 0 이상이어야 합니다") - val volunteer: Int, - - @field:NotNull(message = "알고리즘 수상 여부는 필수입니다") - val algorithmAward: Boolean, - - @field:NotNull(message = "자격증 여부는 필수입니다") - val infoProcessingCert: Boolean -) + @field:Valid + @field:NotNull(message = "지원자 정보는 필수입니다") + val applicantInfo: ApplicantInfoWebRequest, + + @field:Valid + @field:NotNull(message = "주소 정보는 필수입니다") + val addressInfo: AddressInfoWebRequest, + + @field:Valid + @field:NotNull(message = "원서 정보는 필수입니다") + val applicationInfo: ApplicationInfoWebRequest, + + @field:Valid + @field:NotNull(message = "학교 정보는 필수입니다") + val schoolInfo: SchoolInfoWebRequest, + + @field:Valid + @field:NotNull(message = "성적 정보는 필수입니다") + val gradeInfo: GradeInfoWebRequest, + + @field:Valid + @field:NotNull(message = "출결 정보는 필수입니다") + val attendanceInfo: AttendanceInfoWebRequest, + + @field:Valid + @field:NotNull(message = "수상 및 자격증 정보는 필수입니다") + val awardAndCertificateInfo: AwardAndCertificateInfoWebRequest +) \ No newline at end of file From 7fec93c63ea4edef9de2a85ae1a05bfaf0d84597 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 13:56:14 +0900 Subject: [PATCH 74/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20SubmitApplicati?= =?UTF-8?q?onWebRequest=EC=97=90=20@Valid=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/SubmitApplicationWebRequest.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt index f1739c78..a5e6a2da 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/SubmitApplicationWebRequest.kt @@ -1,34 +1,26 @@ package hs.kr.entrydsm.application.domain.application.presentation.dto.request -import javax.validation.Valid import javax.validation.constraints.NotNull data class SubmitApplicationWebRequest( - @field:Valid @field:NotNull(message = "지원자 정보는 필수입니다") val applicantInfo: ApplicantInfoWebRequest, - @field:Valid @field:NotNull(message = "주소 정보는 필수입니다") val addressInfo: AddressInfoWebRequest, - @field:Valid @field:NotNull(message = "원서 정보는 필수입니다") val applicationInfo: ApplicationInfoWebRequest, - @field:Valid @field:NotNull(message = "학교 정보는 필수입니다") val schoolInfo: SchoolInfoWebRequest, - @field:Valid @field:NotNull(message = "성적 정보는 필수입니다") val gradeInfo: GradeInfoWebRequest, - @field:Valid @field:NotNull(message = "출결 정보는 필수입니다") val attendanceInfo: AttendanceInfoWebRequest, - @field:Valid @field:NotNull(message = "수상 및 자격증 정보는 필수입니다") val awardAndCertificateInfo: AwardAndCertificateInfoWebRequest ) \ No newline at end of file From ccfd40a82de585ee0ab0226e438519d51268de4f Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 14:17:10 +0900 Subject: [PATCH 75/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20CreateScoreA?= =?UTF-8?q?pplicationConsumer=EC=97=90=EC=84=9C=20createScore=20topic?= =?UTF-8?q?=EC=9D=84=20CREATE=5FAPPLICATION=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/score/event/CreateScoreApplicationConsumer.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt index b2accf9c..6e93d1cc 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt @@ -23,7 +23,7 @@ class CreateScoreApplicationConsumer ( backoff = Backoff(delay = 100) ) @KafkaListener( - topics = [KafkaTopics.SUBMIT_APPLICATION], + topics = [KafkaTopics.CREATE_APPLICATION], groupId = "create-score", containerFactory = "kafkaListenerContainerFactory", ) From 8c2871d131bb286f4a3c01707a8f123c7de2b289 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 14:18:02 +0900 Subject: [PATCH 76/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationUseCase=20-=20=EC=9B=90=EC=84=9C=20=EC=A0=9C=EC=B6=9C=20?= =?UTF-8?q?=EA=B3=BC=EC=A0=95=EC=9D=84=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=EA=B0=80=20=EC=95=84=EB=8B=8C=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=8B=A4=ED=96=89?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/SubmitApplicationUseCase.kt | 101 ++++++++++++++++-- 1 file changed, 91 insertions(+), 10 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 2e64c440..9e7fc788 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -7,6 +7,15 @@ import hs.kr.entrydsm.application.domain.application.spi.ApplicationQueryUserPor import hs.kr.entrydsm.application.domain.application.spi.CommandApplicationPort import hs.kr.entrydsm.application.domain.application.spi.QueryApplicationPort import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest +import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus +import hs.kr.entrydsm.application.domain.applicationCase.service.ApplicationCaseService +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest +import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest +import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService +import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest +import hs.kr.entrydsm.application.domain.score.usecase.CreateScoreUseCase +import hs.kr.entrydsm.application.domain.score.usecase.UpdateScoreUseCase import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort @@ -16,7 +25,11 @@ class SubmitApplicationUseCase( private val applicationEventPort: ApplicationEventPort, private val commandApplicationPort: CommandApplicationPort, private val applicationQueryUserPort: ApplicationQueryUserPort, - private val queryApplicationPort: QueryApplicationPort + private val queryApplicationPort: QueryApplicationPort, + private val applicationCaseService: ApplicationCaseService, + private val graduationInfoService: GraduationInfoService, + private val createScoreUseCase: CreateScoreUseCase, + private val updateScoreUseCase: UpdateScoreUseCase ) { fun execute(request: SubmitApplicationRequest) { @@ -29,15 +42,83 @@ class SubmitApplicationUseCase( SubmitApplicationMapper.toApplication(request, user) ) - applicationEventPort.submitApplication( - SubmitApplicationMapper.toSubmissionData(request, application, userId) + val receiptCode = application.receiptCode + val educationalStatus = request.applicationInfo.educationalStatus + + // 2. GraduationInfo 초기화 + 업데이트 (동기) + graduationInfoService.changeGraduationInfo( + receiptCode = receiptCode, + graduateDate = request.applicationInfo.graduationDate ) + if (educationalStatus != EducationalStatus.QUALIFICATION_EXAM) { + graduationInfoService.updateGraduationInformation( + receiptCode = receiptCode, + request = UpdateGraduationInformationRequest( + gradeNumber = request.applicationInfo.studentId.substring(0, 1), + classNumber = request.applicationInfo.studentId.substring(1, 2), + studentNumber = request.applicationInfo.studentId.substring(2), + schoolCode = request.schoolInfo.schoolCode, + teacherName = request.schoolInfo.teacherName, + teacherTel = request.schoolInfo.schoolPhone + ) + ) + } + + // 3. ApplicationCase 초기화 + 업데이트 (동기) + applicationCaseService.initializeApplicationCase(receiptCode, educationalStatus) + when (educationalStatus) { + EducationalStatus.QUALIFICATION_EXAM -> { + applicationCaseService.updateQualificationScore( + receiptCode = receiptCode, + request = UpdateQualificationCaseRequest( + koreanGrade = request.gradeInfo.gedKorean, + socialGrade = request.gradeInfo.gedSocial, + mathGrade = request.gradeInfo.gedMath, + scienceGrade = request.gradeInfo.gedScience, + englishGrade = request.gradeInfo.gedEnglish, + historyGrade = request.gradeInfo.gedHistory, + extraScore = ExtraScoreRequest( + hasCertificate = request.awardAndCertificateInfo.infoProcessingCert, + hasCompetitionPrize = request.awardAndCertificateInfo.algorithmAward + ) + ) + ) + } + else -> { + applicationCaseService.updateGraduationScore( + receiptCode = receiptCode, + request = UpdateGraduationCaseRequest( + volunteerTime = request.attendanceInfo.volunteer, + absenceDayCount = request.attendanceInfo.absence, + lectureAbsenceCount = request.attendanceInfo.classExit, + latenessCount = request.attendanceInfo.tardiness, + earlyLeaveCount = request.attendanceInfo.earlyLeave, + koreanGrade = request.gradeInfo.koreanGrade, + socialGrade = request.gradeInfo.socialGrade, + historyGrade = request.gradeInfo.historyGrade, + mathGrade = request.gradeInfo.mathGrade, + scienceGrade = request.gradeInfo.scienceGrade, + englishGrade = request.gradeInfo.englishGrade, + techAndHomeGrade = request.gradeInfo.techAndHomeGrade, + extraScore = ExtraScoreRequest( + hasCertificate = request.awardAndCertificateInfo.infoProcessingCert, + hasCompetitionPrize = request.awardAndCertificateInfo.algorithmAward + ) + ) + ) + } + } + + // 4. Score 생성 + 계산 (동기) + createScoreUseCase.execute(receiptCode) + updateScoreUseCase.execute(receiptCode) + + applicationEventPort.create(receiptCode, userId) - /* - 이 부분 없애고 submitApplication에서 기존 create-application도 처리 가능함. - Casper-Feed, Casper-Status에서 create-application topcit을 submit-application으로 로직 수정하기. - 하지만 위처럼 수정할 시 submitApplication이라는 이벤트의 의미가 흐려질 거 같음. - */ - //applicationEventPort.create(application.receiptCode, userId) + // 이벤트 처리 로직을 동기적으로 실행하도록 변경 + // cause. 이벤트 순서 문제(Kafka는 비동기적으로 호출되어Score 생성, applicationCase, Score 업데이트 순서가 보장되지 않음.) +// applicationEventPort.submitApplication( +// SubmitApplicationMapper.toSubmissionData(request, application, userId) +// ) } -} \ No newline at end of file +} From cf1702889cd79759c0f915122927d3d273367efa Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 14:42:24 +0900 Subject: [PATCH 77/96] feat ( #74 ) : ScoreService --- .../domain/score/service/ScoreService.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt new file mode 100644 index 00000000..e564717a --- /dev/null +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/score/service/ScoreService.kt @@ -0,0 +1,51 @@ +package hs.kr.entrydsm.application.domain.score.service + +import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions +import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions +import hs.kr.entrydsm.application.domain.score.exception.ScoreExceptions +import hs.kr.entrydsm.application.domain.score.model.Score +import hs.kr.entrydsm.application.domain.score.spi.CommandScorePort +import hs.kr.entrydsm.application.domain.score.spi.QueryScorePort +import hs.kr.entrydsm.application.domain.score.spi.ScoreQueryApplicationCasePort +import hs.kr.entrydsm.application.domain.score.spi.ScoreQueryApplicationPort +import hs.kr.entrydsm.application.global.annotation.DomainService + +@DomainService +class ScoreService( + private val commandScorePort: CommandScorePort, + private val queryScorePort: QueryScorePort, + private val scoreQueryApplicationPort: ScoreQueryApplicationPort, + private val scoreQueryApplicationCasePort: ScoreQueryApplicationCasePort, + private val calculateExtraScoreService: CalculateExtraScoreService +) { + fun createScore(receiptCode: Long) { + queryScorePort.queryScoreByReceiptCode(receiptCode)?.let { + throw ScoreExceptions.ScoreExistsException() + } + + commandScorePort.save( + Score(receiptCode = receiptCode) + ) + } + + fun updateScore(receiptCode: Long) { + val application = scoreQueryApplicationPort.queryApplicationByReceiptCode(receiptCode) + ?: throw ApplicationExceptions.ApplicationNotFoundException() + + val applicationCase = scoreQueryApplicationCasePort.queryApplicationCaseByApplication(application) + ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() + + val score = queryScorePort.queryScoreByReceiptCode(receiptCode) + ?: throw ScoreExceptions.ScoreNotFoundException() + + val extraScore = calculateExtraScoreService.calculateScore(applicationCase, application.isCommon()) + + commandScorePort.save( + score.updateScore( + applicationCase, + application.isCommon(), + extraScore + ) + ) + } +} From 1b9673c21f4acbd27859b72bd885cce7fe5c7637 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 14:43:01 +0900 Subject: [PATCH 78/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationUseCase=EC=97=90=20ScoreService=EB=A5=BC=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/SubmitApplicationUseCase.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 9e7fc788..6b8b2e30 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -14,8 +14,7 @@ import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.Upd import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest -import hs.kr.entrydsm.application.domain.score.usecase.CreateScoreUseCase -import hs.kr.entrydsm.application.domain.score.usecase.UpdateScoreUseCase +import hs.kr.entrydsm.application.domain.score.service.ScoreService import hs.kr.entrydsm.application.global.annotation.UseCase import hs.kr.entrydsm.application.global.security.spi.SecurityPort @@ -28,8 +27,7 @@ class SubmitApplicationUseCase( private val queryApplicationPort: QueryApplicationPort, private val applicationCaseService: ApplicationCaseService, private val graduationInfoService: GraduationInfoService, - private val createScoreUseCase: CreateScoreUseCase, - private val updateScoreUseCase: UpdateScoreUseCase + private val scoreService: ScoreService ) { fun execute(request: SubmitApplicationRequest) { @@ -110,8 +108,8 @@ class SubmitApplicationUseCase( } // 4. Score 생성 + 계산 (동기) - createScoreUseCase.execute(receiptCode) - updateScoreUseCase.execute(receiptCode) + scoreService.createScore(receiptCode) + scoreService.updateScore(receiptCode) applicationEventPort.create(receiptCode, userId) From 17aa2a73bbbafd02fd169f6cda26b3bdaa74ee16 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 15:01:56 +0900 Subject: [PATCH 79/96] refactor ( #74 ) : SubmitApplicationUseCase --- .../usecase/SubmitApplicationUseCase.kt | 54 +++++++++++++------ 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 6b8b2e30..02a460fe 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -40,14 +40,42 @@ class SubmitApplicationUseCase( SubmitApplicationMapper.toApplication(request, user) ) - val receiptCode = application.receiptCode + handleSubmissionSideEffects(application.receiptCode, request) + + applicationEventPort.create(application.receiptCode, userId) + + // 이벤트 처리 로직을 동기적으로 실행하도록 변경 + // cause. 이벤트 순서 문제(Kafka는 비동기적으로 호출되어Score 생성, applicationCase, Score 업데이트 순서가 보장되지 않음.) +// applicationEventPort.submitApplication( +// SubmitApplicationMapper.toSubmissionData(request, application, userId) +// ) + } + + private fun handleSubmissionSideEffects(receiptCode: Long, request: SubmitApplicationRequest) { val educationalStatus = request.applicationInfo.educationalStatus - // 2. GraduationInfo 초기화 + 업데이트 (동기) + initializeGraduationInfo(receiptCode, request) + updateGraduationInformation(receiptCode, educationalStatus, request) + + initializeApplicationCase(receiptCode, educationalStatus) + updateApplicationCase(receiptCode, educationalStatus, request) + + scoreService.createScore(receiptCode) + scoreService.updateScore(receiptCode) + } + + private fun initializeGraduationInfo(receiptCode: Long, request: SubmitApplicationRequest) { graduationInfoService.changeGraduationInfo( receiptCode = receiptCode, graduateDate = request.applicationInfo.graduationDate ) + } + + private fun updateGraduationInformation( + receiptCode: Long, + educationalStatus: EducationalStatus, + request: SubmitApplicationRequest + ) { if (educationalStatus != EducationalStatus.QUALIFICATION_EXAM) { graduationInfoService.updateGraduationInformation( receiptCode = receiptCode, @@ -61,9 +89,17 @@ class SubmitApplicationUseCase( ) ) } + } - // 3. ApplicationCase 초기화 + 업데이트 (동기) + private fun initializeApplicationCase(receiptCode: Long, educationalStatus: EducationalStatus) { applicationCaseService.initializeApplicationCase(receiptCode, educationalStatus) + } + + private fun updateApplicationCase( + receiptCode: Long, + educationalStatus: EducationalStatus, + request: SubmitApplicationRequest + ) { when (educationalStatus) { EducationalStatus.QUALIFICATION_EXAM -> { applicationCaseService.updateQualificationScore( @@ -106,17 +142,5 @@ class SubmitApplicationUseCase( ) } } - - // 4. Score 생성 + 계산 (동기) - scoreService.createScore(receiptCode) - scoreService.updateScore(receiptCode) - - applicationEventPort.create(receiptCode, userId) - - // 이벤트 처리 로직을 동기적으로 실행하도록 변경 - // cause. 이벤트 순서 문제(Kafka는 비동기적으로 호출되어Score 생성, applicationCase, Score 업데이트 순서가 보장되지 않음.) -// applicationEventPort.submitApplication( -// SubmitApplicationMapper.toSubmissionData(request, application, userId) -// ) } } From ca59869ebe8cae7a8b66122b0de569c4491c6268 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 16:14:35 +0900 Subject: [PATCH 80/96] refactor ( #74 ) : studentId -> studentNumber --- .../domain/application/usecase/SubmitApplicationUseCase.kt | 6 +++--- .../application/usecase/dto/request/ApplicationInfo.kt | 2 +- .../application/usecase/mapper/SubmitApplicationMapper.kt | 1 - .../presentation/dto/request/ApplicationInfoWebRequest.kt | 2 +- .../mapper/SubmitApplicationWebRequestMapper.kt | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 02a460fe..40974035 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -80,9 +80,9 @@ class SubmitApplicationUseCase( graduationInfoService.updateGraduationInformation( receiptCode = receiptCode, request = UpdateGraduationInformationRequest( - gradeNumber = request.applicationInfo.studentId.substring(0, 1), - classNumber = request.applicationInfo.studentId.substring(1, 2), - studentNumber = request.applicationInfo.studentId.substring(2), + gradeNumber = request.applicationInfo.studentNumber.substring(0, 1), + classNumber = request.applicationInfo.studentNumber.substring(1, 2), + studentNumber = request.applicationInfo.studentNumber.substring(2), schoolCode = request.schoolInfo.schoolCode, teacherName = request.schoolInfo.teacherName, teacherTel = request.schoolInfo.schoolPhone diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt index 11010959..b58ed743 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicationInfo.kt @@ -7,7 +7,7 @@ import java.time.YearMonth data class ApplicationInfo( val applicationType: ApplicationType, val educationalStatus: EducationalStatus, - val studentId: String, + val studentNumber: String, val graduationDate: YearMonth, val studyPlan: String, val selfIntroduce: String, diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index faab411d..68c0578c 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -56,7 +56,6 @@ object SubmitApplicationMapper { techAndHomeGrade = request.gradeInfo.techAndHomeGrade, gedKorean = request.gradeInfo.gedKorean, gedSocial = request.gradeInfo.gedSocial, - gedHistory = request.gradeInfo.gedHistory, gedMath = request.gradeInfo.gedMath, gedScience = request.gradeInfo.gedScience, gedEnglish = request.gradeInfo.gedEnglish, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt index 7d100f73..dae02b9b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt @@ -16,7 +16,7 @@ data class ApplicationInfoWebRequest( @field:NotBlank(message = "학번은 필수입니다") @field:Size(min = 4, max = 4, message = "학번은 4자리여야 합니다") - val studentId: String, + val studentNumber: String, @field:NotNull(message = "졸업(예정)일은 필수입니다") val graduationDate: YearMonth, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt index f8c26b9a..dfc84670 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt @@ -31,7 +31,7 @@ fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationR applicationInfo = ApplicationInfo( applicationType = applicationInfo.applicationType, educationalStatus = applicationInfo.educationalStatus, - studentId = applicationInfo.studentId, + studentNumber = applicationInfo.studentNumber, graduationDate = applicationInfo.graduationDate, studyPlan = applicationInfo.studyPlan, selfIntroduce = applicationInfo.selfIntroduce, From 7da288dccb5e51285e692bf03adf391580ae00d1 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 16:57:25 +0900 Subject: [PATCH 81/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EB=A1=9C=EC=A7=81=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/mapper/SubmitApplicationMapper.kt | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index 68c0578c..3abbcebe 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -30,43 +30,45 @@ object SubmitApplicationMapper { ) } - fun toSubmissionData( - request: SubmitApplicationRequest, - application: Application, - userId: UUID - ): SubmissionData { - return SubmissionData( - receiptCode = application.receiptCode, - userId = userId, - educationalStatus = request.applicationInfo.educationalStatus, - graduationDate = request.applicationInfo.graduationDate, - gradeNumber = request.applicationInfo.studentId.substring(0, 1), - classNumber = request.applicationInfo.studentId.substring(1, 2), - studentNumber = request.applicationInfo.studentId.substring(2), - schoolCode = request.schoolInfo.schoolCode, - teacherName = request.schoolInfo.teacherName, - schoolPhone = request.schoolInfo.schoolPhone, - scoreData = ScoreData( - koreanGrade = request.gradeInfo.koreanGrade, - socialGrade = request.gradeInfo.socialGrade, - historyGrade = request.gradeInfo.historyGrade, - mathGrade = request.gradeInfo.mathGrade, - scienceGrade = request.gradeInfo.scienceGrade, - englishGrade = request.gradeInfo.englishGrade, - techAndHomeGrade = request.gradeInfo.techAndHomeGrade, - gedKorean = request.gradeInfo.gedKorean, - gedSocial = request.gradeInfo.gedSocial, - gedMath = request.gradeInfo.gedMath, - gedScience = request.gradeInfo.gedScience, - gedEnglish = request.gradeInfo.gedEnglish, - absence = request.attendanceInfo.absence, - tardiness = request.attendanceInfo.tardiness, - earlyLeave = request.attendanceInfo.earlyLeave, - classExit = request.attendanceInfo.classExit, - volunteer = request.attendanceInfo.volunteer, - algorithmAward = request.awardAndCertificateInfo.algorithmAward, - infoProcessingCert = request.awardAndCertificateInfo.infoProcessingCert - ) - ) - } + // 원서 제출 과정에서 세부적인 로직은 이벤트 처리가 아닌 동기적으로 호출하기 때문에 해당 로직은 미사용 +// fun toSubmissionData( +// request: SubmitApplicationRequest, +// application: Application, +// userId: UUID +// ): SubmissionData { +// return SubmissionData( +// receiptCode = application.receiptCode, +// userId = userId, +// educationalStatus = request.applicationInfo.educationalStatus, +// graduationDate = request.applicationInfo.graduationDate, +// gradeNumber = request.applicationInfo.studentId.substring(0, 1), +// classNumber = request.applicationInfo.studentId.substring(1, 2), +// studentNumber = request.applicationInfo.studentId.substring(2), +// schoolCode = request.schoolInfo.schoolCode, +// teacherName = request.schoolInfo.teacherName, +// schoolPhone = request.schoolInfo.schoolPhone, +// scoreData = ScoreData( +// koreanGrade = request.gradeInfo.koreanGrade, +// socialGrade = request.gradeInfo.socialGrade, +// historyGrade = request.gradeInfo.historyGrade, +// mathGrade = request.gradeInfo.mathGrade, +// scienceGrade = request.gradeInfo.scienceGrade, +// englishGrade = request.gradeInfo.englishGrade, +// techAndHomeGrade = request.gradeInfo.techAndHomeGrade, +// gedKorean = request.gradeInfo.gedKorean, +// gedSocial = request.gradeInfo.gedSocial, +// gedHistory = request.gradeInfo.gedHistory, +// gedMath = request.gradeInfo.gedMath, +// gedScience = request.gradeInfo.gedScience, +// gedEnglish = request.gradeInfo.gedEnglish, +// absence = request.attendanceInfo.absence, +// tardiness = request.attendanceInfo.tardiness, +// earlyLeave = request.attendanceInfo.earlyLeave, +// classExit = request.attendanceInfo.classExit, +// volunteer = request.attendanceInfo.volunteer, +// algorithmAward = request.awardAndCertificateInfo.algorithmAward, +// infoProcessingCert = request.awardAndCertificateInfo.infoProcessingCert +// ) +// ) +// } } From 039e50683a51ecdb606564de587ce21f06c0ef35 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 16:57:53 +0900 Subject: [PATCH 82/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20StudentNumber?= =?UTF-8?q?=EC=97=90=20from=20companion=20object=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 --- .../domain/graduationInfo/model/vo/StudentNumber.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt index 9d153192..c21dc309 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt @@ -4,4 +4,14 @@ data class StudentNumber( val gradeNumber: String, val classNumber: String, val studentNumber: String, -) +) { + companion object { + fun from(studentNumber: String): StudentNumber { + return StudentNumber( + gradeNumber = studentNumber.substring(0, 1), + classNumber = studentNumber.substring(1, 2), + studentNumber = studentNumber.substring(2) + ) + } + } +} From 5c509b16b9cae07867c3e4f872153a06946fc0f3 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:02:20 +0900 Subject: [PATCH 83/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20SubmitApplic?= =?UTF-8?q?ationUseCase=EC=9D=98=20updateGraduationInformation=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EC=97=90=20studentNumber.from=EC=9D=84=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=97=AC=20StudentNumber=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=EB=A1=9C=20=EB=B3=80=ED=99=98=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/SubmitApplicationUseCase.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt index 40974035..f1a11a4a 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/SubmitApplicationUseCase.kt @@ -13,6 +13,7 @@ import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.Ext import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService +import hs.kr.entrydsm.application.domain.graduationInfo.model.vo.StudentNumber import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest import hs.kr.entrydsm.application.domain.score.service.ScoreService import hs.kr.entrydsm.application.global.annotation.UseCase @@ -29,7 +30,6 @@ class SubmitApplicationUseCase( private val graduationInfoService: GraduationInfoService, private val scoreService: ScoreService ) { - fun execute(request: SubmitApplicationRequest) { val userId = securityPort.getCurrentUserId() val user = applicationQueryUserPort.queryUserByUserId(userId) @@ -77,12 +77,13 @@ class SubmitApplicationUseCase( request: SubmitApplicationRequest ) { if (educationalStatus != EducationalStatus.QUALIFICATION_EXAM) { + val studentNumber: StudentNumber = StudentNumber.from(request.applicationInfo.studentNumber) graduationInfoService.updateGraduationInformation( receiptCode = receiptCode, request = UpdateGraduationInformationRequest( - gradeNumber = request.applicationInfo.studentNumber.substring(0, 1), - classNumber = request.applicationInfo.studentNumber.substring(1, 2), - studentNumber = request.applicationInfo.studentNumber.substring(2), + gradeNumber = studentNumber.gradeNumber, + classNumber = studentNumber.classNumber, + studentNumber = studentNumber.studentNumber, schoolCode = request.schoolInfo.schoolCode, teacherName = request.schoolInfo.teacherName, teacherTel = request.schoolInfo.schoolPhone From 6653229ee35f0d04afd4d864f39439f48cea9b03 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:09:59 +0900 Subject: [PATCH 84/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20ApplicationI?= =?UTF-8?q?nfoWebRequest=EC=97=90=EC=84=9C=20=ED=95=99=EB=B2=88=205?= =?UTF-8?q?=EC=9E=90=EB=A6=AC=20=EB=B0=9B=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/dto/request/ApplicationInfoWebRequest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt index dae02b9b..91a5f245 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt @@ -15,7 +15,7 @@ data class ApplicationInfoWebRequest( val educationalStatus: EducationalStatus, @field:NotBlank(message = "학번은 필수입니다") - @field:Size(min = 4, max = 4, message = "학번은 4자리여야 합니다") + @field:Size(min = 5, max = 5, message = "학번은 5자리여야 합니다") val studentNumber: String, @field:NotNull(message = "졸업(예정)일은 필수입니다") From 28d9951aa1008484d1e175d248e852b2f66eedc9 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:10:26 +0900 Subject: [PATCH 85/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20StudentNumbe?= =?UTF-8?q?r=20companion=20object=20from=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/graduationInfo/model/vo/StudentNumber.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt index c21dc309..cf092518 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/graduationInfo/model/vo/StudentNumber.kt @@ -9,8 +9,8 @@ data class StudentNumber( fun from(studentNumber: String): StudentNumber { return StudentNumber( gradeNumber = studentNumber.substring(0, 1), - classNumber = studentNumber.substring(1, 2), - studentNumber = studentNumber.substring(2) + classNumber = studentNumber.substring(1, 3), + studentNumber = studentNumber.substring(3, 5) ) } } From fae102bb78844c5b743ea3aff728fec5792ad822 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:10:56 +0900 Subject: [PATCH 86/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20AttendanceIn?= =?UTF-8?q?foWebRequest=EC=97=90=20@positiveOrZero=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/AttendanceInfoWebRequest.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt index d7fca982..9011f42f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/AttendanceInfoWebRequest.kt @@ -1,20 +1,20 @@ package hs.kr.entrydsm.application.domain.application.presentation.dto.request -import javax.validation.constraints.Min +import javax.validation.constraints.PositiveOrZero data class AttendanceInfoWebRequest( - @field:Min(value = 0, message = "결석 횟수는 0 이상이어야 합니다") + @PositiveOrZero val absence: Int, - @field:Min(value = 0, message = "지각 횟수는 0 이상이어야 합니다") + @PositiveOrZero val tardiness: Int, - @field:Min(value = 0, message = "조퇴 횟수는 0 이상이어야 합니다") + @PositiveOrZero val earlyLeave: Int, - @field:Min(value = 0, message = "결과 횟수는 0 이상이어야 합니다") + @PositiveOrZero val classExit: Int, - @field:Min(value = 0, message = "봉사 시간은 0 이상이어야 합니다") + @PositiveOrZero val volunteer: Int ) \ No newline at end of file From 8385c6682204aa77d0d3cf62cef679d39bf279c4 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:11:18 +0900 Subject: [PATCH 87/96] =?UTF-8?q?feat=20(=20#74=20)=20:=20GradeInfoWebRequ?= =?UTF-8?q?est=EC=9D=98=20=EC=84=B1=EC=A0=81=20=ED=95=84=EB=93=9C=EC=97=90?= =?UTF-8?q?=20=EC=A0=95=EA=B7=9C=EC=8B=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/dto/request/GradeInfoWebRequest.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt index 46c7d49e..15b6f7bd 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/GradeInfoWebRequest.kt @@ -4,27 +4,35 @@ import java.math.BigDecimal import javax.validation.constraints.DecimalMax import javax.validation.constraints.DecimalMin import javax.validation.constraints.NotNull +import javax.validation.constraints.Pattern data class GradeInfoWebRequest( @field:NotNull(message = "국어 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val koreanGrade: String, @field:NotNull(message = "사회 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val socialGrade: String, @field:NotNull(message = "역사 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val historyGrade: String, @field:NotNull(message = "수학 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val mathGrade: String, @field:NotNull(message = "과학 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val scienceGrade: String, @field:NotNull(message = "영어 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val englishGrade: String, @field:NotNull(message = "기술·가정 성적은 필수입니다") + @Pattern(regexp = "[A-E,X]{4}") val techAndHomeGrade: String, @field:DecimalMin(value = "0.0", message = "GED 국어 점수는 0점 이상이어야 합니다") From 1d859f05d3cf661a89956dcef6ee1c3211d9c422 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:44:36 +0900 Subject: [PATCH 88/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20ApplicationCase?= =?UTF-8?q?Service=EC=97=90=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EB=B0=9C=EC=86=A1=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/applicationCase/service/ApplicationCaseService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index cedc9a9c..858f3a5e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -80,7 +80,7 @@ class ApplicationCaseService( ) } - applicationCaseEventPort.updateGraduationCase(graduationCase) + //applicationCaseEventPort.updateGraduationCase(graduationCase) } fun updateGraduationScore(receiptCode: Long, request: UpdateGraduationCaseRequest) { @@ -117,6 +117,6 @@ class ApplicationCaseService( ) ) - applicationCaseEventPort.updateQualificationCase(qualificationCase) + //applicationCaseEventPort.updateQualificationCase(qualificationCase) } } \ No newline at end of file From 1982d2ac75a181495aafcc789efbc8c59d01c070 Mon Sep 17 00:00:00 2001 From: coehgns Date: Thu, 1 Jan 2026 17:45:36 +0900 Subject: [PATCH 89/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20CreateScoreAppl?= =?UTF-8?q?icationConsumer=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EC=88=98=EC=8B=A0=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/CreateScoreApplicationConsumer.kt | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt index 6e93d1cc..26c9237f 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt @@ -17,24 +17,24 @@ class CreateScoreApplicationConsumer ( private val createScoreUseCase: CreateScoreUseCase, private val applicationEventPort: ApplicationEventPort ) { - @Retryable( - value = [Exception::class], - maxAttempts = 3, - backoff = Backoff(delay = 100) - ) - @KafkaListener( - topics = [KafkaTopics.CREATE_APPLICATION], - groupId = "create-score", - containerFactory = "kafkaListenerContainerFactory", - ) - fun createScore(message: String) { - val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) - createScoreUseCase.execute(createApplicationEvent.receiptCode) - } - - @Recover - fun recover(exception: Exception, message: String) { - val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) - applicationEventPort.createApplicationScoreRollback(createApplicationEvent.receiptCode) - } +// @Retryable( +// value = [Exception::class], +// maxAttempts = 3, +// backoff = Backoff(delay = 100) +// ) +// @KafkaListener( +// topics = [KafkaTopics.CREATE_APPLICATION], +// groupId = "create-score", +// containerFactory = "kafkaListenerContainerFactory", +// ) +// fun createScore(message: String) { +// val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) +// createScoreUseCase.execute(createApplicationEvent.receiptCode) +// } +// +// @Recover +// fun recover(exception: Exception, message: String) { +// val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) +// applicationEventPort.createApplicationScoreRollback(createApplicationEvent.receiptCode) +// } } From eda8ce75e5f4b0079d96a5a826e41c930dc87dd9 Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:03:05 +0900 Subject: [PATCH 90/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20ApplicationCase?= =?UTF-8?q?Service=EC=97=90=EC=84=9C=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=9C=ED=96=89=20=EB=A1=9C=EC=A7=81=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../applicationCase/service/ApplicationCaseService.kt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt index 858f3a5e..f9fe8169 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/service/ApplicationCaseService.kt @@ -3,7 +3,6 @@ package hs.kr.entrydsm.application.domain.applicationCase.service import hs.kr.entrydsm.application.domain.application.exception.ApplicationExceptions import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.applicationCase.event.spi.ApplicationCaseEventPort import hs.kr.entrydsm.application.domain.applicationCase.exception.ApplicationCaseExceptions import hs.kr.entrydsm.application.domain.applicationCase.factory.ApplicationCaseFactory import hs.kr.entrydsm.application.domain.applicationCase.model.ApplicationCase @@ -23,7 +22,6 @@ class ApplicationCaseService( private val commandApplicationCasePort: CommandApplicationCasePort, private val queryApplicationCasePort: QueryApplicationCasePort, private val applicationCaseFactory: ApplicationCaseFactory, - private val applicationCaseEventPort: ApplicationCaseEventPort, ) { fun hasEducationalStatusMismatch(application: Application, applicationCase: ApplicationCase): Boolean { application.educationalStatus ?: throw ApplicationCaseExceptions.EducationalStatusUnmatchedException() @@ -79,8 +77,6 @@ class ApplicationCaseService( ) ) } - - //applicationCaseEventPort.updateGraduationCase(graduationCase) } fun updateGraduationScore(receiptCode: Long, request: UpdateGraduationCaseRequest) { @@ -116,7 +112,5 @@ class ApplicationCaseService( ) ) ) - - //applicationCaseEventPort.updateQualificationCase(qualificationCase) } } \ No newline at end of file From d6d84f169d3f73528c117975179e9c689ece7d79 Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:03:41 +0900 Subject: [PATCH 91/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EB=A1=9C=EC=A7=81=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/spi/ApplicationEventPort.kt | 3 +- .../application/event/ApplicationProducer.kt | 80 ++++---- .../event/SubmitApplicationConsumer.kt | 180 +++++++++--------- 3 files changed, 133 insertions(+), 130 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt index 14102831..0cb67e93 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt @@ -6,7 +6,8 @@ import java.util.UUID interface ApplicationEventPort { fun create(receiptCode: Long, userId: UUID) - fun submitApplication(submissionData: SubmissionData) + // 미사용 + //fun submitApplication(submissionData: SubmissionData) // 미사용 //fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index 934381ad..fd19e61b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -30,46 +30,46 @@ class ApplicationProducer( ) } - override fun submitApplication(submissionData: SubmissionData) { - val submitApplicationEvent = SubmitApplicationEvent( - receiptCode = submissionData.receiptCode, - userId = submissionData.userId, - educationalStatus = submissionData.educationalStatus, - graduationDate = submissionData.graduationDate, - gradeNumber = submissionData.gradeNumber, - classNumber = submissionData.classNumber, - studentNumber = submissionData.studentNumber, - schoolCode = submissionData.schoolCode, - teacherName = submissionData.teacherName, - schoolPhone = submissionData.schoolPhone, - scoreData = ApplicationScoreData( - koreanGrade = submissionData.scoreData.koreanGrade, - socialGrade = submissionData.scoreData.socialGrade, - historyGrade = submissionData.scoreData.historyGrade, - mathGrade = submissionData.scoreData.mathGrade, - scienceGrade = submissionData.scoreData.scienceGrade, - englishGrade = submissionData.scoreData.englishGrade, - techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, - gedKorean = submissionData.scoreData.gedKorean, - gedSocial = submissionData.scoreData.gedSocial, - gedHistory = submissionData.scoreData.gedHistory, - gedMath = submissionData.scoreData.gedMath, - gedScience = submissionData.scoreData.gedScience, - gedEnglish = submissionData.scoreData.gedEnglish, - absence = submissionData.scoreData.absence, - tardiness = submissionData.scoreData.tardiness, - earlyLeave = submissionData.scoreData.earlyLeave, - classExit = submissionData.scoreData.classExit, - volunteer = submissionData.scoreData.volunteer, - algorithmAward = submissionData.scoreData.algorithmAward, - infoProcessingCert = submissionData.scoreData.infoProcessingCert - ) - ) - publishApplicationSubmittedTemplate.send( - KafkaTopics.SUBMIT_APPLICATION, - mapper.writeValueAsString(submitApplicationEvent) - ) - } +// override fun submitApplication(submissionData: SubmissionData) { +// val submitApplicationEvent = SubmitApplicationEvent( +// receiptCode = submissionData.receiptCode, +// userId = submissionData.userId, +// educationalStatus = submissionData.educationalStatus, +// graduationDate = submissionData.graduationDate, +// gradeNumber = submissionData.gradeNumber, +// classNumber = submissionData.classNumber, +// studentNumber = submissionData.studentNumber, +// schoolCode = submissionData.schoolCode, +// teacherName = submissionData.teacherName, +// schoolPhone = submissionData.schoolPhone, +// scoreData = ApplicationScoreData( +// koreanGrade = submissionData.scoreData.koreanGrade, +// socialGrade = submissionData.scoreData.socialGrade, +// historyGrade = submissionData.scoreData.historyGrade, +// mathGrade = submissionData.scoreData.mathGrade, +// scienceGrade = submissionData.scoreData.scienceGrade, +// englishGrade = submissionData.scoreData.englishGrade, +// techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, +// gedKorean = submissionData.scoreData.gedKorean, +// gedSocial = submissionData.scoreData.gedSocial, +// gedHistory = submissionData.scoreData.gedHistory, +// gedMath = submissionData.scoreData.gedMath, +// gedScience = submissionData.scoreData.gedScience, +// gedEnglish = submissionData.scoreData.gedEnglish, +// absence = submissionData.scoreData.absence, +// tardiness = submissionData.scoreData.tardiness, +// earlyLeave = submissionData.scoreData.earlyLeave, +// classExit = submissionData.scoreData.classExit, +// volunteer = submissionData.scoreData.volunteer, +// algorithmAward = submissionData.scoreData.algorithmAward, +// infoProcessingCert = submissionData.scoreData.infoProcessingCert +// ) +// ) +// publishApplicationSubmittedTemplate.send( +// KafkaTopics.SUBMIT_APPLICATION, +// mapper.writeValueAsString(submitApplicationEvent) +// ) +// } override fun createApplicationScoreRollback(receiptCode: Long) { createApplicationRollbackTemplate.send( diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt index 3d78a35b..e7e8ee29 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt @@ -20,93 +20,95 @@ class SubmitApplicationConsumer( private val graduationInfoService: GraduationInfoService ) { - @KafkaListener( - topics = [KafkaTopics.SUBMIT_APPLICATION], - groupId = "application-submitted", - containerFactory = "kafkaListenerContainerFactory" - ) - fun submitApplication(message: String) { - val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) - - initializeApplicationCase(submitApplicationEvent) - initializeGraduationInfo(submitApplicationEvent) - updateScore(submitApplicationEvent) - updateGraduationInformation(submitApplicationEvent) - } - - private fun initializeApplicationCase(submitApplicationEvent: SubmitApplicationEvent) { - applicationCaseService.initializeApplicationCase( - submitApplicationEvent.receiptCode, - submitApplicationEvent.educationalStatus - ) - } - - private fun initializeGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { - graduationInfoService.changeGraduationInfo( - submitApplicationEvent.receiptCode, - submitApplicationEvent.graduationDate - ) - } - - private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { - if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { - return - } - graduationInfoService.updateGraduationInformation( - submitApplicationEvent.receiptCode, - UpdateGraduationInformationRequest( - gradeNumber = submitApplicationEvent.gradeNumber, - classNumber = submitApplicationEvent.classNumber, - studentNumber = submitApplicationEvent.studentNumber, - schoolCode = submitApplicationEvent.schoolCode, - teacherName = submitApplicationEvent.teacherName, - teacherTel = submitApplicationEvent.schoolPhone - ) - ) - } - - private fun updateScore(submitApplicationEvent: SubmitApplicationEvent) { - when (submitApplicationEvent.educationalStatus) { - EducationalStatus.QUALIFICATION_EXAM -> { - applicationCaseService.updateQualificationScore( - submitApplicationEvent.receiptCode, - UpdateQualificationCaseRequest( - koreanGrade = submitApplicationEvent.scoreData.gedKorean, - socialGrade = submitApplicationEvent.scoreData.gedSocial, - mathGrade = submitApplicationEvent.scoreData.gedMath, - scienceGrade = submitApplicationEvent.scoreData.gedScience, - englishGrade = submitApplicationEvent.scoreData.gedEnglish, - historyGrade = submitApplicationEvent.scoreData.gedHistory, - extraScore = ExtraScoreRequest( - hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, - hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward - ) - ) - ) - } - else -> { - applicationCaseService.updateGraduationScore( - submitApplicationEvent.receiptCode, - UpdateGraduationCaseRequest( - volunteerTime = submitApplicationEvent.scoreData.volunteer, - absenceDayCount = submitApplicationEvent.scoreData.absence, - lectureAbsenceCount = submitApplicationEvent.scoreData.classExit, - latenessCount = submitApplicationEvent.scoreData.tardiness, - earlyLeaveCount = submitApplicationEvent.scoreData.earlyLeave, - koreanGrade = submitApplicationEvent.scoreData.koreanGrade, - socialGrade = submitApplicationEvent.scoreData.socialGrade, - historyGrade = submitApplicationEvent.scoreData.historyGrade, - mathGrade = submitApplicationEvent.scoreData.mathGrade, - scienceGrade = submitApplicationEvent.scoreData.scienceGrade, - englishGrade = submitApplicationEvent.scoreData.englishGrade, - techAndHomeGrade = submitApplicationEvent.scoreData.techAndHomeGrade, - extraScore = ExtraScoreRequest( - hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, - hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward - ) - ) - ) - } - } - } + // 기존 해당 클래스에서 이벤트로 처리하도 원서 제출 로직을 비동기적으로 처리 + // 미사용 +// @KafkaListener( +// topics = [KafkaTopics.SUBMIT_APPLICATION], +// groupId = "application-submitted", +// containerFactory = "kafkaListenerContainerFactory" +// ) +// fun submitApplication(message: String) { +// val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) +// +// initializeApplicationCase(submitApplicationEvent) +// initializeGraduationInfo(submitApplicationEvent) +// updateScore(submitApplicationEvent) +// updateGraduationInformation(submitApplicationEvent) +// } +// +// private fun initializeApplicationCase(submitApplicationEvent: SubmitApplicationEvent) { +// applicationCaseService.initializeApplicationCase( +// submitApplicationEvent.receiptCode, +// submitApplicationEvent.educationalStatus +// ) +// } +// +// private fun initializeGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { +// graduationInfoService.changeGraduationInfo( +// submitApplicationEvent.receiptCode, +// submitApplicationEvent.graduationDate +// ) +// } +// +// private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { +// if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { +// return +// } +// graduationInfoService.updateGraduationInformation( +// submitApplicationEvent.receiptCode, +// UpdateGraduationInformationRequest( +// gradeNumber = submitApplicationEvent.gradeNumber, +// classNumber = submitApplicationEvent.classNumber, +// studentNumber = submitApplicationEvent.studentNumber, +// schoolCode = submitApplicationEvent.schoolCode, +// teacherName = submitApplicationEvent.teacherName, +// teacherTel = submitApplicationEvent.schoolPhone +// ) +// ) +// } +// +// private fun updateScore(submitApplicationEvent: SubmitApplicationEvent) { +// when (submitApplicationEvent.educationalStatus) { +// EducationalStatus.QUALIFICATION_EXAM -> { +// applicationCaseService.updateQualificationScore( +// submitApplicationEvent.receiptCode, +// UpdateQualificationCaseRequest( +// koreanGrade = submitApplicationEvent.scoreData.gedKorean, +// socialGrade = submitApplicationEvent.scoreData.gedSocial, +// mathGrade = submitApplicationEvent.scoreData.gedMath, +// scienceGrade = submitApplicationEvent.scoreData.gedScience, +// englishGrade = submitApplicationEvent.scoreData.gedEnglish, +// historyGrade = submitApplicationEvent.scoreData.gedHistory, +// extraScore = ExtraScoreRequest( +// hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, +// hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward +// ) +// ) +// ) +// } +// else -> { +// applicationCaseService.updateGraduationScore( +// submitApplicationEvent.receiptCode, +// UpdateGraduationCaseRequest( +// volunteerTime = submitApplicationEvent.scoreData.volunteer, +// absenceDayCount = submitApplicationEvent.scoreData.absence, +// lectureAbsenceCount = submitApplicationEvent.scoreData.classExit, +// latenessCount = submitApplicationEvent.scoreData.tardiness, +// earlyLeaveCount = submitApplicationEvent.scoreData.earlyLeave, +// koreanGrade = submitApplicationEvent.scoreData.koreanGrade, +// socialGrade = submitApplicationEvent.scoreData.socialGrade, +// historyGrade = submitApplicationEvent.scoreData.historyGrade, +// mathGrade = submitApplicationEvent.scoreData.mathGrade, +// scienceGrade = submitApplicationEvent.scoreData.scienceGrade, +// englishGrade = submitApplicationEvent.scoreData.englishGrade, +// techAndHomeGrade = submitApplicationEvent.scoreData.techAndHomeGrade, +// extraScore = ExtraScoreRequest( +// hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, +// hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward +// ) +// ) +// ) +// } +// } +// } } \ No newline at end of file From 2b3e41507a0845cb5be31bc5fdea594a025d9081 Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:16:26 +0900 Subject: [PATCH 92/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20UpdateQualifica?= =?UTF-8?q?tionCaseRequest=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/dto/request/UpdateQualificationCaseRequest.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt index 9247bef0..8c593bfb 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/usecase/dto/request/UpdateQualificationCaseRequest.kt @@ -9,6 +9,5 @@ data class UpdateQualificationCaseRequest( val scienceGrade: BigDecimal = BigDecimal.ZERO, val englishGrade: BigDecimal = BigDecimal.ZERO, val historyGrade: BigDecimal = BigDecimal.ZERO, - val extraScore: ExtraScoreRequest ) \ No newline at end of file From 2e756d7558c9f401e31de86fce2df5dd4248e84f Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:19:01 +0900 Subject: [PATCH 93/96] =?UTF-8?q?refactor=20(=20#74=20)=20:=20ApplicationI?= =?UTF-8?q?nfoWebRequest=EC=9D=98=20=ED=95=99=EC=97=85=20=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=EC=84=9C,=20=EC=9E=90=EA=B8=B0=EC=86=8C=EA=B0=9C?= =?UTF-8?q?=EC=84=9C=20=EA=B2=80=EC=A6=9D=20message=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=201500=20->=201600?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/dto/request/ApplicationInfoWebRequest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt index 91a5f245..f2415a8c 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicationInfoWebRequest.kt @@ -22,11 +22,11 @@ data class ApplicationInfoWebRequest( val graduationDate: YearMonth, @field:NotBlank(message = "학업 계획서는 필수입니다") - @field:Size(max = 1600, message = "학업 계획서는 1500자 이하여야 합니다") + @field:Size(max = 1600, message = "학업 계획서는 1600자 이하여야 합니다") val studyPlan: String, @field:NotBlank(message = "자기소개서는 필수입니다") - @field:Size(max = 1600, message = "자기소개서는 1500자 이하여야 합니다") + @field:Size(max = 1600, message = "자기소개서는 1600자 이하여야 합니다") val selfIntroduce: String, @field:NotNull(message = "국가유공자 자녀 여부는 필수입니다") From ee836321160726757ad914044798b7831660d412 Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:21:13 +0900 Subject: [PATCH 94/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=B6=80?= =?UTF-8?q?=EB=AA=A8=20=EC=84=B1=EB=B3=84=20=ED=95=84=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/application/usecase/dto/request/ApplicantInfo.kt | 1 - .../presentation/dto/request/ApplicantInfoWebRequest.kt | 3 --- .../presentation/mapper/SubmitApplicationWebRequestMapper.kt | 1 - 3 files changed, 5 deletions(-) diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt index dc938b9a..5de3b8e3 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/dto/request/ApplicantInfo.kt @@ -11,5 +11,4 @@ data class ApplicantInfo( val parentName: String, val parentTel: String, val parentRelation: String, - val guardianGender: String ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt index 88047b20..c9e4fa26 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/dto/request/ApplicantInfoWebRequest.kt @@ -29,7 +29,4 @@ data class ApplicantInfoWebRequest( @field:NotBlank(message = "보호자 관계는 필수입니다") val parentRelation: String, - - @field:NotBlank(message = "보호자 성별은 필수입니다") - val guardianGender: String ) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt index dfc84670..41adce48 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/presentation/mapper/SubmitApplicationWebRequestMapper.kt @@ -20,7 +20,6 @@ fun SubmitApplicationWebRequest.toSubmitApplicationRequest(): SubmitApplicationR parentName = applicantInfo.parentName, parentTel = applicantInfo.parentTel, parentRelation = applicantInfo.parentRelation, - guardianGender = applicantInfo.guardianGender ), addressInfo = AddressInfo( isDaejeon = addressInfo.isDaejeon, From 66527c901c24c3b3f322d041df2a69f47295e612 Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:32:31 +0900 Subject: [PATCH 95/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/event/dto/SubmissionData.kt | 43 ------- .../event/spi/ApplicationEventPort.kt | 10 -- .../usecase/mapper/SubmitApplicationMapper.kt | 45 ------- .../application/event/ApplicationProducer.kt | 45 ------- .../event/SubmitApplicationConsumer.kt | 114 ------------------ 5 files changed, 257 deletions(-) delete mode 100644 casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt deleted file mode 100644 index a1deea5e..00000000 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/dto/SubmissionData.kt +++ /dev/null @@ -1,43 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.event.dto - -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import java.math.BigDecimal -import java.time.YearMonth -import java.util.UUID - -data class SubmissionData( - val receiptCode: Long, - val userId: UUID, - val educationalStatus: EducationalStatus, - val graduationDate: YearMonth, - val gradeNumber: String, - val classNumber: String, - val studentNumber: String, - val schoolCode: String, - val teacherName: String, - val schoolPhone: String, - val scoreData: ScoreData -) - -data class ScoreData( - val koreanGrade: String, - val socialGrade: String, - val historyGrade: String, - val mathGrade: String, - val scienceGrade: String, - val englishGrade: String, - val techAndHomeGrade: String, - val gedKorean: BigDecimal, - val gedSocial: BigDecimal, - val gedHistory: BigDecimal, - val gedMath: BigDecimal, - val gedScience: BigDecimal, - val gedEnglish: BigDecimal, - val absence: Int, - val tardiness: Int, - val earlyLeave: Int, - val classExit: Int, - val volunteer: Int, - val algorithmAward: Boolean, - val infoProcessingCert: Boolean -) \ No newline at end of file diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt index 0cb67e93..25db0be6 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/spi/ApplicationEventPort.kt @@ -1,19 +1,9 @@ package hs.kr.entrydsm.application.domain.application.event.spi -import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import java.util.UUID interface ApplicationEventPort { fun create(receiptCode: Long, userId: UUID) - // 미사용 - //fun submitApplication(submissionData: SubmissionData) - - // 미사용 - //fun updateEducationalStatus(receiptCode: Long, graduateDate: YearMonth) - - // 미사용 - //fun submitApplicationFinal(receiptCode: Long) - fun createApplicationScoreRollback(receiptCode: Long) } diff --git a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt index 3abbcebe..e0cf5c4e 100644 --- a/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt +++ b/casper-application-domain/src/main/kotlin/hs/kr/entrydsm/application/domain/application/usecase/mapper/SubmitApplicationMapper.kt @@ -1,11 +1,8 @@ package hs.kr.entrydsm.application.domain.application.usecase.mapper -import hs.kr.entrydsm.application.domain.application.event.dto.ScoreData -import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.model.Application import hs.kr.entrydsm.application.domain.application.usecase.dto.request.SubmitApplicationRequest import hs.kr.entrydsm.application.domain.user.model.User -import java.util.UUID object SubmitApplicationMapper { @@ -29,46 +26,4 @@ object SubmitApplicationMapper { userId = user.id ) } - - // 원서 제출 과정에서 세부적인 로직은 이벤트 처리가 아닌 동기적으로 호출하기 때문에 해당 로직은 미사용 -// fun toSubmissionData( -// request: SubmitApplicationRequest, -// application: Application, -// userId: UUID -// ): SubmissionData { -// return SubmissionData( -// receiptCode = application.receiptCode, -// userId = userId, -// educationalStatus = request.applicationInfo.educationalStatus, -// graduationDate = request.applicationInfo.graduationDate, -// gradeNumber = request.applicationInfo.studentId.substring(0, 1), -// classNumber = request.applicationInfo.studentId.substring(1, 2), -// studentNumber = request.applicationInfo.studentId.substring(2), -// schoolCode = request.schoolInfo.schoolCode, -// teacherName = request.schoolInfo.teacherName, -// schoolPhone = request.schoolInfo.schoolPhone, -// scoreData = ScoreData( -// koreanGrade = request.gradeInfo.koreanGrade, -// socialGrade = request.gradeInfo.socialGrade, -// historyGrade = request.gradeInfo.historyGrade, -// mathGrade = request.gradeInfo.mathGrade, -// scienceGrade = request.gradeInfo.scienceGrade, -// englishGrade = request.gradeInfo.englishGrade, -// techAndHomeGrade = request.gradeInfo.techAndHomeGrade, -// gedKorean = request.gradeInfo.gedKorean, -// gedSocial = request.gradeInfo.gedSocial, -// gedHistory = request.gradeInfo.gedHistory, -// gedMath = request.gradeInfo.gedMath, -// gedScience = request.gradeInfo.gedScience, -// gedEnglish = request.gradeInfo.gedEnglish, -// absence = request.attendanceInfo.absence, -// tardiness = request.attendanceInfo.tardiness, -// earlyLeave = request.attendanceInfo.earlyLeave, -// classExit = request.attendanceInfo.classExit, -// volunteer = request.attendanceInfo.volunteer, -// algorithmAward = request.awardAndCertificateInfo.algorithmAward, -// infoProcessingCert = request.awardAndCertificateInfo.infoProcessingCert -// ) -// ) -// } } diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt index fd19e61b..a47504e6 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/ApplicationProducer.kt @@ -1,10 +1,7 @@ package hs.kr.entrydsm.application.domain.application.event import com.fasterxml.jackson.databind.ObjectMapper -import hs.kr.entrydsm.application.domain.application.event.dto.ApplicationScoreData -import hs.kr.entrydsm.application.domain.application.event.dto.SubmitApplicationEvent import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent -import hs.kr.entrydsm.application.domain.application.event.dto.SubmissionData import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics import org.springframework.kafka.core.KafkaTemplate @@ -16,7 +13,6 @@ class ApplicationProducer( private val mapper: ObjectMapper, private val createApplicationTemplate: KafkaTemplate, private val createApplicationRollbackTemplate: KafkaTemplate, - private val publishApplicationSubmittedTemplate: KafkaTemplate ) : ApplicationEventPort { override fun create(receiptCode: Long, userId: UUID) { @@ -30,47 +26,6 @@ class ApplicationProducer( ) } -// override fun submitApplication(submissionData: SubmissionData) { -// val submitApplicationEvent = SubmitApplicationEvent( -// receiptCode = submissionData.receiptCode, -// userId = submissionData.userId, -// educationalStatus = submissionData.educationalStatus, -// graduationDate = submissionData.graduationDate, -// gradeNumber = submissionData.gradeNumber, -// classNumber = submissionData.classNumber, -// studentNumber = submissionData.studentNumber, -// schoolCode = submissionData.schoolCode, -// teacherName = submissionData.teacherName, -// schoolPhone = submissionData.schoolPhone, -// scoreData = ApplicationScoreData( -// koreanGrade = submissionData.scoreData.koreanGrade, -// socialGrade = submissionData.scoreData.socialGrade, -// historyGrade = submissionData.scoreData.historyGrade, -// mathGrade = submissionData.scoreData.mathGrade, -// scienceGrade = submissionData.scoreData.scienceGrade, -// englishGrade = submissionData.scoreData.englishGrade, -// techAndHomeGrade = submissionData.scoreData.techAndHomeGrade, -// gedKorean = submissionData.scoreData.gedKorean, -// gedSocial = submissionData.scoreData.gedSocial, -// gedHistory = submissionData.scoreData.gedHistory, -// gedMath = submissionData.scoreData.gedMath, -// gedScience = submissionData.scoreData.gedScience, -// gedEnglish = submissionData.scoreData.gedEnglish, -// absence = submissionData.scoreData.absence, -// tardiness = submissionData.scoreData.tardiness, -// earlyLeave = submissionData.scoreData.earlyLeave, -// classExit = submissionData.scoreData.classExit, -// volunteer = submissionData.scoreData.volunteer, -// algorithmAward = submissionData.scoreData.algorithmAward, -// infoProcessingCert = submissionData.scoreData.infoProcessingCert -// ) -// ) -// publishApplicationSubmittedTemplate.send( -// KafkaTopics.SUBMIT_APPLICATION, -// mapper.writeValueAsString(submitApplicationEvent) -// ) -// } - override fun createApplicationScoreRollback(receiptCode: Long) { createApplicationRollbackTemplate.send( KafkaTopics.CREATE_APPLICATION_SCORE_ROLLBACK, diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt deleted file mode 100644 index e7e8ee29..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/application/event/SubmitApplicationConsumer.kt +++ /dev/null @@ -1,114 +0,0 @@ -package hs.kr.entrydsm.application.domain.application.event - -import com.fasterxml.jackson.databind.ObjectMapper -import hs.kr.entrydsm.application.domain.application.event.dto.SubmitApplicationEvent -import hs.kr.entrydsm.application.domain.application.model.types.EducationalStatus -import hs.kr.entrydsm.application.domain.applicationCase.service.ApplicationCaseService -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest -import hs.kr.entrydsm.application.domain.graduationInfo.service.GraduationInfoService -import hs.kr.entrydsm.application.domain.graduationInfo.usecase.dto.request.UpdateGraduationInformationRequest -import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics -import org.springframework.kafka.annotation.KafkaListener -import org.springframework.stereotype.Component - -@Component -class SubmitApplicationConsumer( - private val objectMapper: ObjectMapper, - private val applicationCaseService: ApplicationCaseService, - private val graduationInfoService: GraduationInfoService -) { - - // 기존 해당 클래스에서 이벤트로 처리하도 원서 제출 로직을 비동기적으로 처리 - // 미사용 -// @KafkaListener( -// topics = [KafkaTopics.SUBMIT_APPLICATION], -// groupId = "application-submitted", -// containerFactory = "kafkaListenerContainerFactory" -// ) -// fun submitApplication(message: String) { -// val submitApplicationEvent = objectMapper.readValue(message, SubmitApplicationEvent::class.java) -// -// initializeApplicationCase(submitApplicationEvent) -// initializeGraduationInfo(submitApplicationEvent) -// updateScore(submitApplicationEvent) -// updateGraduationInformation(submitApplicationEvent) -// } -// -// private fun initializeApplicationCase(submitApplicationEvent: SubmitApplicationEvent) { -// applicationCaseService.initializeApplicationCase( -// submitApplicationEvent.receiptCode, -// submitApplicationEvent.educationalStatus -// ) -// } -// -// private fun initializeGraduationInfo(submitApplicationEvent: SubmitApplicationEvent) { -// graduationInfoService.changeGraduationInfo( -// submitApplicationEvent.receiptCode, -// submitApplicationEvent.graduationDate -// ) -// } -// -// private fun updateGraduationInformation(submitApplicationEvent: SubmitApplicationEvent) { -// if (submitApplicationEvent.educationalStatus == EducationalStatus.QUALIFICATION_EXAM) { -// return -// } -// graduationInfoService.updateGraduationInformation( -// submitApplicationEvent.receiptCode, -// UpdateGraduationInformationRequest( -// gradeNumber = submitApplicationEvent.gradeNumber, -// classNumber = submitApplicationEvent.classNumber, -// studentNumber = submitApplicationEvent.studentNumber, -// schoolCode = submitApplicationEvent.schoolCode, -// teacherName = submitApplicationEvent.teacherName, -// teacherTel = submitApplicationEvent.schoolPhone -// ) -// ) -// } -// -// private fun updateScore(submitApplicationEvent: SubmitApplicationEvent) { -// when (submitApplicationEvent.educationalStatus) { -// EducationalStatus.QUALIFICATION_EXAM -> { -// applicationCaseService.updateQualificationScore( -// submitApplicationEvent.receiptCode, -// UpdateQualificationCaseRequest( -// koreanGrade = submitApplicationEvent.scoreData.gedKorean, -// socialGrade = submitApplicationEvent.scoreData.gedSocial, -// mathGrade = submitApplicationEvent.scoreData.gedMath, -// scienceGrade = submitApplicationEvent.scoreData.gedScience, -// englishGrade = submitApplicationEvent.scoreData.gedEnglish, -// historyGrade = submitApplicationEvent.scoreData.gedHistory, -// extraScore = ExtraScoreRequest( -// hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, -// hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward -// ) -// ) -// ) -// } -// else -> { -// applicationCaseService.updateGraduationScore( -// submitApplicationEvent.receiptCode, -// UpdateGraduationCaseRequest( -// volunteerTime = submitApplicationEvent.scoreData.volunteer, -// absenceDayCount = submitApplicationEvent.scoreData.absence, -// lectureAbsenceCount = submitApplicationEvent.scoreData.classExit, -// latenessCount = submitApplicationEvent.scoreData.tardiness, -// earlyLeaveCount = submitApplicationEvent.scoreData.earlyLeave, -// koreanGrade = submitApplicationEvent.scoreData.koreanGrade, -// socialGrade = submitApplicationEvent.scoreData.socialGrade, -// historyGrade = submitApplicationEvent.scoreData.historyGrade, -// mathGrade = submitApplicationEvent.scoreData.mathGrade, -// scienceGrade = submitApplicationEvent.scoreData.scienceGrade, -// englishGrade = submitApplicationEvent.scoreData.englishGrade, -// techAndHomeGrade = submitApplicationEvent.scoreData.techAndHomeGrade, -// extraScore = ExtraScoreRequest( -// hasCertificate = submitApplicationEvent.scoreData.infoProcessingCert, -// hasCompetitionPrize = submitApplicationEvent.scoreData.algorithmAward -// ) -// ) -// ) -// } -// } -// } -} \ No newline at end of file From 211bb73a18deba181e181fe744008db0ec34e56a Mon Sep 17 00:00:00 2001 From: coehgns Date: Fri, 2 Jan 2026 22:36:26 +0900 Subject: [PATCH 96/96] =?UTF-8?q?chore=20(=20#74=20)=20:=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/WebApplicationCaseAdapter.kt | 53 ------------------- .../request/UpdateGraduationCaseWebRequest.kt | 33 ------------ .../UpdateQualificationCaseWebRequest.kt | 28 ---------- .../event/CreateScoreApplicationConsumer.kt | 40 -------------- 4 files changed, 154 deletions(-) delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt delete mode 100644 casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt index 62f0e9a7..71ea1f9b 100644 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt +++ b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/WebApplicationCaseAdapter.kt @@ -1,68 +1,15 @@ package hs.kr.entrydsm.application.domain.applicationCase.presentation -import hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request.UpdateGraduationCaseWebRequest -import hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request.UpdateQualificationCaseWebRequest import hs.kr.entrydsm.application.domain.applicationCase.usecase.GetGraduationCaseUseCase import hs.kr.entrydsm.application.domain.applicationCase.usecase.GetQualificationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.UpdateGraduationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.UpdateQualificationCaseUseCase -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateGraduationCaseRequest -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.UpdateQualificationCaseRequest import org.springframework.web.bind.annotation.* -import javax.validation.Valid @RestController @RequestMapping("/score") class WebApplicationCaseAdapter( - private val updateGraduationCaseUseCase: UpdateGraduationCaseUseCase, - private val updateQualificationCaseUseCase: UpdateQualificationCaseUseCase, private val getGraduationCaseUseCase: GetGraduationCaseUseCase, private val getQualificationCaseUseCase: GetQualificationCaseUseCase, ) { -// @PatchMapping("/graduation") -// fun updateGraduationCase( -// @RequestBody @Valid request: UpdateGraduationCaseWebRequest, -// ) { -// updateGraduationCaseUseCase.execute( -// request.run { -// UpdateGraduationCaseRequest( -// volunteerTime = volunteerTime, -// absenceDayCount = absenceDayCount, -// lectureAbsenceCount = lectureAbsenceCount, -// latenessCount = latenessCount, -// earlyLeaveCount = earlyLeaveCount, -// koreanGrade = koreanGrade, -// socialGrade = socialGrade, -// historyGrade = historyGrade, -// mathGrade = mathGrade, -// scienceGrade = scienceGrade, -// englishGrade = englishGrade, -// techAndHomeGrade = techAndHomeGrade, -// extraScore = extraScore -// ) -// } -// ) -// } - -// @PatchMapping("/qualification") -// fun updateQualificationCase( -// @RequestBody @Valid request: UpdateQualificationCaseWebRequest, -// ) { -// updateQualificationCaseUseCase.execute( -// request.run { -// UpdateQualificationCaseRequest( -// koreanGrade = koreanGrade, -// socialGrade = socialGrade, -// mathGrade = mathGrade, -// scienceGrade = scienceGrade, -// englishGrade = englishGrade, -// optGrade = optGrade, -// //historyGrade = historyGrade, -// extraScore = extraScore -// ) -// } -// ) -// } @GetMapping("/graduation") fun getGraduationCase() = getGraduationCaseUseCase.execute() diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt deleted file mode 100644 index 1195d8f1..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateGraduationCaseWebRequest.kt +++ /dev/null @@ -1,33 +0,0 @@ -package hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request - -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest -import javax.validation.constraints.Pattern -import javax.validation.constraints.PositiveOrZero - -data class UpdateGraduationCaseWebRequest( - @PositiveOrZero - val volunteerTime: Int, - @PositiveOrZero - val absenceDayCount: Int, - @PositiveOrZero - val lectureAbsenceCount: Int, - @PositiveOrZero - val latenessCount: Int, - @PositiveOrZero - val earlyLeaveCount: Int, - @Pattern(regexp = "[A-E,X]{4}") - val koreanGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val socialGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val historyGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val mathGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val scienceGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val englishGrade: String, - @Pattern(regexp = "[A-E,X]{4}") - val techAndHomeGrade: String, - val extraScore: ExtraScoreRequest -) diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt deleted file mode 100644 index 67650298..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/applicationCase/presentation/dto/request/UpdateQualificationCaseWebRequest.kt +++ /dev/null @@ -1,28 +0,0 @@ -package hs.kr.entrydsm.application.domain.applicationCase.presentation.dto.request - -import hs.kr.entrydsm.application.domain.applicationCase.usecase.dto.request.ExtraScoreRequest -import java.math.BigDecimal -import javax.validation.constraints.DecimalMax -import javax.validation.constraints.DecimalMin -import javax.validation.constraints.Digits -import javax.validation.constraints.NotNull - -// 현재 사용되지 않음. -data class UpdateQualificationCaseWebRequest( - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val koreanGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val socialGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val mathGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val scienceGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val englishGrade: BigDecimal = BigDecimal.ZERO, - @field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - val optGrade: BigDecimal = BigDecimal.ZERO, - //@field:DecimalMin("0.0") @field:DecimalMax("100.0") @field:NotNull - //val historyGrade: BigDecimal = BigDecimal.ZERO, - @field:NotNull - val extraScore: ExtraScoreRequest -) \ No newline at end of file diff --git a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt b/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt deleted file mode 100644 index 26c9237f..00000000 --- a/casper-application-infrastructure/src/main/kotlin/hs/kr/entrydsm/application/domain/score/event/CreateScoreApplicationConsumer.kt +++ /dev/null @@ -1,40 +0,0 @@ -package hs.kr.entrydsm.application.domain.score.event - -import com.fasterxml.jackson.databind.ObjectMapper -import hs.kr.entrydsm.application.domain.application.event.dto.CreateApplicationEvent -import hs.kr.entrydsm.application.domain.application.event.spi.ApplicationEventPort -import hs.kr.entrydsm.application.domain.score.usecase.CreateScoreUseCase -import hs.kr.entrydsm.application.global.kafka.config.KafkaTopics -import org.springframework.kafka.annotation.KafkaListener -import org.springframework.retry.annotation.Backoff -import org.springframework.retry.annotation.Recover -import org.springframework.retry.annotation.Retryable -import org.springframework.stereotype.Component - -@Component -class CreateScoreApplicationConsumer ( - private val mapper: ObjectMapper, - private val createScoreUseCase: CreateScoreUseCase, - private val applicationEventPort: ApplicationEventPort -) { -// @Retryable( -// value = [Exception::class], -// maxAttempts = 3, -// backoff = Backoff(delay = 100) -// ) -// @KafkaListener( -// topics = [KafkaTopics.CREATE_APPLICATION], -// groupId = "create-score", -// containerFactory = "kafkaListenerContainerFactory", -// ) -// fun createScore(message: String) { -// val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) -// createScoreUseCase.execute(createApplicationEvent.receiptCode) -// } -// -// @Recover -// fun recover(exception: Exception, message: String) { -// val createApplicationEvent = mapper.readValue(message, CreateApplicationEvent::class.java) -// applicationEventPort.createApplicationScoreRollback(createApplicationEvent.receiptCode) -// } -}