fix(approval): replay immutable action responses

This commit is contained in:
caoxiaozhu
2026-07-16 15:49:43 +08:00
parent 4940ebc419
commit 28b834edd3
20 changed files with 552 additions and 60 deletions

View File

@@ -736,6 +736,17 @@ def test_approve_claim_endpoint_routes_direct_manager_claim_to_finance_review()
assert approval_events[0]["operator"] == "李经理"
assert "manager-approve-api@example.com" not in approval_events[0]["message"]
with session_factory() as db:
moved_forward = db.get(ExpenseClaim, "claim-approve-1")
assert moved_forward is not None
moved_forward.status = "pending_payment"
moved_forward.approval_stage = "待付款"
moved_forward.risk_flags_json = [
*list(moved_forward.risk_flags_json or []),
{"source": "future_state", "message": "首次响应之后的状态"},
]
db.commit()
replay_response = client.post(
"/api/v1/reimbursements/claims/claim-approve-1/approve",
json={
@@ -747,7 +758,11 @@ def test_approve_claim_endpoint_routes_direct_manager_claim_to_finance_review()
headers=action_headers,
)
assert replay_response.status_code == 200
assert replay_response.json()["approval_stage"] == "财务审批"
assert replay_response.json() == payload
assert all(
item.get("source") != "future_state"
for item in replay_response.json()["risk_flags_json"]
)
changed_payload_response = client.post(
"/api/v1/reimbursements/claims/claim-approve-1/approve",