# xmath Print Bridge

메인 PC에서 실행해 태블릿 인쇄 요청을 대신 출력하는 브리지 프로그램입니다.

## 준비

1. xmath 웹에서 `원장 마이페이지 > 메인 PC 인쇄 설정`으로 들어갑니다.
2. `메인 PC 연결` 또는 `메인 PC 변경` 버튼을 눌러 연결 코드를 만듭니다.
3. `xmath-print-bridge.exe`를 실행합니다.
4. 프로그램 창에서 `연결 코드`를 붙여 넣고 `연결 코드로 등록`을 누릅니다.
5. `연결 확인` → `브리지 시작` 순서로 진행합니다.

## 수동 설정 파일 방식

- 필요하면 `config.example.json`을 복사해 `config.json`으로 만든 뒤 직접 수정할 수도 있습니다.
- `run_print_bridge.bat`는 설정창 없이 백그라운드 방식으로 실행하고 싶을 때 쓰는 백업 실행 파일입니다.

## 메모

- 원장 설정에서 특정 프린터를 고르면 작업마다 해당 프린터를 자동 적용하고, 출력 후 원래 Windows 기본 프린터로 복원합니다.
- 양면 인쇄 작업은 지원 프린터에서 `긴쪽 넘김`을 자동 적용하고, 출력 후 기존 양면 설정으로 복원합니다.
- Edge 또는 Chrome이 설치되어 있어야 합니다.
- 프로그램 창의 `브라우저 경로`는 보통 비워두면 자동으로 Edge/Chrome을 찾습니다.
- 자동으로 못 찾을 때만 `찾아보기`로 `chrome.exe` 또는 `msedge.exe`를 선택하면 됩니다.
- 로그는 같은 폴더의 `bridge.log`에 쌓입니다.
- 네트워크 문제로 완료 보고가 실패하면 `pending_completions.json`에 임시 저장한 뒤 자동 재전송합니다.
- 메인 PC는 학원당 1대만 등록되며, 새 연결 코드로 등록하면 이전 PC는 자동 해제됩니다.
- 새 버전 안내는 버전별로 한 번만 표시됩니다. `업데이트 후 재실행`을 선택하면 새 ZIP의 SHA-256을 검증한 뒤 기존 브릿지를 종료하고 고정 설치 폴더의 실행 파일을 한 번만 교체합니다.
- 운영 EXE는 서버 주소를 `https://xmath.kr`로 고정하며, 서버에서 받은 인쇄 URL도 HTTPS 도메인·포트·경로·작업 서명을 다시 검사합니다.
- 연결 코드는 등록할 때 한 번만 소비되고, 등록이 끝나면 별도의 장치 토큰으로 교체됩니다.
- 장치 토큰은 Windows 현재 사용자 계정에 묶인 DPAPI 암호문으로 저장됩니다. 기존 평문 설정은 첫 실행 때 자동 이전됩니다.
- 잘못된 연결 코드 등록이 반복되면 해당 접속 위치의 등록 요청을 잠시 차단합니다.
- 브리지 로그는 민감 토큰을 가리고 최대 크기에 도달하면 최근 파일 3개까지만 순환 보관합니다.
- 작업 완료 보고는 동일한 결과의 네트워크 재전송만 허용하며, 이미 종료된 작업의 결과를 반대로 변경할 수 없습니다.
- 업데이트 중에도 `config.json`의 연결 코드와 프린터 설정은 삭제하거나 덮어쓰지 않습니다.
- 압축 파일에 `xmath-print-bridge.exe`가 함께 들어 있으면 Python 없이 바로 실행할 수 있습니다.
- `browser_path`를 비워 두면 Edge/Chrome을 자동으로 찾고, 필요하면 직접 경로를 넣을 수 있습니다.
- `complete_retry_count`, `complete_retry_delay_sec`로 완료 보고 재시도 횟수와 간격을 조절할 수 있습니다.
- 실제 점검 순서는 같은 압축에 들어 있는 `PRINT_BRIDGE_CHECKLIST.md`를 참고하면 됩니다.
