ICollectorSettingsProvider.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. namespace Infrastructure.StockData;
  2. /// <summary>수집기가 사용하는 외부 API 키 식별자 (DB Config.DataCollection 매핑).</summary>
  3. internal enum CollectorKey
  4. {
  5. DataGoKr,
  6. Krx,
  7. OpenDart,
  8. KoreaEximExchange,
  9. KoreaEximLoanRate,
  10. KoreaEximIntlRate,
  11. Seibro,
  12. Kosis
  13. }
  14. /// <summary>수집기 활성화 플래그 식별자 (DB Config.DataCollection 매핑). appsettings *Sync/Enabled 와 1:1.</summary>
  15. internal enum CollectorFlag
  16. {
  17. StockDataMaster,
  18. StockDataDailyPrice,
  19. KrxIndex,
  20. KrxBondIndex,
  21. KrxStock,
  22. KrxEtp,
  23. KrxWarrant,
  24. KrxBond,
  25. KrxDerivative,
  26. KrxCommodity,
  27. KrxEsg,
  28. OpenDartDisclosure,
  29. KoreaEximMacro,
  30. Kosis,
  31. WorldIndex,
  32. MarketQuote,
  33. SeibroIssuer,
  34. SeibroDividend,
  35. SeibroSupply,
  36. SeibroCorpAction,
  37. SeibroBond,
  38. SeibroDeriv,
  39. SeibroForeign
  40. }
  41. /// <summary>
  42. /// 수집기 활성화 여부·API 키를 DB Config(DataCollection)에서 런타임 조회하는 접근자.
  43. /// Admin 에서 재배포 없이 on/off·키 교체가 가능하도록 각 수집기 RunOnceAsync 상단에서 사용한다.
  44. /// 키는 AES-GCM 복호화(EncryptedConfigValue), 플래그는 DB 가 단일 권위(Config 행 없으면 전부 false).
  45. /// Scoped — 수집기 run 스코프 당 1 인스턴스, Config 1회 로드 후 캐시.
  46. /// </summary>
  47. internal interface ICollectorSettingsProvider
  48. {
  49. /// <summary>해당 수집기 활성화 여부. Config 행이 없으면 false.</summary>
  50. Task<bool> IsEnabledAsync(CollectorFlag flag, CancellationToken ct);
  51. /// <summary>해당 키의 복호화 평문. 미설정이면 null (호출측이 appsettings 폴백).</summary>
  52. Task<string?> GetKeyAsync(CollectorKey key, CancellationToken ct);
  53. }