106 lines
8.4 KiB
Markdown
106 lines
8.4 KiB
Markdown
# MBN_STOCK_WEBVIEW 이관 현재 기준선
|
|
|
|
기준 시각: 2026-07-20
|
|
|
|
기준 소스: `main` 브랜치의 이 문서 포함 최신 기준선
|
|
|
|
원본: `C:\Users\MD\source\repos\MBN_STOCK_N` (계속 읽기 전용)
|
|
|
|
이 문서는 현재 이관 완료 범위와 남은 차단 항목의 우선 기준이다. 날짜가 더 이른 감사·회차
|
|
문서와 충돌하면 이 문서의 판정을 따른다. 과거 문서는 당시 패키지와 당시 실행 회차의 증거로만
|
|
보존한다.
|
|
|
|
## 활성 기준선
|
|
|
|
- 개발·실행·패키징 대상은 `src/MBN_STOCK_WEBVIEW.LegacyParityApp` 하나다.
|
|
- 루트 `MBN_STOCK_WEBVIEW.csproj`와 루트 `MainWindow*`/`Web`은 이전 비교 프로토타입이다.
|
|
현행 솔루션과 기본 F5에서는 제외했으며, 연결된 과거 비교 테스트 정리 전까지 참고용으로 보존한다.
|
|
- 원본 `MBN_STOCK_N`은 비교 기준으로만 사용하며 계속 읽기 전용이다.
|
|
- 이 문서 외의 작업 기록, 날짜별 감사와 실행 회차 문서는 당시 증거다.
|
|
|
|
## 현재 결론
|
|
|
|
전체 이관은 기능·개발 검증 기준으로 거의 완료됐다. 없는 외부 제작 자산은 관련 두 route만
|
|
fail closed로 제한한 채 진행하고, 고객 배포는 사용자가 다시 결정할 때까지 현재 범위에서 보류한다.
|
|
기존 플레이리스트 610행은 코드 결함이 아니라 과거 identity/현재 DB 식별정보 부족에 따른 외부
|
|
데이터 결정 대기 항목이다.
|
|
|
|
| 범위 | 현재 판정 | 검증 범위 |
|
|
|---|---|---|
|
|
| 원본 Scene 구현 | 완료 | builder 35/35, 실제 운영 runtime route 34개, 무alias 진단 전용 `s8086` 1개 |
|
|
| 원본 DB 연결 상태 감시 | 구현·자동 회귀 완료 | LegacyParityApp 시작 후 10초 간격으로 Oracle/MariaDB 상태를 확인하고 상태 전이 때만 native 로그를 남긴다. 운영자 입력·송출·자동 갱신이 시작되면 진단 조회를 취소하고 DB activity gate를 양보한다. 종료 시 monitor도 취소한다. 실제 DB 서버를 강제로 끊는 장애 주입은 하지 않았다. |
|
|
| 개발 MSIX 전체 UI/DB | 완료 | 실제 Windows 입력으로 UC1~UC7, GraphE, FSell, VIList, ThemeA, EList, PList 모달, 검색·키보드·컷/플레이리스트 drag를 검증했다. `screens` 15 화면/15 데이터·파일 검사, `graphe` 5 화면/12 DB 검사, `catalog` 3 화면/11 DB 검사, PList create→fresh read→delete가 모두 PASS였고 잔여 테스트 데이터는 0이다. 2026-07-20에는 선택 행 기준 NEXT, drag 피드백, 송출 후 컷 선택 표시를 실제 입력으로 재검증했다. |
|
|
| 개발 Tornado2/PGM | **32/34 runtime route 완료** | `5001 → 5074 Page NEXT → TAKE OUT` 재검증과 자산 비의존 30개 route의 LOAD/PREPARE/PLAY/UNLOAD를 실제 PGM에서 확인했다. 30개는 구/신규 프로그램의 동일 저장 편성표 사용자 입력으로도 비교했고, 신규는 실제 PGM 화면 30/30을 보존했다. 확인된 명령은 request/success가 일치하고 `FAILURE=0`, `ERROR=0`, retry 0, `OutcomeUnknown=false`다. |
|
|
| PageN/장기 실행 경계 | 완료 | `5077` 6행을 1/20부터 20/20까지 실제 Page NEXT하고, 마지막 페이지에서 playlist NEXT로 `5088` 12행 1/20으로 전환했다. 이전 scene unload와 최종 TAKE OUT/UNLOAD/IDLE을 확인했다. |
|
|
| 자동 회귀 | 완료 | 최신 .NET solution 2,817/2,817, LegacyWeb 117/117, JavaScript 502/502; 실패·skip 0. Release 빌드 warning 0, error 0 |
|
|
| 고객 배포 MSIX | 현재 범위에서 보류 | 현재 결과는 unsigned 개발 패키지다. 고객용 version, Publisher, 서명 인증서, 업데이트 방식과 새 PC의 DB/Development Live 로컬 설정 배포안은 사용자가 배포 작업을 재개할 때 결정한다. |
|
|
|
|
## 실제 PGM 검증 경계
|
|
|
|
- `5001`과 `5074`는 현재 작업 트리 기준으로 다시 검증했다. 2026-07-11 Round H의 과거 결과에
|
|
의존하지 않는다.
|
|
- 이어서 외부자산에 의존하지 않는 30개 route를 순차 검증했다. 마지막 `5025` TAKE OUT 뒤
|
|
`UNLOAD 1/1`, `FAILURE 0`, `ERROR 0`, 정확한 `IDLE`을 확인했다.
|
|
- 같은 30개를 구 프로그램과 신규 프로그램에서 동일한 저장 편성표 순서와 실제 포인터 입력으로
|
|
각각 실행했다. 신규는 UI 상태 증거 120개와 PROGRAM 직후 PGM 화면 30개를 남겼고,
|
|
장면별 합산은 LOAD 30/30, PREPARE 56/56, PLAY 56/56, UNLOAD 30/30,
|
|
`FAILURE=0`, `ERROR=0`이다. 구 프로그램은 이번 현재 데이터 회차에서 PGM 오류 없는 PROGRAM
|
|
11개, PGM 오류 포함 4개, 데이터·매핑 차단 15개였다. 오류 없는 11개의 mutation 대조에서는
|
|
8개가 동등했고, 2개는 저장 기간 제목 복원 차이, 1개는 베이시스·선물 갱신 누락이었다. 상세 판정은
|
|
[`LEGACY_NEW_PLAYOUT_COMPARISON_20260719.md`](LEGACY_NEW_PLAYOUT_COMPARISON_20260719.md)에 고정했다.
|
|
- `5032`는 authoritative asset에 실제로 존재하지 않는 장식 오브젝트와 `pattern` 자산을 보내지
|
|
않도록 계약을 교정한 뒤 다시 검증했다. 선물 좌·우 plate가 정상 표시되고 관련 명령 실패는 0이다.
|
|
- 최초 `5077` 경계 검증에서 실제 데이터 120건임에도 행의 page count가 `1/1`로 고정되는 결함을
|
|
발견했다. 첫 PREPARE/TAKE IN 전에 전체 PageN 행을 read-only preflight하여 `1/N`을 고정하도록
|
|
수정했고, 이후 `5077` 20페이지 전체와 `5088` 전환을 재검증했다. 결함이 있던 최초 실행 결과는
|
|
성공 증거로 사용하지 않는다.
|
|
- `s5006`과 `s6001`은 asset preflight가 fail closed하므로 PREPARE/PLAY를 보내지 않았다.
|
|
|
|
로컬 상세 증거는 다음 위치에 있다.
|
|
|
|
- [`MBNWEB-20260718-DEV-LIVE-01`](../artifacts/pgm-evidence/MBNWEB-20260718-DEV-LIVE-01)
|
|
- [`MBNWEB-20260718-DEV-LIVE-02`](../artifacts/pgm-evidence/MBNWEB-20260718-DEV-LIVE-02)
|
|
- [`MBNWEB-20260718-DEV-LIVE-05`](../artifacts/pgm-evidence/MBNWEB-20260718-DEV-LIVE-05)
|
|
- [`구/신규 30개 송출 비교`](LEGACY_NEW_PLAYOUT_COMPARISON_20260719.md)
|
|
- [`최종 MSIX 화면/DB PASS`](../artifacts/package-input-smoke/legacy-package-input-20260718T194130241Z.json)
|
|
- [`PList DB PASS`](../artifacts/package-input-smoke/legacy-package-input-20260718T193931554Z.json)
|
|
- [`GraphE DB PASS`](../artifacts/package-input-smoke/legacy-package-input-20260718T194003350Z.json)
|
|
- [`ThemeA/EList DB PASS`](../artifacts/package-input-smoke/legacy-package-input-20260718T194054981Z.json)
|
|
- [`최종 read-only 회귀 PASS`](../artifacts/package-input-smoke/legacy-package-input-20260718T194240167Z.json)
|
|
- [`2026-07-20 실제 입력 보정 PASS`](../artifacts/package-input-smoke/legacy-package-input-20260720T032627652Z.json)
|
|
|
|
`artifacts`의 개발 장비 증거에는 로컬 실행 상태가 포함될 수 있으므로 고객 MSIX나 Git 배포물에
|
|
넣지 않는다.
|
|
|
|
## 현재 코드 작업과 분리된 외부 항목
|
|
|
|
### 1. 제작 자산
|
|
|
|
- `s5006\Video\큐브배경.vrv`
|
|
- `s6001` 국가 영상 13개
|
|
- `배경\기본.vrv`
|
|
- 필요한 스튜디오 `.vrv` 배경 원본
|
|
|
|
현재 authoritative 원본 Cuts에도 없다. 자산 없이 진행한다는 사용자 결정에 따라 제공 전에는
|
|
관련 경로만 안전하게 차단하며, 이는 현재 작업 전체의 차단 사유가 아니다. 나중에 자산을 받으면
|
|
trusted root·빈 파일·reparse·경로 이탈 검사를 통과시킨 뒤 `s5006`/`s6001`을 실제 PGM에서 검증한다.
|
|
|
|
### 2. 기존 플레이리스트 데이터 정합성
|
|
|
|
총 2,213행 가운데 1,581행은 현재 식별자로 즉시 복원할 수 있고, GraphE fresh read로 22행을 더
|
|
복원할 수 있다. 최종 610행은 과거 저장 identity 또는 현재 DB 식별정보가 부족해 차단한다. 이 중
|
|
KRX 테마 493행과 NXT 테마 48행은 DBA의 데이터 정합성 결정이 필요하다. 이름이나 유사 scene으로
|
|
추정 복원하지 않는다.
|
|
|
|
### 3. 고객 배포
|
|
|
|
현재 작업 범위에서는 보류한다. 사용자가 배포를 재개하면
|
|
고객용 version, Publisher, 서명 인증서, 인증서 보관·갱신 절차, 업데이트 방식, 새 PC의 DB 및
|
|
Development Live 로컬 설정 배포 방식이 확정돼야 한다. Release/default `DryRun`, scene/path
|
|
allowlist, vendor hash, STA 직렬화와 대상 identity 검사는 그대로 유지한다.
|
|
|
|
## 완료 조건
|
|
|
|
외부 자산 두 scene의 PGM 검증, 610행에 대한 DBA 결정 또는 명시적 영구 차단 승인, 고객 서명
|
|
MSIX의 clean 설치·업데이트·새 PC 설정 검증이 끝나면 이관을 고객 배포 기준의 완전 완료로 올린다.
|