Фикс состояния

This commit is contained in:
2026-03-12 16:55:23 +03:00
parent 417b8b6f72
commit 6ba0a18ac9
1445 changed files with 620025 additions and 885 deletions
+82
View File
@@ -0,0 +1,82 @@
from __future__ import annotations
from dataclasses import dataclass, field
from pathlib import Path
from typing import Literal
RunnerKind = Literal["runtime", "code_qa_eval"]
ModeKind = Literal["router_only", "router_rag", "full_chain"]
@dataclass(slots=True, frozen=True)
class CaseInput:
repo_path: Path | None = None
project_id: str | None = None
rag_session_id: str | None = None
@dataclass(slots=True, frozen=True)
class RouterExpectation:
intent: str | None = None
sub_intent: str | None = None
graph_id: str | None = None
conversation_mode: str | None = None
@dataclass(slots=True, frozen=True)
class RetrievalExpectation:
non_empty: bool | None = None
min_rows: int | None = None
direct_symbol_test_hits_max: int | None = None
path_scope_contains: tuple[str, ...] = ()
symbol_candidates_contain: tuple[str, ...] = ()
layers_include: tuple[str, ...] = ()
@dataclass(slots=True, frozen=True)
class LlmExpectation:
non_empty: bool | None = None
contains_all: tuple[str, ...] = ()
excludes: tuple[str, ...] = ()
@dataclass(slots=True, frozen=True)
class PipelineExpectation:
answer_mode: str | None = None
@dataclass(slots=True, frozen=True)
class CaseExpectations:
router: RouterExpectation = RouterExpectation()
retrieval: RetrievalExpectation = RetrievalExpectation()
llm: LlmExpectation = LlmExpectation()
pipeline: PipelineExpectation = PipelineExpectation()
@dataclass(slots=True, frozen=True)
class V2Case:
case_id: str
runner: RunnerKind
mode: ModeKind
query: str
source_file: Path
input: CaseInput = CaseInput()
expectations: CaseExpectations = CaseExpectations()
notes: str = ""
tags: tuple[str, ...] = ()
@dataclass(slots=True, frozen=True)
class ExecutionPayload:
actual: dict
details: dict
@dataclass(slots=True)
class V2CaseResult:
case: V2Case
actual: dict
details: dict
passed: bool
mismatches: list[str] = field(default_factory=list)