fix: complete legacy operator parity workflows

This commit is contained in:
2026-07-23 00:54:31 +09:00
parent 939c252d23
commit cf117de144
25 changed files with 2430 additions and 223 deletions

View File

@@ -16,15 +16,16 @@
| 원본 inventory와 hash 기준선 | 완료 | 35/35 builder, 원본 기준선 스크립트 35/35 |
| DTO와 mutation builder | 완료 | registry가 정확히 35개 builder를 발견하고 catalog와 1:1 대조 |
| loader와 runtime route | 완료 | MainForm 도달 가능 builder 34개, active alias 45개를 fail-closed route로 등록; `s8086`은 원본과 같이 무alias 진단 전용 |
| 자동 테스트 | 완료, 최종 합계 갱신 대기 | 마지막 전체 .NET solution 3,115/3,115, 별도 LegacyParityWeb 127/127, WebPlayout JavaScript 424/424 통과. 그 뒤 즉시 선택·PROGRAM enabled·빈 검색·설정·비교 import 및 s6001 staged workflow의 focused/static 검증도 통과했으며, 전체 solution 최종 합계는 재실행 뒤 갱신 |
| 개발 MSIX UI/DB | **직전 패키지 PASS · 최신 코드 물리 재검증 대기** | 직전 등록 AppX에서 실제 Windows 입력으로 UC1~UC7, GraphE, FSell, VIList, ThemeA, EList, PList 모달, 검색·키보드·drag와 개발 DB 저장→fresh readback→delete/absence를 검증하고 cleanup 완료. 이후 교정 사항과 설정/비교 local-state를 포함한 최신 AppX 회차는 실행 전 |
| 자동 테스트 | 완료 | Release x64 전체 .NET solution 3,182/3,182, 별도 LegacyParityWeb 150/150, WebPlayout JavaScript 424/424, 원본 scene 기준선 35/35와 staged PGM 정적 계약이 모두 실패 0으로 통과 |
| 개발 MSIX UI/DB | **최신 패키지 실측 PASS** | 최신 등록 AppX에서 실제 Windows 입력으로 read-only 84, DryRun 108, PList 106, PROGRAM 재생목록 65, GraphE 501, ThemeA/EList catalog 299, UC1~UC7·FSell·VIList screens 675, 합계 1,838입력을 검증했다. DB create/save→fresh readback→delete/absence, cleanup, 설정 폴더 picker 취소와 비교쌍 1+8 병합/재실행 추가 0도 PASS이며 warning·blocked·state violation은 0이다. |
| 고객 배포 MSIX | 현재 범위에서 보류 | 현재 결과는 unsigned 개발 패키지. 고객용 version·Publisher·서명 인증서·업데이트와 새 PC 로컬 설정 배포는 사용자가 재개할 때 결정 |
| 실제 DB read→DTO→mutation smoke | 완료 | 34개 도달 가능 builder의 data route 통과: 33개 Oracle/MariaDB loader와 `s5025` trusted 외부 CP949 파일. 무alias `s8086` diagnostic과 NXT restore audit를 포함한 실제 Oracle/MariaDB query 58건이 성공했다. 종속 asset 또는 PGM 준비 상태는 이 행의 범위가 아니다. |
| 종속 asset preflight | **필수 통과 · optional 외부자산 14개 제한** | 설정 Cuts root는 active `.t2s` alias 45개와 필수 built-in asset 9개를 모두 요구한다. `s5006``Video\큐브배경.vrv``s6001` 국가 영상 13개만 optional missing으로 수용하며 관련 action만 fail closed한다. 빈 파일·root 탈출·reparse·중간 junction 검사는 유지한다. |
| 이번 마이그레이션의 실제 Tornado2/PGM | **32/34 runtime route 최신 실측 · s6001 4-action 대기** | 최신 `LATEST-CORE-01` 6/6, `THIRTY-02`+`RECOVERY8001-01`+`THIRTY20-29-01` 30 route 30/30, 최신 `LATEST-PAGED-04` 24/24를 실제 PGM에서 확인했다. 5077 6행 1/20→20/20, 5088 12행 1/20 전환, 이전 scene unload와 최종 TAKE OUT/IDLE도 포함한다. `s6001` 영상 비의존 4 action/18-stage workflow는 구현·static PASS이나 실제 PGM은 실행 전이다. |
| 이번 마이그레이션의 실제 Tornado2/PGM | **33/34 runtime route code 최신 실측** | 최신 `LATEST-CORE-01` 6/6, 30 route 30/30, `LATEST-PAGED-04` 24/24`S6001-04` 18/18을 실제 PGM에서 확인했다. `s6001`은 영상 비의존 두바이유·WTI·브렌트유·금 4 action 범위이며, 국가 영상 13 action은 계속 자산 차단이다. 각 완료 회차의 최종 TAKE OUT/UNLOAD/IDLE, retry 0, `OutcomeUnknown=false`를 확인했다. |
2026-07-11 Round H, `CORE5001-05`, `PAGED-01`과 기존 중단 회차는 역사적 증거로
보존한다. 현재 32개 route 및 PageN 판정 기준선은 다음 2026-07-22 staged evidence다.
보존한다. 현재 33개 runtime route code의 승인된 action 범위와 PageN 판정 기준선은 다음
2026-07-22 staged evidence다.
- `MBNWEB-20260722-LATEST-CORE-01`: 6/6. 5001 TAKE IN → 5074 playlist NEXT →
5074 Page NEXT 2/2 → TAKE OUT/IDLE을 확인했다.
@@ -39,17 +40,26 @@
- `MBNWEB-20260722-LATEST-PAGED-04`: 24/24. 5077 page 1/20에서 19회 Page NEXT로
20/20까지 전환하고, playlist NEXT로 5088 page 1/20을 출력한 뒤
TAKE OUT/UNLOAD/IDLE을 확인했다.
- `MBNWEB-20260722-S6001-04`: 18/18. 물리 double-click으로 영상 비의존 4행을 만든 뒤
두바이유·WTI·브렌트유·금마다 activate → TAKE IN → settled PROGRAM → TAKE OUT을
한 번씩 수행하고 최종 IDLE을 확인했다.
자산 비의존 30개 route의 실제 PGM 결과는 모두 성공이며 Network Monitoring
request/success가 일치한다. 완료 기준선의 `FAILURE`, `ERROR`, safety-probe
`blocked`, `violation`, `OutcomeUnknown`은 모두 0이고 명령 retry도 0이다.
staged runner의 authoritative cut inventory는 기존 32개에 `6001`을 추가한 33개다.
`s6001`의 두바이유·WTI·브렌트유·금 action은 필수 built-in
`images\주유기merge.png`, `images\35752913_l.jpg`source/runtime hash로 고정하고
물리 double-click으로 4행을 만든 뒤 action마다 activate→TAKE IN→read-only wait→TAKE OUT을
한 번씩 수행하도록 구현했다. 전체 18 stage와 static audit는 통과했지만, 아직 실제 PGM 회차를
실행하지 않았으므로 `TOR-22` 또는 route 완료로 표기하지 않는다.
`S6001-04`는 필수 built-in `images\주유기merge.png`, `images\35752913_l.jpg`
source/runtime hash로 고정하고 18/18을 완료했다. 합산 LOAD 4, PREPARE 8, PLAY 8,
UNLOAD 4가 성공했고 네 장면의 이미지·단위·제목·수치를 PGM capture로 확인했다.
`6001.t2s`에는 원본 코드가 호출하는 보조 오브젝트 `wonText``pattern`이 없어 최초 송출과
자동 갱신 8회에 `VALUE_SET wonText`, `FACE_COLOR wonText`, `VALUE_SET pattern`이 각각
8회씩 실패했다. Network Monitoring의 24개 `FAILURE`와 이에 딸린 120개 원인 `ERROR` 줄은
이 세 보조 호출뿐이다. 원본 `s6001.cs`도 같은 호출을 하고 빈 `catch`로 무시한다. 필수
`movie`, `unit`, 제목·가격·등락 값과 방향 색, PREPARE/PLAY는 모두 성공했고 실제 화면도
정상이며 safety-probe blocked/violation, retry, `OutcomeUnknown`은 0이다. 따라서 이 제한을
명시한 영상 비의존 4 action 범위만 `TOR-22`로 판정한다.
5077 Page NEXT가 약 65초 동안 완성되지 않는다는 의심은 PGM 결함이 아니다.
19회 Page NEXT는 각각 effect/`Prepare(10)`/`Play(10)`을 한 번씩만 수행했고,
@@ -92,7 +102,7 @@ Mutation 약어는 실제 COM 메서드를 Web 입력에 노출하지 않는 COM
## 자동 테스트 묶음
아래 묶음은 마지막 전체 Core Debug/Release x64 실행에 포함돼 실패 0건으로 통과했다. 이후 변경의 focused 검증도 통과했으며 최종 전체 합계는 재실행 뒤 갱신한다. 모든 행에는 공통으로 `LegacySceneCatalogTests`, `LegacySceneMutationBuilderRegistryTests`, `LegacySceneRuntimeCoverageTests`, `LegacySceneDataSourceRouterTests`가 적용된다.
아래 묶음은 최종 Release x64 전체 solution 3,182/3,182 실행에 포함돼 실패 0건으로 통과했다. 모든 행에는 공통으로 `LegacySceneCatalogTests`, `LegacySceneMutationBuilderRegistryTests`, `LegacySceneRuntimeCoverageTests`, `LegacySceneDataSourceRouterTests`가 적용된다.
| 코드 | 테스트 파일 |
|---|---|
@@ -138,7 +148,7 @@ Mutation 약어는 실제 COM 메서드를 Web 입력에 노출하지 않는 COM
| `s50860` / `50860` / — | 국내·해외 지수/종목/업종 line 시계열과 path-shape | `S50860SceneMutationBuilder``S50860SceneDataLoader``ComparisonAndYieldLegacyRequestResolver` | `V, Vis, C, Pos, Shape` | `T-COMP` 통과 | `DB-P` | `TOR-22` |
| `s5087` / `5087` / — | 두 국내 종목 candle·수익률 비교와 두 line shape | `S5087SceneMutationBuilder``S5087SceneDataLoader``ComparisonAndYieldLegacyRequestResolver` | `V, Vis, Pos, Shape` | `T-COMP` 통과 | `DB-P` | `TOR-22` |
| `s5088` / `5088` / 12 | Oracle/MariaDB/DataManager 계열의 최대 12행 시세·수익률 목록 | `S5088SceneMutationBuilder``S5088SceneDataLoader` → typed paged 직접 route | `V, Vis, A` | `T-PAGED` 통과 | `DB-P` | `TOR-22` (5077 뒤 1/20) |
| `s6001` / `6001` / — | 해외지수와 유가·금 단일 plate, 연계 이미지·영상/방향 상태 | `S6001SceneMutationBuilder``S6001SceneDataLoader` → closed target 직접 route | `V, A, Vis, C` | `T-PANEL` 통과 | `DB-P`; 유가·금 built-in 이미지 2개 통과, 해외지수 국가별 영상 13개 `ASSET-X` | 유가·금 4 action `TOR-PENDING`; 국가 영상 action `TOR-X` |
| `s6001` / `6001` / — | 해외지수와 유가·금 단일 plate, 연계 이미지·영상/방향 상태 | `S6001SceneMutationBuilder``S6001SceneDataLoader` → closed target 직접 route | `V, A, Vis, C` | `T-PANEL` 통과 | `DB-P`; 유가·금 built-in 이미지 2개 통과, 해외지수 국가별 영상 13개 `ASSET-X` | 유가·금 4 action `TOR-22` (보조 `wonText`/`pattern` 누락 로그 제한); 국가 영상 action `TOR-X` |
| `s6067` / `6067` / — | 기관 순매수 grid와 부호 색상 | `S6067SceneMutationBuilder``S6067SceneDataLoader``LegacyGridMarketSceneRequestResolver` | `V, C` | `T-GRID`, `T-FOUND` 통과 | `DB-P` | `TOR-22` |
| `s8001` / `8001`, `8002` / — | 코스피·코스닥 업종 square chart와 cube 색상 | `S8001SceneMutationBuilder``S8001SceneDataLoader``LegacyParameterizedSceneRequestResolver` | `V, C` | `T-PARAM` 통과 | `DB-P` | `TOR-22` |
| `s8003` / `8003` / — | 국내 종목 호가·시세와 매수·매도 잔량 막대 | `S8003SceneMutationBuilder``S8003SceneDataLoader``LegacyGridMarketSceneRequestResolver` | `V, Vis, C, Scale` | `T-GRID` 통과 | `DB-P` | `TOR-22` |
@@ -205,16 +215,16 @@ TAKE IN은 PREPARE 때의 오래된 DTO를 그대로 재생하지 않는다. 원
## 구현 판정과 실제 송출 범위
35개 builder, 45개 active alias, DTO/mutation, 실제 DB read, 5·6·12행 PageN 경계와
마지막 페이지 자동 계약은 완료됐다. 직전 개발 MSIX UI/DB 검증도 PASS지만 이후 UI 교정을
포함한 최신 AppX 물리 회차는 대기 중이다. 실제 PGM은 34개 runtime route 가운데 32개를
검증했다. 최신 `5001`/`5074` 6/6 자산 비의존 30개 route 30/30을 완료했고,
최신 `5077` 20페이지 전체와 `5088` 전환 24/24, retired scene unload 및 최종
TAKE OUT/IDLE을 포함한다.
마지막 페이지 자동 계약은 완료됐다. 최신 개발 MSIX UI/DB·로컬 상태 물리 회차도 PASS다.
실제 PGM은 34개 runtime route code 가운데 33개가 승인된 action 범위의 증거를 갖는다.
최신 `5001`/`5074` 6/6, 자산 비의존 30개 route 30/30, `5077` 20페이지 전체와
`5088` 전환 24/24, `s6001` 영상 비의존 4 action 18/18, retired scene unload
최종 TAKE OUT/IDLE을 포함한다.
이 완료 판정에는 다음 범위 제한이 있다.
1. 실제 PGM 미검증 route는 `s5006``s6001`이다. 다만 `s6001`의 영상 비의존 4 action은
외부자산 없이 검증 가능하며 18-stage workflow의 실제 실행만 남았다.
1. 실제 PGM 미검증 runtime route code는 `s5006`이다. `s6001` route code의 실측 범위는
영상 비의존 4 action뿐이며 국가 영상 13 action은 외부자산 부재로 `TOR-X`다.
2. `s5025`의 trusted 외부 CP949 파일·경로는 Git과 고객 MSIX에 포함하지 않는다.
3. `s5006`의 background video와 `s6001` 해외지수 국가 영상 13개는 승인된 asset root와
preflight가 준비된 뒤에만 실제 송출한다.