From e40a2a568e193cad6c7c22fc44114cd7462929f2 Mon Sep 17 00:00:00 2001 From: y2keui Date: Sat, 2 May 2026 05:35:16 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EC=B4=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RGB_COLOR_AUDIT_2026-04-29.md | 248 ++++++ SYSTEM_SPEC.md | 8 +- Tornado3_2026Election/Domain/AppPage.cs | 2 + .../Domain/FormatCutDefinition.cs | 2 + Tornado3_2026Election/MainWindow.xaml | 20 +- Tornado3_2026Election/MainWindow.xaml.cs | 11 +- .../Services/ChannelScheduleEngine.cs | 66 +- .../Services/CutAppearancePolicyCatalog.cs | 12 +- .../Services/FormatCatalogService.cs | 21 +- .../Services/KarismaChartCellUpdate.cs | 7 + .../Services/KarismaPositionUpdate.cs | 10 + .../Services/KarismaSceneResolver.cs | 18 +- .../Services/KarismaSceneVariableCatalog.cs | 3 +- .../KarismaThumbnailGeneratorService.cs | 4 +- .../Services/KarismaTornado3Adapter.cs | 571 +++++++++++++- .../Services/PartyColorCatalog.cs | 4 +- .../Services/PreElectionHistoryService.cs | 9 + .../Services/SbsElectionApiClient.cs | 708 ++++++++++++++++-- .../Services/ScheduleTemplatePolicy.cs | 86 +++ .../Services/TornadoManager.cs | 76 +- .../Services/TornadoPathResolver.cs | 101 +-- .../ViewModels/ChannelScheduleViewModel.cs | 39 +- .../ViewModels/CutListEntryViewModel.cs | 10 +- .../ViewModels/DataViewModel.cs | 536 ++++++++++++- .../ViewModels/MainViewModel.cs | 54 +- ...reElectionHistoryWinnerEditRowViewModel.cs | 4 +- .../ViewModels/SettingsViewModel.cs | 27 +- .../skills/cut-design-debugger/SKILL.md | 4 +- .../references/repo-map.md | 2 +- .../references/validation-workflow.md | 8 +- .../scripts/validate-cut.ps1 | 11 +- tools/KarismaSceneCatalogNet48/Program.cs | 10 +- .../CurrentApiCutDiagnostics.cs | 315 +++++++- tools/KarismaTcpProbe/KarismaTcpProbe.csproj | 4 + tools/KarismaTcpProbe/LiveCutValidation.cs | 318 +++++++- tools/KarismaTcpProbe/Program.cs | 280 ++++++- 36 files changed, 3198 insertions(+), 411 deletions(-) create mode 100644 RGB_COLOR_AUDIT_2026-04-29.md create mode 100644 Tornado3_2026Election/Services/KarismaChartCellUpdate.cs create mode 100644 Tornado3_2026Election/Services/KarismaPositionUpdate.cs create mode 100644 Tornado3_2026Election/Services/ScheduleTemplatePolicy.cs diff --git a/RGB_COLOR_AUDIT_2026-04-29.md b/RGB_COLOR_AUDIT_2026-04-29.md new file mode 100644 index 0000000..b14e474 --- /dev/null +++ b/RGB_COLOR_AUDIT_2026-04-29.md @@ -0,0 +1,248 @@ +# RGB 색상 지침 전수조사 + +- 작성일: 2026-04-29 +- 기준 폴더: `E:\김의연\지역민방\T3_Cut` +- 기준 문서/코드: `RGB_SPEC_CUT_MAPPING.md`, `TSCN_VARIABLE_DISCOVERY_E_DRIVE.md`, `PartyColorCatalog` +- 판정 기준: + - 장면 변수에는 `정당명`, `정당바`, `정당판`, `정당원`, `정당색`, `그룹`, `득표율` 등이 있으나 RGB txt에 같은 항목의 색상 지침이 없으면 “색상 지침 없음”으로 정리했다. + - RGB txt가 컷명과 1:1로 대응하지 않고 shared/family/inferred/naming bridge/historical로 연결되면 “기준 파일 안내 필요”로 정리했다. + - 아래 내용은 RGB txt와 장면 변수 기준 1차 전수조사다. 샘플 이미지와 실제 송출 화면의 육안 색상 차이는 별도 캡처 대조가 필요하다. + +## 외부 공유용 핵심 이슈 + +[Normal] 1-2위_ani_광역단체장 + - 정당명 오브젝트가 있으나 RGB txt에는 정당명 색상 지침이 없음 + - RGB txt는 `정당판/득표율`, `정당바` 기준만 제공하므로, RGB txt대로 정당명까지 바꾸면 샘플 색상과 다르게 보일 수 있음 + - 현재 live 검증은 `정당판01`, `정당바01`, `득표율01`의 `SetStyleColor`만 확인되어 있음 + +## 색상 지침 누락 의심 컷 + +[Normal] 1-2위_광역단체장_시도별영상 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-2위_광역단체장,기초단체장_시도별영상.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-2위_교육감 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + +[Normal] 1-2위_기초단체장 + - 정당바 오브젝트가 있으나 RGB txt에는 정당바 색상 지침이 없음 + - 현재 RGB txt는 득표율 기준만 있음 + +[Normal] 1-2위_기초단체장_시도별영상 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-2위_광역단체장,기초단체장_시도별영상.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-3위_ani_광역단체장 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-3위_ani_광역단체장,보궐.txt`를 family 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-3위_ani_기초단체장 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-3위_ani_기초단체장(5760동일).txt`를 family 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-3위_기초단체장_5760 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-3위_ani_기초단체장(5760동일).txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-3위_보궐선거 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `1-3위_ani_광역단체장,보궐.txt`를 추정 연결 중이라 기준 파일 안내가 필요함 + +[Normal] 모든후보_광역단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `모든후보.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 모든후보_광역단체장_5760 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `모든후보.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 모든후보_교육감 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + +[Normal] 모든후보_교육감_5760 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `모든후보_교육감.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 모든후보_기초단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `모든후보.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 모든후보_기초단체장_5760 + - 정당명, 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `모든후보.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 접전_광역단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `접전,초접전.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 접전_기초단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `접전,초접전.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 초접전_광역단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `접전,초접전.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 초접전_기초단체장 + - 정당명, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `접전,초접전.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 이시각1위_광역단체장 + - 정당바, 정당색, 그룹 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - 현재 RGB txt는 정당명/득표율 기준만 있음 + +[Normal] 이시각1위_기초단체장 + - 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `이시각1위_기초단체장(5760동일).txt`를 family 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 이시각1위_기초단체장_HD + - 그룹, 득표율 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `이시각1위_기초단체장(5760동일).txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 판세_광역단체장 + - 정당명, 정당바 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - 현재 RGB txt는 지역명 기준만 있음 + +[Normal] 판세_기초단체장 + - 득표율 오브젝트가 있으나 RGB txt에는 득표율 색상 지침이 없음 + - `판세_광역단체장.txt`를 추정 연결 중이라 기준 파일 안내가 필요함 + +[Normal] 판세_기초단체장_5760 + - 득표율 오브젝트가 있으나 RGB txt에는 득표율 색상 지침이 없음 + - `판세_광역단체장.txt`를 추정 연결 중이라 기준 파일 안내가 필요함 + +[Bottom] 1-3위_광역단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `1-2위, 1-3위, 이시각1위.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 1-3위_기초단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `1-2위, 1-3위, 이시각1위.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 1위_광역단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `1-2위, 1-3위, 이시각1위.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 1위_기초단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `1-2위, 1-3위, 이시각1위.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 당선_광역단체장 + - 정당명, 그룹 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `당선.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 당선_광역의원 + - 정당명, 그룹 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `당선.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 당선_기초단체장 + - 정당명, 그룹 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `당선.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 당선_기초의원 + - 정당명, 그룹 오브젝트가 있으나 RGB txt에는 해당 색상 지침이 없음 + - `당선.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 전후보_광역단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `모든후보.txt`로 naming bridge 연결 중이라 기준 파일 안내가 필요함 + +[Bottom] 전후보_교육감 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `모든후보_교육감.txt`로 naming bridge 연결 중이라 기준 파일 안내가 필요함 + +[Bottom] 전후보_기초단체장 + - 그룹 오브젝트가 있으나 RGB txt에는 그룹 색상 지침이 없음 + - `모든후보.txt`로 naming bridge 연결 중이라 기준 파일 안내가 필요함 + +[Top] 광역단체장_2인_텍스트 + - 득표율 오브젝트가 있으나 RGB txt에는 득표율 색상 지침이 없음 + - `1-2위_텍스트.txt`를 text layout 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Top] 기초단체장_2인_텍스트 + - 득표율 오브젝트가 있으나 RGB txt에는 득표율 색상 지침이 없음 + - `1-2위_텍스트.txt`를 text layout 기준으로 사용 중이라 기준 파일 안내가 필요함 + +## 기준 파일 안내가 필요한 컷 + +[Normal] 1-2위_ani_기초단체장_5760 + - `1-2위_ani_기초단체장.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-2위_광역단체장 + - `1-2위_광역단체장, 보궐.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-2위_광역단체장_5760 + - `1-2위_광역단체장, 보궐.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 1-2위_보궐선거 + - `1-2위_광역단체장, 보궐.txt`를 추정 연결 중이라 기준 파일 안내가 필요함 + +[Normal] 경력_광역단체장_in + - `경력.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 경력_기초단체장_in + - `경력.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 당선_광역단체장/HD, 당선_광역의원/HD, 당선_기초단체장/HD, 당선_기초의원/HD + - `당선.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 당선_교육감_HD + - `당선_교육감.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 사전_역대당선자, 사전_역대당선자_기초단체장 + - `사전_역대당선.txt`를 historical 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 사전_역대당선자_교육감 + - `사전_역대당선_교육감.txt`를 historical 기준으로 사용 중이라 기준 파일 안내가 필요함 + +[Normal] 이시각1위_광역단체장_HD + - `이시각1위_광역단체장.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Bottom] 1-2위_광역단체장, 1-2위_기초단체장 + - `1-2위, 1-3위, 이시각1위.txt`를 공유 사용 중이라 기준 파일 안내가 필요함 + +[Top] 광역단체장_2인, 기초단체장_2인 + - `1-2위_사진.txt`를 photo layout 기준으로 사용 중이라 기준 파일 안내가 필요함 + +## RGB 명시 매핑이 아직 없는 컷 + +[Normal] 광역의원표 + - RGB txt 명시 매핑이 아직 없음 + +[Normal] 광역의원표_HD + - RGB txt 명시 매핑이 아직 없음 + +[Normal] 기초의원표 + - RGB txt 명시 매핑이 아직 없음 + +[Normal] 기초의원표_HD + - RGB txt 명시 매핑이 아직 없음 + +[Normal] 역대시도판세_광역단체장 + - RGB txt 명시 매핑이 아직 없음 + +[Normal] 역대시도판세_기초단체장 + - RGB txt 명시 매핑이 아직 없음 + +[Top] 판세_광역단체장 + - RGB txt 명시 매핑이 아직 없음 + +[Top] 판세_광역의원 + - RGB txt 명시 매핑이 아직 없음 + +[Top] 판세_교육감 + - RGB txt 명시 매핑이 아직 없음 + +[Top] 판세_기초단체장 + - RGB txt 명시 매핑이 아직 없음 + +[Top] 판세_기초의원 + - RGB txt 명시 매핑이 아직 없음 + +## 색상 작업 대상에서 제외해도 되는 컷 + +[공통] 민방_타이틀*, 사전_역대투표율*, 사전투표율, 투표율* + - 정당색/후보색 중심 컷이 아니라 현재 RGB 정당 색상 이슈 대상에서는 제외 가능함 + +[공통] 투표율_사진, 투표율_선거구별, 투표율_선거구별 사전, 투표율_시도별, 투표율_영상 + - 정당색/후보색 중심 컷이 아니라 현재 RGB 정당 색상 이슈 대상에서는 제외 가능함 diff --git a/SYSTEM_SPEC.md b/SYSTEM_SPEC.md index 1511d2f..885e3e1 100644 --- a/SYSTEM_SPEC.md +++ b/SYSTEM_SPEC.md @@ -196,12 +196,10 @@ - `TORNADO_KARISMA_BIND_BOTTOM` - `TORNADO_KARISMA_BIND_VIDEOWALL` -### 9.4 T3_Cut 탐색 +### 9.4 T3_Cut 경로 -- `TORNADO_T3CUT_PATH` -- `문서\\Tornado3 Data\\T3_Cut\\T3_Cut` -- `문서\\Tornado3 Data\\T3_Cut` -- `다운로드\\T3_Cut` +- 앱, 송출 어댑터, 썸네일 생성기, Karisma 디버깅 도구는 `D:\\Elect2026\\T3_Cut`를 고정 기준 경로로 사용한다. +- 사용자 설정값, 저장된 상태값, `TORNADO_T3CUT_PATH`, 디버깅 도구의 `--image-root`/`--root` 입력은 T3_Cut 기준 경로를 바꾸지 않는다. ### 9.5 폴백 diff --git a/Tornado3_2026Election/Domain/AppPage.cs b/Tornado3_2026Election/Domain/AppPage.cs index 116603a..fa9ae7a 100644 --- a/Tornado3_2026Election/Domain/AppPage.cs +++ b/Tornado3_2026Election/Domain/AppPage.cs @@ -8,6 +8,8 @@ public enum AppPage Bottom, VideoWall, PreElectionData, + TurnoutData, + CountingData, Data, CutList, Settings, diff --git a/Tornado3_2026Election/Domain/FormatCutDefinition.cs b/Tornado3_2026Election/Domain/FormatCutDefinition.cs index 75d979f..6f6fff0 100644 --- a/Tornado3_2026Election/Domain/FormatCutDefinition.cs +++ b/Tornado3_2026Election/Domain/FormatCutDefinition.cs @@ -7,4 +7,6 @@ public sealed class FormatCutDefinition public required double DurationSeconds { get; set; } public int CandidateStartIndex { get; init; } + + public bool UseEndScene { get; init; } } diff --git a/Tornado3_2026Election/MainWindow.xaml b/Tornado3_2026Election/MainWindow.xaml index b6adac1..bbb6204 100644 --- a/Tornado3_2026Election/MainWindow.xaml +++ b/Tornado3_2026Election/MainWindow.xaml @@ -49,7 +49,8 @@ - + + @@ -101,7 +102,7 @@ @@ -893,7 +894,7 @@ @@ -917,13 +918,13 @@ - + - +