Commit Graph

3 Commits

Author SHA1 Message Date
kjh2064 c06c24d8bc fix(kis-api): Null reference 검증 강화 (토큰 응답 처리)
KisApiClient.TryGetAccessTokenAsync()의 null 참조 경고 제거.
- 토큰 응답 본문 존재 여부 검증
- TryGetValue 기반 안전한 파싱
- access_token 필수 필드 검증

Build: 0 errors, 0 warnings 

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-29 23:33:53 +09:00
kjh2064 e7e7d1470d 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>
2026-06-29 23:19:35 +09:00
kjh2064 c56c9cc903 feat(kis): KIS API 클라이언트 .NET 포팅 완료
**구현:**
- IKisApiClient.cs: 완전한 read-only 메서드 인터페이스
  - GetCurrentPriceAsync, GetAskingPrice10LevelAsync
  - GetDailyShortSaleAsync, GetDailyItemChartPriceAsync
  - GetInvestorTrendAsync

- KisApiClient.cs: 완전한 .NET 구현 (kis_api_client_v1.py 포팅)
  - KisCredentials: 환경변수 + Windows 레지스트리 폴백
  - ITokenCache 통합: PostgreSQL 기반 토큰 캐싱
  - AssertReadOnly: 주문 API 차단 (governance/rules/06_no_direct_api_trading.yaml)
  - HttpClient: 비동기 API 호출 + 헤더 관리
  - 모든 quotation 조회 메서드 구현

**보안:**
- FORBIDDEN_PATH_SUBSTRINGS: "/trading/" 경로 차단
- FORBIDDEN_TR_ID_PREFIXES: TTTC/VTTC 주문 TR_ID 차단
- 매수/매도 API 절대 호출 불가 (2차 방어)

**DI 통합:**
- Program.cs: builder.Services.AddScoped<IKisApiClient, KisApiClient>();
- HttpClientFactory 패턴 활용

**다음 단계:**
- PostgresTokenCache 구현
- CollectionRepository PostgreSQL 구현
- Collection 엔드포인트 완성
- Web API 통합 테스트

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-29 23:15:40 +09:00