# task-2129: 신호등 체계 잔여 버그 수정 + 시스템 3문서 정리

## ★ 프로젝트: `/home/jay/workspace/dashboard/`

## 배경
task-2126에서 dispatch.py에 member-status 업데이트 로직을 추가했으나, **sub_teams 구조를 탐색하지 못해** dev4~8팀 팀장(vishnu, marduk, perun, itzamna, ra)이 member-status.json에 반영되지 않는 버그 잔존.

## 문제 1: sub_teams 미탐색

### 현상
- 3팀(다그다): 정상 동작 — columns.teams 최상위에 있음
- 4팀(비슈누): **팀장 유휴, 팀원 대기** — sub_teams 내부에 있어서 dispatch.py가 찾지 못함

### 원인
dispatch.py의 `_update_member_status_on_dispatch()` 함수가 organization-structure.json에서 팀원을 조회할 때 **columns.teams 최상위만 탐색**하고, 그 안의 `sub_teams`를 탐색하지 않음.

### org-structure 구조
```
structure.columns.teams:
  - team_id: development-office (개발실)
    - sub_teams:
      - sub_team_id: dev1-team (개발1팀) ← sub_teams 내부
      - sub_team_id: dev2-team
      - sub_team_id: dev3-team
      - sub_team_id: dev4-team
      - sub_team_id: dev5-team
      - sub_team_id: dev6-team
      - sub_team_id: dev7-team
      - sub_team_id: dev8-team
```

### 수정
`_update_member_status_on_dispatch()`에서 sub_teams도 재귀적으로 탐색:
```python
for team in structure.get("columns", {}).get("teams", []):
    # 최상위 팀 확인
    if team.get("team_id") == team_id:
        # 팀장/팀원 업데이트
        ...
    # sub_teams 내부도 확인
    for sub_team in team.get("sub_teams", []):
        if sub_team.get("sub_team_id") == team_id or sub_team.get("team_id") == team_id:
            # 팀장/팀원 업데이트
            ...
```

## 문제 2: _enrich_member_status()도 동일 문제 가능
data_loader.py의 `_enrich_member_status()`에서 member_to_team 매핑 구축 시 sub_teams를 처리하는지 확인 필요. 이미 처리하고 있다면 OK.

## 문제 3: 시스템 3문서에 신호등 전이 규칙 미정리

### 요구사항
`memory/specs/traffic-light-spec.md`의 전이 규칙을 시스템 3문서 형태로 정리:

**전이 규칙 (제이회장님 직접 정의)**:
1. 팀 봇이 작업 시작 → 팀장: **작업중**(초록), sub agent(팀원): **대기**(노란)
2. 팀장이 sub agent에게 업무 배분 → 해당 sub agent: **작업중**(초록)
3. sub agent 업무 완료 → 해당 sub agent: **대기**(노란)로 복귀
4. 팀 봇 작업 전체 완료 → 팀장 + sub agent 전원: **유휴**(회색)

### 저장 경로
`/home/jay/workspace/memory/plans/system/traffic-light/` 디렉토리에 3문서:
- `plan.md` — 신호등 체계 설계 계획서
- `context-notes.md` — 결정 근거 (반복 버그 이력, 전이 규칙 정의)
- `checklist.md` — 구현 체크리스트

### traffic-light-spec.md 업데이트
최종 수정일을 2026-04-23으로 갱신, task-2126/2129 수정 반영.

## ★ 먼저 읽을 파일
- `/home/jay/workspace/dispatch.py` — `_update_member_status_on_dispatch` 함수 (task-2126에서 추가됨)
- `/home/jay/workspace/memory/organization-structure.json` — columns.teams → sub_teams 구조
- `/home/jay/workspace/dashboard/data_loader.py` — L777~840 (_enrich_member_status)
- `/home/jay/workspace/memory/specs/traffic-light-spec.md` — 현재 스펙

## 검증 시나리오 (이게 되면 성공)

### 시나리오 1: sub_teams 팀장 반영
1. dispatch.py로 dev4-team에 테스트 위임
2. member-status.json에 vishnu: working 기록
3. 대시보드에서 비슈누 → 작업중(초록), 팀원 → 대기(노란)

### 시나리오 2: dev1~8 전팀 정상
1. dispatch.py로 dev1-team ~ dev8-team 각각 확인
2. 모든 팀에서 팀장=working, 팀원=standby 정상

### 시나리오 3: 시스템 3문서 존재
- `memory/plans/system/traffic-light/plan.md` 존재
- `memory/plans/system/traffic-light/context-notes.md` 존재
- `memory/plans/system/traffic-light/checklist.md` 존재

## 완료 시그니처
- dev4~8팀 팀장이 dispatch 시 working으로 표시
- 시스템 3문서 작성 완료
- traffic-light-spec.md 업데이트
- 대시보드 스크린샷 확인

## 레벨
- critical

## 프로젝트
- dev-system
