diff --git a/backend/sql/bot_x.sql b/backend/sql/bot_x.sql index dc1266c..12e437b 100644 --- a/backend/sql/bot_x.sql +++ b/backend/sql/bot_x.sql @@ -4,6 +4,9 @@ CREATE TABLE IF NOT EXISTS bot_x ( username VARCHAR(50) NOT NULL, display_name VARCHAR(100), avatar_url VARCHAR(500), + text_filters LONGTEXT, + include_retweets TINYINT(1) DEFAULT 0, + extract_youtube TINYINT(1) NOT NULL DEFAULT 0, cron_interval INT DEFAULT 1, enabled TINYINT(1) DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, diff --git a/docs/api.md b/docs/api.md index c4673d9..6a0f75d 100644 --- a/docs/api.md +++ b/docs/api.md @@ -372,9 +372,26 @@ X username으로 프로필 정보 조회 (Nitter 사용) ### GET /admin/x-bots X 봇 목록 조회 +**응답:** `XBot[]` + ### GET /admin/x-bots/:id X 봇 상세 조회 +**응답:** +```json +{ + "id": 1, + "username": "realfromis_9", + "display_name": "프로미스나인 (fromis_9)", + "avatar_url": "https://...", + "text_filters": ["fromis", "프로미스"], + "include_retweets": false, + "extract_youtube": true, + "cron_interval": 1, + "enabled": true +} +``` + ### POST /admin/x-bots X 봇 추가 @@ -384,12 +401,25 @@ X 봇 추가 "username": "realfromis_9", "display_name": "프로미스나인 (fromis_9)", "avatar_url": "https://...", + "text_filters": ["fromis"], + "include_retweets": false, + "extract_youtube": false, "cron_interval": 1 } ``` +| 필드 | 타입 | 기본값 | 설명 | +|------|------|--------|------| +| `username` | string | (필수) | X username (@ 없이) | +| `display_name` | string\|null | null | 표시 이름 | +| `avatar_url` | string\|null | null | 프로필 이미지 URL | +| `text_filters` | string[]\|null | null | 텍스트 필터 (하나라도 포함 시 추가, 비어있으면 모든 트윗) | +| `include_retweets` | boolean | false | 리트윗 포함 여부 | +| `extract_youtube` | boolean | false | 트윗 내 YouTube 링크 자동 추출하여 유튜브 일정 추가 | +| `cron_interval` | integer | 1 | 동기화 간격 (분) | + ### PUT /admin/x-bots/:id -X 봇 수정 +X 봇 수정 (부분 업데이트 가능) ### DELETE /admin/x-bots/:id X 봇 삭제 diff --git a/docs/architecture.md b/docs/architecture.md index a6e3e3e..81e4b00 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -318,7 +318,7 @@ fromis_9/ #### 봇 - `bot_youtube` - YouTube 봇 설정 (채널 정보, 동기화 간격, 필터 등) -- `bot_x` - X 봇 설정 (username, 프로필, 동기화 간격, 필터 등) +- `bot_x` - X 봇 설정 (username, 프로필, 동기화 간격, 텍스트 필터, 리트윗 포함, YouTube 추출) #### 이미지 - `images` - 이미지 메타데이터 (3개 해상도 URL) diff --git a/docs/development.md b/docs/development.md index 2b97ebc..c3be8bd 100644 --- a/docs/development.md +++ b/docs/development.md @@ -179,7 +179,7 @@ src/api/ └── admin/ # 관리자 API (인증 필요) ├── auth.js # login, verifyToken ├── albums.js # createAlbum, updateAlbum, deleteAlbum, ... - ├── bots.js # getBots, startBot, stopBot, syncBot + ├── bots.js # getBots, startBot, stopBot, syncBot, getXBot, createXBot, updateXBot, deleteXBot, lookupXProfile ├── categories.js # getCategories, createCategory, updateCategory, ... ├── members.js # updateMember ├── schedules.js # getYoutubeInfo, saveYoutube, getXInfo, saveX, ...