Commit Graph

12 Commits

Author SHA1 Message Date
kjh2064 b300cd7a59 완성: 빌드 성공 및 최종 통합 (W0~W6 완료)
- 모든 빌드 오류 해결 (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>
2026-06-26 15:23:06 +09:00
kjh2064 f99d61f767 수정: 빌드 오류 해결 (PageModel 네임스페이스, Blazor 문법, 응답 압축)
- @model 선언에 정확한 네임스페이스 지정
- Snackbar 호출 수정 (MudBlazor 6.x 호환)
- GzipCompressionProvider import 추가
- Dashboard Color.TextSecondary 제거
- Admin App.razor MUI CSS 제거

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-26 15:21:02 +09:00
kjh2064 f4eeeb9ec0 추가: 초기 관리자 계정 및 블로그 포스트 5개
- 초기 관리자: admin / admin123
- 블로그 포스트 5개 자동 생성
- AdminUserRepository 구현
- CreateBlogPostDto 추가

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-26 15:18:01 +09:00
kjh2064 b1228ddb4b 개선: CSS 디자인 시스템 및 성능 최적화
- CSS 변수 확장 (색상, 스페이싱, 반응형 브레이크포인트)
- 모든 요소 전환 애니메이션 추가
- 이미지 lazy load 지원
- 응답 압축 (gzip) 활성화
- 폰트 preconnect + DNS prefetch 최적화
- 375px ~ 초소형 화면 반응형 대응
- 게시물 레이아웃 개선 (섹션 구조, 메타데이터)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-26 15:17:28 +09:00
kjh2064 35323f2b2c 구현: 관리자 백오피스 Blazor Server + MudBlazor 컴포넌트
- 대시보드: KPI 카드 (이번달 문의, 신규 문의, 포스트 수)
- 블로그 관리: 목록/작성/수정 페이지
- 문의 관리: 목록 및 상태 변경
- 설정: 사이트 연락처 정보
- 인증: Cookie 기반 8시간 세션

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-26 15:16:16 +09:00
kjh2064 525e988637 설정: 백원숙 세무사 연락처 정보 추가
연락처 정보:
- 전화번호: 010-4122-8268
- 이메일: taxbaik5668@gmail.com
- 카카오톡 채널: http://pf.kakao.com/_xoxchTX
- 인스타그램: https://www.instagram.com/taxtory5668/

수정 사항:
- appsettings.json: SiteSettings에 연락처 추가
- _Header.cshtml: 헤더의 전화번호 링크 반영
- _Layout.cshtml: 모바일 CTA 바 카카오톡 직접 링크 연결
- _Footer.cshtml: 전화, 이메일, 채널 링크 모두 반영
- Contact.cshtml: 전화 상담 옵션 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 15:13:19 +09:00
kjh2064 6a37cfead4 구현: W3 공개 홈페이지 (Razor Pages SSR)
공개 사이트 (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>
2026-06-26 15:10:39 +09:00
kjh2064 06792e4e0f 구현: W2.3 애플리케이션 서비스 레이어
BlogService:
- GetBySlugAsync: 공개된 포스트 조회
- GetPublishedPagedAsync: 페이징된 포스트 목록 (카테고리 필터 옵션)
- GetAllForAdminAsync: 관리자용 전체 포스트 (발행 상태 무관)
- CreateAsync: 포스트 생성 (슬러그 자동 생성)
- UpdateAsync/DeleteAsync: 포스트 수정/삭제
- IncrementViewCountAsync: 조회수 증가 (fire-and-forget)
- GenerateSlug: 한국어 제목 → 로마자 슬러그 변환

InquiryService:
- SubmitAsync: 상담 신청 폼 제출
  * 이름, 전화번호 필수
  * 전화번호 정규식 검증 (010-XXXX-XXXX)
  * 문의 내용 필수
  * ValidationException 으로 입력값 오류 처리
- GetByIdAsync/GetPagedAsync: 문의 조회 및 필터링
- UpdateStatusAsync: 문의 상태 변경

추가:
- ValidationException: 비즈니스 검증 예외
- DependencyInjection: AddApplication() 확장 메서드

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 15:06:44 +09:00
kjh2064 d5918c562c 구현: W2 도메인·인프라·서비스 레이어
Domain 레이어:
- Enums: InquiryStatus (New/Contacted/Contracted/Closed)
- Enums: ServiceType (기장/종소세/부가세/양도세/증여상속/기타)
- Entities: Category, BlogPost, Inquiry, AdminUser (DB 매핑)
- Interfaces: IBlogPostRepository, ICategoryRepository, IInquiryRepository, IDbConnectionFactory

Infrastructure 레이어:
- DbConnectionFactory: PostgreSQL 연결 팩토리 (Npgsql)
- BlogPostRepository: GetBySlug, GetPublishedPaged, Create, Update, Delete, IncrementViewCount
- CategoryRepository: GetAll, GetBySlug
- InquiryRepository: Create, GetPaged, UpdateStatus
- NuGet 의존성: Dapper 2.1.15, Npgsql 8.0.1, Configuration, DependencyInjection
- DependencyInjection: AddInfrastructure() 확장 메서드

기술 결정:
- Dapper로 SQL 완전 제어
- PostgreSQL 다중 쿼리 (QueryMultiple) 페이징 최적화
- 한국어 파라미터 처리 (::int, ::text 타입 명시)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 15:06:22 +09:00
kjh2064 303ba49292 Remove regional specificity, focus on nationwide positioning
- Change site description from '성북구 세무사' to nationwide professional
- Update positioning from '일상 자산 세금 파트너' to '맞춤형 세무 파트너'
- Replace Seongbuk-gu specificity with skill-based positioning
- Align with online-first service model (no local restriction)
- Update examples in documentation

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 15:02:45 +09:00
kjh2064 88409b8fea Add deployment infrastructure and development guide
- db/migrations/: V001 (schema) + V002 (seed data) SQL files
- deploy/: systemd service files (taxbaik.service, taxbaik-admin.service)
- deploy/: Nginx location block configuration
- .gitea/workflows/deploy.yml: CI/CD pipeline (build, test, deploy)
- CLAUDE.md: Comprehensive development guidelines (9 sections)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 14:59:51 +09:00
kjh2064 6dff8e7777 Initial project setup: solution + 5 projects
- Domain, Infrastructure, Application (class libraries)
- Web (ASP.NET Core empty)
- Admin (Blazor Server)
- All net8.0 target framework
- Project references configured

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-26 14:51:00 +09:00