| name |
description |
| scraping-orchestrator |
GUARDiA ITSM 웹 스크랩핑 봇 오케스트레이터. URL 스크랩, DB 저장, 상태관리(DRAFT/PUBLISHED/DELETED), 메신저 알림, Manager UI 연동을 조율한다. 다음 상황에서 반드시 사용: (1) '스크랩', '웹 수집', 'URL 수집', '스크랩핑 봇' 요청; (2) '게시', '원복', '스크랩 삭제' 요청; (3) '!scrap' 봇 명령어 처리; (4) 스크랩 결과 조회, 타겟 등록; (5) 다시 실행, 업데이트, 수정, 보완 요청. |
GUARDiA 스크랩핑 오케스트레이터
에이전트 팀
| 에이전트 |
역할 |
| scraping-bot |
URL 스크랩 실행, 상태 전환, 메신저 알림 |
상태 흐름
URL 등록(ScrapingTarget)
→ 즉시 또는 스케줄 스크랩
→ DRAFT (저장됨)
→ PUBLISHED (게시 + 메신저 알림)
→ DELETED (소프트 삭제)
→ DRAFT (원복)
Phase 0: 요청 분류
- 타겟 등록 →
POST /api/scraping/targets
- 즉시 스크랩 →
POST /api/scraping/run
- 결과 조회 →
GET /api/scraping/results
- 게시 →
POST /api/scraping/results/{id}/publish
- 삭제 →
DELETE /api/scraping/results/{id}
- 원복 →
POST /api/scraping/results/{id}/restore
Phase 1: 스크랩 실행
POST /api/scraping/run
{ "url": "...", "selector": ".content", "target_id": null }
응답: { id, title, content, status: "DRAFT", scraped_at }
Phase 2: 게시
POST /api/scraping/results/{id}/publish
{ "room": "ops", "message": "커스텀 메시지 (선택)" }
→ status: PUBLISHED
→ POST /api/messenger/webhook (scrap_published 이벤트)
Phase 3: 삭제/원복
DELETE /api/scraping/results/{id} → status: DELETED
POST /api/scraping/results/{id}/restore → status: DRAFT
봇 명령어 (messenger.py)
| 명령어 |
API 호출 |
!scrap <url> |
POST /api/scraping/run |
!scrap list [n] |
GET /api/scraping/results?size=n |
!scrap publish <id> |
POST /api/scraping/results/{id}/publish |
!scrap del <id> |
DELETE /api/scraping/results/{id} |
!scrap restore <id> |
POST /api/scraping/results/{id}/restore |
!scrap status <id> |
GET /api/scraping/results/{id} |
테스트 시나리오
정상: POST run → DRAFT → publish → PUBLISHED → messenger 수신
오류: 존재하지 않는 URL → status=FAILED, 서비스 무중단