32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
|
||
|
|
def build_parallel_runtime_metrics(
|
||
|
|
*,
|
||
|
|
task_graph: dict[str, Any] | None,
|
||
|
|
scheduled_subtasks: list[dict[str, Any]] | None,
|
||
|
|
task_results: list[dict[str, Any]] | None,
|
||
|
|
merge_report: dict[str, Any] | None,
|
||
|
|
) -> dict[str, Any]:
|
||
|
|
task_graph = task_graph or {}
|
||
|
|
scheduled_subtasks = list(scheduled_subtasks or [])
|
||
|
|
task_results = list(task_results or [])
|
||
|
|
merge_report = merge_report or {}
|
||
|
|
|
||
|
|
completed = sum(1 for item in task_results if item.get("status") == "completed")
|
||
|
|
failed = sum(1 for item in task_results if item.get("status") == "failed")
|
||
|
|
blocked = sum(1 for item in task_results if item.get("status") == "blocked")
|
||
|
|
|
||
|
|
return {
|
||
|
|
"task_graph_node_count": len(task_graph.get("nodes") or []),
|
||
|
|
"scheduled_subtask_count": len(scheduled_subtasks),
|
||
|
|
"completed_subtask_count": completed,
|
||
|
|
"failed_subtask_count": failed,
|
||
|
|
"blocked_subtask_count": blocked,
|
||
|
|
"merge_status": merge_report.get("status"),
|
||
|
|
"merge_conflict_count": len(merge_report.get("conflict_flags") or []),
|
||
|
|
"fallback_used": bool(merge_report.get("fallback_used") or False),
|
||
|
|
}
|