Files
MBN_STOCK_WEBVIEW/docs/OPERATOR_WORKFLOW.md

5.5 KiB

운영자 워크플로우 마이그레이션

결론

장면 엔진 35개와 운영 화면은 같은 범위가 아니다. 35개 builder가 DB DTO와 K3D mutation을 만들 수 있어도, 원본 운영자가 선택하던 종목·업종·비교 대상과 수동 입력을 Web UI가 만들지 못하면 실제 방송 업무는 시작할 수 없다.

이번 단계에서 캡처의 핵심 종목 흐름은 다음과 같이 복구했다.

종목명 검색 → Oracle/MariaDB 결과 선택 → 종목용 컷 선택 → 플레이리스트 → F8 PREPARE/TAKE IN → NEXT/TAKE OUT

복구된 종목 흐름

  • KOSPI T_STOCK, KOSDAQ T_KOSDAQ_STOCK, NXT KOSPI N_STOCK/N_ONLINE, NXT KOSDAQ N_KOSDAQ_STOCK/N_KOSDAQ_ONLINE을 매개변수 쿼리로 검색한다.
  • LIKE의 %, _, !는 escape하고 검색어·결과 수·열 스키마·종목 코드 형식을 제한한다.
  • 검색 결과는 시장, 종목명, 종목 코드를 함께 보존하므로 원본처럼 이름을 다시 훑어 코드를 추정하지 않는다.
  • 실제 실행 자산 bin/Debug/Res/종목.ini의 31개 항목을 원본 순서로 표시한다.
  • 실행 자산 SHA-256은 45DFB1804828F0E4A45F73D681AF0709CE5662872FAA49CFC9F7A0B940409E20으로 고정했다. 소스 RES/종목.ini와 다른 시간외단일가 표기는 실행 자산을 기준으로 한다.
  • NXT 종목은 원본과 같이 1열판기본_현재가N5001만 허용한다.
  • 5일선·20일선은 컷 추가 시점의 사본이 아니라 현재 전역 체크 상태를 모든 캔들 항목에 동기화하고 PREPARE 직전에 다시 고정한다.
  • 저장된 typed 종목 항목은 builder, alias, selection, 종목, 이동평균선이 모두 재생성 결과와 같을 때만 복원한다. 실패한 항목은 일반 catalog 경로로 우회하지 못한다.
  • 플레이리스트 첫 열은 원본 의미와 같은 송출 여부다. 행 클릭은 삭제·이동 선택이며 Ctrl+클릭으로 복수 선택한다.
  • 현재 장면 행은 네이티브가 보낸 실제 page index/page count를 표시한다.
  • F8은 IDLE에서 PREPARE 성공을 받은 뒤 TAKE IN을 정확히 한 번 요청한다. Live/Test TAKE IN 승인이 잠겨 있으면 PREPARE도 자동 실행하지 않는다.
  • 원본 F2는 trusted scene-root 안의 배경 파일 선택을 열고, F3은 배경 없음 상태를 토글한다. PREPARE 단축키로 재사용하지 않는다.

현재 사용법

  1. 대시보드, 코스피 또는 코스닥 메뉴에서 왼쪽 종목 검색에 종목명을 입력한다.
  2. 결과에서 정확한 종목과 시장을 선택한다.
  3. 종목용 컷+를 누르거나 행을 더블클릭한다.
  4. 플레이리스트 첫 열의 송출 체크와 순서를 확인한다.
  5. DryRun에서 F8 또는 TAKE IN 버튼으로 PREPARE→TAKE IN을 검증한다.
  6. 실제 Test/Live에서는 회차별 안전 게이트가 TAKE IN을 허용한 경우에만 같은 버튼이 활성화된다.
  7. 종목 입력 영역의 접기를 누르면 전체 장면 catalog와 시장 데이터 영역을 사용할 수 있다.

실제 검증 결과

2026-07-11 로컬 운영 DB에서 다음을 확인했다.

  • Oracle 21c 및 MariaDB health 정상
  • 삼성 검색 63건: KOSPI 42, KOSDAQ 9, NXT KOSPI 12
  • 삼성전자/KR7005930003 선택
  • 1열판기본_현재가 → builder s5001, alias 5001, KOSPI/CURRENT selection 생성
  • 패키지 컨텍스트 DryRun의 PREPARE → TAKE IN, mutation preview 32개, TAKE OUT, 최종 편집 잠금 해제
  • COM 및 KTAPConnect 호출 없음

전체 운영 화면 구현 범위

35개 scene builder와 별개였던 원본 운영자 선택 표면을 모두 닫힌 workflow와 전용 화면으로 연결했다. 정확한 실행 action 분해는 다음과 같다.

범위 수량 상태
해외·환율·지수 등 고정 action 328 화면 통합 완료. 이 중 수동 placeholder 6개는 FSell/VIList 화면으로만 연다.
코스피·코스닥 업종 action 44 화면 통합 완료
종목 action 31 화면 통합 완료
비교 action 9 화면 통합 완료
합계 412 명령 생성·strict restore 자동 매트릭스 완료
UC3 고정 비교 선택지 24 비교 화면의 typed target으로 통합 완료

추가 전용 화면도 연결됐다.

  • GraphE: 주요매출 구성, 성장성 지표, 매출액, 영업이익의 조회·편집·삭제·playlist 추가
  • FSell/VIList: trusted local store의 저장·재조회·버전 검증 뒤 s5025/s5074 추가
  • ThemeA/EList: 테마·전문가와 구성 종목의 생성·교체·삭제
  • PList/AList: Oracle DC_LIST/PLAY_LIST 이름 있는 저장·불러오기·삭제
  • F2/F3: trusted 배경 선택과 배경 없음 토글

수동 입력 DB 쓰기와 이름 있는 플레이리스트 저장은 read-only query executor와 분리된 매개변수 repository/transaction 경계를 사용한다. 송출이 IDLE임을 네이티브 engine과 workflow 양쪽에서 확인할 수 없거나, browser 상관관계·commit 결과가 불명확하면 모든 operator write를 프로세스 수명 동안 차단하고 자동 재시도하지 않는다.

완료 판정

412개 실행 명령, UC3 비교 선택지, 수동 입력, 배경, 이름 있는 저장·불러오기까지 Web 화면 연결과 자동 계약 검증은 완료됐다. 다만 실제 운영 DB write와 각 경로의 Tornado2 PGM 확인은 UI 구현 완료와 별도다. 승인된 테스트 데이터·롤백 계획·회차별 PGM 승인이 없는 실환경 mutation이나 TAKE IN은 완료 증거를 만들기 위해 임의로 실행하지 않는다.