namespace Infrastructure.StockData;
/// 수집기가 사용하는 외부 API 키 식별자 (DB Config.DataCollection 매핑).
internal enum CollectorKey
{
DataGoKr,
Krx,
OpenDart,
KoreaEximExchange,
KoreaEximLoanRate,
KoreaEximIntlRate,
Seibro,
Kosis
}
/// 수집기 활성화 플래그 식별자 (DB Config.DataCollection 매핑). appsettings *Sync/Enabled 와 1:1.
internal enum CollectorFlag
{
StockDataMaster,
StockDataDailyPrice,
KrxIndex,
KrxBondIndex,
KrxStock,
KrxEtp,
KrxWarrant,
KrxBond,
KrxDerivative,
KrxCommodity,
KrxEsg,
OpenDartDisclosure,
KoreaEximMacro,
Kosis,
WorldIndex,
MarketQuote,
SeibroIssuer,
SeibroDividend,
SeibroSupply,
SeibroCorpAction,
SeibroBond,
SeibroDeriv,
SeibroForeign
}
///
/// 수집기 활성화 여부·API 키를 DB Config(DataCollection)에서 런타임 조회하는 접근자.
/// Admin 에서 재배포 없이 on/off·키 교체가 가능하도록 각 수집기 RunOnceAsync 상단에서 사용한다.
/// 키는 AES-GCM 복호화(EncryptedConfigValue), 플래그는 DB 가 단일 권위(Config 행 없으면 전부 false).
/// Scoped — 수집기 run 스코프 당 1 인스턴스, Config 1회 로드 후 캐시.
///
internal interface ICollectorSettingsProvider
{
/// 해당 수집기 활성화 여부. Config 행이 없으면 false.
Task IsEnabledAsync(CollectorFlag flag, CancellationToken ct);
/// 해당 키의 복호화 평문. 미설정이면 null (호출측이 appsettings 폴백).
Task GetKeyAsync(CollectorKey key, CancellationToken ct);
}