v1.2.16: save full instance metadata (instance_meta JSONB)

init_db.py: ALTER TABLE runs ADD instance_meta JSONB
save_run.py: +instance_meta parameter → JSONB insert
api_test.py: _finish_op fetches GET /instances/{uid} after poll, saves all fields
scenario.py: run_scenario same — per-step instance metadata
Excludes: instanceUid, displayName, svc, serviceId, explainedStatus (already in other columns)
This commit is contained in:
2026-07-31 14:19:29 +04:00
parent 0180f3cb3f
commit 82a3be2067
5 changed files with 32 additions and 7 deletions
+12 -1
View File
@@ -177,12 +177,23 @@ def run_scenario(client, steps, client_id, stand, user_email, app_version, scena
# 7. Сохранить финальный результат
try:
# Получить полную информацию об инстансе
instance_meta = None
try:
inst_data = client.get(f"/instances/{instance_uid}")
inst = inst_data.get("instance", {}) if isinstance(inst_data, dict) else {}
if inst:
instance_meta = {k: v for k, v in inst.items()
if k not in ('instanceUid', 'displayName', 'svc', 'serviceId', 'explainedStatus')}
except Exception:
pass
save_run(client_id, stand, user_email,
svc_id, svc_final, op_name, svc_op_id,
op_uid, instance_uid, step_display,
step_status, step_duration, step_error,
resolved_params, step_stages, app_version,
scenario_run_id, step_num)
scenario_run_id, step_num,
instance_meta=instance_meta)
except Exception as e:
print(f"[SCENARIO] save_run failed for step {step_num}: {e}", flush=True)