Files
MBN_STOCK_WEBVIEW/docs/LEGACY_FEATURE_AUDIT.md

10 KiB
Raw Permalink Blame History

원본 기능 재감사 기준표

감사 기준일: 2026-07-15

원본(읽기 전용): C:\Users\MD\source\repos\MBN_STOCK_N

마이그레이션 대상: C:\Users\MD\source\repos\MBN_STOCK_WEBVIEW

감사 결론

현재 실행 대상은 .NET 8 / C# / WinUI 3 / Windows App SDK 1.8 / WebView2 기반 MBN_STOCK_WEBVIEW.LegacyParityApp이다. 이는 웹사이트가 아니라 로컬 Web 자산을 WebView2에 표시하는 x64 Windows 데스크톱/MSIX 앱이다.

초기 프로토타입 문서의 “미이관 버튼 disabled”, “Tornado2에 연결하지 않음”, “DB write 없음”은 현재 상태가 아니다. 원본 UI와 클릭 이벤트는 LegacyParityApp → strict bridge → C# workflow로 연결됐고, 개발 DB write 9개 시나리오와 설치된 MSIX의 개발 PGM 최종 통합까지 검증했다. 기본 송출 모드는 계속 DryRun이다.

상태 정의

상태 의미
완료 현재 LegacyParityApp 코드와 해당 자동/통합 검증에 반영됨
외부자산 필요 코드로 만들 수 없는 Git/MSIX 밖의 승인 영상·배경이 제공되지 않음
외부 데이터 정합성 현재 DB view/data가 원본 규칙의 fresh identity를 공급하지 않아 추정 없이 차단함

우선순위별 결과

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-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 최종 통합 완료 설치된 최신 MSIX에서 5001 PREPARE/TAKE IN/자동 갱신 → playlist NEXT 5074 1/2 → Page NEXT 2/2 → TAKE OUT, Network Monitoring·PGM·BYE 확인 14개 외부 영상 자산 scene은 제공 후 별도 PGM
LF-006 P0 원본 35 scene 완료 원본 inventory와 source 기준선 35/35, DTO→mutation→runtime matrix 통과 모든 scene의 실제 PGM 완료로 확대 해석 금지
LF-007 P0 PageN/NEXT 완료 5·6·12개 단위, 최대 20페이지, 빈/경계/마지막 부분 페이지 테스트와 개발 PGM에서 5074 9종목의 5+4 Page NEXT·다음 행 NEXT 확인 없음
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 이관, KRX/NXT/expert 개발 DB 시나리오 PASS 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-017 P1 시스템 종료 확인 완료 package-context에서 기본 취소 확인창의 중립 문구·종료/취소 두 버튼을 대조하고 종료 1회, BYE 1회, 자동 TAKE OUT/반대 명령 없음 확인 없음
LF-018 P1 원본 비교쌍/수동 파일 완료 종목비교.dat 8쌍 1회 import·재시작 marker, FSell 3×5행과 VI 9항목 trusted parser/store 검증 원본 파일은 계속 읽기 전용
LF-019 P1 실제 DB read→DTO→mutation 완료 Oracle/MariaDB 필수 scene selector 33/33, 전체 query 58건 PASS 외부 asset/PGM 성공과 별도
LF-020 P2 FarPoint 대체 완료 Web table로 바꾸되 선택·정렬·이동·single/double-click·저장 이벤트를 strict C# intent로 재현 활성 Print/Excel export는 원본에도 없음
LF-021 P2 패키지 단일 인스턴스·모달 격리 완료 두 번째 activation 전달, 강제 종료 없음. modal에서 F2/F3/F8/Escape와 playlist key 격리 새 MSIX 전체 회귀
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 추정 금지

DB 검증 상세

Read-only scene smoke

실제 Oracle/MariaDB에서 필수 scene selector 33/33과 전체 query 58건이 성공했다. 이 검증은 실제 DB → 명시 DTO → scene mutation 경로를 증명한다. .t2s, 영상·배경 자산, K3D 명령 또는 PGM 화면 검증을 대신하지 않는다.

개발 DB write smoke

production service/executor와 충돌 격리된 임시 식별자를 사용했다.

