# 선거방송 송출 프로그램 요구사항 정의 (v0.1) --- ## 1. 시스템 개요 ### 1.1 목적 - Tornado3를 통해 선거 방송 자막 송출 - 포맷(디자인)에 데이터 매핑 후 송출 --- ## 2. 데이터 처리 ### 2.1 데이터 수신 - Polling 기반 - 수동 수신 가능 ### 2.2 수동 수신 정책 - 수동 수신 시 polling 주기 초기화 - 3초 이내 재요청 금지 ### 2.3 갱신 vs 송출 - 갱신 중 송출 요청 시 → 갱신 완료 후 송출 ### 2.4 데이터 기준 - 득표율: 소수점 1자리 반올림 - 득표수: 3자리 콤마 ### 2.5 데이터 유효성 - 필수 필드 누락 시 송출 금지 - 사진 필수 포맷에서 이미지 없으면 송출 금지 --- ## 3. 포맷 ### 3.1 정의 - 디자인 템플릿 - 데이터 매핑 구조 ### 3.2 구조 - 포맷 → 컷 → (준비 → 송출) ### 3.3 루프 - 하위 범주 반복 (예: 시도별 17개) ### 3.4 데이터 반영 - 현재 컷 반영 금지 - 다음 컷부터 반영 ### 3.5 송출 시간 - 포맷별 설정 가능 - 변경 시 다음 컷부터 적용 --- ## 4. 스케줄 ### 4.1 구조 - 큐 기반 ### 4.2 상태 - 현재 송출: 빨간색 - 다음 송출: 주황색 ### 4.3 제어 - 다음 포맷 변경 가능 - 현재 포맷 강제 중지 후 전환 가능 - 순서 변경 가능 ### 4.4 삭제 정책 - 대기 포맷 삭제 가능 - 송출 중 포맷 삭제 불가 ### 4.5 루프 - 전체 루프 가능 - 첫 포맷부터 재시작 ### 4.6 빈 스케줄 - 설정에 따라: - 즉시 Out - 마지막 화면 유지 ### 4.7 종료 - 수동 종료 시: - 스케줄 종료 - 해당 Layer Out --- ## 5. 방송 영역 - 노멀 - 좌상단 - 하단 - VideoWall 특징: - 독립 스케줄 - 동시 송출 가능 --- ## 6. 방송사 설정 ### 대상 - KNN, TBC, KBC, G1, TJB, JTV ### 특징 - 동일 구조 - 지역 필터만 다름 ### 지역 필터 - 기본값 제공 - 사용자 수정 가능 --- ## 7. 유력/확실/당선 ### 기준 - 후보 단위 ### 수동 입력 - 콤보박스 선택 - 자동 판정보다 우선 ### 자동 판정 - 수동 지정 없는 경우만 적용 - 당선 조건: - (1위 - 2위) > 남은 개표수 ### 초기화 - 전체 초기화 가능 ### 저장 - 방송사 + 선거종류 + 선거구 + 후보 기준 --- ## 8. Tornado3 연동 ### 방식 - TCP + DLL ### 기능 - 이미지 변경 - 텍스트 변경 - 준비 - 송출 ### 응답 처리 - ACK 대기 없음 - 5초 내 응답 없으면 실패 ### 상태 - IDLE - READY (송출 가능 상태) - SENDING - ON_AIR - ERROR ### 연결 - 끊김 시 재연결 - 재연결 후 사용자 확인 후 재개 --- ## 9. 상태 흐름 IDLE → READY → SENDING → ON_AIR → NEXT ↓ ERROR --- ## 10. 복원 ### 대상 - 스케줄 - 방송사 - 상태값 ### 방식 - 통합 대화상자 - 체크박스 선택 --- ## 11. UI 구조 ### 네비게이션 - 통합 스케줄 - 노멀 - 좌상단 - 하단 - VideoWall - 데이터 - 설정 - 로그 ### 표시 - 빨강: 현재 송출 - 주황: 다음 송출 --- ## 12. 이미지 경로 규칙: {선택경로}/{선거종류}/{지역코드}/{후보코드}.png --- ## 13. 예외 처리 - API 실패 → 사용자 알림 - Tornado 실패 → ERROR 상태 --- ## 14. 핵심 개념 - 포맷 기반 - 컷 단위 송출 - 스케줄 큐 구조 - 상태 머신 기반 제어