요청: chess-settlement-braininteg-vegas-browser
- 날짜: 2026-06-28 12:33:36
- 작업 경로: /Users/ef/crowny-chess/data
요청 본문
①토너먼트 종료정산·우승발표 ②두뇌점수 통합정교화 (직접). 병렬: ③크라우니베가스 채팅 익명필터+크라우니메신저 DB통합(상호동의시만 정체공개) ④한선씨 최적화체크+크라우니브라우저 앱같은 경험(개발완료후)
관련 산출
(클로드가 작업 결과를 이어 기록)
관련 산출 (2026-06-28 완료)
①② (기존 세션 완료 확인)
- 토너먼트 종료정산·우승발표:
settleTourney()— 순위정렬→우승자 결정→맘 상금 30 지급(1회)+inbox+SSEtourneyWin, 비우승 참가자tourneyEnd알림.pubTourneyDetail이 호출 시 자동 정산. - 두뇌점수 통합정교화:
cogScore()종합점수(퍼즐/시각화/복기 통합) 일일 스냅샷+7일 추세,/api/cognitive.
③ 크라우니베가스 익명채팅 + 메신저 정체공개 (신규 — 본 세션)
베가스익명판정.한선 (4상, 비음수 코드 음0/타1/옴2/티3 — VM 안전: 음수리터럴·나눗셈 회피). 컴파일·검증 15/15 PASS. 학습 등록 베가스_익명채팅_정체공개_4상판정.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회 공개 후엔 히스토리 보존).④ 한선씨 최적화 체크 + 브라우저 앱경험
- 한선씨 최적화: 전체 .한선 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 실명)·sourcesso·accountIdCRW00e4…✓chess_rival(비SSO) → 체스 계정명 폴백·sourcechess✓- 메신저 :9766 다운에도 크래시 0·유실 0 ✓
- 공개 chess.crowny.org HTTP 200, sw v3·verified배지 배포 확인.
남은 후속 (선택)
- 메신저 :9766 기동 + chess id↔crowny_id 매핑(SSO accountId CRW… ↔ messenger CRN-… 링크 테이블)이 생기면 handle/지문 자동 보강 활성화. 현재는 SSO 실명까지 실연동 완료.