# 教学数据：把事实与政策分开保存，避免把“用户声称”写成“已核实”。
orders = {"A100": {"owner": "user-1", "product": "P-204", "days": 10, "verified": False}}
products = {"P-204": {"policy": "quality-v1"}}
policies = {"quality-v1": {"days_limit": 30, "payer": "商家"}}


def inspect_return(order_id, actor):
    """返回证据与结论；只读查询，不审批、不创建退款，也不修改订单。"""
    order = orders.get(order_id)
    # actor 来自登录态。权限判断在把订单交给模型之前完成。
    # 不区分无此订单与他人订单，避免泄露记录是否存在。
    if order is None or order["owner"] != actor:
        return {"evidence": [], "answer": "订单不可用"}
    evidence = [f"order:{order_id}"]

    # 第二跳用第一跳取得的产品 ID，不能由模型随意猜一个产品继续。
    product = products.get(order["product"])
    if product is None:
        return {"evidence": evidence, "answer": "缺少产品资料"}
    evidence.append(f"product:{order['product']}")

    # 第三跳沿产品资料取得适用政策；每一跳都显式处理缺失记录。
    policy = policies.get(product["policy"])
    if policy is None:
        return {"evidence": evidence, "answer": "缺少适用政策"}
    evidence.append(f"policy:{product['policy']}")
    if order["days"] > policy["days_limit"]:
        return {"evidence": evidence, "answer": "超出本条政策期限，需查其他依据"}
    if not order["verified"]:
        return {"evidence": evidence, "answer": "仍需核实质量问题，不能确认免费退回资格"}
    return {"evidence": evidence, "answer": f"符合本条规则，退货运费由{policy['payer']}承担"}


print(inspect_return("A100", "user-1"))  # 有权限，但缺少质量核实事实。
print(inspect_return("A100", "user-2"))  # 无权限，不返回任何订单证据。
