Files
taxbaik/TaxBaik.Web.Client/Components/Admin/Forms/InquiryForm.razor
T
kjh2064 8202c3278b
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m17s
refactor: complete WebAssembly migration - proper architecture
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>
2026-07-03 01:03:51 +09:00

94 lines
3.2 KiB
Plaintext

@using TaxBaik.Application.DTOs
@using TaxBaik.Application.Services
@using TaxBaik.WasmClient.Components.Admin.Shared
<MudForm @ref="form">
<AdminFormSection Title="연락처" Description="고객 식별과 기본 회신 정보입니다." CssClass="mb-4">
<MudTextField @bind-Value="model.Name" Label="이름"
Variant="Variant.Outlined" Class="mb-4" Required="true" />
<MudTextField @bind-Value="model.Phone" Label="전화번호 (예: 010-1234-5678)"
Variant="Variant.Outlined" Class="mb-4" Required="true" />
<MudTextField @bind-Value="model.Email" Label="이메일"
Variant="Variant.Outlined" Class="mb-4" InputType="InputType.Email" />
</AdminFormSection>
<AdminFormSection Title="문의 내용" Description="운영 분류와 처리 메모를 함께 관리합니다." CssClass="mb-4">
<CommonCodeSelect @bind-Value="model.ServiceType" Group="INQUIRY_SERVICE_TYPE" Label="문의 유형" Class="mb-4" />
<MudTextField @bind-Value="model.Message" Label="문의 내용"
Variant="Variant.Outlined" Lines="5" Class="mb-4" Required="true" />
<CommonCodeSelect @bind-Value="model.Status" Group="INQUIRY_STATUS" Label="상태" Class="mb-4" />
<MudTextField @bind-Value="model.AdminMemo" Label="관리 메모"
Variant="Variant.Outlined" Lines="3" Class="mb-4" />
</AdminFormSection>
<AdminFormActions SubmitText="@ButtonText"
LoadingText="저장 중..."
CancelText="취소"
SubmitIcon="@Icons.Material.Filled.Save"
OnSubmit="@HandleSubmit"
OnCancel="@OnCancel"
IsSubmitting="false" />
</MudForm>
@code {
[Parameter, EditorRequired]
public string ButtonText { get; set; } = "저장";
[Parameter]
public EventCallback<InquiryFormModel> OnSubmit { get; set; }
[Parameter]
public EventCallback OnCancel { get; set; }
[Parameter]
public InquiryFormModel? InitialData { get; set; }
private MudForm? form;
private InquiryFormModel model = new();
protected override async Task OnInitializedAsync()
{
if (InitialData != null)
{
model = new InquiryFormModel
{
Name = InitialData.Name,
Phone = InitialData.Phone,
Email = InitialData.Email,
ServiceType = InitialData.ServiceType,
Message = InitialData.Message,
Status = InitialData.Status,
AdminMemo = InitialData.AdminMemo
};
}
}
private async Task HandleSubmit()
{
if (form == null)
return;
await form.Validate();
if (!form.IsValid)
return;
await OnSubmit.InvokeAsync(model);
}
public class InquiryFormModel
{
public string Name { get; set; } = "";
public string Phone { get; set; } = "";
public string? Email { get; set; }
public string ServiceType { get; set; } = "기타";
public string Message { get; set; } = "";
public string Status { get; set; } = "new";
public string? AdminMemo { get; set; }
}
}