# task-1775.1 완료 보고서
> 작업: 대시보드 시스템뷰 — 와치독 로그 섹션 추가
> 팀: dev4-team (비슈누)
> 일시: 2026-04-13

## SCQA

**S**: 대시보드 시스템뷰 탭에 위스퍼 비서, CI/CD, Cron Jobs, Systemd Timers 등 시스템 모니터링 섹션이 존재하나, 세션 와치독 상태는 대시보드에서 확인할 수 없어 journalctl을 직접 실행해야 했다.

**C**: 와치독은 2분 주기로 stalled 태스크를 감지하고 재위임하는 핵심 인프라이나, 실시간 상태(timer 활성 여부, STALLED 감지 건수, 재위임 이력)를 대시보드에서 확인할 수 없었다.

**Q**: 대시보드 시스템뷰에서 와치독 상태, 최근 로그, 오늘 이력 요약을 실시간 확인할 수 있는가?

**A**: `/api/system/watchdog` GET 엔드포인트 + SystemView.js 와치독 섹션을 구현하여, timer 상태(활성/비활성), 마지막/다음 실행 시각, 오늘 통계(실행 45회, STALLED 2건, 재위임 2건), 최근 50줄 로그를 접이식으로 확인 가능. curl 테스트로 JSON 응답 정상 확인 완료.

## 수정 파일

- `/home/jay/workspace/dashboard/server.py` — `/api/system/watchdog` GET 엔드포인트 추가 (line 2342-2427)
- `/home/jay/workspace/dashboard/components/SystemView.js` — watchdog state 2개 + useEffect fetch + 와치독 UI 섹션 추가

## 구현 내용

### 백엔드 (server.py)
- `systemctl --user show session-watchdog.timer`로 timer 상태 조회 (ActiveState, LastTriggerUSec)
- `systemctl --user status session-watchdog.timer`에서 Trigger 라인 파싱으로 next_run 획득 (모노토닉 타이머 대응)
- `/home/jay/workspace/logs/session-watchdog.log`에서 오늘 날짜 라인 필터링 + 패턴 카운트
- subprocess timeout=5초, FileNotFoundError 안전 처리

### 프론트엔드 (SystemView.js)
- 백그라운드 프로세스 섹션 아래에 접이식 와치독 섹션 배치
- 활성/비활성 뱃지, 마지막/다음 실행 시각, 오늘 통계, 접이식 로그 뷰어
- 페이지 로드 시 1회 fetch + 수동 새로고침 버튼

## 검증 결과

- `python3 -c "import ast; ast.parse(...)"` → OK
- `curl http://localhost:8000/api/system/watchdog` → JSON 정상 응답
  - timer_active=True, last_run=2026-04-13T10:35:14, next_run=2026-04-13T10:37:14
  - logs=50줄, today_stats: total_runs=45, stalled_detected=2, redelegated=2
- `systemctl --user restart dashboard` → 정상 재시작

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **next_run이 null 반환** — `NextElapseUSecRealtime` 속성이 모노토닉 타이머에서 비어있음. `systemctl status` 출력의 `Trigger:` 라인 파싱 fallback 추가로 해결.
   - 수정: server.py:2376-2384 — Trigger 라인 파싱 fallback 로직 추가

### 범위 외 미해결 (0건)
없음.

## 모델 사용 기록

- 팀원: 카르티케야(백엔드) / 작업: server.py API 엔드포인트 구현 / 모델: sonnet
- 팀원: 사라스바티(프론트엔드) / 작업: SystemView.js 와치독 UI 구현 / 모델: sonnet
- 팀장(비슈누): next_run null 이슈 직접 디버깅 및 수정 (Sonnet 3회 실패 아닌 통합 검증 중 발견)

## 세션 통계
- 총 도구 호출: 7회

### 수정 파일 목록
- /home/jay/workspace/dashboard/components/SystemView.js: 3회 (Edit)
- /home/jay/workspace/dashboard/server.py: 2회 (Edit)
- /home/jay/workspace/memory/reports/task-1775.1.md: 1회 (Write)
- /home/jay/workspace/memory/tasks/task-1775.1.md: 1회 (dispatch)

### 도구 사용 현황
- Edit: 5회
- Write: 1회
- dispatch: 1회

