#539 Код-ревью сервиса интервью и кандидатов

Компании:
Wildberries
Темы:
SpringТранзакцииКод ревью

Сделать код-ревью:

@Component
class InterviewService(
    private val scoreRepository: ScoreRepository,
    private val transactionTemplate: TransactionTemplate,
    private val interviewScoreMLService: InterviewScoreMLService,
) {
    private val objectMapper = ObjectMapper()

    /**
    * Метод считает сколько очков заработал кандидат,
    * сохраняет результат в базу и кидает callback об этом во внешний сервис
    */
    fun process(c: Candidate) {
        transactionTemplate.executeWithoutResult {
            val s: Score = interviewScoreMLService.compute(c)

            val request: Mono<ResponseEntity<Void>> = WebClient.create()
                .post()

                .body(BodyInserts.fromValue(objectMapper.writeValueAsString(c.name to s)))
                .retrieve()
                .toBodilessEntity()

            scoreRepository.saveScore(s)
        }
    }
}

data class Candidate(
    val name: String,
    val exercisesSolvedId: List<Int>,
)

data class Score(
    val name: String,
    val score: Int,
)

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти