# 대시보드 Cache-Control 헤더 + 와치독 섹션 렌더링 수정

## Lv.1 작업

## 문제 2가지

### 1. 브라우저 캐시로 JS 변경사항 반영 안 됨
대시보드 server.py가 .js/.css 파일 서빙 시 Cache-Control 헤더를 설정하지 않아, 브라우저가 이전 버전을 캐싱.
매번 Ctrl+Shift+R 강제 새로고침이 필요.

### 2. 시스템뷰 와치독 섹션 안 보임
SystemView.js에 와치독 코드(16줄, 501줄)가 있고, API(`/api/system/watchdog`)도 정상 반환하지만, UI에 섹션이 안 보임.

## 수정

### 1. Cache-Control 헤더 추가
`/home/jay/workspace/dashboard/server.py`

.js, .css 파일 서빙하는 부분에서 응답 헤더에 추가:
```python
self.send_header('Cache-Control', 'no-cache, must-revalidate')
```

server.py에서 static 파일을 서빙하는 위치를 찾아서 (`do_GET`에서 파일 경로 매칭 → `send_response(200)` → `send_header` 부분) 추가.

### 2. 와치독 섹션 렌더링 디버그
`/home/jay/workspace/dashboard/components/SystemView.js`

1. `curl -s http://localhost:8000/dashboard/components/SystemView.js | grep -c "watchdog"` → 18건으로 코드 존재 확인됨
2. 문제 후보:
   - fetch(`/api/system/watchdog`)가 실행되는 useEffect 조건 확인
   - watchdogData 상태가 null이면 렌더링 안 됨 → fetch 실패 원인 확인
   - 섹션이 다른 요소에 가려지거나 조건부 렌더링 누락
3. 브라우저 콘솔에서 `/api/system/watchdog` 호출 여부 확인 (Network 탭)
4. 필요 시 useEffect 내 fetch를 디버그 로그 추가하여 확인

## 검증 시나리오
1. 대시보드 재시작 → 브라우저 일반 새로고침(F5) → JS 변경사항 즉시 반영 확인
2. `curl -I http://localhost:8000/dashboard/components/SystemView.js` → `Cache-Control: no-cache` 헤더 확인
3. 시스템뷰 탭 → 와치독 섹션 존재 + timer 상태 표시 확인
4. 와치독 섹션 "최근 로그" 접이식 토글 동작 확인

## 수정 후
- 대시보드 재시작: `systemctl --user restart dashboard`

## 보고서
`/home/jay/workspace/memory/reports/task-{TASK_ID}.md`
