d015bb6c92
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m32s
ISSUE: Validation script required exact text 'InteractiveWebAssemblyRenderMode' but Login.razor uses shortened form '@rendermode InteractiveWebAssembly' BOTH FORMS ARE EQUIVALENT: - Full: @rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false)) - Short: @rendermode InteractiveWebAssembly SOLUTION: Update grep pattern from 'InteractiveWebAssemblyRenderMode' to 'InteractiveWebAssembly' This accepts both long and short syntax VALIDATION: ✅ App.razor: InteractiveWebAssemblyRenderMode(prerender: false) ✅ Login.razor: @rendermode InteractiveWebAssembly ✅ All 28+ pages: @rendermode InteractiveWebAssembly ✅ Architecture: Blazor WebAssembly CSR (client-side rendering) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
58 lines
2.3 KiB
Bash
58 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
# Phase 8: WebAssembly 마이그레이션 - 기능 우선 아키텍처 (2026-07-03)
|
||
#
|
||
# DESIGN DECISION: prerender: false (not true)
|
||
#
|
||
# RATIONALE:
|
||
# - prerender: true = SSR (Server-Side Rendering) - 서버가 정적 HTML 미리 생성
|
||
# - InteractiveWebAssembly = CSR (Client-Side Rendering) - 클라이언트에서 동적 렌더링
|
||
# - These are contradictory: cannot prerender interactive WebAssembly content
|
||
#
|
||
# OBSERVED PROBLEM with prerender: true:
|
||
# 1. Unauthenticated users see prerendered HTML (no auth context)
|
||
# 2. AuthorizeRouteView renders nothing (authorized content cannot prerender)
|
||
# 3. After login, WebAssembly tries to render same component differently
|
||
# 4. Conflict: static prerendered HTML vs. dynamic WASM runtime
|
||
#
|
||
# SOLUTION: prerender: false
|
||
# - App boots to blank screen briefly (WebAssembly loading ~0.5-2s)
|
||
# - After load: all protected pages render correctly with auth
|
||
# - No conflicting render modes
|
||
# - Functional > Performance optimization
|
||
#
|
||
# See CLAUDE.md Phase 8 for architecture details.
|
||
|
||
app_file="TaxBaik.Web.Client/Components/Admin/App.razor"
|
||
login_file="TaxBaik.Web.Client/Components/Admin/Pages/Login.razor"
|
||
|
||
for file in "$app_file" "$login_file"; do
|
||
if [ ! -f "$file" ]; then
|
||
echo "Missing admin render file: $file" >&2
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
# Require WebAssemblyRenderMode (regardless of prerender value)
|
||
if ! grep -nE "InteractiveWebAssemblyRenderMode" "$app_file" >/dev/null; then
|
||
echo "Admin shell must use InteractiveWebAssemblyRenderMode." >&2
|
||
exit 1
|
||
fi
|
||
|
||
# Reject InteractiveServerRenderMode (Blazor Server architecture forbidden)
|
||
if grep -nE "InteractiveServerRenderMode" "$app_file" >/dev/null; then
|
||
echo "Admin shell must NOT use InteractiveServerRenderMode (Blazor Server)." >&2
|
||
exit 1
|
||
fi
|
||
|
||
# Login page also requires WebAssembly mode
|
||
# Accept both: @rendermode InteractiveWebAssembly OR @rendermode @(new InteractiveWebAssemblyRenderMode(...))
|
||
if ! grep -nE "InteractiveWebAssembly" "$login_file" >/dev/null; then
|
||
echo "Login page must use InteractiveWebAssemblyRenderMode or @rendermode InteractiveWebAssembly." >&2
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Admin render harness passed (WebAssembly mode verified)."
|
||
echo " ℹ️ Note: prerender: false by design (protects @Authorize content from SSR conflicts)"
|