5.4 KiB
PHASE INDEX - Semantic Page Classification Layer
작성일: 2026-05-22
범위: ontology_platform의 crawler_platform.app.core.crawler.page_classifier 및 page classification과 직접 연결된 crawler/extractor 흐름.
기준 문서:
README.mddocs/PHASE_PLANNING.mdontology_platform/README.mdontology_platform/docs/semantic_page_classification_codex_spec.md
핵심 원칙:
- 기존 엔진을 폐기하거나 대규모로 교체하지 않는다.
- 기존
classify_page(...) -> str호출부가 깨지지 않도록 legacy compatibility를 유지한다. - 기존
ProductPage,CategoryPage,SearchPage,BoardPage,BrandStoryPage,UnknownPage문자열은 alias 또는 compatibility mapping으로 유지한다. - URL substring 중심 if-return 확장이 아니라 signal extraction -> evidence scoring -> classification result -> analyze strategy -> LLM policy 구조로 확장한다.
- protected page는 안전하게 skip하고, UnknownPage는 evidence와 confidence를 남긴다.
- pytest 또는 현재 프로젝트 테스트 명령으로 회귀 검증한다.
PHASE 1. 현재 흐름 기준선 고정 및 영향 범위 정리 FILE: ./26_05_22_semantic_page_classification/phase_01_001_current_flow_boundary.md
page_classifier.py의 현재 public API와 legacy page_type 문자열 목록 고정 [완료]should_analyze_page()호출부와 crawler의classify_page()호출 위치 문서화 [완료]- Extractor/HybridExtractor에서 page_type과 LLM skip 정책이 연결되는 흐름 정리 [완료]
- 기존 page_type 문자열을 기대하는 테스트, config, adapter, ontology rule 경로 목록화 [완료]
PHASE 2. Taxonomy와 Classification Result 모델 추가 FILE: ./26_05_22_semantic_page_classification/phase_02_001_taxonomy_result_model.md
- PageDomain/PageArchetype/PageType/EntityType/ActionIntent/GraphRole/AnalyzeStrategy/LLMPolicy 상수 또는 enum 추가 [완료]
EvidenceItem,PageClassificationResultdataclass 추가 [완료]- legacy alias 및 normalize helper 추가 [완료]
- 기존
classify_page()문자열 반환 호환을 유지하면서 semantic result API 추가 [완료]
PHASE 3. Raw Snapshot 및 Signal Extraction 레이어 추가 FILE: ./26_05_22_semantic_page_classification/phase_03_001_signal_extraction_layer.md
RawPageSnapshot와PageSignals모델 추가 [완료]- JSON-LD, OpenGraph, Twitter Card, meta, headings, links, forms, buttons, inputs 추출 [완료]
- commerce/listing/editorial/community/docs/corporate/protected/system signal 추출 [완료]
- HTML 일부가 깨지거나 필드가 누락되어도 예외 없이 빈 값으로 처리 [완료]
PHASE 4. Evidence Scoring 기반 Semantic Classification 구현 FILE: ./26_05_22_semantic_page_classification/phase_04_001_evidence_scoring_classifier.md
- 주요 page type별 scoring function과 evidence recording 구조 추가 [완료]
- 최소 20개 semantic page type 분류 구현 [완료]
- confidence, alternatives, secondary_page_types 산출 [완료]
- low confidence 또는 모호한 결과를 evidence 포함 UnknownPage로 처리 [완료]
PHASE 5. Analyze Strategy 및 LLM Policy 분리 FILE: ./26_05_22_semantic_page_classification/phase_05_001_analysis_llm_policy.md
- PageClassificationResult 기반
decide_analyze_strategy()추가 [완료] - PageClassificationResult 기반
decide_llm_policy()추가 [완료] should_analyze_page(result_or_page_type, analyze_page_types=None)compatibility 구현 [완료]- Category/Search/Board 계열을 무조건 skip하지 않고 strategy 기반으로 처리 [완료]
- Login/Checkout/Payment/Captcha/AccessDenied 계열은 SkipProtected/Skip 정책으로 처리 [완료]
PHASE 6. Crawler, Cleaner, Extractor, Discovery/Relevance 통합 FILE: ./26_05_22_semantic_page_classification/phase_06_001_pipeline_integration.md
site_crawler.py와pipeline.pymetadata에 semantic classification payload 저장 [완료]ExtractionPageContext또는 metadata를 통해 analyze_strategy/llm_policy 전달 [완료]HybridExtractor가 LLMPolicy를 우선 사용하고 legacy page_type fallback을 유지하도록 수정 [완료]page_cleaner.py,domain_discovery.py,relevance_engine.py의 legacy page_type 기대 경로와 신규 semantic type을 호환 [완료]
PHASE 7. Unknown Pattern 저장 기반 추가 FILE: ./26_05_22_semantic_page_classification/phase_07_001_unknown_pattern_storage.md
- UnknownPage 또는 low confidence 페이지의 evidence payload 정의 [완료]
- text/html/link/schema/button/form summary와 fingerprint hook 추가 [완료]
- DB schema 변경 없이 metadata_json에 저장 가능한 초기 구조 구현 [완료]
- 향후 clustering/embedding 확장을 위한 hook만 추가하고 실제 clustering은 이번 범위에서 제외 [완료]
PHASE 8. 테스트 Fixture 및 회귀 검증 FILE: ./26_05_22_semantic_page_classification/phase_08_001_tests_regression.md
- 최소 10개 이상의 HTML fixture 추가 [완료]
- ProductDetailPage, CategoryListingPage, SearchResultsPage, ArticlePage, QAPage, FAQPage, ForumThreadPage, DocumentationPage, JobPostingPage, LoginPage, CheckoutPage, TermsPage, SitemapPage, UnknownPage 단위 테스트 추가 [완료]
- legacy
classify_page()와should_analyze_page()호환성 테스트 추가 [완료] - HybridExtractor LLMPolicy 회귀 테스트 추가 [완료]
- pytest 또는 현재 프로젝트 테스트 명령 실행 및 결과 기록 [완료]