Files
taxbaik/scripts/validate_admin_render.sh
T
kjh2064 d015bb6c92
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m32s
fix: update validation script to accept both WebAssembly rendermode formats
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>
2026-07-03 03:13:16 +09:00

58 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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)"