메인 콘텐츠로 건너뛰기

도메인 템플릿이란?

도메인 템플릿(Domain Template)은 결제 가격이나 송금 승인처럼 자주 쓰는 결정 하나에 맞춘 fact 정의와 샘플 규칙의 묶음입니다. 템플릿을 적용하면 다음이 생성됩니다:
  • 테넌트에 등록되는 템플릿의 fact. 제약이 있는 입력 fact에는 허용 값이나 범위가 함께 붙습니다.
  • 샘플 규칙이 초안 버전에 담긴 새 정책 그룹. 고쳐서 게시하면 됩니다.
  • 그룹 목록의 항목: 직접 만든 것과 동일합니다.
아래 템플릿마다 샘플 요청과 그 응답도 실었습니다. 숫자는 그 요청을 템플릿에 실제로 돌려서 나온 값입니다.
템플릿은 선택 사항입니다. 콘솔에서 적용을 클릭하거나 apply 엔드포인트를 호출할 때만 실행됩니다. 기존 fact와 정책 그룹은 절대 수정되지 않습니다.

사용 가능한 템플릿

이커머스: 주문 가격

주문당 할인 하나(회원 등급 또는 첫 주문 코드), 상한을 둔 AI 제안 추가 할인, 무료 배송, 회원 5% 적립.

핀테크: 송금 승인

위험 점수 구간, USD 10,000 초과 송금 검토, 신규 계정과 미인증 계정의 한도, 송금 빈도, AI 에이전트가 보낸 송금의 한도.

SaaS: 요금제 한도

요금제별 좌석 수와 사용량 한도, 기능 제한, 체험 사용량 상한, 초과 사용 요금, AI 상담 에이전트가 제안한 크레딧의 상한.

보험: 청구 분류

개인 자동차보험 대상. 걸린 신호가 없는 소액 청구는 빠른 처리로. 도난, 보험 개시 후 30일 안의 손해, 부상, 고액이거나 신뢰도 낮은 AI 견적은 손해사정사가 검토. 사기 신호는 특별조사로.

AI 에이전트: 액션 승인

AI 에이전트가 제안한 액션에 거는 예시 규칙. 허용 목록 밖의 액션 거부, 개인정보 확인, 건당 한도와 하루 한도, 사람이 승인하는 환불과 구매, 신뢰도 기준.

이커머스: 주문 가격

주문당 할인 하나(회원 등급 또는 첫 주문 코드), 상한을 둔 AI 제안 추가 할인, 무료 배송, 회원 5% 적립. 적용하면 정책 그룹 하나(이커머스 주문 가격 정책)와 초안 버전 하나가 생깁니다.

fact

입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 fact
NUMBER
필수
할인, 세금, 배송비를 반영하기 전 상품 소계(USD). 기프트 카드 제외. 주문 할인이 이 값에 적용됨.허용 값: ≥ 0
STRING
필수
고객의 회원 등급. NONE(비회원), BRONZE, SILVER, GOLD, PLATINUM.허용 값: NONE, BRONZE, SILVER, GOLD, PLATINUM
STRING
필수
결제 때 입력한 프로모션 코드입니다. 대문자로 바꾸고 공백을 뺀 뒤 보내세요. 규칙은 코드를 글자 그대로 비교합니다. 없으면 빈 문자열을 보내세요.
BOOLEAN
필수
고객의 첫 주문인지 여부입니다. 이전 주문은 계정, 이메일, 결제 카드, 배송지 넷으로 각각 찾아보세요.
NUMBER
필수
고객이 지금까지 결제한 금액에서 환불과 취소를 뺀 합계(USD)입니다. 비회원이면 0을 보내세요. null이면 누적 결제액 USD 1,000 미만 고객의 AI 할인 상한 10%가 걸리지 않습니다.허용 값: ≥ 0
LIST_STRING
필수
장바구니 상품의 카테고리 태그입니다(예: apparel, electronics, gift_card). 규칙은 태그를 글자 그대로 비교하니 electronics는 소문자로 보내세요. Electronics처럼 대소문자가 다르면 전자제품의 AI 할인 상한 5%가 걸리지 않습니다.
NUMBER
필수
0을 보내세요. 이번 주문으로 쌓이는 적립금(USD)은 적립 규칙이 이 값에 채웁니다. 고객 잔액에는 반품 기간이 끝난 뒤에 더하세요.허용 값: ≥ 0
NUMBER
필수
쇼핑 도우미 AI가 제안한 추가 할인율(0~100)입니다. 없으면 0을 보내세요. 규칙이 이 값을 낮출 수 있으니 결과는 응답의 mutatedFacts에서 읽고, 그 키가 없으면 보낸 값을 쓰세요. LexQ가 가격에 적용하지는 않습니다. 주문 할인을 뺀 소계에서 이 비율만큼 직접 깎으세요. 두 할인이 차례로 붙어 최대 할인은 27.75%입니다(PLATINUM 15%를 뺀 금액에서 다시 AI 15%). 기프트 카드는 깎지 않습니다.허용 값: 0 ~ 100
출력 fact
BOOLEAN
이 주문의 무료 배송 여부. 값은 무료 배송 규칙이 채움.
BOOLEAN
AI가 30% 넘게 제안하면 켜집니다. 대화를 사람에게 넘기세요.

규칙

최상위 등급의 상시 회원가. 다른 주문 할인과 중복 적용되지 않음.
  • 조건: loyaltyTier = "PLATINUM"
  • 액션: purchaseSubtotalUsd -= 15% (소수 2자리 HALF_UP 반올림)
  • 상호 배타 그룹: ecom_order_discount
USD 50 이상 첫 주문 전용 환영 코드. 재구매에는 적용 안 됨.
  • 조건: appliedPromoCode = "WELCOME15" AND isFirstPurchase = true AND purchaseSubtotalUsd ≥ 50
  • 액션: purchaseSubtotalUsd -= 15% (소수 2자리 HALF_UP 반올림)
  • 상호 배타 그룹: ecom_order_discount
GOLD 등급의 상시 회원가.
  • 조건: loyaltyTier = "GOLD"
  • 액션: purchaseSubtotalUsd -= 10% (소수 2자리 HALF_UP 반올림)
  • 상호 배타 그룹: ecom_order_discount
SILVER 등급의 상시 회원가.
  • 조건: loyaltyTier = "SILVER"
  • 액션: purchaseSubtotalUsd -= 5% (소수 2자리 HALF_UP 반올림)
  • 상호 배타 그룹: ecom_order_discount
회원은 늘 무료. 비회원은 상품 소계 USD 35 이상.
  • 조건: loyaltyTier in ["BRONZE", "SILVER", "GOLD", "PLATINUM"] OR purchaseSubtotalUsd ≥ 35
  • 액션: freeShipping = true
