# task-38.1 보고서: 멀티프로젝트 격리 Phase 0 코드 수정

## 작업 내용

멀티프로젝트 격리를 위한 4가지 코드 수정 완료.

### (1) dispatch.py - --project 파라미터 추가

- argparse에 `--project` 인자 추가 (required=True)
- `dispatch()` 함수에 `project_id` 파라미터 추가
- 프로젝트 디렉토리 존재 확인 로직 추가: `projects/{project_id}/` 미존재 시 에러 반환
- `build_prompt()` 호출 시 `project_id` 전달

### (2) team_prompts.py - build_prompt()에 project_id 파라미터 추가

- `build_prompt(team_id, task_id, task_desc, level, project_id="system")` 시그니처 변경
- `_build_direct_prompt()`: "## 작업 규칙" 섹션에 격리 규칙 주입
  - `모든 코드는 /home/jay/workspace/projects/{project_id}/ 하위에만 작성. 다른 프로젝트 디렉토리, 시스템 코드 수정 절대 금지.`
- `_build_glm_prompt()`: "## 중요 규칙" 섹션에 격리 규칙 주입 + glm_message 내 코드 저장 경로 변경

### (3) task-timer.py - fcntl.flock 파일 락 추가

- `import fcntl` 추가
- `_load_timers()`: `LOCK_SH` (공유 읽기 락) 적용
- `_save_timers()`: `LOCK_EX` (배타적 쓰기 락) 적용
- `_write_event_file()`: `LOCK_EX` (배타적 쓰기 락) 적용
- 모두 `try/finally`로 `LOCK_UN` 해제 보장

### (4) task-timer.py - start 명령 --project 옵션 추가

- `start_task()` 시그니처: `project_id: str = "system"` 파라미터 추가
- task-timers.json 레코드에 `project_id` 필드 기록
- `main()` 파싱 루프에 `--project` 플래그 처리 추가 (기본값 "system")

## 생성/수정 파일 목록

| 파일 | 작업 |
|------|------|
| `/home/jay/workspace/dispatch.py` | 수정 |
| `/home/jay/workspace/prompts/team_prompts.py` | 수정 |
| `/home/jay/workspace/memory/task-timer.py` | 수정 |

## 테스트 결과

| 테스트 항목 | 결과 |
|-------------|------|
| dispatch.py AST 문법 체크 | PASS |
| team_prompts.py AST 문법 체크 | PASS |
| task-timer.py AST 문법 체크 | PASS |
| dispatch.py --project 미입력 시 에러 | PASS |
| dispatch.py 존재하지 않는 프로젝트 에러 반환 | PASS |
| build_prompt project_id 주입 확인 | PASS |
| 격리 규칙 텍스트 포함 확인 | PASS |
| task-timer.py fcntl.flock 6회 적용 확인 | PASS |
| task-timer.py --project 없이 start (default "system") | PASS |
| task-timer.py --project myapp start | PASS (project_id: "myapp" 기록) |

## 버그 유무

없음.

## 비고

- 하위 호환 유지: `dispatch()`, `build_prompt()`, `start_task()` 모두 `project_id` 기본값 `"system"`으로 기존 호출 코드 변경 없이 동작
- dispatch.py의 `--project`는 required=True (필수) - 기존 호출 스크립트가 있다면 수정 필요
- fcntl은 Linux/macOS 전용 (Windows 미지원). 현재 환경(Linux)에는 문제 없음
