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>
This commit is contained in:
2026-06-29 23:11:18 +09:00
parent aad4788e84
commit 459edf5940
243 changed files with 2857 additions and 544 deletions
@@ -13,10 +13,10 @@ 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+c1e84a387cbda5a7c13c50984f05772976e26ed6")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+aad4788e8430ad7244d0628047aaf40d0590ef95")]
[assembly: System.Reflection.AssemblyProductAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyTitleAttribute("QuantEngine.Core")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
// MSBuild WriteCodeFragment 클래스에서 생성되었습니다.
// Generated by the MSBuild WriteCodeFragment class.
@@ -1 +1 @@
44e64ce06813a33875126f074b9cb0b65abc79c3d194d6dcfc9e7401d756107d
a275438f4b4df0f8d54e6834eea46c8f83eabbb1cf21ee0533f06d867e49ec68
@@ -8,6 +8,7 @@ build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property.EntryPointFilePath =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = QuantEngine.Core
build_property.ProjectDir = C:\Temp\data_feed\src\dotnet\QuantEngine.Core\
@@ -1 +1 @@
ca464c87bea176b611d2cea0390ad77a239d1356e73115ff5d12ffeca2b50eec
79145411294c3e36a015e6e3a0e89de48f8827bccbb71741b1505491550e55a3
@@ -10,7 +10,7 @@
"projectUniqueName": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\QuantEngine.Core.csproj",
"projectName": "QuantEngine.Core",
"projectPath": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\QuantEngine.Core.csproj",
"packagesPath": "C:\\Users\\kjh20\\.nuget\\packages\\",
"packagesPath": "D:\\DevCache\\nuget-packages",
"outputPath": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
@@ -28,11 +28,11 @@
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
"https://nuget.telerik.com/v3/index.json": {}
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net10.0": {
"framework": "net10.0",
"targetAlias": "net10.0",
"projectReferences": {}
}
@@ -47,10 +47,11 @@
"auditLevel": "low",
"auditMode": "all"
},
"SdkAnalysisLevel": "10.0.100"
"SdkAnalysisLevel": "10.0.300"
},
"frameworks": {
"net10.0": {
"framework": "net10.0",
"targetAlias": "net10.0",
"imports": [
"net461",
@@ -68,7 +69,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100/PortableRuntimeIdentifierGraph.json",
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.301/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.CSharp": "(,4.7.32767]",
"Microsoft.VisualBasic": "(,10.4.32767]",
@@ -4,13 +4,13 @@
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\kjh20\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder</NuGetPackageFolders>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">D:\DevCache\nuget-packages</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">D:\DevCache\nuget-packages;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages;C:\Program Files\dotnet\sdk\NuGetFallbackFolder</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
</PropertyGroup>
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<SourceRoot Include="C:\Users\kjh20\.nuget\packages\" />
<SourceRoot Include="D:\DevCache\nuget-packages\" />
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
<SourceRoot Include="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\" />
</ItemGroup>
@@ -1,5 +1,5 @@
{
"version": 3,
"version": 4,
"targets": {
"net10.0": {}
},
@@ -8,7 +8,7 @@
"net10.0": []
},
"packageFolders": {
"C:\\Users\\kjh20\\.nuget\\packages\\": {},
"D:\\DevCache\\nuget-packages": {},
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {},
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
@@ -18,7 +18,7 @@
"projectUniqueName": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\QuantEngine.Core.csproj",
"projectName": "QuantEngine.Core",
"projectPath": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\QuantEngine.Core.csproj",
"packagesPath": "C:\\Users\\kjh20\\.nuget\\packages\\",
"packagesPath": "D:\\DevCache\\nuget-packages",
"outputPath": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
@@ -36,11 +36,11 @@
"sources": {
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
"C:\\Program Files\\dotnet\\library-packs": {},
"https://api.nuget.org/v3/index.json": {},
"https://nuget.telerik.com/v3/index.json": {}
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"net10.0": {
"framework": "net10.0",
"targetAlias": "net10.0",
"projectReferences": {}
}
@@ -55,10 +55,11 @@
"auditLevel": "low",
"auditMode": "all"
},
"SdkAnalysisLevel": "10.0.100"
"SdkAnalysisLevel": "10.0.300"
},
"frameworks": {
"net10.0": {
"framework": "net10.0",
"targetAlias": "net10.0",
"imports": [
"net461",
@@ -76,7 +77,7 @@
"privateAssets": "all"
}
},
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.100/PortableRuntimeIdentifierGraph.json",
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\10.0.301/PortableRuntimeIdentifierGraph.json",
"packagesToPrune": {
"Microsoft.CSharp": "(,4.7.32767]",
"Microsoft.VisualBasic": "(,10.4.32767]",
@@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "fxehXLXYtu4=",
"dgSpecHash": "ZsY9lhMy6SQ=",
"success": true,
"projectFilePath": "C:\\Temp\\data_feed\\src\\dotnet\\QuantEngine.Core\\QuantEngine.Core.csproj",
"expectedPackageFiles": [],