주문 할인 뒤 소계의 5% 적립. AI 제안 할인을 적용하기 전 금액이 기준.
  • 조건: loyaltyTier in ["BRONZE", "SILVER", "GOLD", "PLATINUM"]
  • 액션: loyaltyCreditUsd += 5% × purchaseSubtotalUsd (소수 2자리 HALF_UP 반올림)
전자제품은 이익률이 낮아, 전자제품이 든 장바구니에는 AI 제안 할인을 5%까지만 줌.
  • 조건: aiSuggestedDiscountPercent > 5 AND cartCategoryTags has any of ["electronics"]
  • 액션: aiSuggestedDiscountPercent = 5
  • 상호 배타 그룹: ecom_ai_offer_cap
누적 결제액이 USD 1,000 미만인 고객은 최대 10%.
  • 조건: aiSuggestedDiscountPercent > 10 AND customerLtvUsd < 1000
  • 액션: aiSuggestedDiscountPercent = 10
  • 상호 배타 그룹: ecom_ai_offer_cap
주문 할인에 더해 주는 AI 제안 할인은 15%까지.
  • 조건: aiSuggestedDiscountPercent > 15
  • 액션: aiSuggestedDiscountPercent = 15
  • 상호 배타 그룹: ecom_ai_offer_cap
30% 넘는 제안은 사람이 확인. 상한은 그대로 적용.
  • 조건: aiSuggestedDiscountPercent > 30
  • 액션: aiOfferReviewRequired = true

샘플

WELCOME15를 쓴 비회원 첫 주문

WELCOME15가 소계 USD 64에서 15%를 뺍니다. 무료 배송 규칙은 할인된 금액(USD 54.40)이 아니라 요청에 담긴 금액(USD 64)을 봅니다. 코드의 최소액 USD 50 덕분에 둘 다 USD 35보다 큽니다. 발동한 규칙: WELCOME15 첫 주문 15% 할인 (USD 50 이상), 무료 배송: 회원 또는 USD 35 이상

AI가 25% 할인을 제안한 PLATINUM 회원

액션은 우선순위 순서대로 돌고, 뒤 액션은 앞 액션이 바꾼 값으로 계산합니다. 적립은 할인된 금액(USD 204.00)의 5%입니다. AI 제안은 최대치 15%로 잘립니다. 발동한 규칙: PLATINUM 회원 15% 할인, 무료 배송: 회원 또는 USD 35 이상, 회원 5% 적립, AI 제안 최대치 15%

AI가 60% 할인을 제안한 GOLD 회원의 전자제품 재구매

가장 엄격한 상한(전자제품 5%)이 이기고, 나머지 상한 둘은 의사결정 트레이스에 경쟁 탈락으로 남습니다. 조건은 요청 값만 읽어서, 검토 표시 규칙은 잘린 5%가 아니라 AI가 처음 낸 60%를 봅니다. 발동한 규칙: GOLD 회원 10% 할인, 무료 배송: 회원 또는 USD 35 이상, 회원 5% 적립, AI 제안 상한: 전자제품은 5%, 30% 넘는 AI 제안 검토 표시 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): AI 제안 상한: 누적 결제액 USD 1,000 미만은 10%, AI 제안 최대치 15%

핀테크: 송금 승인

위험 점수 구간, USD 10,000 초과 송금 검토, 신규 계정과 미인증 계정의 한도, 송금 빈도, AI 에이전트가 보낸 송금의 한도. 적용하면 정책 그룹 하나(핀테크 송금 위험과 한도)와 초안 버전 하나가 생깁니다.

fact

입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 fact
NUMBER
필수
이번 송금액(USD).허용 값: ≥ 0
NUMBER
필수
이번 송금을 포함한 최근 7일 송금 합계(USD). 호출하는 쪽이 계산함.허용 값: ≥ 0
NUMBER
필수
계정 개설 후 지난 일수.허용 값: ≥ 0
BOOLEAN
필수
계정 소유자의 본인 인증 완료 여부.
NUMBER
필수
사기 탐지 모델 점수입니다. 0(가장 낮음)99(가장 높음)의 정수로 보내세요. 01 확률이면 먼저 100을 곱하세요(0.82는 82). 모델이 실패했거나 점수를 내지 않았으면 null로 보내세요. 그러면 송금은 승인되지도, 추가 인증 뒤에 나가지도 않습니다. 거절이나 검토 규칙이 안 걸리면 REVIEW이고 blockReason은 INPUT_MISSING입니다.허용 값: 0 ~ 99
NUMBER
필수
이번 송금을 포함한 최근 24시간 송금 건수. 호출하는 쪽이 집계함.허용 값: ≥ 1
BOOLEAN
필수
이 수취인에게 처음 보내는 송금인지 여부.
STRING
필수
송금을 보낸 주체로, USER, AI_AGENT, SCHEDULED 중 하나입니다. 요청을 보낸 자격 증명(예: 에이전트의 API 키)을 보고 정하세요. AI 에이전트가 예약한 송금은 실행될 때도 AI_AGENT입니다.허용 값: USER, AI_AGENT, SCHEDULED
출력 fact
STRING
규칙이 내리는 결정으로, APPROVE, STEP_UP, REVIEW, DECLINE 중 하나입니다. 송금은 APPROVE일 때만 바로 보내세요. STEP_UP이면 계정 소유자가 추가 인증을 마친 뒤 보내고, REVIEW면 사람이 승인할 때까지 보류하세요. APPROVE가 아니면 isBlocked가 true이고 blockReason에 이유가 담깁니다. APPROVE와 STEP_UP은 입력이 다 있어야 나옵니다. 입력이 null이고 거절이나 검토 규칙이 안 걸리면 REVIEW이고 blockReason은 INPUT_MISSING입니다.

규칙

가장 위험한 구간의 송금 거절.
  • 조건: paymentRiskScore ≥ 75
  • 액션: transferDecision = "DECLINE", BLOCK RISK_SCORE_HIGHEST
  • 상호 배타 그룹: fin_transfer_decision
미인증 계정은 최근 7일 합계 USD 300까지 송금 가능.
  • 조건: isIdentityVerified = false AND weeklyOutflowUsd > 300
  • 액션: transferDecision = "DECLINE", BLOCK UNVERIFIED_WEEKLY_LIMIT
  • 상호 배타 그룹: fin_transfer_decision
AI 에이전트가 보낸 USD 1,000 초과 송금은 거절.
  • 조건: initiatorType = "AI_AGENT" AND transferAmountUsd > 1000
  • 액션: transferDecision = "DECLINE", BLOCK AI_TRANSFER_OVER_LIMIT
  • 상호 배타 그룹: fin_transfer_decision
