# 보고서 발견 이슈 일괄 수정 (Batch 2)

## 배경
task-552.1, 553.1, 554.1 보고서에서 발견된 미해결 이슈들을 정리한다.

## 작업 A: pyright utils.logger import 경로 수정
- **파일**: `/home/jay/workspace/memory/task-timer.py`
- **문제**: `from utils.logger import get_logger`가 pyright에서 경로 인식 불가. 런타임에는 `sys.path.insert`로 해결되나 pyright는 못 잡음.
- **해결 방안**:
  - 방법 1: 상대 import로 변경
  - 방법 2: pyrightconfig.json에 extraPaths 추가
  - 방법 3: try/except로 import 후 fallback logger
  - 팀이 가장 깔끔한 방법 선택

## 작업 B: cross-functional-status.json 초기 생성
- **문제**: `cross-functional-status.json` 파일이 없으면 대시보드에서 횡단조직 소환 상태가 비어 보임
- **해결**: 파일이 없을 때 4개 agent 전체를 idle 상태로 초기화하는 로직 추가
  - task-timer.py의 `_load_cross_status()`에서 파일 없으면 기본값 생성
  - 또는 대시보드 server.py에서 파일 없을 때 기본값 반환
  - 지금 바로 초기 파일 생성도 가능

## 작업 C: GPU SSE 주기 통일
- **파일**: `/home/jay/workspace/dashboard/server.py`
- **문제**: HTTP SSE는 0.5초마다 server-stats 전송, FastAPI SSE는 10초(20사이클)마다 전송. GPU 데이터도 동일 주기를 따르므로 FastAPI 모드에서 GPU 업데이트가 덜 빈번.
- **해결**: FastAPI SSE의 server-stats 전송 주기를 HTTP SSE와 동일하게 맞추거나, 합리적인 중간값(예: 2~3초)으로 통일

## 작업 D: viewport-fit=cover PWA 최적화
- **파일**: `/home/jay/workspace/dashboard/index.html`
- **문제**: `<meta name="viewport">` 태그에 `viewport-fit=cover` 속성 누락. PWA로 사용 시 노치/안전 영역 처리 미흡.
- **해결**: viewport meta 태그에 `viewport-fit=cover` 추가
  ```html
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
  ```

## 작업 E: systemd description 파싱 안전성 강화
- **파일**: `/home/jay/workspace/dashboard/server.py`
- **문제**: `_get_system_schedules()`의 systemd description 파싱에서 `line.find(parts[3])` 방식 사용. "running" 키워드가 description에 포함되면 오파싱 가능.
- **해결**: `split()` 후 인덱싱 대신, 정규식 또는 `systemctl show` 명령어로 정확한 필드 파싱
  ```bash
  # 대안: --output=json 사용 (systemd 버전 지원 시)
  systemctl --user list-units --type=service --state=running --output=json
  # 또는 고정 필드 위치 파싱
  ```

## 완료 기준
- [ ] pyright task-timer.py 에러 0건
- [ ] cross-functional-status.json 초기 상태 자동 생성
- [ ] GPU SSE 주기 통일 (HTTP/FastAPI 동일)
- [ ] viewport-fit=cover 추가
- [ ] systemd description 파싱 안전성 확보
