# task-455.1: 시스템뷰 봇 상태 버그 2건 수정

## 레벨: Lv.1

## 파일
- `/home/jay/workspace/dashboard/index.html`

## 버그 1: 상태 텍스트 중복 ("작업중 작업중", "유휴 유휴")

### 원인
`StatusDot` 컴포넌트 (line 93~110)가 이미 텍스트 라벨을 포함:
```jsx
// line 107
<span className="text-xs text-slate-500">{c.label}</span>
```

그런데 SystemView의 봇 카드 (line 850~851)에서 StatusDot 호출 후 또 텍스트를 렌더링:
```jsx
<StatusDot status={isRunning ? 'working' : 'idle'} />
<span className="text-xs text-slate-500">{isRunning ? '작업중' : '유휴'}</span>
```

### 수정
line 851의 중복 span 제거:
```jsx
<StatusDot status={isRunning ? 'working' : 'idle'} />
// 아래 span 삭제
```

## 버그 2: 봇C(2팀) 작업중 오류 표시

### 원인
`/home/jay/workspace/memory/events/bot-activity.json`에서 dev2가:
```json
"dev2": { "status": "processing", "since": "2026-03-04T05:04:19Z" }
```
3/4 이후 stale 상태. 서버의 `get_system_status()` (server.py line 937~)에서 bot-activity의 "processing" 상태를 stale 체크 없이 그대로 사용.

### 수정 방법 (2가지 중 택1)
**방법 A (프론트엔드)**: SystemView에서 `has_running_tasks`만으로 판단 (bot-activity status 무시)
- 이미 서버 API가 `has_running_tasks` 필드를 내려주고 있음 (line 836에서 사용 중)
- `bot.status === 'running'` 조건 제거, `bot.has_running_tasks`만 사용

**방법 B (백엔드)**: server.py의 `get_system_status()`에서 bot-activity processing이 stale이면 무시
- since 타임스탬프가 STALE_TASK_RUNNING_SECONDS(2시간) 초과면 idle 처리

→ **방법 A 추천** (간단하고 확실). line 836 수정:
```jsx
// 현재
const isRunning = bot.status === 'running' || bot.has_running_tasks;
// 수정
const isRunning = bot.has_running_tasks;
```

## 검증
- 봇B: 1팀 작업 중이면 "작업중" 1회만 표시
- 봇C: 작업 없으면 "유휴" 1회만 표시
- 봇D: "유휴" 1회만 표시
- 텍스트 중복 없음 확인