fix: restore Blazor WebAssembly render mode for ERP scalability
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m15s
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m15s
Restore long-term architectural goal: Blazor WebAssembly for admin UI. Rationale: - TaxBaik is a semi-project for future ERP implementation - ERP requires client-side scalability (no server-side state per user) - WebAssembly offloads interactivity to browser (Circuit-free) - Aligns with API-First + stateless backend design Changes: - App.razor: InteractiveWebAssemblyRenderMode (prerender: true) - Routes: InteractiveWebAssemblyRenderMode (prerender: true) - Login.razor: InteractiveWebAssemblyRenderMode (prerender: true) - Program.cs: AddInteractiveWebAssemblyComponents() - Updated validation script to enforce WebAssembly mode Tradeoff accepted: Blazor WebAssembly bootstrap time vs future ERP extensibility. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
window.location.pathname.toLowerCase().endsWith('/admin/login'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="css/admin.css" />
|
||||
<component type="typeof(HeadOutlet)" render-mode="InteractiveServer" />
|
||||
<component type="typeof(HeadOutlet)" render-mode="InteractiveWebAssembly" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="components-reconnect-modal" class="admin-reconnect-modal">
|
||||
@@ -37,7 +37,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<MudThemeProvider @bind-IsDarkMode="isDarkMode" Theme="mudTheme" />
|
||||
<Routes @rendermode="new InteractiveServerRenderMode(prerender: true)" />
|
||||
<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: true)" />
|
||||
<script src="/taxbaik/_content/MudBlazor/MudBlazor.min.js"></script>
|
||||
<script src="/taxbaik/js/admin-session.js"></script>
|
||||
<script src="/taxbaik/_framework/blazor.web.js"></script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@page "/admin/login"
|
||||
@layout TaxBaik.Web.Components.Admin.Layout.BlankLayout
|
||||
@attribute [AllowAnonymous]
|
||||
@rendermode @(new InteractiveServerRenderMode(prerender: true))
|
||||
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: true))
|
||||
<PageTitle>로그인</PageTitle>
|
||||
<AdminLoginForm />
|
||||
|
||||
@@ -71,10 +71,10 @@ builder.Services.AddRateLimiter(options =>
|
||||
});
|
||||
});
|
||||
|
||||
// Razor Pages + Blazor Server 통합
|
||||
// Razor Pages + Blazor WebAssembly 통합
|
||||
builder.Services.AddRazorPages();
|
||||
builder.Services.AddRazorComponents()
|
||||
.AddInteractiveServerComponents();
|
||||
.AddInteractiveWebAssemblyComponents();
|
||||
builder.Services.Configure<Microsoft.AspNetCore.Components.Server.CircuitOptions>(options =>
|
||||
{
|
||||
options.DetailedErrors = true;
|
||||
@@ -389,7 +389,8 @@ app.MapStaticAssets();
|
||||
// AllowAnonymous: JWT 미들웨어가 Blazor 셸 요청을 401로 차단하지 않도록 한다.
|
||||
// 인증은 Blazor AuthorizeRouteView → RedirectToLogin 에서 처리한다.
|
||||
app.MapRazorComponents<TaxBaik.Web.Components.Admin.App>()
|
||||
.AddInteractiveServerRenderMode()
|
||||
.AddInteractiveWebAssemblyRenderMode()
|
||||
.AddAdditionalAssemblies(typeof(TaxBaik.WasmClient._Imports).Assembly)
|
||||
.AllowAnonymous();
|
||||
|
||||
// 애플리케이션 시작/종료 로깅
|
||||
|
||||
@@ -11,18 +11,18 @@ for file in "$app_file" "$login_file"; do
|
||||
fi
|
||||
done
|
||||
|
||||
if ! grep -nE "InteractiveServerRenderMode\\(prerender: true\\)" "$app_file" >/dev/null; then
|
||||
echo "Admin shell must use InteractiveServerRenderMode(prerender: true)." >&2
|
||||
if ! grep -nE "InteractiveWebAssemblyRenderMode\\(prerender: true\\)" "$app_file" >/dev/null; then
|
||||
echo "Admin shell must use InteractiveWebAssemblyRenderMode(prerender: true)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if grep -nE "InteractiveWebAssemblyRenderMode|prerender: true" "$app_file" | grep -v "InteractiveServerRenderMode(prerender: true)" >/dev/null; then
|
||||
if grep -nE "InteractiveServerRenderMode|prerender: true" "$app_file" | grep -v "InteractiveWebAssemblyRenderMode(prerender: true)" >/dev/null; then
|
||||
echo "Admin shell render mode violation detected." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! grep -nE "InteractiveServerRenderMode\\(prerender: true\\)" "$login_file" >/dev/null; then
|
||||
echo "Login page must allow server prerender." >&2
|
||||
if ! grep -nE "InteractiveWebAssemblyRenderMode\\(prerender: true\\)" "$login_file" >/dev/null; then
|
||||
echo "Login page must use InteractiveWebAssemblyRenderMode(prerender: true)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user