guardia-itsm/.claude/skills/rpa-orchestrator/SKILL.md
DESKTOP-TKLFCPRython 79973261b0 feat(rpa): GUARDiA ITSM RPA 봇 기능 구현 + 하네스 구성
[하네스]
- agents/validation-learner.md: 소스 AST 파싱 validation 학습 에이전트
- agents/rpa-bot.md: 학습 규칙 참조 자동화 실행 에이전트
- skills/rpa-orchestrator/SKILL.md: RPA E2E 워크플로우 스킬
- skills/rpa-validation/SKILL.md: 소스 기반 validation 학습 스킬

[구현]
- core/rpa_engine.py: ValidationLearner(AST 파서) + RPAValidator + RPAExecutor
- routers/rpa.py: 11개 API 엔드포인트
  POST /api/rpa/validations/learn   — models.py AST 파싱 → 1357개 규칙 학습
  GET  /api/rpa/validations         — 학습 규칙 조회 (119 endpoints)
  POST /api/rpa/tasks               — RPA 작업 등록
  POST /api/rpa/execute             — 즉시 실행 (validation + API 호출)
  GET  /api/rpa/executions          — 실행 이력

[테스트 결과]
- validation 학습: 140개 스키마 / 1357개 규칙 / 119개 엔드포인트
- WRONG_TYPE → enum 오류 감지 정확
- 필수 필드 누락 → validation 오류 상세 반환
- 실행 이력 조회 정상

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 16:10:41 +09:00

151 lines
4.9 KiB
Markdown

---
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 인시던트 생성