# task-1234.1 완료 보고서

## SCQA

**S**: 대시보드 `/api/org` 엔드포인트는 `org_data`만 반환하며, `bot_activity` 데이터는 별도 `/api/bot-activity` 엔드포인트에서만 제공된다. 프론트엔드(App.js)는 두 엔드포인트를 각각 fetch하여 개발팀 카드에 composite 작업 상태를 표시한다.

**C**: `/api/org` 응답에 `bot_activity`가 없어, org 응답 기반으로 데이터를 소비하는 경로에서 개발팀 카드가 composite 작업 중임에도 "대기중"으로 표시되는 문제가 발생했다.

**Q**: `/api/org` 응답에 `bot_activity`를 통합하여 개발팀 카드의 "대기중" 표시 문제를 해결할 수 있는가?

**A**: `server.py:2911-2916`의 `/api/org` 핸들러에 `copy.deepcopy(org_data)` + `_enrich_bot_activity()` 호출을 추가하여 `bot_activity` 필드를 응답에 통합했다. curl 테스트로 15개 봇 데이터 포함 확인, composite 활성 봇(dev1: 마케팅팀+디자인팀)의 `logical_team_using` 정상 반영 확인. 서버 재시작 완료.

## 수정 내역

### server.py (dashboard/server.py:2911-2916)

**변경 전:**
```python
if self.path == "/api/org":
    self.data_loader.reload_all()
    org = self.data_loader.org_data
    self.send_api_response(org)
    return
```

**변경 후:**
```python
if self.path == "/api/org":
    self.data_loader.reload_all()
    org = copy.deepcopy(self.data_loader.org_data)
    org["bot_activity"] = self.data_loader._enrich_bot_activity()
    self.send_api_response(org)
    return
```

## 산출물

- `/home/jay/workspace/dashboard/server.py` (수정: 2911-2916줄)

## 테스트 결과

- `/api/org` 응답에 `bot_activity` 포함: **PASS** (15개 봇 데이터)
- `bot_activity.bots.dev1.logical_team_using` = `"마케팅팀+디자인팀"`: **PASS**
- 기존 org 키 7개 유지(organization_type, version, updated, structure 등): **PASS**
- `/api/bot-activity` 별도 엔드포인트 정상 동작 유지: **PASS** (15 bots)
- 서버 재시작 후 정상 응답: **PASS**

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **org_data 원본 오염 위험** — `copy.deepcopy()` 적용으로 원본 격리
   - 상세: `self.data_loader.org_data`를 직접 수정하면 다음 요청에도 `bot_activity` 키가 남아 데이터 중복/오염 발생. deepcopy로 해결.
2. **서버 재시작 누락 위험** — task-1222.1 교훈 반영하여 코드 수정 후 즉시 서버 재시작 실행
   - 상세: `pkill -f "dashboard/server.py" || true` → `nohup python3 dashboard/server.py` 순차 실행
3. **프론트엔드 변경 불필요 확인** — App.js가 이미 `/api/bot-activity`를 별도 fetch(line 84)하여 `botActivity` state를 관리하고, TeamCard에 `logicalTeamUsing` prop 전달 중(line 601-609). 추가 프론트엔드 수정 불필요.

## QC 증거

```
$ curl -s http://localhost:8000/api/org | python3 -c "..."
org keys: ['bot_activity', 'dependency_map', 'engine_summary', 'organization_type', 'runtime_note', 'structure', 'updated', 'version']
composite active: [('dev1', '마케팅팀+디자인팀')]
total bots: 15
```

## 비고

- pyright 기존 경고 9건(line 2207, 4108, 4156, 4303, 4306, 4309, 4555, 4862): 모두 이번 변경 범위 외 기존 코드의 미사용 변수 경고. 이번 작업에서 수정 대상 아님.
- 프론트엔드는 `/api/bot-activity` 별도 엔드포인트와 `/api/org` 내 `bot_activity` 두 경로로 데이터 접근 가능. 향후 API 호출 최적화 시 별도 엔드포인트 제거 검토 가능.
