Initial SQL-only 1C adapter baseline
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
sys.path.insert(0, str(ROOT / "scripts"))
|
||||
|
||||
import export_quality_snapshot as snapshot_script # noqa: E402
|
||||
import report_failed_turns as failed_turns_script # noqa: E402
|
||||
|
||||
|
||||
def write_jsonl(path: Path, records: list[dict]) -> None:
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
with path.open("w", encoding="utf-8") as handle:
|
||||
for record in records:
|
||||
handle.write(json.dumps(record, ensure_ascii=False) + "\n")
|
||||
|
||||
|
||||
def test_report_failed_turns_writes_output_file(tmp_path: Path) -> None:
|
||||
output = tmp_path / "failed-turns.json"
|
||||
payload = {"records": 3, "failed_turns": []}
|
||||
failed_turns_script.write_report(output, payload)
|
||||
assert json.loads(output.read_text(encoding="utf-8"))["records"] == 3
|
||||
|
||||
|
||||
def test_export_quality_snapshot_writes_dated_artifacts_and_index(tmp_path: Path) -> None:
|
||||
root = tmp_path / "reports" / "observability" / "onec-agent"
|
||||
write_jsonl(
|
||||
root / "turn_audit" / "20260705.jsonl",
|
||||
[
|
||||
{
|
||||
"event_type": "turn_audit",
|
||||
"timestamp": "2026-07-02T10:00:00+00:00",
|
||||
"turn_id": "bad-1",
|
||||
"request_id": "req-1",
|
||||
"outcome": "failure",
|
||||
"failure_type": "adapter_error",
|
||||
"error_code": "adapter_error",
|
||||
"error_message": "missing base_id",
|
||||
"user_text": "Проверь сохраненное состояние",
|
||||
},
|
||||
{
|
||||
"event_type": "turn_audit",
|
||||
"timestamp": "2026-07-03T10:00:00+00:00",
|
||||
"turn_id": "bad-2",
|
||||
"request_id": "req-2",
|
||||
"outcome": "failure",
|
||||
"failure_type": "adapter_error",
|
||||
"error_code": "adapter_error",
|
||||
"error_message": "missing base_id",
|
||||
"user_text": "Проверь сохраненное состояние",
|
||||
},
|
||||
],
|
||||
)
|
||||
write_jsonl(
|
||||
root / "model_calls" / "20260705.jsonl",
|
||||
[
|
||||
{"event_type": "model_calls", "route_name": "1c", "served_model_name": "stub-model", "latency_ms": 20},
|
||||
],
|
||||
)
|
||||
write_jsonl(
|
||||
root / "tool_calls" / "20260705.jsonl",
|
||||
[
|
||||
{"event_type": "tool_calls", "tool_name": "tool.echo", "duration_ms": 5},
|
||||
],
|
||||
)
|
||||
write_jsonl(
|
||||
root / "retrieval_events" / "20260705.jsonl",
|
||||
[
|
||||
{"event_type": "retrieval_events", "plugin": "1c", "profile": "official", "sources_json": [{"a": 1}]},
|
||||
],
|
||||
)
|
||||
|
||||
output_dir = tmp_path / "reports" / "observability" / "quality"
|
||||
payload = snapshot_script.build_snapshot(
|
||||
report_dir=tmp_path / "reports" / "observability",
|
||||
output_dir=output_dir,
|
||||
days=0,
|
||||
limit=10,
|
||||
min_repeat_count=2,
|
||||
failed_limit=100,
|
||||
)
|
||||
|
||||
quality_path = Path(payload["paths"]["quality"])
|
||||
repeated_path = Path(payload["paths"]["repeated_failures"])
|
||||
failed_path = Path(payload["paths"]["failed_turns"])
|
||||
index_path = Path(payload["paths"]["index"])
|
||||
|
||||
assert quality_path.exists()
|
||||
assert repeated_path.exists()
|
||||
assert failed_path.exists()
|
||||
assert index_path.exists()
|
||||
|
||||
index = json.loads(index_path.read_text(encoding="utf-8"))
|
||||
assert index["snapshots"]
|
||||
assert index["snapshots"][0]["summary"]["failed_turns"] == 2
|
||||
assert index["snapshots"][0]["summary"]["repeated_failures"] == 1
|
||||
Reference in New Issue
Block a user