diff --git a/docs/reports/Viewclinic_QB_Results.xlsx b/docs/reports/Viewclinic_QB_Results.xlsx index 837e8a0..8068109 100644 Binary files a/docs/reports/Viewclinic_QB_Results.xlsx and b/docs/reports/Viewclinic_QB_Results.xlsx differ diff --git a/scripts/export_qb_excel.py b/scripts/export_qb_excel.py index bf1ced5..389b8ed 100644 --- a/scripts/export_qb_excel.py +++ b/scripts/export_qb_excel.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Question Bank 120문항 + 2엔진 실측 결과를 엑셀(xlsx)로 내보낸다. -시트: 요약 / 통합결과 / 병원빈도 / TOP20 / GPT상세 / PPLX상세 +시트: 요약 / 통합결과 / 병원빈도 / TOP50 / GPT상세 / PPLX상세 """ import json import os @@ -146,8 +146,8 @@ def main(): ws.column_dimensions[col].width = w # ── TOP20 (논브랜드 84문항 · 2엔진 합산 랭킹) ───────── - ws = wb.create_sheet("TOP20") - ws["A1"] = "성형외과 AI Discovery TOP 20 (논브랜드 84문항 · ChatGPT+Perplexity 합산)" + ws = wb.create_sheet("TOP50") + ws["A1"] = "성형외과 AI Discovery TOP 50 (논브랜드 84문항 · ChatGPT+Perplexity 합산)" ws["A1"].font = Font(bold=True, size=14, color=INK) ws["A2"] = "점수 = 답변 내 등장 순위 가중치(1위 5점 ~ 5위 1점)를 질문·엔진 단위로 합산. 브랜드 직접 질문 36문항은 제외." ws["A2"].font = Font(size=10, color="666B7A") @@ -179,11 +179,11 @@ def main(): ranked = sorted(agg.values(), key=lambda a: (-a["score"], -a["first"], -(a["gpt"] + a["pplx"]))) view_rank = next((i + 1 for i, a in enumerate(ranked) if canon(a["label"]) == "뷰성형외과"), None) - shown = ranked[:20] - if view_rank and view_rank > 20: - shown = ranked[:20] + [ranked[view_rank - 1]] + shown = ranked[:50] + if view_rank and view_rank > 50: + shown = ranked[:50] + [ranked[view_rank - 1]] for idx, a in enumerate(shown): - rank = idx + 1 if idx < 20 else view_rank + rank = idx + 1 if idx < 50 else view_rank cats = " · ".join(k for k, _ in sorted(a["cats"].items(), key=lambda x: -x[1])[:3]) ws.append([rank, a["label"], a["score"], a["gpt"] + a["pplx"], a["gpt"], a["pplx"], a["first"], cats]) if canon(a["label"]) == "뷰성형외과":