════════════════════════════════════════════════════════
 posai POS 카드단말(KSP-S8A) 설치 가이드 — 신규 매장
════════════════════════════════════════════════════════

[구조]
 웹POS(posai.co.kr) → 로컬 브리지 KscatBridge.exe(127.0.0.1:27099)
   → ksnetcomm.dll → KSnCAT(27015) → KSP-S8A 카드패드
 (KSnCAT의 WEB포트 27098은 고장이라 안 씀. 브리지가 대체)

────────────────────────────────────────────────────────
[A. 각 POS PC에서 — 1회]
────────────────────────────────────────────────────────
1) KSnCAT 설치 + 설정 (KSNET/벤더)
   - 이 매장 결제 TID
   - 카드패드(KSP-S8A) COM 포트 (리더 [reader] 포트)
   - 승인서버 (운영. 테스트면 개발IP)
   - WEB Port는 안 써도 무방
2) KSP-S8A 패드 USB 연결 → KSnCAT 서비스 시작 → 메인홈에서 패드 정상 대기 확인
3) 이 폴더의  pos_setup.bat  을 더블클릭
   - UAC 창 뜨면 [예] (관리자 권한 필요: Chrome 정책 등록용)
   - 자동으로: 브리지 배치 + 로그인 자동시작 + Chrome 정책 + 핑테스트
   - 끝에 "[OK] Bridge responding on 27099" 나오면 성공
4) Chrome 완전 종료 후 재시작 (정책 로드)
   - 확인: 주소창 chrome://policy → LocalNetworkAccessAllowedForUrls 가 "확인" 상태

────────────────────────────────────────────────────────
[B. 서버에서 — 매장당 1회]  (관리자가 SSH로)
────────────────────────────────────────────────────────
  /opt/php/bin/php /opt/market_backend/scripts/provision_tenant_kscat.php <tenant_key> <TID>
  예) /opt/php/bin/php /opt/market_backend/scripts/provision_tenant_kscat.php gwangju DPT0B10525
  - 전용 테이블 4종 생성 + card_terminal_note(포트27099/TID) 설정
  - ※ pos_tenants에 그 매장(tenant_key)이 먼저 등록돼 있어야 함
  - ※ 상품 카탈로그(xxx_products 데이터)는 별도 온보딩

────────────────────────────────────────────────────────
[검증]
────────────────────────────────────────────────────────
 - POS 로그인 → F12 콘솔에 "[KSNCAT] 설정 적용 — 모드:jsonp 포트:27099"
 - 상품 담고 → 카드단말기 결제 → 패드에 "카드를 대주세요" → 카드 → 승인/영수증

────────────────────────────────────────────────────────
[문제 해결]
────────────────────────────────────────────────────────
 - 패드 무응답/시리얼 에러: KSP-S8A USB 뺐다 꽂기 + KSnCAT 서비스 중지→시작
 - "브리지 연결 실패": 작업관리자에 KscatBridge.exe 떠있는지, 27099 LISTENING 확인
     (netstat -ano | findstr 27099)
 - "loopback 차단(CORS)": Chrome 정책 미로드 → Chrome 완전 재시작, pos_setup.bat 재실행
 - 승인됐는데 결제실패 토스트: 서버 provision_tenant_kscat.php 실행했는지 확인

(전체 기술 메모: project_posai_kscat_card.md)
