feat: make LegacyParityApp playout live-only
This commit is contained in:
@@ -11,16 +11,16 @@
|
||||
이 문서는 개발 PC의 Visual Studio 2026에서 `MBN_STOCK_WEBVIEW.LegacyParityApp`을
|
||||
명확한 시작 대상으로 실행하고, 개발 Tornado2에 연결하는 방법을 설명한다.
|
||||
|
||||
저장소의 송출 기본값과 Release 동작은 계속 `DryRun`이다. 개발 Live는 다음 세 조건이
|
||||
동시에 맞는 **Debug 프로세스 한 회차**에서만 기존 Live 게이트를 설정한다.
|
||||
지정 개발 PC의 Debug와 Release 전체 앱은 모두 보호된 `Live`로만 기동한다. 개발 Live는
|
||||
다음 조건이 동시에 맞을 때 기존 Live 게이트를 설정한다.
|
||||
|
||||
1. 시작 인자가 정확히 `--development-live` 하나이다.
|
||||
2. 컴파일된 앱이 Debug 빌드이다.
|
||||
1. 정상 무인자 실행이거나 시작 인자가 정확히 `--development-live` 하나이다.
|
||||
2. 소스 전용 설정 빌드가 아닌 전체 runtime 빌드이다.
|
||||
3. 아래 Git 제외 로컬 승인 파일이 존재하며 엄격한 스키마 검사를 통과한다.
|
||||
|
||||
조건이 하나라도 다르면 환경 변수를 설정하지 않는다. 로컬 파일이 없거나 읽기 권한이
|
||||
없고, JSON 또는 해시 형식이 잘못된 경우에도 시작은 fail-closed로 진행되어 기존
|
||||
`playout.local.json`의 안전 기본인 `DryRun`을 사용한다.
|
||||
없고, JSON 또는 해시 형식이 잘못된 경우에는 전체 앱의 Live 엔진 기동을 차단하고
|
||||
명확한 오류를 표시한다. `DryRun`으로 폴백하지 않는다.
|
||||
|
||||
새 clone처럼 아직 검증된 runtime 연결이 없는 경우의 첫 F5는 예외적으로 소스 전용 설정
|
||||
앱을 연다. 이 프로세스는 `--development-live`를 적용하지 않고 DB와 송출을 모두 차단한다.
|
||||
@@ -29,7 +29,7 @@
|
||||
`dotnet build`, DB 복사, K3D 검사와 Live 승인 발급도 실행하지 않으므로 즉시 완료되어야
|
||||
한다. 설정을 완료한 뒤 창을 닫고 F5를 한 번 더 누르면 전체 앱 빌드가 시작된다.
|
||||
|
||||
기존 유효한 Live 승인 파일이 없는 PC는 두 번째 F5에서도 안전한 `DryRun`을 유지한다.
|
||||
기존 유효한 Live 승인 파일이 없는 PC는 두 번째 F5에서 전체 앱 기동이 차단된다.
|
||||
DB overlay, K3D pin과 Development Live 승인이 필요하면 아래 수동 초기화 절차를 별도로
|
||||
완료한다. 자세한 절차는
|
||||
[개발 PGM 인수 절차](DEVELOPMENT_LIVE_HANDOFF.md#2-기존-자산-보유-pc-clone-후-1회-초기화)를
|
||||
@@ -50,24 +50,22 @@ src\MBN_STOCK_WEBVIEW.LegacyParityApp\MBN_STOCK_WEBVIEW.LegacyParityApp.csproj
|
||||
```
|
||||
|
||||
`Debug|x64`와 `Release|x64`의 MSIX Deploy 대상도 루트 프로토타입이 아니라 이 프로젝트이다. Visual
|
||||
Studio의 시작 드롭다운에는 다음 두 프로필이 표시된다.
|
||||
Studio의 시작 드롭다운에는 다음 프로필 하나만 표시된다.
|
||||
|
||||
| 순서 | 프로필 | 동작 |
|
||||
|---:|---|---|
|
||||
| 1 | `MBN_STOCK_WEBVIEW.LegacyParityApp - Development Live (Package)` | `--development-live`를 전달한다. 유효한 로컬 승인 파일이 있을 때만 Live를 구성한다. |
|
||||
| 2 | `MBN_STOCK_WEBVIEW.LegacyParityApp - Explicit DryRun (Package)` | 개발 Live 인자를 전달하지 않는다. |
|
||||
|
||||
개발 PC에서 Live를 사용할 때는 공유 실행 프로필 `Legacy Parity App (VS F5)`, 구성
|
||||
`Debug`, 플랫폼 `x64`, 첫 번째 Development Live 패키지 프로필을 선택하고 F5를 누른다.
|
||||
DryRun 확인은 두 번째 프로필을 선택한다. 앱은 단일 인스턴스이므로 프로필을 바꿀 때
|
||||
기존 인스턴스를 정상 종료한 뒤 다시 실행해야 한다.
|
||||
개발 PC에서는 공유 실행 프로필 `Legacy Parity App (VS F5)`, 구성 `Debug` 또는 `Release`,
|
||||
플랫폼 `x64`, Development Live 패키지 프로필을 선택하고 F5를 누른다. 앱은 단일
|
||||
인스턴스이므로 구성을 바꿀 때 기존 인스턴스를 정상 종료한 뒤 다시 실행해야 한다.
|
||||
|
||||
패키지된 WinUI 3 full-trust 실행에서는 Visual Studio가 프로세스 명령줄에 인자를 전달해도
|
||||
`LaunchActivatedEventArgs.Arguments`가 빈 문자열일 수 있다. 부트스트랩은 activation 인자가
|
||||
비어 있을 때에만 `Environment.GetCommandLineArgs()`가 정확히 `exe + 인자 1개`인 경우 그
|
||||
하나를 사용한다. 인자가 없거나 둘 이상이면 합치거나 일부를 무시하지 않고 Live 요청을
|
||||
거부한다. Release 빌드는 이 fallback으로 정확한 인자를 얻더라도 Debug-only gate에서
|
||||
승인 파일을 읽지 않고 기존 `DryRun` 설정을 유지한다.
|
||||
비어 있을 때에만 `Environment.GetCommandLineArgs()`를 확인한다. 인자가 없으면 정상 Live
|
||||
실행으로 처리하고, 정확히 `exe + --development-live`이면 호환 Live 실행으로 처리한다.
|
||||
추가 인자가 있으면 합치거나 일부를 무시하지 않고 기동을 거부한다. Release도 Debug와
|
||||
동일한 보호된 승인 파일과 검증을 사용한다.
|
||||
|
||||
## 로컬 승인 파일
|
||||
|
||||
@@ -137,8 +135,8 @@ DryRun 확인은 두 번째 프로필을 선택한다. 앱은 단일 인스턴
|
||||
%LOCALAPPDATA%\MBN_STOCK_WEBVIEW\Config\playout.local.json
|
||||
```
|
||||
|
||||
이 파일의 `mode`는 `DryRun`으로 유지한다. Development Live 부트스트랩이 성공한 해당
|
||||
Debug 프로세스에서만 `MBN_STOCK_PLAYOUT_MODE=Live`를 process scope로 덮어쓴다.
|
||||
이 파일의 `mode`는 `Live`로 유지한다. Development Live 부트스트랩은 Debug와 Release
|
||||
프로세스에서 검증된 Live authorization과 K3D 해시를 process scope로 적용한다.
|
||||
기존 이중 게이트를 유지하기 위해 로컬 설정에는 `trustedLiveOutputEnabled: true`가
|
||||
명시되어야 한다.
|
||||
|
||||
@@ -170,6 +168,5 @@ Debug 프로세스에서만 `MBN_STOCK_PLAYOUT_MODE=Live`를 process scope로
|
||||
`EnvironmentLiveAuthorization`은 `MainWindow`와 `IPlayoutEngine`을 만들 때 값을 한 번만
|
||||
캡처하므로, 부트스트랩은 반드시 `new MainWindow()`보다 먼저 실행된다.
|
||||
|
||||
Release 빌드에서는 `--development-live`가 전달되어도 로컬 승인 파일을 읽지 않고 환경을
|
||||
변경하지 않는다. 이 개발 편의 경로는 기존 운영 Live 승인 경로나 안전 게이트를 대체하지
|
||||
않는다.
|
||||
Release 빌드도 Debug와 같은 로컬 승인 파일을 읽고 같은 안전 게이트를 적용한다. 이는
|
||||
운영/방송 환경의 별도 승인 절차를 대체하지 않는다.
|
||||
|
||||
Reference in New Issue
Block a user