위험이 높은 송금은 사람이 검토할 때까지 보류.
  • 조건: paymentRiskScore ≥ 65
  • 액션: transferDecision = "REVIEW", BLOCK RISK_SCORE_ELEVATED
  • 상호 배타 그룹: fin_transfer_decision
USD 10,000 넘는 송금은 위험 점수가 낮아도 사람이 검토할 때까지 보류.
  • 조건: transferAmountUsd > 10000
  • 액션: transferDecision = "REVIEW", BLOCK HIGH_VALUE_TRANSFER
  • 상호 배타 그룹: fin_transfer_decision
신규 계정에서 한 번에 USD 500 넘게 보내거나 최근 7일 합계가 USD 1,000 넘으면 검토할 때까지 보류. 큰 금액을 나눠 보내도 7일 합계에 걸림.
  • 조건: accountAgeDays < 30 AND (transferAmountUsd > 500 OR weeklyOutflowUsd > 1000)
  • 액션: transferDecision = "REVIEW", BLOCK NEW_ACCOUNT_OUTFLOW
  • 상호 배타 그룹: fin_transfer_decision
짧은 시간의 연속 송금은 계정 탈취 신호일 수 있음.
  • 조건: transfersLast24hCount ≥ 10
  • 액션: transferDecision = "REVIEW", BLOCK VELOCITY_24H
  • 상호 배타 그룹: fin_transfer_decision
AI 에이전트가 보낸 송금이 USD 100 초과이거나 새 수취인에게 가면 계정 소유자가 확인. 입력이 다 있을 때만 걸림.
  • 조건: initiatorType = "AI_AGENT" AND (transferAmountUsd > 100 OR isNewPayee = true) AND (transferAmountUsd ≥ 0 AND weeklyOutflowUsd ≥ 0 AND accountAgeDays ≥ 0 AND (isIdentityVerified = true OR isIdentityVerified = false) AND paymentRiskScore ≥ 0 AND transfersLast24hCount ≥ 1 AND (isNewPayee = true OR isNewPayee = false) AND initiatorType in ["USER", "AI_AGENT", "SCHEDULED"])
  • 액션: transferDecision = "STEP_UP", BLOCK AI_TRANSFER_CONFIRMATION
  • 상호 배타 그룹: fin_transfer_decision
새 수취인에게 처음 보내는 USD 200 초과 송금은 추가 인증. 입력이 다 있을 때만 걸림.
  • 조건: isNewPayee = true AND transferAmountUsd > 200 AND (transferAmountUsd ≥ 0 AND weeklyOutflowUsd ≥ 0 AND accountAgeDays ≥ 0 AND (isIdentityVerified = true OR isIdentityVerified = false) AND paymentRiskScore ≥ 0 AND transfersLast24hCount ≥ 1 AND (isNewPayee = true OR isNewPayee = false) AND initiatorType in ["USER", "AI_AGENT", "SCHEDULED"])
  • 액션: transferDecision = "STEP_UP", BLOCK NEW_PAYEE_STEP_UP
  • 상호 배타 그룹: fin_transfer_decision
입력이 다 있고 위 규칙이 하나도 안 걸렸을 때 승인을 명시적으로 기록.
  • 조건: transferAmountUsd ≥ 0 AND weeklyOutflowUsd ≥ 0 AND accountAgeDays ≥ 0 AND (isIdentityVerified = true OR isIdentityVerified = false) AND paymentRiskScore ≥ 0 AND transfersLast24hCount ≥ 1 AND (isNewPayee = true OR isNewPayee = false) AND initiatorType in ["USER", "AI_AGENT", "SCHEDULED"]
  • 액션: transferDecision = "APPROVE"
  • 상호 배타 그룹: fin_transfer_decision
위 규칙이 결정하지 않은 송금을 보류. 추가 인증과 승인은 입력이 다 있어야 걸리므로, 입력이 null인 송금은 거절이나 검토 규칙이 안 걸리면 여기서 끝남. blockReason은 INPUT_MISSING.
  • 조건: 모든 입력에 매치
  • 액션: transferDecision = "REVIEW", BLOCK INPUT_MISSING
  • 상호 배타 그룹: fin_transfer_decision

샘플

평소 송금

걸린 위험 규칙이 없고 입력이 다 있어 기본 승인 규칙(default_approve)이 이깁니다. 승인도 규칙 이름으로 의사결정 트레이스에 남습니다. 발동한 규칙: 승인: 입력이 다 있고 걸린 위험 규칙 없음 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 검토: 기본 보류

위험 점수 모델이 점수를 못 낸 송금

위험 점수 모델이 실패해 paymentRiskScore가 null입니다. null에는 어떤 조건도 맞지 않고 기본 승인 규칙(default_approve)은 입력을 다 요구하므로, 기본 보류 규칙(default_review)이 이겨 REVIEW이고 blockReason은 INPUT_MISSING입니다. 사람이 검토할 때까지 송금을 보류하세요. 발동한 규칙: 검토: 기본 보류

AI 에이전트가 새 수취인에게 USD 85 송금

금액이 작아도 AI 에이전트가 새 수취인에게 보내면 계정 소유자가 확인합니다. 응답의 isBlocked가 true이고 blockReason은 AI_TRANSFER_CONFIRMATION입니다. 계정 소유자가 확인한 뒤에만 송금하세요. 발동한 규칙: 추가 인증: AI가 보낸 USD 100 초과 또는 새 수취인 송금 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 승인: 입력이 다 있고 걸린 위험 규칙 없음, 검토: 기본 보류

신규 계정에서 AI 에이전트가 USD 1,800 송금

규칙 일곱이 걸립니다. 응답에는 DECLINE 결정 하나와 그 blockReason이 담깁니다. 함께 걸린 위험 규칙 넷, 기본 승인 규칙(default_approve), 기본 보류 규칙(default_review)은 의사결정 트레이스에 경쟁 탈락으로 남습니다. 발동한 규칙: 거절: AI가 보낸 USD 1,000 초과 송금 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 검토: 위험 점수 65 이상, 검토: 개설 30일 미만 계정, 건당 USD 500 또는 7일 USD 1,000 초과, 추가 인증: AI가 보낸 USD 100 초과 또는 새 수취인 송금, 추가 인증: 새 수취인 USD 200 초과, 승인: 입력이 다 있고 걸린 위험 규칙 없음, 검토: 기본 보류

SaaS: 요금제 한도

