# task-41.1 완료 보고서: dispatch.py 개선 + 조직도 JSON 수정

## 작업 요약
dispatch.py의 task_id 충돌 방지, --project 선택적 변경, team_prompts.py 격리 규칙 조건부 적용, organization-structure.json 코워크 모델 반영, critical 레벨 문구 추가.

## 수정 파일 목록

### 1. /home/jay/workspace/dispatch.py
- **A. generate_task_id() 충돌 방지**: `fcntl.flock` 파일 락 + placeholder 기록으로 atomic increment 구현. 연속 호출 시 다른 ID 생성 보장.
- **B. --project 선택적**: `required=True` → `default=None`. project_id 없으면 프로젝트 디렉토리 검사 건너뜀.

### 2. /home/jay/workspace/prompts/team_prompts.py
- **C. 프로젝트 격리 규칙 조건부 적용**:
  - project_id=None: "시스템 작업" 문구 사용, teams/{팀}/ 경로 안내
  - project_id 지정 시: 기존 격리 규칙 유지
  - _build_direct_prompt(), _build_glm_prompt() 모두 적용
- **E. critical/security 레벨 문구**: build_prompt()에서 level에 따라 프롬프트 상단에 **[CRITICAL]** 또는 **[SECURITY]** 경고 삽입

### 3. /home/jay/workspace/memory/organization-structure.json
- **D. 1팀/2팀 코워크 모델 반영**:
  - 헤르메스(dev1 팀장): model → claude-opus-4-6 (bot_settings.json과 일치)
  - dev1/dev2 비테스터 멤버 6명(불칸, 이리스, 아테나, 토르, 프레이야, 미미르): model → claude-sonnet-4-6, engine → anthropic, invoke → Task (subagent_type: general-purpose, model: sonnet)
  - dev3 멤버는 변경 없음 (GLM 유지)
  - engine_summary 업데이트: opus 2명, sonnet 11명, haiku 3명, glm 3명, gemini 1명 = 총 20명

## 테스트 결과 (5/5 PASS)
1. generate_task_id 연속 호출: task-42.1, task-43.1 → 서로 다른 ID 생성 확인
2. --project 없이 dispatch: argparse optional 확인, 시스템 작업 문구 정상 출력
3. critical/security 레벨: [CRITICAL], [SECURITY] 문구 정상 삽입
4. GLM prompt (dev3): project_id 조건부 처리 정상
5. organization-structure.json: engine_summary 합계 20, 모든 멤버 모델 일치

## 건드리지 않은 것
- cokacdir 명령 실행 로직 (subprocess.run 등)
- GLM 프롬프트 워크플로우 (done 파일 폴링, openclaw 명령)
- _build_verification_section() 함수
- dev3-team 멤버 설정

## 버그/이슈
- 없음. 모든 테스트 통과.
