# task-1045.1 완료 보고서: 복합업무 임시팀(Composite Team) 시스템

> 작업 ID: task-1045.1
> 팀: dev1-team (헤르메스)
> 레벨: Lv.3 (complex feature)
> 검증: critical

---

## SCQA

**S**: 현재 시스템은 1팀=1봇 고정매핑(개발팀) 또는 가용봇 단독구동(논리적 팀)으로 작업을 처리한다. 단일 팀 작업은 정상 동작하며, dispatch.py의 기존 테스트 188건이 모두 통과한다.

**C**: 마케팅+디자인처럼 2개 이상 논리적 팀 역량이 Phase별로 필요한 복합업무 방법이 없다. 아누가 수동으로 Phase 1(마케팅) → Phase 2(디자인) 순차 위임하면서, 세션 간 맥락 손실과 핸드오프 비효율이 발생한다.

**Q**: 단일 봇 세션에서 복수 논리적 팀을 Phase별로 자동 관리하는 시스템을 기존 단일 팀 디스패치에 영향 없이 구현할 수 있는가?

**A**: `dispatch.py --composite marketing,design` CLI 지원을 구현 완료. 에이전트 미팅 5사이클(53개 개선점)을 거쳐 설계를 확정하고, 3개 모듈(utils/composite_constants.py, dispatch.py, team_prompts.py)을 수정했다. 테스트 222건 전부 통과 (기존 188 + 신규 34), 회귀 0건.

## 산출물

1. **설계 문서**: `/home/jay/workspace/memory/specs/composite-team-system.md` (v1.0, 12개 섹션)
2. **미팅 기록**: `/home/jay/workspace/memory/meetings/composite-team-design.md` (5사이클)
3. **신규 파일**: `utils/composite_constants.py` — SSOT 상수 (COMPOSITE_ALLOWED_TEAMS, HANDOFF_REQUIRED_FIELDS 등)
4. **수정 파일**: `dispatch.py` — _validate_composite_teams(), _dispatch_composite(), dispatch() 시그니처 변경, main() argparse 변경
5. **수정 파일**: `prompts/team_prompts.py` — _load_logical_team_agents(), build_composite_prompt(), _assemble_composite_prompt()
6. **테스트 파일**: tests/test_composite_constants.py (9건), tests/test_validate_composite.py (11건), tests/test_composite_prompt.py (14건)

## 핵심 설계 결정

- **Defense in Depth**: CLI → Library → Prompt 3레이어 검증
- **injection_guard 이원화**: composite는 high/critical 즉시 차단 (단일 팀은 로깅만)
- **SSOT**: composite_constants.py에서 dispatch.py와 team_prompts.py 양쪽 임포트
- **TEAM_INFO 비오염**: composite 경로는 org-details JSON만 사용, TEAM_INFO 직접 접근 제거
- **Phase 0 = FYI**: 한정승인이므로 승인 대기 없이 감사 추적만

## 검증 결과

- pytest: 222 passed, 0 failed (0.69s)
- black --check: 3 files reformatted → 통과
- isort --check: 통과
- 모듈 임포트: dispatch.py, team_prompts.py, composite_constants.py 모두 정상
- 기존 테스트 회귀: 0건

## 자체 해결 (1건)
1. **black 포맷 불일치** — 신규 코드에 black 자동 포맷 적용으로 해결

## 범위 외 미해결 (0건)
없음