요금제별 좌석 수와 사용량 한도, 기능 제한, 체험 사용량 상한, 초과 사용 요금, AI 상담 에이전트가 제안한 크레딧의 상한. 적용하면 정책 그룹 하나(SaaS 요금제 한도와 크레딧)와 초안 버전 하나가 생깁니다.

fact

입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 fact
STRING
필수
구독 요금제로, FREE, TEAM, BUSINESS, ENTERPRISE 중 하나입니다. 이 템플릿은 유료 BUSINESS와 ENTERPRISE 요금제의 사용량 한도를 두지 않으니, 가격표에 맞는 한도를 더하세요. null로 보내지 마세요. null이면 FREE와 TEAM 규칙이 하나도 걸리지 않고 TEAM 초과 요금도 계산되지 않습니다. 제안된 크레딧은 그대로 나가지 않고 creditApprovalRequired가 true입니다.허용 값: FREE, TEAM, BUSINESS, ENTERPRISE
NUMBER
필수
요청한 변경을 반영한 뒤의 워크스페이스 좌석 수.허용 값: ≥ 1
NUMBER
필수
이번 요청을 포함해 현재 결제 주기에 쓴 API 호출 수. 호출하는 쪽이 집계함.허용 값: ≥ 0
STRING
필수
이번 요청에 필요한 상위 요금제 전용 기능. SSO, AUDIT_LOG, 없으면 NONE.허용 값: SSO, AUDIT_LOG, NONE
BOOLEAN
필수
유료 요금제를 무료 체험 중인지 여부입니다. null이 아니라 true나 false로 보내세요. null이면 체험 사용량 상한과 TEAM 초과 요금이 빠집니다. 제안된 크레딧은 그대로 나가지 않고 creditApprovalRequired가 true입니다.
NUMBER
필수
항상 0을 보내세요. 초과 사용 규칙이 이번 결제 주기에 지금까지 쌓인 초과 요금 전체(USD)를 이 값에 채웁니다. 가장 최근 값을 기록해 두었다가 주기 마감 때 한 번 청구하세요. 요청마다 나오는 overageChargeUsd__delta를 더하지 마세요.허용 값: ≥ 0
NUMBER
필수
AI 상담 에이전트가 주려는 서비스 크레딧(USD)입니다. 크레딧을 주지 않는 호출에서는 0을 보내세요. 크레딧 호출에서는 응답의 aiGrantedCreditUsd와 creditApprovalRequired만 읽고 isBlocked는 보지 마세요. isBlocked를 true로 만드는 것은 요금제 규칙뿐입니다. 응답의 mutatedFacts에 aiGrantedCreditUsd가 있으면 그 금액을, 없으면 보낸 금액을 주세요.허용 값: ≥ 0
출력 fact
BOOLEAN
AI가 상한보다 많이 제안했거나, FREE 요금제나 체험에서, 또는 요금제나 체험 여부를 모를 때 크레딧을 제안하면 true. 체험 중이 아닌 유료 요금제의 상한 안 크레딧이면 false. 크레딧이 0인 호출에는 없음. 응답이 주지 않은 금액은 사람이 승인.

규칙

FREE와 TEAM 요금제는 SSO와 감사 로그 사용 불가.
  • 조건: requestedFeature in ["SSO", "AUDIT_LOG"] AND planTier in ["FREE", "TEAM"]
  • 액션: BLOCK FEATURE_NOT_IN_PLAN
  • 상호 배타 그룹: saas_entitlement_block
FREE 워크스페이스는 10석까지.
  • 조건: planTier = "FREE" AND seatCount > 10
  • 액션: BLOCK SEAT_LIMIT_REACHED
  • 상호 배타 그룹: saas_entitlement_block
FREE 요금제는 월 한도를 넘는 요청을 과금하지 않고 차단.
  • 조건: planTier = "FREE" AND monthlyApiCalls > 10000
  • 액션: BLOCK USAGE_LIMIT_REACHED
  • 상호 배타 그룹: saas_entitlement_block
체험 워크스페이스는 유료 전환 전까지 FREE 요금제의 월 한도까지만 사용.
  • 조건: isTrial = true AND monthlyApiCalls > 10000
  • 액션: BLOCK TRIAL_USAGE_LIMIT
  • 상호 배타 그룹: saas_entitlement_block
기본 제공량(100,000건)의 3배를 넘는 요청을 차단해 요금이 한없이 늘어나는 것을 막음.
  • 조건: planTier = "TEAM" AND monthlyApiCalls > 300000
  • 액션: BLOCK USAGE_HARD_CAP
  • 상호 배타 그룹: saas_entitlement_block
기본 제공량 100,000건을 넘는 사용분에 1,000건당 USD 1씩 과금합니다. 계산식은 호출 수 × USD 0.001 - USD 100입니다. 빼는 금액은 100,000건에 단가를 곱한 값이고, team_overage_at_cap의 요금은 300,000건일 때 이 식으로 낸 값입니다. 300,000건은 team_usage_hard_cap과 team_overage_at_cap의 조건에도 있습니다. 단가, 100,000건, 300,000건 가운데 하나를 바꾸면 빼는 금액과 team_overage_at_cap의 요금도 다시 계산해 고치세요.
  • 조건: planTier = "TEAM" AND isTrial = false AND monthlyApiCalls > 100000 AND monthlyApiCalls ≤ 300000
  • 액션: overageChargeUsd = 0.1% × monthlyApiCalls (소수 2자리 HALF_UP 반올림), overageChargeUsd -= 100
300,000건을 넘으면 새 호출은 막히고, 이번 주기 초과 요금은 USD 200에서 멈춤.
  • 조건: planTier = "TEAM" AND isTrial = false AND monthlyApiCalls > 300000
  • 액션: overageChargeUsd = 200
FREE와 체험 워크스페이스는 깎아 줄 청구액이 없어, 제안된 크레딧은 사람이 승인.
  • 조건: (planTier = "FREE" OR isTrial = true) AND aiGrantedCreditUsd > 0
  • 액션: aiGrantedCreditUsd = 0, creditApprovalRequired = true
  • 상호 배타 그룹: saas_credit_cap
체험 중이 아닌 유료 요금제에서 AI 상담 에이전트가 제안한 크레딧은 USD 100까지만 주고, 넘는 금액은 사람이 승인. 요금제나 체험 여부를 모르면 대신 크레딧을 0으로 두고 사람이 승인.
  • 조건: (planTier in ["TEAM", "BUSINESS", "ENTERPRISE"] AND isTrial = false) AND aiGrantedCreditUsd > 100
  • 액션: aiGrantedCreditUsd = 100, creditApprovalRequired = true
  • 상호 배타 그룹: saas_credit_cap
