크라우니인베스트 — 퀴즈 게이트 + 테스트딜 정리 + 계약 문서화 (3건 병렬)
개요
사용자 요청 "셋다 병렬로 진행" — ① 학습 콘텐츠/퀴즈 게이트 ② 인터페이스.md 신규 라우트 계약 반영 ③ baseline 구 테스트딜 정리. 에이전트 스폰이 레이트리밋이라 메인(Opus)이 인라인 직접 수행(도구 호출은 레이트리밋 무관).
① 학습 콘텐츠/퀴즈 게이트
교육 이수가 자기신고형(API 호출만)이던 것을
퀴즈 통과 게이트로 격상.
핵심/커리큘럼.한선(신규): 9과목 1학년(기초) 각 3문항 퀴즈. 커리큘럼_있음/합격여부/채점점수/퀴즈JSON. 정답은 서버 내부 전용(클라이언트 미노출). 합격선=(문항수+1)/2=2. _t_커리큘럼.한선 15/15(기대값 1건 자가수정).
- 서버:
POST /api/quiz(문항 조회, 정답 제외) + /api/edulearn 게이팅(커리큘럼 있으면 답안 채점, 합격해야 교육_이수등록; ungated 학년은 레거시 통과).
- 인트라넷: "퀴즈 불러오기"→라디오 문항 렌더→"이수 제출"(답안 "2|1|3" 수집).
- 검증: 오답(0/2)·답안누락 뱃지 차단, 정답(3/2) 뱃지부여, 정답필드 미노출, ungated 2학년 통과, UI 마크업.
⚠️ 회귀 발견·수정 (②의 부수효과)
인터페이스.md 검토 중
라우트 충돌 발견: 교육 이수에 붙인
/api/learn이 기존
자율학습 /api/learn(491행)을 선점(378행). 자율학습 한글 경로는 percent-encoding으로 404라, 자율학습 HTTP 엔드포인트가 죽어 있었음.
- 수정: 교육 이수 ASCII를
/api/edulearn으로 변경(한글 /api/학습이수 유지), UI도 갱신. /api/learn=자율학습 복구(키 관측수/규칙 확인), /api/edulearn=교육 게이트. 회귀 GREEN.
② 인터페이스.md 계약 반영
교육.한선·소개.한선·커리큘럼.한선 모듈 + 신규 라우트(invite/referrer/edulearn/edu/quiz) 계약 추가. /api/learn vs /api/edulearn 충돌 주의 명시.
③ baseline 테스트딜 정리
딜.dat 51건 중 명확한 테스트/검증 잔여물 9건(TEST001/002, TEST_RISK, D_JOURNEY, ADV1~5) 백업 후 제거 → 42건. patrol 발견이 빈 배열로(가짜 TEST_RISK 위기 제거). 의도적 데모 시드(SEED/GROW/LATE 분포·메모리 "운영 브리핑 시연용")·명명 데모(D1~5/D9) 보존. 백업 data/딜.bak.테스트딜정리.20260614.dat.
관련 파일
핵심/커리큘럼.한선·_t_커리큘럼.한선, 투자서버.한선(/api/quiz·/api/edulearn 게이팅), public/intranet.html(퀴즈 UI), 인터페이스.md
- 백업:
data/딜.bak.테스트딜정리.20260614.dat, 소개.bak.*·이수.bak.*
잔여 이슈
- 퀴즈는 9과목 1학년만 정의 — 2~9학년은 ungated(콘텐츠 추가 시 게이트 확대 가능, 구조는 준비됨).
- 라우트 충돌 교훈: 새 ASCII 라우트 추가 전 기존 별칭과 충돌 점검 필요(자율학습이 한글경로 404라 ASCII 별칭에만 의존했던 사례).
- 학습자 수백+ 시 이수.dat/소개.dat 샤딩 미구현.