요청: play-실공연연동-찜-대시보드매칭
- 날짜: 2026-06-21 21:30:57
- 작업 경로: /Users/ef/crowny-play/public
요청 본문
실제 공연과 연결, 디자인/컬러/이모지 개선, crowny.org 대시보드 실연동, 찜한 공연이 대시보드에 매칭
관련 산출
(클로드가 작업 결과를 이어 기록)
결과 — 찜 → crowny.org 대시보드 매칭 (완료, E2E 검증)
찜(bookmark) = cell_edges 엣지(edge_type='찜', from=owner, to=event)
src/cellcore/db.js: isBookmarked/addBookmark/removeBookmark/listBookmarks (owner=crowny owner 토큰).server.js: GET/POST/DELETE/api/bookmarks+/api/bookmarks/toggle+/api/bookmarks/check. owner=?o=/X-Crowny-Owner/body.owner.- owner 브릿지: 서브도메인 localStorage 미공유 → ?o=(play 진입) + X-Crowny-Owner(대시보드) 동일 crowny owner 토큰으로 매칭.
crowny.org 대시보드 위젯 (dashboard.js loadPlay 전면 개편)
- "내 찜 공연"(owner의 찜) + 추천 공연 2섹션, 각 항목 ★/☆ 찜 토글(togglePlayBookmark, POST /api/play/bookmarks/toggle X-Crowny-Owner), 실제 예매처(source_url) 링크 "예매처↗".
- /app 딥링크에 ?o=_owner 부착 → play 앱 진입 시 owner 승계.
play 앱(app.html)
- getPlayOwner(?o= 우선 → localStorage), 이벤트 상세에 ☆ 찜하기 버튼 + 상태동기(isPlayBookmarked).
실공연/컬러/이모지
- 실공연: events.source_url(인터파크/멜론/YES24) 이미 보유 → 위젯·상세에 실예매 링크 노출.
- 컬러: off-brand 파란(59,130,246) 누수 전 SPA 제거→티옴타 브래스(181,138,74).
- 이모지: crowny-icons.js autoObserve 동적 치환 활성(이전 작업).
인프라 사고/복구
- play kill 후 재기동 불가(homebrew node26 ABI 불일치) → better-sqlite3@12.11.1 업그레이드로 복구. 교훈=feedback_node26_better_sqlite3_abi.
E2E 검증
- play 토글 찜(owner X) → /check true → 대시보드 /api/play/bookmarks(X-Crowny-Owner X) 매칭 1건. 양방향 OK. 파란누수 0, 페이지 200.
잔여
- 독립 widget-play.js(임베드용)는 hot만 — 필요시 찜 섹션 추가.
- 실시간 스크리닝(KOPIS 라이브 수집)은 별도. 현재 source_url=시드의 실URL.