Files
AI/PROCESS_OWNER_ONLY_2026-05-11.md
2026-05-11 22:55:01 +09:00

3.0 KiB

처리 주체 정리 문서

작성일: 2026-05-11 범위: "처리 주체"와 "연결 직후 처리 흐름"만 정리

1) 한 줄 요약

  • 이 시스템은 FastAPI 서버 내부에서 동기 처리되며, 주체는 API 라우트 -> SiteCrawler/Pipeline -> Extractor -> Repository(DB) 순서다.
  • LM Studio(Qwen)는 외부 AI 추론 주체이고, 크롤링 제어/저장은 백엔드가 담당한다.

2) 주체별 역할

A. 프론트(UI) 주체

  • 사용자 입력(config/source/url/provider/model/base_url) 수집
  • API 호출 시작(/extractors/models, /crawl, /crawl-site)
  • 파일: crawler_platform/app/web/static/app.js

B. API 라우트 주체(FastAPI)

  • 요청 검증 및 처리 경로 분기
  • /crawl-site에서 SiteCrawler 생성 및 실행
  • /crawl에서 CrawlPipeline 생성 및 실행
  • 파일: crawler_platform/app/api/routes.py

C. 크롤링 실행 주체

  • SiteCrawler: 사이트 단위(queue 기반), 링크 확장, 페이지 분류, 분석 여부 판단
  • CrawlPipeline: 단일 URL 단위 처리
  • 파일:
    • crawler_platform/app/core/crawler/site_crawler.py
    • crawler_platform/app/core/crawler/pipeline.py

D. 수집(Fetch) 주체

  • RequestsFetcher 또는 PlaywrightFetcher
  • robots.txt 검사: RobotsPolicy
  • 파일: crawler_platform/app/core/crawler/fetchers.py

E. 파싱 주체

  • HTML 정리/텍스트 추출: GenericProductParser -> clean_html
  • 파일:
    • crawler_platform/app/core/crawler/plugins.py
    • crawler_platform/app/core/crawler/html_cleaner.py

F. 추출(엔티티/클레임 생성) 주체

  • provider가 lm_studio/openai/ollamaLLMJsonExtractor
  • 아니면 domain 기반 rule-based extractor
  • 파일:
    • crawler_platform/app/core/extractor/factory.py
    • crawler_platform/app/core/extractor/ai_provider.py
    • crawler_platform/app/domains/perfume/extractor.py

G. 저장(DB) 주체

  • KnowledgeRepository가 pages/entities/claims/evidence/extraction_logs 저장
  • 중복은 upsert/hash로 병합됨
  • 파일: crawler_platform/app/core/database/repository.py

H. DB 세션/트랜잭션 주체

  • session_scope에서 commit/rollback 책임
  • 파일: crawler_platform/app/core/database/session.py

3) "처음 연결" 시 처리 주체

3-1. Analyzer 연결 테스트

  • UI -> /extractors/models
  • 백엔드 -> provider 모델 목록 조회 (/v1/models)
  • 이 단계 주체: API + 모델 목록 조회 함수
  • 이 단계에서 크롤링/추출/DB 저장은 수행되지 않음

관련 파일:

  • crawler_platform/app/web/static/app.js
  • crawler_platform/app/api/routes.py
  • crawler_platform/app/core/extractor/ai_provider.py

4) "실제 처리" 시작 시 주체 체인

  • UI /crawl-site 호출
  • API 라우트가 SiteCrawler 실행
  • Fetcher가 페이지 수집, Parser가 텍스트화
  • Extractor(LLM 또는 룰기반)가 엔티티/클레임 생성
  • Repository가 DB 저장

즉 최종 책임:

  • 제어 책임: FastAPI + SiteCrawler
  • AI 생성 책임: LM Studio(Qwen) 또는 OpenAI/Ollama
  • 저장 책임: KnowledgeRepository