B4 완료: 노래방 기둥 + golden 시니어 모드
개요
music.crowny.org:9886 노래방(karaoke) 기둥과 golden.crowny.org:9967 시니어 노래방 서버를 완성했다.
완료 작업
routes/karaoke.js 수정 (핵심)
- export 방식 수정:
module.exports = { handle }→module.exports = handle - server.js 호출 규약
R.karaoke(req, res, pn, u, ctx)에 맞게 함수 시그니처 변경 ctx.sendJSON사용으로 한글 Content-Length 함정 완전 회피/api/karaoke/accompaniment/:id엔드포인트 추가 (ctx.serveAudioRange 위임, 없으면 원곡 fallback)url.searchParams→u.searchParams참조 버그 수정길이ms: (meta.길이초||0)*1000중복 계산 제거 (catalog에 이미 길이ms 있음)
가사 파일 이름 수정
data/lyrics/hansunpiano-courage.lrc.json→hsp-courage.lrc.jsondata/lyrics/hansunpiano-saranghagi.lrc.json→hsp-saranghagi.lrc.json- trackId 기반 조회와 일치
오디오 파일 경로 수정
- 이전:
public/audio/(symlink→iCloud stub, 스트리밍 시 ETIMEDOUT) - 수정:
uploads/audio/{id}.mp3(server.js resolveAudio() 1차 탐색 경로) - 개발용 placeholder MP3 생성 (4180 bytes, 실 음원 대체용)
검증 결과
| 엔드포인트 | 결과 |
|---|---|
| GET /api/karaoke/catalog | 2곡 반환 |
| GET /api/karaoke/song/hsp-courage | hasLyrics:true, 길이ms:210000 |
| GET /api/karaoke/lyrics/hsp-courage | 7라인 반환 |
| GET /api/karaoke/search?q=10002 | hsp-saranghagi 반환 |
| GET /api/music/stream/hsp-courage (Range) | 206 Partial Content |
| GET /api/karaoke/accompaniment/hsp-courage | 206 (원곡 fallback) |
| POST /api/karaoke/score | 81점, 옴(A) 등급 |
| GET /api/karaoke/leaderboard/hsp-courage | 1 entry |
| golden proxy /api/karaoke/catalog | 2곡 proxy 성공 |
| golden POST /golden/api/queue | itemId 생성 |
| golden GET /golden/api/queue/dev-001 | 2 items |
관련 파일 경로
crowny-music (9886)
/Users/ef/crowny-music/routes/karaoke.js— 수정된 라우터/Users/ef/crowny-music/한선/노래방엔진.한선+.toau/Users/ef/crowny-music/한선/가사싱크.한선+.toau/Users/ef/crowny-music/한선/채점.한선+.toau/Users/ef/crowny-music/public/karaoke/{index,sing,result}.html/Users/ef/crowny-music/public/karaoke/{player.js,karaoke.css}/Users/ef/crowny-music/data/lyrics/hsp-{courage,saranghagi}.lrc.json/Users/ef/crowny-music/data/songNumber.psv/Users/ef/crowny-music/uploads/audio/hsp-{courage,saranghagi}.mp3(placeholder)
/Users/ef/crowny-golden/server.js/Users/ef/crowny-golden/한선/{골든엔진,예약큐,선물,리모컨}.한선+.toau/Users/ef/crowny-golden/public/{index,sing,remote}.html/Users/ef/crowny-golden/public/{golden,remote}.{js,css}
잔여 이슈
- 실 음원: Desktop MP3 파일이 iCloud 다운로드 대기 상태 → 이용자가 파인더에서 파일 열거나
brctl download실행 필요 - 곡번호 데이터: 노래방엔진.한선이
data/songNumber.psv에서 곡번호 조회 — 현재 2곡만 있음 - golden
.claude/settings.json: 미생성 (서브에이전트 권한 분리 필요시 추가)