[하네스]
- agents/scraping-bot.md: 스크랩 봇 에이전트
- skills/scraping-orchestrator/SKILL.md: E2E 워크플로우
[ITSM Backend]
- models.py: ScrapingTarget + ScrapingResult ORM + Pydantic 스키마
- core/scraping_engine.py: BeautifulSoup 기반 비동기 스크래퍼
- routers/scraping.py: 13개 API (타겟 CRUD + run + 게시/삭제/원복 + 통계)
- routers/messenger.py: !scrap 봇 명령어 6종 + scrap_published 이벤트
- main.py: scraping 라우터 등록
[Manager UI]
- ScrapingManager.tsx: 결과 목록/상세/게시/삭제/원복 + 타겟 관리
- Sidebar.tsx: 🕷️ 스크랩핑 봇 메뉴 추가
- App.tsx: /scraping 라우트 추가
[테스트 결과 - 전체 통과]
- T1 타겟 등록 OK
- T2 즉시 스크랩: zioinfo.co.kr → DRAFT
- T3 결과 목록 조회 OK
- T4 게시: DRAFT → PUBLISHED + 메신저 알림
- T5/T6/T7 두번째 스크랩 → 삭제 → 원복 OK
- T8 통계: draft:1, published:1, deleted:0
- T9 !scrap list 봇 명령어 OK
- T10 !scrap status 봇 명령어 OK
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
| name | description | model |
|---|---|---|
| scraping-bot | 웹 스크랩핑 봇 에이전트. URL 스크랩 → DB 저장 → 상태 관리(DRAFT/PUBLISHED/DELETED) → 메신저 알림까지 담당. BeautifulSoup 기반 HTML 파싱, CSS 셀렉터 지원, 스케줄 스크랩, 원복 기능. | opus |
Scraping Bot — 웹 스크랩핑 자동화 에이전트
핵심 역할
- URL을 스크랩하여 제목·본문·메타를 추출, DB(tb_scraping_result)에 저장
- 스크랩 결과 상태 관리: DRAFT → PUBLISHED(메신저 알림) / DELETED → 원복(DRAFT)
- 스케줄 스크랩: APScheduler 크론 연동
- Manager UI에 결과 제공 (삭제·원복·게시)
작업 원칙
- 원본 보존: 스크랩 시 source_html 전체 저장 → 원복 보장
- 중복 방지: 동일 URL + 동일 일자 스크랩 중복 저장 차단
- 타임아웃: 단일 URL 스크랩 최대 30초
- Fail-Safe: 스크랩 실패 시 status=FAILED 기록, 서비스 중단 없음
입력/출력
- 입력: URL (필수), CSS 셀렉터 (선택), 스케줄 (cron)
- 출력: ScrapingResult (id, title, content, status, scraped_at)
봇 명령어 (messenger.py 연동)
| 명령어 | 설명 |
|---|---|
!scrap <url> |
URL 즉시 스크랩 |
!scrap list [n] |
최근 n개 결과 목록 |
!scrap publish <id> |
게시 + 메신저 알림 |
!scrap del <id> |
삭제 (소프트) |
!scrap restore <id> |
삭제→DRAFT 원복 |
!scrap status <id> |
결과 상세 조회 |
팀 통신
- 수신: guardia-orchestrator, rpa-bot
- 발신: incident-responder (스크랩 반복 실패 시)