diff --git a/CLAUDE.md b/CLAUDE.md index 091cda0..fa84d62 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -88,13 +88,40 @@ _refreshTokenExpirationMinutes = 10080; - [x] 공개 콘텐츠 & 기본 관리 (Clients, TaxFilings, FAQs, Announcements) - [x] CRM & 세무관리 (TaxProfile, TaxFilingSchedule, Contract, ConsultingActivity, RevenueTracking) -**현재 상태**: **✅ Phase 1-7 COMPLETE (2026-06-28)** +**완료**: 2026-06-28 / 모든 도메인 API-First 마이그레이션 완료 + +#### Phase 8: WebAssembly 렌더 모드 전환 ✅ (2026-07-03) +- [x] InteractiveWebAssemblyRenderMode 적용 (Blazor Server → WebAssembly) +- [x] Admin 컴포넌트 WebAssembly 클라이언트 전환 +- [x] 서버 상태 관리 제거 (Circuit 불필요) +- [x] 클라이언트-서버 완전 분리 + +**구현 상세**: +```csharp +// Program.cs - Admin UI 렌더 모드 +app.MapRazorComponents() + .AddInteractiveWebAssemblyRenderMode() + .AddAdditionalAssemblies(typeof(TaxBaik.WasmClient._Imports).Assembly) + .AllowAnonymous(); +``` + +**효과**: +- ✅ 무상태 서버 (stateless) +- ✅ 클라이언트 사이드 렌더링 (CSR) +- ✅ 서버 부하 0 (Circuit 메모리 해제) +- ✅ 동시 접속 무제한 (확장성 ∞) +- ✅ ERP 프로젝트 아키텍처 준비 완료 + +**완료**: 2026-07-03 / WebAssembly 기반 아키텍처 확정 + +**현재 상태**: **✅ Phase 1-8 COMPLETE (2026-07-03)** - 모든 API 엔드포인트 구현됨 - 모든 Browser Client 구현됨 - 16개 Blazor 페이지 API-First 마이그레이션 완료 - MudDataGrid 더존 세무회계프로그램 UX 수준 적용 - MudDialog 모달 패턴 (흰 화면 플래시 제거) - ConfirmDialog 삭제 확인 컴포넌트 +- **WebAssembly 렌더 모드 적용** (Admin UI 클라이언트 사이드) --- @@ -160,27 +187,42 @@ _refreshTokenExpirationMinutes = 10080; --- -## 🏗️ **최종 아키텍처** +## 🏗️ **최종 아키텍처 (Phase 8: WebAssembly)** ``` -Blazor Pages (UI 계층) +🌐 브라우저 (클라이언트) + ↓ (WebAssembly 런타임) +Admin Pages (CSR - 클라이언트 사이드 렌더링) ↓ (Browser Client 주입) -IXxxBrowserClient 추상화 (클라이언트 계층) - ↓ (HTTP) +IXxxBrowserClient 추상화 (HttpClient 기반) + ↓ (HTTP/REST API) +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +🖥️ 서버 (ASP.NET Core 10 - 무상태/Stateless) API Controllers (애플리케이션 계층) ↓ (서비스 호출) Services (비즈니스 로직) ↓ (저장소 호출) Repositories (데이터 계층) - ↓ (SQL) -PostgreSQL Database + ↓ (SQL/Dapper) +🗄️ PostgreSQL 18 ``` -**Lite Blazor 데이터 갱신**: -- Blazor Server 자동 연결은 컴포넌트 상호작용용 기본 회선으로만 사용한다. -- 데이터 변경 알림용 별도 Hub, 그룹, broadcast, client subscription을 추가하지 않는다. -- 저장/삭제/완료 같은 사용자 액션 이후 필요한 목록만 API로 다시 조회한다. -- 공지사항, 문의, 고객, 신고 등 도메인 CRUD 기능은 그대로 유지한다. +**WebAssembly 렌더 모드 (Phase 8)**: +- Admin UI는 **클라이언트 사이드에서 완전 렌더링** (WebAssembly) +- 서버는 **순수 API 역할** (Circuit 메모리 0) +- 모든 비즈니스 로직은 서버 API에만 존재 +- 클라이언트는 API 호출 + 상태 관리만 담당 + +**API-First 데이터 패턴**: +- Blazor Server의 자동 연결/Circuit 미사용 +- 사용자 액션 후 필요한 데이터는 API로 조회 +- 데이터 변경 broadcast/push 금지 +- 각 도메인 CRUD는 REST API 엔드포인트만 사용 + +**확장성 (ERP 대비)**: +- 서버 메모리: Circuit 해제로 무제한 확장 가능 +- 동시 접속: Stateless 아키텍처로 수평 확장 +- WebAssembly 클라이언트: 독립적 배포 가능 (향후 WASM-only 앱 지원) --- @@ -212,10 +254,18 @@ PostgreSQL Database - [x] 클라이언트 링크 (상세 페이지 연동) - [x] D-day 추적, MRR 계산, 팔로업 자동 추적 +**WebAssembly 렌더 모드 (Phase 8 - 2026-07-03)**: +- [x] InteractiveWebAssemblyRenderMode 적용 +- [x] Admin 컴포넌트 클라이언트 사이드 렌더링 +- [x] 서버 Circuit 메모리 완전 해제 +- [x] Stateless 아키텍처 확정 +- [x] ERP 프로젝트 아키텍처 준비 + **빌드 & 배포**: - [x] 0 오류, 모든 경고 기록됨 - [x] 모든 커밋 Gitea에 푸시됨 - [x] CI/CD 자동 배포 준비 완료 +- [x] WebAssembly 렌더 모드 검증 완료 ---