feat(api): §10 JSON-lines call logging (full prompt + seed, injectable sink)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
34
api/tests/test_call_log.py
Normal file
34
api/tests/test_call_log.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import json
|
||||
|
||||
from app.call_log import record
|
||||
|
||||
|
||||
def test_success_record_shape():
|
||||
captured = []
|
||||
rec = record(
|
||||
role="narrator", model="qwen3.5:latest", options={"seed": 7},
|
||||
messages=[{"role": "user", "content": "x"}], canon_log={"a": 1},
|
||||
ok=True, latency_ms=120, response="prose", write=captured.append,
|
||||
)
|
||||
assert len(captured) == 1
|
||||
parsed = json.loads(captured[0])
|
||||
assert parsed["ok"] is True
|
||||
assert parsed["response"] == "prose"
|
||||
assert parsed["options"]["seed"] == 7
|
||||
assert parsed["role"] == "narrator"
|
||||
assert parsed["canon_log"] == {"a": 1}
|
||||
assert "error" not in parsed
|
||||
assert "ts" in parsed
|
||||
assert rec["response"] == "prose"
|
||||
|
||||
|
||||
def test_failure_record_shape():
|
||||
captured = []
|
||||
record(
|
||||
role="narrator", model="m", options={}, messages=[], canon_log={},
|
||||
ok=False, latency_ms=5, error="ModelError: down", write=captured.append,
|
||||
)
|
||||
parsed = json.loads(captured[0])
|
||||
assert parsed["ok"] is False
|
||||
assert parsed["error"] == "ModelError: down"
|
||||
assert "response" not in parsed
|
||||
Reference in New Issue
Block a user