Files
blog-writer/dashboard
JOUNGWOOK KWON 3e2405dff9 feat: upstream v3.2.1 기반으로 업그레이드 + eli 블로그 커스터마이징
- upstream sinmb79/blog-writer v3.2.1 코드 베이스 적용
- config_resolver, CLI, writer_bot, shorts pipeline 등 신규 기능 포함
- load_dotenv Windows 경로 → Docker 호환 load_dotenv() 변경 (25개 파일)
- runtime_guard.py Docker 환경 bypass 추가
- config/blogs.json: eli-ai 블로그 정체성 (8개 카테고리)
- config/sources.json: 38개 RSS 소스 유지
- config/engine.json: writing provider → gemini (2.5-flash)
- config/safety_keywords.json: 모든 글 수동 승인 (score 101)
- bots/scheduler.py: 시스템 프롬프트 eli 블로그 기준으로 업데이트
- bots/publisher_bot.py: .env refresh token OAuth 폴백 로직 추가
- requirements.txt: google-generativeai, groq 활성화
- Dockerfile + docker-compose.yml: NAS Docker 배포 설정
- CLAUDE.md: 프로젝트 메타데이터

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 09:21:14 +09:00
..

The 4th Path — Control Panel

미디어 엔진 컨트롤 패널 (React + FastAPI)

구조

dashboard/
├── backend/
│   ├── server.py         # FastAPI 메인
│   ├── api_overview.py   # 개요 탭 API
│   ├── api_content.py    # 콘텐츠 탭 API
│   ├── api_analytics.py  # 분석 탭 API
│   ├── api_novels.py     # 소설 탭 API
│   ├── api_settings.py   # 설정 API
│   ├── api_connections.py# 연결 상태 API
│   ├── api_tools.py      # 도구 선택 API
│   ├── api_cost.py       # 비용 모니터 API
│   └── api_logs.py       # 로그 API
└── frontend/
    ├── src/
    │   ├── App.jsx
    │   ├── pages/
    │   │   ├── Overview.jsx
    │   │   ├── Content.jsx
    │   │   ├── Analytics.jsx
    │   │   ├── Novel.jsx
    │   │   ├── Settings.jsx
    │   │   ├── Logs.jsx
    │   │   └── settings/
    │   │       ├── Connections.jsx
    │   │       ├── ToolSelect.jsx
    │   │       ├── Distribution.jsx
    │   │       ├── Quality.jsx
    │   │       └── CostMonitor.jsx
    │   └── styles/
    │       └── theme.css
    ├── package.json
    ├── vite.config.js
    └── tailwind.config.js

설치 및 실행

필수 요건

  • Python 3.9+
  • Node.js 18+
  • npm 9+

백엔드 의존성 설치

cd D:/workspace/blog-writer
venv\Scripts\python.exe -m pip install -r requirements.txt

프론트엔드 의존성 설치

cd D:/workspace/blog-writer/dashboard/frontend
npm install

실행 방법

Windows (더블클릭)

  • 프로덕션: start.bat 더블클릭
  • 개발 모드: start_dev.bat 더블클릭

두 스크립트 모두 프로젝트 venv\Scripts\python.exe가 없으면 즉시 중단합니다.

Linux/Mac

# 프로덕션 (프론트 빌드 후 백엔드만)
bash dashboard/start.sh

# 개발 모드 (Vite 핫리로드 + 백엔드 reload)
bash dashboard/start.sh dev

수동 실행

# 터미널 1 — 백엔드
cd D:/workspace/blog-writer
venv\Scripts\python.exe blog_runtime.py server --reload

# 터미널 2 — 프론트엔드 (개발)
cd D:/workspace/blog-writer/dashboard/frontend
npm run dev

# 또는 프론트 빌드 (프로덕션)
npm run build

접속

모드 URL
프로덕션 http://localhost:8080
개발(프론트) http://localhost:5173
API 문서 http://localhost:8080/docs

탭 구성

기능
개요 KPI 카드 · 파이프라인 상태 · 코너별 비율 · 활동 로그
콘텐츠 칸반 보드 · 승인/거부
분석 방문자 추이 · 코너별 성과 · 인기글
소설 연재 관리 · 에피소드 생성
설정 AI 연결 · 도구 선택 · 배포채널 · 품질 · 비용
로그 시스템 로그 필터/검색

Tailscale 외부 접속

# 백엔드를 0.0.0.0으로 바인딩하면 Tailscale IP로 접속 가능
venv\Scripts\python.exe blog_runtime.py server
# 접속: http://<tailscale-ip>:8080