52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
from domain.usage_tracking import record_api_usage
|
|
|
|
|
|
def test_record_api_usage_aggregates_summary_phases_and_details():
|
|
result = record_api_usage(
|
|
{},
|
|
phase="extract",
|
|
model="gpt-5.6-luna",
|
|
usage={
|
|
"prompt_tokens": 1_000,
|
|
"completion_tokens": 200,
|
|
"total_tokens": 1_200,
|
|
"prompt_tokens_details": {"cached_tokens": 100},
|
|
},
|
|
radicado="RAD-1",
|
|
filename="factura.pdf",
|
|
)
|
|
result = record_api_usage(
|
|
result,
|
|
phase="extract",
|
|
model="gpt-5.6-luna",
|
|
usage={"prompt_tokens": 500, "completion_tokens": 50},
|
|
radicado="RAD-2",
|
|
)
|
|
|
|
ledger = result["api_usage"]
|
|
assert ledger["summary"]["requests"] == 2
|
|
assert ledger["summary"]["prompt_tokens"] == 1_500
|
|
assert ledger["summary"]["completion_tokens"] == 250
|
|
assert ledger["summary"]["total_tokens"] == 1_750
|
|
assert ledger["summary"]["unpriced_requests"] == 0
|
|
assert ledger["phases"]["extract"]["requests"] == 2
|
|
assert ledger["details"][0]["filename"] == "factura.pdf"
|
|
assert ledger["details"][0]["pricing_known"] is True
|
|
|
|
|
|
def test_record_api_usage_marks_unknown_model_as_unpriced():
|
|
result = record_api_usage(
|
|
{},
|
|
phase="extract",
|
|
model="provider/model-without-price",
|
|
usage={"prompt_tokens": 100, "completion_tokens": 10},
|
|
)
|
|
|
|
assert result["api_usage"]["summary"]["unpriced_requests"] == 1
|
|
assert result["api_usage"]["details"][0]["pricing_known"] is False
|
|
|
|
|
|
def test_record_api_usage_ignores_missing_usage():
|
|
original = {"processed": 1}
|
|
assert record_api_usage(original, phase="extract", model="gpt-5.6-luna", usage=None) == original
|