Files
Artemis-Eapil/apps/admin_console/services/exploration_listing.py
T

46 lines
2.2 KiB
Python

"""Shared exploration metadata for queue cards and history pagination."""
# Rank execution runs independently from validations: a rerun never replaces the
# conversation card. Keep all raw sessions accessible for evidence inspection.
EXPLORATION_RUNS_CTE = """
exploration_runs AS (
SELECT r.id AS run_id,
json_extract(r.payload,'$.exploration_id') AS exploration_id,
json_extract(r.payload,'$.kind') AS exploration_kind,
json_extract(r.payload,'$.case_version') AS case_version,
json_extract(r.payload,'$.task_config.model') AS exploration_model,
json_extract(r.payload,'$.task_config.profile') AS exploration_profile,
json_extract(v.payload,'$.name') AS exploration_case_name,
CASE WHEN json_extract(r.payload,'$.kind')='exploration' AND
(json_extract(c.payload,'$.active_run_id') IS NULL
OR json_extract(c.payload,'$.active_run_id') = r.id)
THEN json_extract(c.payload,'$.status')
ELSE json_extract(r.payload,'$.status') END AS exploration_status,
FIRST_VALUE(r.id) OVER (
PARTITION BY json_extract(r.payload,'$.exploration_id'),json_extract(r.payload,'$.kind')
ORDER BY json_extract(r.payload,'$.created_at') DESC, r.id DESC
) AS exploration_latest_run_id,
COUNT(*) OVER (
PARTITION BY json_extract(r.payload,'$.exploration_id'),json_extract(r.payload,'$.kind')
) AS exploration_run_count
FROM automation_records r
LEFT JOIN automation_records c ON c.kind='exploration'
AND c.id=json_extract(r.payload,'$.exploration_id')
LEFT JOIN automation_records v ON v.kind='exploration_case'
AND v.id=json_extract(r.payload,'$.exploration_id') || '_' ||
printf('%010d',json_extract(r.payload,'$.case_version'))
WHERE r.kind='exploration_run'
)
"""
def exploration_metadata(connection) -> dict[str, dict]:
rows = connection.execute("WITH " + EXPLORATION_RUNS_CTE + " SELECT * FROM exploration_runs")
result = {}
for row in rows:
item = {key: row[key] for key in row.keys() if key != "run_id"}
if item.get("exploration_kind") == "validation" and item.get("exploration_case_name"):
item["display_name"] = item["exploration_case_name"]
result[row["run_id"]] = item
return result