Files
MBN_STOCK_WEBVIEW/docs/LEGACY_RUNTIME_ASSET_VALIDATION_20260718.md

4.9 KiB

[과거 기록] Cuts/Res 실행 구조 검증 (2026-07-18)

이 문서는 2026-07-18 당시 빌드와 패키지를 검증한 역사적 증거이며 현행 배치 계약이 아니다. 현재 Debug/Release 출력, 게시와 MSIX에는 MmoneyCoder.ini를 포함하지 않는다. 현행 앱은 첫 실행에서 선택한 원본을 %LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Res\MmoneyCoder.ini 사용자 전용 overlay로만 복사한다. 최신 계약은 원본 Cuts/Res 런타임 배치를 따른다.

적용 결과

읽기 전용 원본은 다음 개발 출력이다.

C:\Users\MD\source\repos\MBN_STOCK_N\MBN_STOCK_N\bin\Debug

당시 LegacyParityApp은 이 위치의 Cuts와 허용된 Res를 빌드 입력으로 연결했다. 당시 일반 Visual Studio Debug 출력에는 실제 DB용 Res\MmoneyCoder.ini도 실행 파일 옆에 복사했지만, 이 동작은 이후 폐기되었다. 현행 빌드는 위 안내처럼 DB INI를 어떤 빌드 출력에도 넣지 않는다. 원본 저장소의 기존 수정 파일은 변경하지 않았다.

자산 무결성

대상 결과
원본 Cuts 179개 / 222,825,612 bytes
Debug 실행 출력 Cuts 179개, 원본과 파일별 경로·크기·SHA-256 일치
Release MSIX Cuts 179개 / 222,825,612 bytes, 원본과 파일별 경로·크기·SHA-256 일치
Release MSIX Res 허용 목록 34개 / 2,920,725 bytes, 원본과 파일별 크기·SHA-256 일치
당시 Debug 실행 출력 Res UI용 34개 + DB INI 1개(현행 계약에서는 DB INI 제외)
필수 장면 Cuts\5001.t2s 포함

Release x64 개발 MSIX 결과는 다음과 같다.

항목
패키지 MBN_STOCK_WEBVIEW.LegacyParityApp_0.1.0.0_x64.msix
크기 61,239,787 bytes
SHA-256 CDCC7C2FB9DA66A631473025C187B427FF84E073EB6F174D819DE327E58BAF7B
전체 파일 291개
빌드 clean Release x64, 경고 0 / 오류 0

패키지, build.appxrecipe, package.map.txt, layout resfiles와 Release 실행 레이아웃에서 MmoneyCoder.ini, 복사본, .bak, 압축본, afiedt, 인증서·개인키·라이선스 파일과 K3D 벤더 파일은 모두 0건이다. 설치된 SDK 10.0.19041의 MakeAppx에는 validate 명령이 없어 해당 부가 명령은 사용할 수 없었고, 패키지 생성·BlockMap 및 파일별 payload 감사와는 별개다.

당시 추가 감사에서 일반 출력의 DB INI가 Clean 뒤 남을 가능성과 패키지 빌드가 불필요하게 원본 DB INI를 요구하는 문제를 발견해 보완했다. 이 문단의 “일반 빌드”는 2026-07-18 회차를 가리킨다. 현행 일반 빌드는 DB INI를 출력에 복사하지 않으며, MSIX 생성·게시 경로도 원본 DB INI를 포함하지 않는다.

런타임 검증

  • 실제 원본 UI INI를 사용한 조합 검사: 경고 0
  • 해외/환율/지수 항목: 78/46/204개와 section·row 순서 일치
  • 업종 코스피/코스닥: 각각 22개와 순서 일치
  • 종목비교: 고정 대상 24개 + action 9개 일치
  • 실제 원본 DB INI 파싱과 Oracle/MariaDB read-only smoke 통과
  • 필수 scene selector 33/33 및 전체 query 58개 통과
  • Debug x64 .NET 테스트: 2,760/2,760 통과
  • Release x64 .NET 테스트: 2,760/2,760 통과
  • Visual Studio 18.7.4(Visual Studio 2026) MSBuild로 LegacyParityApp Debug/Release x64 빌드 통과
  • Legacy Web shell 테스트: 34/34 통과
  • Web playout 테스트: 422/422 통과, scene catalog 35개와 cut coverage fixture 통과
  • Release package-context UI-only smoke: PASS, DRY RUN, input/DB intent/native playout intent 0, Tornado 연결 0, 정상 종료 후 잔류 앱 프로세스 0
  • Release package-context 실제 입력 smoke: PASS; 삼성 검색에서 23개 결과를 표시하고 삼성출판사의 1열판 기본 3개 컷을 플레이리스트에 구성했다. 컷/플레이리스트 키보드, 단일·다중 드래그, 실제 Windows row-header drag와 이름 있는 플레이리스트 대화상자를 포함한 12개 checkpoint가 통과했다. DB write와 playout intent는 0건이었다.

UI-only와 실제 입력 증거는 Git 제외 경로 artifacts\package-ui-only-smokeartifacts\package-input-smoke에 JSON과 화면 캡처로 남긴다. 이 검증은 Release 기본 DryRun을 확인한 것이며 실제 Tornado2/PGM 명령을 보내지 않았다.

남아 있는 원본 자산 전제조건

현재 원본 Cuts\Video가 비어 있어 s5006의 큐브 배경 1개와 s6001 국가별 영상 13개는 이 배치만으로 제공되지 않는다. 일부 기본/스튜디오 .vrv 배경도 원본 제작 자산이 필요하다. 임의 파일로 대체하지 않으며 제공 전까지 해당 자산을 요구하는 action의 preflight만 명시적으로 차단해야 한다. s6001의 영상 비의존 두바이유·WTI·브렌트유·금 4 action은 별도 최신 회차에서 실제 PGM 검증을 완료했다.