Skip to content

v 3.0.2#208

Merged
GulSauce merged 2 commits intomainfrom
develop
Apr 28, 2026
Merged

v 3.0.2#208
GulSauce merged 2 commits intomainfrom
develop

Conversation

@GulSauce
Copy link
Copy Markdown
Member

@GulSauce GulSauce commented Apr 28, 2026

  • ICC-316 ♻️ refactor: 4종 퀴즈 프롬프트를 few-shot 중심 구조로 통일

규칙 나열 → few-shot 중심으로 전환하여 Gemini의 프롬프트 준수율을 개선한다.

  • 공통 구조: Step 1(지식유형 판별) → Step 2(라우팅 테이블 + few-shot) → Step 3-4(Step 2 따르라)
  • MULTIPLE: 규칙 22개 → 3개, few-shot 8→14개 (9도메인), 숏컷 방지 점수 1.80→2.65
  • OX: few-shot 중심 재작성, 9쌍 (6도메인), Understand/Apply 수준 검증
  • BLANK: few-shot 중심 재작성, 8개 (3도메인), Remember/Understand 수준
  • ESSAY: few-shot 중심 재작성, 10개 (5도메인), Analyze/Evaluate 수준, 채점기준표 유지
  • RequestPrompt: 사용자 지시 반영 시 Step 1-2 테이블 라우팅 참조로 통일
  • ICC-316 ✨ feat: BLANK 퀴즈 프롬프트 품질 개선 — 패턴 다양화 및 빈칸 위치 전략
  • 패턴 C(특성형) 신규 추가, A~F 알파벳 순서 재조정
  • few-shot 예시 빈칸 위치를 문장 중간으로 다양화 (B~F)
  • 비교형(D) 경제학 도메인 예시 추가
  • 배분 전략: A 편중 방지, 빈칸 문장 끝 편중 방지
  • 오답 규칙 강화: 동일 범주 유사 개념 최소 2개
  • ICC-316 ♻️ refactor: OX 퀴즈 프롬���트 few-shot 품질 개선
  • O 예시에 한계/비용/예��� 조건 추가하여 숏컷 방지 강화
  • X 예시의 극단어("즉시", "모든") 제거 및 미묘한 변조로 교체
  • 라벨 통일: "O정답/X정답" → "참(O) 진술문/거짓(X) 진술문"
  • 패턴 A·C few-shot을 관계 추론형으로 교체 (Remember→Understand)
  • 6라운드 evaluator 평�� 결과: R1 6.6 → R5 8.65/12 (역대 최고)
  • ICC-316 ♻️ refactor: OX 퀴즈 프롬프트 few-shot 전면 개편
  • O/X 진술문 어조·길이 대칭화로 숏컷 방지 강화
  • X 변조 고도화: 단순 역전 → 조건누락형·범위과잉형·핵심역전형 혼합
  • O 진술문 간결화: 독립 판단 최대 2개로 제한하여 학습자 친화성 확보
  • 주제 다양화: 경제학 편중(5/9) → 8종 분야 분산 (생물학-자연선택, 물리학-엔트로피, 사회과학-생태학적 오류 추가)
  • 완성본 예시 JSON을 열역학 문항으로 동기화
  • ICC-316 🐛 fix: ESSAY 채점 프롬프트에 maxPoints 배점 고정 제약 추가

AI가 루브릭의 배점(maxPoints)을 임의로 재해석하여 동일 문제의 max_score가 재제출마다 달라지는 버그를 수정. 시스템 프롬프트에 루브릭 표의 [카테고리, N점]
값을 그대로 복사하라는 명시적 지시와 경고를 추가.

  • ICC-316 ♻️ refactor: MULTIPLE 프롬프트 전면 재설계 — 설명·예시·설명 삼중 구조 도입
  • 모든 지시사항에 -> 예시: + -> 설명: 인라인 구조 추가
  • 선택지를 자연스러운 구어체("~하는 대신, ~걸 감수한다")로 통일
  • Checking 패턴 2-2 배치(같은 지목 대상 2개씩) 소거법 방지
  • 오답 설명에 "극단적이지 않으면서 매력적인 구성 방법" 명시
  • Step 3 해설을 Step 2 설명 직접 참조 구조로 변경
  • 완성본 퓨샷을 새 해설 포맷(정답 설명/오답 설명)에 맞춤
  • 중립성 검토: 수식어("일부"/"크게") 및 비중립 표현 제거
  • ICC-316 🔧 chore: Resilience4j 슬로우 콜 임계값 설정 추가

