# 🎭 Orchestry 역할 기반 워크플로우

## 📋 역할별 책임과 우선순위

### 역할 정의

| 역할 | 책임 | 주요 작업 | 리뷰 가능 |
|------|------|----------|-----------|
| **Backend** | API, 서버 로직 | API 개발, 데이터베이스 연동, 인증 | Frontend, Database |
| **Frontend** | UI/UX 구현 | React 컴포넌트, 상태 관리, 스타일링 | UI-UX |
| **Fullstack** | 전체 기능 구현 | End-to-end 기능, 통합 | Backend, Frontend |
| **DevOps** | 배포, 인프라 | CI/CD, Docker, 모니터링 | Security |
| **Database** | DB 설계, 최적화 | 스키마 설계, 쿼리 최적화, 마이그레이션 | Backend |
| **Testing** | 테스트 작성 | 단위 테스트, 통합 테스트, E2E | 모든 개발 역할 |
| **Security** | 보안 검토 | 취약점 분석, 보안 감사 | Backend, DevOps |
| **Architect** | 시스템 설계 | 아키텍처 설계, 기술 선택 | Fullstack, Backend |

### 우선순위 자동 결정

| 우선순위 | 조건 | 예시 |
|----------|------|------|
| **Critical** 🔴 | 보안 이슈, 시스템 다운, "urgent" 키워드 | "Fix SQL injection vulnerability" |
| **High** 🟠 | 버그, 주요 기능, 많은 의존성 | "Payment system not working" |
| **Medium** 🟡 | 일반 기능, 개선사항 | "Add user profile page" |
| **Low** 🟢 | 문서화, 리팩토링, 최적화 | "Update README documentation" |

## 🔄 실제 워크플로우 예시

### 시나리오 1: 전자상거래 플랫폼 개발

```mermaid
graph TB
    PM[Product Manager<br/>요구사항 정의] --> ARCH[Architect<br/>시스템 설계]
    ARCH --> BACK[Backend Dev<br/>API 개발]
    ARCH --> DB[Database Dev<br/>스키마 설계]
    BACK --> FRONT[Frontend Dev<br/>UI 구현]
    DB --> BACK
    FRONT --> TEST[Testing<br/>테스트 작성]
    BACK --> TEST
    TEST --> SEC[Security<br/>보안 검토]
    SEC --> OPS[DevOps<br/>배포]
```

#### 실제 대화 흐름:

**Session 1 - Product Manager Role:**
```
사용자: "전자상거래 플랫폼을 만들어야 해"

Claude PM:
→ register_session_role("product-manager")
→ create_project("E-commerce Platform")
→ track_epic("User Management", priority: "high")
→ track_epic("Product Catalog", priority: "high")
→ track_epic("Shopping Cart", priority: "critical")
→ track_epic("Payment System", priority: "critical")
→ create_prioritized_task(
    "Design database schema for products",
    requiredSkills: ["PostgreSQL", "Data Modeling"],
    preferredRole: "database",
    priority: "high"
  )
```

**Session 2 - Database Role:**
```
Claude DB:
→ register_session_role("database", ["PostgreSQL", "Redis", "Data Modeling"])
→ claim_next_task()
← 받은 작업: "Design database schema for products" (High Priority)
→ [스키마 설계 작업...]
→ update_progress("completed", "Schema designed with categories, variants, inventory")
→ handoff_work("Backend team can now implement Product API")
```

**Session 3 - Backend Role:**
```
Claude Backend:
→ register_session_role("backend", ["Node.js", "Express", "REST API"])
→ claim_next_task()
← 받은 작업: "Implement Product API" (High Priority)
→ [API 구현...]
→ create_prioritized_task(
    "Create product listing UI",
    preferredRole: "frontend",
    dependencies: ["product-api"],
    priority: "medium"
  )
```

**Session 4 - Frontend Role:**
```
Claude Frontend:
→ register_session_role("frontend", ["React", "Redux", "TailwindCSS"])
→ get_role_workload()
← 현재 Backend: 3 tasks, Frontend: 1 task, Testing: 0 tasks
→ claim_next_task()
← 받은 작업: "Create product listing UI" (Medium Priority)
```

### 시나리오 2: 긴급 보안 이슈 처리

