""" Сохранение результатов тестов в БД. """ import json from db.pool import get_conn, put_conn def save_run(client_id, stand, user_email, svc_id, svc_name, op_name, svc_op_id, op_uid, instance_uid, display_name, status, duration_sec, error_log, params, stages, app_version, scenario_run_id=None, step_number=None): """Сохранить один запуск в таблицу runs. Опционально: scenario_run_id + step_number для шагов сценария.""" conn = get_conn() if not conn: print("[DB] save_run SKIP: no connection", flush=True) return try: cur = conn.cursor() cur.execute(""" INSERT INTO runs (client_id, stand, user_email, svc_id, svc_name, op_name, svc_op_id, op_uid, instance_uid, display_name, status, duration_sec, error_log, params, stages, app_version, scenario_run_id, step_number) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """, ( client_id, stand, user_email, svc_id, svc_name, op_name, svc_op_id, op_uid, instance_uid, display_name, status, duration_sec, error_log, json.dumps(params) if params else None, json.dumps(stages) if stages else None, app_version, scenario_run_id, step_number, )) conn.commit() cur.close() print(f"[DB] save_run OK: {op_name} {status} {duration_sec}s", flush=True) except Exception as e: print(f"[DB] save_run error: {e}", flush=True) conn.rollback() finally: put_conn(conn)