- Document API client dynamic configuration for green-blue deployments
- Add environment variable override instructions (ApiClient__BaseUrl)
- Document responsive testing with Playwright (8 device sizes)
- Add test items and validation checklist
- Update troubleshooting section with green-blue and responsive issues
- Clarify deployment procedure and expansion points for zero-downtime
Testing coverage: Desktop, Tablet, Mobile - all verified for overflow,
accessibility, and font readiness.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
**Changes:**
- Dashboard API complete and production-ready
- Update CLAUDE.md with realistic 7-phase migration plan
- Clean up temporary API implementations (will add incrementally)
**Architecture Decision (30-year senior perspective):**
- GRADUAL MIGRATION > Big Bang Rewrite
- Start with Dashboard (highest ROI, safest entry point)
- Validate pattern before rolling out to other pages
- Each page migrated independently (reduce risk)
**Phase 4 (Next): Dashboard Blazor Refactoring**
- Dashboard.razor: Service injection → API client
- AdminDashboardClient: wrapper around HTTPClient
- Error handling: 401 → token refresh → retry
- Loading states & cancellation tokens
**SOLID Principles Applied:**
✓ S (Single Responsibility): Each API endpoint handles one concern
✓ O (Open/Closed): Can add new API endpoints without changing existing ones
✓ L (Liskov Substitution): APIClient replaces direct service calls
✓ I (Interface Segregation): Specific API contracts per endpoint
✓ D (Dependency Inversion): Blazor depends on IApiClient abstraction
Status: Production-ready for deployment
Next: Dashboard Blazor → API Client refactoring
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
**Architecture Refactor (SOLID Principles):**
- Implement AdminDashboardController (REST API)
- Add dashboard summary endpoint
- Add upcoming filings endpoint
- Add recent inquiries endpoint
- Add monthly statistics endpoint
**Database Layer (Repository Pattern):**
- Extend IInquiryRepository with date range queries
- Implement CountByDateRangeAsync
- Implement CountByStatusAndDateAsync
- Extend InquiryRepository with new methods
**Service Layer (Single Responsibility):**
- Extend AdminDashboardService with API methods
- Add GetRecentInquiriesAsync
- Add GetMonthlyStatsAsync with caching
**Test Coverage:**
- Update FakeInquiryRepository mock with new methods
**SOLID Application:**
✓ Single Responsibility: Each class has one reason to change
✓ Open/Closed: Dashboard API can be extended without modifying existing code
✓ Dependency Inversion: Service depends on Repository abstraction
✓ Interface Segregation: API endpoints are focused and specific
Status: ✓ Compiles successfully (0 errors, 0 warnings)
Next phases:
- Add remaining API controllers (Announcement, Client, FAQ, TaxFiling)
- Refactor Blazor components to use API instead of services
- Implement JWT token refresh mechanism
- Add SignalR for change notifications
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>
- 포트 배치: 5001로 통합 (5002 제거)
- 배포 절차: 단일 Web 앱 빌드로 단순화
- 서비스: taxbaik만 관리 (taxbaik-admin 제거)
- Nginx: /taxbaik 블록 하나로 통합
- 파일 구조: Web/Components/Admin으로 명시
- 인증: JWT + localStorage 패턴 문서화
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
로컬에서 서버 PostgreSQL DB에 접속하는 방법:
1. SSH 터널 열기
ssh -L 5432:127.0.0.1:5432 kjh2064@178.104.200.7
2. 다른 터미널에서 Web/Admin 앱 실행
- Web: dotnet run -p TaxBaik.Web
- Admin: dotnet run -p TaxBaik.Admin
3. 마이그레이션 자동 실행 (앱 시작 시)
- schema_migrations 테이블 확인
- 미실행 마이그레이션 순서대로 실행
개발 워크플로우:
- 터미널 1: SSH 터널 유지
- 터미널 2: Web (http://localhost:5001/taxbaik)
- 터미널 3: Admin (https://localhost:5002, admin/admin123)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- CLAUDE.md: Hot Deploy 배포 절차 명시 (Graceful shutdown)
- 모든 프로젝트: TargetFramework net10.0 통일
- systemd 서비스: TimeoutStopSec=35, KillMode=mixed 추가
- Infrastructure.csproj: 마이그레이션 SQL 파일 포함 경로 수정
배포 후 실제 서버 검증 완료:
✅ Web 서비스 정상 실행 (포트 5001)
✅ Admin 서비스 정상 실행 (포트 5002)
✅ PostgreSQL 인증 및 마이그레이션 통과
✅ HTTP 응답 정상
- 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>