메인 콘텐츠로 건너뛰기

정책 규칙이란?

**정책 규칙(Policy Rule)**은 조건 → 액션 쌍입니다. 입력 팩트가 조건을 만족하면 규칙의 액션이 실행됩니다. 규칙은 우선순위 순서로 평가됩니다 (0 = 최우선).

조건 구문

조건은 SINGLEGROUP 두 가지 노드 타입의 트리 구조를 사용합니다.
LexQ는 type: "SINGLE" / type: "GROUP", field, operator, value, valueType 필드를 사용하는 자체 조건 DTO 형식을 사용합니다. 콘솔의 내부 폼 표현과 혼동하지 마세요. API나 CLI를 호출할 때는 항상 엔진 형식을 사용하세요.

SINGLE 조건

{
  "type": "SINGLE",
  "field": "payment_amount",
  "operator": "GREATER_THAN_OR_EQUAL",
  "value": 100000,
  "valueType": "NUMBER"
}

GROUP 조건

{
  "type": "GROUP",
  "operator": "AND",
  "children": [
    { "type": "SINGLE", "field": "customer_tier", "operator": "EQUALS", "value": "VIP", "valueType": "STRING" },
    { "type": "SINGLE", "field": "payment_amount", "operator": "GREATER_THAN", "value": 50000, "valueType": "NUMBER" }
  ]
}

연산자

연산자호환 타입설명
EQUALS전체정확한 일치
NOT_EQUALS전체부정
GREATER_THANNUMBER>
GREATER_THAN_OR_EQUALNUMBER>=
LESS_THANNUMBER<
LESS_THAN_OR_EQUALNUMBER<=
CONTAINSSTRING부분 문자열 일치
INSTRING, NUMBER목록에 포함
NOT_INSTRING, NUMBER목록에 미포함
위 예시의 customer_tier, region은 커스텀 팩트로 사용 전에 팩트 정의에서 등록해야 합니다. payment_amount는 시스템 팩트로 기본 제공됩니다.

액션 타입

각 규칙은 여러 액션을 가질 수 있습니다. 조건 매칭 시 액션이 순차적으로 실행됩니다.
타입설명핵심 파라미터
DISCOUNT기준 금액에 할인 적용refVar, method, rate 또는 value
POINT기준 금액에 따라 포인트 적립refVar, method, rate 또는 value, integrationId
COUPON_ISSUE쿠폰 발행couponId, integrationId
BLOCK거래 차단reason
NOTIFICATION알림 발송channel, templateId, integrationId
WEBHOOK외부 URL 호출url, method
SET_FACT출력 변수에 고정 값 설정key, value
ADD_TAG결과에 태그 추가tag

DISCOUNT — 비율 할인

payment_amount 기준 10% 할인:
{
  "type": "DISCOUNT",
  "parameters": { "method": "PERCENTAGE", "rate": 10, "refVar": "payment_amount" }
}

SET_FACT — 출력 변수

SET_FACT리터럴 값 설정자이며, 수식 평가기가 아닙니다. 출력 변수의 키에 고정 값을 할당합니다. 산술 표현식이나 다른 팩트 참조를 지원하지 않습니다.
{
  "type": "SET_FACT",
  "parameters": { "key": "risk_level", "value": "HIGH" }
}

Mutex — 규칙 간 충돌 해결

필드설명
mutexGroup관련 규칙을 그룹화하는 키 (예: "best-discount")
mutexModeALLOW_ALL (기본값) 또는 EXCLUSIVE
mutexStrategyFIRST_MATCH, HIGHEST_PRIORITY, 또는 MAX_BENEFIT
EXCLUSIVE이면 승리한 규칙만 실행됩니다. 나머지는 의사결정 트레이스BLOCKED_BY_MUTEX로 기록됩니다.

전체 규칙 예시

{
  "name": "VIP 20% Discount",
  "priority": 0,
  "condition": {
    "type": "GROUP", "operator": "AND",
    "children": [
      { "type": "SINGLE", "field": "customer_tier", "operator": "EQUALS", "value": "VIP", "valueType": "STRING" },
      { "type": "SINGLE", "field": "payment_amount", "operator": "GREATER_THAN_OR_EQUAL", "value": 100000, "valueType": "NUMBER" }
    ]
  },
  "actions": [
    { "type": "DISCOUNT", "parameters": { "method": "PERCENTAGE", "rate": 20, "refVar": "payment_amount" } },
    { "type": "SET_FACT", "parameters": { "key": "discount_applied", "value": true } }
  ],
  "mutexGroup": "best-discount",
  "mutexMode": "EXCLUSIVE",
  "mutexStrategy": "HIGHEST_PRIORITY",
  "isEnabled": true
}

다음 단계

팩트 정의

규칙이 기대하는 입력 변수를 정의하세요.

드라이런

발행 전에 규칙을 테스트하세요.