# 팀 간 통신 구조

> 발견일: 2026-03-01
> 진화 과정: 크론 폴링 → 세션 크론 → .done 파일 + 팀장 직접 통보

## 결론
**크론 폴링은 비효율적이다.** 팀장이 작업 완료 시 `cokacdir --cron`으로 아누에게 직접 통보하는 방식이 최적이다.

## 통신 구조 전체도

```
제이회장님 ──(텔레그램)──→ 아누(봇A, Opus)
                              │
                    dispatch.py + team_prompts.py
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
        헤르메스(봇B)    오딘(봇C)       라(봇D)
        1팀 Sonnet      2팀 Sonnet      3팀 Sonnet
              │               │               │
        Task tool         Task tool     openclaw agent
        (haiku/sonnet)   (haiku/sonnet)  (GLM-5)
              │               │               │
              ▼               ▼               ▼
        .done 파일 생성  .done 파일 생성  .done 파일 생성
        보고서 저장       보고서 저장       보고서 저장
              │               │               │
              └───── cokacdir --cron ─────────┘
                              │
                              ▼
                    아누(봇A) ← 완료 통보 수신
                              │
                    보고서 읽기 + 요약
                              │
                              ▼
                    제이회장님께 보고
```

## 진화 과정 (실패→개선 히스토리)

### 1차: 크론 폴링 (실패)
- **방식**: dispatch 후 `cokacdir --cron`으로 30초마다 .done 파일 확인
- **문제**: 폴링 크론이 **새 세션**에서 실행 → 현재 대화 컨텍스트 없음
- **증상**: 팀장이 끝냈다고 하는데 아누는 모르고 있음
- **사용자 피드백**: "1팀, 2팀 봇에선 다 끝냈다고 하는데 너는 모르고 있엉??"

### 2차: 세션 크론 (부분 개선)
- **방식**: `--session` 파라미터 추가하여 현재 대화 세션에서 폴링
- **문제**: 여전히 주기적 폴링 (자원 낭비), 타이밍 이슈
- **사용자 피드백**: "완료확인 계속 하는 시스템 안 좋다"

### 3차: .done 파일 + 팀장 직접 통보 (현재, 최적)
- **방식**:
  1. 팀장이 작업 완료 시 `.done` 이벤트 파일 생성 (기록용)
  2. 팀장이 `cokacdir --cron "task-XX 완료. 보고서 경로..." --at 10s --once` 실행
  3. 아누 봇이 새 세션에서 통보 수신 → 보고서 읽기 → 제이회장님께 보고
- **장점**: 폴링 없음, 즉시 통보, 불필요한 자원 소비 제거
- **구현 위치**: `prompts/team_prompts.py` 워크플로우 스텝 6

## 통신 모듈 구조

### dispatch.py — 아누 → 팀장 위임
- `dispatch(team, task, level)` → `cokacdir --cron` 호출
- `get_dispatch_time(10)` → 10초 뒤 절대시간 (즉시 실행 효과)
- task_desc를 `memory/tasks/<task_id>.md`에 저장 (목차→요약→상세)
- daily log에 위임 기록 자동 추가

### team_prompts.py — 프롬프트 생성
- `build_prompt()` → 팀 유형에 따라 direct/glm 프롬프트 분기
- `_build_direct_prompt()` → 1/2팀용 (Task tool 코워크 + .done + 아누 통보)
- `_build_glm_prompt()` → 3팀용 (openclaw 전달 + .done 대기 + 검토 + 아누 통보)
- `_build_cowork_section()` → 팀별 팀원 목록 동적 생성 + 모델 선택 가이드

### 완료 통보 명령 (팀장 → 아누)
```bash
cokacdir --cron "<task_id> 완료. <report_path> 보고서 읽고 제이회장님께 핵심 요약 보고하라." \
  --at 10s --chat 6937032012 --key <ANU_KEY> --once
```

### .done 이벤트 파일
- **1/2팀**: `/home/jay/workspace/memory/events/<task_id>.done`
- **3팀**: `/home/jay/workspace/teams/dev3/<task_id>.done` (GLM이 생성)
- **용도**: 완료 기록 (감사 추적용). 실시간 감지에는 사용 안 함.

## 동시 완료 처리
- 1팀과 2팀이 동시에 끝나도 각각 별도 `cokacdir --cron`으로 아누에게 통보
- 아누 봇이 순차적으로 각 통보를 수신하여 처리
- 메시지 유실 가능성: 아누가 processing 중일 때 수신된 메시지는 유실 가능 (메시지 버퍼 시스템 미구현)
