Files
Tornado3_2026Election/CURRENT_IMPLEMENTATION_STATUS_2026-04-17.md
2026-04-17 00:52:37 +09:00

7.6 KiB

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

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

1. 데이터 화면

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

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

  • 후보가 나오는 데이터는 개표 데이터 기준으로 처리한다.
  • 개표 데이터에는 반드시 개표율도 함께 표시되도록 맞췄다.
  • 개표율 텍스트는 단순 숫자가 아니라 아래 형식으로 송출되도록 수정했다.
    • 예: 개표 98.7%
  • 광역단체장 컷에서는 지역명 대신 실제 직함이 나오도록 보정했다.
    • 예: 부산광역시 -> 부산시장
    • 예: 경기도 -> 경기도지사

3. 당선/유력/확정 코드 반영

SBS API 판정 코드는 아래 기준으로 반영되어 있다.

  • 40: 유력
  • 50: 확정
  • 60: 개표중 당선
  • 80: 무투표 당선
  • 90: 개표마감 당선

추가 반영 사항:

  • 80 무투표 당선 케이스도 실제 발생 가능한 값으로 보고 정상 처리하도록 반영했다.
  • 수동 판정값이 있으면 수동 판정을 우선 적용하고, 없으면 API 판정값을 사용한다.

4. 유확당 변수 처리 규칙

유확당 계열 변수는 전 컷 공통으로 아래 순서로 처리하도록 정리했다.

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

적용 범위:

  • 1위/2위/3위 후보 슬롯 공통
  • 1-2위, 1-3위, 당선, 모든후보, 접전, 실시간 계열 포함

검증 결과:

  • 최신 전체 스캔 기준 유확당 변수를 사용하는 컷은 총 69개
  • 전체 변수 스캔 리포트: TSCN_VARIABLE_DISCOVERY_ELECT2026_NORMAL.md
  • 라이브 검증 리포트: LIVE_VALIDATE_1-2위_ani_광역단체장_judgement_visibility.md

5. RGB / 정당 색상 매핑

정당 색상은 아래 경로의 RGB 텍스트 기준으로 매핑한다.

  • E:\김의연\지역민방\T3_Cut\Elect2026_Normal_민방\RGB\

현재 적용 규칙:

  • RGB txt에 style > ... > color 지시가 있으면 이미지 교체보다 SetStyleColor(...)를 우선 사용한다.
  • style color 지시가 없는 항목만 기존 asset 기반 SetValue(...) 경로를 사용한다.

특히 1-2위_ani_광역단체장.txt 기준으로 아래 항목을 실제 style color 변경 방식으로 맞췄다.

  • 정당판: style > face > color
  • 득표율: style > edge > color
  • 정당바: style > face > color

관련 구현 사항:

  • RGB txt에서 style color 대상을 파싱하도록 PartyColorCatalog를 보완했다.
  • Karisma 적용 단계에서 IKAStyle.SetStyleColor를 호출하도록 처리 경로를 추가했다.
  • style color 대상에는 잘못된 이미지 값이 들어가지 않도록 분기 처리했다.

검증 문서:

  • 컷별 RGB 매핑 문서: RGB_SPEC_CUT_MAPPING.md
  • style color 검증 리포트: LIVE_VALIDATE_1-2위_ani_광역단체장_style.md

6. 후보 슬롯 수 처리

  • 실제 컷에 존재하는 후보 슬롯 수만큼만 값을 넣도록 보정했다.
  • 예를 들어 후보가 2명까지 있는 컷에서는 후보명03, 유확당03 같은 존재하지 않는 변수를 억지로 쓰지 않도록 수정했다.
  • 최신 변수 카탈로그를 우선 참조해서 컷별 실제 변수 개수를 판단한다.

우선순위:

  1. TSCN_VARIABLE_DISCOVERY_ELECT2026_NORMAL.md
  2. TSCN_VARIABLE_DISCOVERY_E_DRIVE.md
  3. 기타 TSCN_VARIABLE_DISCOVERY*.md

