schemaVersion: 1
suiteId: loan-approval-decisions
owners:
  business: loan-policy-owner
  technical: loan-platform
graph:
  source: ../../../main/resources/bloge/loan-approval.bloge
tags: [critical, starter]
cases:
  - caseId: auto-approve
    title: 低风险申请自动通过
    requirementRefs: [LOAN-DECISION-001]
    oracle: {type: APPROVED_EXAMPLE, sourceRef: starter-policy:auto-approve, owner: loan-policy-owner}
    given:
      context: {applicationId: LA-VERIFY-1, caseName: auto-approve}
    when: {action: EXECUTE}
    then:
      outcome: SUCCESS
      expectations:
        - expectationId: route-to-approval
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: riskDecision}
          matcher: EQUALS
          expected: auto_approve
        - expectationId: approval-is-final
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: approvedStatus}
          matcher: EQUALS
          expected: approved
        - expectationId: rejection-path-skipped
          scope: STRUCTURAL_CONTRACT
          actual: {kind: NODE_STATUS, nodeId: reject}
          matcher: EQUALS
          expected: SKIPPED
  - caseId: auto-reject
    title: 高风险申请自动拒绝
    requirementRefs: [LOAN-DECISION-002]
    oracle: {type: APPROVED_EXAMPLE, sourceRef: starter-policy:auto-reject, owner: loan-policy-owner}
    given:
      context: {applicationId: LA-VERIFY-2, caseName: reject}
    when: {action: EXECUTE}
    then:
      outcome: SUCCESS
      expectations:
        - expectationId: route-to-rejection
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: riskDecision}
          matcher: EQUALS
          expected: auto_reject
        - expectationId: rejection-is-final
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: rejectedStatus}
          matcher: EQUALS
          expected: rejected
        - expectationId: approval-path-skipped
          scope: STRUCTURAL_CONTRACT
          actual: {kind: NODE_STATUS, nodeId: approve}
          matcher: EQUALS
          expected: SKIPPED
  - caseId: manual-review
    title: 中风险申请进入人工复核
    requirementRefs: [LOAN-DECISION-003]
    oracle: {type: APPROVED_EXAMPLE, sourceRef: starter-policy:manual-review, owner: loan-policy-owner}
    given:
      context: {applicationId: LA-VERIFY-3, caseName: manual-review}
    when: {action: EXECUTE}
    then:
      outcome: SUCCESS
      expectations:
        - expectationId: route-to-manual-review
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: riskDecision}
          matcher: EQUALS
          expected: manual_review
        - expectationId: manual-review-is-final
          scope: BUSINESS_CONTRACT
          actual: {kind: BUSINESS_OUTPUT, outputId: manualStatus}
          matcher: EQUALS
          expected: approved
        - expectationId: automatic-paths-skipped
          scope: STRUCTURAL_CONTRACT
          actual: {kind: NODE_STATUS, nodeId: approve}
          matcher: EQUALS
          expected: SKIPPED
