package space.nstart.pcp_tgu_service.integration.kafka

import org.springframework.kafka.annotation.KafkaListener
import org.springframework.stereotype.Component
import space.nstart.pcp_tgu_service.config.TopicsProperties
import space.nstart.pcp_tgu_service.dto.PlanExecutionFeedbackMessage
import space.nstart.pcp_tgu_service.service.HandlePlanDecisionUseCase

/**
 * Kafka consumer события «план заложен» (позитивный фидбек закладки); делегирует перевод
 * принятого плана в LAID_IN (новая база цепочки) в use case.
 */
@Component
class LayinConfirmedConsumer(
    val topicsProperties: TopicsProperties,
    private val handlePlanDecisionUseCase: HandlePlanDecisionUseCase
) {
    @KafkaListener(
        topics = ["#{__listener.topicsProperties.layinConfirmed}"],
        groupId = "\${spring.kafka.consumer.group-id}"
    )
    fun consume(message: PlanExecutionFeedbackMessage) {
        handlePlanDecisionUseCase.handleLayinConfirmed(message)
    }
}
