228 lines
3.3 KiB
Markdown
228 lines
3.3 KiB
Markdown
# 선거방송 송출 프로그램 요구사항 정의 (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. 핵심 개념
|
|
|
|
- 포맷 기반
|
|
- 컷 단위 송출
|
|
- 스케줄 큐 구조
|
|
- 상태 머신 기반 제어 |