diff --git a/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemResponseDto.kt b/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemResponseDto.kt index d5de917f..b6e0807b 100644 --- a/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemResponseDto.kt +++ b/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemResponseDto.kt @@ -1,14 +1,10 @@ package io.csbroker.apiserver.dto.problem.longproblem -import io.csbroker.apiserver.dto.user.GradingStandardResponseDto - data class LongProblemResponseDto( val id: Long, val title: String, val description: String, val standardAnswers: List, val tags: List, - val gradingStandards: List, val isActive: Boolean, - val isGradable: Boolean, ) diff --git a/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemUpsertRequestDto.kt b/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemUpsertRequestDto.kt index f56896ab..ad48a0df 100644 --- a/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemUpsertRequestDto.kt +++ b/src/main/kotlin/io/csbroker/apiserver/dto/problem/longproblem/LongProblemUpsertRequestDto.kt @@ -1,7 +1,5 @@ package io.csbroker.apiserver.dto.problem.longproblem -import io.csbroker.apiserver.common.enums.GradingStandardType -import io.csbroker.apiserver.model.GradingStandard import io.csbroker.apiserver.model.LongProblem import io.csbroker.apiserver.model.User @@ -10,17 +8,9 @@ data class LongProblemUpsertRequestDto( val description: String, val standardAnswers: List, val tags: List, - val gradingStandards: List, - val isGradable: Boolean = false, val isActive: Boolean = true, ) { - data class GradingStandardData( - val content: String, - val score: Double, - val type: GradingStandardType, - ) - fun toLongProblem(creator: User): LongProblem { return LongProblem( title = title, @@ -28,15 +18,4 @@ data class LongProblemUpsertRequestDto( creator = creator, ) } - - fun getGradingStandardList(longProblem: LongProblem): List { - return gradingStandards.map { - GradingStandard( - content = it.content, - score = it.score, - type = it.type, - problem = longProblem, - ) - } - } } diff --git a/src/main/kotlin/io/csbroker/apiserver/dto/user/GradingStandardResponseDto.kt b/src/main/kotlin/io/csbroker/apiserver/dto/user/GradingStandardResponseDto.kt deleted file mode 100644 index 7b44a264..00000000 --- a/src/main/kotlin/io/csbroker/apiserver/dto/user/GradingStandardResponseDto.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.csbroker.apiserver.dto.user - -import io.csbroker.apiserver.common.enums.GradingStandardType -import io.csbroker.apiserver.model.GradingStandard - -data class GradingStandardResponseDto( - val id: Long, - val content: String, - val score: Double, - val type: GradingStandardType, -) { - companion object { - fun fromGradingStandard(gradingStandard: GradingStandard): GradingStandardResponseDto { - return GradingStandardResponseDto( - id = gradingStandard.id, - content = gradingStandard.content, - score = gradingStandard.score, - type = gradingStandard.type, - ) - } - } -} diff --git a/src/main/kotlin/io/csbroker/apiserver/model/LongProblem.kt b/src/main/kotlin/io/csbroker/apiserver/model/LongProblem.kt index 9ca815ec..64b3699a 100644 --- a/src/main/kotlin/io/csbroker/apiserver/model/LongProblem.kt +++ b/src/main/kotlin/io/csbroker/apiserver/model/LongProblem.kt @@ -4,7 +4,6 @@ import io.csbroker.apiserver.dto.problem.longproblem.LongProblemDetailResponseDt import io.csbroker.apiserver.dto.problem.longproblem.LongProblemResponseDto import io.csbroker.apiserver.dto.problem.longproblem.LongProblemSearchResponseDto.LongProblemDataDto import io.csbroker.apiserver.dto.problem.longproblem.LongProblemUpsertRequestDto -import io.csbroker.apiserver.dto.user.GradingStandardResponseDto import jakarta.persistence.CascadeType import jakarta.persistence.DiscriminatorValue import jakarta.persistence.Entity @@ -43,7 +42,6 @@ class LongProblem( fun updateFromDto(upsertRequestDto: LongProblemUpsertRequestDto) { title = upsertRequestDto.title description = upsertRequestDto.description - isGradable = upsertRequestDto.isGradable isActive = upsertRequestDto.isActive updateStandardAnswers(upsertRequestDto.standardAnswers) } @@ -55,9 +53,7 @@ class LongProblem( description, standardAnswers.map { it.content }, problemTags.map { it.tag.name }, - gradingStandards.map { GradingStandardResponseDto.fromGradingStandard(it) }, isActive, - isGradable, ) } diff --git a/src/main/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceImpl.kt b/src/main/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceImpl.kt index 2e0373bf..c8abb569 100644 --- a/src/main/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceImpl.kt +++ b/src/main/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceImpl.kt @@ -7,11 +7,9 @@ import io.csbroker.apiserver.dto.problem.longproblem.LongProblemSearchResponseDt import io.csbroker.apiserver.dto.problem.longproblem.LongProblemUpsertRequestDto import io.csbroker.apiserver.model.StandardAnswer import io.csbroker.apiserver.model.User -import io.csbroker.apiserver.repository.problem.GradingStandardRepository import io.csbroker.apiserver.repository.problem.LongProblemRepository import io.csbroker.apiserver.repository.problem.ProblemRepository import io.csbroker.apiserver.repository.problem.StandardAnswerRepository -import io.csbroker.apiserver.repository.user.UserRepository import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -21,8 +19,6 @@ import org.springframework.transaction.annotation.Transactional class AdminLongProblemServiceImpl( private val longProblemRepository: LongProblemRepository, private val problemRepository: ProblemRepository, - private val userRepository: UserRepository, - private val gradingStandardRepository: GradingStandardRepository, private val tagUpserter: TagUpserter, private val standardAnswerRepository: StandardAnswerRepository, ) : AdminLongProblemService { @@ -47,8 +43,6 @@ class AdminLongProblemServiceImpl( @Transactional override fun createProblem(createRequestDto: LongProblemUpsertRequestDto, user: User): Long { val longProblem = createRequestDto.toLongProblem(user) - val gradingStandardList = createRequestDto.getGradingStandardList(longProblem) - longProblem.addGradingStandards(gradingStandardList) val savedProblem = problemRepository.save(longProblem) tagUpserter.setTags(savedProblem, createRequestDto.tags) @@ -69,12 +63,6 @@ class AdminLongProblemServiceImpl( override fun updateProblem(id: Long, updateRequestDto: LongProblemUpsertRequestDto): Long { val longProblem = longProblemRepository.findByIdOrNull(id) ?: throw EntityNotFoundException("${id}번 문제는 존재하지 않는 서술형 문제입니다.") - val gradingStandardList = updateRequestDto.getGradingStandardList(longProblem) - - if (longProblem.gradingStandards.map { it.content }.toSet() != gradingStandardList.map { it.content }.toSet()) { - gradingStandardRepository.deleteAllById(longProblem.gradingStandards.map { it.id }) - longProblem.addGradingStandards(gradingStandardList) - } longProblem.updateFromDto(updateRequestDto) tagUpserter.updateTags(longProblem, updateRequestDto.tags.toMutableList()) diff --git a/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerIntegrationTest.kt b/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerIntegrationTest.kt index c7023935..19ef999e 100644 --- a/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerIntegrationTest.kt +++ b/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerIntegrationTest.kt @@ -24,7 +24,7 @@ class AdminLongProblemControllerIntegrationTest : IntegrationTest() { description = "This is a test problem", tags = mutableListOf(), standardAnswers = listOf("업데이트될 모범 답안"), - gradingStandards = mutableListOf(), +// gradingStandards = mutableListOf(), ) // when @@ -61,7 +61,7 @@ class AdminLongProblemControllerIntegrationTest : IntegrationTest() { description = longProblem.description, tags = mutableListOf(newTag1.name, newTag2.name), standardAnswers = emptyList(), - gradingStandards = mutableListOf(), +// gradingStandards = mutableListOf(), ) // when diff --git a/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerTest.kt b/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerTest.kt index 7cc4bd2b..9c281472 100644 --- a/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerTest.kt +++ b/src/test/kotlin/io/csbroker/apiserver/controller/v1/admin/problem/AdminLongProblemControllerTest.kt @@ -1,11 +1,9 @@ package io.csbroker.apiserver.controller.v1.admin.problem -import io.csbroker.apiserver.common.enums.GradingStandardType import io.csbroker.apiserver.controller.RestDocsTest import io.csbroker.apiserver.dto.problem.longproblem.LongProblemResponseDto import io.csbroker.apiserver.dto.problem.longproblem.LongProblemSearchResponseDto import io.csbroker.apiserver.dto.problem.longproblem.LongProblemUpsertRequestDto -import io.csbroker.apiserver.dto.user.GradingStandardResponseDto import io.csbroker.apiserver.service.problem.admin.AdminLongProblemService import io.mockk.every import io.mockk.mockk @@ -62,16 +60,6 @@ class AdminLongProblemControllerTest : RestDocsTest() { .description("모범 답안"), fieldWithPath("tags").type(JsonFieldType.ARRAY) .description("태그"), - fieldWithPath("gradingStandards").type(JsonFieldType.ARRAY) - .description("채점기준"), - fieldWithPath("gradingStandards.[].content") - .type(JsonFieldType.STRING).description("채점기준 내용"), - fieldWithPath("gradingStandards.[].score") - .type(JsonFieldType.NUMBER).description("채점기준 점수"), - fieldWithPath("gradingStandards.[].type") - .type(JsonFieldType.STRING).description("채점기준 타입 ( 'KEYWORD' or 'CONTENT' )"), - fieldWithPath("isGradable") - .type(JsonFieldType.BOOLEAN).description("채점 가능 여부 ( 필수 x, 기본 값 false )"), fieldWithPath("isActive") .type(JsonFieldType.BOOLEAN).description("활성화 여부 ( 필수 x, 기본 값 true )"), ), @@ -114,16 +102,6 @@ class AdminLongProblemControllerTest : RestDocsTest() { .description("모범 답안"), fieldWithPath("tags").type(JsonFieldType.ARRAY) .description("태그"), - fieldWithPath("gradingStandards").type(JsonFieldType.ARRAY) - .description("채점기준"), - fieldWithPath("gradingStandards.[].content") - .type(JsonFieldType.STRING).description("채점기준 내용"), - fieldWithPath("gradingStandards.[].score") - .type(JsonFieldType.NUMBER).description("채점기준 점수"), - fieldWithPath("gradingStandards.[].type") - .type(JsonFieldType.STRING).description("채점기준 타입 ( 'KEYWORD' or 'CONTENT' )"), - fieldWithPath("isGradable") - .type(JsonFieldType.BOOLEAN).description("채점 가능 여부"), fieldWithPath("isActive") .type(JsonFieldType.BOOLEAN).description("활성화 여부"), ), @@ -146,16 +124,7 @@ class AdminLongProblemControllerTest : RestDocsTest() { standardAnswers = listOf("answer"), description = "description", tags = listOf("tag1", "tag2"), - gradingStandards = listOf( - GradingStandardResponseDto( - id = 1L, - content = "content", - score = 1.0, - type = GradingStandardType.KEYWORD, - ), - ), isActive = true, - isGradable = true, ) // when @@ -184,18 +153,6 @@ class AdminLongProblemControllerTest : RestDocsTest() { .description("모범 답안"), fieldWithPath("data.tags").type(JsonFieldType.ARRAY) .description("태그"), - fieldWithPath("data.gradingStandards").type(JsonFieldType.ARRAY) - .description("채점기준"), - fieldWithPath("data.gradingStandards.[].id") - .type(JsonFieldType.NUMBER).description("채점기준 ID"), - fieldWithPath("data.gradingStandards.[].content") - .type(JsonFieldType.STRING).description("채점기준 내용"), - fieldWithPath("data.gradingStandards.[].score") - .type(JsonFieldType.NUMBER).description("채점기준 점수"), - fieldWithPath("data.gradingStandards.[].type") - .type(JsonFieldType.STRING).description("채점기준 타입 ( 'KEYWORD' or 'CONTENT' )"), - fieldWithPath("data.isGradable") - .type(JsonFieldType.BOOLEAN).description("채점 가능 여부"), fieldWithPath("data.isActive") .type(JsonFieldType.BOOLEAN).description("활성화 여부"), ), @@ -289,12 +246,5 @@ class AdminLongProblemControllerTest : RestDocsTest() { "test", listOf("test"), listOf("db", "network"), - listOf( - LongProblemUpsertRequestDto.GradingStandardData( - "keyword-1", - 1.0, - GradingStandardType.KEYWORD, - ), - ), ) } diff --git a/src/test/kotlin/io/csbroker/apiserver/controller/v1/problem/LongProblemIntegrationTest.kt b/src/test/kotlin/io/csbroker/apiserver/controller/v1/problem/LongProblemIntegrationTest.kt index 37aedf82..b4977ea3 100644 --- a/src/test/kotlin/io/csbroker/apiserver/controller/v1/problem/LongProblemIntegrationTest.kt +++ b/src/test/kotlin/io/csbroker/apiserver/controller/v1/problem/LongProblemIntegrationTest.kt @@ -6,7 +6,6 @@ import com.jayway.jsonpath.JsonPath import io.csbroker.apiserver.controller.IntegrationTest import io.csbroker.apiserver.controller.v2.problem.response.SubmitLongProblemResponseDto import io.csbroker.apiserver.dto.problem.longproblem.LongProblemAnswerDto -import io.csbroker.apiserver.model.GradingHistory import io.csbroker.apiserver.model.LongProblem import io.csbroker.apiserver.model.StandardAnswer import io.kotest.matchers.collections.shouldContain @@ -44,17 +43,6 @@ class LongProblemIntegrationTest : IntegrationTest() { fun `서술형 문제 제출`() { val problem = getProblem() - // given & when - val preSubmissionCount = findAll( - "SELECT gh From GradingHistory gh where gh.problem.id = :id", - mapOf("id" to problem.id), - ).size - - val preUserSubmissionCount = findAll( - "SELECT gh From GradingHistory gh where gh.problem.id = :problemId AND gh.user.id = :userId", - mapOf("problemId" to problem.id, "userId" to defaultUser.id!!), - ).size - val standardAnswers = findAll( "SELECT sa From StandardAnswer sa where sa.longProblem.id = :id", mapOf("id" to problem.id), @@ -77,8 +65,6 @@ class LongProblemIntegrationTest : IntegrationTest() { val responseDto = objectMapper.readValue(dataAsString) responseDto.title shouldBe problem.title responseDto.description shouldBe problem.description - responseDto.totalSubmission shouldBe preSubmissionCount + 1 // 제출 수가 증가하는지 확인 - responseDto.userSubmission shouldBe preUserSubmissionCount + 1 // 제출 수가 증가하는지 확인 responseDto.userAnswer shouldBe userAnswer standardAnswers.map { sa -> sa.content } shouldContain responseDto.standardAnswer // 모법답안중 하나가 반환되는지 확인 } diff --git a/src/test/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceTest.kt b/src/test/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceTest.kt index e640c24f..df79efcc 100644 --- a/src/test/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceTest.kt +++ b/src/test/kotlin/io/csbroker/apiserver/service/problem/admin/AdminLongProblemServiceTest.kt @@ -50,8 +50,6 @@ class AdminLongProblemServiceTest { adminLongProblemService = AdminLongProblemServiceImpl( longProblemRepository, problemRepository, - userRepository, - gradingStandardRepository, tagUpserter, standardAnswerRepository, ) @@ -105,7 +103,6 @@ class AdminLongProblemServiceTest { description = "This is a test problem", tags = listOf("tag 1", "tag 2"), standardAnswers = emptyList(), - gradingStandards = emptyList(), ) } }