ID: key_26_22_05_25_P4_4_2 Created date: 5월 25 2026 월요일
연관 문서
개요
Rule 기반 워크플로우 자동화 엔진을 구현한다.
”이슈가 Done이 되면 → 보고자에게 알림 발송” 형태의 규칙을 지원한다.
- 예상 소요: 5~7일
- 선행 조건: Phase 3 완료, 메시지 큐 결정 (Redis BullMQ 또는 RabbitMQ)
Claude Code 작업 수행서
작업 지시
CIRA 서버에 Rule 기반 자동화 엔진을 구현해줘.
메시지 큐: [Redis BullMQ / RabbitMQ 중 결정값]
[수행 작업]
1. DB 마이그레이션
V210__create_automation.sql:
automation_rules: id(UUID), project_id(FK), name(VARCHAR 200),
trigger_type(VARCHAR 100), trigger_config(JSONB),
condition_config(JSONB), action_type(VARCHAR 100),
action_config(JSONB), is_active(BOOLEAN), sort_order(INT)
automation_executions: id(UUID), rule_id(FK), triggered_by_issue_id(FK),
status(VARCHAR 50 — SUCCESS/FAILED/SKIPPED),
executed_at(TIMESTAMPTZ), error_message(TEXT)
2. 트리거 타입 정의
ISSUE_CREATED, ISSUE_STATUS_CHANGED, ISSUE_ASSIGNED,
ISSUE_PRIORITY_CHANGED, COMMENT_ADDED, SPRINT_STARTED, SPRINT_COMPLETED
3. 액션 타입 정의
SEND_NOTIFICATION, CHANGE_STATUS, ASSIGN_USER, ADD_LABEL,
CREATE_SUBTASK, SEND_WEBHOOK (외부 URL 호출)
4. 자동화 규칙 API
GET /api/v1/projects/{projectId}/automation-rules
POST /api/v1/projects/{projectId}/automation-rules
PUT /api/v1/automation-rules/{ruleId}
DELETE /api/v1/automation-rules/{ruleId}
GET /api/v1/automation-rules/{ruleId}/executions — 실행 이력
5. 이벤트 발행 구조
도메인 서비스에서 이벤트 발행:
- Spring ApplicationEvent 또는 메시지 큐 발행
- IssueStatusChangedEvent { issueId, projectId, fromStatus, toStatus, changedBy }
AutomationEventListener:
- 이벤트 수신 → 해당 프로젝트의 active 규칙 조회
- 트리거 타입 매칭 → 조건 평가 → 액션 실행
6. 조건 평가 엔진
ConditionEvaluator.evaluate(rule.conditionConfig, eventContext):
conditionConfig 예시:
{ "operator": "AND", "conditions": [
{ "field": "priority", "op": "EQUALS", "value": "HIGH" },
{ "field": "assignee", "op": "IS_EMPTY" }
]}
7. 무한 루프 방지
- automation_executions에 (rule_id, issue_id) 최근 5분 내 실행 이력 확인
- 이미 실행된 경우 SKIPPED 처리
- 자동화로 변경된 이벤트에서 다시 자동화 트리거 방지 (실행 깊이 제한: 3단계)
8. 자동화 규칙 UI (설정 페이지 내)
Visual Rule Builder:
- WHEN (트리거 선택) → IF (조건 설정) → THEN (액션 선택)
- 각 단계 드롭다운 + 조건 값 입력
- 규칙 활성화/비활성화 토글
- 실행 이력 테이블
완료 기준
| 항목 | 기준 |
|---|---|
| 규칙 CRUD | API 전체 동작 |
| 이벤트 트리거 | 이슈 상태 변경 시 규칙 실행 |
| 액션 실행 | 알림 발송 / 상태 변경 동작 |
| 무한 루프 방지 | 동일 규칙 연속 실행 차단 |
| 실행 이력 | SUCCESS/FAILED 기록 |