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>
This commit is contained in:
2026-06-25 18:05:57 +09:00
parent 325c6d64e1
commit 2ee759fed1
182 changed files with 13577 additions and 127 deletions
@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v10.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v10.0": {
"QuantEngine.Core/1.0.0": {
"runtime": {
"QuantEngine.Core.dll": {}
}
}
}
},
"libraries": {
"QuantEngine.Core/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+9abb8d3bc31eb38d5c27cbd3ca734da4eeec9609")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+325c6d64e17702c514691d989194bc4dc0d08460")]
[assembly: System.Reflection.AssemblyProductAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyTitleAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
@@ -1 +1 @@
ca1af8bf50c02703b0e1d3aaa0a84969ccff47847b63e1312eec76ac0cc883ff
e826e5eb47b96639c6a0ad80c50415350022405add3d37f300db7ae3f7740a3c
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+325c6d64e17702c514691d989194bc4dc0d08460")]
[assembly: System.Reflection.AssemblyProductAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyTitleAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
@@ -0,0 +1 @@
94a37093348f0cfed0034377ce1a1c3ba1c5b37e294c89b8abda19ed68ad21e9
@@ -0,0 +1,17 @@
is_global = true
build_property.TargetFramework = net10.0
build_property.TargetFrameworkIdentifier = .NETCoreApp
build_property.TargetFrameworkVersion = v10.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = QuantEngine.Core
build_property.ProjectDir = C:\Temp\data_feed\src\dotnet\QuantEngine.Core\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
build_property.EffectiveAnalysisLevelStyle = 10.0
build_property.EnableCodeStyleSeverity =
@@ -0,0 +1,8 @@
// <auto-generated/>
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using System.Net.Http;
global using System.Threading;
global using System.Threading.Tasks;
@@ -0,0 +1 @@
8f5c08fbd8e56f6e9f9d0c5132c0db634d6a09e579d72883d00b4b4dc6141b7e
@@ -0,0 +1,11 @@
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\bin\Release\net10.0\QuantEngine.Core.deps.json
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\bin\Release\net10.0\QuantEngine.Core.dll
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\bin\Release\net10.0\QuantEngine.Core.pdb
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.GeneratedMSBuildEditorConfig.editorconfig
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.AssemblyInfoInputs.cache
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.AssemblyInfo.cs
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.csproj.CoreCompileInputs.cache
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.dll
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\refint\QuantEngine.Core.dll
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\QuantEngine.Core.pdb
C:\Temp\data_feed\src\dotnet\QuantEngine.Core\obj\Release\net10.0\ref\QuantEngine.Core.dll