# task-410.1: 범용 프리뷰 시스템 구현

## 목표
텔레그램으로 지시 → 팀 작업 완료 → 브라우저에서 프리뷰 URL로 즉시 확인.
Lovable.dev와 유사한 개발 경험을 우리 인프라에서 제공.

## 핵심 요구사항

### 1. preview_manager.py (신규)
위치: `/home/jay/workspace/scripts/preview_manager.py`

기능:
- `start <project_name>` — 프로젝트 dev server 시작
- `stop <project_name>` — 프로젝트 dev server 중지
- `status` — 전체 활성 프리뷰 목록 (프로젝트명, 포트, PID, URL)
- `list` — 등록된 프로젝트 목록

### 2. 프로젝트 타입 자동 감지
프로젝트 디렉토리에서 자동 감지:
- `package.json` + next → `npm run dev` (Next.js)
- `package.json` + vite → `npm run dev` (Vite)
- `requirements.txt` 또는 `app.py`/`main.py` → `python3 app.py` (Flask/FastAPI)
- `manage.py` → `python3 manage.py runserver` (Django)
- 감지 실패 시 에러 메시지 + 수동 설정 안내

### 3. 포트 관리
- 설정 파일: `/home/jay/workspace/config/preview-ports.json`
- 기본 포트 맵:
  - insuwiki: 3001
  - InfoKeyword: 3002
  - ThreadAuto: 3003
  - 신규 프로젝트: 3004부터 자동 할당
- 포트 충돌 체크 (이미 사용 중인 포트 감지)

### 4. 프리뷰 URL 형식
- `http://100.76.130.39:<포트>/`
- Tailscale 내부망이므로 외부 노출 없음

### 5. 완료 통보 연동
- 팀 작업 완료 시 보고서에 프리뷰 URL 포함
- `completion-handler-instructions.md`에 프리뷰 안내 섹션 추가:
  - "프로젝트 작업이면 프리뷰 서버 시작하고 URL을 텔레그램으로 전달"

### 6. 대시보드 연동
- `/home/jay/workspace/dashboard/server.py`에 활성 프리뷰 API 추가
- `GET /api/previews` → 현재 실행 중인 프리뷰 목록 반환
- 대시보드 UI에 "활성 프리뷰" 섹션 추가 (링크 클릭 가능)

## 제외 범위
- 시스템 내부 코드(dispatch.py, task-timer.py 등) 작업에는 프리뷰 불필요
- HTTPS/인증 불필요 (Tailscale 내부망)

## 기술 제약
- 서버: Ubuntu Linux (Tailscale IP: 100.76.130.39)
- Python 3.x
- 기존 대시보드: Flask (port 8000)
- 프로젝트 경로: `/home/jay/projects/<프로젝트명>/`

## 테스트
- preview_manager.py 단위 테스트 (start/stop/status)
- 포트 충돌 감지 테스트
- 프로젝트 타입 자동 감지 테스트
- pyright 에러 0건
- black + isort OK

## 산출물
- `scripts/preview_manager.py`
- `config/preview-ports.json`
- 대시보드 수정 (server.py + index.html)
- 완료 보고서: `memory/reports/task-410.1.md`

## 작업 레벨: Lv.2
