Files
taxbaik/scripts/validate_admin_render.sh
T
kjh2064 9b7e6eda4c
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m29s
refactor: update validation script to reflect prerender: false design
CORE ISSUE RESOLVED:
prerender: true creates contradiction between SSR and CSR rendering modes,
causing infinite loop of blank screens and auth state conflicts.

DESIGN DECISION: prerender: false (final)
- Functional requirement > Performance optimization
- Protects @Authorize pages from prerender static HTML conflicts
- WebAssembly runtime loads completely before rendering interactive content
- All protected pages render correctly after login

VALIDATION CHANGE:
- Removed requirement for 'prerender: true'
- Now validates: InteractiveWebAssemblyRenderMode (any prerender value)
- Rejects: InteractiveServerRenderMode (Blazor Server forbidden)
- Documents: Why prerender: false is architecturally correct

Root cause documented in CLAUDE.md Phase 8.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-03 02:51:26 +09:00

57 lines
2.1 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
if ! grep -nE "InteractiveWebAssemblyRenderMode" "$login_file" >/dev/null; then
echo "Login page must use InteractiveWebAssemblyRenderMode." >&2
exit 1
fi
echo "✅ Admin render harness passed (WebAssembly mode verified)."
echo " ️ Note: prerender: false by design (protects @Authorize content from SSR conflicts)"