추가 사항:

  • 변수 카탈로그 파일들은 실행 출력 폴더와 AppX 배포 폴더에도 함께 복사되도록 정리했다.

7. 설정 저장 및 API 주기

  • API 자동 갱신 기본값을 60초로 변경했다.
  • 설정 변경 시 별도 저장 버튼 없이 자동 저장되도록 반영했다.

자동 저장 대상에는 아래 항목들이 포함된다.

  • API 자동 갱신 ON/OFF
  • API 갱신 주기
  • 데이터 관련 주요 선택 상태
  • 앱 재시작 후 복원이 필요한 주요 설정

관련 구현 파일:

  • 상태 저장 모델: Tornado3_2026Election/Persistence/AppState.cs
  • 자동 저장 루프: Tornado3_2026Election/ViewModels/MainViewModel.cs

8. 데이터/라벨 관련 라이브 검증 결과

  • LIVE_VALIDATE_1-2위_ani_광역단체장.md
    • 기본 변수 송출 검증
  • LIVE_VALIDATE_1-2위_ani_광역단체장_labels.md
    • 개표 99.9% 형식, 광역장 직함 표기 검증
  • LIVE_VALIDATE_1-2위_ani_광역단체장_style.md
    • style color 적용 검증
  • LIVE_VALIDATE_1-2위_ani_광역단체장_judgement_visibility.md
    • 유확당 visible 처리 검증
  • TSCN_VARIABLE_DISCOVERY_ELECT2026_NORMAL.md
    • Elect2026_Normal_민방 전체 컷 변수 스캔 결과

9. 스케줄 지역 선택 송출

  • 스케줄 추가 시 컷만 고르는 방식에서 컷 + 지역 범위를 함께 고르는 방식으로 확장했다.
  • 스케줄 제어 패널에 지역 선택 콤보박스를 추가했다.
  • 지역 콤보박스 구성은 아래와 같다.
    • 첫 번째: 전체
    • 두 번째: 선택권역
    • 이후: 개별 지역 목록
  • 개별 지역 선택 시 해당 지역 데이터만 송출한다.
  • 전체 선택 시 현재 포맷에 대응되는 지역 데이터 전체를 순서대로 송출한다.
  • 선택권역 선택 시 방송사 설정에 잡혀 있는 권역만 순서대로 송출한다.
  • 전체선택권역은 데이터 순서에 따라 송출 가능한 지역만 순차적으로 처리한다.
  • 스케줄 큐 항목에는 지역 범위 정보가 함께 저장되며, 앱 상태 저장/복원에도 포함된다.
  • 송출 중에는 큐 카드와 현재/다음 표시에서 실제 송출 중인 지역명이 함께 보이도록 반영했다.

구현 범위:

  • 스케줄 UI 콤보박스 추가
  • 스케줄 아이템에 지역 범위 저장
  • 스케줄 상태 저장/복원 반영
  • 송출 시 지역별 API 재조회 후 순차 송출

10. 현재 기준 운영 요약

  • 데이터 화면은 개표율 시트 + 후보 시트 + 전체보기 카드 기준으로 동작한다.
  • 후보 데이터는 개표 데이터 기준으로 처리되고, 개표율이 함께 표시된다.
  • 개표율은 항상 개표 x.x% 형식으로 송출한다.
  • 광역단체장 컷의 지역 표기는 지역명이 아니라 실제 직함 기준으로 보정한다.
  • 정당 색상은 RGB txt 기준으로 매핑하며, style color 지시가 있으면 이미지보다 style color를 우선 적용한다.
  • 유확당 변수는 전 컷 공통으로 먼저 숨긴 뒤 필요한 경우에만 값을 넣고 다시 보이게 한다.
  • 설정은 변경 즉시 자동 저장되며, API 기본 갱신 주기는 60초다.
  • 스케줄은 전체 / 선택권역 / 개별 지역 기준으로 지역별 순차 송출이 가능하다.

11. 참고

이 문서는 완료된 구현 사항 위주로 정리했다. 이후 추가 변경이 생기면 같은 문서를 기준으로 계속 현행화한다.