Compare commits
23 Commits
28a1011c48
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| dc6c670c8e | |||
| 7e3f496ae4 | |||
| df01f07c44 | |||
| 24915c1dca | |||
| 72afee11fc | |||
| 258b3ddaeb | |||
| a743a5f709 | |||
| 8beee8e419 | |||
| aa2336358b | |||
| f9596a2033 | |||
| e76c37ef56 | |||
| 8b5c92194f | |||
| 960163dad8 | |||
| e40a2a568e | |||
| 57aeba4bb8 | |||
| 31857815d7 | |||
| 7cedeef5a9 | |||
| 210b546130 | |||
| fa49317b34 | |||
| e0c5f4dbfe | |||
| 54c778c75d | |||
| e29267c530 | |||
| 28e2806678 |
20
.agents/plugins/marketplace.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "tornado3-local",
|
||||||
|
"interface": {
|
||||||
|
"displayName": "Tornado3 Local Plugins"
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "cut-design-debugger",
|
||||||
|
"source": {
|
||||||
|
"source": "local",
|
||||||
|
"path": "./plugins/cut-design-debugger"
|
||||||
|
},
|
||||||
|
"policy": {
|
||||||
|
"installation": "AVAILABLE",
|
||||||
|
"authentication": "ON_INSTALL"
|
||||||
|
},
|
||||||
|
"category": "Productivity"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
0
.dotnet-cli-home/.dotnet/10.0.202.toolpath.sentinel
Normal file
32
AGENTS.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Repository Instructions
|
||||||
|
|
||||||
|
## MSIX publish after user approval
|
||||||
|
|
||||||
|
When the user says a completed change is approved and asks to publish, deploy,
|
||||||
|
patch, or update the MSIX, use the automated NAS publish script instead of
|
||||||
|
manually editing package versions or copying files.
|
||||||
|
|
||||||
|
Normal approved publish command:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
powershell -ExecutionPolicy Bypass -File .\tools\msix\Publish-MsixToNas.ps1 -Configuration Release -IncrementPackageRevision
|
||||||
|
```
|
||||||
|
|
||||||
|
Prerequisites:
|
||||||
|
|
||||||
|
- `NAS_USER` must be set to the NAS account with write access to `/volume1/web/msix`.
|
||||||
|
- `NAS_SSH_KEY` should point to the SSH private key for that NAS account.
|
||||||
|
- The signing certificate thumbprint must remain
|
||||||
|
`E691A33C64DF20A204FFD4F096B9C3EB4B95709C`.
|
||||||
|
|
||||||
|
The script will:
|
||||||
|
|
||||||
|
1. Read `Tornado3_2026Election/Package.appxmanifest`.
|
||||||
|
2. Increment the fourth package version part.
|
||||||
|
3. Build and sign the MSIX package.
|
||||||
|
4. Rewrite App Installer URLs to the public NAS path.
|
||||||
|
5. Upload the files to the NAS over SSH/SCP.
|
||||||
|
6. Verify the public URLs after upload.
|
||||||
|
|
||||||
|
Do not run this publish command unless the user has explicitly approved
|
||||||
|
publishing or deployment.
|
||||||
31
COUNTER_DEBUG.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Counter Debug Notes
|
||||||
|
|
||||||
|
Date: 2026-04-14
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
- Scene: `1-2위_ani_광역단체장`
|
||||||
|
- Counter objects: `득표율01`, `득표율02`
|
||||||
|
- API: `IKACounter.SetCounterNumberKey(KeyIndex, Number)`
|
||||||
|
- Key index used for this test: `1`
|
||||||
|
|
||||||
|
## Current test values
|
||||||
|
|
||||||
|
- `득표율01` -> `30`
|
||||||
|
- `득표율02` -> `20`
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- `tools/KarismaTcpProbe` supports `--test-counter`.
|
||||||
|
- Verified against `127.0.0.1:30001`.
|
||||||
|
- `OnSetCounterNumberKey` returned `RESULT_SUCCESS` for both `득표율01` and `득표율02`.
|
||||||
|
|
||||||
|
## Runtime Mapping Update
|
||||||
|
|
||||||
|
- `KarismaTornado3Adapter` now maps scene variables from `ElectionDataSnapshot` at send time.
|
||||||
|
- Candidate text keys such as `후보명NN`, `정당명NN`, `득표수NN`, `득표율NN`, `순위NN`, `표차NN`, `득표차NN` are populated automatically.
|
||||||
|
- Common scene keys such as `선거구명01`, `시도명01`, `개표율01`, `투표율01`, `전국투표율01` are populated automatically.
|
||||||
|
- Animated templates with `ani` in the template id or name also send `IKACounter.SetCounterNumberKey(1, voteRate)` for each `득표율NN`.
|
||||||
|
- `유확당NN` resolves to `유력.vrv`, `확정.vrv` or `확실.vrv`, and `당선.vrv`.
|
||||||
|
- `후보사진NN` falls back to `Images/Photo/sampleNEW.png` when a candidate-specific photo is not found.
|
||||||
|
- Party image keys such as `정당바NN`, `정당판NN`, `정당심볼NN`, `그룹NN` resolve from the `Images/Dang` asset folders when a matching party file exists.
|
||||||
189
CURRENT_IMPLEMENTATION_STATUS_2026-04-17.md
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
# 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`
|
||||||
140
INTEGRATION_NOTES_2026-04-15.md
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
# 2026-04-15 통합 작업 메모
|
||||||
|
|
||||||
|
이 문서는 2026-04-15에 시작한 연동 점검 메모를 2026-04-18 기준으로 현행화한 기록이다.
|
||||||
|
|
||||||
|
## 0. 작업 요약
|
||||||
|
|
||||||
|
- SBS 선거 API 기준 실연동 범위를 `광역단체장(3)`, `기초단체장(4)`, `교육감(11)`으로 정리했다.
|
||||||
|
- 선거 종류 변경 시 실제 SBS `선거구` 코드 기준으로 지역 목록과 요청 코드가 맞물리도록 보정했다.
|
||||||
|
- `기초단체장` 지역 옵션 교체 중 발생하던 `ArgumentNullException (key)` 및 `ObservableCollection during CollectionChanged` 계열 UI 전환 이슈를 방어 로직으로 정리했다.
|
||||||
|
- `교육감`, `기초단체장` 사전 방송용 데이터 공백은 저장형 사전데이터(JSON)로 보완했다.
|
||||||
|
- 사전데이터는 `사전데이터` 페이지에서 조회/수정/저장 가능하게 만들었다.
|
||||||
|
- `사전_역대당선자*` 계열은 표기 정당과 색상 포맷 정당을 분리해 저장할 수 있게 했다.
|
||||||
|
- 직함 표기는 광역단체장만이 아니라 `광역단체장`, `교육감`, `기초단체장` 전 컷으로 확대했다.
|
||||||
|
- 컷 카탈로그는 실제 `.tscn` 이름 기준으로 정리했고, 과거 별칭은 호환용 alias로만 유지한다.
|
||||||
|
- 컷 썸네일은 `Assets/Thumbnail`에 저장하고, 제어 패널과 컷리스트에서 프리뷰를 표시하도록 정리했다.
|
||||||
|
|
||||||
|
## 1. 선거 종류별 연동 결과
|
||||||
|
|
||||||
|
### `3` 광역단체장
|
||||||
|
|
||||||
|
- 선거구 목록: `sungerInfo/region?type=선거구&sungerType=3`
|
||||||
|
- 개표 요청: `gaepyo/3/sungergus?ids=<선거구 id>`
|
||||||
|
- 사전 투표율 요청: `tupyo/3/sidos?ids=<시도 id>`
|
||||||
|
- 결론:
|
||||||
|
- 개표 연동 정상
|
||||||
|
- 사전 투표율 연동 정상
|
||||||
|
|
||||||
|
### `4` 기초단체장
|
||||||
|
|
||||||
|
- 선거구 목록: `sungerInfo/region?type=선거구&sungerType=4`
|
||||||
|
- 개표 요청: `gaepyo/4/sungergus?ids=<선거구 id>`
|
||||||
|
- 결론:
|
||||||
|
- 개표 연동 정상
|
||||||
|
- SBS API 사전 투표율은 미지원
|
||||||
|
- 사전 방송용 역사 데이터는 저장형 사전데이터에서 제공
|
||||||
|
|
||||||
|
### `11` 교육감
|
||||||
|
|
||||||
|
- 선거구 목록: `sungerInfo/region?type=선거구&sungerType=11`
|
||||||
|
- 개표 요청: `gaepyo/11/sungergus?ids=<선거구 id>`
|
||||||
|
- 결론:
|
||||||
|
- 개표 연동 정상
|
||||||
|
- SBS API 사전 투표율은 미지원
|
||||||
|
- 사전 방송용 역사 데이터는 저장형 사전데이터에서 제공
|
||||||
|
|
||||||
|
## 2. SBS API 제한 사항
|
||||||
|
|
||||||
|
- `tupyo/4/...` 계열은 현재 `기초단체장`에 대해 `400`을 반환한다.
|
||||||
|
- `tupyo/11/...` 계열은 현재 `교육감`에 대해 `400`을 반환한다.
|
||||||
|
- 위 두 경우는 앱 오류가 아니라 API 제공 범위 밖으로 본다.
|
||||||
|
- 실제 운영에서는 저장형 사전데이터로 공백을 메운다.
|
||||||
|
|
||||||
|
## 3. 저장형 사전데이터 운영
|
||||||
|
|
||||||
|
- 저장 위치: `Tornado3_2026Election/Assets/Data/pre_election_history.json`
|
||||||
|
- 2026-04-18 기준 저장 건수:
|
||||||
|
- `광역단체장` 17건
|
||||||
|
- `교육감` 17건
|
||||||
|
- `기초단체장` 262건
|
||||||
|
- 페이지 기능:
|
||||||
|
- 선거 종류/지역 선택
|
||||||
|
- 역대 투표율 카드
|
||||||
|
- 역대 당선자 카드
|
||||||
|
- 엑셀형 편집
|
||||||
|
- 저장
|
||||||
|
- `사전_역대당선자`, `사전_역대당선자_교육감`, `사전_역대당선자_기초단체장`은 `ColorParty`를 저장할 수 있다.
|
||||||
|
|
||||||
|
## 4. 지역 선택 / 전환 안정화
|
||||||
|
|
||||||
|
- `DistrictName`, `DistrictCode`, `ElectionType`는 내부적으로 null이 아닌 문자열 상태를 유지한다.
|
||||||
|
- 지역 옵션 교체 중에는 `_isUpdatingDistrictOptions` 플래그로 transient UI 값을 무시한다.
|
||||||
|
- 사전데이터용 지역 콤보박스도 별도 `_isUpdatingPreElectionHistoryDistrictOptions` 플래그로 같은 문제를 피한다.
|
||||||
|
- 선택 변경 뒤에는 debounce 후 자동 재조회한다.
|
||||||
|
|
||||||
|
## 5. 직함 표기 확대
|
||||||
|
|
||||||
|
- 현재 직함 표기는 `광역단체장`, `교육감`, `기초단체장` 전부에 적용한다.
|
||||||
|
- 적용 대상 변수:
|
||||||
|
- `선거구명`
|
||||||
|
- `시도명`
|
||||||
|
- `RegionName`
|
||||||
|
- `ElectionDistrictName`
|
||||||
|
- `DistrictName`
|
||||||
|
- 예:
|
||||||
|
- `서울특별시` -> `서울시장`
|
||||||
|
- `전라남도` -> `전라남도지사`
|
||||||
|
- `부산광역시` -> `부산광역시교육감`
|
||||||
|
- `창원시` -> `창원시장`
|
||||||
|
|
||||||
|
## 6. 컷 카탈로그 / 실제 씬 파일
|
||||||
|
|
||||||
|
- 현재 카탈로그는 실제 존재하는 `.tscn` 파일명 기준으로 정리했다.
|
||||||
|
- 2026-04-18 기준 canonical 카탈로그:
|
||||||
|
- Bottom 15컷
|
||||||
|
- Normal 63컷
|
||||||
|
- Top 11컷
|
||||||
|
- 총 89컷
|
||||||
|
- 기존에 사용되던 `_L`, `_END`, `_7680` 계열은 현재 카탈로그에서 제거했다.
|
||||||
|
- 다만 저장된 큐/상태 복원을 위해 legacy format alias는 유지한다.
|
||||||
|
- 전수 감사 기준 실제 씬 누락은 `0건`이다.
|
||||||
|
|
||||||
|
## 7. 썸네일
|
||||||
|
|
||||||
|
- 저장 위치: `Assets/Thumbnail/<template.Id>.png`
|
||||||
|
- 제어 패널의 컷 선택 콤보박스에서 프리뷰 표시
|
||||||
|
- `컷리스트` 페이지에서 전체 현황 확인
|
||||||
|
- `썸네일 생성` 기능은 Karisma에 씬을 로드해 320x180 PNG로 저장
|
||||||
|
|
||||||
|
## 8. 변수 매핑 관련 기록
|
||||||
|
|
||||||
|
- Karisma 장면 변수 지원 범위 로깅을 유지한다.
|
||||||
|
- 다음 alias 매핑을 보강했다.
|
||||||
|
- `기준시`, `기준시01`, `기준시02`
|
||||||
|
- `유권자수`, `유권자수01`
|
||||||
|
- `투표자수`, `투표자수01`
|
||||||
|
- `득표수바NN`
|
||||||
|
- `정당원NN`
|
||||||
|
- `정당색NN`
|
||||||
|
- 역사 당선자 컷은 저장형 사전데이터의 `ColorParty`와 정당 별칭 정규화를 함께 사용한다.
|
||||||
|
|
||||||
|
## 9. 주요 변경 파일
|
||||||
|
|
||||||
|
- `Tornado3_2026Election/Services/SbsElectionApiClient.cs`
|
||||||
|
- `Tornado3_2026Election/ViewModels/DataViewModel.cs`
|
||||||
|
- `Tornado3_2026Election/ViewModels/MainViewModel.cs`
|
||||||
|
- `Tornado3_2026Election/ViewModels/ChannelScheduleViewModel.cs`
|
||||||
|
- `Tornado3_2026Election/Services/PreElectionHistoryService.cs`
|
||||||
|
- `Tornado3_2026Election/Services/CutThumbnailAssetCatalog.cs`
|
||||||
|
- `Tornado3_2026Election/Services/KarismaThumbnailGeneratorService.cs`
|
||||||
|
- `Tornado3_2026Election/Services/FormatCatalogService.cs`
|
||||||
|
- `Tornado3_2026Election/Services/KarismaTornado3Adapter.cs`
|
||||||
|
|
||||||
|
## 10. 현재 체크 결과
|
||||||
|
|
||||||
|
- `dotnet build .\\Tornado3_2026Election\\Tornado3_2026Election.csproj` 통과
|
||||||
|
- 기존 경고는 유지
|
||||||
|
- `WindowsBase` 참조 충돌
|
||||||
|
- MSIX 인증서 경고
|
||||||
|
- `MockTornado3Adapter.ConnectionChanged` 미사용 경고
|
||||||
|
- 컷 카탈로그 감사 결과 실제 씬 누락 `0건`
|
||||||
31
LIVE_VALIDATE_1-2위_ani_광역단체장.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Scene Variable Validation
|
||||||
|
|
||||||
|
- Generated: 2026-04-14 16:51:07
|
||||||
|
- Scene: `E:\김의연\지역민방\T3_Cut\Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
- Operations: `C:\Users\MD\source\repos\Tornado3_2026Election\tools\KarismaTcpProbe\scene-ops\1-2위_ani_광역단체장_live.json`
|
||||||
|
- Success Count: 21
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
| Object | Method | Payload | Result | Detail |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | 88.8 | RESULT_SUCCESS | |
|
||||||
|
| 시도명01 | SetValue | 서울특별시 | RESULT_SUCCESS | |
|
||||||
|
| 표차01 | SetValue | 25,000 | RESULT_SUCCESS | |
|
||||||
|
| 유확당01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Tag\\당선.vrv | RESULT_SUCCESS | |
|
||||||
|
| 순위01 | SetValue | 1 | RESULT_SUCCESS | |
|
||||||
|
| 정당명01 | SetValue | 더불어민주당 | RESULT_SUCCESS | |
|
||||||
|
| 후보명01 | SetValue | 김후보 | RESULT_SUCCESS | |
|
||||||
|
| 득표수01 | SetValue | 2,123,456 | RESULT_SUCCESS | |
|
||||||
|
| 정당바01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Dang\\Dang_Map\\더불어민주당.png | RESULT_SUCCESS | |
|
||||||
|
| 정당판01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Dang\\Dang_Round\\더불어민주당.png | RESULT_SUCCESS | |
|
||||||
|
| 후보사진01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Photo\\sampleNEW.png | RESULT_SUCCESS | |
|
||||||
|
| 득표율01 | SetCounterNumberKey | keyIndex=1, number=34.8 | RESULT_SUCCESS | |
|
||||||
|
| 유확당02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Tag\\유력.vrv | RESULT_SUCCESS | |
|
||||||
|
| 순위02 | SetValue | 2 | RESULT_SUCCESS | |
|
||||||
|
| 정당명02 | SetValue | 국민의힘 | RESULT_SUCCESS | |
|
||||||
|
| 후보명02 | SetValue | 이후보 | RESULT_SUCCESS | |
|
||||||
|
| 득표수02 | SetValue | 1,123,456 | RESULT_SUCCESS | |
|
||||||
|
| 정당바02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Dang\\Dang_Map\\국민의힘.png | RESULT_SUCCESS | |
|
||||||
|
| 정당판02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Dang\\Dang_Round\\국민의힘.png | RESULT_SUCCESS | |
|
||||||
|
| 후보사진02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Photo\\sampleNEW.png | RESULT_SUCCESS | |
|
||||||
|
| 득표율02 | SetCounterNumberKey | keyIndex=1, number=32 | RESULT_SUCCESS | |
|
||||||
14
LIVE_VALIDATE_1-2위_ani_광역단체장_judgement_visibility.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Scene Variable Validation
|
||||||
|
|
||||||
|
- Generated: 2026-04-17 00:08:19
|
||||||
|
- Scene: `E:\김의연\지역민방\T3_Cut\Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
- Operations: `C:\Users\MD\source\repos\Tornado3_2026Election\tools\KarismaTcpProbe\scene-ops\1-2위_ani_광역단체장_judgement_visibility.json`
|
||||||
|
- Success Count: 4
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
| Object | Method | Payload | Result | Detail |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 유확당01 | SetVisible | visible=False | RESULT_SUCCESS | |
|
||||||
|
| 유확당01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Normal_민방\\Images\\Tag\\당선.vrv | RESULT_SUCCESS | |
|
||||||
|
| 유확당01 | SetVisible | visible=True | RESULT_SUCCESS | |
|
||||||
|
| 유확당02 | SetVisible | visible=False | RESULT_SUCCESS | |
|
||||||
12
LIVE_VALIDATE_1-2위_ani_광역단체장_labels.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Scene Variable Validation
|
||||||
|
|
||||||
|
- Generated: 2026-04-17 00:01:13
|
||||||
|
- Scene: `E:\김의연\지역민방\T3_Cut\Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
- Operations: `C:\Users\MD\source\repos\Tornado3_2026Election\tools\KarismaTcpProbe\scene-ops\1-2위_ani_광역단체장_labels.json`
|
||||||
|
- Success Count: 2
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
| Object | Method | Payload | Result | Detail |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | 개표 98.7% | RESULT_SUCCESS | |
|
||||||
|
| 시도명01 | SetValue | 부산시장 | RESULT_SUCCESS | |
|
||||||
13
LIVE_VALIDATE_1-2위_ani_광역단체장_style.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Scene Variable Validation
|
||||||
|
|
||||||
|
- Generated: 2026-04-16 23:55:53
|
||||||
|
- Scene: `E:\김의연\지역민방\T3_Cut\Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
- Operations: `C:\Users\MD\source\repos\Tornado3_2026Election\tools\KarismaTcpProbe\scene-ops\1-2위_ani_광역단체장_style.json`
|
||||||
|
- Success Count: 3
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
| Object | Method | Payload | Result | Detail |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| 정당판01 | SetStyleColor | styleType=face, order=0, rgba=(57, 84, 199, 255) | RESULT_SUCCESS | |
|
||||||
|
| 정당바01 | SetStyleColor | styleType=face, order=0, rgba=(0, 30, 84, 255) | RESULT_SUCCESS | |
|
||||||
|
| 득표율01 | SetStyleColor | styleType=edge, order=0, rgba=(57, 84, 199, 255) | RESULT_SUCCESS | |
|
||||||
9
OBJECT_TYPE_QUERY.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Object Type Query
|
||||||
|
|
||||||
|
- Generated: 2026-05-10 04:13:49
|
||||||
|
- Scene: `D:\Elect2026\T3_Cut\Elect2026_Bottom_민방\전후보_광역단체장.tscn`
|
||||||
|
- Objects Queried: 1
|
||||||
|
|
||||||
|
| Object | Result | Type | Detail |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 득표율01,득표율02,득표율03 | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | |
|
||||||
248
RGB_COLOR_AUDIT_2026-04-29.md
Normal file
@@ -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 정당 색상 이슈 대상에서는 제외 가능함
|
||||||
172
RGB_SPEC_CUT_MAPPING.md
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
# RGB Spec Cut Mapping
|
||||||
|
|
||||||
|
- Updated: 2026-04-19
|
||||||
|
- Source root: `E:\김의연\지역민방\T3_Cut`
|
||||||
|
- 이 문서는 현재 화면에 노출되는 canonical 컷 이름 기준으로 정리한다.
|
||||||
|
- 과거 `_L`, `_END`, `_7680` 계열 이름은 저장 호환용 alias만 유지하며, 아래 표에는 적지 않는다.
|
||||||
|
|
||||||
|
## Runtime Rule
|
||||||
|
|
||||||
|
- RGB txt header가 `style > ... > color` 또는 `> ... > color` 형태면 해당 오브젝트는 이미지 `SetValue` 대신 `SetStyleColor`를 우선 적용한다.
|
||||||
|
- `face 2번째`처럼 순서가 명시된 경우 `SetStyleColor(..., order=1, ...)`로 적용한다.
|
||||||
|
- `정당바`는 RGB spec section `정당바` 우선
|
||||||
|
- `정당판`은 RGB spec section `정당판` 우선
|
||||||
|
- `정당원`은 RGB spec section `정당원` 우선, 없으면 `정당색`, `정당판`, `정당바` 순
|
||||||
|
- `정당색`은 RGB spec section `정당색` 우선, 없으면 `정당바`, `정당판` 순
|
||||||
|
- `그룹`은 `그룹`이 없으면 `정당바`, `정당판` 순
|
||||||
|
- 기존 png 자산이 있으면 그대로 사용한다.
|
||||||
|
- 기존 png가 없으면 `%LOCALAPPDATA%\Tornado3_2026Election\GeneratedPartyAssets` 아래에 RGB 기반 fallback png를 생성한다.
|
||||||
|
- `사전_역대당선자*` 계열은 `ColorParty` 값이 있으면 이를 우선 사용하고, 없으면 표기 정당명과 역사 정당 별칭을 기준으로 색상 자산을 찾는다.
|
||||||
|
|
||||||
|
## Verified
|
||||||
|
|
||||||
|
- `1-2위_ani_광역단체장`
|
||||||
|
- `정당판01` -> `SetStyleColor(face, order=0)`
|
||||||
|
- `정당바01` -> `SetStyleColor(face, order=0)`
|
||||||
|
- `득표율01` -> `SetStyleColor(edge, order=0)`
|
||||||
|
- 검증 로그: `LIVE_VALIDATE_1-2위_ani_광역단체장_style.md`
|
||||||
|
|
||||||
|
## Implemented Mapping
|
||||||
|
|
||||||
|
### Normal - 1~2위 / 1~3위 계열
|
||||||
|
|
||||||
|
| Canonical template | RGB spec file | Note |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `1-2위_ani_광역단체장` | `1-2위_ani_광역단체장.txt` | exact |
|
||||||
|
| `1-2위_ani_기초단체장` | `1-2위_ani_기초단체장.txt` | exact |
|
||||||
|
| `1-2위_ani_기초단체장_5760` | `1-2위_ani_기초단체장.txt` | shared |
|
||||||
|
| `1-2위_광역단체장` | `1-2위_광역단체장, 보궐.txt` | shared |
|
||||||
|
| `1-2위_광역단체장_5760` | `1-2위_광역단체장, 보궐.txt` | shared |
|
||||||
|
| `1-2위_광역단체장_시도별영상` | `1-2위_광역단체장,기초단체장_시도별영상.txt` | family |
|
||||||
|
| `1-2위_교육감` | `1-2위_교육감.txt` | exact |
|
||||||
|
| `1-2위_기초단체장` | `1-2위_기초단체장.txt` | exact |
|
||||||
|
| `1-2위_기초단체장_시도별영상` | `1-2위_광역단체장,기초단체장_시도별영상.txt` | family |
|
||||||
|
| `1-2위_보궐선거` | `1-2위_광역단체장, 보궐.txt` | inferred |
|
||||||
|
| `1-3위_ani_광역단체장` | `1-3위_ani_광역단체장,보궐.txt` | family |
|
||||||
|
| `1-3위_ani_기초단체장` | `1-3위_ani_기초단체장(5760동일).txt` | family |
|
||||||
|
| `1-3위_기초단체장_5760` | `1-3위_ani_기초단체장(5760동일).txt` | shared |
|
||||||
|
| `1-3위_보궐선거` | `1-3위_ani_광역단체장,보궐.txt` | inferred |
|
||||||
|
|
||||||
|
### Normal - 경력 / 당선 / 이시각1위 / 접전
|
||||||
|
|
||||||
|
| Canonical template | RGB spec file | Note |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `경력_광역단체장_in` | `경력.txt` | shared |
|
||||||
|
| `경력_기초단체장_in` | `경력.txt` | shared |
|
||||||
|
| `당선_광역단체장` | `당선.txt` | shared |
|
||||||
|
| `당선_광역단체장_HD` | `당선.txt` | shared |
|
||||||
|
| `당선_광역의원` | `당선.txt` | shared |
|
||||||
|
| `당선_광역의원_HD` | `당선.txt` | shared |
|
||||||
|
| `당선_교육감` | `당선_교육감.txt` | exact |
|
||||||
|
| `당선_교육감_HD` | `당선_교육감.txt` | shared |
|
||||||
|
| `당선_기초단체장` | `당선.txt` | shared |
|
||||||
|
| `당선_기초단체장_HD` | `당선.txt` | shared |
|
||||||
|
| `당선_기초의원` | `당선.txt` | shared |
|
||||||
|
| `당선_기초의원_HD` | `당선.txt` | shared |
|
||||||
|
| `이시각1위_광역단체장` | `이시각1위_광역단체장.txt` | exact |
|
||||||
|
| `이시각1위_광역단체장_HD` | `이시각1위_광역단체장.txt` | shared |
|
||||||
|
| `이시각1위_기초단체장` | `이시각1위_기초단체장(5760동일).txt` | family |
|
||||||
|
| `이시각1위_기초단체장_HD` | `이시각1위_기초단체장(5760동일).txt` | shared |
|
||||||
|
| `접전_광역단체장` | `접전,초접전.txt` | shared |
|
||||||
|
| `접전_기초단체장` | `접전,초접전.txt` | shared |
|
||||||
|
| `초접전_광역단체장` | `접전,초접전.txt` | shared |
|
||||||
|
| `초접전_기초단체장` | `접전,초접전.txt` | shared |
|
||||||
|
|
||||||
|
### Normal - 모든후보 / 판세 / 역사 컷
|
||||||
|
|
||||||
|
| Canonical template | RGB spec file | Note |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `모든후보_광역단체장` | `모든후보.txt` | shared |
|
||||||
|
| `모든후보_광역단체장_5760` | `모든후보.txt` | shared |
|
||||||
|
| `모든후보_교육감` | `모든후보_교육감.txt` | exact |
|
||||||
|
| `모든후보_교육감_5760` | `모든후보_교육감.txt` | shared |
|
||||||
|
| `모든후보_기초단체장` | `모든후보.txt` | shared |
|
||||||
|
| `모든후보_기초단체장_5760` | `모든후보.txt` | shared |
|
||||||
|
| `사전_역대당선자` | `사전_역대당선.txt` | historical |
|
||||||
|
| `사전_역대당선자_교육감` | `사전_역대당선_교육감.txt` | historical |
|
||||||
|
| `사전_역대당선자_기초단체장` | `사전_역대당선.txt` | historical |
|
||||||
|
| `판세_광역단체장` | `판세_광역단체장.txt` | exact |
|
||||||
|
| `판세_기초단체장` | `판세_광역단체장.txt` | inferred |
|
||||||
|
| `판세_기초단체장_5760` | `판세_광역단체장.txt` | inferred |
|
||||||
|
|
||||||
|
### Bottom
|
||||||
|
|
||||||
|
| Canonical template | RGB spec file | Note |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `1-2위_광역단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `1-2위_기초단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `1-3위_광역단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `1-3위_기초단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `1위_광역단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `1위_기초단체장` | `1-2위, 1-3위, 이시각1위.txt` | shared |
|
||||||
|
| `당선_광역단체장` | `당선.txt` | shared |
|
||||||
|
| `당선_광역의원` | `당선.txt` | shared |
|
||||||
|
| `당선_기초단체장` | `당선.txt` | shared |
|
||||||
|
| `당선_기초의원` | `당선.txt` | shared |
|
||||||
|
| `전후보_광역단체장` | `모든후보.txt` | naming bridge |
|
||||||
|
| `전후보_교육감` | `모든후보_교육감.txt` | naming bridge |
|
||||||
|
| `전후보_기초단체장` | `모든후보.txt` | naming bridge |
|
||||||
|
|
||||||
|
### Top
|
||||||
|
|
||||||
|
| Canonical template | RGB spec file | Note |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `광역단체장_2인` | `1-2위_사진.txt` | photo layout |
|
||||||
|
| `기초단체장_2인` | `1-2위_사진.txt` | photo layout |
|
||||||
|
| `광역단체장_2인_텍스트` | `1-2위_텍스트.txt` | text layout |
|
||||||
|
| `기초단체장_2인_텍스트` | `1-2위_텍스트.txt` | text layout |
|
||||||
|
|
||||||
|
## No Explicit Mapping Yet
|
||||||
|
|
||||||
|
### Normal
|
||||||
|
|
||||||
|
- `광역의원표`
|
||||||
|
- `광역의원표_HD`
|
||||||
|
- `기초의원표`
|
||||||
|
- `기초의원표_HD`
|
||||||
|
- `역대시도판세_광역단체장`
|
||||||
|
- `역대시도판세_기초단체장`
|
||||||
|
|
||||||
|
### Top
|
||||||
|
|
||||||
|
- `판세_광역단체장`
|
||||||
|
- `판세_광역의원`
|
||||||
|
- `판세_교육감`
|
||||||
|
- `판세_기초단체장`
|
||||||
|
- `판세_기초의원`
|
||||||
|
|
||||||
|
## No Party Color Work Needed Right Now
|
||||||
|
|
||||||
|
- `민방_타이틀*`
|
||||||
|
- `사전_역대투표율*`
|
||||||
|
- `사전투표율`
|
||||||
|
- `투표율*`
|
||||||
|
- `투표율_사진`
|
||||||
|
- `투표율_선거구별`
|
||||||
|
- `투표율_선거구별 사전`
|
||||||
|
- `투표율_시도별`
|
||||||
|
- `투표율_영상`
|
||||||
|
|
||||||
|
## Compatibility Note
|
||||||
|
|
||||||
|
- 예전 문서나 저장 상태에 남아 있는 아래 이름들은 현재 canonical 이름으로 내부 매핑한다.
|
||||||
|
- `_L` 계열
|
||||||
|
- `_END` 계열
|
||||||
|
- `판세_기초단체장_7680`
|
||||||
|
- RGB spec 운영 문서는 앞으로 canonical 이름만 기준으로 관리한다.
|
||||||
|
|
||||||
|
## 2026-04-19 Runtime Note
|
||||||
|
|
||||||
|
- style color binding이 있는 오브젝트는 후보 슬롯 clear 단계에서 들어간 빈 `SetValue("")`를 최종 values payload에서 제거해야 한다.
|
||||||
|
- 빈 `SetValue`가 남아 있으면 `Path Shape` face color가 적용되지 않은 것처럼 보일 수 있다.
|
||||||
|
- `1-2위_ani_광역단체장`의 `정당바`는 RGB spec의 `정당바` 값을 그대로 사용해 `SetStyleColor(face, order=0, ...)`로 적용한다.
|
||||||
|
- `더불어민주당 = 0,30,84`
|
||||||
|
- `국민의힘 = 95,0,15`
|
||||||
|
- `1-2위_ani_광역단체장_loop`와 `1-2위_광역단체장`도 동일하게 `정당바`를 `Path Shape > Appearance > Face Color` 직접 변경 기준으로 운용한다.
|
||||||
|
- `정당판`은 probe로는 직접 style color 적용이 가능하지만, 현재 runtime에서는 운영 요구에 맞춰 asset alias 경로를 유지한다.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `판세_기초단체장*`은 현재 `판세_광역단체장.txt`로 연결한다.
|
||||||
|
- `보궐선거` 계열은 가장 가까운 광역/보궐 계열 spec로 연결한다.
|
||||||
|
- 역사 당선자 컷은 `ColorParty`와 정당 별칭 정규화를 함께 사용한다.
|
||||||
42
SCENE_CAPABILITY_INSPECTION.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Scene Capability Inspection
|
||||||
|
|
||||||
|
- Generated: 2026-05-10 04:24:05
|
||||||
|
- Scene: `D:\Elect2026\T3_Cut\Elect2026_Bottom_민방\전후보_광역단체장_loop.tscn`
|
||||||
|
- Candidate Count: 34
|
||||||
|
|
||||||
|
| Candidate | Found | Anim | Chart | Counter | Path | QueryType | Type | QueryPos | X | Y | Z | SetPos | SetValueText | SetValueImage | CounterKey | Detail |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| bar | yes | | no | no | no | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | RESULT_ERROR_NO_VARIABLE_OBJECT | | | | | RESULT_ERROR_NO_VARIABLE_OBJECT | RESULT_ERROR_NO_VARIABLE_OBJECT | | |
|
||||||
|
| data01 | yes | | no | no | no | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | RESULT_ERROR_NO_VARIABLE_OBJECT | | | | | RESULT_ERROR_NO_VARIABLE_OBJECT | RESULT_ERROR_NO_VARIABLE_OBJECT | | |
|
||||||
|
| Root | yes | | no | no | no | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | RESULT_ERROR_NO_VARIABLE_OBJECT | | | | | RESULT_ERROR_NO_VARIABLE_OBJECT | RESULT_ERROR_NO_VARIABLE_OBJECT | | |
|
||||||
|
| 개표율01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | -24.198 | 23.054 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 그룹01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_UNKNOWN | RESULT_SUCCESS | -752.384 | -1 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 그룹02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_UNKNOWN | RESULT_SUCCESS | -271.38 | -1 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 그룹03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_UNKNOWN | RESULT_SUCCESS | 210.62 | -1 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 득표수01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 185.185 | -47.402 | -0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 득표수02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 185.185 | -47.402 | -0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 득표수03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 185.185 | -47.402 | -0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 득표율01 | yes | | no | yes | no | RESULT_SUCCESS | OBJECT_TYPE_COUNTER | RESULT_SUCCESS | 239 | -21 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | |
|
||||||
|
| 득표율02 | yes | | no | yes | no | RESULT_SUCCESS | OBJECT_TYPE_COUNTER | RESULT_SUCCESS | 239 | -21 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | |
|
||||||
|
| 득표율03 | yes | | no | yes | no | RESULT_SUCCESS | OBJECT_TYPE_COUNTER | RESULT_SUCCESS | 239 | -21 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | |
|
||||||
|
| 마스크 | yes | | no | no | no | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | RESULT_ERROR_NO_VARIABLE_OBJECT | | | | | RESULT_ERROR_NO_VARIABLE_OBJECT | RESULT_ERROR_NO_VARIABLE_OBJECT | | |
|
||||||
|
| 선거구명01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | -0.73 | -22.031 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 순위01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -182 | 9 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 순위02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -182 | 9 | -0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 순위03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -182 | 9 | -0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 시도 | yes | | no | no | no | RESULT_ERROR_NO_VARIABLE_OBJECT | OBJECT_TYPE_UNKNOWN | RESULT_ERROR_NO_VARIABLE_OBJECT | | | | | RESULT_ERROR_NO_VARIABLE_OBJECT | RESULT_ERROR_NO_VARIABLE_OBJECT | | |
|
||||||
|
| 유확당01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -181 | 10 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 유확당02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -181 | 10 | -0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 유확당03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -181 | 10 | -0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 정당명01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 11.187 | 37.97 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 정당명02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 11.187 | 37.97 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 정당명03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 11.187 | 37.97 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 정당바01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_RECT | RESULT_SUCCESS | 36.258 | 0 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 정당바02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_RECT | RESULT_SUCCESS | 36.258 | 0 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 정당바03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_RECT | RESULT_SUCCESS | 36.258 | 0 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 후보명01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 10.053 | -4.864 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 후보명02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 10.053 | -4.864 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 후보명03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_TEXT | RESULT_SUCCESS | 10.053 | -4.864 | 0 | RESULT_SUCCESS | RESULT_SUCCESS | RESULT_SUCCESS | | |
|
||||||
|
| 후보사진01 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -94.972 | -16 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 후보사진02 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -94.972 | -16 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
|
| 후보사진03 | yes | | no | no | no | RESULT_SUCCESS | OBJECT_TYPE_IMAGE | RESULT_SUCCESS | -94.972 | -16 | 0 | RESULT_SUCCESS | RESULT_FAILURE | RESULT_SUCCESS | | |
|
||||||
28
SCENE_VARIABLE_VALIDATION_1-2위_ani_광역단체장.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Scene Variable Validation
|
||||||
|
|
||||||
|
- Note: 이 문서는 초기 변수명 가정으로 수행한 1차 검증 결과다. 현재 정상 동작 기준 최종 검증 결과는 `LIVE_VALIDATE_1-2위_ani_광역단체장.md`를 기준으로 본다.
|
||||||
|
- Generated: 2026-04-14 15:14:18
|
||||||
|
- Scene: `C:\Users\MD\Documents\Tornado3 Data\T3_Cut\T3_Cut\Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
- Operations: `C:\Users\MD\source\repos\Tornado3_2026Election\tools\KarismaTcpProbe\scene-ops\1-2위_ani_광역단체장.json`
|
||||||
|
- Success Count: 14
|
||||||
|
- Failure Count: 3
|
||||||
|
|
||||||
|
| Object | Method | Payload | Result | Detail |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| Image | SetValue | C:\\Users\\MD\\Documents\\Tornado3 Data\\T3_Cut\\T3_Cut\\Elect2026_Normal_민방\\Images\\Etc\\가이드.png | RESULT_ERROR_NO_VARIABLE_OBJECT | |
|
||||||
|
| 시도명 | SetValue | 서울특별시 | RESULT_ERROR_NO_VARIABLE_OBJECT | |
|
||||||
|
| 표차 | SetValue | 100,000표차 | RESULT_ERROR_NO_VARIABLE_OBJECT | |
|
||||||
|
| 유확당01 | SetValue | C:\\Users\\MD\\Documents\\Tornado3 Data\\T3_Cut\\T3_Cut\\Elect2026_Normal_민방\\Images\\Tag\\당선.vrv | RESULT_SUCCESS | |
|
||||||
|
| 순위01 | SetValue | 1 | RESULT_SUCCESS | |
|
||||||
|
| 정당명01 | SetValue | 더불어민주당 | RESULT_SUCCESS | |
|
||||||
|
| 후보명01 | SetValue | 김후보 | RESULT_SUCCESS | |
|
||||||
|
| 득표수01 | SetValue | 2,123,456 | RESULT_SUCCESS | |
|
||||||
|
| 후보사진01 | SetValue | C:\\Users\\MD\\Documents\\Tornado3 Data\\T3_Cut\\T3_Cut\\Elect2026_Normal_민방\\Images\\Photo\\sampleNEW.png | RESULT_SUCCESS | |
|
||||||
|
| 득표율01 | SetCounterNumberKey | keyIndex=1, number=30 | RESULT_SUCCESS | |
|
||||||
|
| 유확당02 | SetValue | C:\\Users\\MD\\Documents\\Tornado3 Data\\T3_Cut\\T3_Cut\\Elect2026_Normal_민방\\Images\\Tag\\당선.vrv | RESULT_SUCCESS | |
|
||||||
|
| 순위02 | SetValue | 2 | RESULT_SUCCESS | |
|
||||||
|
| 정당명02 | SetValue | 국민의힘 | RESULT_SUCCESS | |
|
||||||
|
| 후보명02 | SetValue | 이후보 | RESULT_SUCCESS | |
|
||||||
|
| 득표수02 | SetValue | 1,123,456 | RESULT_SUCCESS | |
|
||||||
|
| 후보사진02 | SetValue | C:\\Users\\MD\\Documents\\Tornado3 Data\\T3_Cut\\T3_Cut\\Elect2026_Normal_민방\\Images\\Photo\\sampleNEW.png | RESULT_SUCCESS | |
|
||||||
|
| 득표율02 | SetCounterNumberKey | keyIndex=1, number=20 | RESULT_SUCCESS | |
|
||||||
357
SYSTEM_SPEC.md
@@ -1,281 +1,228 @@
|
|||||||
# 선거방송 송출 프로그램 요구사항 정의 (v0.1)
|
# 선거방송 송출 프로그램 요구사항 정의 (v0.2)
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 시스템 개요
|
## 1. 시스템 개요
|
||||||
|
|
||||||
### 1.1 목적
|
### 1.1 목적
|
||||||
- Tornado3를 통해 선거 방송 자막 송출
|
|
||||||
- 포맷(디자인)에 데이터 매핑 후 송출
|
|
||||||
|
|
||||||
---
|
- Tornado3 / Karisma를 통해 선거 방송 자막 컷을 송출한다.
|
||||||
|
- 디자인(포맷)과 데이터를 매핑한 뒤 준비/송출/아웃 흐름을 운영한다.
|
||||||
|
|
||||||
|
### 1.2 기본 구조
|
||||||
|
|
||||||
|
- 방송 채널: `노멀`, `좌상단`, `하단`, `비디오월`
|
||||||
|
- 데이터 모드: `사전`, `개표`
|
||||||
|
- 저장형 보조 데이터: `사전데이터(JSON)`
|
||||||
|
- 운영 페이지: `통합 스케줄`, 채널별 페이지, `사전데이터`, `데이터`, `컷리스트`, `설정`, `로그`
|
||||||
|
|
||||||
## 2. 데이터 처리
|
## 2. 데이터 처리
|
||||||
|
|
||||||
### 2.1 데이터 수신
|
### 2.1 데이터 수신
|
||||||
|
|
||||||
- Polling 기반
|
- Polling 기반
|
||||||
- 수동 수신 가능
|
- 수동 수신 가능
|
||||||
|
|
||||||
### 2.2 수동 수신 정책
|
|
||||||
- 수동 수신 시 polling 주기 초기화
|
- 수동 수신 시 polling 주기 초기화
|
||||||
- 3초 이내 재요청 금지
|
|
||||||
|
|
||||||
### 2.3 갱신 vs 송출
|
### 2.2 지원 선거 범위
|
||||||
- 갱신 중 송출 요청 시 → 갱신 완료 후 송출
|
|
||||||
|
- 실연동 지원:
|
||||||
|
- `광역단체장`
|
||||||
|
- `교육감`
|
||||||
|
- `기초단체장`
|
||||||
|
- `광역단체장`은 개표/사전 투표율을 모두 SBS API로 받는다.
|
||||||
|
- `교육감`, `기초단체장`은 개표만 SBS API로 받고, 사전 방송용 역사 데이터는 저장형 사전데이터로 보완한다.
|
||||||
|
|
||||||
|
### 2.3 데이터 기준
|
||||||
|
|
||||||
### 2.4 데이터 기준
|
|
||||||
- 득표율: 소수점 1자리 반올림
|
- 득표율: 소수점 1자리 반올림
|
||||||
- 득표수: 3자리 콤마
|
- 득표수: 3자리 콤마
|
||||||
|
- 개표율 표기: `개표 x.x%`
|
||||||
|
|
||||||
|
### 2.4 데이터 유효성
|
||||||
|
|
||||||
### 2.5 데이터 유효성
|
|
||||||
- 필수 필드 누락 시 송출 금지
|
- 필수 필드 누락 시 송출 금지
|
||||||
- 사진 필수 포맷에서 이미지 없으면 송출 금지
|
- 사진 필수 포맷에서 이미지가 없으면 송출 금지
|
||||||
|
- 단계에 맞지 않는 컷은 목록에서 숨기고 송출 직전 검증에서도 차단
|
||||||
|
|
||||||
---
|
## 3. 포맷 / 컷 카탈로그
|
||||||
|
|
||||||
## 3. 포맷
|
|
||||||
|
|
||||||
### 3.1 정의
|
### 3.1 정의
|
||||||
- 디자인 템플릿
|
|
||||||
- 데이터 매핑 구조
|
|
||||||
|
|
||||||
### 3.2 구조
|
- 포맷은 하드코딩된 템플릿 카탈로그로 관리한다.
|
||||||
- 포맷 → 컷 → (준비 → 송출)
|
- 각 포맷은 1개 이상의 컷을 가진다.
|
||||||
|
- 실제 Karisma 씬 파일은 `.tscn` 기준이다.
|
||||||
|
|
||||||
### 3.3 루프
|
### 3.2 현재 canonical 카탈로그
|
||||||
- 하위 범주 반복 (예: 시도별 17개)
|
|
||||||
|
|
||||||
### 3.4 데이터 반영
|
- `Elect2026_Bottom_민방`: 15컷
|
||||||
- 현재 컷 반영 금지
|
- `Elect2026_Normal_민방`: 63컷
|
||||||
- 다음 컷부터 반영
|
- `Elect2026_Top_민방`: 11컷
|
||||||
|
- 총 89컷
|
||||||
|
|
||||||
### 3.5 송출 시간
|
### 3.3 실제 디자인명 기준
|
||||||
- 포맷별 설정 가능
|
|
||||||
- 변경 시 다음 컷부터 적용
|
|
||||||
|
|
||||||
---
|
- 현재 카탈로그는 실제 존재하는 `.tscn` 파일명 기준으로 맞춘다.
|
||||||
|
- 과거에 사용하던 `_L`, `_END`, `_7680` 계열 별칭은 현재 카탈로그에 노출하지 않는다.
|
||||||
|
- 저장된 큐/상태 복원을 위해 예전 컷 ID는 내부 별칭 맵으로 canonical 이름에 자동 연결한다.
|
||||||
|
|
||||||
|
### 3.4 루프 컷 규칙
|
||||||
|
|
||||||
|
- 같은 컷 이름에 `_loop.tscn` 파일이 있으면 반복 송출 컷으로 사용한다.
|
||||||
|
- 최초 송출 시에는 기본 `.tscn`을 우선 사용한다.
|
||||||
|
- 이미 송출 중인 상태에서 같은 컷을 다시 호출할 때 `_loop.tscn`이 있으면 우선 사용한다.
|
||||||
|
- `_loop.tscn`이 없으면 기본 `.tscn` 파일로 폴백한다.
|
||||||
|
|
||||||
|
### 3.5 단계별 사용 규칙
|
||||||
|
|
||||||
|
- `사전_역대당선자*` 계열은 `사전`, `개표` 양쪽 단계에서 사용 가능
|
||||||
|
- `사전_역대투표율*` 계열은 `사전` 단계 전용
|
||||||
|
- 일반 후보/판세/당선/접전 계열은 주로 `개표` 단계에서 사용
|
||||||
|
|
||||||
## 4. 스케줄
|
## 4. 스케줄
|
||||||
|
|
||||||
### 4.1 구조
|
### 4.1 구조
|
||||||
- 큐 기반
|
|
||||||
|
|
||||||
### 4.2 상태
|
- 채널별 독립 큐 기반
|
||||||
- 현재 송출: 빨간색
|
- `현재`, `다음`, `대기` 상태를 구분한다.
|
||||||
- 다음 송출: 주황색
|
|
||||||
|
### 4.2 지역 범위
|
||||||
|
|
||||||
|
- 큐 추가 시 컷만이 아니라 지역 범위도 함께 지정한다.
|
||||||
|
- 지원 범위:
|
||||||
|
- `전체`
|
||||||
|
- `선택권역`
|
||||||
|
- `개별 지역`
|
||||||
|
|
||||||
### 4.3 제어
|
### 4.3 제어
|
||||||
- 다음 포맷 변경 가능
|
|
||||||
- 현재 포맷 강제 중지 후 전환 가능
|
|
||||||
- 순서 변경 가능
|
|
||||||
|
|
||||||
### 4.4 삭제 정책
|
- `다음` 지정
|
||||||
- 대기 포맷 삭제 가능
|
- `위/아래` 순서 변경
|
||||||
- 송출 중 포맷 삭제 불가
|
- `제거`
|
||||||
|
- `반복`
|
||||||
|
- 빈 스케줄 시 `즉시 아웃` 또는 `마지막 화면 유지`
|
||||||
|
|
||||||
### 4.5 루프
|
### 4.4 복원
|
||||||
- 전체 루프 가능
|
|
||||||
- 첫 포맷부터 재시작
|
|
||||||
|
|
||||||
### 4.6 빈 스케줄
|
- 저장 상태 복원 시 채널별 큐와 지역 범위를 함께 복원한다.
|
||||||
- 설정에 따라:
|
- 예전 컷 ID가 저장돼 있어도 복원 시 canonical 컷 ID로 정규화한다.
|
||||||
- 즉시 Out
|
|
||||||
- 마지막 화면 유지
|
|
||||||
|
|
||||||
### 4.7 종료
|
## 5. 사전데이터
|
||||||
- 수동 종료 시:
|
|
||||||
- 스케줄 종료
|
|
||||||
- 해당 Layer Out
|
|
||||||
|
|
||||||
---
|
### 5.1 저장 위치
|
||||||
|
|
||||||
## 5. 방송 영역
|
- `Tornado3_2026Election/Assets/Data/pre_election_history.json`
|
||||||
|
|
||||||
- 노멀
|
### 5.2 지원 범위
|
||||||
- 좌상단
|
|
||||||
- 하단
|
|
||||||
- VideoWall
|
|
||||||
|
|
||||||
특징:
|
- `광역단체장`: 전국 17개 시도
|
||||||
- 독립 스케줄
|
- `교육감`: 전국 17개 시도
|
||||||
- 동시 송출 가능
|
- `기초단체장`: 전국 262개 선거구
|
||||||
|
|
||||||
---
|
### 5.3 기능
|
||||||
|
|
||||||
## 6. 방송사 설정
|
- 선거 종류/지역 선택
|
||||||
|
- 역대 투표율 카드 표시
|
||||||
|
- 역대 당선자 카드 표시
|
||||||
|
- 엑셀형 편집 그리드
|
||||||
|
- JSON 저장
|
||||||
|
|
||||||
### 대상
|
### 5.4 색상 포맷 분리
|
||||||
- KNN, TBC, KBC, G1, TJB, JTV
|
|
||||||
|
|
||||||
### 특징
|
- `사전_역대당선자*` 편집 행에는 `ColorParty` 콤보박스를 제공한다.
|
||||||
- 동일 구조
|
- 표기 정당명과 송출 색상 정당을 분리할 수 있다.
|
||||||
- 지역 필터만 다름
|
- 송출 시에는 `ColorParty`가 있으면 이를 우선 사용하고, 없으면 표기 정당명을 사용한다.
|
||||||
|
|
||||||
### 지역 필터
|
## 6. 썸네일 / 컷리스트
|
||||||
- 기본값 제공
|
|
||||||
- 사용자 수정 가능
|
|
||||||
|
|
||||||
---
|
### 6.1 저장 규칙
|
||||||
|
|
||||||
## 7. 유력/확실/당선
|
- 썸네일은 `Assets/Thumbnail/<template.Id>.png` 규칙으로 저장한다.
|
||||||
|
|
||||||
### 기준
|
### 6.2 프리뷰
|
||||||
- 후보 단위
|
|
||||||
|
|
||||||
### 수동 입력
|
- 채널 제어 패널의 컷 선택 콤보박스는 선택한 컷의 썸네일 프리뷰를 표시한다.
|
||||||
- 콤보박스 선택
|
- 프로젝트 썸네일이 없으면 번들 썸네일, 그것도 없으면 기본 아이콘을 사용한다.
|
||||||
- 자동 판정보다 우선
|
|
||||||
|
|
||||||
### 자동 판정
|
### 6.3 생성
|
||||||
- 수동 지정 없는 경우만 적용
|
|
||||||
- 당선 조건:
|
|
||||||
- (1위 - 2위) > 남은 개표수
|
|
||||||
|
|
||||||
### 초기화
|
- `썸네일 생성` 기능은 Karisma에 씬을 로드하고 320x180 PNG를 저장한다.
|
||||||
- 전체 초기화 가능
|
- 씬은 `KarismaSceneResolver`가 실제 `.tscn`/`_loop.tscn` 규칙으로 해석한다.
|
||||||
|
|
||||||
### 저장
|
### 6.4 컷리스트 페이지
|
||||||
- 방송사 + 선거종류 + 선거구 + 후보 기준
|
|
||||||
|
|
||||||
---
|
- 전체 컷 목록
|
||||||
|
- 채널 필터
|
||||||
|
- 컷별 재생 시간 편집
|
||||||
|
- 썸네일 현황 요약
|
||||||
|
|
||||||
## 8. Tornado3 연동
|
## 7. 직함 표기
|
||||||
|
|
||||||
### 방식
|
- `광역단체장`, `교육감`, `기초단체장`은 전 컷 공통으로 지역명 대신 직함을 사용한다.
|
||||||
- TCP + DLL
|
- 예:
|
||||||
|
- `서울특별시` -> `서울시장`
|
||||||
|
- `전라남도` -> `전라남도지사`
|
||||||
|
- `부산광역시` -> `부산광역시교육감`
|
||||||
|
- `창원시` -> `창원시장`
|
||||||
|
|
||||||
### 기능
|
## 8. RGB / 정당 색상
|
||||||
- 이미지 변경
|
|
||||||
- 텍스트 변경
|
|
||||||
- 준비
|
|
||||||
- 송출
|
|
||||||
|
|
||||||
### 응답 처리
|
- RGB txt 기준으로 정당색을 해석한다.
|
||||||
- ACK 대기 없음
|
- RGB txt에 style color 지정이 있으면 `SetStyleColor(...)`를 우선 사용한다.
|
||||||
- 5초 내 응답 없으면 실패
|
- style color가 없을 때만 이미지 자산 경로를 사용한다.
|
||||||
|
- 역사 정당명은 `한나라당 -> 국민의힘`, `열린우리당 -> 더불어민주당` 등 별칭 정규화를 함께 지원한다.
|
||||||
|
|
||||||
### 상태
|
## 9. Tornado3 / Karisma 연동
|
||||||
- IDLE
|
|
||||||
- READY (송출 가능 상태)
|
|
||||||
- SENDING
|
|
||||||
- ON_AIR
|
|
||||||
- ERROR
|
|
||||||
|
|
||||||
### 연결
|
### 9.1 방식
|
||||||
- 끊김 시 재연결
|
|
||||||
- 재연결 후 사용자 확인 후 재개
|
|
||||||
|
|
||||||
---
|
- TCP + `Interop.KAsyncEngineLib.dll`
|
||||||
|
|
||||||
## 9. 상태 흐름
|
### 9.2 기본 연결
|
||||||
|
|
||||||
IDLE → READY → SENDING → ON_AIR → NEXT
|
- 기본 대상: `127.0.0.1:30001`
|
||||||
↓
|
- 환경변수:
|
||||||
ERROR
|
- `TORNADO_KARISMA_HOST`
|
||||||
|
- `TORNADO_KARISMA_PORT`
|
||||||
|
|
||||||
---
|
### 9.3 채널 바인딩
|
||||||
|
|
||||||
## 10. 복원
|
- 기본:
|
||||||
|
- `노멀=0:0`
|
||||||
|
- `좌상단=0:1`
|
||||||
|
- `하단=0:2`
|
||||||
|
- `비디오월=1:0`
|
||||||
|
- 환경변수:
|
||||||
|
- `TORNADO_KARISMA_BIND_NORMAL`
|
||||||
|
- `TORNADO_KARISMA_BIND_TOPLEFT`
|
||||||
|
- `TORNADO_KARISMA_BIND_BOTTOM`
|
||||||
|
- `TORNADO_KARISMA_BIND_VIDEOWALL`
|
||||||
|
|
||||||
### 대상
|
### 9.4 T3_Cut 경로
|
||||||
- 스케줄
|
|
||||||
- 방송사
|
|
||||||
- 상태값
|
|
||||||
|
|
||||||
### 방식
|
- 앱, 송출 어댑터, 썸네일 생성기, Karisma 디버깅 도구는 `D:\\Elect2026\\T3_Cut`를 고정 기준 경로로 사용한다.
|
||||||
- 통합 대화상자
|
- 사용자 설정값, 저장된 상태값, `TORNADO_T3CUT_PATH`, 디버깅 도구의 `--image-root`/`--root` 입력은 T3_Cut 기준 경로를 바꾸지 않는다.
|
||||||
- 체크박스 선택
|
|
||||||
|
|
||||||
---
|
### 9.5 폴백
|
||||||
|
|
||||||
## 11. UI 구조
|
- 시작 시 `T3_Cut` 경로가 유효하지 않으면 Mock Adapter로 폴백한다.
|
||||||
|
|
||||||
### 네비게이션
|
## 10. 상태 저장 / 자동 저장
|
||||||
- 통합 스케줄
|
|
||||||
- 노멀
|
|
||||||
- 좌상단
|
|
||||||
- 하단
|
|
||||||
- VideoWall
|
|
||||||
- 데이터
|
|
||||||
- 설정
|
|
||||||
- 로그
|
|
||||||
|
|
||||||
### 표시
|
- 주요 설정 변경 시 자동 저장
|
||||||
- 빨강: 현재 송출
|
- 저장 대상:
|
||||||
- 주황: 다음 송출
|
- API 자동 갱신 여부
|
||||||
|
- API 갱신 주기
|
||||||
|
- 데이터 선택 상태
|
||||||
|
- 채널 큐
|
||||||
|
- 컷별 재생 시간
|
||||||
|
- 방송사 지역 필터
|
||||||
|
|
||||||
---
|
## 11. 인코딩 규칙
|
||||||
|
|
||||||
## 12. 이미지
|
|
||||||
|
|
||||||
경로 규칙:
|
|
||||||
{선택경로}/{선거종류}/{지역코드}/{후보코드}.png
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 13. 예외 처리
|
|
||||||
|
|
||||||
- API 실패 → 사용자 알림
|
|
||||||
- Tornado 실패 → ERROR 상태
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 14. 핵심 개념
|
|
||||||
|
|
||||||
- 포맷 기반
|
|
||||||
- 컷 단위 송출
|
|
||||||
- 스케줄 큐 구조
|
|
||||||
- 상태 머신 기반 제어
|
|
||||||
---
|
|
||||||
|
|
||||||
## 15. 인코딩 검증 규칙
|
|
||||||
|
|
||||||
- 한글 문자열이 포함된 파일을 수정한 뒤에는 반드시 인코딩 깨짐 여부를 다시 확인한다.
|
|
||||||
- UI 문구, 로그 문구, 기본값 문자열은 저장 직후 한글이 정상 표시되는지 우선 점검한다.
|
|
||||||
- `?`, `<60>`, 비정상 한자 형태의 모지바케가 보이면 즉시 수정 대상으로 간주한다.
|
|
||||||
- 텍스트 파일은 UTF-8 기준으로 관리한다.
|
- 텍스트 파일은 UTF-8 기준으로 관리한다.
|
||||||
---
|
- 한글 문자열 수정 후에는 `?`, `U+FFFD`, 모지바케가 없는지 반드시 확인한다.
|
||||||
|
|
||||||
## 16. Karisma / Tornado3 연동 기준
|
## 12. 현재 확인된 빌드 경고
|
||||||
|
|
||||||
- CG 연동 라이브러리는 `Interop.KAsyncEngineLib.dll`을 사용한다.
|
- `WindowsBase` 참조 충돌 경고
|
||||||
- 기본 접속 대상은 `127.0.0.1:30001`이다.
|
- MSIX 인증서 경고
|
||||||
- `TORNADO_KARISMA_HOST`가 있으면 기본 호스트 대신 사용한다.
|
- `MockTornado3Adapter.ConnectionChanged` 미사용 경고
|
||||||
- `TORNADO_KARISMA_PORT`가 있으면 기본 포트 대신 사용한다.
|
|
||||||
- 앱 시작 시 `T3_Cut 경로`가 유효하지 않으면 실CG 대신 Mock Adapter로 폴백한다.
|
|
||||||
- 현재 구현 기준으로는 시작 시 Mock으로 결정된 경우, 설정 변경 후 실CG 재연결을 위해 앱 재시작이 필요할 수 있다.
|
|
||||||
- 채널 기본 바인딩은 `노멀=0:0`, `좌상단=0:1`, `하단=0:2`, `비디오월=1:0`이다.
|
|
||||||
- 환경변수 `TORNADO_KARISMA_BIND_NORMAL`, `TORNADO_KARISMA_BIND_TOPLEFT`, `TORNADO_KARISMA_BIND_BOTTOM`, `TORNADO_KARISMA_BIND_VIDEOWALL`로 채널 바인딩을 덮어쓸 수 있다.
|
|
||||||
|
|
||||||
## 17. T3_Cut 운영 규칙
|
|
||||||
|
|
||||||
- 사용자 설정 명칭은 `이미지 루트 경로`가 아니라 `T3_Cut 경로`로 표기한다.
|
|
||||||
- 송출에 사용하는 컷 파일 확장자는 `.tscn`이다.
|
|
||||||
- 컷 파일은 `T3_Cut` 루트 아래의 고정된 포맷 구조를 기준으로 사용한다.
|
|
||||||
- 포맷 목록은 폴더 스캔으로 동적 생성하지 않고 하드코딩된 목록으로 관리한다.
|
|
||||||
- 같은 컷 이름에 `_loop.tscn` 파일이 있으면 반복 송출 컷으로 사용한다.
|
|
||||||
- 최초 송출 시에는 기본 컷 파일을 사용한다.
|
|
||||||
- 이미 송출 중인 상태에서 같은 컷을 다시 사용할 때는 `_loop.tscn`이 있으면 우선 사용한다.
|
|
||||||
- `_loop.tscn`이 없으면 기본 `.tscn` 파일로 폴백한다.
|
|
||||||
- 예시: `1-2위_광역단체장.tscn`은 최초 송출용, `1-2위_광역단체장_loop.tscn`은 반복 송출용으로 간주한다.
|
|
||||||
|
|
||||||
## 18. CG 연동 상태 UI 표기 기준
|
|
||||||
|
|
||||||
- 메인 화면 상단에는 `CG 연동 상태`를 표시한다.
|
|
||||||
- 사용자는 UI에서 현재 어댑터가 `실CG`인지 `Mock`인지 즉시 식별할 수 있어야 한다.
|
|
||||||
- 상단 상태 영역에는 실CG 연동 여부, 연결 대상, 채널 정상 상태 요약을 함께 표시한다.
|
|
||||||
- 채널 패널별로도 해당 채널이 어떤 백엔드를 사용하는지 표시한다.
|
|
||||||
- 실제 Karisma 사용 시 연결 대상 예시는 `127.0.0.1:30001` 형식으로 표시한다.
|
|
||||||
|
|
||||||
## 19. CG Return Value / Callback 로그 정책
|
|
||||||
|
|
||||||
- CG 시스템으로부터 오는 Return Value 관련 결과는 `로그` 탭에서 확인할 수 있어야 한다.
|
|
||||||
- 즉시 반환되는 값과 비동기 콜백 결과를 모두 로그로 남긴다.
|
|
||||||
- `Connect()` 호출 직후의 반환값은 즉시 로그로 기록한다.
|
|
||||||
- `LoadScene()` 및 `LoadSceneForce()` 호출 결과도 즉시 로그로 기록한다.
|
|
||||||
- `KAEventHandler` 기반 콜백 결과를 `LogService`를 통해 공용 로그에 남긴다.
|
|
||||||
- 로그에는 콜백 이름, 결과 enum 이름, 숫자 코드, 추가 정보(scene, object, output, layer 등)를 함께 남긴다.
|
|
||||||
- `OnConnect(int ErrorCode)`는 `0`을 성공으로 간주하고, `0`이 아닌 값은 실패로 기록한다.
|
|
||||||
- `eKResult.RESULT_SUCCESS`는 정보 로그로 남기고, 그 외 결과는 경고 로그로 남긴다.
|
|
||||||
- 현재 로깅 대상에는 `OnConnect`, `OnClose`, `OnLogMessage`, `OnMessageNo`, `OnLoadScene`, `OnLoadSceneForce`, `OnBeginTransaction`, `OnEndTransaction`, `OnHeartBeat`, `OnSetValue`, `OnScenePrepare`, `OnScenePrepareEx`, `OnPlay`, `OnPlayOut`, `OnPause`, `OnResume`, `OnStop`, `OnStopAll`, `OnCutIn`, `OnCutOut`, `OnTrigger`, `OnTriggerObject`, `OnQueryIsOnAir`, `OnQueryLayerCount`, `OnScenePlayingStarted`, `OnScenePlayed`, `OnSceneAnimationPlayed`, `OnScenePaused`를 포함한다.
|
|
||||||
- CG 콜백 로그와 앱 내부 로그는 같은 로그 시스템에 합쳐서 표시한다.
|
|
||||||
|
|||||||
3446
TSCN_VARIABLE_DISCOVERY_ELECT2026_NORMAL.md
Normal file
4883
TSCN_VARIABLE_DISCOVERY_E_DRIVE.md
Normal file
46
TSCN_VARIABLE_DISCOVERY_ONE.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# TSCN Variable Discovery
|
||||||
|
|
||||||
|
- Generated: 2026-04-14 15:24:09
|
||||||
|
- Root: `E:\김의연\지역민방\T3_Cut`
|
||||||
|
- Scene Count: 1
|
||||||
|
- Discovered Variable Count: 21
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
## Method
|
||||||
|
|
||||||
|
- Candidate names are extracted from each `.tscn` as UTF-16LE strings.
|
||||||
|
- Each candidate is verified through Karisma TCP callbacks.
|
||||||
|
- `SetValue(__TCP_VALIDATE__)`, valid `.png`, valid `.vrv`, and `SetCounterNumberKey(1, 1)` are tried as applicable.
|
||||||
|
- Only callbacks that returned `RESULT_SUCCESS` are listed as discovered variables.
|
||||||
|
|
||||||
|
## Scenes
|
||||||
|
|
||||||
|
### `Elect2026_Normal_민방\1-2위_ani_광역단체장.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 28
|
||||||
|
- Discovered Variables: 21
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표수01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표수02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 시도명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 정당명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 정당명02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 정당판01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 정당판02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 표차01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 후보명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 후보명02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 후보사진01 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진02 | SetValue | E:\\김의연\\지역민방\\T3_Cut\\Elect2026_Bottom_민방\\Images\\Etc\\가이드.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
39
TSCN_VARIABLE_DISCOVERY_SAMPLE.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# TSCN Variable Discovery
|
||||||
|
|
||||||
|
- Note: 이 문서는 초기 샘플 3개 컷에 대한 탐색 결과다. 전체 `T3_Cut` 기준 확정 스캔 결과는 `TSCN_VARIABLE_DISCOVERY_E_DRIVE.md`를 기준으로 본다.
|
||||||
|
- Generated: 2026-04-14 15:21:19
|
||||||
|
- Root: `E:\김의연\지역민방\T3_Cut`
|
||||||
|
- Scene Count: 3
|
||||||
|
- Discovered Variable Count: 0
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
## Method
|
||||||
|
|
||||||
|
- Candidate names are extracted from each `.tscn` as UTF-16LE strings.
|
||||||
|
- Each candidate is verified through Karisma TCP callbacks.
|
||||||
|
- `SetValue(__TCP_VALIDATE__)`, valid `.png`, valid `.vrv`, and `SetCounterNumberKey(1, 1)` are tried as applicable.
|
||||||
|
- Only callbacks that returned `RESULT_SUCCESS` are listed as discovered variables.
|
||||||
|
|
||||||
|
## Scenes
|
||||||
|
|
||||||
|
### `Elect2026_Bottom_민방\1-2위_광역단체장.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 54
|
||||||
|
- Discovered Variables: 0
|
||||||
|
|
||||||
|
- No variables discovered with the current TCP validation heuristics.
|
||||||
|
|
||||||
|
### `Elect2026_Bottom_민방\1-2위_광역단체장_loop.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 53
|
||||||
|
- Discovered Variables: 0
|
||||||
|
|
||||||
|
- No variables discovered with the current TCP validation heuristics.
|
||||||
|
|
||||||
|
### `Elect2026_Bottom_민방\1-2위_기초단체장.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 53
|
||||||
|
- Discovered Variables: 0
|
||||||
|
|
||||||
|
- No variables discovered with the current TCP validation heuristics.
|
||||||
|
|
||||||
193
TSCN_VARIABLE_DISCOVERY_TOP_2P.md
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
# TSCN Variable Discovery
|
||||||
|
|
||||||
|
- Generated: 2026-05-09 03:06:16
|
||||||
|
- Root: `D:\Elect2026\T3_Cut\Elect2026_Top_민방`
|
||||||
|
- Scene Count: 8
|
||||||
|
- Discovered Variable Count: 112
|
||||||
|
- Failure Count: 0
|
||||||
|
|
||||||
|
## Method
|
||||||
|
|
||||||
|
- Candidate names are extracted from each `.tscn` as UTF-16LE strings.
|
||||||
|
- Each candidate is verified through Karisma TCP callbacks.
|
||||||
|
- `SetValue(__TCP_VALIDATE__)`, valid `.png`, valid `.vrv`, and `SetCounterNumberKey(1, 1)` are tried as applicable.
|
||||||
|
- Only callbacks that returned `RESULT_SUCCESS` are listed as discovered variables.
|
||||||
|
|
||||||
|
## Scenes
|
||||||
|
|
||||||
|
### `광역단체장_2인.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 20
|
||||||
|
- Discovered Variables: 14
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `광역단체장_2인_텍스트.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 18
|
||||||
|
- Discovered Variables: 14
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 후보명02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `기초단체장_2인.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 20
|
||||||
|
- Discovered Variables: 15
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 시도명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `기초단체장_2인_텍스트.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 19
|
||||||
|
- Discovered Variables: 13
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 시도명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `Elect2026_Top_민방\광역단체장_2인.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 20
|
||||||
|
- Discovered Variables: 14
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `Elect2026_Top_민방\광역단체장_2인_텍스트.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 18
|
||||||
|
- Discovered Variables: 14
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 후보명02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `Elect2026_Top_민방\기초단체장_2인.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 20
|
||||||
|
- Discovered Variables: 15
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 시도명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 후보사진02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
|
### `Elect2026_Top_민방\기초단체장_2인_텍스트.tscn`
|
||||||
|
|
||||||
|
- Candidate Count: 19
|
||||||
|
- Discovered Variables: 13
|
||||||
|
|
||||||
|
| Variable | Method | Payload | Result |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 개표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 득표율02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 선거구명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 순위02 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 시도명01 | SetValue | __TCP_VALIDATE__ | RESULT_SUCCESS |
|
||||||
|
| 유확당01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 유확당02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당바02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼01 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
| 정당심볼02 | SetValue | D:\\Elect2026\\T3_Cut\\Elect2026_Top_민방\\Elect2026_Top_민방\\Images\\Dang\\Dang_Symbol\\개혁신당.png | RESULT_SUCCESS |
|
||||||
|
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
<Solution>
|
<Solution>
|
||||||
<Configurations>
|
<Configurations>
|
||||||
<Platform Name="ARM64" />
|
|
||||||
<Platform Name="x64" />
|
<Platform Name="x64" />
|
||||||
<Platform Name="x86" />
|
|
||||||
</Configurations>
|
</Configurations>
|
||||||
<Project Path="Tornado3_2026Election/Tornado3_2026Election.csproj">
|
<Project Path="Tornado3_2026Election/Tornado3_2026Election.csproj">
|
||||||
<Platform Solution="*|ARM64" Project="ARM64" />
|
|
||||||
<Platform Solution="*|x64" Project="x64" />
|
<Platform Solution="*|x64" Project="x64" />
|
||||||
<Platform Solution="*|x86" Project="x86" />
|
|
||||||
<Deploy />
|
<Deploy />
|
||||||
</Project>
|
</Project>
|
||||||
|
<Project Path="tools/KarismaTcpProbe/KarismaTcpProbe.csproj">
|
||||||
|
<Platform Solution="*|x64" Project="x64" />
|
||||||
|
</Project>
|
||||||
</Solution>
|
</Solution>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 108 KiB |
28377
Tornado3_2026Election/Assets/Data/pre_election_history.json
Normal file
BIN
Tornado3_2026Election/Assets/Stations/ubc.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
1
Tornado3_2026Election/Assets/Thumbnail/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 123 KiB |
|
After Width: | Height: | Size: 271 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 123 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 196 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 197 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 198 KiB |
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 190 KiB |