#!/usr/bin/env python3
import json
from pathlib import Path


def validate_refund(payload):
    errors = []
    if set(payload) != {"order_id", "amount", "currency", "reason"}:
        errors.append("unexpected_or_missing_fields")
    if not isinstance(payload.get("order_id"), str) or not payload.get("order_id", "").startswith("order_"):
        errors.append("invalid_order_id")
    if not isinstance(payload.get("amount"), (int, float)) or payload.get("amount", 0) <= 0:
        errors.append("invalid_amount")
    if payload.get("currency") not in {"CNY", "USD"}:
        errors.append("unsupported_currency")
    if payload.get("amount", 0) > 500:
        errors.append("approval_required")
    return {"valid": not errors, "errors": errors}


cases = {
    "valid": {"order_id": "order_1024", "amount": 199, "currency": "CNY", "reason": "quality_issue"},
    "schema_error": {"order_id": 1024, "amount": -1, "currency": "RMB", "reason": "quality_issue"},
    "business_rule": {"order_id": "order_2048", "amount": 899, "currency": "CNY", "reason": "quality_issue"},
}

result = {name: validate_refund(payload) for name, payload in cases.items()}
Path(__file__).with_name("experiment-result.json").write_text(
    json.dumps(result, ensure_ascii=False, indent=2) + "\n", encoding="utf-8"
)
print(json.dumps(result, ensure_ascii=False, indent=2))
