도메인 템플릿이란?
도메인 템플릿(Domain Template)은 결제 가격이나 송금 승인처럼 자주 쓰는 결정 하나에 맞춘 fact 정의와 샘플 규칙의 묶음입니다. 템플릿을 적용하면 다음이 생성됩니다:- 테넌트에 등록되는 템플릿의 fact. 제약이 있는 입력 fact에는 허용 값이나 범위가 함께 붙습니다.
- 샘플 규칙이 초안 버전에 담긴 새 정책 그룹. 고쳐서 게시하면 됩니다.
- 그룹 목록의 항목: 직접 만든 것과 동일합니다.
사용 가능한 템플릿
이커머스: 주문 가격
핀테크: 송금 승인
SaaS: 요금제 한도
보험: 청구 분류
AI 에이전트: 액션 승인
이커머스: 주문 가격
주문당 할인 하나(회원 등급 또는 첫 주문 코드), 상한을 둔 AI 제안 추가 할인, 무료 배송, 회원 5% 적립. 적용하면 정책 그룹 하나(이커머스 주문 가격 정책)와 초안 버전 하나가 생깁니다.fact
입력 fact는 요청마다 전부 보내세요. 해당이 없으면 중립 값을 보내세요. 출력 fact는 규칙이 값을 쓰므로 보내지 않습니다. 입력 factNONE, BRONZE, SILVER, GOLD, PLATINUM규칙
1. PLATINUM 회원 15% 할인
1. PLATINUM 회원 15% 할인
- 조건:
loyaltyTier = "PLATINUM" - 액션:
purchaseSubtotalUsd -= 15%(소수 2자리 HALF_UP 반올림) - 상호 배타 그룹:
ecom_order_discount
2. WELCOME15 첫 주문 15% 할인 (USD 50 이상)
2. WELCOME15 첫 주문 15% 할인 (USD 50 이상)
- 조건:
appliedPromoCode = "WELCOME15"ANDisFirstPurchase = trueANDpurchaseSubtotalUsd ≥ 50 - 액션:
purchaseSubtotalUsd -= 15%(소수 2자리 HALF_UP 반올림) - 상호 배타 그룹:
ecom_order_discount
3. GOLD 회원 10% 할인
3. GOLD 회원 10% 할인
- 조건:
loyaltyTier = "GOLD" - 액션:
purchaseSubtotalUsd -= 10%(소수 2자리 HALF_UP 반올림) - 상호 배타 그룹:
ecom_order_discount
4. SILVER 회원 5% 할인
4. SILVER 회원 5% 할인
- 조건:
loyaltyTier = "SILVER" - 액션:
purchaseSubtotalUsd -= 5%(소수 2자리 HALF_UP 반올림) - 상호 배타 그룹:
ecom_order_discount
5. 무료 배송: 회원 또는 USD 35 이상
5. 무료 배송: 회원 또는 USD 35 이상
- 조건:
loyaltyTier in ["BRONZE", "SILVER", "GOLD", "PLATINUM"]ORpurchaseSubtotalUsd ≥ 35 - 액션:
freeShipping = true
6. 회원 5% 적립
6. 회원 5% 적립
- 조건:
loyaltyTier in ["BRONZE", "SILVER", "GOLD", "PLATINUM"] - 액션:
loyaltyCreditUsd += 5% × purchaseSubtotalUsd(소수 2자리 HALF_UP 반올림)
7. AI 제안 상한: 전자제품은 5%
7. AI 제안 상한: 전자제품은 5%
- 조건:
aiSuggestedDiscountPercent > 5ANDcartCategoryTags has any of ["electronics"] - 액션:
aiSuggestedDiscountPercent = 5 - 상호 배타 그룹:
ecom_ai_offer_cap
8. AI 제안 상한: 누적 결제액 USD 1,000 미만은 10%
8. AI 제안 상한: 누적 결제액 USD 1,000 미만은 10%
- 조건:
aiSuggestedDiscountPercent > 10ANDcustomerLtvUsd < 1000 - 액션:
aiSuggestedDiscountPercent = 10 - 상호 배타 그룹:
ecom_ai_offer_cap
9. AI 제안 최대치 15%
9. AI 제안 최대치 15%
- 조건:
aiSuggestedDiscountPercent > 15 - 액션:
aiSuggestedDiscountPercent = 15 - 상호 배타 그룹:
ecom_ai_offer_cap
10. 30% 넘는 AI 제안 검토 표시
10. 30% 넘는 AI 제안 검토 표시
- 조건:
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는 규칙이 값을 쓰므로 보내지 않습니다. 입력 factUSER, AI_AGENT, SCHEDULED규칙
1. 거절: 위험 점수 75 이상
1. 거절: 위험 점수 75 이상
- 조건:
paymentRiskScore ≥ 75 - 액션:
transferDecision = "DECLINE",BLOCK RISK_SCORE_HIGHEST - 상호 배타 그룹:
fin_transfer_decision
2. 거절: 미인증 계정 7일 USD 300 초과
2. 거절: 미인증 계정 7일 USD 300 초과
- 조건:
isIdentityVerified = falseANDweeklyOutflowUsd > 300 - 액션:
transferDecision = "DECLINE",BLOCK UNVERIFIED_WEEKLY_LIMIT - 상호 배타 그룹:
fin_transfer_decision
3. 거절: AI가 보낸 USD 1,000 초과 송금
3. 거절: AI가 보낸 USD 1,000 초과 송금
- 조건:
initiatorType = "AI_AGENT"ANDtransferAmountUsd > 1000 - 액션:
transferDecision = "DECLINE",BLOCK AI_TRANSFER_OVER_LIMIT - 상호 배타 그룹:
fin_transfer_decision
4. 검토: 위험 점수 65 이상
4. 검토: 위험 점수 65 이상
- 조건:
paymentRiskScore ≥ 65 - 액션:
transferDecision = "REVIEW",BLOCK RISK_SCORE_ELEVATED - 상호 배타 그룹:
fin_transfer_decision
5. 검토: USD 10,000 초과 송금
5. 검토: USD 10,000 초과 송금
- 조건:
transferAmountUsd > 10000 - 액션:
transferDecision = "REVIEW",BLOCK HIGH_VALUE_TRANSFER - 상호 배타 그룹:
fin_transfer_decision
6. 검토: 개설 30일 미만 계정, 건당 USD 500 또는 7일 USD 1,000 초과
6. 검토: 개설 30일 미만 계정, 건당 USD 500 또는 7일 USD 1,000 초과
- 조건:
accountAgeDays < 30AND (transferAmountUsd > 500ORweeklyOutflowUsd > 1000) - 액션:
transferDecision = "REVIEW",BLOCK NEW_ACCOUNT_OUTFLOW - 상호 배타 그룹:
fin_transfer_decision
7. 검토: 24시간 10건 이상
7. 검토: 24시간 10건 이상
- 조건:
transfersLast24hCount ≥ 10 - 액션:
transferDecision = "REVIEW",BLOCK VELOCITY_24H - 상호 배타 그룹:
fin_transfer_decision
8. 추가 인증: AI가 보낸 USD 100 초과 또는 새 수취인 송금
8. 추가 인증: AI가 보낸 USD 100 초과 또는 새 수취인 송금
- 조건:
initiatorType = "AI_AGENT"AND (transferAmountUsd > 100ORisNewPayee = true) AND (transferAmountUsd ≥ 0ANDweeklyOutflowUsd ≥ 0ANDaccountAgeDays ≥ 0AND (isIdentityVerified = trueORisIdentityVerified = false) ANDpaymentRiskScore ≥ 0ANDtransfersLast24hCount ≥ 1AND (isNewPayee = trueORisNewPayee = false) ANDinitiatorType in ["USER", "AI_AGENT", "SCHEDULED"]) - 액션:
transferDecision = "STEP_UP",BLOCK AI_TRANSFER_CONFIRMATION - 상호 배타 그룹:
fin_transfer_decision
9. 추가 인증: 새 수취인 USD 200 초과
9. 추가 인증: 새 수취인 USD 200 초과
- 조건:
isNewPayee = trueANDtransferAmountUsd > 200AND (transferAmountUsd ≥ 0ANDweeklyOutflowUsd ≥ 0ANDaccountAgeDays ≥ 0AND (isIdentityVerified = trueORisIdentityVerified = false) ANDpaymentRiskScore ≥ 0ANDtransfersLast24hCount ≥ 1AND (isNewPayee = trueORisNewPayee = false) ANDinitiatorType in ["USER", "AI_AGENT", "SCHEDULED"]) - 액션:
transferDecision = "STEP_UP",BLOCK NEW_PAYEE_STEP_UP - 상호 배타 그룹:
fin_transfer_decision
10. 승인: 입력이 다 있고 걸린 위험 규칙 없음
10. 승인: 입력이 다 있고 걸린 위험 규칙 없음
- 조건:
transferAmountUsd ≥ 0ANDweeklyOutflowUsd ≥ 0ANDaccountAgeDays ≥ 0AND (isIdentityVerified = trueORisIdentityVerified = false) ANDpaymentRiskScore ≥ 0ANDtransfersLast24hCount ≥ 1AND (isNewPayee = trueORisNewPayee = false) ANDinitiatorType in ["USER", "AI_AGENT", "SCHEDULED"] - 액션:
transferDecision = "APPROVE" - 상호 배타 그룹:
fin_transfer_decision
11. 검토: 기본 보류
11. 검토: 기본 보류
- 조건: 모든 입력에 매치
- 액션:
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는 규칙이 값을 쓰므로 보내지 않습니다. 입력 factFREE, TEAM, BUSINESS, ENTERPRISESSO, AUDIT_LOG, NONE규칙
1. 차단: SSO와 감사 로그는 BUSINESS 이상
1. 차단: SSO와 감사 로그는 BUSINESS 이상
- 조건:
requestedFeature in ["SSO", "AUDIT_LOG"]ANDplanTier in ["FREE", "TEAM"] - 액션:
BLOCK FEATURE_NOT_IN_PLAN - 상호 배타 그룹:
saas_entitlement_block
2. 차단: FREE 요금제 10석 초과
2. 차단: FREE 요금제 10석 초과
- 조건:
planTier = "FREE"ANDseatCount > 10 - 액션:
BLOCK SEAT_LIMIT_REACHED - 상호 배타 그룹:
saas_entitlement_block
3. 차단: FREE 요금제 API 10,000건 초과
3. 차단: FREE 요금제 API 10,000건 초과
- 조건:
planTier = "FREE"ANDmonthlyApiCalls > 10000 - 액션:
BLOCK USAGE_LIMIT_REACHED - 상호 배타 그룹:
saas_entitlement_block
4. 차단: 체험 워크스페이스 API 10,000건 초과
4. 차단: 체험 워크스페이스 API 10,000건 초과
- 조건:
isTrial = trueANDmonthlyApiCalls > 10000 - 액션:
BLOCK TRIAL_USAGE_LIMIT - 상호 배타 그룹:
saas_entitlement_block
5. 차단: TEAM 요금제 API 300,000건 초과
5. 차단: TEAM 요금제 API 300,000건 초과
- 조건:
planTier = "TEAM"ANDmonthlyApiCalls > 300000 - 액션:
BLOCK USAGE_HARD_CAP - 상호 배타 그룹:
saas_entitlement_block
6. TEAM 초과 사용: 100,000건 초과분 1,000건당 USD 1
6. TEAM 초과 사용: 100,000건 초과분 1,000건당 USD 1
- 조건:
planTier = "TEAM"ANDisTrial = falseANDmonthlyApiCalls > 100000ANDmonthlyApiCalls ≤ 300000 - 액션:
overageChargeUsd = 0.1% × monthlyApiCalls(소수 2자리 HALF_UP 반올림),overageChargeUsd -= 100
7. TEAM 초과 요금: 300,000건 초과 구간은 USD 200
7. TEAM 초과 요금: 300,000건 초과 구간은 USD 200
- 조건:
planTier = "TEAM"ANDisTrial = falseANDmonthlyApiCalls > 300000 - 액션:
overageChargeUsd = 200
8. AI 크레딧: FREE와 체험은 0
8. AI 크레딧: FREE와 체험은 0
- 조건: (
planTier = "FREE"ORisTrial = true) ANDaiGrantedCreditUsd > 0 - 액션:
aiGrantedCreditUsd = 0,creditApprovalRequired = true - 상호 배타 그룹:
saas_credit_cap
9. AI 크레딧 상한: 건당 USD 100
9. AI 크레딧 상한: 건당 USD 100
- 조건: (
planTier in ["TEAM", "BUSINESS", "ENTERPRISE"]ANDisTrial = false) ANDaiGrantedCreditUsd > 100 - 액션:
aiGrantedCreditUsd = 100,creditApprovalRequired = true - 상호 배타 그룹:
saas_credit_cap
10. AI 크레딧: 유료 요금제는 상한까지 그대로
10. AI 크레딧: 유료 요금제는 상한까지 그대로
- 조건: (
planTier in ["TEAM", "BUSINESS", "ENTERPRISE"]ANDisTrial = false) ANDaiGrantedCreditUsd > 0 - 액션:
creditApprovalRequired = false - 상호 배타 그룹:
saas_credit_cap
11. AI 크레딧: 기본 보류
11. AI 크레딧: 기본 보류
- 조건:
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 1FREE 워크스페이스의 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는 규칙이 값을 쓰므로 보내지 않습니다. 입력 factGLASS, COLLISION, COMPREHENSIVE, THEFT규칙
1. 특별조사: 사기 점수 80 이상
1. 특별조사: 사기 점수 80 이상
- 조건:
claimFraudScore ≥ 80 - 액션:
claimRoute = "SPECIAL_INVESTIGATION",BLOCK SIU_REFERRAL_FRAUD_SCORE - 상호 배타 그룹:
ins_claim_route
2. 특별조사: 보험 개시 후 30일 안의 도난
2. 특별조사: 보험 개시 후 30일 안의 도난
- 조건:
claimType = "THEFT"ANDpolicyAgeDays < 30 - 액션:
claimRoute = "SPECIAL_INVESTIGATION",BLOCK SIU_REFERRAL_EARLY_THEFT - 상호 배타 그룹:
ins_claim_route
3. 손해사정: 부상 신고
3. 손해사정: 부상 신고
- 조건:
hasInjury = true - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK INJURY_REPORTED - 상호 배타 그룹:
ins_claim_route
4. 손해사정: 도난 청구
4. 손해사정: 도난 청구
- 조건:
claimType = "THEFT" - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK THEFT_CLAIM - 상호 배타 그룹:
ins_claim_route
5. 손해사정: 보험 개시 후 30일 안의 손해
5. 손해사정: 보험 개시 후 30일 안의 손해
- 조건:
policyAgeDays < 30 - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK EARLY_LOSS - 상호 배타 그룹:
ins_claim_route
6. 손해사정: 유리 청구의 AI 지급액 USD 1,000 초과
6. 손해사정: 유리 청구의 AI 지급액 USD 1,000 초과
- 조건:
claimType = "GLASS"ANDaiEstimatedPayoutUsd > 1000 - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK GLASS_PAYOUT_OVER_LIMIT - 상호 배타 그룹:
ins_claim_route
7. 손해사정: AI 지급액 USD 2,500 초과
7. 손해사정: AI 지급액 USD 2,500 초과
- 조건:
aiEstimatedPayoutUsd > 2500 - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK PAYOUT_OVER_FAST_TRACK_LIMIT - 상호 배타 그룹:
ins_claim_route
8. 손해사정: AI 신뢰도 0.8 미만
8. 손해사정: AI 신뢰도 0.8 미만
- 조건:
aiEstimateConfidence < 0.8 - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK LOW_ESTIMATE_CONFIDENCE - 상호 배타 그룹:
ins_claim_route
9. 손해사정: 이번 건 외 3년 내 청구 2건 이상
9. 손해사정: 이번 건 외 3년 내 청구 2건 이상
- 조건:
priorClaimsCount ≥ 2 - 액션:
claimRoute = "ADJUSTER_REVIEW",BLOCK FREQUENT_CLAIMANT - 상호 배타 그룹:
ins_claim_route
10. 빠른 처리: 입력이 다 있고 걸린 신호 없음
10. 빠른 처리: 입력이 다 있고 걸린 신호 없음
- 조건:
claimType in ["GLASS", "COLLISION", "COMPREHENSIVE", "THEFT"]ANDaiEstimatedPayoutUsd ≥ 0ANDaiEstimateConfidence ≥ 0ANDpolicyAgeDays ≥ 0ANDpriorClaimsCount ≥ 0AND (hasInjury = trueORhasInjury = false) ANDclaimFraudScore ≥ 0 - 액션:
claimRoute = "FAST_TRACK" - 상호 배타 그룹:
ins_claim_route
11. 손해사정: 기본 보류
11. 손해사정: 기본 보류
- 조건: 모든 입력에 매치
- 액션:
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규칙
1. 거부: 허용 목록 밖의 액션
1. 거부: 허용 목록 밖의 액션
- 조건:
agentActionType not in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"] - 액션:
agentDecision = "DENY",BLOCK ACTION_NOT_ALLOWED_FOR_AGENT - 상호 배타 그룹:
agent_action_decision
2. 거부: 제3자에게 개인정보 전달
2. 거부: 제3자에게 개인정보 전달
- 조건:
containsPii = trueANDisThirdPartyRecipient = true - 액션:
agentDecision = "DENY",BLOCK PII_TO_THIRD_PARTY - 상호 배타 그룹:
agent_action_decision
3. 거부: 건당 USD 1,000 초과
3. 거부: 건당 USD 1,000 초과
- 조건:
actionAmountUsd > 1000 - 액션:
agentDecision = "DENY",BLOCK AMOUNT_OVER_HARD_LIMIT - 상호 배타 그룹:
agent_action_decision
4. 승인 필요: 고객당 24시간 USD 500 초과
4. 승인 필요: 고객당 24시간 USD 500 초과
- 조건:
dailyAgentAmountUsd > 500ANDactionAmountUsd > 0 - 액션:
agentDecision = "NEEDS_APPROVAL",BLOCK DAILY_AMOUNT_LIMIT - 상호 배타 그룹:
agent_action_decision
5. 승인 필요: USD 100 넘는 환불이나 구매
5. 승인 필요: USD 100 넘는 환불이나 구매
- 조건:
agentActionType in ["ISSUE_REFUND", "PURCHASE"]ANDactionAmountUsd > 100 - 액션:
agentDecision = "NEEDS_APPROVAL",BLOCK AMOUNT_NEEDS_APPROVAL - 상호 배타 그룹:
agent_action_decision
6. 승인 필요: 신뢰도 0.7 미만
6. 승인 필요: 신뢰도 0.7 미만
- 조건:
checkerConfidence < 0.7 - 액션:
agentDecision = "NEEDS_APPROVAL",BLOCK LOW_CONFIDENCE - 상호 배타 그룹:
agent_action_decision
7. 허용: USD 50 넘는 보상 크레딧은 USD 50까지 줄임
7. 허용: USD 50 넘는 보상 크레딧은 USD 50까지 줄임
- 조건:
agentActionType = "APPLY_CREDIT"ANDactionAmountUsd > 50AND (actionAmountUsd ≥ 0ANDdailyAgentAmountUsd ≥ 0ANDcheckerConfidence ≥ 0AND (containsPii = trueORcontainsPii = false) AND (isThirdPartyRecipient = trueORisThirdPartyRecipient = false)) - 액션:
actionAmountUsd = 50,agentDecision = "ALLOW" - 상호 배타 그룹:
agent_action_decision
8. 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션
8. 허용: 입력이 다 있고 다른 규칙이 안 걸린 허용 목록 액션
- 조건:
agentActionType in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"]AND (actionAmountUsd ≥ 0ANDdailyAgentAmountUsd ≥ 0ANDcheckerConfidence ≥ 0AND (containsPii = trueORcontainsPii = false) AND (isThirdPartyRecipient = trueORisThirdPartyRecipient = false)) - 액션:
agentDecision = "ALLOW" - 상호 배타 그룹:
agent_action_decision
9. 승인 필요: 허용 목록 액션의 기본 보류
9. 승인 필요: 허용 목록 액션의 기본 보류
- 조건:
agentActionType in ["ISSUE_REFUND", "APPLY_CREDIT", "PURCHASE", "SEND_MESSAGE", "UPDATE_TICKET"] - 액션:
agentDecision = "NEEDS_APPROVAL",BLOCK INPUT_MISSING - 상호 배타 그룹:
agent_action_decision
10. 거부: 위에서 걸린 규칙 없음
10. 거부: 위에서 걸린 규칙 없음
- 조건: 모든 입력에 매치
- 액션:
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일 때 승인 대기 대신 거부됩니다. 발동한 규칙: 거부: 허용 목록 밖의 액션 경쟁 탈락(조건은 맞았지만 더 높은 우선순위 규칙에 밀림): 거부: 위에서 걸린 규칙 없음템플릿 적용
- 설정 → 도메인 템플릿으로 이동합니다.
- 템플릿 카드의 미리보기를 클릭하여 적용 전에 fact와 규칙을 확인합니다. 템플릿의 키가 테넌트에 다른 정의로 이미 있으면 미리보기가 그 키를 보여 줍니다. 그 fact를 삭제하거나 템플릿과 같게 고치기 전까지는 적용할 수 없습니다.
- 적용을 클릭하여 정책 그룹을 생성합니다.
- 선택적으로 사용자 정의 그룹명을 입력합니다. 비워두면 기본 이름이 생성됩니다 (이름이 이미 존재하면 날짜 접미사가 붙습니다).
적용 시 동작
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일이 지나면 적용 이력과 함께 영구 삭제되고, 그렇지 않으면 적용 이력도 감사를 위해 남습니다.