체험 중이 아닌 유료 워크스페이스는 제안된 크레딧을 상한까지 그대로 받음. 요금제와 체험 여부가 둘 다 있어야 걸림.
  • 조건: (planTier in ["TEAM", "BUSINESS", "ENTERPRISE"] AND isTrial = false) AND aiGrantedCreditUsd > 0
  • 액션: creditApprovalRequired = false
  • 상호 배타 그룹: saas_credit_cap
위 규칙이 정하지 않은 크레딧은 0으로 두고 사람이 승인. 요금제나 체험 여부가 null이면 여기서 끝남.
  • 조건: aiGrantedCreditUsd > 0
  • 액션: aiGrantedCreditUsd = 0, creditApprovalRequired = true
  • 상호 배타 그룹: saas_credit_cap

샘플

TEAM 워크스페이스의 초과 사용

한 규칙의 두 액션이 차례로 실행됩니다. 135,000건 × USD 0.001 = USD 135.00에서 기본 제공량에 해당하는 금액(USD 100)을 빼면 USD 35.00입니다. 발동한 규칙: TEAM 초과 사용: 100,000건 초과분 1,000건당 USD 1

FREE 워크스페이스의 11번째 좌석

좌석 한도와 사용량 한도가 둘 다 걸립니다. blockReason은 좌석 한도의 것만 나가고, 사용량 한도는 의사결정 트레이스에 경쟁 탈락으로 남습니다. 발동한 규칙: 차단: FREE 요금제 10석 초과 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 차단: FREE 요금제 API 10,000건 초과

AI 상담 에이전트가 USD 250 크레딧 제안

크레딧은 USD 100까지만 나갑니다. 잘린 금액은 응답의 aiGrantedCreditUsd__delta에 -150으로 남고, 그만큼은 사람이 승인합니다. 발동한 규칙: AI 크레딧 상한: 건당 USD 100 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): AI 크레딧: 유료 요금제는 상한까지 그대로, AI 크레딧: 기본 보류

요금제를 모르는 워크스페이스의 USD 80 크레딧 제안

planTier가 null이라 요금제 규칙이 걸리지 않고, 크레딧을 그대로 주는 규칙(paid_plan_credit)도 걸리지 않습니다. 기본 보류 규칙(default_credit_hold)이 크레딧을 0으로 두고 creditApprovalRequired를 켜서 사람이 정합니다. 요금제 한도도 null에는 걸리지 않으니 planTier는 null로 보내지 마세요. 발동한 규칙: AI 크레딧: 기본 보류

보험: 청구 분류

개인 자동차보험 대상. 걸린 신호가 없는 소액 청구는 빠른 처리로. 도난, 보험 개시 후 30일 안의 손해, 부상, 고액이거나 신뢰도 낮은 AI 견적은 손해사정사가 검토. 사기 신호는 특별조사로. 적용하면 정책 그룹 하나(보험 청구 분류)와 초안 버전 하나가 생깁니다.

fact

입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 fact
STRING
필수
손해 유형. GLASS, COLLISION, COMPREHENSIVE, THEFT.허용 값: GLASS, COLLISION, COMPREHENSIVE, THEFT
NUMBER
필수
AI 손해 견적 모델이 제안한 지급액(USD). 자기부담금을 뺀 금액.허용 값: ≥ 0
NUMBER
필수
모델이 매긴 견적 신뢰도(0~1)입니다. 모델이 실패했거나 신뢰도를 내지 않았으면 null로 보내세요. 그러면 청구는 빠른 처리로 가지 않습니다. 다른 규칙이 안 걸리면 손해사정사에게 가고 blockReason은 INPUT_MISSING입니다.허용 값: 0 ~ 1
NUMBER
필수
보험 개시일부터 사고일까지의 일수.허용 값: ≥ 0
NUMBER
필수
이 피보험자의 최근 3년 청구 건수. 자사 기록과 업계 공동 청구 이력 DB를 합쳐 집계함. 이번 건은 뺌.허용 값: ≥ 0
BOOLEAN
필수
부상자 신고 여부.
NUMBER
필수
사기 탐지 모델 점수입니다. 0(가장 낮음)100(가장 높음)의 정수로 보내세요. 01 확률이면 먼저 100을 곱하세요(0.86은 86). 모델이 실패했거나 점수를 내지 않았으면 null로 보내세요. 그러면 청구는 빠른 처리로 가지 않습니다. 다른 규칙이 안 걸리면 손해사정사에게 가고 blockReason은 INPUT_MISSING입니다.허용 값: 0 ~ 100
출력 fact
STRING
규칙이 정하는 처리 경로로, FAST_TRACK, ADJUSTER_REVIEW, SPECIAL_INVESTIGATION 중 하나입니다. 자동 지급은 FAST_TRACK일 때만 하세요. FAST_TRACK이 아니면 isBlocked가 true이고 blockReason에 이유가 담깁니다. SPECIAL_INVESTIGATION이고 hasInjury가 true면 손해사정사도 함께 배정하세요. FAST_TRACK은 입력이 다 있어야 나옵니다. 입력이 null이고 다른 규칙이 안 걸리면 ADJUSTER_REVIEW이고 blockReason은 INPUT_MISSING입니다.

규칙

사기 점수가 높은 청구는 특별조사팀으로.
  • 조건: claimFraudScore ≥ 80
  • 액션: claimRoute = "SPECIAL_INVESTIGATION", BLOCK SIU_REFERRAL_FRAUD_SCORE
  • 상호 배타 그룹: ins_claim_route
개시 직후 도난은 대표적인 의심 신호.
  • 조건: claimType = "THEFT" AND policyAgeDays < 30
  • 액션: claimRoute = "SPECIAL_INVESTIGATION", BLOCK SIU_REFERRAL_EARLY_THEFT
  • 상호 배타 그룹: ins_claim_route
부상 신고가 있는 청구는 손해사정사가 검토.
  • 조건: hasInjury = true
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK INJURY_REPORTED
  • 상호 배타 그룹: ins_claim_route
도난 청구는 빠른 처리로 보내지 않음. 사진으로 견적할 손상이 없고, 경찰 신고와 차량 회수를 확인해야 함.
  • 조건: claimType = "THEFT"
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK THEFT_CLAIM
  • 상호 배타 그룹: ins_claim_route
보험 개시 직후의 손해는 청구 유형과 상관없이 손해사정사가 검토.
  • 조건: policyAgeDays < 30
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK EARLY_LOSS
  • 상호 배타 그룹: ins_claim_route
