crowny-gametools 참가자 흐름 통합 (T226)
개요
티옴타/퀴즈 룸 참가자가
/tiomta/{room}?seat=N,
/quiz/{room}?seat=N으로 접속했을 때
배분(출제) 전에는 "딜러가 시작하면 표시됩니다" 텍스트만 뜨고 레디 터치 UI가 없어
게임 진행이 막히는 UX 결함을 수리. 참가자.html의 레디 터치 로직을 공통.js로 추출해
3화면(참가자·티옴타·퀴즈) 공용화.
무엇을 했는지
- 공통.js:
GT.레디바인더(opts) 추가 — 좌석선택 그리드 + 레디 터치 화면(홀드판정·서버동기화·
드롭바·wakelock)을 DOM 생성부터 이벤트 바인딩까지 캡슐화. 참가자.html 원본 로직 그대로 추출.
- 공통.css:
.gt-seatpick / .gt-readyscreen / .gt-dropbar 등 클래스 추가 —
참가자.html 인라인 스타일 값을 그대로 이식(신규 색/치수 없음, 기존 토큰만 사용).
- 참가자.html:
GT.레디바인더를 쓰도록 리팩터(중복 제거, 동작 동일).
- 티옴타.html / 퀴즈.html:
-
?seat=N 참가자 화면에 배분/출제 전(레디 화면) ↔ 배분/출제 후(카드/문제 화면) 자동 전환 추가.
- 티옴타는
phase==='dealt'로 게이트.
퀴즈는 딜러가 /api/quiz/next만 호출하고
/api/deal을 안 써서 phase가 dealt에 절대 안 감 —
phase!=='standby' && qidx>=0으로 게이트.
-
?seat 없이 접속 시 좌석선택 그리드 동작(로컬스토리지 저장 좌석 있으면 자동 복원).
- 기존 임베디드 딜러 콘솔(카드 배분/출제 버튼)은
?dealer=1 쿼리로 명시 접근하도록 분리
(join 링크 기본 접속은 참가자 플로우가 되도록).
- 딜러.html: 헤더 참가 링크/QR/복사가 룸
game 필드(서버 상태JSON에 이미 존재)에 따라
/tiomta/{room} ·
/quiz/{room} ·
/ready/{room}로 분기(
joinPathFor()).
- 공통표시.한선:
참가경로(game), 표시모드(phase, seat) 순수함수 동반 추가(컴파일 검증 대상 없음 —
가져오기 "/Users/ef/crowny-gametools/도구엔진.한선" 절대경로 의존이라 독립 컴파일 스킵, 로직만 SSOT 등재).
발견한 버그(작업 중 실측)
tt-ready-mount/qz-ready-mount를 처음에 <main> 안에 넣었더니 main.style.display='none'이
안의 fixed 레디스크린까지 같이 숨겨 빈 화면(크림색 배경)이 됨 → main 밖(형제)으로 이동해 수정.
- dealt 전환 시 실수로
readyOv.showPicker()를 호출해 좌석선택 그리드가 카드뷰 위에 노출되는
버그 → 제거(레디스크린만 숨기고 seatpick은 건드리지 않음).
- 퀴즈 phase가
dealt로 절대 안 감(서버 /api/quiz/next가 phase 미변경) — qidx 게이트로 전환.
검증
node --check로 4개 HTML의 인라인 스크립트 전부 문법 검증 PASS.
- 라이브 9625에 room
QC1N(tiomta,n=4) / JYQV(quiz,n=3) 생성 후
크라우니AI검증.sh dump로 3샷씩(①레디 대기 ②배분/출제 후 ③STANDBY 후 레디 복귀) 스크린샷 확인 —
전부 기대대로 렌더, console.json 전부
[](에러 0).
- 딜러 헤더 참가 링크가 룸 game 필드에 따라
/tiomta/{room} · /quiz/{room}로 바뀌는 것을
dump로 확인(폴링 타이밍 레이스로 3회 중 1회만 헤드리스 캡처 시점에 반영됐지만, curl/DOM 로직
자체는 정상 — 헤드리스 도구가 첫 폴링 완료 전에 스냅샷을 뜨는 경우가 있는 타이밍 아티팩트).
관련 파일
/Users/ef/crowny-gametools/web/공통.js
/Users/ef/crowny-gametools/web/공통.css
/Users/ef/crowny-gametools/web/참가자.html
/Users/ef/crowny-gametools/web/티옴타.html
/Users/ef/crowny-gametools/web/퀴즈.html
/Users/ef/crowny-gametools/web/딜러.html
/Users/ef/crowny-gametools/web/공통표시.한선
잔여 이슈
- 퀴즈 서버(
서버.한선 _처리스탠바이)가 STANDBY 시 _방퀴즈문제idx를 리셋하지 않음 —
클라에서
phase==='standby'를 우선 신호로 흡수해 우회했지만, 근본적으로는 서버가
qidx도 -1로 리셋하는 게 정합적. 후속 티켓 후보.
?dealer=1 플래그는 이번 작업 중 새로 도입한 접근 경로라 딜러 운영 매뉴얼/랜딩 안내에
반영 필요(현재는 코드에만 존재).