Files
Tornado3_2026Election/WORK_LOG_2026-04-19.md
2026-04-20 20:06:18 +09:00

4.3 KiB

Work Log - 2026-04-19

Summary

이번 작업에서는 송출 큐 동작, 경력_ 컷 계열 표출 규칙, 공약 직접 입력 기능, 사전 데이터 visibility 처리, 그리고 광역단체장 컷의 정당바 색상 적용 방식을 중심으로 정리했다.

Recorded Changes

1. 다음 목록 즉시 송출

  • 현재 송출 중인 상태에서도 대기열의 다음 목록을 바로 다음 on-air 순서로 넘길 수 있도록 다음 목록 즉시 송출 동작을 추가했다.
  • 운영자가 다음컷 즉시 송출과 구분해서 사용할 수 있도록 큐 기반 즉시 송출 흐름을 분리했다.

2. 경력_ 컷 공약 직접 입력

  • 공약 데이터는 외부 API 수신값이 아니라 고객사가 직접 입력하는 방식으로 정리했다.
  • 지역구/후보 단위로 공약을 입력할 수 있도록 편집 모델과 저장 로직을 추가했다.
  • 공약 텍스트 유무에 따라 공약그룹01, 공약그룹02, 공약그룹03visible 값을 함께 제어하도록 반영했다.

관련 구현 파일:

  • Tornado3_2026Election/Domain/CareerPromiseModels.cs
  • Tornado3_2026Election/Services/CareerPromiseService.cs
  • Tornado3_2026Election/ViewModels/CareerPromiseEditRowViewModel.cs
  • Tornado3_2026Election/ViewModels/DataViewModel.cs
  • Tornado3_2026Election/ViewModels/MainViewModel.cs
  • Tornado3_2026Election/MainWindow.xaml

3. 경력_ 컷 후보 표출 규칙

  • 경력_ 컷은 지역구당 1명만 나가는 방식이 아니라, 해당 지역구의 모든 후보가 순차적으로 표출되도록 수정했다.
  • 후보 정렬 기준은 득표율 순이 아니라 기호 순으로 고정했다.
  • 기호텍스트NN은 고정 문자열 기호를 유지하고, 기호NN에는 01 -> 1, 02 -> 2처럼 정규화된 기호 번호를 사용하도록 정리했다.

관련 구현 파일:

  • Tornado3_2026Election/Domain/FormatCutDefinition.cs
  • Tornado3_2026Election/Services/ChannelScheduleEngine.cs
  • Tornado3_2026Election/Models/CandidateEntry.cs
  • Tornado3_2026Election/Models/CandidateState.cs
  • Tornado3_2026Election/Services/SbsElectionApiClient.cs
  • Tornado3_2026Election/Services/KarismaTornado3Adapter.cs

4. 사전 데이터 visibility 처리

  • 사전_역대당선자 계열은 회차 데이터가 비어 있으면 해당 회차 그룹의 visiblefalse로 내리도록 반영했다.
  • 예: 1대 데이터가 없으면 그룹01 = visible false.

5. 무투표 당선 처리

  • 후보가 1명이고 degree = 80인 경우는 무투표 당선(UnopposedElected)으로 처리되는 흐름을 유지한다.
  • 관련 판정은 SbsElectionApiClient.MapJudgement 기준으로 동작한다.

6. 광역단체장 컷 정당바 색상 적용

  • 1-2위_ani_광역단체장
  • 1-2위_ani_광역단체장_loop
  • 1-2위_광역단체장

위 컷들의 정당바01은 generated color asset으로 우회하지 않고, Karisma의 Path Shape > Appearance > Face Color에 직접 SetStyleColor(face, order=0, ...)를 적용하는 방식으로 정리했다.

확인 메모:

  • probe 기준 SetStyleColor(face, order=0, ...) 호출은 RESULT_SUCCESS로 확인했다.
  • RGB 값은 텍스트 스펙 값을 그대로 사용한다.
    • 더불어민주당 정당바 = 0,30,84
    • 국민의힘 정당바 = 95,0,15
  • 정당판은 현재 운영 요구에 맞춰 asset alias 경로를 유지한다.

7. style-bound 오브젝트 주의사항

  • style color binding이 있는 오브젝트는 후보 슬롯 clear 단계에서 들어간 빈 SetValue("")가 최종 payload에 남지 않도록 정리해야 한다.
  • 이 값이 남아 있으면 Path Shape의 face color가 적용되지 않은 것처럼 보일 수 있다.

Verification Notes

  • dotnet build Tornado3_2026Election/Tornado3_2026Election.csproj -c Debug -p:Platform=x64 빌드는 통과했다.
  • 기존 경고는 WindowsBase 충돌 경고, 일부 미사용 이벤트, MSIX 인증서 관련 경고 수준으로 유지됐다.

Follow-up Candidates

  • 사전투표율/개표율/후보 수 조건처럼 컷별 누락되기 쉬운 예외 규칙은 별도 체크리스트 문서로 분리해 두면 운영 검수에 유리하다.
  • 경력_ 계열과 광역단체장 계열은 실제 입력 데이터 샘플을 기준으로 회귀 점검 항목을 추가해 두는 것이 좋다.