package com.goldenchart.trading.pipeline;

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 하이브리드 자동매매 파이프라인 설정 (multi_thread_base_archiitecture.md).
 */
@Component
@ConfigurationProperties(prefix = "goldenchart.trading.pipeline")
@Getter
@Setter
public class TradingPipelineProperties {

    /** 이벤트 큐 기반 비동기 파이프라인 사용 */
    private boolean enabled = true;

    /** 체결 틱 이벤트 큐 용량 */
    private int queueCapacity = 65_536;

    /** Core Engine 워커 스레드 수 (4~8 권장) */
    private int workerThreads = 6;

    /** 주문 REST 호출 초당 상한 (업비트 429 방지) */
    private double orderRatePerSecond = 5.0;

    /** BarSeries 메모리 상한 (OOM 방지) */
    private int maxBarsPerSeries = 500;

    /** 종목별 틱 미수신 시 재연결 요청(초) */
    private int staleTickSeconds = 30;

    /** 갭 백필 스케줄 (Spring cron) */
    private String gapBackfillCron = "0 */5 * * * *";

    /** 갭 백필 시 REST로 가져올 캔들 수 */
    private int gapBackfillCandleCount = 20;
}
