build(infra): KIS API 클라이언트 시그니처 일원화 및 빌드 수정

- 수정: KisApiClient 메서드 반환 타입 Task<string> → Task<Dictionary<string, object>>로 통일
- 수정: GetOrRefreshTokenAsync ReadAsAsync → ReadFromJsonAsync로 변경
- 수정: PlaceholderKisApiClient IKisApiClient 인터페이스 완전 구현
- 수정: CollectionEndpoints 모든 WithOpenApi() 호출 제거
- 수정: Program.cs using 지시문 순서 재정렬
- 추가: Client/_Imports.razor Fluent UI 컴포넌트 네임스페이스 정의

이제 빌드 성공: QuantEngine.Web 프로젝트 컴파일 완료 (경고 0, 에러 0)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-06-29 23:19:35 +09:00
parent c56c9cc903
commit e7e7d1470d
6 changed files with 90 additions and 38 deletions
@@ -107,19 +107,58 @@ public class PlaceholderTokenCache : ITokenCache
public class PlaceholderKisApiClient : IKisApiClient
{
// Placeholder: To be implemented with actual KIS API calls
public Task<string?> GetAccessTokenAsync(string account = "mock")
public Task<Dictionary<string, object>> GetCurrentPriceAsync(string code, string account = "mock")
{
return Task.FromResult<string?>("placeholder_token");
return Task.FromResult(new Dictionary<string, object>
{
{ "code", code },
{ "price", 0 },
{ "change", 0 },
{ "changeRate", 0 }
});
}
public Task<dynamic?> GetQuotationAsync(string ticker, string account = "mock")
public Task<Dictionary<string, object>> GetAskingPrice10LevelAsync(string code, string account = "mock")
{
return Task.FromResult<dynamic?>(null);
return Task.FromResult(new Dictionary<string, object>
{
{ "code", code },
{ "askLevels", new List<object>() },
{ "bidLevels", new List<object>() }
});
}
public Task<dynamic?> GetRankingAsync(string sort = "price", int limit = 10, string account = "mock")
public Task<Dictionary<string, object>> GetDailyShortSaleAsync(string code, string startDate, string endDate, string account = "mock")
{
return Task.FromResult<dynamic?>(null);
return Task.FromResult(new Dictionary<string, object>
{
{ "code", code },
{ "startDate", startDate },
{ "endDate", endDate },
{ "data", new List<object>() }
});
}
public Task<Dictionary<string, object>> GetDailyItemChartPriceAsync(string code, string startDate, string endDate, string period = "D", string account = "mock")
{
return Task.FromResult(new Dictionary<string, object>
{
{ "code", code },
{ "startDate", startDate },
{ "endDate", endDate },
{ "period", period },
{ "candles", new List<object>() }
});
}
public Task<Dictionary<string, object>> GetInvestorTrendAsync(string code, string account = "mock")
{
return Task.FromResult(new Dictionary<string, object>
{
{ "code", code },
{ "individual", 0 },
{ "foreign", 0 },
{ "institution", 0 }
});
}
}