{"summary": {"A": {"count": 2, "amount_krw": 3000}, "B": {"count": 2, "amount_krw": 500}}, "exceptions": [{"line": 4, "order_id": "o2", "reason": "exact_duplicate"}, {"line": 5, "order_id": "o3", "reason": "missing_amount_hold"}, {"line": 6, "order_id": "o4", "reason": "out_of_period"}, {"line": 7, "order_id": "o5", "reason": "not_paid"}, {"line": 10, "order_id": "o8", "reason": "out_of_period"}], "source_rows": 9}

test_boundary (__main__.ContractTests.test_boundary) ... ok
test_conflict (__main__.ContractTests.test_conflict) ... ok
test_empty (__main__.ContractTests.test_empty) ... ok
test_expected (__main__.ContractTests.test_expected) ... ok
test_invalid (__main__.ContractTests.test_invalid) ... ok
test_missing_and_zero (__main__.ContractTests.test_missing_and_zero) ... ok

----------------------------------------------------------------------
Ran 6 tests in 0.001s

OK
