# dispatch.py 논리적 팀 라우팅 + 복합팀 운용 시스템화

## 문제
논리적 팀(design/marketing/content/publishing/composite) 운용 규칙이 dispatch.py에 시스템화되어 있지 않음.
- 디자인 작업을 dev팀에 위임하는 실수가 3회 반복됨
- 논리적 팀은 --force로 여러 봇에 병렬 위임 가능한데, 이를 호출자가 매번 기억해야 함
- 작업 내용 기반 자동 라우팅이 없음

## 수정 사항

### 1. 논리적 팀 도메인 매핑 (config/constants.json에 추가)
```json
{
  "logical_teams": {
    "design": {
      "keywords": ["배너", "이미지", "디자인", "시안", "광고 크리에이티브", "카드뉴스 디자인", "비주얼", "포스터"],
      "anti_keywords": ["HTML 수정", "CSS 버그", "코드 수정", "렌더러 수정"],
      "description": "비주얼 창작 전문. 코드 수정은 dev팀 소관."
    },
    "marketing": {
      "keywords": ["카피", "마케팅 전략", "광고 문구", "SEO", "콘텐츠 전략", "캠페인 기획"],
      "description": "마케팅/카피 전문."
    },
    "content": {
      "keywords": ["블로그 작성", "콘텐츠 제작", "포스팅 작성"],
      "description": "콘텐츠 제작 전문."
    },
    "publishing": {
      "keywords": ["발행", "퍼블리싱", "업로드"],
      "description": "콘텐츠 발행 전문."
    },
    "composite": {
      "keywords": ["복합 작업", "멀티팀"],
      "description": "여러 팀 순차/병렬 오케스트레이션."
    }
  }
}
```

### 2. dispatch.py에 논리적 팀 라우팅 검증 추가

#### A. 잘못된 라우팅 차단
```python
def _validate_team_routing(team_id: str, task_desc: str):
    """
    dev팀에 논리적 팀 소관 작업이 위임되면 WARNING 또는 차단.
    예: --team dev3-team인데 task에 "배너", "디자인" 키워드 → 
        "⚠️ 이 작업은 --team design이 적합합니다. 계속하려면 --override-routing"
    """
```

#### B. 논리적 팀 자동 병렬 (--force 자동 적용)
```python
def _dispatch_logical_team(team_id: str, task_file: str, ...):
    """
    논리적 팀 위임 시:
    1. --force 자동 적용 (호출자가 명시 안 해도)
    2. 유휴 봇 중 자동 배정
    3. 같은 논리적 팀으로 여러 건 동시 위임 가능
    """
```

#### C. 라우팅 추천 기능
```python
def _suggest_team(task_desc: str) -> str:
    """
    task 설명에서 키워드 매칭 → 적합한 팀 추천.
    dispatch 시 team이 추천과 다르면 WARNING.
    """
```

### 3. 기존 DYNAMIC_BOT_TEAMS 로직과 통합
- dispatch.py에 이미 `DYNAMIC_BOT_TEAMS = ["design", "marketing", "content", ...]` 존재
- 이 목록과 신규 도메인 매핑을 연결
- 논리적 팀 위임 시 봇 선택 로직이 `_select_and_reserve_bot()`을 사용하도록 통합

### 4. 복합팀(composite) 운용 강화
- composite 팀 사용 시 내부적으로 여러 논리적/dev팀을 순차/병렬 호출
- 이미 `_dispatch_composite()` 함수 존재 → 논리적 팀 도메인 매핑과 연결

## 테스트
1. 기존 dispatch 테스트 전체 통과
2. 신규 테스트:
   - dev팀에 디자인 키워드 태스크 → WARNING 또는 차단
   - design 팀 위임 시 --force 자동 적용 확인
   - 라우팅 추천 정확도
3. 기존 논리적 팀 위임 동작 변경 없음

## 참조
- `/home/jay/workspace/dispatch.py` — DYNAMIC_BOT_TEAMS, _dispatch_composite(), _find_available_bot()
- `/home/jay/workspace/config/constants.json` — logical_teams 섹션 추가

## 산출물
1. config/constants.json에 logical_teams 도메인 매핑 추가
2. dispatch.py에 라우팅 검증 + 자동 --force + 추천 기능
3. 테스트 추가
4. 보고서