#!/usr/bin/env python3
"""이번 주행 Opik span 을 모델·이름·태그로 분해한다 — 무엇이 남고 무엇이 없는가."""
import sys
from collections import Counter

sys.path.insert(0, "/Users/manta/Documents/Projects/TheRoad-I1/scratchpad")
from _opik_env import opik_target  # ★cwd 를 backend 로 고정 + 미로드 시 중단
from tools.opik_prompt_audit.audit.fetch import fetch_spans, fetch_trace_index
from app.core.config import settings

BASE, WS, PROJ = opik_target()


SINCE, UNTIL = "2026-08-24T13:00:00", "2026-08-24T16:10:00"

spans = fetch_spans(BASE, WS, PROJ, SINCE, UNTIL)
traces = fetch_trace_index(BASE, WS, PROJ, SINCE, UNTIL)
print(f"span {len(spans)} · trace {len(traces)}\n")

by_model = Counter()
by_name = Counter()
by_type = Counter()
for s in spans:
    by_model[s.get("model") or "(모델없음)"] += 1
    by_name[s.get("name") or "(이름없음)"] += 1
    by_type[s.get("type") or "(형없음)"] += 1

print("── 모델별 ──")
for k, v in by_model.most_common(20):
    print(f"  {v:>4}  {k}")
print("\n── span 이름별 ──")
for k, v in by_name.most_common(20):
    print(f"  {v:>4}  {k}")
print("\n── span 형(type) ──")
for k, v in by_type.most_common():
    print(f"  {v:>4}  {k}")

print("\n── trace 이름별 ──")
tn = Counter(t.get("name") or "(이름없음)" for t in traces.values())
for k, v in tn.most_common(15):
    print(f"  {v:>4}  {k}")
