omx(team): auto-checkpoint worker-4 [unknown]
This commit is contained in:
parent
a81f825203
commit
d34ad8d3ef
|
|
@ -8,6 +8,7 @@ from collections import defaultdict
|
|||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
from orchestrator.profile_trace_utils import TRACE_KIND, TRACE_SCHEMA_VERSION, build_trace_summary
|
||||
from tradingagents.graph.propagation import Propagator
|
||||
from tradingagents.graph.trading_graph import TradingAgentsGraph
|
||||
|
||||
|
|
@ -84,6 +85,48 @@ def _extract_research_state(event: dict) -> tuple[str | None, str | None, int |
|
|||
)
|
||||
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
def build_trace_payload(
|
||||
*,
|
||||
status: str,
|
||||
run_id: str,
|
||||
ticker: str,
|
||||
date: str,
|
||||
selected_analysts: list[str],
|
||||
analysis_prompt_style: str,
|
||||
variant_label: str,
|
||||
node_timings: list[dict],
|
||||
phase_totals: dict[str, float],
|
||||
dump_path: Path,
|
||||
raw_events: list[dict],
|
||||
error: str | None = None,
|
||||
exception_type: str | None = None,
|
||||
) -> dict:
|
||||
payload = {
|
||||
"trace_schema_version": TRACE_SCHEMA_VERSION,
|
||||
"trace_kind": TRACE_KIND,
|
||||
"run_id": run_id,
|
||||
"status": status,
|
||||
"ticker": ticker,
|
||||
"date": date,
|
||||
"variant_label": variant_label,
|
||||
"selected_analysts": selected_analysts,
|
||||
"analysis_prompt_style": analysis_prompt_style,
|
||||
"node_timings": node_timings,
|
||||
"summary": build_trace_summary(node_timings, phase_totals),
|
||||
"dump_path": str(dump_path),
|
||||
"raw_events": raw_events,
|
||||
}
|
||||
if error is not None:
|
||||
payload["error"] = error
|
||||
if exception_type is not None:
|
||||
payload["exception_type"] = exception_type
|
||||
return payload
|
||||
|
||||
|
||||
>>>>>>> 82e61cb (omx(team): auto-checkpoint worker-4 [unknown])
|
||||
def main() -> None:
|
||||
args = build_parser().parse_args()
|
||||
selected_analysts = [item.strip() for item in args.selected_analysts.split(",") if item.strip()]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from collections import Counter
|
||||
|
||||
TRACE_SCHEMA_VERSION = "tradingagents.profile_trace.v1alpha1"
|
||||
TRACE_KIND = "tradingagents_stage_profile"
|
||||
|
||||
|
||||
def build_trace_summary(node_timings: list[dict], phase_totals: dict[str, float]) -> dict:
|
||||
phase_totals_seconds = {key: round(value, 3) for key, value in phase_totals.items()}
|
||||
degraded_events = [entry for entry in node_timings if entry.get("research_status") not in (None, "full")]
|
||||
node_counter = Counter(node for entry in node_timings for node in entry.get("nodes", []))
|
||||
total_elapsed_ms = sum(int(entry.get("elapsed_ms", 0)) for entry in node_timings)
|
||||
return {
|
||||
"event_count": len(node_timings),
|
||||
"total_elapsed_ms": total_elapsed_ms,
|
||||
"phase_totals_seconds": phase_totals_seconds,
|
||||
"degraded_event_count": len(degraded_events),
|
||||
"final_research_status": node_timings[-1].get("research_status") if node_timings else None,
|
||||
"final_degraded_reason": node_timings[-1].get("degraded_reason") if node_timings else None,
|
||||
"unique_nodes": sorted(node_counter.keys()),
|
||||
"node_hit_count": dict(sorted(node_counter.items())),
|
||||
}
|
||||
Loading…
Reference in New Issue