검색 페이지(memogipost)를 크롤링하여 프로미스나인 출연 대학 축제를 Gemini url_context로 추출, 행사 일정을 자동 생성하는 봇. 백엔드: - services/event.js: 이벤트 생성 로직 공유화 (upsertVenue, createEventSchedule, 카카오 검색) - services/festival/: scraper(검색 페이지 크롤) + gemini(추출) + index(봇 플러그인) - routes/admin/festival-bots.js: 축제 봇 CRUD API - scheduler.js: festival 타입 지원, 시간 단위 cron(0 */H * * *) 변환 - 처리한 글 URL은 festival_crawl_log에 기록, 새 글 없으면 Gemini 미호출 - 학교명 부분일치 중복 감지, 활동 멤버 전체 자동 등록 - Gemini 503/500/429 재시도 로직 기타 수정: - 행사 상세 페이지 관련 링크 줄바꿈 (truncate → break-all) - 대학 축제 아이콘 변경 (GraduationCap → PartyPopper) - docs/api.md, CLAUDE.md 환경변수 문서화 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
31 lines
729 B
Bash
31 lines
729 B
Bash
# Database
|
|
DB_HOST=mariadb
|
|
DB_PORT=3306
|
|
DB_USER=fromis9
|
|
DB_PASSWORD="Xk9#mP2\$vL7@nQ4w"
|
|
DB_NAME=fromis9
|
|
|
|
# Server
|
|
PORT=80
|
|
NODE_ENV=development
|
|
JWT_SECRET=fromis9-admin-jwt-secret-2026-xK9mP2vL7nQ4w
|
|
|
|
# RustFS (S3 Compatible)
|
|
RUSTFS_ENDPOINT=https://rustfs.caadiq.co.kr
|
|
RUSTFS_PUBLIC_URL=https://s3.caadiq.co.kr
|
|
RUSTFS_ACCESS_KEY=iOpbGJIn4VumvxXlSC6D
|
|
RUSTFS_SECRET_KEY=tDTwLkcHN5UVuWnea2s8OECrmiv013qoSQIpYbBd
|
|
RUSTFS_BUCKET=fromis-9
|
|
|
|
# Kakao API
|
|
KAKAO_REST_KEY=e7a5516bf6cb1b398857789ee2ea6eea
|
|
|
|
# Google API
|
|
GOOGLE_API_KEY=AIzaSyC6l3nFlcHgLc0d1Q9WPyYQjVKTv21ZqFs
|
|
|
|
# Gemini API (대학 축제 크롤러 봇용)
|
|
GEMINI_API_KEY=AIzaSyC7TZKmbklcdSsX1qcpt8sTE29LWv9i_co
|
|
|
|
# Meilisearch
|
|
MEILI_MASTER_KEY=xMLNzlGX4xYji494JOb5IMlLHULcYw91
|
|
|