generated from ttipo/project-base
feat(backend): AI 코스 평가 실행기와 후보 스냅샷, 기준선 결과 추가 #15
Reference in New Issue
Block a user
Delete Branch "feat/course-ai-eval"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
무엇을 · 왜
AI 코스 생성 평가 실행기를 만들고, Haiku 5.5 · Sonnet 5.5 기준선을 쟀다. 구현 순서의 6단계(설계 §14) 앞부분이다.
모델과 effort 를 정하려면 같은 후보로 평가셋 62개를 돌려 설계 §9 의 목표와 견줘야 한다. 기준선을 재 보니 자동 채점 실패의 3분의 2가 모델이 아니라 시간표 코드 때문이었다. 그래서 모델 결정은 그 고치기와 프롬프트 v2 뒤로 미룬다(다음 PR).
평가 실행기 —
npm run ai:eval--snapshotdocs/ai-eval/snapshots/에 저장한다. DB 만 쓰고 키는 필요 없다. 평가셋의 장소 이름(지역 장소 · 이전 코스 ·requires·place:이름)을 장소 DB id 로 바꿔 둔다checks전부, 지시문 유출(prompt_leak)을 본다--judgedocs/ai-eval/runs/<실행 id>/에 남는다(gitignore).summary.md는 목표와 나란히 본 요약,review.md는 사례별 코스와 사람 검토용 무작위 10개 표시다--fake는 가짜 AI 로 키 · 비용 없이 실행기를 확인한다--budget(기본 $3)에 닿으면 남은 사례를 돌리지 않는다--model·--effort·--only·--part·--concurrency서버와 같은 길을 돌게 —
course-planning.tsdraftAndPlan으로 뗐다planSetup으로 뗐다ai:check·ai:eval이 같은 함수를 쓴다. 파이프라인의 동작은 그대로다(e2e 59개)callStructured·createMessagesApi로 내보내 채점자도 같은 길로 부른다AiCheckCliModule→AiCliModule(ai.cli.module.ts)로 바꿨다(ai:check · ai:eval 공용)기준선 (2026-11-11, 프롬프트 course-v1 · conditions-v1, effort low)
개발 환경
docker-compose.dev.yml이docs/ai-eval을 백엔드 컨테이너의/eval에 붙인다./app밖이라backend/에 빈 폴더가 생기지 않는다up -d --force-recreate backend가 필요하다(익명 볼륨node_modules는 그대로 남는다)확인 방법
course-planning: 다시 부르기 조건, 실패한 호출의 사용량, 비 조건, 공휴일영향 범위
docker-compose.dev.yml에 개발용 볼륨 1개체크리스트
npm run sync:error-codes실행 후 생성 파일까지 커밋 — 바꾸지 않았다backend/.env.{env}에만 있다. 실행 결과(runs/)는 gitignore🤖 Generated with Claude Code