47 lines
963 B
Python
47 lines
963 B
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass, field
|
|
from pathlib import Path
|
|
from typing import Literal
|
|
|
|
|
|
ComponentKind = Literal["process_v2_intent_router"]
|
|
|
|
|
|
@dataclass(slots=True, frozen=True)
|
|
class RouterExpectation:
|
|
domain: str | None = None
|
|
intent: str | None = None
|
|
sub_intent: str | None = None
|
|
|
|
|
|
@dataclass(slots=True, frozen=True)
|
|
class CaseExpectations:
|
|
router: RouterExpectation = RouterExpectation()
|
|
|
|
|
|
@dataclass(slots=True, frozen=True)
|
|
class V4Case:
|
|
case_id: str
|
|
component: ComponentKind
|
|
query: str
|
|
source_file: Path
|
|
expectations: CaseExpectations = CaseExpectations()
|
|
notes: str = ""
|
|
tags: tuple[str, ...] = ()
|
|
|
|
|
|
@dataclass(slots=True, frozen=True)
|
|
class ExecutionPayload:
|
|
actual: dict
|
|
details: dict
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class V4CaseResult:
|
|
case: V4Case
|
|
actual: dict
|
|
details: dict
|
|
passed: bool
|
|
mismatches: list[str] = field(default_factory=list)
|