# task-1041.1 완료 보고서: 대시보드 논리적 팀 활동 추적 버그 수정

## SCQA

**S**: 대시보드가 8개 물리 팀과 4개 논리적 팀(마케팅/컨설팅/출판/디자인)의 상태를 실시간으로 표시하고 있다. task-timers.json에 running 작업이 정확히 기록되고 있다.

**C**: 논리적 팀에 running 작업이 있어도 대시보드에 "대기중"으로 표시된다. task-timers.json의 `team_id`는 "marketing" 형식이고 org-structure.json의 `team_id`는 "marketing-team" 형식으로, 접미사 불일치가 4곳에서 발생하고 있었다.

**Q**: 접미사 불일치를 해소하여 논리적 팀의 running 작업을 정확히 반영할 수 있는가?

**A**: 서버/프론트엔드 양쪽에 fallback 조회를 적용하여 수정 완료. pytest 66건 통과(기존 62건 + 신규 4건), pyright 에러 0건, black/isort 준수.

## 수정 내용

### 서버 (`server.py`)
- `get_teams_info()` (line 607-618): 논리적 팀의 `running_tasks` 조회 시 base_id("marketing") fallback 추가
- 센터 처리 (line 677-689): 동일 패턴 적용 (향후 센터 작업 대비)
- 기존 `get_member_status()` (line 575)의 base_id 패턴과 일관성 유지

### 프론트엔드 (`App.js`)
- line 547-553: `runningCount` 계산에 접미사 불일치 보정 (`baseId = team.team_id.replace('-team', '')`)
- `runningTasks` prop을 `LogicalTeamCard`에 전달

### 프론트엔드 (`utils.js`)
- `LogicalTeamCard` props에 `runningTasks` 추가
- 팀장 상태: memberStatus 우선 조회 → runningCount 기반 fallback (line 281-282)
- running task 정보 표시 UI 추가 (TeamCard 패턴 일관성) (line 298-314)

## 완료 조건 검증

1. 논리적 팀에 running 작업 → "진행 N건" 표시: **충족** (App.js + utils.js 수정)
2. 팀장 상태 "작업중": **충족** (utils.js leadStatus 로직)
3. task-id, 작업 설명 표시: **충족** (utils.js runningTasks 표시 블록)
4. running 작업 없을 때 "대기중": **충족** (기존 로직 유지, 테스트로 검증)
5. 물리 팀 영향 없음: **충족** (테스트 `test_physical_team_unaffected` PASS)

## 생성/수정 파일 목록

- `/home/jay/workspace/dashboard/server.py` (수정) — running_tasks fallback 조회
- `/home/jay/workspace/dashboard/components/App.js` (수정) — runningCount 보정 + runningTasks prop
- `/home/jay/workspace/dashboard/components/utils.js` (수정) — LogicalTeamCard 리드 상태/작업 정보 표시
- `/home/jay/workspace/dashboard/test_server.py` (수정) — 테스트 4건 추가

## 테스트 결과

- pytest: 66 passed, 1 failed (기존 버그 `test_timezone_aware_since_not_stuck_working` — Z-suffix 타임존 처리, 본 작업 범위 외)
- pyright: 0 errors, 0 warnings, 0 informations
- black + isort: 준수

## 발견 이슈 및 해결

### 자체 해결 (4건)
1. **server.py running_tasks 접미사 불일치** — `_team_base_id` fallback 조회 추가 (`server.py:607-617`)
2. **server.py 센터 running_tasks 동일 이슈** — `_center_base_id` fallback 추가 (`server.py:677-688`)
3. **App.js runningCount 접미사 불일치** — `baseId = team.team_id.replace('-team', '')` 보정 (`App.js:548-549`)
4. **utils.js 리드 상태 raw orgData 사용** — memberStatus + runningCount 기반 판단으로 변경 (`utils.js:281-282`)

### 범위 외 미해결 (1건)
1. **test_timezone_aware_since_not_stuck_working 실패** — Z-suffix 타임존 파싱 기존 버그. 본 작업 범위 외 (별도 이슈로 관리 필요)

## QC 자동 검증 결과

```json
{
  "task_id": "task-1041.1",
  "verified_at": "2026-03-25T21:10:26",
  "overall": "PASS",
  "summary": "8 PASS, 4 SKIP",
  "checks": {
    "file_check": "PASS (4/4)",
    "data_integrity": "PASS",
    "test_runner": "PASS (6 passed in 0.28s)",
    "pyright_check": "PASS (0 errors)",
    "style_check": "PASS (black OK, isort OK)",
    "critical_gap": "PASS",
    "spec_compliance": "PASS",
    "duplicate_check": "PASS (max similarity 12.5%)"
  }
}
```