```
Session A (Testing):
→ "SQL injection 취약점 발견!"
→ escalate_task("user-login-api", "critical", "security", "SQL injection found in login")

Session B (Security) - 자동 알림:
→ claim_next_task()
← 받은 작업: "Fix SQL injection in login" (CRITICAL Priority)
→ [보안 패치 작업...]
→ request_role_specific_help("backend", "Need immediate review", context: "...")

Session C (Backend) - 자동 알림:
→ "Security 팀에서 긴급 리뷰 요청"
→ [코드 리뷰 및 수정...]
→ update_task_assignment("deploy-hotfix", "devops", "critical")

Session D (DevOps) - 자동 알림:
→ "Critical 보안 패치 배포 필요"
→ [긴급 배포 프로세스...]
```

## 📊 우선순위 기반 작업 큐

### 현재 작업 큐 상태:
```json
{
  "critical": [
    {
      "id": "fix-payment-bug",
      "title": "Payment processing fails",
      "assignedTo": "backend-session-2",
      "estimatedHours": 4
    }
  ],
  "high": [
    {
      "id": "implement-auth",
      "title": "User authentication system",
      "assignedTo": "fullstack-session-1",
      "estimatedHours": 8
    },
    {
      "id": "database-optimization",
      "title": "Optimize slow queries",
      "assignedTo": "database-session-1",
      "estimatedHours": 3
    }
  ],
  "medium": [
    {
      "id": "product-ui",
      "title": "Product listing page",
      "assignedTo": "frontend-session-1",
      "estimatedHours": 6
    }
  ],
  "low": [
    {
      "id": "update-docs",
      "title": "Update API documentation",
      "assignedTo": "pool",
      "estimatedHours": 2
    }
  ]
}
```

## 🤖 자동 할당 로직

```python
# 의사 코드
def auto_assign_task(task):
    priority = determine_priority(task)  # 키워드 분석으로 우선순위 결정
    
    # 1. 필요 스킬 매칭
    best_session = find_best_match(
        required_skills=task.skills,
        preferred_role=task.role,
        availability=True
    )
    
    # 2. 로드 밸런싱
    if best_session.current_load > MAX_LOAD:
        best_session = find_alternative_session()
    
    # 3. 우선순위별 큐 배치
    if priority == "critical":
        assign_immediately(best_session, task)
    else:
        add_to_queue(priority, task)
    
    return assignment
```

## 💡 베스트 프랙티스

### 1. 세션 시작 시
```
항상 역할 등록:
→ register_session_role("your-role", ["your", "skills"])
→ get_role_workload()  # 현재 상황 파악
→ claim_next_task()     # 적절한 작업 받기
```

### 2. 작업 생성 시
```
우선순위 자동 결정 활용:
→ create_prioritized_task(
    title="Fix user login",  # "Fix" + "login" = High Priority 자동
    description="Users cannot login with email",
    requiredSkills=["Authentication", "JWT"]
  )
```

### 3. 협업 필요 시
```
특정 역할에 도움 요청:
→ request_role_specific_help(
    targetRole="database",
    issue="Query taking 10+ seconds",
    priority="high"
  )
```

### 4. 에스컬레이션
```
복잡도 증가 발견 시:
→ escalate_task(
    taskId="simple-feature",
    newPriority="critical",
    escalateToRole="architect",
    reason="Requires complete system redesign"
  )
```

## 📈 워크로드 분산 대시보드

```
Current Load Distribution:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Backend     ████████████░░░░ 75% (3 sessions, 12 tasks)
Frontend    ████████░░░░░░░░ 50% (2 sessions, 8 tasks)  
Database    ████░░░░░░░░░░░░ 25% (1 session, 2 tasks)
Testing     ██████████████░░ 87% (2 sessions, 14 tasks)
DevOps      ██░░░░░░░░░░░░░░ 12% (1 session, 1 task)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

⚠️ Testing role is overloaded!
→ Redistributing low-priority tasks to available sessions...
```

## 🔄 자동 재분배

세션이 끊어지면:
1. 해당 세션의 Critical/High 작업 → 같은 역할의 다른 세션
2. Medium 작업 → 작업 풀로 반환
3. Low 작업 → 대기 큐에 추가

```javascript
// 세션 종료 감지
on_session_disconnect(sessionId) {
  tasks = get_assigned_tasks(sessionId)
  
  for (task of tasks) {
    if (task.priority >= "high") {
      reassign_to_same_role(task)
    } else {
      return_to_pool(task)
    }
  }
}
```

이제 Orchestry는 완벽한 팀 협업 도구입니다! 🚀