# task-1734.1 완료 보고서: 조직뷰 인원 카운팅 신호등 단일 소스 통합

## SCQA

**S**: 조직뷰 대시보드에서 81명의 팀원에 대해 개별 신호등(StatusDot)이 실시간으로 정확하게 표시되고 있다.

**C**: 상단의 "작업중 X명, 대기 X명, 유휴 X명" 카운팅이 신호등과 불일치한다. 원인: 신호등은 프론트엔드(`memberStatus` + `hasRunningTasks` 조합)로 결정하고, 카운팅은 서버(`get_team_stats()` → `get_member_status()`)에서 별도 계산한다. 서버 로직은 stale 체크, bot_activity, composite team 등 추가 로직을 포함하여 프론트엔드 렌더링과 다른 결과를 산출한다.

**Q**: 신호등과 카운팅을 단일 소스로 통합하여 불일치를 해소할 수 있는가?

**A**: App.js에서 카운팅을 서버 `/api/stats`가 아닌, 프론트엔드의 StatusDot 렌더링과 동일한 로직으로 직접 집계하도록 수정했다. 6개 조직 그룹(officeLead, subTeams 8개, logicalTeams, securityTeam, geniusTeam, activeCenters 6개)의 모든 멤버를 순회하며 각 렌더링 컴포넌트(MemberRow, LogicalTeamCard, CenterCard, 인라인)와 동일한 상태 결정 로직을 적용하여 카운팅한다. 총합 81명 검증 완료.

## 산출물

- `/home/jay/workspace/dashboard/components/App.js`

## 변경 내역

### App.js (lines 229-330)
- **변경 전**: `stats.total`, `stats.working`, `stats.waiting`, `stats.break` 사용 (서버 별도 계산)
- **변경 후**: IIFE `statusCounts` 블록으로 교체. 6개 조직 그룹을 순회하며 각 컴포넌트의 StatusDot 렌더링 로직과 동일한 상태 결정 규칙으로 직접 카운팅
- `completedTasks`는 task 통계이므로 `stats.completed_tasks` 유지 (변경 없음)

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **신호등-카운팅 불일치** — 카운팅 소스를 서버(get_team_stats)에서 프론트엔드 StatusDot 동일 로직으로 전환
   - 상세: App.js:229-330, 5줄 → IIFE 블록으로 교체

### 범위 외 미해결 (2건)
1. **App.js line 39 `intervalRef` 미사용 경고** — 기존 코드, 이번 변경과 무관
2. **App.js line 153 `e` 미사용 경고** — 기존 코드, 이번 변경과 무관

## 셀프 QC

- [x] 1. 영향 파일: App.js 1개만 수정. utils.js 등 다른 파일 변경 없음
- [x] 2. 엣지 케이스: orgData/memberStatus 빈 경우 → total=0 반환, securityTeam/geniusTeam null → 건너뜀
- [x] 3. 작업 지시 일치: 신호등과 카운팅 동일 단일 소스 사용 확인
- [x] 4. 에러 처리/보안: 새로운 에러 경로 없음
- [x] 5. 테스트: 조직 구조 총합 81명 검증 완료, `stats.working/waiting/break` 참조 0건 확인
- [x] 6. 발견 이슈: 1건 자체 해결, 2건 범위 외 명시
- [x] 7. 코드 아키텍처: 기존 컴포넌트 인라인 상태 결정 패턴과 동일한 구조 유지
- [x] 8. 인터페이스 변경: 없음 (totalCount, workingCount 등 변수명 동일)
- [x] 9. 이미지/배너: 해당 없음
- [x] 10. CLAUDE.md: 해당 없음

## 모델 사용 기록

- 팀원: 프레이야 / 작업 내용: App.js 카운팅 로직 교체 / 사용 모델: sonnet / 정당성: -

## QC 자동 검증 결과

- **overall**: PASS (5 PASS, 8 SKIP)
- **tdd_check**: SKIP — App.js(React 프론트엔드)에 대응하는 JS 테스트 프레임워크 없음. 프로젝트의 테스트 인프라는 Python pytest 기반이며, JS 컴포넌트 테스트 미지원.
- **기존 테스트 실패**: `test_composite_status.py` 4건 FAIL — 기존 fixture 데이터 이슈, 이번 변경(프론트엔드)과 무관
- **.done 생성**: `/home/jay/workspace/memory/events/task-1734.1.done`

## 머지 판단
- **머지 필요**: No (git 리포 없음, 직접 수정)
- **브랜치**: N/A
- **워크트리 경로**: N/A
- **머지 의견**: dashboard 디렉토리에 git 리포가 없어 직접 수정 완료. 대시보드 재시작 완료.

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

### 수정 파일 목록
- /home/jay/workspace/memory/reports/task-1734.1.md: 2회 (Edit, Write)
- /home/jay/workspace/dashboard/components/App.js: 1회 (Edit)
- /home/jay/workspace/memory/tasks/task-1734.1.md: 1회 (dispatch)
- bash_cmd: 1회 (Bash)

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

