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 (액션 선택)
   - 각 단계 드롭다운 + 조건 값 입력
   - 규칙 활성화/비활성화 토글
   - 실행 이력 테이블

완료 기준

항목기준
규칙 CRUDAPI 전체 동작
이벤트 트리거이슈 상태 변경 시 규칙 실행
액션 실행알림 발송 / 상태 변경 동작
무한 루프 방지동일 규칙 연속 실행 차단
실행 이력SUCCESS/FAILED 기록