kjh2064
|
4358b189c8
|
refactor: Phase 7-3 Complete - All Blazor pages API-First migration
TaxBaik CI/CD / build-and-deploy (push) Successful in 3m2s
**Blazor Pages Refactored (9 pages):**
✅ ClientList.razor (Service → IClientBrowserClient)
✅ ClientEdit.razor (Service → IClientBrowserClient)
✅ TaxFilingList.razor (Service → ITaxFilingBrowserClient)
✅ FilingTable.razor (Service → ITaxFilingBrowserClient)
✅ FaqList.razor (Service → IFaqBrowserClient)
✅ FaqEdit.razor (Service → IFaqBrowserClient)
✅ AnnouncementList.razor (Service → IAnnouncementBrowserClient)
✅ AnnouncementEdit.razor (Service → IAnnouncementBrowserClient)
✅ Previously: Dashboard, InquiryTable, InquiryDetail
**Pattern Applied Consistently:**
- Removed all direct service injections (Service Layer)
- Injected specialized Browser Clients (API Layer)
- Error handling with Snackbar notifications
- Try-catch for all API calls
- Graceful fallbacks (empty lists on error)
**Phase 7 Complete: 100% API-First Refactoring**
All admin pages now use:
ClientBrowserClient → /api/client (Clients)
TaxFilingBrowserClient → /api/tax-filing (Tax Filings)
FaqBrowserClient → /api/faq (FAQs)
AnnouncementBrowserClient → /api/announcement (Announcements)
InquiryBrowserClient → /api/inquiry (Inquiries)
AdminDashboardClient → /api/admin-dashboard (Dashboard)
**SOLID + Maintainability Achieved:**
✓ Single Responsibility: Each client = one domain
✓ Open/Closed: Extensible without modifying Blazor
✓ Dependency Inversion: Blazor → Abstractions, not services
✓ Interface Segregation: Fine-grained client interfaces
✓ Liskov Substitution: Interchangeable implementations
Build: ✅ Success (0 errors)
Status: Ready for Phase 6 (SignalR Integration)
Next: NotificationHub for real-time dashboard updates
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-28 11:15:40 +09:00 |
|
kjh2064
|
ccba017e3e
|
feat: WBS-UX-03 FAQ 관리 기능 구현 — 어드민 CRUD + 홈페이지 DB 연동
DB:
- V007__CreateFaqs.sql: faqs 테이블 (question, answer, category,
sort_order, is_active) + 기본 FAQ 4개 시드
Domain:
- Faq 엔티티
- IFaqRepository (GetActiveAsync, GetAllAsync, CRUD)
Infrastructure:
- FaqRepository: sort_order 정렬, CRUD
Application:
- FaqService: Categories 상수, Validate (질문·답변 필수)
Admin UI (Blazor):
- FaqList.razor: 전체 목록, 활성/비활성 상태 칩, 삭제 확인
- FaqEdit.razor: 질문/답변/카테고리/순서/활성 토글 폼
- MainLayout: 홈페이지 그룹 하위에 FAQ 관리 메뉴 추가
홈페이지:
- Index.cshtml 하드코딩 FAQ → ActiveFaqs DB 루프로 교체
- FAQ 없으면 섹션 전체 숨김 (빈 DB에 안전)
- IndexModel: FaqService 주입, Task.WhenAll 병렬 로드
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-27 23:39:59 +09:00 |
|