feat: 시즌별 마케팅 + 공지사항 관리 기능 추가
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m15s
TaxBaik Browser E2E / browser-e2e (push) Successful in 1m31s

- 연간 세무 캘린더(7개 시즌) 기반 자동 Hero 섹션 전환
- 시즌 감지 시 D-Day 카운트다운, 긴박감 배지, 시즌 CTA 표시
- 서비스 카드 순서 시즌 관련 항목 우선 정렬
- 어드민 공지사항 CRUD (등록·수정·삭제, 기간·유형 설정)
- 홈페이지 상단 공지 배너 자동 노출 (일반/배너/긴급)
- CLAUDE.md에 세무 캘린더 및 마케팅 방향 하네스 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-27 22:45:55 +09:00
parent 6af9221fab
commit cc72a67355
27 changed files with 1184 additions and 144 deletions
@@ -0,0 +1,38 @@
namespace TaxBaik.Application.Services;
using TaxBaik.Application.Seasonal;
public class SeasonalMarketingService
{
public CurrentSeasonDto? GetCurrentSeason()
{
var today = DateTime.Today;
foreach (var season in TaxSeasonCalendar.Seasons)
{
var start = new DateTime(today.Year, season.StartMonth, season.StartDay);
var end = new DateTime(today.Year, season.EndMonth, season.EndDay);
if (today >= start && today <= end)
{
var days = (end - today).Days;
return new CurrentSeasonDto
{
Key = season.Key,
Name = season.Name,
HeroHeadline = season.HeroHeadline,
HeroSubtext = season.HeroSubtext,
UrgencyBadge = season.UrgencyBadge.Replace("{n}", days.ToString()),
FocusService = season.FocusService,
CtaText = season.CtaText,
DaysUntilDeadline = days,
Deadline = end
};
}
}
return null;
}
public IReadOnlyList<TaxSeason> GetFullCalendar() => TaxSeasonCalendar.Seasons;
}