using QuantEngine.Core.Models; namespace QuantEngine.Application.Services; /// /// Price Source 우선순위 결정 — Python _resolve_price_source 대응 /// KIS (우선) → Naver → JSON /// public class SourcePriorityResolver { public (List SourcePriority, Dictionary Provenance) ResolveSourcePriority( string ticker, PriceSourceResult? kis, PriceSourceResult? naver, bool includeNaver = false, bool includeLiveKis = true) { var sourcePriority = new List { "gathertradingdata_json" }; var provenance = new Dictionary { { "ticker", ticker }, { "source_priority", new List() } }; // KIS 우선 (status OK만) if (includeLiveKis && kis?.Status == "OK") { sourcePriority.Insert(0, "kis_open_api"); provenance["kis"] = kis; } // Naver 추가 (OK or DATA_MISSING) if (includeNaver && naver != null && (naver.Status == "OK" || naver.Status == "DATA_MISSING")) { sourcePriority.Add("naver_finance"); provenance["naver"] = naver; } provenance["source_priority"] = sourcePriority; return (sourcePriority, provenance); } }