Gemini 호출 서킷 브레이커에 slow-call-duration-threshold(60초)와 slow-call-rate-threshold(100%) 옵션을 추가하여 장시간 응답 케이스에 대한 서킷 동작을 제어할 수 있도록 한다.

  • ICC-316 ✨ feat: PDF 전용 Gemini 캐시 등록 메서드 추가

3-chunk 병렬 생성에서 각 청크가 서로 다른 시스템 프롬프트를 사용하면서
동일한 PDF를 공유할 수 있도록 createPdfOnlyCache(fileUri)를 추가한다. 시스템 프롬프트를 제외하고 PDF 콘텐츠만 캐시에 등록한다.

  • ICC-316 ✨ feat: TTLQ 메트릭 도입 및 MULTIPLE 청크 모드 설정 추가

마지막 문항 생성까지 걸린 시간(TTLQ)을 기록하여 Slack 성공/부분성공
알림에 노출한다. 기존 TTFQ와 함께 첫·마지막 문항 응답 시간 분포를
함께 관찰할 수 있게 한다.

또한 MULTIPLE 청크 모드(단일/멀티턴/병렬)를 설정으로 분기할 수 있도록
q-asker.ai.multiple.chunk-mode 옵션을 추가한다.

  • ICC-316 ♻️ refactor: 4종 퀴즈 프롬프트 구조 개선 — 패턴별 풀이 절차 명세화

BLANK·MULTIPLE·OX·ESSAY 프롬프트를 지식 유형(사실적/개념적/절차적/메타인지적) 단위로 재구성하고, 각 패턴별 단계별 풀이 절차와 자가점검 단계를 명시한다.

  • MULTIPLE: 정답 풀이 R1~R4 단계화, 오답을 R1/R2/R3 이탈로 도출하는 구조 도입
  • OX: 비교형/인과형/분류형/상황 전이형 패턴별 O/X 변별 메커니즘 설명 추가
  • BLANK: 패턴별 단서 분산 전략과 오답 유형(유사개념형/혼동유발형) 가이드 강화
  • OXRequestPrompt: 변조 유형 강제 제약을 제거하고 O/X 정답 준수만 명시
  • ICC-316 ♻️ refactor: 로그 메시지 [카테고리] key=value 포맷으로 통일

운영 알림·검색·메트릭 라벨링이 용이하도록 로그 메시지를
"[카테고리] 설명 key=value" 포맷으로 통일한다. 또한 예외를
문자열로 직렬화하던 케이스를 Throwable 인자로 바꿔 스택트레이스가
유실되지 않도록 한다.

대상: GlobalExceptionHandler, SlackNotifier, HashUtil, NoOpConvertService, BlankQuizOrchestrator, EssayQuizOrchestrator, OXQuizOrchestrator, EssayGradingServiceImpl, GeminiChatService, GeminiFileServiceImpl, StreamingQuestionExtractor, StreamingEssayQuestionExtractor, PdfUtils, EssayGradeService, SseNotificationServiceImpl, FileUploadService,
StaleGenerationRecoveryScheduler

  • ICC-316 ⏪️ revert: OXGuideLine을 develop 시점으로 되돌림

직전 프롬프트 구조 개선 커밋(ab0b0a0)에 포함된 OXGuideLine 변경을
원복한다. OX 가이드라인은 별도 검토 후 다시 반영한다.

📢 설명

변경 1: [제목]

[변경에 대한 설명]

