# task-551.1 완료 보고서: GPU 셋업 + InsuRo systemd 등록

## SCQA

**S**: 서버에 NVIDIA GTX 1060 6GB GPU가 장착되어 있으나 nouveau 오픈소스 드라이버만 로드된 상태이며, InsuRo Vite Preview 서버는 수동 실행으로 운영 중이다.

**C**: CUDA 작업을 위해 NVIDIA 공식 드라이버가 필요하고, InsuRo 서비스는 재부팅 시 수동 재시작이 필요하여 운영 안정성이 낮다. 또한 이 작업은 비대화형 환경에서 실행되어 sudo가 필요한 GPU 설치 명령을 자동 실행할 수 없었다.

**Q**: GPU 드라이버 설치 준비와 InsuRo 자동 시작을 모두 완료하여 재부팅 준비 상태를 만들 수 있는가?

**A**: InsuRo systemd service 등록은 100% 완료(enable 확인, Linger=yes). GPU 설치는 sudo 제약으로 설치 스크립트(setup-gpu.sh)와 검증 스크립트(verify-gpu.sh)를 생성하여 수동 실행 준비 완료. `sudo bash /home/jay/workspace/scripts/setup-gpu.sh` 1회 실행 후 재부팅하면 전체 셋업 완료.

---

## 작업 상세

### 작업 A: NVIDIA 드라이버 + CUDA 설치

| 항목 | 상태 | 비고 |
|------|------|------|
| nouveau 블랙리스트 | ⏳ 스크립트 준비 | sudo 필요 - setup-gpu.sh에 포함 |
| NVIDIA 드라이버 설치 | ⏳ 스크립트 준비 | ubuntu-drivers install 포함 |
| CUDA Toolkit 설치 | ⏳ 스크립트 준비 | nvidia-cuda-toolkit 패키지 |
| verify-gpu.sh | ✅ 완료 | 566 bytes, 실행 권한 부여 |
| setup-gpu.sh | ✅ 완료 | 통합 설치 스크립트 (추가 생성) |

**실행 방법**: `sudo bash /home/jay/workspace/scripts/setup-gpu.sh` → 재부팅 → `/home/jay/workspace/scripts/verify-gpu.sh`

### 작업 B: InsuRo systemd user service

| 항목 | 상태 | 증거 |
|------|------|------|
| 서비스 파일 생성 | ✅ 완료 | ~/.config/systemd/user/insuro-preview.service |
| daemon-reload | ✅ 완료 | 정상 실행 |
| enable | ✅ 완료 | `systemctl --user is-enabled` → "enabled" |
| loginctl enable-linger | ✅ 이미 설정됨 | `Linger=yes` 확인 |
| 서비스 상태 | inactive (dead) | 의도적 미시작 (수동 프로세스 포트 충돌 방지) |

---

## 생성/수정 파일 목록

- `/home/jay/workspace/scripts/verify-gpu.sh` (신규, 566 bytes) - GPU 설치 검증 스크립트
- `/home/jay/workspace/scripts/setup-gpu.sh` (신규, 764 bytes) - GPU 통합 설치 스크립트
- `~/.config/systemd/user/insuro-preview.service` (신규) - InsuRo 서비스 파일

---

## 셀프 QC

- [x] 1. 영향 분석: blacklist-nouveau.conf는 커널 모듈 로딩에 영향. insuro-preview.service는 독립 서비스로 기존 서비스에 영향 없음.
- [x] 2. 엣지 케이스: (a) 수동 vite 프로세스가 5173 포트를 점유 중이면 서비스 시작 실패 가능 → 재부팅 시 수동 프로세스 종료되므로 해소. (b) ubuntu-drivers가 미설치인 경우 → 표준 Ubuntu에 기본 포함.
- [x] 3. 작업 지시 일치: GPU 설치는 sudo 제약으로 스크립트 준비까지만 완료. InsuRo 서비스는 완전 완료.
- [x] 4. 에러 처리: setup-gpu.sh에 set -e 적용. verify-gpu.sh는 명령 부재 시 graceful 처리.
- [x] 5. 테스트: 인프라 작업으로 별도 테스트 불필요. systemctl is-enabled 확인으로 검증 완료.

## 발견 이슈 (3건)

1. **sudo 제약**: 비대화형 환경에서 sudo 패스워드 입력 불가 → GPU 설치 명령 미실행. setup-gpu.sh로 대체.
2. **포트 충돌 위험**: 재부팅 전 수동 vite 프로세스가 실행 중이면 서비스 시작 시 충돌 가능. 재부팅으로 해소됨.
3. **드라이버 버전 미확인**: ubuntu-drivers devices 실행 불가로 권장 드라이버 버전 미확인. setup-gpu.sh에서 ubuntu-drivers install이 자동 선택.

---

## 재부팅 체크리스트

1. `sudo bash /home/jay/workspace/scripts/setup-gpu.sh` 실행
2. 수동 vite preview 프로세스 종료 (있다면)
3. `sudo reboot`
4. 재부팅 후 확인:
   - `/home/jay/workspace/scripts/verify-gpu.sh` → GPU/CUDA 확인
   - `systemctl --user status insuro-preview.service` → InsuRo 서비스 확인
   - `curl http://127.0.0.1:5173` → Vite preview 응답 확인

---

## QC 자동 검증 결과

```json
{
  "task_id": "task-551.1",
  "verified_at": "2026-03-14T13:59:07",
  "overall": "PASS",
  "checks": {
    "file_check": "PASS (report 4213 bytes)",
    "data_integrity": "PASS",
    "tdd_check": "SKIP (Lv.1 인프라 작업 - bash 스크립트에 TDD 미적용)",
    "api_health": "SKIP",
    "test_runner": "SKIP",
    "pyright_check": "SKIP (Python 파일 없음)",
    "style_check": "SKIP",
    "scope_check": "SKIP"
  },
  "summary": "2 PASS, 7 SKIP"
}
```
