from apps.editor.models import Project, OpenAITranscriptionLog
from decimal import Decimal
from django.utils import timezone
from datetime import timedelta

p = Project.objects.get(pk=8)
since = timezone.now() - timedelta(hours=2)
qs = OpenAITranscriptionLog.objects.filter(
    project=p, operation_name="supreme-aporte-eval", created_at__gte=since
).order_by("created_at")

n = qs.count()
ok = qs.filter(status="completed").count()
err = qs.filter(status="error").count()
inp = sum(int(getattr(l, "input_tokens", 0) or 0) for l in qs)
cached = sum(int(getattr(l, "cached_input_tokens", 0) or 0) for l in qs)
out = sum(int(getattr(l, "output_tokens", 0) or 0) for l in qs)
tot = sum(int(getattr(l, "total_tokens", 0) or 0) for l in qs)
cost = sum(Decimal(str(getattr(l, "estimated_cost_usd", 0) or 0)) for l in qs)
models = sorted({getattr(l, "model_name", "") for l in qs})

print("=== SUPREME aporte-eval @ project 8 (last 2h) ===")
print(f"requests: {n}  completed: {ok}  errors: {err}")
print(f"models  : {models}")
print(f"tokens  : input={inp}  cached={cached}  output={out}  total={tot}")
print(f"cost USD: {cost}")
print()
print("--- per request ---")
for l in qs:
    v = ""
    try:
        rp = l.response_payload or {}
        ch = (rp.get("choices") or [{}])[0]
        msg = (ch.get("message") or {}).get("content") or ""
        v = msg[:90].replace("\n", " ")
    except Exception:
        pass
    print(f"  #{l.request_index} {l.created_at:%H:%M:%S} {l.status:9s} in={l.input_tokens or 0} out={l.output_tokens or 0} cost=${l.estimated_cost_usd or 0} :: {v}")
