2ee759fed1
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>
45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
using QuantEngine.Web.Components;
|
|
using QuantEngine.Infrastructure.Data;
|
|
using QuantEngine.Infrastructure.Repositories;
|
|
using QuantEngine.Core.Interfaces;
|
|
using MudBlazor.Services;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
// Add services to the container.
|
|
builder.Services.AddRazorComponents()
|
|
.AddInteractiveServerComponents();
|
|
|
|
// MudBlazor Services
|
|
builder.Services.AddMudServices();
|
|
|
|
// PostgreSQL Dapper Setup
|
|
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection")
|
|
?? "Host=127.0.0.1;Database=giteadb;Username=gitea;Password=C8RFlZ9fdQrBA1vyLhLDS4v70I8dJfRS2ERJW4+zsS4=;Search Path=quantengine;";
|
|
builder.Services.AddSingleton<IDbConnectionFactory>(new DbConnectionFactory(connectionString));
|
|
builder.Services.AddScoped<IWorkspaceRepository, WorkspaceRepository>();
|
|
builder.Services.AddHttpClient();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Enable reverse proxy subpath mapping
|
|
app.UsePathBase("/quant");
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (!app.Environment.IsDevelopment())
|
|
{
|
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
|
app.UseHsts();
|
|
}
|
|
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
|
|
app.UseHttpsRedirection();
|
|
|
|
app.UseAntiforgery();
|
|
|
|
app.MapStaticAssets();
|
|
app.MapRazorComponents<App>()
|
|
.AddInteractiveServerRenderMode();
|
|
|
|
app.Run();
|
|
|