AI가 낸 지급액이 USD 1,000 넘는 유리 청구는 손해사정사가 검토.
  • 조건: claimType = "GLASS" AND aiEstimatedPayoutUsd > 1000
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK GLASS_PAYOUT_OVER_LIMIT
  • 상호 배타 그룹: ins_claim_route
빠른 처리는 USD 2,500 이하 AI 견적만 지급.
  • 조건: aiEstimatedPayoutUsd > 2500
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK PAYOUT_OVER_FAST_TRACK_LIMIT
  • 상호 배타 그룹: ins_claim_route
신뢰도 낮은 견적은 지급 전에 검토.
  • 조건: aiEstimateConfidence < 0.8
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK LOW_ESTIMATE_CONFIDENCE
  • 상호 배타 그룹: ins_claim_route
청구가 잦은 피보험자는 손해사정사가 검토.
  • 조건: priorClaimsCount ≥ 2
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK FREQUENT_CLAIMANT
  • 상호 배타 그룹: ins_claim_route
FAST_TRACK으로 보내 AI 견적대로 사람 검토 없이 지급하게 함. 입력이 다 있을 때만 걸림.
  • 조건: claimType in ["GLASS", "COLLISION", "COMPREHENSIVE", "THEFT"] AND aiEstimatedPayoutUsd ≥ 0 AND aiEstimateConfidence ≥ 0 AND policyAgeDays ≥ 0 AND priorClaimsCount ≥ 0 AND (hasInjury = true OR hasInjury = false) AND claimFraudScore ≥ 0
  • 액션: claimRoute = "FAST_TRACK"
  • 상호 배타 그룹: ins_claim_route
위 규칙이 경로를 정하지 않은 청구를 손해사정사에게 보냄. 빠른 처리는 입력이 다 있어야 걸리므로, 입력이 null인 청구가 여기서 끝남. blockReason은 INPUT_MISSING.
  • 조건: 모든 입력에 매치
  • 액션: claimRoute = "ADJUSTER_REVIEW", BLOCK INPUT_MISSING
  • 상호 배타 그룹: ins_claim_route

샘플

소액 앞유리 청구

걸린 신호가 없고 입력이 다 있어 빠른 처리로 갑니다. 발동한 규칙: 빠른 처리: 입력이 다 있고 걸린 신호 없음 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 손해사정: 기본 보류

견적 신뢰도가 없는 앞유리 청구

견적 모델이 신뢰도를 내지 않아 aiEstimateConfidence가 null입니다. 신뢰도 규칙은 null에 걸리지 않고 빠른 처리 규칙(default_fast_track)은 입력을 다 요구하므로, 기본 보류 규칙(default_adjuster)이 이겨 ADJUSTER_REVIEW이고 blockReason은 INPUT_MISSING입니다. 손해사정사가 검토하기 전에는 지급하지 마세요. 발동한 규칙: 손해사정: 기본 보류

AI 견적 USD 6,800의 충돌 사고

신뢰도는 높지만 지급액이 빠른 처리 상한(USD 2,500)을 넘어 손해사정사가 검토합니다. 응답의 isBlocked가 true이니, 검토가 끝나기 전에는 지급하지 마세요. 발동한 규칙: 손해사정: AI 지급액 USD 2,500 초과 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 빠른 처리: 입력이 다 있고 걸린 신호 없음, 손해사정: 기본 보류

개시 12일 만의 도난, 사기 점수 86

특별조사가 이겨 claimRoute가 SPECIAL_INVESTIGATION이고 isBlocked가 true입니다. 같이 걸린 다섯 신호(개시 직후 도난, 도난, 개시 직후 손해, 지급액, 신뢰도)는 조사관이 보도록 의사결정 트레이스에 남습니다. 발동한 규칙: 특별조사: 사기 점수 80 이상 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 특별조사: 보험 개시 후 30일 안의 도난, 손해사정: 도난 청구, 손해사정: 보험 개시 후 30일 안의 손해, 손해사정: AI 지급액 USD 2,500 초과, 손해사정: AI 신뢰도 0.8 미만, 빠른 처리: 입력이 다 있고 걸린 신호 없음, 손해사정: 기본 보류

AI 에이전트: 액션 승인

AI 에이전트가 제안한 액션에 거는 예시 규칙. 허용 목록 밖의 액션 거부, 개인정보 확인, 건당 한도와 하루 한도, 사람이 승인하는 환불과 구매, 신뢰도 기준. 적용하면 정책 그룹 하나(AI 에이전트 액션 승인)와 초안 버전 하나가 생깁니다.

fact

입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 fact
STRING
필수
에이전트가 실행하려는 액션입니다. 예: ISSUE_REFUND, APPLY_CREDIT, PURCHASE, SEND_MESSAGE, UPDATE_TICKET, DELETE_RECORD, CHANGE_PERMISSION. 런타임이 호출하려는 도구를 보고 정하세요. 에이전트가 쓴 글은 조작될 수 있으니 fact 값을 거기서 가져오지 마세요. 허용 목록에 없는 유형은 거부됩니다. 유형이 null이어도 허용되지 않고, 결정은 DENY나 NEEDS_APPROVAL입니다.
NUMBER
필수
이 액션으로 지급하거나 결제하는 금액(USD)입니다. 돈이 오가지 않으면 0을 보내세요. 값은 도구 호출의 인자에서 가져오세요. 크레딧 상한이 이 값을 낮출 수 있으니, 응답의 mutatedFacts에 actionAmountUsd가 있으면 그 금액으로, 없으면 보낸 금액으로 실행하세요.허용 값: ≥ 0
NUMBER
필수
최근 24시간 동안 에이전트가 이 고객 건으로 처리한 금액(USD)입니다. 호출하는 쪽이 이번 액션까지 더해 계산합니다. 이 템플릿에는 30일 한도나 전체 고객 합계 한도가 없습니다.허용 값: ≥ 0
NUMBER
필수
별도 검사 모델이 이 액션에 매긴 점수(0~1)입니다. 에이전트가 스스로 낸 신뢰도는 보내지 마세요. 조작된 에이전트는 높은 값을 낼 수 있습니다. 검사 모델이 실패했거나 점수를 내지 않았으면 null로 보내세요. 그러면 액션은 허용되지 않습니다. 다른 규칙이 안 걸리면 사람의 승인을 기다리고 blockReason은 INPUT_MISSING입니다.허용 값: 0 ~ 1
BOOLEAN
필수
개인정보 탐지기가 액션 내용이나 메시지에서 개인정보를 찾았는지 여부입니다. 탐지기가 실패했거나 돌지 않았으면 true를 보내세요. 그러면 제3자에게 가는 액션은 거부됩니다. null이면 개인정보 규칙이 걸리지 않아, 다른 규칙이 안 걸리면 거부 대신 사람의 승인을 기다립니다.
BOOLEAN
필수
받는 쪽이 제3자인지 여부입니다. 자사도, 정보 주체 본인도 아니면 true입니다. 도구 호출에 담긴 수신자를 보고 정하세요. 수신자를 알 수 없으면 true를 보내세요. 그러면 개인정보가 든 액션은 거부됩니다. null이면 개인정보 규칙이 걸리지 않아, 다른 규칙이 안 걸리면 거부 대신 사람의 승인을 기다립니다.
출력 fact
STRING
규칙이 내리는 결정으로, ALLOW, NEEDS_APPROVAL, DENY 중 하나입니다. 도구는 ALLOW일 때만 바로 실행하고, 금액은 actionAmountUsd 설명대로 정하세요. NEEDS_APPROVAL이면 사람의 승인을 기다리고, DENY면 에이전트를 멈추고 고객 요청을 사람에게 넘기세요. ALLOW가 아니면 isBlocked가 true이고 blockReason에 이유가 담깁니다. ALLOW는 입력이 다 있어야 나옵니다. 허용 목록 액션의 입력이 null이고 다른 규칙이 안 걸리면 NEEDS_APPROVAL이고 blockReason은 INPUT_MISSING입니다.

