補齊 PChome retry executor receipt
Some checks failed
CD Pipeline / deploy (push) Has been cancelled

This commit is contained in:
ogt
2026-07-02 00:40:38 +08:00
parent 3a66895088
commit a0fbf1684d
2 changed files with 163 additions and 48 deletions

View File

@@ -1237,13 +1237,29 @@ def test_direct_mapping_retry_candidate_exception_controlled_apply_executor_writ
assert package["summary"]["post_apply_readback_pass_count"] == 2
assert package["summary"]["writes_database_count"] == 2
assert package["summary"]["persists_candidate_count"] == 2
assert package["summary"]["executor_receipt_ready_count"] == 1
assert package["summary"]["executor_receipt_materialized_count"] == 1
assert package["summary"]["executor_receipt_hash_match_count"] == 1
assert package["controlled_apply_executor"]["target_table"] == "pchome_product_matches"
assert package["controlled_apply_executor"]["write_attempted"] is True
assert package["controlled_apply_executor"]["ready_for_apply"] is True
assert all(readback["passed"] for readback in package["post_apply_readbacks"])
assert package["rollback_plan"]["rollback_step_count"] == 2
assert package["post_executor_receipt_verifier"]["passed"] is True
assert package["post_executor_receipt_verifier"]["hash_match"] is True
assert len(package["materialized_executor_artifacts"]) == 1
receipt = package["materialized_executor_artifacts"][0]
receipt_path = Path(receipt["absolute_path"])
assert receipt_path.exists()
assert hashlib.sha256(receipt_path.read_bytes()).hexdigest() == receipt["payload_sha256"]
receipt_payload = json.loads(receipt_path.read_text(encoding="utf-8"))
assert receipt_payload["executor_id"] == package["controlled_apply_executor"]["executor_id"]
assert receipt_payload["summary"]["applied_record_count"] == 2
assert receipt_payload["summary"]["post_apply_readback_pass_count"] == 2
assert receipt_payload["safety"]["writes_database_count"] == 2
assert package["safety"]["execute_apply"] is True
assert package["safety"]["writes_database_count"] == 2
assert package["safety"]["writes_artifact_count"] == 1
with engine.connect() as conn:
rows = conn.execute(text("""
SELECT momo_icode, pchome_id, advantage