feat: complete legacy parity and modernize operator UI
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 원본 기능 재감사 기준표
|
||||
|
||||
감사 기준일: 2026-07-15
|
||||
현행 판정 갱신: 2026-07-18
|
||||
현행 판정 갱신: 2026-07-22
|
||||
|
||||
> 현재 완료·차단·외부 입력 범위는 [`MIGRATION_STATUS.md`](MIGRATION_STATUS.md)가
|
||||
> 우선한다. 2026-07-15 패키지·연결 설명은 당시 감사 증거로 보존한다.
|
||||
@@ -18,10 +18,23 @@ WebView2에 표시하는 x64 Windows 데스크톱/MSIX 앱이다.
|
||||
|
||||
초기 프로토타입 문서의 “미이관 버튼 disabled”, “Tornado2에 연결하지 않음”, “DB write
|
||||
없음”은 현재 구현 상태가 아니다. 원본 UI 이벤트는 LegacyParityApp → strict bridge →
|
||||
C# workflow로 연결된다. 2026-07-18에는 원본의 마지막 미연결 활성 이벤트였던 10초 DB
|
||||
상태 감시를 연결했고, 개발 MSIX 전체 UI/DB와 실제 PGM runtime route 32/34를 검증했다.
|
||||
미검증 두 route는 원본에도 없는 외부 영상 자산 때문에 fail closed한다. 기본 송출 모드는
|
||||
계속 `DryRun`이다.
|
||||
C# workflow로 연결된다. 2026-07-18에는 Designer가 아닌 `MainForm` 생성자에서 동적으로
|
||||
구독되던 10초 DB 상태 감시를 LegacyParityApp 수명주기에 연결했고, 개발 MSIX 전체 UI/DB와
|
||||
실제 PGM runtime route 32/34를 검증했다.
|
||||
2026-07-21에는 실제 DB의 전체 동적 목록을 다시 대조해 고정 결과 상한, 과도한 문자열 정규화,
|
||||
활성 preview와 원문 편집의 혼용을 제거했다. 기존 행은 목록과 편집 화면에 보존하고, 송출 직전
|
||||
fresh identity·payload 검증은 별도 경계로 유지한다.
|
||||
2026-07-22에는 당시 등록 개발 패키지에서 실제 Windows 입력 여섯 회차를 실행해
|
||||
UC1~UC7 전체 버튼, 350ms double-click, drag, 키보드/검색, DB CRUD·fresh read·cleanup과
|
||||
선택 행 기준 DryRun NEXT를 확인했다. blocked·state violation·warning은 전 회차 0이다.
|
||||
그 뒤 즉시 행 선택, PROGRAM 중 미래 행 Space/전체 enabled 변경, ThemeA/UC6 빈 검색 전체
|
||||
조회, 비교쌍 명시적 import와 설정 폴더 검사를 교정해 자동 검증을 통과했다. 이 변경을 포함한
|
||||
최신 AppX의 실제 물리 입력·DB cleanup·로컬 상태 회차는 아직 재실행 전이다.
|
||||
최신 결합 코드의 Core/Paged는 각각 `LATEST-CORE-01` 6/6과 `LATEST-PAGED-04` 24/24로
|
||||
실제 PGM 재검증을 마쳤다. `s6001` 영상 비의존 4 action/18-stage workflow는 구현·static
|
||||
PASS지만 실제 PGM은 아직 실행하지 않았다. `s5006` 큐브 배경과 `s6001` 국가 영상 13개를
|
||||
쓰는 action은 원본에도 없는 외부 제작 자산 때문에 fail closed한다. 기본 송출 모드는 계속
|
||||
`DryRun`이다.
|
||||
|
||||
## 상태 정의
|
||||
|
||||
@@ -29,7 +42,7 @@ C# workflow로 연결된다. 2026-07-18에는 원본의 마지막 미연결 활
|
||||
|---|---|
|
||||
| `완료` | 현재 LegacyParityApp 코드와 표에 명시한 자동/통합 검증에 반영됨. package/Live 여부는 각 행의 증적 범위로 별도 판정 |
|
||||
| `부분 실측` | 현재 package 또는 Live의 표에 명시한 범위만 실제 확인했으며 scene/PGM 전체 통합으로 확대할 수 없음 |
|
||||
| `현재 빌드 실측 제외` | 구현 경로는 있으나 현재 병렬 변경을 합친 package-context/CDP/PGM 결과를 아직 이 감사의 성공 증거로 채택하지 않음 |
|
||||
| `최종 재검증 대기` | 구현·자동 검증 또는 고정된 이전 실측은 있으나 최신 결합 AppX/PGM의 물리 실행을 아직 성공 증거로 채택하지 않음 |
|
||||
| `외부자산 필요` | 코드로 만들 수 없는 Git/MSIX 밖의 승인 영상·배경이 제공되지 않음 |
|
||||
| `외부 데이터 정합성` | 현재 DB view/data가 원본 규칙의 fresh identity를 공급하지 않아 추정 없이 차단함 |
|
||||
|
||||
@@ -37,30 +50,30 @@ C# workflow로 연결된다. 2026-07-18에는 원본의 마지막 미연결 활
|
||||
|
||||
| ID | 우선순위 | 기능 | 상태 | 현재 판정과 증적 | 남은 경계 |
|
||||
|---|---|---|---|---|---|
|
||||
| LF-001 | P0 | `s6001` 해외지수 영상 | 외부자산 필요 | builder와 trusted asset 검사는 완료. 승인 Cuts에 국가 영상 13개가 없음 | 제공 후 asset preflight와 해당 scene PGM |
|
||||
| LF-002 | P0 | cut/asset coverage | 완료 | active alias 45개 `.t2s` 존재. alias missing/unsafe 0, asset unsafe 0, asset missing 14를 분리 보고 | 누락 자산 자체는 LF-001/LF-003 |
|
||||
| LF-001 | P0 | `s6001` 해외지수/원자재 | 최종 재검증 대기 | 국가 영상 13개 action은 외부자산 필요. 두바이유·WTI·브렌트유·금 4 action은 필수 built-in 이미지 2개를 쓰는 18-stage workflow 구현·static PASS | 영상 비의존 4 action 실제 PGM. 국가 영상 action은 자산 제공 후 별도 PGM |
|
||||
| LF-002 | P0 | cut/asset coverage | 완료 | 설정 Cuts root는 active alias 45개 `.t2s`와 필수 built-in asset 9개를 모두 요구한다. optional 외부 asset 14개 누락은 수용하되 영향 action만 제한하며 빈 파일·reparse·중간 junction·root 이탈은 거부한다 | 누락 자산 자체는 LF-001/LF-003 |
|
||||
| LF-003 | P0 | `s5006` 큐브 배경 | 외부자산 필요 | `Video\큐브배경.vrv` 1개가 승인 Cuts에 없음. builder 누락이 아님 | 제공 후 s5006 DryRun/PGM |
|
||||
| LF-004 | P0 | 실제 개발 DB write | 완료 | GraphE 4 + PList/AList 2 + ThemeA KRX/NXT 2 + EList 1, 총 9개가 create/save→fresh readback→delete→absence PASS, 잔여 0 | 운영 DB write를 뜻하지 않음 |
|
||||
| LF-005 | P0 | 개발 Tornado2/PGM 최종 통합 | 부분 실측 | 5001/5074 재검증과 자산 비의존 30개 route를 실제 PGM에서 순차 검증. 5077 20페이지 전체, 5088 전환, 이전/final unload 포함. `FAILURE=0`, `ERROR=0`, retry 0, `OutcomeUnknown=false` | 외부자산이 없는 s5006/s6001만 제공 후 실제 PGM 필요 |
|
||||
| LF-005 | P0 | 개발 Tornado2/PGM 최종 통합 | 부분 실측 | 최신 `LATEST-CORE-01`의 5001/5074 6/6, 분할 회차의 자산 비의존 30개 route 30/30, 최신 `LATEST-PAGED-04`의 5077 20페이지·5088 전환·이전/final unload 24/24를 실제 PGM에서 확인. `FAILURE=0`, `ERROR=0`, retry 0, `OutcomeUnknown=false` | s6001 영상 비의존 4 action 실제 PGM 대기. s5006과 s6001 국가 영상 action은 외부자산 제공 전 제한 |
|
||||
| LF-006 | P0 | 원본 35 scene | 완료 | 원본 inventory와 source 기준선 35/35, DTO→mutation→runtime matrix 통과 | 모든 scene의 실제 PGM 완료로 확대 해석 금지 |
|
||||
| LF-007 | P0 | PageN/NEXT | 완료 | 자동 테스트와 실제 PGM에서 5077 6행 1/20→20/20, 마지막 페이지, playlist NEXT, 5088 12행 1/20 전환을 확인 | 없음 |
|
||||
| LF-007 | P0 | PageN/NEXT | 완료 | 자동 테스트와 최신 `LATEST-PAGED-04` 실제 PGM에서 5077 6행 1/20→20/20, 마지막 페이지, playlist NEXT, 5088 12행 1/20 전환을 24/24로 확인. `LATEST-CORE-01`의 5074 page 1→2도 6/6 회차에 포함 | 없음 |
|
||||
| LF-008 | P0 | 원클릭 TAKE IN | 완료 | 보이는 TAKE IN/F8 한 번으로 fresh page load 후 PREPARE 1회→TAKE IN 1회. native PREPARE는 진단용으로 유지하되 hidden | unknown에서 재시도 금지 |
|
||||
| LF-009 | P0 | C# 권위/strict bridge | 완료 | Web은 intent만 전송. `LegacyBridgeProtocol` allowlist와 `LegacyOperatorController` snapshot이 DB identity·playlist·scene·송출 상태의 권위 | 새 intent에도 동일 경계 유지 |
|
||||
| LF-010 | P1 | 10개 탭과 action inventory | 완료 | 10탭, fixed 328, 업종 44, 종목 31, 비교 target 24/action 9를 폐쇄형으로 고정 | 동적 DB 행은 별도 검증 |
|
||||
| LF-011 | P1 | UC4/UC6/UC7 클릭 | 완료 | 테마·전문가·거래정지는 원본 단일 클릭. UC4/UC6 행은 fixed tree handler와 독립, stale generation 거부 | 없음 |
|
||||
| LF-012 | P1 | GraphE/FSell/VI | 완료 | GraphE CRUD·찾기·정렬·행 double-click, FSell/VI 확인 시 save+playlist append+close, 취소 경계 이관 | s5025/VI 전용 PGM은 LF-005 |
|
||||
| LF-013 | P1 | PList/AList | 완료 | 목록·생성·save/load/delete·행 double-click 이관, 개발 DB write/readback/cleanup PASS | 기존 blocked raw row는 추정 복원 금지 |
|
||||
| LF-014 | P1 | ThemeA/EList | 완료 | 검색·신규·편집·삭제·종목 구성·Delete key, ThemeA exact-title 중복확인, EList opaque `rowId` drag 재정렬 이관. 실제 UI에서 ThemeA 500건 중복 read와 EList 5행 reorder 확인 | scene PGM은 LF-005 |
|
||||
| LF-015 | P1 | UC5 해외 | 완료 | 해외업종·해외종목·해외지수 조회와 playlist 경로 이관 | s6001 13개 영상은 LF-001 |
|
||||
| LF-016 | P1 | F2/F3 기본 배경 | 외부자산 필요 | sibling background root, picker, background-none와 trusted path 검사는 완료. 이 장비에 `기본.vrv`가 없음 | 제공 전 fail closed |
|
||||
| LF-010 | P1 | 10개 탭과 action inventory | 완료 | 10탭, fixed 328, 업종 44, 종목 31, 비교 target 24/action 9를 폐쇄형으로 고정. 직전 `screens` 회차에서 UC1 leaf와 parent double-click을 실제 입력해 parent section action 수와 native intent 1건을 대조했다 | 동적 DB 행은 별도 검증 |
|
||||
| LF-011 | P1 | UC4/UC6/UC7 클릭 | 최종 재검증 대기 | 테마 1,747개, 전문가 6명/추천 32행, 거래정지 112행을 실제 DB와 대조. 직전 `screens` 회차에서 검색·행 선택·정렬·350ms double-click·모든 action을 실제 입력으로 확인했다. UC6 빈 검색 전체 조회와 클릭 즉시 선택 표시·pending action lock은 자동 검증 완료 | 변경 포함 최신 AppX 물리 입력 |
|
||||
| LF-012 | P1 | GraphE/FSell/VI | 최종 재검증 대기 | GraphE 7,776행 전체 raw 조회·편집·삭제, strict-ready 7,726/송출 보류 50 분리. 기존 이름 기반 GraphE 36행은 36/36 fresh 복원됐다. 직전 `graphe` 491입력과 FSell/VI save+append+close는 PASS. 현재 OperatorData의 개인/외국인/기관/VI발동 4파일은 원본 Data와 length·SHA-256 exact equal이다 | 즉시 선택 교정 포함 최신 AppX 물리 입력. 보류 50행은 fresh PREPARE gate 유지 |
|
||||
| LF-013 | P1 | PList/AList | 최종 재검증 대기 | 목록·생성·save/load/delete·행 double-click 이관, 개발 DB write/readback/cleanup PASS. PROGRAM 중 Space/전체는 원본 의도를 보존하되 이미 진행한 prefix가 아니라 미래 행 enabled만 변경하도록 자동 검증했다 | 변경 포함 최신 AppX 물리 입력 |
|
||||
| LF-014 | P1 | ThemeA/EList | 최종 재검증 대기 | ThemeA 1,747개 전체 조회. 기존 편집은 raw `SB_ITEM` 전체를 읽어 비활성·교차 prefix·동일 순번 중복·경계 공백 제목을 보존한다. EList NULL 매수가 5행도 빈 값으로 보존. ThemeA 빈 검색 전체 조회와 클릭 즉시 선택 표시·pending action lock은 자동 검증 완료 | 변경 포함 최신 AppX 물리 입력. scene PGM은 LF-005 |
|
||||
| LF-015 | P1 | UC5 해외 | 완료 | 해외업종 53개·해외종목 1,474개를 표시하고 이름 없는 16행만 격리. 업종 동명 행은 exact DB tuple로 구분 | s6001 13개 영상은 LF-001 |
|
||||
| LF-016 | P1 | F2/F3 배경 선택 | 완료 | background root picker, background-none와 trusted path 검사를 구현했다. 특정 `기본.vrv`가 없으면 없는 상태로 진행하며 외부자산 14개 집계에 넣지 않는다 | 사용자가 별도 배경을 지정할 때 trusted 검사를 적용 |
|
||||
| LF-017 | P1 | 시스템 종료 확인 | 완료 | 원본 제목 `매일경제TV`, 중립 문구, 예/아니요와 기본 아니요를 유지하며 자동 TAKE OUT/반대 명령 금지 경계를 코드·자동 테스트로 유지 | 현재 Release package-context 회귀는 LF-005와 함께 판정 |
|
||||
| LF-018 | P1 | 원본 비교쌍/수동 파일 | 완료 | `종목비교.dat` 8쌍 1회 import·재시작 marker, FSell 3×5행과 VI 9항목 trusted parser/store 검증 | 원본 파일은 계속 읽기 전용 |
|
||||
| LF-018 | P1 | 원본 비교쌍/수동 파일 | 최종 재검증 대기 | `원본 비교쌍 가져오기`가 trusted 원본 `종목비교.dat` 8쌍을 모두 resolve한 뒤 현재 순서를 보존해 unseen pair만 atomic 병합한다. 현재 OperatorData의 개인/외국인/기관/VI발동 4파일은 원본 bin\Debug\Data와 length·SHA-256 exact equal이며 사용 가능 | 최신 AppX에서 현재 1+원본 8=9, 재실행 추가 0의 실제 로컬 상태 smoke 대기. 원본은 계속 읽기 전용 |
|
||||
| LF-019 | P1 | 실제 DB read→DTO→mutation | 완료 | Oracle/MariaDB 필수 scene selector 33/33, 전체 query 58건 PASS | 외부 asset/PGM 성공과 별도 |
|
||||
| LF-020 | P2 | FarPoint 대체 | 완료 | 실제 개발 MSIX에서 종목 검색·키보드, 컷 다중 drag, 플레이리스트 이동/drag와 focus 경계를 Windows 입력으로 재검증. DOM/C# 회귀도 유지 | 활성 Print/Excel export는 원본에도 없음 |
|
||||
| LF-020 | P2 | FarPoint 대체 | 최종 재검증 대기 | 직전 등록 패키지에서 종목 검색·키보드, 컷 다중 drag, 플레이리스트 이동/drag, drag feedback, 송출 뒤 컷 선택 표시와 focus/IME draft 보존을 Windows 입력으로 검증했다. 시스템 double-click 시간(이 장비 500ms)을 반영해 350ms 입력도 한 동작으로 처리한다. 이후 GraphE/ThemeA/비교/VI의 즉시 선택 표시와 선택 의존 action pending lock을 교정해 자동 검증했다 | 변경 포함 최신 AppX 물리 입력. 활성 Print/Excel export는 원본에도 없음 |
|
||||
| LF-021 | P2 | 패키지 단일 인스턴스·모달 격리 | 완료 | 두 번째 activation, child modal Escape, 전역 키 격리, Tab trap, focus 복귀와 PList pending close lock을 자동 검증하고 PList 모달을 실제 입력으로 재검증 | 고객 서명 MSIX의 clean PC 설치 검증은 배포 단계 |
|
||||
| LF-022 | P2 | 영구 운영 로그/bridge 오류 | 완료 | bounded/redacted log와 toast, malformed payload가 송출 상태를 바꾸지 않음 | authoritative Network Monitoring과 함께 판독 |
|
||||
| LF-023 | P1 | NXT 저장 playlist restore | 외부 데이터 정합성 | stale code를 제목/current identity로 재검증하는 닫힌 경로는 완료. 현재 `v_all_stock` 결과가 비어 preview를 fail closed | DBA/data 정합성 없이는 direct-table 추정 금지 |
|
||||
| LF-024 | P0 | Designer 이벤트 전수 감사 | 완료 | 원본 Designer 구독 **186개**, 화면별 고유 핸들러 **171개** 전수 분류. 유일하게 남았던 활성 `timerAliveChecker`의 10초 DB 끊김·복구 감시와 전이 로그를 LegacyParityApp 수명주기에 연결 | 상세 줄 단위 근거는 `LEGACY_DESIGNER_EVENT_PARITY_AUDIT.md` |
|
||||
| LF-024 | P0 | Designer/동적 이벤트 전수 감사 | 완료 | 원본 Designer 구독 **186개**, 화면별 고유 핸들러 **171개** 전수 분류. Designer 밖에서 `MainForm` 생성자가 동적으로 구독하던 `timerAliveChecker`의 10초 DB 끊김·복구 감시와 전이 로그도 LegacyParityApp 수명주기에 연결 | 상세 줄 단위 근거는 `LEGACY_DESIGNER_EVENT_PARITY_AUDIT.md` |
|
||||
| LF-025 | P0 | VS Development Live 시작 구성 | 완료 | `.slnLaunch`와 패키지 프로필이 LegacyParityApp을 시작 대상으로 고정. 실제 Release에서 `--development-live`가 무시돼 DryRun, TCP/Network 변경 0임을 확인 | Live는 exact argument + Debug + strict local authorization을 계속 요구 |
|
||||
|
||||
## 이벤트·drag 감사 상세
|
||||
@@ -128,7 +141,68 @@ write는 자동 재시도하지 않는다. `OutcomeUnknown`이면 cleanup mutati
|
||||
보내지 않는 구현·테스트 경계를 유지한다. 이 결과는 개발 DB 검증이며 운영 DB에 임의 쓰기를
|
||||
허용하거나 수행했다는 뜻이 아니다.
|
||||
|
||||
## 기존 PLAY_LIST read-only 재분류
|
||||
## 직전 등록 패키지 실제 입력 증거 (2026-07-22)
|
||||
|
||||
당시 등록된 Development Mode AppX의 Web 자산·핵심 DLL을 당시 빌드와 hash 대조한 뒤 실제
|
||||
Windows 포인터·키보드 입력으로 다음 회차를 실행했다. 여섯 회차 모두 `PASS`였고
|
||||
blocked outbound, state violation, warning은 각각 0이었다. DB 쓰기 회차는 승인된 임시
|
||||
식별자만 사용했고 cleanup을 확인했으며, 앱은 정상 종료되고 Tornado2 연결은 0으로 돌아왔다.
|
||||
이후 교정된 즉시 선택·PROGRAM enabled·빈 검색·설정·비교 importer를 포함한 최신 AppX의
|
||||
물리 회차는 아직 실행 전이므로 아래 증거를 최신 코드 최종 실측으로 확대하지 않는다.
|
||||
|
||||
| 증거 | 입력 | 화면/DB 검사 | 승인 write | 핵심 경계 |
|
||||
|---|---:|---:|---:|---|
|
||||
| [`latest-readonly`](../artifacts/package-input-smoke/legacy-package-input-20260721T221024787Z-latest-readonly.json) | 73 | 0/0 | 0 | DB write 0, playout intent 0, 최종 playlist 3 |
|
||||
| [`latest-graphe`](../artifacts/package-input-smoke/legacy-package-input-20260721T221122292Z-latest-graphe.json) | 491 | 5/12 | 12 | GraphE 4종 fresh reopen·350ms double-click·delete/absence, cleanup |
|
||||
| [`latest-catalog`](../artifacts/package-input-smoke/legacy-package-input-20260721T221252795Z-latest-catalog.json) | 264 | 3/11 | 7 | ThemeA KRX/NXT·EList 검색/double-click/reorder/drag/delete, cleanup |
|
||||
| [`latest-screens`](../artifacts/package-input-smoke/legacy-package-input-20260721T221352946Z-latest-screens.json) | 664 | 15/15 | 22 | UC1~UC7 전체 버튼·parent batch·GraphE/FSell/VI·모달, cleanup |
|
||||
| [`latest-plist`](../artifacts/package-input-smoke/legacy-package-input-20260721T221553250Z-latest-plist.json) | 91 | 0/3 | 3 | create/save→fresh readback→delete/absence, cleanup |
|
||||
| [`latest-dryrun-playout`](../artifacts/package-input-smoke/legacy-package-input-20260721T221635626Z-latest-dryrun-playout.json) | 83 | 0/0 | 0 | 선택 행 NEXT·drag 상태·PROGRAM 선택·tail append, DB write/Tornado2 연결 0 |
|
||||
|
||||
DryRun 송출 회차는 3행 중 `legacy-stock-00000003`을 선택한 상태에서 NEXT가
|
||||
`legacy-stock-00000001`로 이동함을 확인했다. PROGRAM 뒤 컷 선택은 0번이고, 안전한 마지막
|
||||
double-click만 `legacy-stock-00000004` 한 행을 append해 playlist가 3→4행이 됐다.
|
||||
|
||||
## 현행 PList operator 로드 경계 (2026-07-21)
|
||||
|
||||
현행 `LegacyParityApp`은 활성 정의 23개와 연결된 2,213행을 목록 단위로 거부하지 않고
|
||||
모두 로드한다. 최신 DB 감사 결과는 `rowsLoaded=2213`, `sceneAliasResolved=2213`,
|
||||
`rowLevelDeferred=0`, `wholeListRejected=0`이며, 직전 개발 패키지의 실제 마우스 입력으로
|
||||
첫 목록 58행을 팝업 없이 불러왔다. 이 수치는 목록/scene alias 복원 근거이고, 각 행의
|
||||
최신 DB payload·asset·PGM 성공 근거는 아니다(`playoutPreflightAsserted=false`).
|
||||
|
||||
2026-07-22 최신 실제 DB smoke는 2,213행 가운데 1,617행을 fresh typed selection으로
|
||||
복원하고 596행을 보류했다. 보류는 KRX 테마 493행, NXT 테마 48행, 비교 시장 identity
|
||||
유실 25행, unique closed mapper 없음 30행이다. 기존 이름 기반 GraphE 36행은 원본 저장
|
||||
의미와 같은 compatibility projection을 적용해 36/36 fresh materialization됐다.
|
||||
|
||||
## 동적 DB 목록 호환 경계 (2026-07-21)
|
||||
|
||||
원본에서 보이던 행을 목록 진입 단계의 송출 검증으로 통째로 숨기지 않는다. 실제 read-only 감사와
|
||||
직전 개발 패키지 클릭 결과는 다음과 같다.
|
||||
|
||||
- 국내 종목 4,599/4,599, 해외 비교 raw 1,490 중 표시 1,474·선택 가능 1,473,
|
||||
UC5 업종 53·종목 1,474, UC7 거래정지 112를 확인했다.
|
||||
- Theme/ThemeA는 KRX 1,571/NXT 176, 합계 1,747개다. 제목 앞뒤 공백 92행과 중복 제목
|
||||
14행도 market·code identity로 구분한다.
|
||||
- ThemeA 편집은 저장된 `SB_ITEM`을 직접 읽는다. KRX/NXT 교차 prefix 5/3행과 동일
|
||||
`SB_I_INDEX` 2그룹·4행을 유실하지 않는다. 신규 테마는 계속 시장별 prefix만 허용한다.
|
||||
- GraphE는 Revenue 1,961행, Growth 1,119행, Sales 2,349행, OperatingProfit 2,347행,
|
||||
합계 7,776행을 모두 raw 편집 대상으로 노출한다. 원본이 빈 항목을 저장한 `_` 슬롯과 빈
|
||||
분기명은 레거시 규칙으로 수용한다. 최신 read-only 감사 결과 strict-ready/deferred는 각각
|
||||
Revenue 1,960/1, Growth 1,114/5, Sales 2,329/20, OperatingProfit 2,323/24이며,
|
||||
합계 7,726/50이다. 정수 값의 선후행 공백·TAB, 분기명 후행 TAB과 완전히 동등한 중복 DB행은
|
||||
원본 저장 의미대로 수용하되 conflicting 중복과 내부 제어문자는 거부한다. 남은 50행도 기존 값
|
||||
조회·수정·삭제는 가능하지만 PREPARE 전에 fresh projection gate를 통과해야 한다.
|
||||
- 전문가 6명의 추천 32행 중 매수가 NULL 5행은 빈 셀로 보존한다. 임의 기본값을 만들지 않으며,
|
||||
숫자 매수가가 필요한 송출 action만 사용할 수 없다.
|
||||
- VI와 국내 비교는 빈 검색 4,599행, `KODEX` 238행을 실제 화면에 표시했다. 실제 상한을
|
||||
넘거나 행이 격리되면 화면에 지속 경고를 표시한다.
|
||||
|
||||
이 재감사에서 ThemeA raw 편집 외 추가 P0/P1 DB 로드 차이는 발견되지 않았다. `PLAY_LIST`의
|
||||
정의 없는 orphan 88행은 원본 PList도 표시하지 않는 데이터이므로 회귀로 분류하지 않는다.
|
||||
|
||||
## 기존 PLAY_LIST read-only fresh-selection 재분류 (2026-07-12 역사적 증거)
|
||||
|
||||
실제 Oracle 활성 정의 23개와 연결된 2,213행은 원문의 7필드, 한국어, enabled,
|
||||
ITEM_INDEX와 원본의 page 공백 제거 규칙을 보존했다.
|
||||
@@ -144,14 +218,19 @@ ITEM_INDEX와 원본의 page 공백 제거 규칙을 보존했다.
|
||||
| 해외종목 | 78 | selection 78 |
|
||||
| GraphE | 36 | fresh materialization 22, 값/identity 14 차단 |
|
||||
| unique closed mapper 없음 | 30 | nearest-scene 추정 없이 차단 |
|
||||
| 합계 | **2,213** | 통합 selection 1,603 / 명시 차단 610 |
|
||||
| 합계 | **2,213** | 역사적 통합 selection 1,603 / fresh-selection 증명 보류 610 |
|
||||
|
||||
`selectionMapped`는 scene asset, PREPARE나 PGM 성공 수치가 아니다. 상세는
|
||||
이 표의 610행은 현행 DB 목록 로드 차단 수치가 아니다. `selectionMapped`는 scene asset,
|
||||
PREPARE나 PGM 성공 수치도 아니다. 상세는
|
||||
[`NAMED_PLAYLIST_READ_AUDIT.md`](NAMED_PLAYLIST_READ_AUDIT.md)를 따른다.
|
||||
|
||||
최신 재분류는 이 역사적 표에서 GraphE 보류 14행을 모두 복원해 `1,617/596`이다. 다른 보류
|
||||
사유와 수치는 바뀌지 않았으며, 이를 과거 2026-07-12 회차의 결과에 소급 적용하지 않는다.
|
||||
|
||||
## 외부자산 목록
|
||||
|
||||
45개 active alias의 `.t2s`는 존재한다. 별도 종속 asset 14개만 제공되지 않았다.
|
||||
설정 validator는 45개 active alias의 `.t2s`와 필수 built-in asset 9개를 요구하며 현재
|
||||
검증을 통과한다. 별도 optional 외부 제작 asset 14개만 제공되지 않았다.
|
||||
|
||||
- `s5006`: `Video\큐브배경.vrv`
|
||||
- `s6001`:
|
||||
@@ -168,10 +247,9 @@ ITEM_INDEX와 원본의 page 공백 제거 규칙을 보존했다.
|
||||
- `Video\20201008_필리핀.vrv`
|
||||
- `Video\20201008_말레이시아.vrv`
|
||||
- `Video\20201008_인도네시아.vrv`
|
||||
- 기본 배경: sibling `배경\기본.vrv`
|
||||
|
||||
이 파일들의 부재는 code/build 실패가 아니라 **외부자산 미제공**이다. 검사기는 존재,
|
||||
0바이트, root escape, reparse와 manifest 중복을 검사하고 누락 경로와 영향 builder만
|
||||
0바이트, root escape, reparse·중간 junction과 manifest 중복을 검사하고 누락 경로와 영향 builder만
|
||||
redacted 형태로 보고한다.
|
||||
|
||||
## 원본 I/O에서 의도적으로 제외한 항목
|
||||
@@ -184,9 +262,14 @@ redacted 형태로 보고한다.
|
||||
## 최종 증적 기록
|
||||
|
||||
현재 구현 증적과 최종 검증 범위는 [`MIGRATION_STATUS.md`](MIGRATION_STATUS.md)에 기록한다.
|
||||
최신 .NET solution 2,817/2,817, LegacyWeb 117/117, JavaScript 502/502이며 실패·skip은 0이다.
|
||||
Release 빌드는 warning 0, error 0이다. 개발 MSIX 전체 UI/DB와 실제 PGM 32/34 route를 확인했다.
|
||||
고객 서명 MSIX는 현재 범위에서 보류하고, 외부자산 두 route는 제공 전까지 fail closed한다.
|
||||
마지막 전체 .NET solution 실행은 3,115/3,115였다. 그 뒤 추가된 교정의 focused 자동 검증은
|
||||
통과했지만 전체 solution 합계는 최종 재실행 뒤 갱신한다. 별도 LegacyParityWeb은 127/127,
|
||||
WebPlayout JavaScript는 424/424이고 직전 Debug build/rebuild는 warning 0, error 0이다.
|
||||
직전 등록 개발 패키지 UI/DB 여섯 회차는 모두 PASS지만 최신 변경 포함 AppX 물리 재검증은
|
||||
대기 중이다. 실제 PGM은 최신 Core 6/6, 30 route 30/30, 최신 Paged 24/24 기준선을 확보했다.
|
||||
`s6001` 영상 비의존 4 action/18-stage workflow는 static PASS이고 실제 PGM은 실행 전이다.
|
||||
고객 서명 MSIX는 현재 범위에서 보류한다. `s5006` 큐브와 `s6001` 국가 영상 action은
|
||||
외부자산 제공 전까지 fail closed하고, `s6001` 영상 비의존 4 action은 실제 PGM 재검증 대기다.
|
||||
2026-07-15의 상세 package 증적은
|
||||
[`LEGACY_PARITY_VALIDATION_20260715.md`](LEGACY_PARITY_VALIDATION_20260715.md)에 역사 기록으로
|
||||
보존한다.
|
||||
|
||||
Reference in New Issue
Block a user