Files
Tornado3_2026Election/CURRENT_IMPLEMENTATION_STATUS_2026-04-17.md
2026-04-20 20:06:18 +09:00

8.3 KiB

2026-04-18 현재 구현 상태 정리

이 문서는 2026-04-18 기준으로 Tornado3 2026 Election 프로젝트에 실제 반영된 구현 사항과 운영 기준을 한 번에 확인하기 위한 현행화 문서다.

1. 화면 구성

  • 메인 네비게이션은 아래 페이지를 제공한다.
    • 통합 스케줄
    • 노멀
    • 좌상단
    • 하단
    • 비디오월
    • 사전데이터
    • 데이터
    • 컷리스트
    • 설정
    • 로그
  • 사전데이터 페이지는 저장형 역대 데이터 조회/수정/저장 전용 화면이다.
  • 컷리스트 페이지는 전체 컷 목록, 채널 필터, 컷 시간, 썸네일 현황을 관리하는 운영 화면이다.

2. 데이터 화면

  • 데이터 화면에서 원본 JSON 형태로 보여주던 데이터 시트는 제거했다.
  • 현재 데이터 화면에는 아래 두 시트만 남겨두었다.
    • 개표율 시트
    • 후보 시트
  • 데이터 - 선거구명 콤보박스 첫 항목에 전체보기를 추가했다.
  • 전체보기 선택 시, 현재 수신 가능한 지역 데이터를 작은 카드 형태로 한 번에 볼 수 있도록 바꿨다.
    • 표시 형식: 지역명 - 개표율
    • 목적: 전체 데이터 수신 상태를 빠르게 확인하기 위한 개요 화면
  • 데이터 탭에는 선거구명, 지역 코드 외에 시도명, 송출 선거구명, StatusText를 함께 표시한다.

3. SBS API 실연동 범위

  • 현재 실연동 대상 선거 종류는 아래와 같다.
    • 광역단체장
    • 교육감
    • 기초단체장
  • 광역단체장
    • 개표: 지원
    • 사전 투표율: 지원
  • 교육감
    • 개표: 지원
    • 사전 투표율: SBS API 미지원
  • 기초단체장
    • 개표: 지원
    • 사전 투표율: SBS API 미지원
  • 교육감, 기초단체장의 사전 방송 데이터는 저장형 사전 데이터(JSON)로 보완한다.

4. 저장형 사전데이터

  • 저장형 사전데이터는 Tornado3_2026Election/Assets/Data/pre_election_history.json에 보관한다.
  • 2026-04-18 기준 저장 건수는 아래와 같다.
    • 광역단체장: 전국 17개 시도
    • 교육감: 전국 17개 시도
    • 기초단체장: 전국 262개 선거구
  • 커버리지 요약:
    • 광역단체장 당선자: 1995~2022
    • 광역단체장 투표율: 2002~2022
    • 교육감: 직선제 기준 2010~2022
    • 기초단체장: 공식 API 기준 2002~2022
  • 사전데이터 페이지에서 아래 기능을 제공한다.
    • 선거 종류별 레코드 선택
    • 지역별 역대 투표율 카드 보기
    • 지역별 역대 당선자 카드 보기
    • 엑셀형 편집 그리드에서 직접 수정
    • 사전데이터 저장 버튼으로 JSON 반영
  • 사전_역대당선자, 사전_역대당선자_교육감, 사전_역대당선자_기초단체장 편집 행에는 ColorParty 콤보박스가 있다.
    • 표기 정당명은 그대로 두고
    • 송출용 색상 포맷 정당만 별도로 지정할 수 있다.
    • 예: 표기 한나라당, 색상 포맷 국민의힘
  • 사전데이터 편집 화면에서는 개별 항목의 SourceUrl을 노출하지 않는다.

5. 사전 컷 연동 규칙

  • 사전_역대당선자* 계열은 사전개표 양쪽 단계에서 모두 사용할 수 있다.
  • 사전_역대투표율* 계열은 사전 단계 전용이다.
  • 사전 컷 송출 시에는 저장형 사전데이터의 TurnoutHistory, WinnerHistory를 사용한다.
  • 역사 정당명은 색상 포맷 선택과 별개로 아래 별칭을 함께 처리한다.
    • 민주자유당, 신한국당, 한나라당, 새누리당, 자유한국당 -> 국민의힘
    • 민주당, 새천년민주당, 열린우리당, 새정치민주연합 -> 더불어민주당
    • 무소속 -> 무기타, 무소속기타

6. 후보/개표 데이터 처리 규칙

  • 후보가 나오는 데이터는 개표 데이터 기준으로 처리한다.
  • 개표 데이터에는 반드시 개표율도 함께 표시되도록 맞췄다.
  • 개표율 텍스트는 아래 형식으로 송출한다.
    • 예: 개표 98.7%
  • 수동 판정값이 있으면 수동 판정을 우선 적용하고, 없으면 API 판정값을 사용한다.
  • SBS API 판정 코드는 아래 기준으로 반영한다.
    • 40: 유력
    • 50: 확정
    • 60: 개표중 당선
    • 80: 무투표 당선
    • 90: 개표마감 당선

