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

82 lines
3.0 KiB
Markdown

# 처리 주체 정리 문서
작성일: 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/ollama``LLMJsonExtractor`
- 아니면 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