# 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) 환경 준비 ```powershell # 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) ```powershell # 단위 + 통합 테스트만 (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 내부로 고정한다. ```powershell $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는 로컬에서 무료. ```powershell # (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_facts` PASS - 응답에서 ontology TTL과 facts TTL이 비어 있지 않음 - `metadata.budget.calls_count > 0` - `metadata.budget.ontology_triples_generated > 0` 또는 `facts_triples_generated > 0` - `tmp_path / "work"` 아래 `.ttl` 또는 `.rdf` 파일 생성됨 ### 4) 수동 smoke (선택) ```powershell # 서버 기동 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](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 필요로 대기. | | ____-__-__ | ________________ | __________________________________ |