feat: consolidate legacy parity migration baseline
This commit is contained in:
38
README.md
38
README.md
@@ -2,12 +2,15 @@
|
||||
|
||||
기존 `MBN_STOCK_N` WinForms 애플리케이션을 단계적으로 대체하기 위한 Windows 데스크톱 프로젝트입니다.
|
||||
|
||||
> 현재 개발 경로는 둘로 분리되어 있습니다. 아래의 기존 구현 범위는 비교용 루트 프로토타입을 설명합니다. 고객 요구처럼 원본 UI와 클릭 이벤트를 먼저 1:1 이관하는 새 병렬 앱의 범위와 실행 방법은 [원본 호환 마이그레이션 기준선](docs/LEGACY_PARITY_REBASELINE.md)을 참조하세요.
|
||||
> 현재 유일한 개발·실행 대상은
|
||||
> [`src/MBN_STOCK_WEBVIEW.LegacyParityApp`](src/MBN_STOCK_WEBVIEW.LegacyParityApp)입니다.
|
||||
> Visual Studio F5, 개발 MSIX, 신규 기능과 회귀 검증은 모두 이 앱을 기준으로 합니다.
|
||||
|
||||
원본 이벤트를 코드 단위로 다시 검증하는 현재 작업 순서와 완료 범위는
|
||||
[동작 동등성 작업 기록](docs/LEGACY_BEHAVIOR_PARITY_WORKLOG.md)을 기준으로 판단합니다.
|
||||
2026-07-18의 실행 파일 옆 `Cuts/Res` 배치, 실제 DB, Release x64 MSIX와 UI-only 결과는
|
||||
[Cuts/Res 실행 구조 검증](docs/LEGACY_RUNTIME_ASSET_VALIDATION_20260718.md)에 기록했습니다.
|
||||
루트 `MBN_STOCK_WEBVIEW.csproj`와 루트 `MainWindow*`/`Web`은 이전 비교 프로토타입입니다.
|
||||
현행 솔루션과 기본 F5 대상에서는 제외하되, 연결된 과거 비교 테스트를 별도로 정리할 때까지
|
||||
참고 소스로 보존합니다. 현재 완료·제한·외부 결정 범위는
|
||||
[이관 현재 기준선](docs/MIGRATION_STATUS.md)이 유일한 우선 문서이며, 문서별 용도는
|
||||
[문서 안내](docs/README.md)에서 확인할 수 있습니다.
|
||||
|
||||
현재 기준 기술 스택은 다음과 같습니다.
|
||||
|
||||
@@ -38,25 +41,16 @@
|
||||
- 기본 `DryRun`, Test 전용 인스턴스·채널·씬 allowlist 및 Live 이중 승인 안전 게이트
|
||||
- MSIX 패키지 매니페스트와 x64 게시 프로필
|
||||
|
||||
Oracle/MariaDB 조회 계층과 Tornado/K3D 어댑터의 코드·계약·자동 검증은 구현했습니다. 이는 운영 Oracle 쓰기나 35개 장면 전체의 실제 PGM 동등성이 끝났다는 뜻이 아닙니다. 앱과 Release 패키지의 기본 모드는 계속 `DryRun`이며 Live allowlist, 명령 예산, callback/`OutcomeUnknown` 게이트를 완화하지 않습니다. 이 개발 PC의 Tornado2/PGM 마이그레이션 검증은 사용자가 2026-07-18에 반복 승인 없이 진행하도록 상시 허용했으며, 적용 범위와 중단 조건은 [개발 환경 상시 권한](docs/DEVELOPMENT_ENVIRONMENT_AUTHORIZATION.md)에 기록했습니다. DB 설정은 [DB 운영 가이드](docs/DATABASE.md), 송출 설정·실제 검증 증거·롤백은 [Tornado/K3D 운영 가이드](docs/PLAYOUT.md), 원본 Scene/PageN 대조는 [송출 흐름 분석](docs/LEGACY_PLAYOUT_ANALYSIS.md), 장면별 현황은 [35개 Scene 동등성 매트릭스](docs/SCENE_EQUIVALENCE.md), 전체 412개 실행 action과 전용 편집 화면은 [운영자 UI 동등성 인벤토리](docs/OPERATOR_UI_PARITY.md)를 참고하세요. 재감사에서 확인한 미적용·적용 중·외부자산 필요 항목은 [원본 기능 재감사 기준표](docs/LEGACY_FEATURE_AUDIT.md)가 최종 상태 기준입니다.
|
||||
Oracle/MariaDB 조회 계층, 원본 10초 DB 상태 감시, Tornado/K3D 어댑터와 35개 scene 계약을 구현했습니다. 2026-07-18 현재 개발 MSIX의 전체 UI/DB 검증과 실제 PGM runtime route 32/34가 끝났으며, 남은 두 route는 원본에도 없는 `s5006`/`s6001` 영상 자산 때문에 fail closed 상태입니다. 앱과 Release 패키지의 기본 모드는 계속 `DryRun`이며 Live allowlist, 명령 예산, callback/`OutcomeUnknown` 게이트를 완화하지 않습니다. 이 개발 PC의 Tornado2/PGM 마이그레이션 검증은 사용자가 반복 승인 없이 진행하도록 상시 허용했으며, 적용 범위와 중단 조건은 [개발 환경 상시 권한](docs/DEVELOPMENT_ENVIRONMENT_AUTHORIZATION.md)에 기록했습니다. DB 설정은 [DB 운영 가이드](docs/DATABASE.md), 송출 설정·실제 검증 증거·롤백은 [Tornado/K3D 운영 가이드](docs/PLAYOUT.md), 원본 Scene/PageN 대조는 [송출 흐름 분석](docs/LEGACY_PLAYOUT_ANALYSIS.md), 장면별 현황은 [35개 Scene 동등성 매트릭스](docs/SCENE_EQUIVALENCE.md), 전체 412개 실행 action과 전용 편집 화면은 [운영자 UI 동등성 인벤토리](docs/OPERATOR_UI_PARITY.md)를 참고하세요.
|
||||
|
||||
35개 Scene/PageN 런타임과 원본 MainForm·UC1~UC7·GraphE·FSell·VIList·PList·AList·ThemeA·EList의 화면·bridge 계약은 WinUI 3/WebView2에 연결했습니다. 412개 고정 실행 action은 폐쇄형 매트릭스로 고정하며, 수동 재무·순매도·VI·테마·전문가·이름 있는 플레이리스트는 저장 후 재조회와 신뢰 검증이 끝나기 전에는 PREPARE할 수 없습니다. 2026-07-18 실데이터 재검증에서 PList 2,213행은 한국어 7필드 무손상과 typed persistence가 모두 일치했고, 1,581행이 현재 selection으로 복원되며 632행은 명시적 사유로 차단됐습니다. 이 복원 수치는 DB 상태에 따라 달라질 수 있습니다. `종목비교.dat` 8쌍은 설치 패키지에서 1회 이전·재시작 영속성까지 확인했습니다. 이 수치는 scene data·asset·PREPARE·PGM 성공이 아니며, 운영 DB write와 승인된 `5001`/`5074` 밖의 실제 PGM 확인은 여전히 미검증입니다.
|
||||
35개 Scene/PageN 런타임과 원본 MainForm·UC1~UC7·GraphE·FSell·VIList·PList·AList·ThemeA·EList의 화면·bridge 계약은 WinUI 3/WebView2에 연결했습니다. 실제 Windows 입력으로 검색·키보드·컷/플레이리스트 drag·PList 모달과 화면별 버튼, 개발 DB create/save→fresh readback→delete를 검증했고 cleanup까지 확인했습니다. PList 2,213행 가운데 1,581행은 즉시 복원되고 GraphE fresh read로 22행을 추가 복원할 수 있으며, 최종 610행은 식별정보 부족으로 추정 없이 차단합니다. `5077` 6행 20페이지 전체, 마지막 페이지, `5088` 12행 전환과 장기 실행 뒤 unload도 실제 PGM에서 확인했습니다. 고객 배포용 서명 MSIX, 외부 영상·배경 자산, 610행의 DBA 결정은 아직 남아 있습니다.
|
||||
|
||||
## 과거 1.0.5 검증 기준선 (2026-07-12)
|
||||
## 과거 검증 자료
|
||||
|
||||
아래 항목은 당시 `1.0.5` 패키지와 고정된 일회성 Gate 회차의 역사적 증거다.
|
||||
현재 `Cuts/Res` 실행 폴더 배치를 포함해 다시 만든 패키지의 파일 수·해시나 권한으로
|
||||
재사용하지 않는다. 현행 자산 배치 규약은 [원본 Cuts/Res 런타임 배치](docs/LEGACY_RUNTIME_ASSETS.md),
|
||||
개발 Tornado2/PGM 작업 권한은 [개발 환경 상시 권한](docs/DEVELOPMENT_ENVIRONMENT_AUTHORIZATION.md)을
|
||||
따른다.
|
||||
|
||||
- 현재 마이그레이션 소스에서 Core 1,383개, Infrastructure 173개, Playout 393개가 Debug/Release x64에서 각각 모두 통과했다. 구성별 1,949개, 두 구성 합계 3,898개이며 실패·skip은 0건이다. Web 구문 27개와 테스트 415/415, 원본 scene 기준선 35/35도 통과했다.
|
||||
- 원본 `Cuts` 기준 active alias 45개의 `.t2s`는 missing/unsafe 0건이고 종속 asset 23개는 unsafe 0건, missing 14건이다. 누락은 `s5006` 큐브 배경 1개와 `s6001` 국가별 영상 13개다. 실제 Oracle 21c/MariaDB read-only 스모크는 `삼성` 검색과 필수 loader 33/33, 전체 query 58건을 통과했지만 DB→DTO→mutation 검증 범위다.
|
||||
- clean source commit `df60e09`에서 Release x64 signed MSIX를 새로 빌드했다. `1.0.5.0` SHA-256은 `1B0BA713619CC3BD7CB3E03D78FD1EB1CEAF49E7D50F5C00DDFB483917BA5437`이며, `CN=Comtrophy` SignTool 검증, 290개 패키지 항목, Web 33개 byte-for-byte 일치, 금지 자산·비밀값 0건을 확인했다.
|
||||
- 설치본 `Wickedness.MBNStockWebView_1.0.5.0_x64__qbv3jkvsn3aj0`을 `C:\Program Files\WindowsApps`의 실제 package context에서 실행했다. 실제 `삼성전자` 검색과 `1열판기본_현재가` 5001 구성, PREPARE → TAKE IN → 자동 refresh 정확히 1회 → `CAPPED · 1/1` → 3.5초 무변화 → TAKE OUT/IDLE을 DryRun에서 확인했다. Oracle/MariaDB는 2/2 정상이고 KTAP 시도·NEXT·DB write·`OutcomeUnknown`은 0건이다. 상세 증거는 [1.0.5 패키지 감사](docs/RELEASE_1_0_5_AUDIT.md)에 있다.
|
||||
- 실제 Tornado2 검증은 고정 계획 `55C7755C2F874B4B012239117D4AB717BBCE194E7DCC8DA9B0E40D094FF8CA19`의 `MBNWEB-20260711-H` 한 회차로 제한했다. PGM에서 `5001`과 `5074` page 1/page 2를 확인한 뒤 TAKE OUT의 검은 화면을 확인했다. Network Monitoring의 정확한 합계는 `SCENE_PREPARE 5001 = 3`, `SCENE_PREPARE 5074 = 2`, `PLAY = 4`, `SCENE_PLAYED = 4`, `FAILURE = 0`, `ERROR = 0`, retry `0`이며 최종 `OutcomeUnknown = false`다.
|
||||
- 이후 Round I는 자동 refresh 최대 1회를 넘어 9회가 실행되어 `FAIL` 처리했다. 1.0.5의 native cap은 package-context DryRun을 통과했지만 실제 Tornado 재검증 전이므로 Round I 승인이나 Round H 패키지 증거를 새 패키지에 재사용하지 않는다.
|
||||
- 실제 Tornado 증거는 승인된 `5001`/`5074`에만 적용한다. 나머지를 포함한 35개 builder, 45개 active alias, 5·6·12행 PageN 경계와 마지막 페이지는 자동 매트릭스 테스트로 검증했다. `s5025`는 Git/MSIX 밖의 승인된 trusted CP949 입력 파일이 있어야 하는 운영 전제조건을 유지한다.
|
||||
`1.0.5` 패키지와 날짜가 붙은 Gate·Release·Live 문서는 당시 실행의 역사적 증거입니다.
|
||||
현행 완료 판정이나 새 패키지 승인으로 재사용하지 않습니다. 당시 상세 내용은
|
||||
[1.0.5 패키지 감사](docs/RELEASE_1_0_5_AUDIT.md)와
|
||||
[동작 동등성 작업 기록](docs/LEGACY_BEHAVIOR_PARITY_WORKLOG.md)에 보존되어 있습니다.
|
||||
|
||||
## Visual Studio 2026에서 실행
|
||||
|
||||
@@ -118,7 +112,7 @@ MSIX 설치 폴더는 읽기 전용입니다. 빌드 시 읽기 전용 원본 `C
|
||||
```text
|
||||
src/MBN_STOCK_WEBVIEW.LegacyParityApp/ WinUI 3 / WebView2 / 원본 동작 호환 MSIX 앱
|
||||
MainWindow*.cs, Web/ 네이티브 권위·보안 경계와 로컬 운영 UI
|
||||
MBN_STOCK_WEBVIEW.csproj 이전 프로토타입 앱(기본 F5 대상 아님)
|
||||
MBN_STOCK_WEBVIEW.csproj 이전 프로토타입 앱(솔루션/F5 제외, 참고용 보존)
|
||||
src/MBN_STOCK_WEBVIEW.Core/ 이관된 데이터 요청 및 공급자 비의존 Core
|
||||
src/MBN_STOCK_WEBVIEW.Infrastructure/ Oracle/MariaDB 공급자·설정·복원력·health
|
||||
src/MBN_STOCK_WEBVIEW.Playout/ x64 Tornado/K3D STA·COM 어댑터와 안전 게이트
|
||||
|
||||
Reference in New Issue
Block a user