diff --git a/docs/reports/Viewclinic_POC_Proposal.pdf b/docs/reports/Viewclinic_POC_Proposal.pdf index d829ded..ab5189c 100644 Binary files a/docs/reports/Viewclinic_POC_Proposal.pdf and b/docs/reports/Viewclinic_POC_Proposal.pdf differ diff --git a/docs/reports/Viewclinic_POC_Proposal.pptx b/docs/reports/Viewclinic_POC_Proposal.pptx index e909575..d7d6f4f 100644 Binary files a/docs/reports/Viewclinic_POC_Proposal.pptx and b/docs/reports/Viewclinic_POC_Proposal.pptx differ diff --git a/docs/reports/build_viewclinic_poc_deck.py b/docs/reports/build_viewclinic_poc_deck.py index 735d758..dcdb748 100644 --- a/docs/reports/build_viewclinic_poc_deck.py +++ b/docs/reports/build_viewclinic_poc_deck.py @@ -1,7 +1,7 @@ """ -Viewclinic AI Discovery POC Proposal 덱 빌드 (INFINITH Deck 규격, 14페이지) +Viewclinic AI Discovery POC Proposal 덱 빌드 (INFINITH Deck 규격, 15페이지) -제안 4장 + 진단 리포트 요약 5장 + 부록 4장(User Question Bank 120문항 실측) + 클로징 1장. +제안 4장 + 진단 리포트 요약 5장 + 부록 5장(두 점수 읽는 법 + User Question Bank 120문항 실측) + 클로징 1장. 부록 실측 데이터: docs/reports/Viewclinic_QB_Results_Combined.md (2026-09-01, OpenAI·Perplexity API) 본문 텍스트는 기본값 대비 +2pt (rows/bullets 18, grid 16.25, quote 19.25). @@ -181,10 +181,34 @@ s.stats3([ ("W7–8", "재진단. 미검증 4개 반영해\n총점 재산정."), ], y=s.band_y + 0.6) -# ── 부록 4장 · User Question Bank 120문항 실측 ─────────────────────────────── +# ── 부록 5장 · User Question Bank 120문항 실측 ─────────────────────────────── -# 10 Appendix 1 · Question Bank 설계 -s = d.slide(eyebrow="Appendix 1 / 4 · User Question Bank", +# 10 Appendix 1 · 두 점수 읽는 법 +s = d.slide(eyebrow="Appendix 1 / 5 · How To Read Two Scores", + title="진단 50점과 랭킹 2위는 ", title_accent="같은 사실입니다", + lede=["보고서 점수는 인용될 준비(원인)를, TOP50 랭킹 점수는 실제 등장(결과)을 잽니다.", + "뷰성형외과는 만점 840점 기준 23점, 168번의 답변 기회 중 6번 등장했습니다."], + section="Appendix · Two Scores") +W, Rail = s.cards2(y=s.band_y, split=0.66) +W.grid( + headers=["", "진단 점수 (보고서)", "랭킹 점수 (TOP50)"], + col_w=[2.2, 4.3, 4.4], + rows=[ + ["재는 것", "인용될 준비가 됐는가 (원인)", "실제 답변에 등장했는가 (결과)"], + ["계산", "36개 항목 체크리스트", "84문항 × 2엔진, 등장 순위 가중 합산"], + ["만점", "100점", "840점 (전 답변 1위 등장 시)"], + ["뷰성형외과", "50점 · 등급 C", "23점 · 2위 (등장률 3.6%, 만점 대비 2.7%)"], + ], + row_h=0.62, size=GRID, +) +Rail.title("같이 읽는 법").bullets([ + "2위는 빈 판의 상대 순위. 1위 디에이성형외과도 28/840.", + "진단에서 낮았던 B·C는 시술·가격 질문 등장 0회로, 높았던 D 표면은 23점 전부로 실증.", + "현재 순위의 근거는 남의 표면과 멈춘 블로그. 콘텐츠를 갖추면 1위 선점이 가능한 시점.", +], size=BODY) + +# 11 Appendix 2 · Question Bank 설계 +s = d.slide(eyebrow="Appendix 2 / 5 · User Question Bank", title="환자의 질문 120개를 ", title_accent="먼저 만들었습니다", lede=["잠재 환자가 AI에게 실제로 묻는 문장을 퍼널 4단계(인지·탐색·비교·결정)로 설계했습니다.", "질문마다 진단 실측 기준의 예상 판정을 붙여, 구축 전후 비교의 기준선으로 씁니다."], @@ -210,8 +234,8 @@ Rail.title("설계 원칙").bullets([ "사전판정: 인용 기대 5, 불안정 35, 인용 불가 80.", ], size=BODY) -# 11 Appendix 2 · 실측 방법과 요약 (dark) -s = d.slide(eyebrow="Appendix 2 / 4 · Measurement", +# 12 Appendix 3 · 실측 방법과 요약 (dark) +s = d.slide(eyebrow="Appendix 3 / 5 · Measurement", title="두 답변엔진에 120문항을 ", title_accent="전부 실측했습니다", lede="OpenAI와 Perplexity 정식 API로 서울 위치를 고정하고, 질문 원문 그대로 1회씩 질의했습니다.", dark=True, section="Appendix · Measurement") @@ -223,8 +247,8 @@ k4.kpi("3%", "PERPLEXITY · 논브랜드", "84문항 중 3문항 언급") quote_up(s, "소비자 UI 자동 조회는 약관 위반이라 쓰지 않았습니다. 정식 API 측정과 반복 스팟체크로만 보고합니다.", "INFINITH 정직성 규약") -# 12 Appendix 3 · 브랜드 vs 논브랜드 -s = d.slide(eyebrow="Appendix 3 / 4 · Findings", +# 13 Appendix 4 · 브랜드 vs 논브랜드 +s = d.slide(eyebrow="Appendix 4 / 5 · Findings", title="이름을 모르는 환자에게는 ", title_accent="존재하지 않습니다", lede=["병원명을 아는 환자의 질문에는 두 엔진 모두 답합니다.", "병원을 찾는 질문에서는 경쟁 병원이 추천 자리를 가져갑니다."], @@ -241,8 +265,8 @@ R.chip("논브랜드 질문 · 언급 3~11%", "critical").rows([ ("시술 정보 질문 전멸", "가격·회복기간·보형물 비교 질문에서 인용 0. FAQ 0개, HTML 표 0개의 직접 결과."), ], b_size=BODY) -# 13 Appendix 4 · 핵심 증거 -s = d.slide(eyebrow="Appendix 4 / 4 · Key Evidence", +# 14 Appendix 5 · 핵심 증거 +s = d.slide(eyebrow="Appendix 5 / 5 · Key Evidence", title="멈춘 블로그가 아직 ", title_accent="인용되고 있습니다", lede="ChatGPT가 논브랜드 질문에서 뷰성형외과를 인용한 드문 사례의 출처는 2024년 5월에 멈춘 자사 블로그였습니다.", section="Appendix · Evidence") @@ -260,7 +284,7 @@ c.chip("함의", "good").title("P1 콘텐츠의 근거").bullets([ "8주 재측정에서 같은 120문항으로 변화를 확인합니다.", ], size=BODY) -# 14 Closing — 제안서 포맷 (웹 CTA 버튼 없음, 다음 단계 3줄) +# 15 Closing — 제안서 포맷 (웹 CTA 버튼 없음, 다음 단계 3줄) raw = d._new(False) ifd._write(ifd._tb(raw, ifd.MARGIN, 2.12, ifd.CONTENT_W, 0.47), "NEXT STEP · POC PROPOSAL", ifd.T_EYEBROW, ifd.SANS, bold=True, color=ifd.VIOLET, spc=300)