시나리오 개수 검증
GraphE INPUT_PIE, INPUT_GROW, INPUT_SELL, INPUT_PROFIT 4 create, fresh readback, delete, absence
PList/AList named playlist 2 definition/items save, fresh readback, delete, absence
ThemeA KRX 1 create, preview/readback, delete, absence
ThemeA NXT 1 create, preview/readback, delete, absence
EList expert 1 create, preview/readback, delete, absence
합계 9 PASS, 잔여 0

write는 자동 재시도하지 않는다. OutcomeUnknown이면 cleanup mutation이나 다음 시나리오를 보내지 않는 구현·테스트 경계를 유지한다. 이 결과는 개발 DB 검증이며 운영 DB에 임의 쓰기를 허용하거나 수행했다는 뜻이 아니다.

기존 PLAY_LIST read-only 재분류

실제 Oracle 활성 정의 23개와 연결된 2,213행은 원문의 7필드, 한국어, enabled, ITEM_INDEX와 원본의 page 공백 제거 규칙을 보존했다.

route 건수 결과
기존 닫힌 매퍼 1,250 selection 1,250
업종 24 selection 24
비교 99 selection 74, 시장 identity 유실 25 차단
해외지수 candle 61 selection 61
NXT theme 48 current preview empty 48 차단
KRX theme 587 current-code 94, 나머지 identity/preview/문법/지원 경계로 차단
해외종목 78 selection 78
GraphE 36 fresh materialization 22, 값/identity 14 차단
unique closed mapper 없음 30 nearest-scene 추정 없이 차단
합계 2,213 통합 selection 1,603 / 명시 차단 610

selectionMapped는 scene asset, PREPARE나 PGM 성공 수치가 아니다. 상세는 NAMED_PLAYLIST_READ_AUDIT.md를 따른다.

외부자산 목록

45개 active alias의 .t2s는 존재한다. 별도 종속 asset 14개만 제공되지 않았다.

  • s5006: Video\큐브배경.vrv
  • s6001:
    • Video\20201008_미국.vrv
    • Video\20201008_독일.vrv
    • Video\20201008_영국.vrv
    • Video\20201008_프랑스.vrv
    • Video\20201008_일본.vrv
    • Video\20201008_중국.vrv
    • Video\20201008_홍콩.vrv
    • Video\20201008_대만.vrv
    • Video\20201008_싱가포르.vrv
    • Video\20201008_태국.vrv
    • Video\20201008_필리핀.vrv
    • Video\20201008_말레이시아.vrv
    • Video\20201008_인도네시아.vrv
  • 기본 배경: sibling 배경\기본.vrv

이 파일들의 부재는 code/build 실패가 아니라 외부자산 미제공이다. 검사기는 존재, 0바이트, root escape, reparse와 manifest 중복을 검사하고 누락 경로와 영향 builder만 redacted 형태로 보고한다.

원본 I/O에서 의도적으로 제외한 항목

  • 활성 Print/Excel/FarPoint export/import 호출은 원본에서 발견되지 않았다.
  • CSV playlist save/load, thumbnail watcher와 SaveImageFile은 주석 또는 미호출 경로다.
  • s8086은 builder는 있으나 원본 MainForm active alias가 없는 diagnostic route다.
  • 위 dead/hidden 경로를 새 활성 기능으로 만들지 않는다.

최종 증적 기록

확정된 증적과 최신 전체 회귀의 기록 위치는 LEGACY_PARITY_VALIDATION_20260715.md다.

다음 값은 추측하거나 이전 package 결과를 재사용하지 않는다.

항목 상태
Debug/Release x64 전체 테스트 개수 PASS — .NET 각 2,394/2,394, Web 435/435
새 Release x64 MSIX SHA-256·서명 FC4EEE1509675E643D2B4CB435E279CAC4611B28534048D9B9EE611E361E0E1F, Valid, CN=Comtrophy
새 package-context 실행 PASS — DryRun과 개발 Live, 정상 종료
개발 Tornado2 Network Monitoring/PGM 결과 PASS50015074 1/2 → 2/2 → TAKE OUT/BYE
Gitea 반영 commit PASS — 최종 이관·검증 문서 포함 commit을 origin/main에 fast-forward push

원본 저장소는 최종 검증과 배포 이후에도 계속 읽기 전용으로 유지한다.