Skip to content

test: 핵심 E2E — 상충 리뷰어 → L2 토론 → L3 판결 #192

@justn-hyeok

Description

@justn-hyeok

Summary

시스템의 핵심 가치 제안(여러 LLM이 토론하고 판결)을 검증하는 E2E 테스트가 없음.

현재 상태

  • e2e-pipeline.test.ts — mock backend으로 전체 파이프라인, 4개 테스트
  • 모든 리뷰어가 동일 응답만 테스트됨 — 의견 충돌 시나리오 없음

필요한 E2E 시나리오

P0 — 핵심

  1. 상충하는 리뷰어 의견 → L2 토론 → L3 판결

    • 리뷰어 A: CRITICAL 이슈 발견, 리뷰어 B: 이슈 없음
    • → L2 토론 트리거 → 서포터 찬반 → L3 판결
    • 시스템의 존재 이유
  2. skipDiscussion=true

    • --no-discussion 플래그 → L2 스킵 → L1 결과로 직접 L3
    • orchestrator.ts:374 브랜치
  3. skipHead=true

    • lightweight 모드 → L3 스킵 → NEEDS_HUMAN 반환
    • orchestrator.ts:452 브랜치

P1 — 중요

  1. 캐시 히트 경로

    • 동일 diff 재실행 → 캐시된 결과 반환
    • orchestrator.ts:185-202 브랜치
  2. 서킷 브레이커 + 파이프라인 통합

    • 특정 프로바이더 연속 실패 → 서킷 open → 해당 리뷰어 forfeit → 나머지로 계속
  3. 중복 리뷰어 ID

    • 같은 ID의 리뷰어 2개 → mergeReviewOutputsByReviewer() 동작 검증

P1 — 엣지 케이스

  1. L2 moderator 자체 실패 — moderator throw 시 파이프라인 동작
  2. L3 verdict 생성 실패 — L1/L2 성공 후 L3 throw 시 동작
  3. 무한 길이 LLM 응답 — 1MB+ 응답 시 메모리/성능

구현 방향

mock backend을 사용하되, 리뷰어별로 다른 응답을 반환하도록 구성:

const mockBackend = (reviewerId: string) => {
  if (reviewerId === 'r1') return RESPONSE_WITH_CRITICAL_ISSUE;
  if (reviewerId === 'r2') return RESPONSE_NO_ISSUES;
  return RESPONSE_WITH_WARNING;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions