개선: 배포 검증과 관리자 UX 안정화
TaxBaik Browser E2E / browser-e2e (push) Failing after 1m3s
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m46s

This commit is contained in:
2026-06-27 20:57:09 +09:00
parent 64b08831e8
commit f29f2c3cff
51 changed files with 948 additions and 199 deletions
+12
View File
@@ -32,6 +32,10 @@ public class BlogController : ControllerBase
return Ok(post);
}
[HttpGet("~/blog/{slug}")]
public IActionResult RedirectToBlogPage(string slug)
=> RedirectPermanent($"/taxbaik/blog/{slug}");
[HttpGet("admin/all")]
[Authorize]
public async Task<IActionResult> GetAll()
@@ -40,6 +44,14 @@ public class BlogController : ControllerBase
return Ok(posts);
}
[HttpGet("admin")]
[Authorize]
public async Task<IActionResult> GetAdminPaged([FromQuery] int page = 1, [FromQuery] int pageSize = 20)
{
var (items, total) = await _blogService.GetAdminPagedAsync(page, pageSize);
return Ok(new { data = items, total, page, pageSize });
}
[HttpPost]
[Authorize]
public async Task<IActionResult> Create([FromBody] CreateBlogPostDto dto)
@@ -0,0 +1,43 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using TaxBaik.Application.Services;
namespace TaxBaik.Web.Controllers;
[ApiController]
[Route("api/[controller]")]
[Authorize]
public class SiteSettingsController : ControllerBase
{
private readonly SiteSettingService _siteSettingService;
public SiteSettingsController(SiteSettingService siteSettingService)
{
_siteSettingService = siteSettingService;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var settings = await _siteSettingService.GetAllAsync();
return Ok(settings);
}
[HttpPut]
public async Task<IActionResult> Save([FromBody] SaveSiteSettingsRequest request)
{
if (request is null)
return BadRequest(new { message = "요청 본문이 비어 있습니다." });
await _siteSettingService.SaveAsync(request.Phone, request.Email, request.KakaoUrl, request.InstagramUrl);
return Ok(new { message = "사이트 설정이 저장되었습니다." });
}
}
public class SaveSiteSettingsRequest
{
public string Phone { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string KakaoUrl { get; set; } = string.Empty;
public string InstagramUrl { get; set; } = string.Empty;
}