의사 선택과정 (trade-off)

trade-off가 있는 경우에만 작성

얻은 것

잃은 것

코드 설명: 인라인 코멘트 확인

✅ 체크 리스트

재현 확인

  • (PR 작성 시 채워주세요)

기본

  • 의사 선택 과정이 적절한지 확인
  • 코드 리뷰

* [ICC-316] ♻️ refactor: 4종 퀴즈 프롬프트를 few-shot 중심 구조로 통일

규칙 나열 → few-shot 중심으로 전환하여 Gemini의 프롬프트 준수율을 개선한다.

- 공통 구조: Step 1(지식유형 판별) → Step 2(라우팅 테이블 + few-shot) → Step 3-4(Step 2 따르라)
- MULTIPLE: 규칙 22개 → 3개, few-shot 8→14개 (9도메인), 숏컷 방지 점수 1.80→2.65
- OX: few-shot 중심 재작성, 9쌍 (6도메인), Understand/Apply 수준 검증
- BLANK: few-shot 중심 재작성, 8개 (3도메인), Remember/Understand 수준
- ESSAY: few-shot 중심 재작성, 10개 (5도메인), Analyze/Evaluate 수준, 채점기준표 유지
- RequestPrompt: 사용자 지시 반영 시 Step 1-2 테이블 라우팅 참조로 통일

* [ICC-316] ✨ feat: BLANK 퀴즈 프롬프트 품질 개선 — 패턴 다양화 및 빈칸 위치 전략

- 패턴 C(특성형) 신규 추가, A~F 알파벳 순서 재조정
- few-shot 예시 빈칸 위치를 문장 중간으로 다양화 (B~F)
- 비교형(D) 경제학 도메인 예시 추가
- 배분 전략: A 편중 방지, 빈칸 문장 끝 편중 방지
- 오답 규칙 강화: 동일 범주 유사 개념 최소 2개

* [ICC-316] ♻️ refactor: OX 퀴즈 프롬���트 few-shot 품질 개선

- O 예시에 한계/비용/예��� 조건 추가하여 숏컷 방지 강화
- X 예시의 극단어("즉시", "모든") 제거 및 미묘한 변조로 교체
- 라벨 통일: "O정답/X정답" → "참(O) 진술문/거짓(X) 진술문"
- 패턴 A·C few-shot을 관계 추론형으로 교체 (Remember→Understand)
- 6라운드 evaluator 평�� 결과: R1 6.6 → R5 8.65/12 (역대 최고)

* [ICC-316] ♻️ refactor: OX 퀴즈 프롬프트 few-shot 전면 개편

- O/X 진술문 어조·길이 대칭화로 숏컷 방지 강화
- X 변조 고도화: 단순 역전 → 조건누락형·범위과잉형·핵심역전형 혼합
- O 진술문 간결화: 독립 판단 최대 2개로 제한하여 학습자 친화성 확보
- 주제 다양화: 경제학 편중(5/9) → 8종 분야 분산
  (생물학-자연선택, 물리학-엔트로피, 사회과학-생태학적 오류 추가)
- 완성본 예시 JSON을 열역학 문항으로 동기화

* [ICC-316] 🐛 fix: ESSAY 채점 프롬프트에 maxPoints 배점 고정 제약 추가

AI가 루브릭의 배점(maxPoints)을 임의로 재해석하여 동일 문제의 max_score가
재제출마다 달라지는 버그를 수정. 시스템 프롬프트에 루브릭 표의 [카테고리, N점]
값을 그대로 복사하라는 명시적 지시와 경고를 추가.

* [ICC-316] ♻️ refactor: MULTIPLE 프롬프트 전면 재설계 — 설명·예시·설명 삼중 구조 도입

