kin: auto-commit after pipeline

This commit is contained in:
Gros Frumos 2026-03-17 18:33:09 +02:00
parent 9f58682689
commit 79757a3120

View file

@ -2630,10 +2630,15 @@ class TestPMStepPipelineLog:
pm_ended_at="2026-03-17T10:00:05", pm_ended_at="2026-03-17T10:00:05",
) )
logs = conn.execute( # Должно быть 2 записи: PM start + PM done
"SELECT * FROM pipeline_log WHERE message='PM step: task decomposed'" start_logs = conn.execute(
"SELECT * FROM pipeline_log WHERE message='PM start: task planning'"
).fetchall() ).fetchall()
assert len(logs) == 1 done_logs = conn.execute(
"SELECT * FROM pipeline_log WHERE message LIKE 'PM done:%'"
).fetchall()
assert len(start_logs) == 1
assert len(done_logs) == 1
@patch("agents.runner._run_autocommit") @patch("agents.runner._run_autocommit")
@patch("agents.runner._run_learning_extraction") @patch("agents.runner._run_learning_extraction")
@ -2658,7 +2663,7 @@ class TestPMStepPipelineLog:
assert pipeline is not None assert pipeline is not None
pm_log = conn.execute( pm_log = conn.execute(
"SELECT * FROM pipeline_log WHERE message='PM step: task decomposed'" "SELECT * FROM pipeline_log WHERE message='PM start: task planning'"
).fetchone() ).fetchone()
assert pm_log is not None assert pm_log is not None
assert pm_log["pipeline_id"] == pipeline["id"] assert pm_log["pipeline_id"] == pipeline["id"]
@ -2669,7 +2674,7 @@ class TestPMStepPipelineLog:
def test_pm_log_entry_has_step_pm_in_extra( def test_pm_log_entry_has_step_pm_in_extra(
self, mock_run, mock_learn, mock_autocommit, conn self, mock_run, mock_learn, mock_autocommit, conn
): ):
"""extra_json PM-записи содержит role='pm' и корректные данные тайминга.""" """extra_json PM-записи содержит role='pm' и корректные метрики выполнения."""
mock_run.return_value = _mock_claude_success({"result": "done"}) mock_run.return_value = _mock_claude_success({"result": "done"})
mock_learn.return_value = {"added": 0, "skipped": 0} mock_learn.return_value = {"added": 0, "skipped": 0}
@ -2683,14 +2688,16 @@ class TestPMStepPipelineLog:
) )
row = conn.execute( row = conn.execute(
"SELECT extra_json FROM pipeline_log WHERE message='PM step: task decomposed'" "SELECT extra_json, ts FROM pipeline_log WHERE message LIKE 'PM done:%'"
).fetchone() ).fetchone()
assert row is not None assert row is not None
extra = json.loads(row["extra_json"]) extra = json.loads(row["extra_json"])
assert extra["role"] == "pm" assert extra["role"] == "pm"
assert extra["duration_seconds"] == 7 assert extra["steps_count"] == 1
assert extra["pm_started_at"] == "2026-03-17T10:00:00" assert extra["tokens_used"] == 1500
assert extra["pm_ended_at"] == "2026-03-17T10:00:07" assert extra["cost_usd"] == 0.02
# ts должен совпадать с pm_ended_at
assert row["ts"] == "2026-03-17T10:00:07"
@patch("agents.runner._run_autocommit") @patch("agents.runner._run_autocommit")
@patch("agents.runner._run_learning_extraction") @patch("agents.runner._run_learning_extraction")