Skip to content

05 Testing and Quality

hywznn edited this page Aug 16, 2026 · 1 revision

테스트와 품질 기준

기본 명령

uv run pytest
uv run ruff check app tests

변경 범위가 문서 엔진·스크립트·내장 프로젝트를 포함하면 해당 디렉터리의 별도 기준도 확인합니다.

테스트 프로필

전체 테스트 한 번의 성공/실패만으로 기능 상태를 판단하지 않습니다.

프로필 대상 외부 조건
Core Agent·API·문서 기본 계약 외부 Provider 없음
Qdrant Retrieval·Runtime composition language-retrieval, Qdrant
Windows OCR smoke PowerShell smoke script Windows/PowerShell
Model Provider BERT·A.X·LLM 실제 추론 HF Token, 모델 캐시, 장치
Staging E2E Server→AI→Provider→Server 저장 배포 환경과 Secret

프로필 분리와 PR required check는 AI #34에서 추적합니다.

최소 회귀 계약

Analyses

  • PLAN에서 대표 Intent·Workflow 확정
  • A.X confidence와 BERT routing score 분리
  • evidence가 원문 exact substring인지 확인
  • ANALYZE가 Intent 모델을 다시 호출하지 않음
  • ANALYZE providerAttemptCount=0
  • Candidate workflow가 planned workflow와 일치
  • OUT_OF_SCOPE에서 DB Context와 ANALYZE 생략

Renewal

  • ask_hr, ask_worker, generate, out_of_scope 분기
  • 동일 taskId 재개 시 승인된 Slot·OCR 결과 병합
  • Worker 안내 생성 실패 시 발송 문자열 없음
  • 내부 Slot key가 Worker 문구에 노출되지 않음
  • 4개 문서 descriptor와 실제 생성 상태 검증

OCR

  • MIME·파일 크기·Template allowlist
  • request ID header/form 일치
  • 허용 필드만 반환
  • 신뢰도 미달은 REVIEW_REQUIRED
  • 원본 bytes·민감 필드 로그 미출력

Documents

  • Template ID allowlist
  • 입력값과 실제 문서 필드 매핑
  • 실패를 성공으로 표시하지 않음
  • 변환 전후 형식·구조 검증

PR 검증 기록

PR 본문에는 다음을 분리해 적습니다.

  • 관련 테스트와 통과 개수
  • 전체 테스트 결과
  • 환경 의존 skip/failure
  • Ruff 범위와 결과
  • 실 Provider smoke 수행 여부
  • 배포 smoke 수행 여부

테스트 통과실통신 통과를 같은 의미로 쓰지 않습니다.

개인정보 테스트 데이터

  • 실제 여권번호·외국인등록번호·전화번호를 fixture에 사용하지 않습니다.
  • synthetic fixture도 실제 인물처럼 오인되지 않도록 명확히 표시합니다.
  • 실패 로그 assertion은 민감 값의 미출력을 함께 검증합니다.