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); }