Files
cdsl-cad/backend/app/cad_agent/domain/claim_matching.py
T
2026-09-01 14:10:23 +08:00

21 lines
771 B
Python

"""Canonical partial matching for acceptance-claim expectations."""
from __future__ import annotations
from typing import Any
def contains_expected(actual: Any, required: Any) -> bool:
"""Allow an actual claim to add provider-chosen optional fields only."""
if isinstance(required, dict):
return isinstance(actual, dict) and all(
key in actual and contains_expected(actual[key], value)
for key, value in required.items()
)
if isinstance(required, list):
return isinstance(actual, list) and len(actual) == len(required) and all(
contains_expected(actual_item, required_item)
for actual_item, required_item in zip(actual, required, strict=True)
)
return actual == required