kjh2064
d5d630a816
fix(web): set default authentication scheme
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 6s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 11s
Deploy to Production / Build & Deploy to Production (push) Failing after 3m4s
2026-07-01 13:09:59 +09:00
kjh2064
90bbb1860d
feat(web): add auth and fix deployment checks
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 9s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 6s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 2m30s
Deploy to Production / Build & Deploy to Production (push) Failing after 3m49s
2026-07-01 13:02:10 +09:00
kjh2064
4de9339163
feat(ui): Blazor WebAssembly 마이그레이션 및 API-First 로그인 구현
2026-07-01 11:22:09 +09:00
kjh2064
bdb9262f4e
feat(auth): QuantEngine 관리자 로그인 페이지 및 세션 인증 체계 구현 (WBS-AUTH)
2026-07-01 11:12:20 +09:00
kjh2064
5c5d9bfee7
feat: KIS Open API 연동 및 DataCollectionService 구현
...
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 7s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 8s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 46s
Deploy to Production / Build & Deploy to Production (push) Failing after 1m5s
- C# 기반의 DataCollectionService 클래스 구현
- 기존의 파이썬 스크립트 실행 방식을 대체하고 KIS API 클라이언트를 직접 사용하여 주식 시세, 호가, 공매도 정보 수집
- CollectionEndpoints에 비동기 수집 요청 처리 통합 및 Program.cs에 서비스 DI 등록
2026-06-29 23:39:21 +09:00
kjh2064
0b503c20af
feat(collection): PostgreSQL 백킹 활성화 (CollectionRepository + TokenCache)
...
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 7s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 13s
Snapshot Admin Deployment / build-and-deploy (push) Failing after 1m21s
Deploy to Production / Build & Deploy to Production (push) Successful in 1m55s
- Program.cs: PlaceholderCollectionRepository/TokenCache/KisApiClient → 실제 구현체로 변경
- 데이터베이스 초기화: EnsureTablesAsync() 호출 (시작 시 테이블 자동 생성)
- kis_tokens, kis_collection_runs, kis_collection_snapshots, kis_collection_errors 테이블
- Dapper 기반 SQL 쿼리 (파라미터화, SQL 주입 방지)
- 인덱스: started_at, ticker, captured_at, run_id
- PlaceholderImplementations.cs 제거
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-29 23:32:29 +09:00
kjh2064
bd293d6f48
fix(web): API 라우팅 및 상태 코드 페이지 처리 개선
...
- 수정: API 엔드포인트 MapRazorComponents 앞으로 이동 (라우팅 우선순위)
- 수정: UseStatusCodePagesWithReExecute를 사용자 정의 미들웨어로 변경
- 개선: /api/* 경로에 대해 상태 코드 페이지 리다이렉트 제외
- 추가: PlaceholderImplementations 기반으로 DI 설정 변경 (개발 테스트용)
이제 /api/collection/state 등의 API 엔드포인트가 정상 응답
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-29 23:26:33 +09:00
kjh2064
5c68e9526c
docs(phase2): Stage 2 (KIS API 포팅) 완료 상태 문서화
...
**이 커밋 기준 현황:**
Phase 1: Web UI 마이그레이션 ✅ COMPLETE
- MudBlazor → Fluent UI v5 (RC) 완전 전환
- 모든 페이지 마이그레이션 완료 (0% MudBlazor 잔존)
Phase 2: KIS API 및 데이터 수집 파이프라인 🔄 IN PROGRESS
✅ 완료된 작업:
- KisApiClient: 5가지 quotation 메서드 (읽기 전용)
- 보안: AssertReadOnly enforcement (trading API 차단)
- PostgreSQL: TokenCache, CollectionRepository 구현
- Web API: 6가지 Collection 엔드포인트
- Blazor UI: Collection.razor 대시보드 완성
- Build: 0 에러 (6개 RC 경고는 패키지 RC 버전 이슈)
📋 진행 중:
- Collection 엔드포인트 통합 테스트
- Python subprocess 임시 연계 (Phase 2 단계별 구현)
**CLAUDE.md 업데이트 내용:**
- Phase 1~3 상태 요약
- KIS API 보안 정책 문서화
- Collection API 엔드포인트 명세
- 개발 커맨드 추가 (Phase 2 테스팅 가이드)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-29 23:23:25 +09:00
kjh2064
c5e6a013f4
fix: ApiClient 의존성 주입 등록 및 using 추가
...
Program.cs:
- using QuantEngine.Web.Services 추가
- builder.Services.AddHttpClient<ApiClient>();
- builder.Services.AddScoped<ApiClient>();
Collection.razor에서 ApiClient 주입 가능하도록 함
2026-06-29 23:21:10 +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
kjh2064
459edf5940
refactor(web): MudBlazor → Fluent UI Blazor v5 마이그레이션 완료
...
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 10s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 8s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 1m0s
Deploy to Production / Build & Deploy to Production (push) Successful in 1m21s
**주요 변경사항:**
- NuGet: MudBlazor 6.10.0 → Microsoft.FluentUI.AspNetCore.Components 5.0.0-rc.4-26177.1 변경
- Program.cs: MudBlazor DI → Fluent UI DI 등록
- App.razor: CSS/JS 라이브러리 및 프로바이더 변경
- MainLayout.razor: MudLayout → FluentStack 기반 재구성
- FluentHeader 헤더 적용
- 네비게이션 사이드바 토글 기능
- Flexbox 레이아웃
- NavMenu.razor: MudNavMenu/MudNavLink → FluentNavMenu/FluentNavLink
- Dashboard.razor: MudBlazor 모든 컴포넌트 → Fluent UI v5로 변환
- MudCard → FluentCard
- MudGrid → FluentStack (Wrap)
- MudText → HTML (h1, p, span)
- MudChip → FluentBadge
- MudTable → FluentDataGrid
- MudAlert → div (커스텀 스타일)
- Operations.razor: 동일 패턴 적용
- _Imports.razor: Fluent UI 네임스페이스 추가
**빌드 결과:** ✅ SUCCESS (0 errors, 5 warnings)
**다음 단계:** Stage 2 - Python → .NET 마이그레이션
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-29 23:11:18 +09:00
kjh2064
d7e937e67c
feat(telegram): configure deploy status and error level logging notification via Telegram API
Deploy to Production / Build Release Package (push) Failing after 19s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 5s
Deploy to Production / Deploy to Production Server (push) Has been skipped
Deploy to Production / Post-Deployment Checks (push) Has been skipped
Snapshot Admin Deployment / build-and-deploy (push) Failing after 37s
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 2m18s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
2026-06-29 11:11:44 +09:00
kjh2064
9e6e2ded2f
feat: .NET 운영 리포트 렌더러와 CI 경로 전환
...
- operational_report.json/md와 final_decision_packet_v4 생성 경로를 .NET으로 전환했습니다.
- CI, 운영 게이트, 릴리스 DAG, 대시보드의 운영 진입점을 새 경로로 정렬했습니다.
- legacy Python 렌더러는 비운영으로 명시했습니다.
2026-06-26 14:18:03 +09:00
kjh2064
2ee759fed1
feat(ui): Complete Dashboard high-fidelity implementation and Playwright testing
...
Dashboard 고도화:
- KPI 카드 4개 (Active Positions, Portfolio Value, Signal Quality, System Status)
- Market Overview 섹션 (Market Status + System Health)
- Performance Metrics 그리드 (YTD Return, Sharpe Ratio, Max Drawdown 등)
- Algorithm Status 테이블 (P0~P6 진행 상황)
- Live Signal Feed 테이블 (최근 5개 신호)
UI 완성도: 91/100 (우수)
- Page Load: 15/15 (HTTP 200, 1.2s)
- MudBlazor Components: 20/20 (Layout, AppBar, Card, Table, Chip 등)
- Layout Structure: 20/20 (3단계 구조, Grid responsive)
- Dashboard Content: 15/15 (KPI + 시장현황 + 성과 + 알고리즘 + 신호)
- Navigation: 8/15 (기본 구현, 추가 페이지 필요)
- Responsive Design: 10/10 (Mobile/Tablet/Desktop)
- Accessibility: 3/5 (HTML meta 설정, ARIA 개선 필요)
Playwright 자동화 테스트:
- test_ui_completeness.py: 종합 평가 스크립트
- test_ui_with_details.py: 상세 DOM 분석 스크립트
- DOM 요소: h4(1) h5(4) h6(12) / Card(9) Table(2) Chip(15)
- 성능: Load ~1200ms, Memory ~12MB
UI Completeness Report:
- 전체 평가 문서 생성
- 성공 항목 (레이아웃, 컴포넌트, 콘텐츠, 반응형)
- 개선 사항 (네비게이션 추가 페이지, 접근성)
- 다음 단계 권장사항
기술:
- MudBlazor 6.10.0 (Material Design)
- Blazor Server (InteractiveServer)
- PostgreSQL Dapper ORM
- Program.cs: AddMudServices() 추가
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2026-06-25 18:05:57 +09:00
kjh2064
5bdbf17686
fix(web): load connection string from config and default to local IP
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 3s
2026-06-25 16:48:46 +09:00
kjh2064
2ba8def9bb
feat(dotnet): migrate core formulas, deploy tools, and blazor admin web app to .NET 10
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Has been cancelled
Quant Engine CI/CD Pipeline / validate-core (pull_request) Has been cancelled
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been cancelled
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Has been cancelled
2026-06-25 15:52:10 +09:00