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

class.crowny.org 무로그인 무료 체험 모드

개요

class.crowny.org(:9864) 프론트에 로그인 없이 오리엔테이션 무료 3강(o1_1/o1_2/o1_3)을 체험할 수 있는 모드를 추가했다. 서버(API-CONTRACT.md 기준 이미 배선 완료 — curriculum 공개, video/stream free 무로그인 허용)는 무접촉, 프론트 2파일만 외과적 패치.

무엇을 했는지

public/class.html

  • 무로그인 접속 시 join.html로 리다이렉트하던 기존 흐름 제거 → 체험 모드 렌더로 전환.
  • state.trial 플래그 도입. 로그인 상태(owner 존재) 분기는 완전히 보존(회귀 없음).
  • 커리큘럼 전체(95레슨, /api/lesson/curriculum 공개)를 목록에 표시하되 free:true(o1_1~o1_3)만
클릭 가능, 나머지는 자물쇠(🔒) 아이콘 + locked 클래스로 비활성 표시.
  • 잠금 레슨 클릭 → #lockedNotice 카드: "수강 신청하면 전체 95레슨이 열립니다" + join.html 링크
(총 레슨수는 curriculum 응답 length로 동적 계산 — 지시문의 "72레슨"은 실측 95와 달라 동적값 사용).
  • 체험 모드 레슨 렌더는 /api/lesson/<id>(로그인 필요) 대신 curriculum 캐시(state.allLessons)에서
직접 구성 — 서버 인증 호출 없음.
  • 영상 재생: src=/api/video/stream/<videoId> (owner 쿼리 없음, free 영상 무로그인 허용 확인됨).
진도 POST(/api/video/progress)는 트라이얼에서 호출하지 않음(ontimeupdate=null).
  • "작업 시작" → 클라이언트 전용 55분 카운트다운 (localStorage['trialTimer_<lessonId>']
endsAt epoch ms 저장, 새로고침해도 남은 시간 복원). 서버 세션 API(start-work/session) 호출 없음.
  • 타이머 중 "작업 완료" 버튼 또는 타이머 종료 시 → #trialShareNotice: "작업 공유는 수강생만
가능합니다 — 지금 등록하면 함께 나눌 수 있어요" + join.html CTA. /api/lesson/<id>/finish 호출 없음.

public/index.html

  • 히어로 섹션 바로 아래에 #trial 섹션 신규 삽입(대규모 재작성 없이 섹션 삽입만):
무료 3클립 카드([오리엔테이션] 내소개와 우리반 작품 1~3) + "로그인 없이 바로 수강" 버튼(→ class.html).
  • 기존 디자인 토큰(--bg/--panel/--gold/--coral 등)·구조 그대로 재사용, 신규 CSS는 .trial-grid/
.trial-card 2개만 추가.

실측 검증

curl -s http://127.0.0.1:9864/api/lesson/curriculum → lessons[].{id,week,order,title,videoId,free,goal,workGuide,minutes}
  총 95레슨, free:true 3개(o1_1,o1_2,o1_3), week=0
curl 무로그인 /api/video/stream/mrgilkb817j8(free) → 200
curl 무로그인 /api/video/stream/mrgilkupvvut(non-free) → 401
curl /index.html, /class.html → 200
div/section/a 태그 짝 검사: index.html 74/74, 7/7, 14/14 — class.html div 48/48
node vm Script 파싱으로 <script> 블록 JS 문법 검증 통과

한선씨 동반

/Users/ef/crowny-class/한선씨/프론트카피.한선 끝에 함수 2개 append(기존 함수 유지):
  • 잠금안내문구(전체레슨수) — 잠금 레슨 안내 문구 조립
  • 체험타이머문구(상태, 남은초) — 체험 타이머 working/done 상태 문구 조립
컴파일 실증(./hanseonc_high 프론트카피.한선 > /tmp/frontcopy.toau && ./crownyc run):
수강 신청하면 전체 95레슨이 열립니다
체험 작업 시간 54:59 남음
시간이 종료되었습니다! 완성한 작업을 제출해주세요
작업 공유는 수강생만 가능합니다 — 지금 등록하면 함께 나눌 수 있어요
exit 0.

크라우니코드: lookup HIT 0건(재사용) / MISS 2건(생성 — 체험모드 관련 기존 학습DB에 패턴 없었음) / learn 추가 2건(체험잠금안내문구, 체험타이머문구조립).

관련 파일

  • /Users/ef/crowny-class/public/class.html
  • /Users/ef/crowny-class/public/index.html
  • /Users/ef/crowny-class/한선씨/프론트카피.한선
  • /Users/ef/crowny-class/API-CONTRACT.md (참조만, 미수정)

잔여 이슈

  • 없음. 서버·모듈·다른 한선씨 파일 무접촉, 서비스 재기동 없음(9864 라이브 상태 유지, 읽기 전용 curl로만 확인).
  • 지시문의 "72레슨" 문구는 실측 95레슨과 달라 하드코딩하지 않고 curriculum 응답 length로 동적 처리함(정확도 우선).