← 목록
기타 2026-07-12 4KB 읽기 4분

crowny-class CVF 단일화 재기동+라이브 E2E 실측 (2026-07-12)

개요

class.crowny.org(9864)의 mp4→CVF 단일화 전환 이후, 서비스를 재기동하고 라이브 상태에서 CVF 라우트·캔버스 재생·관리자 대시보드 판정 배선·회귀 4영역을 전수 실측했다.

무엇을 했는지

1. 재기동

  • launchctl kickstart -k gui/$(id -u)/com.crowny.class → 부팅 로그 모듈 5개 확인(enroll/video/lesson/community/admin).
  • com.crowny.video(video.crowny.org, 9877)도 재기동 확인.

2. CVF 라우트 실측 (o1-1=무료 mrgilkb817j8, o3-1=유료 mrgilm7qqxjf)

케이스기대실측
무료 무로그인 /api/video/cvf/<free> (Range)206206
무료 무로그인 /api/video/cvfaudio/<free> (Range)206206
유료 무로그인 /api/video/cvf/<paid>401401
유료 무로그인 ?owner=가짜401401
구 mp4 stream /api/video/stream/<id> (양쪽)410410/410
구 다운로드 video.crowny.org/api/download/class_o3-1.cvf (로컬+공개 HTTPS)404404/404

3. 캔버스 재생 실증 (puppeteer-core, class.html)

  • 함정 발견: class.html 전체 스크립트가 (function(){ ... })() IIFE로 감싸여 있어
cvfPlayer/CVFDecoder/state 등 내부 변수가 window에 노출되지 않는다 — puppeteer page.evaluate에서 직접 참조 불가(항상 undefined, waitForFunction이 조용히 타임아웃). 판정은 DOM 관측치로 전환: 캔버스 픽셀(#cvfCanvas getImageData), 프레임 인덱스 미러(#cvfSeek.value — cvfRenderFrame이 매 프레임 갱신), 오디오 마스터클럭(#cvfAudio.currentTime).
  • 무료 레슨(o1_1) 선택 → CVF fetch+parse+최초렌더 2823ms(138MB, 2133프레임) → 캔버스 고유색 21(>20, 실프레임) → ▶ 클릭 → 3초 후 seek 0→25, audio.currentTime 0→2.88s, audioPaused=false.
  • 스크린샷: /tmp/class-cvf-play.png (실제 강의 화면녹화 프레임 렌더 확인, 타이머 0:02/3:56).
  • 판정 로직 SSOT: 한선씨/class-cvf-playtest.한선(4항목 4상 판정: 실프레임판정·프레임전진판정·오디오전진판정·종합재생판정) — 컴파일+실행 검증 완료. 드라이버(puppeteer)는 부득이한 JS.

4. 관리자 대시보드 판정 배선

GET /api/admin/dashboard(Bearer ADMIN_TOKEN) 응답에 관리판정.한선 미러 함수(수강생비율·입금대기판정·수료율·대시보드상태) 결과가 실배선 확인:
json{"수강생수":0,"대기입금":0,"영상수":23,"과제수":0,"주차별진도":{},"정원":150,"수료율":0,"입금상태":"정상","모집상태":"모집중"}

5. 회귀

  • GET /api/lesson/curriculum → 200, 95레슨.
  • GET /api/enroll/status → 200, {capacity:150,enrolled:0,remaining:150,open:true}.
  • GET /api/community/portfolios → 200, 21건(showcase).

관련 파일

  • /Users/ef/crowny-class/server.js, modules/video/routes.js, modules/admin/routes.js
  • /Users/ef/crowny-class/public/class.html (CVF 캔버스 플레이어, IIFE 스코프)
  • /Users/ef/crowny-class/한선씨/관리판정.한선, class-cvf-playtest.한선(신규)
  • 테스트 드라이버: scratchpad/class-cvf-playtest.js (puppeteer-core)
  • 업로드맵: /Users/ef/crowny-class/영상원본/업로드맵.psv

잔여 이슈

  • 없음 — 5영역 전수 실측 통과, 재현 3회 이내 완료(1회차 성공).
  • task #17([정합] 동반 3파일 허위주장 정정)은 별도 세션(2a) 담당분 남아있음(영상엔진.한선) — 본 작업 범위 밖.
크라우니코드: lookup HIT 0건(재사용) / MISS 1건(생성: cvf재생판정) / learn 추가 1건