← 목록
브라우저 2026-06-28 6KB 읽기 6분

요청: chess-settlement-braininteg-vegas-browser

  • 날짜: 2026-06-28 12:33:36
  • 작업 경로: /Users/ef/crowny-chess/data

요청 본문

①토너먼트 종료정산·우승발표 ②두뇌점수 통합정교화 (직접). 병렬: ③크라우니베가스 채팅 익명필터+크라우니메신저 DB통합(상호동의시만 정체공개) ④한선씨 최적화체크+크라우니브라우저 앱같은 경험(개발완료후)

관련 산출

(클로드가 작업 결과를 이어 기록)

관련 산출 (2026-06-28 완료)

①② (기존 세션 완료 확인)

  • 토너먼트 종료정산·우승발표: settleTourney() — 순위정렬→우승자 결정→맘 상금 30 지급(1회)+inbox+SSE tourneyWin, 비우승 참가자 tourneyEnd 알림. pubTourneyDetail이 호출 시 자동 정산.
  • 두뇌점수 통합정교화: cogScore() 종합점수(퍼즐/시각화/복기 통합) 일일 스냅샷+7일 추세, /api/cognitive.

③ 크라우니베가스 익명채팅 + 메신저 정체공개 (신규 — 본 세션)

  • SSOT: 베가스익명판정.한선 (4상, 비음수 코드 음0/타1/옴2/티3 — VM 안전: 음수리터럴·나눗셈 회피). 컴파일·검증 15/15 PASS. 학습 등록 베가스_익명채팅_정체공개_4상판정.
  • server.js:
  • vegasHandle(gameId,owner) — 게임+소유자 해시 → 18개 카지노 별칭(골드 재규어·실버 팰컨…) 익명 핸들(대국 내 일관, 게임 간 비추적).
  • vegasFilter(text) — 전화/URL/이메일/외부메신저ID(카톡·텔레그램·라인…) → 타(차단, 익명 위반), 욕설 → 옴(마스킹 후 전송), 깨끗 → 티.
  • /api/game/:id/chat 개편: 익명 핸들로만 표시(실명 비노출), 필터 적용.
  • /api/game/:id/reveal (POST/GET): 상호동의 판정(revealVerdict). 둘 다 동의=공개→실명+크라우니메신저 정체(talkLookup talk-api:9766 그레이스풀)+딥링크(talk.crowny.org/?u=) 교환, 양측 SSE reveal 알림+시스템 메시지. {cancel:true} 동의 철회(단 1회 공개 후엔 히스토리 보존).
  • 프론트(app.js/style.css): 익명 핸들 렌더+"나" 표식, 정체공개 동의/대기/철회 바, 공개 시 메신저 연결 카드(reveal-ov), notify 실시간 갱신, 차단/마스킹 토스트.
  • E2E 전 항목 통과: 깨끗→티 / 전화·외부ID·URL→타 차단 / 욕설→옴 마스킹 / 익명핸들 부여 / 한쪽=대기·둘다=공개→실명+딥링크.
  • ④ 한선씨 최적화 체크 + 브라우저 앱경험

    • 한선씨 최적화: 전체 .한선 20/20 컴파일 무결, .toau 동반 완비.
    • PWA 앱경험: SW 캐시 v1→v2(베가스 변경분 반영, cache-first stale 방지)+pgn.js 셸 추가, controllerchange 자동 새로고침(이미 열린 탭 무중단 갱신). manifest/safe-area/설치프롬프트는 기존 완비 확인.

    관련 파일

    • /Users/ef/crowny-chess/베가스익명판정.한선 (+.toau)
    • /Users/ef/crowny-chess/server.js (vegasHandle/vegasFilter/revealVerdict/talkLookup, chat·reveal 라우트)
    • /Users/ef/crowny-chess/public/js/app.js (chatMount/chatPush/refreshReveal/toggleReveal/showReveal)
    • /Users/ef/crowny-chess/public/css/style.css (chat-reveal·reveal-card·cmsg.sys)
    • /Users/ef/crowny-chess/public/sw.js (v2), public/index.html (controllerchange)

    잔여 이슈

    • talk-api(:9766) /api/identity 엔드포인트 실연동 미확인 — 현재 그레이스풀(다운/부재 시 실명+딥링크만). 메신저측 identity 조회 API 확정 시 talkLookup 경로 정합.
    • 헤드리스 dump-dom 빈출력(기존 함정) — 서버 E2E·JS syntax·자산서빙으로 검증 대체.

    잔여이슈 해결 (2026-06-28 추가 세션) — talk-api 신원 실연동

    발견한 불일치

    • 가정했던 GET /api/identity?id=존재하지 않음. 실제 메신저 API는 GET /identity/:crowny_id(경로형, 포트 9766, ws-server-v3.js:3637), crowny_id 형식 CRN-[0-9A-F]{8}, 응답 {display_name, handle, fingerprint, ...}.
    • 메신저 HTTP API(:9766/:9767)는 현재 다운(SPA :9752만 가동). 체스 id(이메일/유저명)는 crowny_id(CRN-) 형식과 직접 매핑 안 됨.
    • 권위 신원원 = SSO 통합계정(:9401, 가동 중, 376 사용자). GET /api/profile/:username(공개) → {displayName, accountId:"CRW…"}.

    해결: 계층형 신원조회 (resolveIdentity)

    • SSO(:9401)ssoUsername(id)(소문자·@crowny.org 제거, auth normalizeUsername 미러)로 정규화 후 /api/profile/:username → 권위 실명(displayName)+accountId.
    • 메신저(:9766) — id가 CRN-XXXXXXXX 형식일 때만 /identity/:crowny_id → handle+인증서지문(verified 배지).
    • 체스 계정명 — 최종 폴백(둘 다 다운/미일치 시 유실 0).
    • 범용 httpGetJson 그레이스풀(타임아웃 2.2s, 다운→null). 딥링크=https://talk.crowny.org/.
    • 프론트 reveal 카드: 실명+@handle+✓인증 배지+통합계정 accountId 표시.
    • SSOT 동반 신원조회판정.한선(출처 우선순위 체스1/SSO2/메신저3, 인증배지, 조회게이트 — 검증 9/9, 학습 등록).
    • SW 캐시 v2→v3.

    E2E 검증

    • testuser(SSO 실사용자) 정체공개 → name "Test User"(체스닉 아닌 SSO 실명)·source sso·accountId CRW00e4…
    • chess_rival(비SSO) → 체스 계정명 폴백·source chess
    • 메신저 :9766 다운에도 크래시 0·유실 0 ✓
    • 공개 chess.crowny.org HTTP 200, sw v3·verified배지 배포 확인.

    남은 후속 (선택)

    • 메신저 :9766 기동 + chess id↔crowny_id 매핑(SSO accountId CRW… ↔ messenger CRN-… 링크 테이블)이 생기면 handle/지문 자동 보강 활성화. 현재는 SSO 실명까지 실연동 완료.

    한선씨 동반: 21개 (베가스익명판정·신원조회판정 포함)