Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Prezel/core/data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ dependencies {
implementation(projects.coreNetwork)

implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.collections.immutable)
implementation(libs.kotlinx.datetime)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,22 @@ import com.team.prezel.core.model.presentation.PresentationWordDetail
import com.team.prezel.core.model.presentation.Purpose
import com.team.prezel.core.model.presentation.ScriptCorrection
import com.team.prezel.core.model.presentation.ScriptErrorType
import com.team.prezel.core.model.presentation.SentenceAnalysisDetail
import com.team.prezel.core.model.presentation.Style
import com.team.prezel.core.model.presentation.WordAnalysisDetail
import com.team.prezel.core.model.presentation.WordAnalysisStatus
import com.team.prezel.core.network.model.presentation.GetMainDataResponse
import com.team.prezel.core.network.model.presentation.GetPracticeRecordsResponse
import com.team.prezel.core.network.model.presentation.GetPresentationsResponse
import com.team.prezel.core.network.model.presentation.PresentationExpectedQuestionResponse
import com.team.prezel.core.network.model.presentation.PresentationGrowthResponse
import com.team.prezel.core.network.model.presentation.PresentationScriptAnalysisResponse
import com.team.prezel.core.network.model.presentation.PresentationScriptDetailResponse
import com.team.prezel.core.network.model.presentation.PresentationSentenceAnalysisResponse
import com.team.prezel.core.network.model.presentation.PresentationSummaryResponse
import com.team.prezel.core.network.model.presentation.PresentationWordAnalysisResponse
import com.team.prezel.core.network.model.presentation.PresentationWordDetailResponse
import kotlinx.collections.immutable.toImmutableList
import kotlinx.datetime.LocalDate

internal fun PresentationSummaryResponse.toDomain(): PresentationAnalysisSummary =
Expand Down Expand Up @@ -87,14 +91,25 @@ internal fun PresentationWordDetailResponse.toDomain(): PresentationWordDetail =
PresentationWordDetail(
presentationId = presentationId,
audioUrl = audioUrl,
wordDetails = wordDetails.map { item -> item.toDomain() },
sentenceDetails = sentenceDetails.map { sentence -> sentence.toDomain() }.toImmutableList(),
)

internal fun PresentationSentenceAnalysisResponse.toDomain(): SentenceAnalysisDetail =
SentenceAnalysisDetail(
sentence = sentence,
status = WordAnalysisStatus.from(value = status),
mainFeedback = mainFeedback,
subFeedback = subFeedback,
accuracy = accuracy,
startTimeMs = startTimeMs,
endTimeMs = endTimeMs,
wordDetails = wordDetails.map { word -> word.toDomain() }.toImmutableList(),
)

internal fun PresentationWordAnalysisResponse.toDomain(): WordAnalysisDetail =
WordAnalysisDetail(
word = word,
status = status,
description = description,
status = WordAnalysisStatus.from(value = status),
accuracy = accuracy,
startTimeMs = startTimeMs,
endTimeMs = endTimeMs,
Expand Down
1 change: 1 addition & 0 deletions Prezel/core/model/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ plugins {
}

dependencies {
implementation(libs.kotlinx.collections.immutable)
Comment thread
HamBeomJoon marked this conversation as resolved.
implementation(libs.kotlinx.datetime)
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,46 @@
package com.team.prezel.core.model.presentation

import kotlinx.collections.immutable.ImmutableList

data class PresentationWordDetail(
val presentationId: Long,
val audioUrl: String,
val wordDetails: List<WordAnalysisDetail>,
val sentenceDetails: ImmutableList<SentenceAnalysisDetail>,
)

data class SentenceAnalysisDetail(
val sentence: String,
val status: WordAnalysisStatus,
val mainFeedback: String,
val subFeedback: String,
val accuracy: Double,
val startTimeMs: Long,
val endTimeMs: Long,
val wordDetails: ImmutableList<WordAnalysisDetail>,
)

data class WordAnalysisDetail(
val word: String,
val status: String,
val description: String,
val status: WordAnalysisStatus,
val accuracy: Double,
val startTimeMs: Long,
val endTimeMs: Long,
)

enum class WordAnalysisStatus(
val value: String,
) {
EXCELLENT("Excellent"),
GOOD("Good"),
STUTTER("Stutter"),
INSERTION("Insertion"),
OMISSION("Omission"),
MISPRONUNCIATION("Mispronunciation"),
UNKNOWN("Unknown"),
;

companion object {
fun from(value: String): WordAnalysisStatus =
entries.firstOrNull { status -> status.value.equals(value.trim(), ignoreCase = true) } ?: UNKNOWN
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,26 @@ data class PresentationWordDetailResponse(
val presentationId: Long,
@SerialName("audioUrl")
val audioUrl: String,
@SerialName("sentenceDetails")
val sentenceDetails: List<PresentationSentenceAnalysisResponse>,
)

@Serializable
data class PresentationSentenceAnalysisResponse(
@SerialName("sentence")
val sentence: String,
@SerialName("status")
val status: String,
@SerialName("mainFeedback")
val mainFeedback: String,
@SerialName("subFeedback")
val subFeedback: String,
@SerialName("accuracy")
val accuracy: Double,
@SerialName("startTimeMs")
val startTimeMs: Long,
@SerialName("endTimeMs")
val endTimeMs: Long,
@SerialName("wordDetails")
val wordDetails: List<PresentationWordAnalysisResponse>,
)
Expand All @@ -19,8 +39,6 @@ data class PresentationWordAnalysisResponse(
val word: String,
@SerialName("status")
val status: String,
@SerialName("description")
val description: String,
@SerialName("accuracy")
val accuracy: Double,
@SerialName("startTimeMs")
Expand Down
Loading