# 人为构造的数据，仅演示评估口径。
runs = [
    {"completed": True, "human": False, "calls": 3},
    {"completed": True, "human": True, "calls": 2},
    {"completed": False, "human": True, "calls": 8},
    {"completed": True, "human": False, "calls": 4},
]


def metrics(rows):
    if not rows:
        raise ValueError("没有样本")
    done = sum(r["completed"] for r in rows)
    calls = sum(r["calls"] for r in rows)
    return {
        "completion_rate": done / len(rows),
        "human_rate": sum(r["human"] for r in rows) / len(rows),
        "calls_per_completed_task": calls / done if done else None,
    }


result = metrics(runs)
assert result["completion_rate"] == 0.75
assert result["human_rate"] == 0.5
assert result["calls_per_completed_task"] == 17 / 3
assert metrics([{"completed": False, "human": True, "calls": 1}])[
    "calls_per_completed_task"] is None
print(result)
