fix: initialize selected runtime for live playout

This commit is contained in:
2026-07-28 20:44:20 +09:00
parent 18d40e892f
commit 818acad646
24 changed files with 906 additions and 391 deletions

View File

@@ -55,7 +55,8 @@ Oracle/MariaDB 조회 계층, 원본 10초 DB 상태 감시, Tornado/K3D 어댑
## Visual Studio 2026에서 실행
상사 PC처럼 기존 코더 자산과 K3D가 설치된 개발 PC에서는 별도 PowerShell 명령을 먼저 실행할
필요가 없습니다.
필요가 없습니다. 솔루션 루트의 `.vsconfig`가 요구하는 **WinUI 애플리케이션 개발** 워크로드가
없으면 Visual Studio의 설치 안내를 먼저 완료하고 Visual Studio를 다시 시작합니다.
1. `MBN_STOCK_WEBVIEW.sln`을 엽니다.
2. 솔루션 구성을 `Debug`, 플랫폼을 `x64`로 선택합니다.
@@ -85,34 +86,42 @@ Tornado2/PGM에 연결하거나 명령을 보내지 않습니다. 출력과 중
- `Cuts`: 실제 실행 자산의 `Cuts` 폴더
- `설정/INI (Res)`: 기존 코더가 사용하는 실제 `Res` 폴더
첫 실행 설정은 두 폴더 안의 파일을 열거·파싱·복사하지 않습니다. 폴더 경로만
첫 실행 설정은 선택한 `Res`의 정확한 `MmoneyCoder.ini`에 Oracle/MariaDB 설정이 모두
있는지 검증합니다. 파일을 다른 위치나 빌드 출력에 복사하지 않으며, 이후 전체 앱은 저장된
`Res\MmoneyCoder.ini`를 매 실행 직접 사용합니다. 두 폴더 경로는
`%LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Config\runtime-folders.local.json`에 저장하고,
같은 공통 부모를 Git 제외 `Directory.Build.local.props`에 기록합니다.
두 폴더는 같은 공통 부모 아래에 나란히 있어야 하며 폴더 이름도 각각 `Cuts`, `Res`여야
합니다. 소스 트리의 오래된 `RES`나 이름이 비슷한 백업 폴더가 아니라 기존 코더가 실제
실행에 사용하던 `bin\Debug\Cuts`, `bin\Debug\Res` 성격의 폴더를 선택합니다.
`설정 시작`PowerShell, `dotnet build`, DB 복사, K3D 검사 또는 Tornado2/PGM 작업을
실행하지 않으므로 즉시 완료되어야 합니다. 전체 앱 빌드는 창을 닫고 누르는 다음 F5에서
진행됩니다. 이때도 `Cuts`는 복사하지 않고 선택한 원래 경로를 직접 사용합니다.
`설정 시작`저장소의 검증된 초기화기를 실행해 `C:\K3DAsyncEngine`의 x64 파일과
Registry64 등록, 지속 K3D pin, `127.0.0.1:30001` Development Live 승인 및 Debug x64
빌드를 한 번에 확인하므로 시간이 걸릴 수 있습니다. 이 과정은 DB 연결, K3D COM 활성화,
Tornado2/PGM 연결이나 송출 명령을 실행하지 않습니다. 성공 뒤 누르는 다음 F5에서는
`Cuts``Res\MmoneyCoder.ini`를 복사하지 않고 선택한 원래 경로를 직접 사용합니다.
Development Live용 DB overlay, K3D pin과 승인 파일이 아직 없는 PC는 별도의
`Initialize-ExistingDevelopmentPc.ps1` 수동 절차를 완료하기 전까지 전체 앱 기동이
차단됩니다. 첫 실행 폴더 저장은 이 보호 설정을 만들거나 변경하지 않습니다.
K3D는 다음 회사 표준 배치만 허용합니다.
- native: `C:\K3DAsyncEngine\DLL\x64\Release\K3DAsyncEngine.dll`
- Interop: `C:\K3DAsyncEngine\Bin\x64\C#\Interop.K3DAsyncEngineLib.dll`
Registry64의 TypeLib, KAEngine, KAEventHandler가 모두 위 native DLL을 가리키지 않거나 파일·
AMD64·해시 검증이 실패하면 설정 완료를 표시하지 않습니다.
초기화가 성공하면 Visual Studio에서 `Debug|x64`, `Legacy Parity App (VS F5)`,
`MBN_STOCK_WEBVIEW.LegacyParityApp - Development Live (Package)`를 선택해 F5로 시작합니다.
앱이나 빌드 출력이 `SourceOnly` 또는 Live 기동 차단이라고 표시되면 송출을 시도하지 말고
Development Live 준비 상태를 확인합니다. 최초 실제 확인은 [개발 PGM 인수 절차](docs/DEVELOPMENT_LIVE_HANDOFF.md)에 따라
`5001` 하나로 진행합니다. Debug와 Release의 일반 실행은 모두 같은 보호된 Live
부트스트랩을 사용합니다. 이 프로필은 보호된 LocalAppData 설정 읽고 상속된
`MBN_STOCK_PLAYOUT_*`·DB 환경 변수를 무시합니다. scene root는 첫 실행에서 저장한 원래
`Cuts` 경로로 고정하며 strict
부트스트랩을 사용합니다. 이 프로필은 보호된 LocalAppData 송출 설정 읽고 상속된
`MBN_STOCK_PLAYOUT_*`·DB 환경 변수를 무시합니다. scene root와 DB INI는 첫 실행에서 저장한
원래 `Cuts`, `Res\MmoneyCoder.ini` 경로로 고정하며 strict
검증이 실패하면 Live 엔진을 만들지 않고 명확한 기동 오류를 표시합니다.
같은 clone에서는 로컬 연결 파일이 Git에 덮어써지지 않으므로 이후에는 `git pull` 후 F5로
확인할 수 있습니다. 저장소를 새 폴더에 다시 clone하거나 자산·DB 폴더 연결이 바뀌면 첫 실행
설정을 다시 진행합니다. K3D DLL이 최초 기준과 달라진 경우에는 경로 저장을 반복해도 자동
설정을 다시 진행합니다. K3D DLL이 최초 기준과 달라진 경우에는 자동 설정을 반복해도 자동
재승인되지 않습니다. 벤더 변경을 독립적으로 검증한 뒤 두 SHA-256을 명시해 수동 교체해야
합니다. pull 뒤 Required 자산 검증이 실패하는 경우에도 F5를 계속 시도하지 말고 설정 오류를
바로잡습니다.
@@ -176,11 +185,12 @@ Release MSIX는 전체 런타임 자산을 필수로 검증합니다. 원본 위
원본 `Res/MmoneyCoder.ini`의 값은 저장소에 복사하지 않았습니다. 전체 자산 Debug 빌드,
소스 전용 빌드, 게시와 MSIX 모두 이 자격증명 파일을 빌드 입력이나 출력으로 사용하지 않습니다.
전체 자산 Debug/MSIX는 `%LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Res\MmoneyCoder.ini` 또는 기존
`database.local.json`을 사용하고, 소스 전용 빌드는 DB 미연결을 강제합니다. 일반 실행에서는
환경 변수가 선택된 파일보다 우선하지만, 검증된 Development Live 프로필은 이 override를
의도적으로 무시하고 위 LocalAppData 파일만 사용합니다. 설정 우선순위, 보안과 실제 DB 스모크 방법은
[DB 운영 가이드](docs/DATABASE.md)에 정리했습니다.
검증된 Development Live는 저장된 `Res` 경로가 있으면 그 폴더의 정확한
`MmoneyCoder.ini`를 매 실행 직접 읽고 DB 환경 변수를 무시합니다. 파일이 없거나 안전·형식
검증에 실패해도 LocalAppData 설정으로 대체하지 않고 앱의 Live 엔진 및 자동 연결을
차단합니다. 아직 선택된 `Res`가 없는 기존 설치에서만 보호된 LocalAppData INI→JSON 순서를
사용하며, 소스 전용 빌드는 DB 미연결을 강제합니다. 설정 우선순위, 보안과 실제 DB 스모크
방법은 [DB 운영 가이드](docs/DATABASE.md)에 정리했습니다.
MSIX 설치 폴더는 읽기 전용입니다. 전체 자산 빌드에서는 읽기 전용 원본 `Cuts` 179개와 허용된
UI용 `Res` 파일이 실행 출력·게시·MSIX에 포함되지만, DB 자격증명 INI·백업·인증서·벤더 DLL은