7. 직함 표기 규칙

  • 광역단체장, 교육감, 기초단체장은 전 컷 공통으로 지역명 대신 직함 기준 표기를 사용한다.
  • 적용 대상은 컷 종류를 가리지 않고 executive 계열 전체다.
  • 예시:
    • 서울특별시 -> 서울시장
    • 전라남도 -> 전라남도지사
    • 부산광역시 -> 부산광역시교육감
    • 경상남도 창원시 -> 창원시장
  • 송출 시 선거구명, 시도명, RegionName, ElectionDistrictName, DistrictName 계열 값에 같은 규칙을 적용한다.

8. 유확당 변수 처리 규칙

유확당 계열 변수는 전 컷 공통으로 아래 순서로 처리한다.

  1. 해당 컷에 존재하는 유확당* 변수를 먼저 모두 visible=false로 숨긴다.
  2. 실제 판정 이미지가 필요한 후보에게만 SetValue(...)를 넣는다.
  3. 값이 들어간 변수만 다시 visible=true로 켠다.

적용 범위:

  • 1-2위
  • 1-3위
  • 당선
  • 모든후보
  • 접전
  • 초접전
  • 이시각1위

9. RGB / 정당 색상 매핑

  • 정당 색상은 RGB txt 기준으로 매핑한다.
  • RGB txt에 style > ... > color 지시가 있으면 이미지 교체보다 SetStyleColor(...)를 우선 사용한다.
  • style color 지시가 없는 항목만 기존 asset 기반 SetValue(...) 경로를 사용한다.
  • 사전_역대당선자* 계열도 ColorParty 또는 정당 별칭을 기준으로 동일한 색상 자산 해석을 사용한다.
  • 상세 매핑은 RGB_SPEC_CUT_MAPPING.md를 기준으로 관리한다.

10. 컷 카탈로그 / 실제 디자인 매칭

  • 컷 목록은 폴더 스캔이 아니라 FormatCatalogService의 하드코딩 카탈로그 기준으로 관리한다.
  • 2026-04-18 기준 현재 카탈로그는 실제 .tscn 파일 기준으로 정리되어 있다.
    • Elect2026_Bottom_민방: 15컷
    • Elect2026_Normal_민방: 63컷
    • Elect2026_Top_민방: 11컷
    • 총 89컷
  • 실제 .tscn 파일이 없는 오래된 별칭(_L, _END, _7680 등)은 현재 카탈로그에서 제거했다.
  • 다만 기존 저장 상태/큐 복원을 위해 예전 FormatId는 내부 별칭 맵으로 현재 실제 컷 이름에 자동 연결한다.
  • 2026-04-18 전수 감사 기준:
    • 카탈로그 등록 컷 중 실제 씬 누락 0건

11. 썸네일 운영

  • 썸네일 저장 위치는 Assets/Thumbnail/<template.Id>.png 규칙을 사용한다.
  • 콤보박스에서 컷을 선택하면 해당 썸네일을 즉시 프리뷰에 표시한다.
  • 로딩 우선순위:
    1. 프로젝트 내부 Assets/Thumbnail
    2. 번들된 앱 내부 Assets/Thumbnail
    3. 기본 앱 아이콘
  • 컷리스트 페이지에서는 전체 컷 썸네일 보유 현황과 채널별 컷 목록을 함께 확인할 수 있다.
  • 썸네일 생성 기능은 Karisma에 씬을 로드한 뒤 320x180 PNG를 저장한다.

12. 설정 저장 및 복원

  • 설정은 변경 즉시 자동 저장한다.
  • 자동 저장 대상에는 아래 항목들이 포함된다.
    • API 자동 갱신 ON/OFF
    • API 갱신 주기
    • 데이터 관련 주요 선택 상태
    • 채널별 큐 상태
    • 컷별 재생 시간
    • 방송사 지역 필터
  • 저장된 큐에 예전 컷 ID가 들어 있어도 복원 시 현재 canonical 컷으로 자동 정규화한다.

13. 검증 상태

  • dotnet build .\Tornado3_2026Election\Tornado3_2026Election.csproj 통과
  • 2026-04-18 컷 감사 결과 MISSING_SCENES=0
  • 현재 남아 있는 빌드 경고는 아래와 같다.
    • WindowsBase 참조 충돌 경고
    • MSIX 인증서 경고
    • MockTornado3Adapter.ConnectionChanged 미사용 경고

14. 참고 문서

  • SYSTEM_SPEC.md
  • INTEGRATION_NOTES_2026-04-15.md
  • RGB_SPEC_CUT_MAPPING.md
  • TSCN_VARIABLE_DISCOVERY_ELECT2026_NORMAL.md
  • LIVE_VALIDATE_1-2위_ani_광역단체장.md
  • LIVE_VALIDATE_1-2위_ani_광역단체장_labels.md
  • LIVE_VALIDATE_1-2위_ani_광역단체장_style.md
  • LIVE_VALIDATE_1-2위_ani_광역단체장_judgement_visibility.md