# ThreadAuto Phase 5: 관리자 웹 대시보드

## 개요
ThreadAuto의 모든 기능을 브라우저에서 관리할 수 있는 웹 대시보드 구축.

## 프로젝트 경로
- **프로젝트**: `/home/jay/projects/ThreadAuto/`
- **Phase 4 보고서**: `/home/jay/workspace/memory/reports/task-229.1.md`
- **기존 main.py**: FastAPI 서버 (OAuth 콜백 + 이미지 서빙 + 헬스체크)

## Phase 5 목표
브라우저에서 ThreadAuto 전체 관리: 계정 연결, 게시물 발행/이력, 스케줄러 제어, 시스템 모니터링.

## 구현 범위

### 1. 프론트엔드 (Jinja2 템플릿 + TailwindCSS CDN)
FastAPI에 Jinja2 템플릿 렌더링. SPA 불필요, 서버 사이드 렌더링.

**페이지 구성:**
- `/web/` — 메인 대시보드 (시스템 상태 요약, 오늘 발행 현황, 토큰 상태)
- `/web/auth` — Threads 계정 연결 상태 + OAuth 연결/해제
- `/web/posts` — 발행 이력 목록 (날짜별, 성공/실패 필터)
- `/web/posts/new` — 수동 게시물 작성 + 미리보기 + 발행
- `/web/scheduler` — 스케줄러 상태 (다음 10건 예정 시각, 시작/중지)
- `/web/sources` — RSS 소스 관리 (추가/삭제/크롤링 현황)
- `/web/settings` — 설정 (발행 시간대, 카드뉴스 템플릿, Telegram 알림 on/off)

### 2. 백엔드 API 확장 (`web/` 라우터)
- `web/routes.py` — 페이지 라우트 (Jinja2 렌더링)
- `web/api.py` — AJAX API (/web/api/posts, /web/api/scheduler/toggle 등)

### 3. 템플릿 구조
```
/home/jay/projects/ThreadAuto/
├── web/
│   ├── __init__.py
│   ├── routes.py          — 페이지 라우트
│   ├── api.py             — AJAX API
│   └── templates/
│       ├── base.html      — 공통 레이아웃 (사이드바 + 헤더)
│       ├── dashboard.html — 메인 대시보드
│       ├── auth.html      — 계정 연결
│       ├── posts.html     — 발행 이력
│       ├── post_new.html  — 수동 발행
│       ├── scheduler.html — 스케줄러
│       ├── sources.html   — RSS 소스
│       └── settings.html  — 설정
├── web/static/
│   └── style.css          — 커스텀 스타일 (최소한)
```

### 4. 디자인 가이드
- TailwindCSS CDN 사용 (설치 불필요)
- 다크/라이트 모드 불필요, 라이트 모드만
- 브랜드 색상: Primary #003087, Accent #C9A84C
- 사이드바 네비게이션 (좌측 고정)
- 모바일 반응형 (sidebar → hamburger)
- 카드 기반 레이아웃

### 5. main.py 통합
- Jinja2Templates 설정
- StaticFiles 마운트 (/web/static)
- web.routes 라우터 include
- web.api 라우터 include

### 6. 인증
- 간단한 비밀번호 인증 (환경변수 THREADAUTO_PASSWORD)
- 쿠키 기반 세션 (httponly)
- 로그인 페이지 `/web/login`

### 7. 테스트
- 각 페이지 라우트 200 응답 테스트
- API 엔드포인트 테스트
- 인증 테스트 (미인증 → 로그인 리다이렉트)

## 주의사항
- 기존 Phase 1~4 코드 수정 최소화
- main.py에 라우터 include만 추가
- Firestore 미연결 환경에서도 로컬 데이터로 동작
- requirements.txt에 Jinja2 추가 (FastAPI에 기본 포함 가능)

## 완료 조건
1. `/web/` 메인 대시보드 정상 렌더링
2. 7개 페이지 모두 접근 가능
3. 스케줄러 시작/중지 동작
4. 수동 게시물 발행 동작
5. 비밀번호 인증 동작
6. 테스트 전체 PASS (기존 337개 + 신규)
