2.0 KiB
2.0 KiB
Phase 1 Acceptance Gate 결과
작성일: 2026-05-19
범위: Trafilatura 기반 URL/HTML 입력 정렬, SourceDocument/EvidenceSpan 계약, URL 입력 API, fixture 기반 dedup 검증.
결과 요약
| # | Acceptance Gate 항목 | 상태 | 검증 방법 |
|---|---|---|---|
| 1 | URL/HTML 입력이 정제 문서로 변환됨 | 통과 | tests/unit/test_web_extractor.py |
| 2 | source URL, title, language, content hash, fingerprint 보존 | 통과 | test_extract_from_korean_html_preserves_document_contract |
| 3 | SourceDocument, EvidenceSpan, Content metadata 경계 연결 |
통과 | test_extracted_content_maps_to_source_document_and_evidence_spans, test_content_unit.py |
| 4 | /process/url, /api/v1/extract/url URL 입력 API 제공 |
통과 | tests/integration/test_url_ingest.py |
| 5 | 같은 본문 중복 입력은 fingerprint 기반으로 skip | 통과 | test_same_clean_body_gets_same_hash_and_fingerprint, test_process_url_skips_duplicate_payload_by_fingerprint |
| 6 | Phase 0 회귀 없음 | 통과 | python -m pytest tests/unit tests/integration -q |
검증 이력
| 일자 | 검증자 | 결과 |
|---|---|---|
| 2026-05-19 | Codex | Phase 1 신규 테스트 7/7 통과. 전체 unit/integration 34/34 통과. |
구현 메모
ont_platform/core/extractors/web_extractor.py는 Trafilatura 2.xbare_extraction을 사용하되, local HTML fixture에서 Trafilatura fingerprint가 비어 있는 경우 normalized text 기반sha1:fingerprint를 생성한다.ont_platform/storage/models.py의 SQLAlchemy 예약어 충돌을 피하기 위해 DB 컬럼명은metadata로 유지하고 Python attribute는metadata_로 정리했다./process/url,/api/v1/process/url,/api/v1/extract/url은 같은 Phase 1 응답 계약을 사용한다.- OntoCast vendored core는 수정하지 않았다.
다음 Gate
Phase 2는 Candidate Storage 및 Review 책임 경계를 다룬다. 진행 전 PHASE_INDEX.md에서 Phase 2 항목만 명시적으로 선택해 작업한다.