규칙

환불, 크레딧, 구매, 메시지, 티켓 수정만 허용. 기록 삭제, 권한이나 계정 정보 변경, 에이전트에 새로 생긴 도구 같은 다른 유형은 모두 거부.
  • 조건: agentActionType not in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"]
  • 액션: agentDecision = "DENY", BLOCK ACTION_NOT_ALLOWED_FOR_AGENT
  • 상호 배타 그룹: agent_action_decision
개인정보를 제3자에게 보내는 액션 거부.
  • 조건: containsPii = true AND isThirdPartyRecipient = true
  • 액션: agentDecision = "DENY", BLOCK PII_TO_THIRD_PARTY
  • 상호 배타 그룹: agent_action_decision
한 건에 USD 1,000 넘는 액션은 조작된 요청으로 봄.
  • 조건: actionAmountUsd > 1000
  • 액션: agentDecision = "DENY", BLOCK AMOUNT_OVER_HARD_LIMIT
  • 상호 배타 그룹: agent_action_decision
돈이 오가는 액션으로 한 고객 건의 24시간 합계가 USD 500 넘게 되면 사람이 승인. 돈이 오가지 않는 액션은 이 한도에 걸리지 않음.
  • 조건: dailyAgentAmountUsd > 500 AND actionAmountUsd > 0
  • 액션: agentDecision = "NEEDS_APPROVAL", BLOCK DAILY_AMOUNT_LIMIT
  • 상호 배타 그룹: agent_action_decision
USD 100 넘는 환불과 구매는 사람이 승인.
  • 조건: agentActionType in ["ISSUE_REFUND", "PURCHASE"] AND actionAmountUsd > 100
  • 액션: agentDecision = "NEEDS_APPROVAL", BLOCK AMOUNT_NEEDS_APPROVAL
  • 상호 배타 그룹: agent_action_decision
신뢰도가 낮은 액션은 사람이 승인할 때까지 보류.
  • 조건: checkerConfidence < 0.7
  • 액션: agentDecision = "NEEDS_APPROVAL", BLOCK LOW_CONFIDENCE
  • 상호 배타 그룹: agent_action_decision
입력이 다 있고 거부나 승인 규칙에 걸리지 않으면 USD 50 넘는 크레딧을 USD 50까지 줄여 허용.
  • 조건: agentActionType = "APPLY_CREDIT" AND actionAmountUsd > 50 AND (actionAmountUsd ≥ 0 AND dailyAgentAmountUsd ≥ 0 AND checkerConfidence ≥ 0 AND (containsPii = true OR containsPii = false) AND (isThirdPartyRecipient = true OR isThirdPartyRecipient = false))
  • 액션: actionAmountUsd = 50, agentDecision = "ALLOW"
  • 상호 배타 그룹: agent_action_decision
입력이 다 있고 위 규칙이 하나도 안 걸린 허용 목록 액션에 허용을 명시적으로 기록.
  • 조건: agentActionType in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"] AND (actionAmountUsd ≥ 0 AND dailyAgentAmountUsd ≥ 0 AND checkerConfidence ≥ 0 AND (containsPii = true OR containsPii = false) AND (isThirdPartyRecipient = true OR isThirdPartyRecipient = false))
  • 액션: agentDecision = "ALLOW"
  • 상호 배타 그룹: agent_action_decision
위 허용 규칙 둘이 받지 않은 허용 목록 액션을 사람의 승인으로 보냄. 둘 다 입력이 다 있어야 걸리므로, 입력이 null인 허용 목록 액션이 여기서 끝남. blockReason은 INPUT_MISSING.
  • 조건: agentActionType in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"]
  • 액션: agentDecision = "NEEDS_APPROVAL", BLOCK INPUT_MISSING
  • 상호 배타 그룹: agent_action_decision
위 규칙이 결정하지 않은 액션을 모두 거부. 허용 목록 유형은 위에서 모두 결정되므로, 유형이 null이거나 글자가 아닌 액션이 여기서 끝남.
  • 조건: 모든 입력에 매치
  • 액션: agentDecision = "DENY", BLOCK ACTION_NOT_ALLOWED_FOR_AGENT
  • 상호 배타 그룹: agent_action_decision

샘플

USD 45 환불

모든 한도 안이고 입력이 다 있어 허용됩니다. 발동한 규칙: 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 승인 필요: 허용 목록 액션의 기본 보류, 거부: 위에서 걸린 규칙 없음

검사 모델이 멈춘 사이의 USD 45 환불

검사 모델이 점수를 내지 않아 checkerConfidence가 null입니다. 신뢰도 규칙은 null에 걸리지 않고 허용 규칙 둘은 입력을 다 요구하므로, 기본 보류 규칙(default_approval)이 이겨 NEEDS_APPROVAL이고 blockReason은 INPUT_MISSING입니다. 사람이 승인하기 전에는 환불 도구를 실행하지 마세요. 발동한 규칙: 승인 필요: 허용 목록 액션의 기본 보류 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 거부: 위에서 걸린 규칙 없음

USD 180 환불

USD 100 넘는 환불은 사람이 승인할 때까지 보류됩니다. 응답의 isBlocked가 true이니, 승인이 나기 전에는 환불 도구를 실행하지 마세요. 발동한 규칙: 승인 필요: USD 100 넘는 환불이나 구매 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션, 승인 필요: 허용 목록 액션의 기본 보류, 거부: 위에서 걸린 규칙 없음

