6.0 KiB
6.0 KiB
Phase 0 — Acceptance Gate 결과
본 문서는 통합설계서 §5 Phase 0의 Acceptance Gate를 객관적으로 점검한 결과다. Phase 1 진입 전에 모든 체크가 통과되어야 한다.
결과 요약
| # | Acceptance Gate 항목 | 상태 | 검증 방법 |
|---|---|---|---|
| 1 | 단일 PDF/JSON 입력 → ontology TTL + facts TTL이 filesystem에 생성됨 | ⚠️ e2e 검증 대기 (로컬 LLM/API 키 필요) | tests/e2e/test_phase0_full_pipeline.py |
| 2 | /health, /info, /process (FastAPI) 정상 동작 |
✅ 통합 테스트 11/11 통과 (2026-05-19) | tests/integration/test_api_smoke.py |
| 3 | BudgetTracker가 LLM call/triple count를 정확히 기록 | ⚠️ e2e 검증 대기 (mock 검증은 통합 테스트로 통과) | e2e 테스트가 실제 검증 |
| 4 | LangGraph 워크플로우 (CONVERT→CHUNK→...→SERIALIZE) 전 노드 traceable | ✅ OntoCast 원본 워크플로우 무수정 채택 | vendored/ontocast/ontocast/stategraph/ 그대로 사용 |
추가로 단위 테스트 16/16 통과 (test_convert_document 7, test_platform_config 5, test_select_ontology 4). 자동 검증 기준으로는 unit + integration 27/27 통과가 현재 Phase 0 기본선이다.
현재 진척 (2026-05-19):
- Python 3.14.5
.venv환경에서 unit + integration 27/27 통과 python-multipart를 Phase 0 FastAPI multipart upload 필수 의존성으로 추가- Phase 0 production app에서 Phase 1 Trafilatura route가 기본 mount되지 않도록 lazy phase route gate 적용
pip install -e ".[dev]"또는 동등한 의존성 설치 필요pip install -e vendored/ontocast로 OntoCast 의존성 설치 완료- 패키지 이름 충돌 수정:
platform/→ont_platform/(Python 내장platform모듈과 충돌) - 남은 작업: e2e 테스트 (Acceptance Gate #1, #3) 실행 — 로컬 Ollama 또는 OpenAI 키 필요
다음 작업자가 실행할 검증 절차
1) 환경 준비
# Python 3.12+ 설치 (예: https://www.python.org/downloads/)
python --version # Python 3.12.x 이상 확인
cd C:\Users\lasta\MyProject\AI\ontology_platform
# 가상환경 + 의존성 설치
python -m venv .venv
.venv\Scripts\activate
pip install --upgrade pip
pip install -e ".[dev]"
# .env 생성 (실제 LLM 키 채우기)
Copy-Item .env.example .env
# 그 다음 .env 파일을 편집하여 LLM_API_KEY 등 채움
2) 자동 검증 (Acceptance Gate #2)
# 단위 + 통합 테스트만 (LLM 호출 없음, 빠름)
.venv\Scripts\python.exe -m pytest tests/unit tests/integration -v
기대 결과: 모든 케이스 PASS.
tests/unit/test_select_ontology.py(4 케이스) — Phase 0.2 검증tests/unit/test_convert_document.py(7 케이스) — Phase 0.3 검증tests/unit/test_platform_config.py(5 케이스) — Phase 0.5 검증tests/integration/test_api_smoke.py(11 케이스) — Phase 0.4 + 0.6 mock 검증, Phase 0 future dependency route gate 검증
Windows에서 %TEMP% 권한 문제 또는 .pytest_cache 쓰기 문제가 발생하면 아래처럼 pytest temp/cache 위치를 workspace 내부로 고정한다.
$env:TMP=(Join-Path (Resolve-Path '.').Path 'pytest_tmp')
$env:TEMP=$env:TMP
New-Item -ItemType Directory -Force -Path $env:TMP | Out-Null
.venv\Scripts\python.exe -m pytest tests/unit tests/integration -v --basetemp "$env:TMP\basetemp" -o cache_dir="$env:TMP\cache"
3) End-to-end 검증 (Acceptance Gate #1, #3, #4)
LLM 호출이 실제로 일어남. OpenAI는 비용 발생, Ollama는 로컬에서 무료.
# (A) Ollama 로컬 사용 (권장 — 비용 무료)
# 사전: Ollama 설치 후 `ollama pull qwen2.5`
$env:LLM_PROVIDER = "ollama"
$env:LLM_MODEL_NAME = "qwen2.5"
$env:LLM_BASE_URL = "http://localhost:11434"
pytest tests/e2e -m e2e -v
# (B) OpenAI 사용
$env:LLM_PROVIDER = "openai"
$env:LLM_MODEL_NAME = "gpt-4o-mini"
$env:LLM_API_KEY = "sk-..."
pytest tests/e2e -m e2e -v
기대 결과:
test_full_pipeline_writes_ontology_and_factsPASS- 응답에서 ontology TTL과 facts TTL이 비어 있지 않음
metadata.budget.calls_count > 0metadata.budget.ontology_triples_generated > 0또는facts_triples_generated > 0tmp_path / "work"아래.ttl또는.rdf파일 생성됨
4) 수동 smoke (선택)
# 서버 기동
uvicorn ont_platform.api.main:app --reload
# 다른 셸에서
curl http://localhost:8000/health
curl http://localhost:8000/info
curl -X POST http://localhost:8000/process `
-H "Content-Type: application/json" `
-d '{"text":"Alice works at Acme in Berlin."}'
통과 시 처리
위 모든 검증을 통과하면 이 문서의 표 상태 컬럼을 ✅로 갱신하고 git에 commit한다.
이후 Phase 1 작업은 PHASE1_NEXT_STEPS.md를 따른다.
실패 시 처리
- 단위 테스트 실패: 어느 케이스가 실패했는지 확인. Phase 0.2/0.3/0.5의 vendored 수정 또는 platform/ 코드에 회귀가 발생했을 가능성. PR 단위로 롤백 후 재시도.
- 통합 테스트 실패: FastAPI 라우팅/의존성 주입 문제.
platform/api/main.py또는platform/api/deps.py확인. - E2E 테스트 실패:
LLM_API_KEY,LLM_PROVIDER,LLM_MODEL_NAME환경변수 확인- 워크플로우가 timeout:
ServerConfig.base_recursion_limit조정 검토 - OntoCast
select_ontology.py또는convert_document.py수정에 회귀가 있는지 점검 (VENDORED_MODIFICATIONS.md 참조)
검증 이력
| 일자 | 검증자 | 결과 |
|---|---|---|
| 2026-05-13 | (코드 작성: ontology-platform agent) | 코드 준비 완료. 실 환경 검증 보류. |
| 2026-05-14 | lasta + Claude | unit 16/16, integration 10/10 통과 (Gate #2 ✅). 패키지 이름 충돌 수정 (platform→ont_platform). e2e는 LLM 필요로 대기. |
| 2026-05-19 | Codex | unit 16/16, integration 11/11, 총 27/27 통과. Phase 0 route gate 추가로 Trafilatura route는 PHASE>=1에서만 lazy mount. e2e는 LLM 필요로 대기. |
| ____-- | ________________ | __________________________________ |