feat(advisor-comparison): add AdvisorComparison models and ReportData field
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
+27
-1
@@ -3,7 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime, timezone
|
||||
from typing import Any
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
||||
|
||||
@@ -77,6 +77,28 @@ class SampleScore(BaseModel):
|
||||
)
|
||||
|
||||
|
||||
class AdvisorComparisonEntry(BaseModel):
|
||||
"""One metric's diagnosis delta between the current run and its predecessor."""
|
||||
|
||||
metric: str
|
||||
status: Literal["resolved", "regressed", "still_triggered", "new_metric"]
|
||||
previous_score: float | None = None
|
||||
previous_severity: str | None = None
|
||||
current_score: float | None = None
|
||||
current_severity: str | None = None
|
||||
|
||||
|
||||
class AdvisorComparison(BaseModel):
|
||||
"""Advisor-diagnosis comparison against the same scenario's previous run."""
|
||||
|
||||
previous_run_id: str
|
||||
previous_finished_at: str
|
||||
previous_judge_model: str = ""
|
||||
current_judge_model: str = ""
|
||||
judge_model_changed: bool = False
|
||||
entries: list[AdvisorComparisonEntry] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ReportData(BaseModel):
|
||||
"""Aggregated report payload rendered by the report detail page."""
|
||||
|
||||
@@ -103,6 +125,10 @@ class ReportData(BaseModel):
|
||||
default_factory=dict,
|
||||
description="按模型累计的 token 用量:{model: {input_tokens, output_tokens, calls}}。",
|
||||
)
|
||||
advisor_comparison: AdvisorComparison | None = Field(
|
||||
default=None,
|
||||
description="相比同场景上一次运行的顾问诊断差异;无可比对象时为 None。",
|
||||
)
|
||||
|
||||
|
||||
class RunDetail(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user