docs(api): 축제 봇 통합(대학+일반) 반영, active_months 제거

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
caadiq 2026-06-12 14:04:42 +09:00
parent d1ee28e308
commit f0eae805e6

View file

@ -441,15 +441,16 @@ X 봇 삭제
## 관리자 - 축제 봇 (인증 필요)
대학 축제 크롤러 봇. 검색 페이지(memogipost 등)를 크롤링하여 프로미스나인 출연 대학 축제
축제 크롤러 봇. 검색 페이지(memogipost 등)를 크롤링하여 프로미스나인 출연 행사
Gemini `url_context`로 추출, 행사(EVENT) 일정을 자동 생성한다.
**한 번의 Gemini 호출로 대학 축제와 일반 행사(콘서트·페스티벌·지역 축제 등)를 함께 추출**하며
`type` 필드(`university`/`general`)로 구분한다.
- 이미 처리한 게시글 URL은 `festival_crawl_log`에 기록되어 재요청하지 않음
- 새 게시글이 없으면 Gemini를 호출하지 않음 (무료 티어 RPD 20 제한 대응)
- 장소는 카카오맵 검색으로 자동 매칭, 멤버는 활동 멤버 전체로 등록
- 같은 학교(캠퍼스명 부분일치) + 날짜 일정이 있으면 중복으로 건너뜀
- `active_months`로 실행 월을 제한 가능 (대학 축제는 학기 중 한정 시즌). 비활성 월에는
크롤링/Gemini 호출을 아예 건너뜀. `null` 또는 12개월 전체 = 항상 실행
- 장소는 카카오맵 검색으로 자동 매칭(대학 축제=학교명, 일반 행사=장소명), 멤버는 활동 멤버 전체로 등록
- 중복 체크: 대학 축제는 같은 학교(캠퍼스명 부분일치)+날짜, 일반 행사는 같은 행사명(공백 무시 포함관계)+날짜
- 일정 subtype: 대학 축제 `university`(학교명 포함), 일반 행사 `general`
### GET /admin/festival-bots
축제 봇 목록 조회
@ -463,26 +464,22 @@ Gemini `url_context`로 추출, 행사(EVENT) 일정을 자동 생성한다.
```json
{
"id": 1,
"name": "대학 축제 봇",
"name": "축제 봇",
"search_url": "https://memogipost.tistory.com/search/프로미스나인",
"cron_interval": 360,
"active_months": [4, 5, 8, 9],
"enabled": true
}
```
`active_months`는 정수 배열(`null`이면 전체 월). 위 예시는 4·5·8·9월에만 실행.
### POST /admin/festival-bots
축제 봇 추가
**Request Body:**
```json
{
"name": "대학 축제 봇",
"name": "축제 봇",
"search_url": "https://memogipost.tistory.com/search/프로미스나인",
"cron_interval": 360,
"active_months": [4, 5, 8, 9]
"cron_interval": 360
}
```
@ -491,7 +488,6 @@ Gemini `url_context`로 추출, 행사(EVENT) 일정을 자동 생성한다.
| `name` | string | (필수) | 봇 이름 |
| `search_url` | string | (필수) | 크롤링할 검색 페이지 URL |
| `cron_interval` | integer | 360 | 동기화 간격 (분). 60 이상은 시간 단위 cron으로 변환 |
| `active_months` | integer[] \| null | null | 실행할 월(1~12). `null`/빈 배열/12개 전체는 항상 실행 |
### PUT /admin/festival-bots/:id
축제 봇 수정 (부분 업데이트 가능)