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