조작된 대화에서 에이전트가 USD 1,500 크레딧 제안

검사 모델이 0.95를 매겨도 건당 한도 규칙이 거부합니다. 같이 걸린 하루 한도, 크레딧 상한 같은 규칙은 의사결정 트레이스에 경쟁 탈락으로 남습니다. 금액은 요청한 USD 1,500 그대로입니다. 발동한 규칙: 거부: 건당 USD 1,000 초과 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 승인 필요: 고객당 24시간 USD 500 초과, 허용: USD 50 넘는 보상 크레딧은 USD 50까지 줄임, 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션, 승인 필요: 허용 목록 액션의 기본 보류, 거부: 위에서 걸린 규칙 없음

USD 80 보상 크레딧

거부나 승인 규칙이 걸리지 않아 크레딧 상한이 이깁니다. 금액은 USD 50까지 줄고 액션은 허용됩니다. 발동한 규칙: 허용: USD 50 넘는 보상 크레딧은 USD 50까지 줄임 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션, 승인 필요: 허용 목록 액션의 기본 보류, 거부: 위에서 걸린 규칙 없음

허용 목록에 없는 도구 호출

EXPORT_DATA는 허용 목록에 없어 거부되고, blockReason으로 ACTION_NOT_ALLOWED_FOR_AGENT가 나갑니다. 에이전트에 새 도구가 생겨도 두 규칙(action_not_allowlisted, default_allow)의 목록에 함께 더하기 전까지는 같은 결과입니다. default_approval의 목록에도 더하세요. 빠뜨리면 그 도구 호출의 입력이 null일 때 승인 대기 대신 거부됩니다. 발동한 규칙: 거부: 허용 목록 밖의 액션 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 거부: 위에서 걸린 규칙 없음

템플릿 적용

  1. 설정 → 도메인 템플릿으로 이동합니다.
  2. 템플릿 카드의 미리보기를 클릭하여 적용 전에 fact와 규칙을 확인합니다. 템플릿의 키가 테넌트에 다른 정의로 이미 있으면 미리보기가 그 키를 보여 줍니다. 그 fact를 삭제하거나 템플릿과 같게 고치기 전까지는 적용할 수 없습니다.
  3. 적용을 클릭하여 정책 그룹을 생성합니다.
  4. 선택적으로 사용자 정의 그룹명을 입력합니다. 비워두면 기본 이름이 생성됩니다 (이름이 이미 존재하면 날짜 접미사가 붙습니다).
적용 후 새 정책 그룹으로 이동하며, 거기서 규칙 수정, 적용 기간 설정, 게시를 할 수 있습니다.

적용 시 동작

전체 작업은 트랜잭션으로 처리됩니다. 어느 단계라도 실패하면 아무것도 생성되지 않습니다.
생성된 정책 버전은 DRAFT 상태로 시작합니다. 라이브로 전환하려면 정책 그룹 페이지 또는 배포 API에서 게시하세요.
입력 값이 허용 값 밖이면 요청이 P-052로 거절됩니다. 예를 들어 "GOLD" 대신 loyaltyTier: "Gold"를 보낸 경우입니다. 허용 값이 없으면 "GOLD"를 보는 규칙이 조용히 매칭되지 않습니다. 허용 값은 fact 정의에서 넓히거나 지울 수 있습니다.

적용 후 커스터마이징

템플릿은 시작점입니다. 적용 후 자유롭게 다음을 할 수 있습니다:
  • 모든 규칙 수정 (조건, 액션, 우선순위, mutex).
  • 버전에서 규칙 추가 또는 제거.
  • 필요 없는 fact 삭제 (보호되지 않는 일반 커스텀 fact입니다). 참조하는 규칙이 남아 있으면 막힙니다. 삭제한 그룹의 규칙은 세지 않습니다.
  • 정책 그룹 이름 변경.
  • 게시 전 버전의 적용 기간 조정.

자주 묻는 질문

같은 템플릿을 두 번 적용할 수 있나요? 네. 적용할 때마다 새 정책 그룹이 생성되고, 첫 적용이 만든 fact는 중복 없이 재사용됩니다. 그 사이 그 fact의 타입이나 허용 값을 바꿨다면, 템플릿과 다시 같아질 때까지 두 번째 적용이 P-061로 실패합니다. 기본 그룹명이 이미 사용 중이면 날짜 접미사가 자동으로 붙습니다. 테넌트에 같은 키의 fact가 이미 있으면 어떻게 되나요? 정의가 같으면 적용은 그 fact를 그대로 둡니다. 정의가 다르다는 것은 타입이 다르거나, 입력 fact의 허용 값이나 범위가 다르다는 뜻입니다. 그때는 미리보기가 그 키를 보여 주고, 콘솔은 적용 버튼을 막으며, apply 엔드포인트는 아무것도 만들지 않고 P-061로 실패합니다. 그 fact를 삭제하거나 템플릿과 같게 고친 뒤 적용하세요. 규칙이 쓰는 fact는 삭제(FD-006)도 타입 변경(FD-007)도 안 되지만, 허용 값이나 범위는 바꿀 수 있습니다. 바꾼 제약은 이미 게시한 정책에는 다시 게시할 때부터 적용됩니다. 나중에 템플릿의 fact를 삭제할 수 있나요? 참조하는 규칙이 없으면 지울 수 있습니다. 삭제한 그룹의 규칙은 세지 않습니다. 템플릿으로 생성된 fact는 일반 테넌트 fact이고 특별한 보호가 없지만, 다른 fact와 같은 가드를 받습니다. 규칙이 참조하는 fact는 삭제(FD-006)도 타입 변경(FD-007)도 거절되며 참조 중인 규칙 수를 함께 알려줍니다. 그 규칙을 지우거나 그 fact를 쓰지 않도록 고치면 삭제가 열립니다. fact 관리를 참고하세요. 적용을 롤백할 수 있나요? 단일 작업으로는 불가능합니다. 되돌리려면 템플릿이 만든 정책 그룹을 삭제한 다음 필요 없는 fact를 삭제하세요. 그룹을 배포했다면 먼저 배포를 해제하세요. 삭제한 그룹의 규칙은 fact 삭제를 막지 않지만, 다른 그룹의 규칙이 쓰는 fact는 계속 막힙니다. 실행, 배포, 재실행한 적이 없는 그룹은 삭제하고 30일이 지나면 적용 이력과 함께 영구 삭제되고, 그렇지 않으면 적용 이력도 감사를 위해 남습니다.

다음 단계

정책 그룹

정책 그룹과 버전의 동작 방식을 알아보세요.

fact 정의

fact 모델을 자세히 이해하세요.