"""三态执行与定向补数,不把缺失或过期值变成零。""" import copy import json rows = { "AAA": {"pe": (18, "observed"), "growth": (.12, "observed")}, "BBB": {"pe": (25, "observed"), "growth": (None, "not_disclosed")}, "CCC": {"pe": (16, "observed"), "growth": (None, "provider_error")}, "DDD": {"pe": (17, "observed"), "growth": (.15, "stale")}} def evaluate(row): checks = [] for field, predicate in [("pe", lambda v: 0 < v < 20), ("growth", lambda v: v >= .10)]: value, state = row[field] checks.append(predicate(value) if state == "observed" and value is not None else None) return "fail" if False in checks else "unknown" if None in checks else "pass" before = {s: evaluate(row) for s, row in rows.items()} queue = [{"symbol": s, "field": field, "reason": state, "action": "retry_source" if state == "provider_error" else "refresh" if state == "stale" else "confirm_disclosure"} for s, row in rows.items() for field, (value, state) in row.items() if state != "observed" or value is None] patched = copy.deepcopy(rows) patched["CCC"]["growth"] = (.20, "observed") after = dict(before) after["CCC"] = evaluate(patched["CCC"]) assert before == {"AAA": "pass", "BBB": "fail", "CCC": "unknown", "DDD": "unknown"} assert after == {"AAA": "pass", "BBB": "fail", "CCC": "pass", "DDD": "unknown"} assert rows["CCC"]["growth"] == (None, "provider_error") assert [s for s in before if before[s] != after[s]] == ["CCC"] assert len(before) == len(after) == 4 and len(queue) == 3 print(json.dumps({"before": before, "queue": queue, "after": after, "rerun_symbols": ["CCC"]}, sort_keys=True))