---
name: rpa-orchestrator
description: "GUARDiA ITSM RPA 봇 오케스트레이터. ITSM 반복 업무 자동화, RPA 작업 등록/실행/스케줄링, 입력 Validation 학습, 실행 이력 조회를 총괄한다. 다음 상황에서 반드시 사용: (1) 'RPA', '봇 자동화', '자동 처리', '반복 작업 자동화' 요청; (2) 'validation 학습', '입력 규칙 학습', 'API 스키마 학습' 요청; (3) 'RPA 작업 등록', 'RPA 실행', 'RPA 스케줄' 요청; (4) 'SR 자동 접수', 'SSL 만료 자동 알림', '정기 점검 자동화' 요청; (5) 'RPA 이력', 'RPA 실행 결과', 'RPA 현황' 조회; (6) 다시 실행, 업데이트, 수정, 보완, 재실행 요청."
---

# GUARDiA ITSM RPA 오케스트레이터

RPA 봇(자동화)과 Validation 학습을 조율하는 통합 워크플로우.
**실행 모드: 파이프라인 (에이전트 팀)** — validation-learner → rpa-bot → 기존 에이전트 연동.

---

## 에이전트 팀 구성

| 에이전트 | 역할 |
|---------|------|
| validation-learner | ITSM API 스키마 스캔 → validation 규칙 DB 저장 |
| rpa-bot | 학습 규칙 참조 → ITSM API 자동 호출 실행 |
| incident-responder | RPA 실행 실패 → 인시던트 자동 생성 |

---

## Phase 0: 컨텍스트 확인

사용자 요청 분류:
- **학습 요청** ("validation 학습해줘", "API 스키마 학습") → Phase 1만 실행
- **실행 요청** ("RPA 실행", "자동 처리") → Phase 2 실행 (학습 규칙이 없으면 Phase 1 선행)
- **등록 요청** ("RPA 작업 추가", "봇 등록") → Phase 3 실행
- **조회 요청** ("RPA 현황", "실행 이력") → `GET /api/rpa/tasks`, `GET /api/rpa/executions`

---

## Phase 1: Validation 학습

`validation-learner` 서브 에이전트 호출.

```
# 전체 학습 (최초 또는 엔드포인트 추가 후)
POST /api/rpa/validations/learn
{
  "endpoints": "all",     # 또는 특정 endpoint 목록
  "overwrite": true
}

응답: { learned: N, endpoints: [...] }
```

학습 순서:
1. FastAPI OpenAPI 스펙 수집: `GET /api/openapi.json`
2. 각 `POST`/`PUT` 엔드포인트의 `requestBody.schema` 파싱
3. 필드별 rules 추출 → `tb_rpa_validation` upsert
4. 학습 결과 요약 출력

---

## Phase 2: RPA 작업 실행

`rpa-bot` 에이전트 호출. 실행 전 반드시 validation 확인.

```
# 단발성 즉시 실행
POST /api/rpa/execute
{
  "task_type": "SR_CREATE" | "SR_STATUS_UPDATE" | "SHELL_EXEC" | "SSL_CHECK",
  "payload": { ... },       # 입력 데이터 (validation 학습 규칙 준수 필수)
  "dry_run": false          # true 시 검증만, API 호출 없음
}

# 스케줄 작업 실행 (등록된 태스크)
POST /api/rpa/tasks/{task_id}/run
```

**실행 흐름:**
```
payload 입력
  → validation 검증 (tb_rpa_validation 규칙)
  → 실패: 오류 필드 + 위반 규칙 상세 반환 (실행 중단)
  → 성공: API 호출
    → 성공: tb_rpa_execution 기록 (SUCCESS)
    → 실패: 재시도 3회 → incident-responder 인시던트 생성
```

---

## Phase 3: RPA 작업 등록/관리

```
# 작업 등록
POST /api/rpa/tasks
{
  "task_name": "SSL 만료 30일 전 SR 자동 생성",
  "task_type": "SR_CREATE",
  "schedule": "0 9 * * *",           # cron: 매일 09:00
  "payload_template": {
    "sr_type": "INQUIRY",
    "priority": "HIGH",
    "title": "SSL 인증서 만료 예정 점검",
    "description": "{{server_name}} SSL 만료일 {{ssl_expire_date}}"
  },
  "is_active": true
}

# 목록 조회
GET /api/rpa/tasks?page=1&size=20&is_active=true

# 실행 이력
GET /api/rpa/executions?task_id={id}&status=FAILED
```

---

## Phase 4: 결과 보고

실행 완료 후 요약:
- 실행된 RPA 작업 목록
- 성공/실패 건수
- 실패 원인 (validation 오류 or API 오류)
- 생성된 SR/인시던트 ID 목록

---

## 주요 API 엔드포인트

| Method | Path | 설명 |
|--------|------|------|
| POST | /api/rpa/validations/learn | Validation 학습 트리거 |
| GET | /api/rpa/validations | 학습된 규칙 목록 |
| POST | /api/rpa/tasks | RPA 작업 등록 |
| GET | /api/rpa/tasks | 작업 목록 |
| PUT | /api/rpa/tasks/{id} | 작업 수정 |
| DELETE | /api/rpa/tasks/{id} | 작업 삭제 |
| POST | /api/rpa/tasks/{id}/run | 즉시 실행 |
| POST | /api/rpa/execute | 단발성 즉시 실행 |
| GET | /api/rpa/executions | 실행 이력 |
| GET | /api/rpa/executions/{id} | 실행 상세 |

---

## 테스트 시나리오

**정상 흐름:**
1. `POST /api/rpa/validations/learn` → 전체 학습
2. `POST /api/rpa/execute` with `dry_run: true` → validation 통과 확인
3. `POST /api/rpa/execute` with `dry_run: false` → 실제 SR 생성
4. `GET /api/rpa/executions` → 실행 이력 확인

**에러 흐름:**
1. 필수 필드 누락 → `validation 오류: title 필드 필수` 반환
2. enum 오류 → `sr_type 허용값: DEPLOY|RESTART|LOG|INQUIRY|OTHER` 반환
3. API 5xx → 3회 재시도 → incident-responder 인시던트 생성
