# task-1828 + task-1841 재적용

## 배경
검증 결과 두 작업 모두 핵심 코드가 원복/미반영 상태.

### task-1828 (micro-commit 3계층) — PASS 1/4, FAIL 3/4
- ✅ auto-commit.sh 스크립트 존재
- ❌ DIRECT-WORKFLOW.md에 micro-commit 블록 누락
- ❌ team_prompts.py에 micro-commit 섹션 누락
- ❌ settings.json에 auto-commit hook 미등록

### task-1841 (신호등 borrowed_tasks) — PASS 1/8, FAIL 7/8
- ✅ logical_team_using "+" 결합만 존재
- ❌ data_loader.py에 borrowed_tasks 필드 누락
- ❌ App.js에 borrowedTasks 병합 로직 누락
- ❌ utils.js에 보라색 도트 시각 구분 누락
- ❌ test_server.py에 테스트 4건 누락
- ❌ API 응답에 borrowed_tasks 미포함

## 작업 1: task-1828 재적용 (micro-commit)

### 1-1. DIRECT-WORKFLOW.md 수정
- 파일: `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md`
- Step 3 섹션 끝에 아래 블록 추가:
```markdown
### ★ Micro-commit 필수 (worktree 작업 시)
팀원이 파일 수정 작업을 완료하면 반드시 즉시 커밋:
```bash
git add -A && git commit -m "[{task_id}] {팀원명}: {작업 요약}"
```
- worktree 브랜치에서만 실행 (main/master 금지)
- 커밋하지 않은 변경사항은 다른 팀 작업에 의해 덮어쓰일 수 있음
```

### 1-2. team_prompts.py 수정
- 파일: `/home/jay/workspace/prompts/team_prompts.py`
- `_build_direct_prompt()` 함수 내, 워크플로우 섹션 다음에 아래 추가:
```python
f"\n## ★ Micro-commit 규칙\n"
f"팀원이 파일 수정 완료 시 즉시 커밋:\n"
f"```bash\n"
f"git add -A && git commit -m \"[{task_id}] {{{{팀원명}}}}: {{{{작업 요약}}}}\"\n"
f"```\n"
```
- 주의: f-string에서 {task_id}는 변수 치환, {{팀원명}}/{{작업 요약}}은 리터럴 중괄호

### 1-3. settings.json에 auto-commit hook 등록
- 파일: `/home/jay/workspace/.claude/settings.json`
- PostToolUse 배열에 auto-commit hook 엔트리 추가:
```json
{
  "matcher": {
    "tool_name": ["Write", "Edit"]
  },
  "hooks": [
    {
      "type": "command",
      "command": "bash /home/jay/workspace/hooks/auto-commit.sh"
    }
  ]
}
```
- 기존 pyright/ruff hook은 유지, 별도 엔트리로 추가

## 작업 2: task-1841 재적용 (borrowed_tasks)

### 2-1. 백엔드 data_loader.py
- 파일: `/home/jay/workspace/dashboard/data_loader.py`
- `_enrich_bot_activity()` 함수에 `borrowed_tasks` 필드 추가
- 논리적 팀(marketing, content 등)이 dev팀 봇을 차용할 때:
  - 해당 봇의 `borrowed_tasks` 리스트에 task 정보 추가
  - task 정보: {task_id, team_id, description, start_time, bot}

### 2-2. 프론트엔드 App.js
- 파일: `/home/jay/workspace/dashboard/components/App.js`
- 인원 현황 바: `borrowedTasks.length > 0`일 때 해당 멤버도 "작업중/대기"로 카운트
- dev팀 카드: `ownTasks + borrowedTasks`를 병합한 `allTasks`를 `runningCount`/`runningTasks`로 전달

### 2-3. 프론트엔드 utils.js
- 파일: `/home/jay/workspace/dashboard/components/utils.js`
- TeamCard 내 차용 task에 보라색 도트(`bg-violet-400`)로 시각 구분

### 2-4. 테스트 추가
- 파일: `/home/jay/workspace/dashboard/test_server.py`
- 4건 추가:
  - `test_borrowed_tasks_populated_for_logical_team`
  - `test_borrowed_tasks_populated_for_composite_team`
  - `test_no_borrowed_tasks_for_dev_team`
  - `test_multiple_logical_teams_same_bot_combines_labels`

## 검증 시나리오 (이게 되면 성공)

### task-1828 검증
1. DIRECT-WORKFLOW.md에서 "Micro-commit" 키워드 grep → 1건 이상
2. team_prompts.py에서 "Micro-commit" 키워드 grep → 1건 이상
3. settings.json에서 "auto-commit.sh" grep → 1건 이상
4. `bash -n /home/jay/workspace/hooks/auto-commit.sh` → exit 0

### task-1841 검증
1. data_loader.py에서 "borrowed_tasks" grep → 1건 이상
2. App.js에서 "borrowedTasks" grep → 1건 이상
3. utils.js에서 "bg-violet-400" 차용 task 관련 → 1건 이상
4. pytest 관련 테스트 4건 PASS
5. `/api/bot-activity` 응답에 borrowed_tasks 필드 포함

## 주의사항
- data_loader.py는 대용량(107KB) — offset/limit 분할 읽기 필수
- App.js는 대용량(70KB) — offset/limit 분할 읽기 필수
- 수정 후 즉시 커밋 (코드 수정 즉시 커밋 규칙)
- 기존 기능 회귀 방지: 전체 pytest 실행하여 확인
