# Plan: task-131.1 - memory 문서 구조 프로젝트별 분리

## 작업 요약
dispatch.py의 --project 옵션과 team_prompts.py의 보고서 경로를 프로젝트별로 동적 생성하도록 개선.
현재 모든 보고서가 `memory/reports/`에 몰려있는 구조를 프로젝트별로 분리.

## 서브태스크 분해 및 팀원 배정

### ST-1: team_prompts.py 보고서 경로 동적 생성 (불칸 - 백엔드)
- `PROJECTS_ROOT` 환경변수 추가 (`/home/jay/projects`)
- `build_prompt()`에서 `project_id`가 있으면 보고서를 프로젝트별 경로로 라우팅
  - 보고서: `{PROJECTS_ROOT}/{project_id}/memory/reports/{task_id}.md`
  - plan 경로: `projects/{project_id}/plans/` 하위
- `_build_direct_prompt()`, `_build_glm_prompt()`에서 동적 경로 반영

### ST-2: dispatch.py 프로젝트 경로 수정 (불칸 - 백엔드)
- `project_dir` 검증 경로를 `PROJECTS_ROOT / project_id`로 변경
- 기존 `WORKSPACE / "projects" / project_id`는 오류 (실제 프로젝트는 `/home/jay/projects/`에 위치)

### ST-3: 테스트 (아르고스 - 테스터)
- team_prompts.py 변경에 대한 단위 테스트
- project_id 있을 때/없을 때 경로 분기 검증
- dispatch.py 프로젝트 디렉토리 검증 테스트

### ST-4: MEMORY.md 문서화 (헤르메스 - 팀장)
- 프로젝트별 memory 구조 문서화

## 예상 위험 및 대안
- **위험**: 프로젝트 디렉토리에 memory/reports/ 폴더가 없을 수 있음
  - **대안**: mkdir -p로 자동 생성 (team_prompts.py에서 이미 수행)
- **위험**: 기존 테스트가 하드코딩된 경로 가정
  - **대안**: 기존 테스트 호환성 유지, 새 테스트 추가
- **검토한 대안과 기각 사유**:
  - 심볼릭 링크로 프로젝트 보고서를 글로벌 reports/에도 링크 → 복잡성 증가, 기각
  - done 파일도 프로젝트별 분리 → 이벤트 시스템이 글로벌 events/ 의존, 기각

## 실행 순서
1. ST-1, ST-2 (불칸, 병렬 불가 - 동일 파일 의존) → 순차
2. ST-3 (아르고스, ST-1/2 완료 후)
3. ST-4 (헤르메스, 최종)

## 실패 시나리오 체크리스트

### 1. 비정상 입력/상태
- project_id가 존재하지 않는 프로젝트명일 때 → dispatch.py에서 이미 존재 확인 후 에러 반환
- PROJECTS_ROOT 환경변수 미설정 시 → 기본값 `/home/jay/projects` 사용

### 2. 동시성/경쟁 조건
- 여러 팀이 같은 프로젝트에 동시 작업 시 보고서 경로 충돌 → task_id가 유니크하므로 충돌 없음

### 3. 비정상 종료/타임아웃
- 프로젝트 memory 디렉토리 생성 실패 시 → mkdir -p로 안전하게 처리

### 4. 스테일 데이터
- 해당 없음 (경로 생성 로직만 변경)

### 5. 통합 시 충돌
- 기존 시스템 작업(project_id=None)은 영향 없음 - 동일 경로 유지
- done 파일/이벤트 큐는 글로벌 유지 → event-queue.py, task-timer.py 변경 불필요
