57269e281d
TaxBaik CI/CD / build-and-deploy (push) Failing after 36s
분리의 단점을 제거하고 단일 앱으로 통합: 구조 변경: - TaxBaik.Admin → TaxBaik.Web/Components/Admin/ - Admin Services → TaxBaik.Web/Services/ - 포트: 5001 (기존 5002 제거) 경로: - 홈페이지: http://localhost:5001/taxbaik - 관리자: http://localhost:5001/taxbaik/admin 기술: - Razor Pages (Web) + Blazor Server (Admin) 통합 - 단일 Program.cs로 양쪽 모두 지원 - JWT 인증 유지 - MudBlazor UI 유지 장점: - 개발 복잡도 감소 (터미널 1개) - 배포 단순화 (앱 1개) - DB 마이그레이션 1회 실행 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
78 lines
2.6 KiB
Plaintext
78 lines
2.6 KiB
Plaintext
@page "/admin/blog/create"
|
|
@using TaxBaik.Application.Services
|
|
@using TaxBaik.Domain.Interfaces
|
|
@attribute [Authorize]
|
|
@inject BlogService BlogService
|
|
@inject ICategoryRepository CategoryRepository
|
|
@inject NavigationManager Navigation
|
|
@inject Snackbar Snackbar
|
|
|
|
<PageTitle>새 포스트 작성</PageTitle>
|
|
|
|
<MudText Typo="Typo.h5" Class="mb-4">📝 새 포스트</MudText>
|
|
|
|
<MudPaper Class="pa-4" Elevation="1">
|
|
<MudForm @ref="form">
|
|
<MudTextField @bind-Value="model.Title" Label="제목"
|
|
Variant="Variant.Outlined" Class="mb-4" Required="true" />
|
|
|
|
<MudSelect @bind-Value="model.CategoryId" Label="카테고리"
|
|
Variant="Variant.Outlined" Class="mb-4">
|
|
@foreach (var category in categories)
|
|
{
|
|
<MudSelectItem Value="@category.Id">@category.Name</MudSelectItem>
|
|
}
|
|
</MudSelect>
|
|
|
|
<MudTextField @bind-Value="model.Content" Label="본문"
|
|
Variant="Variant.Outlined" Lines="10" Class="mb-4" Required="true" />
|
|
|
|
<MudTextField @bind-Value="model.Tags" Label="태그 (쉼표로 구분)"
|
|
Variant="Variant.Outlined" Class="mb-4" />
|
|
|
|
<MudTextField @bind-Value="model.SeoTitle" Label="SEO 제목"
|
|
Variant="Variant.Outlined" Class="mb-4" />
|
|
|
|
<MudTextField @bind-Value="model.SeoDescription" Label="SEO 설명"
|
|
Variant="Variant.Outlined" Lines="3" Class="mb-4" />
|
|
|
|
<MudCheckBox @bind-Checked="model.IsPublished" Label="즉시 발행" Class="mb-4" />
|
|
|
|
<div class="d-flex gap-2">
|
|
<MudButton Variant="Variant.Filled" Color="Color.Primary"
|
|
@onclick="SavePost">저장</MudButton>
|
|
<MudButton Variant="Variant.Outlined" @onclick="@(() => Navigation.NavigateTo("/taxbaik/admin/blog"))">
|
|
취소
|
|
</MudButton>
|
|
</div>
|
|
</MudForm>
|
|
</MudPaper>
|
|
|
|
@code {
|
|
private MudForm form;
|
|
private List<Domain.Entities.Category> categories = [];
|
|
private CreatePostModel model = new();
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
categories = (await CategoryRepository.GetAllAsync()).ToList();
|
|
}
|
|
|
|
private async Task SavePost()
|
|
{
|
|
// TODO: Implement BlogService.CreateAsync
|
|
Navigation.NavigateTo("/taxbaik/admin/blog");
|
|
}
|
|
|
|
private class CreatePostModel
|
|
{
|
|
public string Title { get; set; }
|
|
public string Content { get; set; }
|
|
public int CategoryId { get; set; }
|
|
public string Tags { get; set; }
|
|
public string SeoTitle { get; set; }
|
|
public string SeoDescription { get; set; }
|
|
public bool IsPublished { get; set; }
|
|
}
|
|
}
|