From 91d4442d305099145547e216686fd622ede26c40 Mon Sep 17 00:00:00 2001 From: caadiq Date: Tue, 10 Feb 2026 13:12:00 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20X=20=EB=B4=87=20extract=5Fyoutube=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EB=AC=B8=EC=84=9C=20=EB=B0=8F=20=EC=8A=A4?= =?UTF-8?q?=ED=82=A4=EB=A7=88=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bot_x.sql에 누락된 컬럼 추가 (text_filters, include_retweets, extract_youtube) - api.md에 X 봇 API 응답 스키마 및 필드 설명 추가 - architecture.md bot_x 테이블 설명 구체화 - development.md API 클라이언트 함수 목록 보완 Co-Authored-By: Claude Opus 4.6 --- backend/sql/bot_x.sql | 3 +++ docs/api.md | 32 +++++++++++++++++++++++++++++++- docs/architecture.md | 2 +- docs/development.md | 2 +- 4 files changed, 36 insertions(+), 3 deletions(-) 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, ...