← 목록
AI 2026-07-09 3KB 읽기 3분

THE IRUM · academy.crowny.org — 세션복구 + AI 채점 파이프라인 검증·하드닝

개요

재부팅으로 중단된 win120 세션(학원 통합 프로그램 + AI 채점 시스템)을 복구. 스냅샷(~/.claude/knowledge/revive-snapshots/win120-학원통합-AI채점.txt, 5317줄) 정독 → 현황 파악 → 서비스 헬스·AI 채점 end-to-end 검증 → 발견한 견고성 갭 1건 수정.

현황 (복구 시점 = 모두 정상)

  • academy.crowny.org :9865 (PID 50706, launchd com.crowny.academy) — 로컬 200, 공개 HTTPS 200
  • irum.crowny.org :9867 (PID 1741) — 로컬 200, 공개 HTTPS 200
  • 두 서비스는 동일 server.js 코드 공유(PORT env로 분기). 중복 인스턴스·유령 PID 없음.
  • 직전 세션이 우려한 ①공개 HTTPS 000 ②academy 유령 PID 2369 → 재부팅으로 자연 해소(전자는 홈IP/ISP 일시단절, 후자는 리부트로 소멸).

AI 채점 파이프라인 end-to-end 검증 (핵심 차별화)

  • POST /api/scoring/objective — 객관식 채점 4/5·80% + 취약영역분석(categoryMap은 1-based 문항번호 q 키) ✓
  • POST /api/scoring/descriptive — 서술형 키워드 부분점수(10/10) ✓
  • POST /api/dualai/analyze — Dual-AI 교차분석: radar 5축 + IB Criterion A~D(0~7) + STEAM + SDGs 배지 + 처방전 + recommendedClass ✓
  • GET /api/scoring/analytics — 32건 집계·정답률 65.4% ✓

수정: subjectScores 한글 키 무음 0점 방지 (견고성 하드닝)

  • 증상: subjectScores에 한글 과목 키(수학/국어/영어)를 넘기면 radar·IB·STEAM·배지가 전부 0으로 반환.
  • 원인: adapters/gemini.js·modules/dual-ai/routes.js 폴백이 영문 키(korean/math/english)만 구조분해. 현 프론트(theirum.js:271)·scoring·compare·growth는 전부 영문 키라 실제 회귀는 없었으나, 한국어 플랫폼 + 가맹 화이트라벨 확장 시 한글 키 호출이 무음으로 잘못된 분석을 냄.
  • 수정: modules/dual-ai/routes.js_normalizeSubjectScores() 추가 → analyze 진입점(검증 직후)에서 국어→korean 수학→math 영어→english 피아노→piano 정규화(영문 키는 그대로 통과). 단일 choke point라 gemini·폴백 양경로 모두 커버.
  • 검증: 한글 키/영문 키 입력이 동일한 정확 결과(radar 기초88·문해79·성향95·문제해결91·표현86, STEAM 89, SDGs 배지 4개) 반환.

한선씨 동반 (규칙 준수)

  • 한선씨/교차분석.한선함수 7 과목코드(과목명) 추가(한글 과목명→표준코드 1~4, 기타 0). 컴파일+실행 OK(수학=2·국어=1).
  • 학습DB 등록: intent "과목명 한글키를 표준 영문코드로 정규화".

관련 파일

  • /Users/ef/crowny-academy/modules/dual-ai/routes.js (정규화 helper + 진입점 적용)
  • /Users/ef/crowny-academy/한선씨/교차분석.한선 (함수 7)
  • /Users/ef/crowny-academy/CLAUDE.md (v3.1 = 38 코어 라우터, +irum 맞춤 13 = 51)

잔여 이슈

  • 없음(핵심 기능 검증 완료). 향후: OCR_PROVIDER=tesseract 실사진 채점 실측, GEMINI_MODE=live 실 Gemini 연동은 키 주입 시 스위치.