package space.nstart.pcp_tgu_service.config

import org.springframework.boot.context.properties.ConfigurationProperties

/**
 * Настройки планирования и автозапуска процессов по планам.
 */
@ConfigurationProperties(prefix = "planning")
data class PlanningProperties(

    /** За сколько минут до начала плана автоматически запускать Camunda-процесс. */
    val notificationBeforeStartMinutes: Long,

    /** Минимальный разрыв в минутах между стартами соседних планов при расчете цепочки. */
    val targetPlanDurationMinutes: Long,

    /** Допустимое отклонение от целевой длительности плана в минутах. */
    val targetPlanDurationDeltaMinutes: Long,

    /** Включает периодическое обновление пунктов из внешнего API. */
    val externalUpdateEnabled: Boolean,

    /** Горизонт запроса данных по пунктам из внешнего API в днях, начиная от текущего момента. */
    val externalPointsLookaheadDays: Long,

    /** Сколько дней подтвержденной истории планов держать в in-memory выдаче. */
    val inMemoryHistoryDays: Long,

    /** Интервал в миллисекундах между запросами во внешнее API. */
    val externalUpdateFixedDelayMs: Long,

    /** Интервал в миллисекундах между проверками, пора ли автозапускать Camunda-процесс по плану. */
    val notificationCheckFixedDelayMs: Long,

    /** Минимальный запас времени для повторной выдачи после REJECTED. */
    val minReissueLeadMinutes: Long,

    /** TTL lease'а worker job claim в секундах. */
    val workerLockTtlSeconds: Long
)
