From 022546f8d34681ac533a64e3015d73d922af8569 Mon Sep 17 00:00:00 2001 From: mzl92 Date: Thu, 27 Aug 2026 16:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E7=BE=8E=E5=8C=96:?= =?UTF-8?q?=20=E8=AF=84=E5=88=86=E6=98=8E=E7=BB=86=E6=94=B9=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E6=A0=87=E7=AD=BE+=E4=BA=94=E6=A0=BC=E8=83=BD?= =?UTF-8?q?=E9=87=8F=E6=9D=A1=E5=8D=A1=E7=89=87,=20=E9=97=A8=E6=A7=9B?= =?UTF-8?q?=E5=91=BD=E4=B8=AD=E6=94=B9=E7=BB=BF=E5=BE=BD=E7=AB=A0/?= =?UTF-8?q?=E6=8B=A6=E6=88=AA=E7=BA=A2=E5=BE=BD=E7=AB=A0,=20=E7=AE=80?= =?UTF-8?q?=E5=8E=86=E5=85=A8=E6=96=87=E6=8C=89=E6=AE=B5=E8=90=BD=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E5=88=86=E8=8A=82=E9=AB=98=E4=BA=AE=E9=87=8D=E6=8E=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.html | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/public/index.html b/public/index.html index 07ae8cd..88f381e 100644 --- a/public/index.html +++ b/public/index.html @@ -41,6 +41,19 @@ tr:hover td{background:#f8fafc;cursor:pointer} .err{color:var(--bad);font-size:13px;margin-bottom:8px;min-height:18px} .note{color:var(--sub);font-size:12px;margin-top:10px;text-align:center} .detail pre{white-space:pre-wrap;background:#f9fafb;border:1px solid var(--line);border-radius:8px;padding:12px;font-size:12px;max-height:400px;overflow:auto} +.scores{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px;margin:8px 0 10px} +.sc{background:#f9fafb;border:1px solid var(--line);border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:8px} +.sc .k{font-size:12px;color:var(--sub);flex:0 0 56px} +.sc .bars{display:flex;gap:2px} +.sc .bars i{width:13px;height:8px;border-radius:2px;background:#e5e7eb} +.sc .bars i.on{background:var(--ok)} +.sc b{margin-left:auto;font-size:13px} +.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px} +.chip{padding:2px 12px;border-radius:12px;font-size:12px} +.chip.ok{background:#dcfce7;color:#15803d} +.chip.bad{background:#fee2e2;color:#b91c1c} +.resume{white-space:pre-wrap;font-size:14px;line-height:1.9;background:#f9fafb;border:1px solid var(--line);border-radius:8px;padding:14px 18px;max-height:460px;overflow:auto;color:#374151} +.secTitle{display:inline-block;font-weight:600;color:var(--pri);margin-top:8px;border-bottom:2px solid #dbeafe;padding-bottom:2px} .kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:12px} .kv div{background:#f9fafb;border-radius:6px;padding:6px 10px}.kv span{color:var(--sub)} .bars{display:flex;align-items:flex-end;gap:10px;height:120px;padding:8px 4px} @@ -306,7 +319,21 @@ function page(d){const n=pageCur+d;if(n>=1&&n<=pageTotal)loadList(n)} function exportCsv(){location.href='/api/export.csv'+qs()} async function showDetail(id){ const r=await api('/api/candidates/'+encodeURIComponent(id)); - let det='';try{const j=JSON.parse(r.score_details);det=Object.entries(j).map(([k,v])=>`${k}=${Array.isArray(v)?JSON.stringify(v):v}`).join(' ')}catch{} + // 评分明细 → 中文标签 + 五格能量条 + let detHtml=''; + try{ + const j=JSON.parse(r.score_details||'{}'); + const names={industryScore:'行业匹配',tradeScore:'外贸核心',langScore:'语言能力',channelScore:'客户开发',majorScore:'专业背景',stabilityScore:'稳定性',activityScore:'活跃度'}; + const dims=Object.entries(j).filter(([k])=>names[k]); + if(dims.length)detHtml+='
'+dims.map(([k,v])=>`
${names[k]}${[1,2,3,4,5].map(i=>``).join('')}${v??'-'}
`).join('')+'
'; + const gr=j.gateReasons?(Array.isArray(j.gateReasons)?j.gateReasons:[j.gateReasons]):[]; + if(gr.length)detHtml+='
'+gr.map(x=>`✓ ${esc(String(x))}`).join('')+'
'; + if(j.gateReason)detHtml+=`
✗ ${esc(j.gateReason)}
`; + }catch{} + // 简历全文 → 按段落标题分节高亮 + let body=esc(r.raw_text||'(无)'); + for(const t of ['教育经历','工作经历','项目经历','个人优势','专业技能','语言能力','所获证书','证书','求职期望','岗位经验']) + body=body.replace(new RegExp('^('+t+')$','gm'),'$1'); $('detailBody').innerHTML=`

${esc(r.name)} ${esc(r.score_level)} ${r.score}分 ${r.role_tag?`${esc(r.role_tag)}`:''}

年龄 ${r.age??'-'}(${r.exp_years??'?'}年经验)
@@ -318,8 +345,8 @@ async function showDetail(id){
抓取 ${esc(r.scraped_at)}
门槛 ${esc(r.notes)||'-'}
- ${det?`
${esc(det)}
`:''} -

简历全文

${esc(r.raw_text)}
`; + ${detHtml} +

简历全文

${body}
`; $('detailModal').classList.remove('hidden'); } async function openUserModal(){