diff --git a/src/TaxBaik.Web/Components/Admin/App.razor b/src/TaxBaik.Web.Client/Components/Admin/App.razor similarity index 91% rename from src/TaxBaik.Web/Components/Admin/App.razor rename to src/TaxBaik.Web.Client/Components/Admin/App.razor index a4fc844..d1bf472 100644 --- a/src/TaxBaik.Web/Components/Admin/App.razor +++ b/src/TaxBaik.Web.Client/Components/Admin/App.razor @@ -8,12 +8,8 @@ - - - - - - + + + + diff --git a/src/TaxBaik.Web/Pages/Portal/Index.cshtml.cs b/src/TaxBaik.Web/Pages/Portal/Index.cshtml.cs index 78a2560..886fdc6 100644 --- a/src/TaxBaik.Web/Pages/Portal/Index.cshtml.cs +++ b/src/TaxBaik.Web/Pages/Portal/Index.cshtml.cs @@ -25,7 +25,7 @@ public class IndexModel : PageModel _clientService = clientService; } - public Client? ClientInfo { get; private set; } + public TaxBaik.Domain.Entities.Client? ClientInfo { get; private set; } public List Filings { get; private set; } = new(); public List Consultations { get; private set; } = new(); diff --git a/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs b/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs index dd86ef4..9884664 100644 --- a/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs +++ b/src/TaxBaik.Web/Pages/Sitemap.cshtml.cs @@ -15,16 +15,31 @@ public class SitemapModel : PageModel public async Task OnGetAsync() { - var baseUrl = "http://178.104.200.7/taxbaik"; + // 프로덕션 도메인 기본값 (배포 환경에서 자동 감지 가능) + var baseUrl = $"{Request.Scheme}://{Request.Host.Value}/taxbaik"; + + // 정적 페이지 (공개 콘텐츠만) Urls.AddRange(new[] { + // 홈페이지 $"{baseUrl}", $"{baseUrl}/about", $"{baseUrl}/services", $"{baseUrl}/contact", - $"{baseUrl}/blog" + $"{baseUrl}/privacy", + $"{baseUrl}/terms", + + // 공개 콘텐츠 + $"{baseUrl}/blog", + $"{baseUrl}/faq", + $"{baseUrl}/announcement", + $"{baseUrl}/inquiry" + + // 제외: /admin (관리자), /portal (고객 포탈) + // robots.txt에서도 disallow }); + // 동적 페이지: 블로그 포스트 var (posts, _) = await _blogService.GetPublishedPagedAsync(1, 1000); foreach (var post in posts) { diff --git a/src/TaxBaik.Web/Program.cs b/src/TaxBaik.Web/Program.cs index 2451f62..3f557e1 100644 --- a/src/TaxBaik.Web/Program.cs +++ b/src/TaxBaik.Web/Program.cs @@ -20,9 +20,7 @@ using TaxBaik.Application.Seasonal; using TaxBaik.Application.Utils; using TaxBaik.Infrastructure; using TaxBaik.Web.Services; -using TaxBaik.Web.Components.Admin.Services; -using TaxBaik.Web.Components.Admin.Services.AdminClients; -using TaxBaik.Web.Components.Admin.Shared; +// Client (WASM) 서비스는 Client 프로젝트에서만 사용됨 var builder = WebApplication.CreateBuilder(args); var isProduction = builder.Environment.IsProduction(); @@ -90,14 +88,10 @@ builder.Services.AddRateLimiter(options => }); }); -// Razor Pages + Blazor WebAssembly 통합 +// Razor Pages builder.Services.AddRazorPages(); -builder.Services.AddRazorComponents() - .AddInteractiveWebAssemblyComponents(); -builder.Services.Configure(options => -{ - options.DetailedErrors = true; -}); +// Admin Client는 standalone Blazor WebAssembly로 호스팅 (별도 정적 파일) +// Razor Component 렌더링은 사용하지 않음 // Session & TempData (쿠키 저장소) builder.Services.AddSession(options => @@ -282,35 +276,7 @@ builder.Services.AddHttpClient(); // Phase 5: Tax Accounting & CRM Browser Clients -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); - -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); - -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); - -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); - -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); - -builder.Services.AddHttpClient(client => -{ - client.BaseAddress = new Uri(apiBaseUrl); -}).AddHttpMessageHandler(); +// (등록은 Client 프로젝트에서만 필요 - Server는 API만 제공) // UI & 캐시 (MudBlazor Theme Customization) builder.Services.AddMudServices(config => @@ -412,23 +378,19 @@ if (!app.Environment.IsDevelopment()) app.UseHsts(); } -// API + Razor Pages + Blazor 매핑 +// API + Razor Pages + 정적 파일 매핑 app.MapControllers(); app.MapFastEndpoints(); app.MapHealthChecks("/healthz"); app.MapRazorPages(); app.MapStaticAssets(); -// AllowAnonymous: JWT 미들웨어가 Blazor 셸 요청을 401로 차단하지 않도록 한다. -// 인증은 Blazor AuthorizeRouteView → RedirectToLogin 에서 처리한다. -// Phase 8: WebAssembly 렌더 모드 완전 마이그레이션 -// - App.razor: TaxBaik.Web (메인 웹 서버) -// - Routes + Pages + Shared + Layout + Forms: TaxBaik.Web (메인 웹 서버) -// 모든 Blazor 컴포넌트가 웹 서버에서 통합 서비스됨 -// API는 웹 서버에서만 제공 (클라이언트 프로젝트 분리 불필요) -app.MapRazorComponents() - .AddInteractiveServerRenderMode() - .AllowAnonymous(); +// Admin Blazor WebAssembly SPA 호스팅 (/admin) +app.UseBlazorFrameworkFiles("/admin"); +app.UseStaticFiles("/admin"); + +// /admin 라우팅 폴백 (SPA 라우트 처리) +app.MapFallbackToFile("admin/{*path:nonfile}", "admin/index.html"); // 애플리케이션 시작/종료 로깅 try diff --git a/src/TaxBaik.Web/TaxBaik.Web.csproj b/src/TaxBaik.Web/TaxBaik.Web.csproj index f2a2da8..8ea8c78 100644 --- a/src/TaxBaik.Web/TaxBaik.Web.csproj +++ b/src/TaxBaik.Web/TaxBaik.Web.csproj @@ -3,6 +3,8 @@ + + diff --git a/src/TaxBaik.Web/wwwroot/naverb1813cd79ddc2ded5c5291fca5cb46c2.html b/src/TaxBaik.Web/wwwroot/naverb1813cd79ddc2ded5c5291fca5cb46c2.html new file mode 100644 index 0000000..bfb9eeb --- /dev/null +++ b/src/TaxBaik.Web/wwwroot/naverb1813cd79ddc2ded5c5291fca5cb46c2.html @@ -0,0 +1 @@ +naver-site-verification: naverb1813cd79ddc2ded5c5291fca5cb46c2.html \ No newline at end of file diff --git a/src/TaxBaik.Web/wwwroot/robots.txt b/src/TaxBaik.Web/wwwroot/robots.txt index 5f2a715..6e39358 100644 --- a/src/TaxBaik.Web/wwwroot/robots.txt +++ b/src/TaxBaik.Web/wwwroot/robots.txt @@ -1,6 +1,7 @@ User-agent: * -Allow: /taxbaik/ -Disallow: /taxbaik/admin/ -Disallow: /taxbaik/manage/ +Allow: / +Disallow: /admin/ +Disallow: /manage/ -Sitemap: http://178.104.200.7/taxbaik/sitemap.xml +Sitemap: https://www.taxbaik.com/taxbaik/sitemap.xml +Sitemap: https://taxbaik.com/taxbaik/sitemap.xml diff --git a/tmp/naverb1813cd79ddc2ded5c5291fca5cb46c2.html b/tmp/naverb1813cd79ddc2ded5c5291fca5cb46c2.html new file mode 100644 index 0000000..bfb9eeb --- /dev/null +++ b/tmp/naverb1813cd79ddc2ded5c5291fca5cb46c2.html @@ -0,0 +1 @@ +naver-site-verification: naverb1813cd79ddc2ded5c5291fca5cb46c2.html \ No newline at end of file