from datetime import datetime, timezone, timedelta

NOW = datetime(2026, 12, 1, 1, 0, tzinfo=timezone.utc)


def contract_state(payload, tenant, now):
    if payload["schema"] != 1 or payload["tenant"] != tenant:
        raise ValueError("版本或租户不匹配")
    updated = datetime.fromisoformat(payload["updated_at"])
    if updated.tzinfo is None:
        raise ValueError("时间必须带时区")
    age = now - updated
    if age < timedelta(0) or age > timedelta(minutes=15):
        raise ValueError("数据时间不满足本用例要求")
    row = payload["contract"]
    if row["status"] not in {"active", "expired", "renewed"}:
        raise ValueError("未知合同状态")
    return row["status"]


payload = {"schema": 1, "tenant": "t1",
           "updated_at": "2026-12-01T00:55:00+00:00",
           "contract": {"id": "C1", "status": "active"}}
assert contract_state(payload, "t1", NOW) == "active"
try:
    contract_state(payload, "t1", NOW + timedelta(hours=1))
except ValueError:
    pass
else:
    raise AssertionError("过期数据不能继续被接受")
print("契约检查通过，新鲜度超限时明确拒绝")
