o2o-plagiarism-ai/tests
hbyang 28c9ad1ee7 fix: 평가환경(python 3.9)에서 임포트 실패 해결
계획서 p.24 가 No.3/4/7 의 평가환경을 python 3.9 로 못박았는데, 실제로는
성능지표 평가 스크립트 3종이 전부 3.9 에서 임포트조차 되지 않았다.
python:3.9-slim 컨테이너에서 재현·수정·재검증했다.

원인: config.py 와 schemas.py 가 `from __future__ import annotations` 없이
`str | None` (PEP 604) 을 썼다. 3.10 부터의 문법이라 클래스 본문이 실행되는
순간 인터프리터가 평가하며 TypeError 로 죽는다. 이 두 파일을 타고 detector /
extractor / clustering / taxonomy / jobs.store / routes / main 이 연쇄로 깨졌다.

  No.7 eval_rouge.py       → summarizer → core.config
  No.3 eval_metadata_f1.py → extractor  → api.schemas
  No.4 evaluate_pairs.py   → detector   → api.schemas

개발환경이 3.14 라 로컬에서는 전혀 드러나지 않았다. 정답셋을 받아 측정하는
시점에 발견했다면 일정이 밀렸을 문제다.

수정은 두 가지가 모두 필요하다. future 임포트만 넣으면 pydantic 이 문자열
'str | None' 을 해석하지 못하고("Unable to evaluate type annotation"),
eval_type_backport 만 넣으면 인터프리터가 먼저 죽는다.

검증: 3.9 에서 eval_rouge.py / eval_metadata_f1.py 가 정상 실행되고 수치가
3.14 와 동일하다(ROUGE-1 recall 0.5778). evaluate_pairs.py 와 app.main 임포트도
통과. 3.14 회귀 없음.

재발 방지로 tests/test_py39_compat.py 를 추가했다. Pydantic 모델을 정의하는
모듈에 future 임포트가 있는지 AST 로 검사하므로 3.14 에서도 회귀를 잡는다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 14:02:29 +09:00
..
test_ai_detector.py AI 의심도 백분위 캘리브레이션 (학습·지표 없이 운영) 2026-08-11 09:05:48 +09:00
test_ai_training_split.py Claude 리뷰 기반 운영 안정성 보강 2026-08-10 16:42:17 +09:00
test_api.py feat: 저작권 탭 경량 응답 API 추가 2026-08-18 12:47:51 +09:00
test_auth_middleware.py Claude 리뷰 기반 운영 안정성 보강 2026-08-10 16:42:17 +09:00
test_case_coverage.py 2단계 고도화 선행 작업: 군집화·요약·평가환경·데이터 스펙 (데이터 수령 전) 2026-06-18 13:16:07 +09:00
test_clustering.py 2단계 고도화 선행 작업: 군집화·요약·평가환경·데이터 스펙 (데이터 수령 전) 2026-06-18 13:16:07 +09:00
test_coverage_and_features.py Claude 리뷰 기반 운영 안정성 보강 2026-08-10 16:42:17 +09:00
test_dual_similarity.py Initial commit: O2O 저작권 침해 여부 탐지 API 2026-05-13 11:20:17 +09:00
test_frontend_legal_risk.py fix: 사용자 판단 문구에서 모델명 제거 2026-08-18 11:44:56 +09:00
test_generate_ai_samples.py feat: AI 생성 표본 제작 스크립트 2026-08-19 13:54:21 +09:00
test_legal_risk.py fix: 판례 판단 시 사람 검토 안전장치 강제 2026-08-18 11:46:46 +09:00
test_metadata_eval.py 2단계 고도화 선행 작업: 군집화·요약·평가환경·데이터 스펙 (데이터 수령 전) 2026-06-18 13:16:07 +09:00
test_ocr_normalize.py feat: OCR·조판 아티팩트 정규화와 백분위 컷 캘리브레이션 2026-08-19 13:53:59 +09:00
test_pdf_compliance.py Initial commit: O2O 저작권 침해 여부 탐지 API 2026-05-13 11:20:17 +09:00
test_precedent_collector.py feat: 판례 GPT 판단과 연동 가이드 최신화 2026-08-18 11:10:02 +09:00
test_preference.py 2단계 고도화 선행 작업: 군집화·요약·평가환경·데이터 스펙 (데이터 수령 전) 2026-06-18 13:16:07 +09:00
test_provenance_index.py 3.5만 에피소드 기반 표절·AI·판례 분석 파이프라인 구현 2026-08-10 16:12:15 +09:00
test_py39_compat.py fix: 평가환경(python 3.9)에서 임포트 실패 해결 2026-08-19 14:02:29 +09:00
test_review_regressions.py Claude 리뷰 기반 운영 안정성 보강 2026-08-10 16:42:17 +09:00
test_rouge.py fix: 요약 ROUGE를 계획서 수식에 맞춤 (F1 → recall, 다중 참조) 2026-08-19 13:54:22 +09:00
test_source_extraction.py 3.5만 에피소드 기반 표절·AI·판례 분석 파이프라인 구현 2026-08-10 16:12:15 +09:00
test_static_ui.py feat: 프론트에 AI 생성 의심도 표시 2026-08-11 09:02:04 +09:00
test_structural.py Initial commit: O2O 저작권 침해 여부 탐지 API 2026-05-13 11:20:17 +09:00
test_summarizer.py 2단계 고도화 선행 작업: 군집화·요약·평가환경·데이터 스펙 (데이터 수령 전) 2026-06-18 13:16:07 +09:00