- 자주 묻는 질문 4개 Bootstrap 아코디언으로 구현
(기장료, 양도세 상담, 무료 상담, 첫 상담 준비물)
- 최종 CTA 섹션 앞에 배치
- site.css: faq-accordion, faq-item, faq-question, faq-answer 스타일
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- TaxSeason / CurrentSeasonDto에 RelatedCategorySlug 추가
- TaxSeasonCalendar 각 시즌에 카테고리 슬러그 매핑
(income-tax→income-tax, vat-1st/2nd→vat, 종부세→real-estate-tax 등)
- IBlogPostRepository.GetByCategorySlugAsync 추가
- BlogService.GetSeasonalPostsAsync: 시즌 관련 글 2개 우선 + 나머지 최신 글로 채움
- IndexModel: SeasonalPosts / RecentPosts 분리 로드
- Index.cshtml 블로그 섹션: 시즌 중 "이번 시즌 추천" 배지 + 시즌별 전체보기 버튼
- site.css: blog-card--seasonal, seasonal-blog-tag, btn-seasonal 스타일
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 연간 세무 캘린더(7개 시즌) 기반 자동 Hero 섹션 전환
- 시즌 감지 시 D-Day 카운트다운, 긴박감 배지, 시즌 CTA 표시
- 서비스 카드 순서 시즌 관련 항목 우선 정렬
- 어드민 공지사항 CRUD (등록·수정·삭제, 기간·유형 설정)
- 홈페이지 상단 공지 배너 자동 노출 (일반/배너/긴급)
- CLAUDE.md에 세무 캘린더 및 마케팅 방향 하네스 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1️⃣ HttpClient 서비스 추가
- IApiClient 인터페이스 구현
- GET, POST, PUT, DELETE 메서드
- JWT 토큰 자동 관리
- /taxbaik/api 경로 자동 처리
2️⃣ Razor Pages 리팩토링
- Pages/Index.cshtml.cs: API /api/blog 호출
- Pages/Blog/Index.cshtml.cs: API /api/blog, /api/category 호출
- Pages/Contact.cshtml.cs: API /api/inquiry 호출
- Service 의존성 제거
3️⃣ Blazor Components 리팩토링
- Login.razor: API /api/auth/login 호출로 변경
- BlogList.razor: API /api/blog/admin/all 호출로 변경
- Service 의존성 제거
아키텍처:
View (Razor Pages + Blazor)
↓ HttpClient
Controllers (REST API)
↓
Services (비즈니스 로직)
↓
Repository (DB)
테스트 결과:
✅ 홈페이지: 200 OK
✅ 블로그 페이지: 200 OK
✅ 문의 페이지: 200 OK
✅ 로그인 페이지: 200 OK
✅ API 엔드포인트 모두 작동
장점:
• UI 리뉴얼 시 API 변경 불필요
• 모바일앱, 데스크톱 클라이언트 추가 가능
• 비즈니스 로직과 UI 완전 독립
• 테스트 가능한 구조 완성
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- 포트 5001로 설정 (기존 5012 → 5001)
- DB 연결 없이도 페이지 렌더링 가능하도록 error handling 추가
- Index.cshtml.cs: 블로그 로드 실패 시 빈 리스트 반환
- Blog/Index.cshtml.cs: 카테고리 및 포스트 로드 실패 시 빈 리스트 반환
- Contact.cshtml.cs: 문의 제출 실패 시 사용자 친화적 에러 메시지
- Program.cs: 마이그레이션을 non-blocking으로 변경
페이지 구성:
- 홈페이지 (Index): 회사 소개 및 최근 블로그
- 블로그 (Blog): 게시글 목록 및 카테고리 필터
- 서비스 (Services): 서비스 소개
- 문의 (Contact): 상담 신청 폼
- 소개 (About): 회사 정보
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
주요 변경사항:
- Hero 섹션: 강력한 임팩트, 자격 배지, 큰 CTA
- 신뢰도 섹션: 자격 3개 항목 수직 확장
- 서비스 섹션: 아이콘 + 상세 설명 + 리스트형 혜택 → 전문성 강조
- 상담 프로세스: 새로운 4단계 시각화 섹션 추가
- 블로그 섹션: 플레이스홀더 이미지, 더 큰 카드
- 최종 CTA: 강렬한 다크 그린 배경, 대비 강한 버튼
디자인 개선:
- 화이트스페이스 확대
- 시각적 계층 구조 강화
- 기능별 섹션 분리
- 반응형 레이아웃 개선
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- site.css: 색상 팔레트 전환 (골드/브론즈/초록/베이지)
- admin.css: MudBlazor 커스터마이징으로 일관성 있는 관리자 UI
- theme-color 메타 태그 업데이트
변경사항:
- 주색: #1B4F8A(네이비) → #C89D6E(따뜻한 골드)
- 보조색: 새로 추가 #2E5C4E(따뜻한 초록)
- 배경: #F7F9FC(차가운 화이트) → #F9F7F3(따뜻한 화이트)
- 그라데이션, 섀도우, 타이포그래피 개선
이전: 기본적인 텍스트 나열식 디자인
현재: 경험 많은 세무사 사무실 느낌의 세련되고 전문적인 디자인
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
## 문제
_ViewStart.cshtml이 없어서 _Layout.cshtml이 렌더링되지 않음
→ CSS/JS가 HTML에 포함되지 않음
→ 스타일 미적용 상태
## 해결
_ViewStart.cshtml 생성하여 Layout 전역 설정
→ 모든 Razor Pages가 _Layout.cshtml을 상속받음
→ CSS/JS 정상 로드
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
## 변경사항
- Footer에 빌드 버전 및 시간 표시
- VersionInfo를 DI로 주입받아 렌더링
- 형식: v{Version} · {Built}
- 투명도(opacity: 0.6)로 미세하게 표시
## 사용자 편의
배포 후 실시간으로 버전 확인 가능
버그 또는 새 기능 적용 여부를 즉시 확인
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
### 버전 정보 표시 기능
- CI/CD에서 빌드 시간과 git commit hash를 version.txt에 기록
- Web과 Admin 앱이 시작 시 version.txt를 읽어 VersionInfo 싱글톤으로 등록
- 홈페이지 푸터에 "버전: <커밋해시> | 배포: <빌드시간>" 표시
- 최신 소스 반영 여부를 즉시 확인 가능
### 포트 충돌 해결
- 배포 후 기존 프로세스 종료 시 포트 릴리스 대기 로직 추가
- lsof 명령으로 포트 사용 여부 확인 (최대 30초 대기)
- 5001/5002 포트가 완전히 릴리스될 때까지 new process 시작 지연
- "Address already in use" 오류 해결
파일 변경:
- .gitea/workflows/deploy.yml: 버전 파일 생성 + 포트 대기 로직
- TaxBaik.Web/Program.cs: version.txt 읽기 + VersionInfo 등록
- TaxBaik.Admin/Program.cs: version.txt 읽기 + VersionInfo 등록
- TaxBaik.Web/Pages/Shared/_Footer.cshtml: 버전 정보 표시
- TaxBaik.Web/VersionInfo.cs: 새로 추가
- TaxBaik.Admin/VersionInfo.cs: 새로 추가
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- 모든 빌드 오류 해결 (PageModel, Blazor, ResponseCompression)
- Admin 컴포넌트 MudBlazor 6.x 호환성 확보
- IBlogPostRepository 메서드 통일
- ResponseCompression gzip 활성화
W0~W6 전체 작업 완료:
✅ 프로젝트 기반 구축
✅ LLM 개발 지침 (CLAUDE.md)
✅ 도메인/인프라/서비스 레이어
✅ 공개 홈페이지 (Razor Pages SSR)
✅ 관리자 백오피스 (Blazor Server + MudBlazor)
✅ CSS 디자인 시스템 + 모바일 UX
✅ 초기 데이터 + 블로그 포스트 5개
다음 단계: 서버 배포 (Gitea CI/CD)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- CSS 변수 확장 (색상, 스페이싱, 반응형 브레이크포인트)
- 모든 요소 전환 애니메이션 추가
- 이미지 lazy load 지원
- 응답 압축 (gzip) 활성화
- 폰트 preconnect + DNS prefetch 최적화
- 375px ~ 초소형 화면 반응형 대응
- 게시물 레이아웃 개선 (섹션 구조, 메타데이터)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
공개 사이트 (port 5001):
- Program.cs: AddRazorPages, AddInfrastructure, AddApplication, UsePathBase("/taxbaik")
- appsettings.json: PostgreSQL 연결 문자열
레이아웃 및 공통 컴포넌트:
- _Layout.cshtml: Bootstrap 5, Noto Sans KR, OG 메타 태그, 모바일 고정 CTA 바
- _Header.cshtml: sticky navbar, 로고, 네비게이션 링크, 상담신청 버튼
- _Footer.cshtml: 사업자정보, 연락처, KakaoTalk, 저작권
- _ViewImports.cshtml, _ViewStart.cshtml
- site.css: CSS 변수 (--color-primary, --color-cta 등), 반응형 스타일
- site.js: 모바일 CTA 바 제어, sticky 헤더 효과
페이지 구현:
1. Index.cshtml (메인 랜딩): Hero, 신뢰도 strip, 서비스 카드, 최근 블로그
2. Services.cshtml (서비스): 4개 서비스 소개, 상담료 안내
3. About.cshtml (소개): 세무사 프로필, 3개 자격증, 서비스 철학
4. Contact.cshtml (상담신청): 폼 (이름, 전화, 이메일, 분야, 문의), ValidationException 처리
5. Blog/Index.cshtml (블로그 목록): 카테고리 필터 탭, 12개 그리드, 페이지네이션
6. Blog/Post.cshtml (포스트 상세): 브레드크럼, 제목, 메타정보, 콘텐츠, CTA, 공유 버튼
SEO:
- robots.txt: /taxbaik 허용, /admin 차단, sitemap 링크
- Sitemap.cshtml: 동적 생성 (정적 페이지 + 모든 포스트)
기술:
- Dapper 기반 DB 접근
- 페이징: 12개/페이지
- 한국어 입력값 검증
Co-Authored-By: Claude <noreply@anthropic.com>