8202c3278b
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m17s
Phase 8: Complete WebAssembly 렌더 모드 전환 (정공법) Migration Summary: - ALL Admin components → TaxBaik.Web.Client - Routes.razor, Pages/*, Layout/*, Shared/*, Forms/* - App.razor → TaxBaik.WasmClient (호스트 컴포넌트) - Shared utilities → TaxBaik.Application.Utils Architecture: ✅ App.razor: TaxBaik.WasmClient (WebAssembly, 호스트) ✅ Routes + Pages: TaxBaik.WasmClient (WebAssembly) ✅ Layout + Shared + Forms: TaxBaik.WasmClient (WebAssembly) ✅ Services: TaxBaik.Web (API-First) Key Changes: - Namespaces: TaxBaik.Web.Components.Admin → TaxBaik.WasmClient.Components.Admin - Shared utilities: TaxBaik.Application.Utils (single source of truth) - Program.cs: MapRazorComponents<TaxBaik.WasmClient.Components.Admin.App>() - _Imports.razor: Components/Admin 폴더에 재구성 Build Status: ✅ 0 errors, 0 warnings Benefits: - Stateless server (no Circuit memory) - Client-side rendering (WebAssembly) - Unlimited concurrent users (horizontal scaling) - ERP-ready architecture Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
75 lines
2.3 KiB
Plaintext
75 lines
2.3 KiB
Plaintext
@page "/admin/inquiries"
|
|
@attribute [Authorize]
|
|
@using TaxBaik.Web.Services
|
|
@inject IInquiryBrowserClient InquiryClient
|
|
|
|
<PageTitle>문의 관리</PageTitle>
|
|
|
|
<AdminPageHeader Title="문의 관리" Eyebrow="Customer Requests" Subtitle="상담 요청을 상태별로 확인하고 후속 조치를 기록합니다.">
|
|
<ChildContent>
|
|
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add"
|
|
Href="/taxbaik/admin/inquiries/create">새 문의 등록</MudButton>
|
|
</ChildContent>
|
|
</AdminPageHeader>
|
|
|
|
<AdminDataPanel Loading="@isLoading">
|
|
<MudTabs Rounded="true" Elevation="0" Class="admin-tabs">
|
|
<MudTabPanel Text="전체">
|
|
<InquiryTable Inquiries="allInquiries" Status="" />
|
|
</MudTabPanel>
|
|
<MudTabPanel Text="신규">
|
|
<InquiryTable Inquiries="allInquiries" Status="new" />
|
|
</MudTabPanel>
|
|
<MudTabPanel Text="상담중">
|
|
<InquiryTable Inquiries="allInquiries" Status="consulting" />
|
|
</MudTabPanel>
|
|
<MudTabPanel Text="계약완료">
|
|
<InquiryTable Inquiries="allInquiries" Status="contracted" />
|
|
</MudTabPanel>
|
|
<MudTabPanel Text="거절">
|
|
<InquiryTable Inquiries="allInquiries" Status="rejected" />
|
|
</MudTabPanel>
|
|
<MudTabPanel Text="종결">
|
|
<InquiryTable Inquiries="allInquiries" Status="closed" />
|
|
</MudTabPanel>
|
|
</MudTabs>
|
|
</AdminDataPanel>
|
|
|
|
@code {
|
|
[CascadingParameter]
|
|
private Task<AuthenticationState>? AuthStateTask { get; set; }
|
|
|
|
private bool isLoading = true;
|
|
private IReadOnlyList<Domain.Entities.Inquiry> allInquiries = [];
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (AuthStateTask != null)
|
|
{
|
|
var authState = await AuthStateTask;
|
|
if (authState.User.Identity?.IsAuthenticated == true)
|
|
{
|
|
await LoadData();
|
|
}
|
|
}
|
|
}
|
|
|
|
private async Task LoadData()
|
|
{
|
|
isLoading = true;
|
|
try
|
|
{
|
|
var (items, _) = await InquiryClient.GetPagedAsync(1, 200);
|
|
allInquiries = items.ToList();
|
|
}
|
|
catch
|
|
{
|
|
allInquiries = [];
|
|
}
|
|
finally
|
|
{
|
|
isLoading = false;
|
|
}
|
|
}
|
|
}
|