From 9c478e80fdd275d317b8eeadc1e45bb962a835d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=ED=97=8C?= Date: Thu, 9 Jul 2026 15:17:42 +0900 Subject: [PATCH] =?UTF-8?q?chore(lps):=20=EC=9E=84=EC=8B=9C=20FE=20?= =?UTF-8?q?=E2=80=94=20=EA=B2=80=EC=83=89=20=EC=9B=90=EA=B0=80=204?= =?UTF-8?q?=ED=83=80=EC=9D=BC(=EC=86=8C=EC=9A=94/AI=EB=B9=84=EC=9A=A9/?= =?UTF-8?q?=ED=86=A0=ED=81=B0/=ED=81=AC=EB=A1=A4=20=ED=8A=B8=EB=9E=98?= =?UTF-8?q?=ED=94=BD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 작업 카드에 result.metrics 렌더: 소요시간(+소스별), AI 비용$·호출수, AI 토큰(in/out), 크롤 트래픽(html bytes·fetch수·크롤 몰). Co-Authored-By: Claude Fable 5 --- lps-temp-fe/index.html | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lps-temp-fe/index.html b/lps-temp-fe/index.html index 7bf6592..8edb040 100644 --- a/lps-temp-fe/index.html +++ b/lps-temp-fe/index.html @@ -135,6 +135,15 @@ .sec-title{font-size:12px;font-weight:700;color:var(--text-700);margin:0 0 9px;display:flex;align-items:center;gap:7px} .sec-title .cnt{font-size:11px;color:var(--text-400);font-weight:600} + /* 검색 원가 계측 */ + .metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px} + @media (max-width:520px){.metrics{grid-template-columns:repeat(2,1fr)}} + .metric{border:1px solid var(--border-2);border-radius:var(--radius-sm);padding:10px 11px;background:var(--surface-2)} + .metric .mk{font-size:10.5px;font-weight:700;color:var(--text-400);text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px} + .metric .mv{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1} + .metric .mv small{font-size:11px;font-weight:600;color:var(--text-500)} + .metric .msub{font-size:10.5px;color:var(--text-400);font-weight:600;margin-top:2px} + table{width:100%;border-collapse:collapse;font-size:13px} th{text-align:left;font-size:11px;font-weight:700;color:var(--text-500);text-transform:uppercase;letter-spacing:.03em;padding:8px 10px;border-bottom:1px solid var(--border-2)} td{padding:9px 10px;border-bottom:1px solid var(--border-2);vertical-align:top} @@ -499,6 +508,23 @@ function renderJob(d, submitted){ html += ``; } + // 검색 원가 계측(리소스/비용/시간) + const mt=o.metrics; + if(mt){ + const kb=(mt.crawl?.html_bytes||0)/1024; + const kbTxt = kb>=1024 ? (kb/1024).toFixed(1)+" MB" : Math.round(kb)+" KB"; + const cost=mt.ai?.est_cost_usd||0; + const srcMs=mt.source_ms||{}; + const srcTxt=Object.entries(srcMs).map(([s,ms])=>`${(SRC[s]||{}).label||s} ${(ms/1000).toFixed(1)}s`).join(" · "); + html += `
검색 원가 이 검색 1건이 쓴 리소스·비용·시간
+
+
소요 시간
${(mt.duration_ms/1000).toFixed(1)}s
${srcTxt?`
${esc(srcTxt.length>34?srcTxt.slice(0,34)+'…':srcTxt)}
`:``}
+
AI 비용
$${cost.toFixed(cost<0.01?6:4)}
${mt.ai?.calls||0}회 호출
+
AI 토큰
${won((mt.ai?.prompt_tokens||0)+(mt.ai?.completion_tokens||0))}
in ${won(mt.ai?.prompt_tokens||0)} / out ${won(mt.ai?.completion_tokens||0)}
+
크롤 트래픽
${kbTxt}
${mt.crawl?.fetches||0} fetch${(mt.crawl?.malls_crawled||[]).length?' · 크롤 '+mt.crawl.malls_crawled.map(s=>(SRC[s]||{}).label||s).join(','):''}
+
`; + } + // 몰별 최저가 분해 (네이버 payload에 이미 들어온 G마켓/옥션/11번가 등을 추가요청 0으로 노출) const byMall=o.by_mall||[]; if(byMall.length>1){