# 대시보드 자동 복구(Watchdog) + 안정성 개선

## 문제
1. 팀 작업 시 대시보드 서버가 죽으면 자동 복구 안 됨
2. 팀장 봇이 포트 8000을 kill하고 재시작하면서 대시보드가 일시 중단됨
3. PWA 사용자가 대시보드 접속 불가 상태를 경험

## 작업 내용

### 1. systemd 서비스 등록 (자동 복구)
- `/etc/systemd/system/dashboard.service` 또는 유저 레벨 `~/.config/systemd/user/dashboard.service` 생성
- 유저 레벨 권장 (sudo 불필요)
- WorkingDirectory: /home/jay/workspace
- ExecStart: /usr/bin/python3 /home/jay/workspace/dashboard/server.py
- EnvironmentFile: /home/jay/workspace/.env.keys
- Restart=always, RestartSec=3
- 서버가 죽으면 3초 후 자동 재시작
- `systemctl --user enable dashboard` (부팅 시 자동 시작)
- `loginctl enable-linger jay` (로그아웃 후에도 유지)

### 2. 기존 nohup 프로세스 대체
- 현재 `nohup python3 dashboard/server.py &`로 실행 중
- systemd로 전환하면 nohup 불필요
- 기존 프로세스 종료 후 systemd 서비스 시작

### 3. 대시보드 서버 포트 보호
- server.py 시작 시 포트 충돌 감지: 이미 대시보드가 돌고 있으면 재시작 안 함
- PID 파일 생성: `/tmp/dashboard.pid` — 다른 프로세스가 실수로 kill 방지

## 수정/생성 파일
- `~/.config/systemd/user/dashboard.service` — 신규 생성
- `/home/jay/workspace/dashboard/server.py` — PID 파일 로직 추가 (있다면)

## 주의
- server.py의 기존 기능(4탭, 논리적 팀, records API 등) 절대 변경 금지
- .env.keys 내용을 코드에 하드코딩 금지
- systemd 유저 레벨 사용 (sudo 필요한 시스템 레벨 금지)

## 테스트
- `systemctl --user start dashboard` → http://127.0.0.1:8000/dashboard/ 접속 확인
- `kill -9 $(lsof -ti:8000)` → 3초 후 자동 재시작 확인
- `systemctl --user status dashboard` → active (running) 확인
- 기존 API 엔드포인트 전부 200 응답

## QC
- pyright 에러 0건 (server.py 변경 시)