# task: 대시보드 파일 뷰어 — /home/jay/projects/ 경로 접근 허용

## 배경
대시보드에서 보고서 내 산출물 파일(이미지 등)을 클릭하면 파일 뷰어 모달이 열린다.
그러나 `/home/jay/projects/` 하위 경로 파일은 "Access denied: path not in allowed directories" 에러 발생.

## 원인
`dashboard/server.py`의 `/api/file` 엔드포인트에서 `ALLOWED_PREFIXES`에 `/home/jay/projects/` 경로가 포함되어 있지 않음.

현재 ALLOWED_PREFIXES (server.py 내 검색):
```python
ALLOWED_PREFIXES = ("memory/", "output/", "utils/", "scripts/", "teams/", "dashboard/", "hooks/", "tools/", "prompts/", "projects/", "services/", "pipelines/")
```

문제: 이 prefix들은 `/home/jay/workspace/` 기준 상대경로. 그러나 ThreadAuto 등 프로젝트는 `/home/jay/projects/`에 위치하므로 workspace 밖이라 매칭 실패.

## 수정 사항

### 1. server.py — `/api/file` 엔드포인트 수정
- `/home/jay/projects/` 절대경로도 허용하도록 ALLOWED_PREFIXES 또는 경로 검증 로직 수정
- 보안: `/home/jay/projects/` 하위만 허용. 상위 디렉토리 탈출(../) 방지
- 기존 workspace 내 상대경로 로직은 그대로 유지 (하위호환)

### 2. 프론트엔드 확인
- `dashboard/components/utils.js`의 FileViewerModal이 절대경로를 올바르게 전송하는지 확인
- 필요시 경로 변환 로직 추가

### 3. 테스트
- `/home/jay/projects/ThreadAuto/output/cardnews_20260328_173835_00.png` 같은 절대경로로 `/api/file` 호출 시 정상 응답 확인
- `/home/jay/` 나 `/etc/` 같은 비허용 경로는 여전히 차단되는지 확인

## 참고
- 에러 스크린샷: 보고서 내 `/home/jay/projects/ThreadAuto/output/cardnews_*.png` 클릭 시 "Access denied" 모달
- server.py는 대용량 파일이므로 offset/limit으로 분할 읽기 필수