- 모든 지시사항에 -> 예시: + -> 설명: 인라인 구조 추가
- 선택지를 자연스러운 구어체("~하는 대신, ~걸 감수한다")로 통일
- Checking 패턴 2-2 배치(같은 지목 대상 2개씩) 소거법 방지
- 오답 설명에 "극단적이지 않으면서 매력적인 구성 방법" 명시
- Step 3 해설을 Step 2 설명 직접 참조 구조로 변경
- 완성본 퓨샷을 새 해설 포맷(정답 설명/오답 설명)에 맞춤
- 중립성 검토: 수식어("일부"/"크게") 및 비중립 표현 제거

* [ICC-316] 🔧 chore: Resilience4j 슬로우 콜 임계값 설정 추가

Gemini 호출 서킷 브레이커에 slow-call-duration-threshold(60초)와
slow-call-rate-threshold(100%) 옵션을 추가하여 장시간 응답 케이스에 대한
서킷 동작을 제어할 수 있도록 한다.

* [ICC-316] ✨ feat: PDF 전용 Gemini 캐시 등록 메서드 추가

3-chunk 병렬 생성에서 각 청크가 서로 다른 시스템 프롬프트를 사용하면서
동일한 PDF를 공유할 수 있도록 createPdfOnlyCache(fileUri)를 추가한다.
시스템 프롬프트를 제외하고 PDF 콘텐츠만 캐시에 등록한다.

* [ICC-316] ✨ feat: TTLQ 메트릭 도입 및 MULTIPLE 청크 모드 설정 추가

마지막 문항 생성까지 걸린 시간(TTLQ)을 기록하여 Slack 성공/부분성공
알림에 노출한다. 기존 TTFQ와 함께 첫·마지막 문항 응답 시간 분포를
함께 관찰할 수 있게 한다.

또한 MULTIPLE 청크 모드(단일/멀티턴/병렬)를 설정으로 분기할 수 있도록
q-asker.ai.multiple.chunk-mode 옵션을 추가한다.

* [ICC-316] ♻️ refactor: 4종 퀴즈 프롬프트 구조 개선 — 패턴별 풀이 절차 명세화

BLANK·MULTIPLE·OX·ESSAY 프롬프트를 지식 유형(사실적/개념적/절차적/메타인지적)
단위로 재구성하고, 각 패턴별 단계별 풀이 절차와 자가점검 단계를 명시한다.

- MULTIPLE: 정답 풀이 R1~R4 단계화, 오답을 R1/R2/R3 이탈로 도출하는 구조 도입
- OX: 비교형/인과형/분류형/상황 전이형 패턴별 O/X 변별 메커니즘 설명 추가
- BLANK: 패턴별 단서 분산 전략과 오답 유형(유사개념형/혼동유발형) 가이드 강화
- OXRequestPrompt: 변조 유형 강제 제약을 제거하고 O/X 정답 준수만 명시

* [ICC-316] ♻️ refactor: 로그 메시지 [카테고리] key=value 포맷으로 통일

운영 알림·검색·메트릭 라벨링이 용이하도록 로그 메시지를
"[카테고리] 설명 key=value" 포맷으로 통일한다. 또한 예외를
문자열로 직렬화하던 케이스를 Throwable 인자로 바꿔 스택트레이스가
유실되지 않도록 한다.

대상: GlobalExceptionHandler, SlackNotifier, HashUtil,
NoOpConvertService, BlankQuizOrchestrator, EssayQuizOrchestrator,
OXQuizOrchestrator, EssayGradingServiceImpl, GeminiChatService,
GeminiFileServiceImpl, StreamingQuestionExtractor,
StreamingEssayQuestionExtractor, PdfUtils, EssayGradeService,
SseNotificationServiceImpl, FileUploadService,
StaleGenerationRecoveryScheduler

* [ICC-316] ⏪️ revert: OXGuideLine을 develop 시점으로 되돌림

직전 프롬프트 구조 개선 커밋(ab0b0a0)에 포함된 OXGuideLine 변경을
원복한다. OX 가이드라인은 별도 검토 후 다시 반영한다.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 28, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 67f76552-bd1e-4987-8d51-b60826506286

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@GulSauce GulSauce merged commit acfb10f into main Apr 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant