docs(wbs): completely purge and replace all deprecated Blazor and MudBlazor references with Razor Pages and Tabler standards

This commit is contained in:
2026-07-12 14:47:20 +09:00
parent c56dd7e35d
commit 2a46dd5503
2 changed files with 20 additions and 27 deletions
+14 -14
View File
@@ -24,10 +24,10 @@
모든 작업은 아래 7가지 증빙이 함께 충족되고, 하네스 검증을 통과할 때만 완료로 본다.
- **MudBlazor 9 UI 표준 준수**: 모든 UI 컴포넌트 개발 시 **MudBlazor 9.0.0 버전** 표준 및 Interactive WebAssembly를 렌더 모드로 강제한다. Fluent UI 및 구버전(8.x 이하) 요소와의 혼용을 엄격히 배제한다.
- **Tabler UI 표준 준수**: 모든 UI 개발 시 **Tabler CSS/JS** 표준 및 ASP.NET Core Razor Pages를 기본 렌더 모드로 한다. 타 프레임워크와의 혼용을 엄격히 배제한다.
- **컴파일/빌드 완료**: 빌드 시 컴파일 에러 및 **컴파일 경고(Warning)가 0개**여야 한다.
- **DTO 및 유효성 검증 규칙**: API 입력 모델 및 DTO 유효성 검증 시 **데이터 어노테이션(Data Annotation) 방식을 기본적으로 사용**하되, 복잡한 비즈니스 조건부 유효성 검증 등 어노테이션만으로 부족한 영역은 **FluentValidation을 상호 보완적으로 적용**하여 규칙을 중앙 집중식으로 엄격히 관리해야 한다.
- **MVVM 패턴**: Blazor 화면 바인딩 정합성을 극대화하기 위해 Razor 컴포넌트(View)와 상태/검증/로직을 갖춘 DTO 및 StateService(ViewModel) 구조의 **MVVM 패턴을 철저히 지향**해야 한다.
- **Razor Pages 패턴**: ASP.NET Core Razor Pages 표준 아키텍처에 맞게, `.cshtml` 뷰와 비즈니스 서비스 계층을 완벽히 분리하고 안티포저리 토큰(CSRF 방어) 유효성 검증을 필수로 수행해야 한다.
- **Playwright E2E 하네스 검증**: 사용자 입장에서 시나리오에 따라 서비스를 직접 호출(Playwright 실행)하여, 실제 반환된 DOM 값과 화면 캡처 결과가 예측한 데이터/화면과 완벽히 일치하여 데이터로 증빙되어야 성공으로 판정한다.
- **병렬 테스트 및 인증 키 공유**: CI 테스트 및 로컬 테스트 수행 시 선후관계(순차 종속성)로 인해 병목이 생기지 않도록, 인증 완료 후의 인증 키(Cookie, Bearer Token 등)를 테스트 간 상호 공유 및 재사용(storageState 등)하도록 구성하여 **반드시 병렬(Parallel) 작업**으로 실행되어야 한다.
- `YAML` 증빙: 관련 contract/spec/governance 문서가 일관되게 갱신되어야 한다.
@@ -170,7 +170,7 @@ Phase 10 ░░░░░░░░░░░░░░░░░░░░ C#/.NET
| **P5 완전 자동화** | ~2026-12 | CI/CD + Gitea, 자율 실행 | 수동 개입 0회/주 |
| **P6 비기계적 매도전략** | 2026-06 완료 | 5팩터 confluence 엔진, KIS 조회연동, SQLite 자체평가 | WBS-6 본문 하네스 PASS (잔류위험은 P7에서 해소) |
| **P7 보완·고도화** | ~2026-08 | 캘리브레이션 실증 전환, GAS 마이그레이션 완결, deprecated 정리, E2E 통합테스트 | WBS-7.1~7.8 하네스 전부 PASS |
| **P10 .NET 엔진 고도화** | ~2026-12 | C# Domain Parity, 테스트 100+건, Application 서비스, Blazor 대시보드, 보안 경화 | `dotnet test` 전체 PASS + parity JSON gate PASS |
| **P10 .NET 엔진 고도화** | ~2026-12 | C# Domain Parity, 테스트 100+건, Application 서비스, Razor Pages 어드민 대시보드, 보안 경화 | `dotnet test` 전체 PASS + parity JSON gate PASS |
---
@@ -1465,7 +1465,7 @@ WBS-8.8 (KIS 리팩터) — 독립적 (원격 병행)
> **📌 보강 문서(2026-06-30):** 본 WBS-10 의 다수 항목이 `완료` 표기되어 있으나 실측 결과 일부 괴리(10.6 파이프라인·10.9 보안 실질 미완성)가 확인되었다. 마이그레이션 완성 우선 + 상용화 잔여 작업의 재정의는 [WBS_10_DOTNET_MIGRATION_HARDENING_2026_06_30.md](./WBS_10_DOTNET_MIGRATION_HARDENING_2026_06_30.md) 참조.
> 현황 진단(2026-06-26): .NET 프로젝트는 Python 엔진(41 모듈, 14,500 LOC) 대비 5~10%(~1,400 LOC) 수준.
> Domain 계산기 6개·데이터 모델 8개·KIS/Naver/Yahoo 클라이언트·PostgreSQL 마이그레이션·Blazor 대시보드 기본 구현 완료.
> Domain 계산기 6개·데이터 모델 8개·KIS/Naver/Yahoo 클라이언트·PostgreSQL 마이그레이션·Razor Pages 어드민 대시보드 기본 구현 완료.
> **미구현**: Application 서비스 일부, 공식 엔진, 하네스 주입, 파이프라인 오케스트레이터.
> **발견된 결함 5건**: D1) Tests.csproj Core ProjectReference 누락, D2) Tests sln 미등록, D3) appsettings.json 비밀번호 하드코딩, D4) NU1510 불필요 패키지, D5) Class1.cs placeholder 2개.
@@ -1481,7 +1481,7 @@ WBS-10.1 (기반 결함 수정)
├──→ WBS-10.7 (Application 서비스)
│ └──→ WBS-10.8 (데이터 수집 오케스트레이터)
├──→ WBS-10.9 (보안 강화)
└──→ WBS-10.10 (Blazor 대시보드 고도화)
└──→ WBS-10.10 (Razor Pages 어드민 대시보드 고도화)
```
---
@@ -1720,11 +1720,11 @@ WBS-10.1 (기반 결함 수정)
---
#### WBS-10.10 Blazor 대시보드 고도화
#### WBS-10.10 Razor Pages 어드민 대시보드 고도화
| 항목 | 내용 |
|------|------|
| **작업** | Python snapshot_admin_server_v1.py의 편집/조회 기능을 Blazor SSR로 확장. 기본 템플릿 페이지 제거 |
| **작업** | Python snapshot_admin_server_v1.py의 편집/조회 기능을 Razor Pages 뷰 및 핸들러로 구현. 기본 템플릿 페이지 제거 |
| **현재 상태** | `Dashboard.razor`는 데이터 비의존형 상태표시로 단순화되었고, `Operations.razor``Temp/operational_report.json` 고정 렌더 경로를 제공하며, Counter/Weather 기본 페이지는 삭제됨. 공개 배포본은 아직 이전 빌드가 남아 있을 수 있으므로 CI/CD 동기화가 필요함 |
| **담당 파일** | `src/dotnet/QuantEngine.Web/Components/Pages/Dashboard.razor`, `Operations.razor`, `NavMenu.razor` |
| **상태** | 완료 |
@@ -1747,24 +1747,24 @@ WBS-10.1 (기반 결함 수정)
---
#### WBS-10.11 Blazor 및 API-First 개발 가이드라인 수립
#### WBS-10.11 Razor Pages 개발 가이드라인 수립
| 항목 | 내용 |
|------|------|
| **작업** | [Temp/CLAUDE.md](file:///C:/Temp/data_feed/Temp/CLAUDE.md)의 API-First 아키텍처, 이중 토큰 인증, SignalR, MudBlazor UX 패턴Blazor 관련 핵심 개발 지침을 [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md)에 차용/반영 |
| **작업** | [Temp/CLAUDE.md](file:///C:/Temp/data_feed/Temp/CLAUDE.md)의 API-First 아키텍처, 이중 토큰 인증, SignalR, Tabler UX 및 CSRF 방어Razor Pages 관련 핵심 개발 지침을 [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md)에 차용/반영 |
| **현재 상태** | [Temp/CLAUDE.md](file:///C:/Temp/data_feed/Temp/CLAUDE.md) 분석 후 [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md)의 Section 5b로 이식 완료 |
| **담당 파일** | [docs/ROADMAP_WBS.md](file:///C:/Temp/data_feed/docs/ROADMAP_WBS.md), [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md) |
| **상태** | 완료 |
| 세부 WBS | 작업 | 성공 판단 데이터 |
|----------|------|------------------|
| 10.11.1 | CLAUDE.md의 Blazor 참조 지침 핵심사항 추출 및 공식화 | [Temp/CLAUDE.md](file:///C:/Temp/data_feed/Temp/CLAUDE.md) 분석 내역 도출 |
| 10.11.2 | AGENTS.md에 Blazor 개발 규칙 5b 섹션 신설 및 적용 | [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md) 내 5b 섹션 코드 삽입 완료 |
| 10.11.1 | CLAUDE.md 및 실제 적용된 Razor Pages 지침 핵심사항 추출 및 공식화 | [Temp/CLAUDE.md](file:///C:/Temp/data_feed/Temp/CLAUDE.md) 분석 내역 도출 |
| 10.11.2 | AGENTS.md에 Razor Pages 개발 규칙 5b 섹션 신설 및 적용 | [AGENTS.md](file:///C:/Temp/data_feed/AGENTS.md) 내 5b 섹션 코드 삽입 완료 |
| 10.11.3 | 스펙 검증 스크립트 실행을 통한 구성 유효성 검증 | `validate_specs.py` 무오류 통과 |
**성공 하네스 (데이터 기준)**:
```
검증: python tools/validate_specs.py → EXIT 0
검증: C:\Temp\data_feed\AGENTS.md 내에 '5b. Blazor & API-First 개발 규칙' 및 'IXxxBrowserClient', 'TokenRefreshHandler' 키워드 존재
검증: C:\Temp\data_feed\AGENTS.md 내에 '5b. Razor Pages 개발 규칙' 및 'IXxxBrowserClient', 'TokenRefreshHandler' 키워드 존재
```
---
@@ -1827,8 +1827,8 @@ WBS-10.1 (기반 결함 수정)
| 10.7 Application 서비스 | 🟠 High | 중간 | 10.1 | 3시간 | 0% |
| 10.8 데이터 수집 오케스트레이터 | 🟡 Medium | 중간 | 10.7 | 4시간 | 0% |
| 10.9 보안 강화 | 🟠 High | 낮음 | 10.1 | 1시간 | 0% |
| 10.10 Blazor 대시보드 고도화 | 🟡 Medium | 중간 | 10.7 | 4시간 | 0% |
| 10.11 Blazor 개발 지침 차용 | 🟢 Low | 낮음 | 없음 | 1시간 | **100%** ✅ (2026-06-29) |
| 10.10 Razor Pages 어드민 대시보드 고도화 | 🟡 Medium | 중간 | 10.7 | 4시간 | 0% |
| 10.11 Razor Pages 개발 지침 수립 | 🟢 Low | 낮음 | 없음 | 1시간 | **100%** ✅ (2026-06-29) |
---