play.crowny.org 귀속 + GUI 크라우니화
개요
play.crowny.org(:7760, 크라우니플레이)를 crowny.org(:9852, 크라우니AI 허브) 안에 귀속.- 귀속의 정의(사용자 확정): 랜딩페이지는 play.crowny.org에 크라우니 디자인으로 개선해 유지, 실제 기능(인기공연/통계/문화/티켓/포네)은 crowny.org GUI(대시보드) 안에서 작동.
- 기존 확립 컨벤션(cloud/wallet/tiomta 위젯 배선)을 그대로 미러링.
무엇을 했는지
1) 기능 귀속 — crowny.org GUI 안에서 작동
crowny-ai/server.js /api/play/* same-origin 프록시 라이브 결선(추가형, 백업 server.js.bak.play_*, node --check 통과, launchctl kickstart 재기동).authorization·x-crowny-owner 헤더 위임.crowny-ai/engine/play-connect.js — play:7760 프록시 + 위젯 헬퍼(fetchHot/fetchStatus, 부킹 4상 판정).crowny-ai/public/widget-play.js — 독립 임베드 위젯(#crowny-play-widget), 인기공연 카드.crowny-ai/public/dashboard.html + dashboard.js — 대시보드에 "크라우니플레이" 위젯 추가(loadPlay()), refreshAll·비로그인 분기 결선. 비로그인도 공개 인기공연 표시.2) GUI 크라우니화 — play 랜딩 리테마
crowny-play/public/css/landing.css— 보라(#8b5cf6) 팔레트 → 크라우니 골드/다크(#C9A961 / #0A0908 / #161410) 통일.:root토큰 + 하드코딩 rgba(139,92,246)·(192,132,252) 전량 골드(201,169,97) 치환. Pretendard Variable.crowny-play/public/index.html— 히어로 CTA·nav 버튼을 crowny.org/dashboard로, "crowny.org 안에서 동작" 안내 추가. 생태계 섹션에 crowny.org 허브 카드 신설(👑), 인라인 보라/앰버 → 골드.
3) 한선씨 동반 + 학습
crowny-ai/플레이연결.한선— owner매핑/업스트림경로/부킹4상(Ti예매중·Om예정·Ta마감·Um미정)/가격포맷.hanseonc_high+crownyc run검증(6케이스 전부 정확).- crownycode-learn
플레이연결학습 완료. - 런북
crowny-ai/배선-플레이.md— server.js 무접촉 결선 명세(이번엔 라이브 적용까지 완료).
관련 파일
- /Users/ef/crowny-ai/server.js (
/api/play/*프록시, 555행 cloud 블록 다음) - /Users/ef/crowny-ai/engine/play-connect.js
- /Users/ef/crowny-ai/public/widget-play.js
- /Users/ef/crowny-ai/public/dashboard.html, dashboard.js
- /Users/ef/crowny-ai/플레이연결.한선, 배선-플레이.md
- /Users/ef/crowny-play/public/index.html, public/css/landing.css
검증 (라이브)
curl :9852/api/play/status→ events 1173curl :9852/api/play/hot?limit=3→ 인천 펜타포트 등 라이브:9852/dashboard→ 크라우니플레이 위젯 마운트, widget-play.js HTTP 200:7760/css/landing.css→ 골드 팔레트 서빙, 랜딩 HTML 귀속 안내 서빙- crowny.org
/api/healthHTTP 200 (재기동 후 정상)
잔여 이슈
- play SPA(
crowny-play/public/app.html, 183KB) 전면을 crowny.org 안으로 이식하는 풀 마이그레이션은 별도 단계. 현재는 위젯(인기공연/통계) + 딥링크(/app)로 1차 귀속. - 인증 경로(culture/fone/reservations) 위젯화는 owner(JWT/X-Crowny-Owner) 스코핑 후 확장 예정.
/api/play/*폴백이 그대로 포워드하므로 추가 귀속은 위젯만 붙이면 됨. - ticket(:7761)/kbingo(:7762)/walk(:9773)/matching(:9774) 형제 서비스도 동일 패턴으로 순차 귀속 가능.
2차 — 울트라 진단 + 실반영 (2026-06-21 저녁, 사용자 피드백 후)
사용자 피드백: "랜딩 금색만 조금 넣은 듯, crowny.org에 플레이 안 보임, 프레임 스크롤 안됨." → 울트라 워크플로(3축 병렬 진단 + 적대검증 + 재설계).
진짜 근인 (적대검증이 1차 오판 교정)
- ② 키스톤:
/dashboard라우트가 server.js에 없음 → 정적 statSync 실패 → catch-all이 채팅 index.html 서빙(180792B). dashboard.html(24642B, 플레이 위젯)에 도달 불가. catch-all이 HTTP200으로 가려 1차에서 오판. 수정: 정적 핸들러 앞/dashboard→dashboard.html 명시 라우트. - ③ 스크롤: CSS 구조는 정상.
.main{min-height:0}(flex 스크롤 핵심)+.app{height:100dvh}보강(채팅·대시보드 양쪽). overflow:hidden 제거 불필요(없었음). - ① 랜딩: landing.css는 이미 253줄 완성 골드 디자인 — 진짜 문제는 index.html 이모지 아이콘. ⚡💥🔍📊/▶/🎭🎫🎯🎤🏢🎵👑 전부 모노톤 SVG 교체(잔존 0), Pretendard Variable 로드, crowny.org/dashboard 동선 13곳.
사고/복구
- 워크플로 진단 에이전트(기본 도구 전체)가 server.js를 자율 편집하며
/api/cloud/+/api/play/프록시 통째 삭제 → 클라우드·플레이 위젯 동시 사망. diff로 발견, 백업(server.js.bak.play_*)에서 재삽입 복원. 교훈=메모리 feedback_spa_catchall_masks_routes.
최종 라이브 검증
/dashboard→24642B 진짜 대시보드(playBody+사이드바 plate nav scrollToWidget('play')), 채팅 상단 "대시보드" tb-btn 동선./api/play/hot200(1174공연)·/api/play/status200·/api/cloud/quota401(정상 복구).- 랜딩: 이모지 0, SVG 13, Pretendard 2, gold #C9A961. script 6/6(JS 무결).
잔여
- ECO_FEATURED 웰컴카드에 play 추가는 buildEcoCards fill 로직 회귀 위험으로 보류(tb-btn 동선으로 충분).