fix(agent): isolate closure receipt id binds

This commit is contained in:
ogt
2026-07-11 19:16:04 +08:00
parent a7f2684589
commit 9880da63fd
2 changed files with 33 additions and 5 deletions

View File

@@ -2194,12 +2194,13 @@ async def _read_verified_apply_closure_prerequisites(
LEFT JOIN automation_operation_log candidate
ON candidate.op_id = check_mode.parent_op_id
AND candidate.operation_type = 'ansible_candidate_matched'
WHERE apply.op_id = CAST(:apply_op_id AS uuid)
WHERE apply.op_id = CAST(:apply_op_id_uuid AS uuid)
AND apply.operation_type = 'ansible_apply_executed'
LIMIT 1
"""),
{
"apply_op_id": apply_op_id,
"apply_op_id_uuid": apply_op_id,
"incident_id": claim.incident_id,
"project_id": project_id,
"automation_run_id": automation_run_id,
@@ -2298,7 +2299,7 @@ async def _read_incident_closure_readback(
) AS resolved_lifecycle
FROM incidents incident
JOIN automation_operation_log apply
ON apply.op_id = CAST(:apply_op_id AS uuid)
ON apply.op_id = CAST(:apply_op_id_uuid AS uuid)
WHERE incident.incident_id = :incident_id
AND incident.project_id = :project_id
LIMIT 1
@@ -2307,6 +2308,7 @@ async def _read_incident_closure_readback(
"incident_id": claim.incident_id,
"project_id": project_id,
"apply_op_id": apply_op_id,
"apply_op_id_uuid": apply_op_id,
"automation_run_id": automation_run_id,
},
)
@@ -2434,7 +2436,7 @@ async def _commit_verified_incident_closure(
WITH target_apply AS (
SELECT apply.op_id
FROM automation_operation_log apply
WHERE apply.op_id = CAST(:apply_op_id AS uuid)
WHERE apply.op_id = CAST(:apply_op_id_uuid AS uuid)
AND apply.operation_type = 'ansible_apply_executed'
AND apply.status = 'success'
AND coalesce(
@@ -2596,6 +2598,7 @@ async def _commit_verified_incident_closure(
"""),
{
"apply_op_id": apply_op_id,
"apply_op_id_uuid": apply_op_id,
"incident_id": claim.incident_id,
"project_id": project_id,
"automation_run_id": automation_run_id,
@@ -4581,13 +4584,13 @@ async def _verify_retry_terminal_projection_readback(
) AS projection_verified
FROM incidents incident
JOIN automation_operation_log apply
ON apply.op_id = CAST(:apply_op_id AS uuid)
ON apply.op_id = CAST(:apply_op_id_uuid AS uuid)
AND apply.operation_type = 'ansible_apply_executed'
AND apply.status = 'failed'
AND apply.input ->> 'automation_run_id'
= :automation_run_id
JOIN automation_operation_log replay
ON replay.op_id = CAST(:replay_op_id AS uuid)
ON replay.op_id = CAST(:replay_op_id_uuid AS uuid)
AND replay.parent_op_id = apply.op_id
AND replay.operation_type = 'ansible_execution_skipped'
AND replay.status IN ('success', 'failed')
@@ -4608,7 +4611,9 @@ async def _verify_retry_terminal_projection_readback(
{
"automation_run_id": automation_run_id,
"apply_op_id": apply_op_id,
"apply_op_id_uuid": apply_op_id,
"replay_op_id": replay_op_id,
"replay_op_id_uuid": replay_op_id,
"terminal_type": terminal_type,
"incident_id": claim.incident_id,
"project_id": project_id,