import{n as e}from"./chunk-B3pr0VN8.js";import{r as t}from"./authSession-CrP9lMPq.js";import{n,t as r}from"./norm-CeclA1Tu.js";import{o as i}from"./cloudModel-CGo_el7I.js";import{n as a}from"./llmSettings-A1Pww_S_.js";import{n as o}from"./salaryText-CekgZn20.js";import{a as s,t as c}from"./llm-BJZzBJtf.js";import{t as l}from"./privacyMask-CsOBYv0S.js";import{t as u}from"./aiTextSanitize-ZumMeeNC.js";import{t as d}from"./roleTaxonomy-CL03wfHw.js";var f=e({extractResumeFromPdfTextWithAiGateway:()=>C,recognizeJobFieldsOffline:()=>x,recognizeJobFieldsWithAiGateway:()=>S}),p=async e=>{try{let e=await t(),n=String(e?.user?.id||``).trim();if(n)return`u:${n}`.slice(0,120)}catch{}return String(e||`public`).slice(0,120)||`public`},m=(e,t)=>{let n=String(e||``).trim();return n?n.length>t?`${n.slice(0,t)}…`:n:``},h=(e,t)=>{let n=e.findIndex(e=>e===t||e.includes(t));if(n<0)return``;let r=[];for(let t=n+1;t<Math.min(e.length,n+8);t++){let n=e[t];if(n&&!(n.length<=1)){if(/^(相似职位|热门|查看更多|公司主页|关于我们|法律协议)/.test(n))break;r.push(n)}}return r.join(` `)},g=e=>{let t=String(e||``).replace(/\r/g,`
`),n=t.match(/(?:入职公司|公司名称|公司|发布公司)\s*[:：]\s*([^\n]{2,60})/i)?.[1];if(n)return String(n).trim();let r=t.split(`
`).map(e=>String(e||``).trim()).filter(Boolean),i=h(r,`入职公司信息`)||h(r,`公司信息`);return i&&i.length<=80?i:``},_=e=>/(\d{2,}|号|路|街|道|巷|弄|大厦|园区|园|广场|写字楼|楼|室|层|镇|街道)/.test(String(e||``)),v=e=>{let t=String(e||``).trim();if(!t||/注册时间|成立时间|更新时间|更新于|昨日活跃|活跃|发布时间|发布日期/.test(t))return 0;let n=Math.min(120,t.length);return/\d/.test(t)&&(n+=30),_(t)&&(n+=40),/[省市区县镇街道]/.test(t)&&(n+=10),n},y=e=>{let t=String(e||``).replace(/\r/g,`
`),n=t.split(`
`).map(e=>String(e||``).trim()).filter(Boolean),r=[`工作地点`,`工作地址`,`上班地址`,`办公地址`,`公司地址`,`地址`],i=``;if(/liepin\.com/i.test(t)||/猎聘/.test(t)){for(let e=0;e<n.length;e++){let t=n[e];if(t===`职位地址`||t.includes(`职位地址`)){let r=(t.replace(/^职位地址\s*[:：]?\s*/,``).trim()||n.slice(e+1,e+4).join(` `)).replace(/\s+/g,` `).trim();v(r)>v(i)&&(i=r)}}if(i)return i.trim()}for(let e of n){let t=e.match(/^(工作地点|工作地址|上班地址|办公地址|公司地址|地址)\s*[:：]?\s*(.+)$/);if(t?.[2]){let e=String(t[2]).trim();v(e)>v(i)&&(i=e)}}for(let e=0;e<n.length;e++){let t=n[e];if(r.some(e=>t===e||t.includes(e))){let t=n.slice(e+1,e+4).join(` `);v(t)>v(i)&&(i=t)}}let a=/([^\n]{2,}(?:省|市)[^\n]{0,30}(?:区|县|镇|街道)[^\n]{0,80}(?:路|街|道|巷|弄|号|大厦|园区|园|广场|写字楼|楼|室))/g,o=null;for(;o=a.exec(t);){let e=String(o[1]||``).trim();v(e)>v(i)&&(i=e)}return i.trim()},b=(e,t,n)=>{let r=e&&typeof e==`object`?e:{},i=e=>String(e??``).trim(),a=e=>{let t=i(e);return!t||/^(unknown|n\/a|null|undefined|无|暂无|没有)$/i.test(t)?``:t},s=a(r.jd)||n,c=String(n||``),l=y(c),u=g(c),d=a(r.location)||``,f=l&&v(l)>v(d)?l:d,p=a(r.company)||u,m=a(r.salaryText||r.salary||r.salary_text),h=(()=>{let e=o(m);return!e||!/\d/.test(e)||/^[-–—~至到]*\s*[Kk]\b/.test(e)?``:e})();return{lang:a(r.lang)||t,title:a(r.title),company:p,location:f,salaryText:h,experience:a(r.experience),education:a(r.education),jd:s?String(s).trim():``}},x=e=>{let t=n(),r=String(e||``).trim();if(!r)return{lang:t,title:``,company:``,location:``,salaryText:``,experience:``,education:``,jd:``};let i=r.split(/\r?\n/).map(e=>String(e||``).replace(/\u00A0/g,` `).trim()).filter(Boolean),a=e=>{for(let t of i){let n=t.match(e);if(n?.[1])return String(n[1]).trim()}return``};return{lang:t,title:a(/^(?:岗位|职位|招聘|Title)\s*[:：]\s*(.+)$/i)||(i[0]&&i[0].length<=40?i[0]:``),company:a(/^(?:公司|Company)\s*[:：]\s*(.+)$/i),location:a(/^(?:地点|地址|Location)\s*[:：]\s*(.+)$/i),salaryText:a(/^(?:薪资|待遇|Salary)\s*[:：]\s*(.+)$/i)||(r.match(/(\d+(?:\.\d+)?\s*[-–—~至到]\s*\d+(?:\.\d+)?\s*(?:K|k|万|w|W)(?:\s*·\s*\d{1,3}\s*薪)?|\d+(?:\.\d+)?\s*(?:K|k|万|w|W)(?:\s*·\s*\d{1,3}\s*薪)?|面议|薪资面议)/)?.[1]||``).trim(),experience:(r.match(/(经验不限|应届生|应届|在校\/应届|在校|校招|校园招聘|实习生|实习|20\d{2}届|1-3年|3-5年|5-10年|10年以上|\d{1,2}-\d{1,2}年|\d{1,2}年以上|10年及以上)/)?.[0]||``).trim(),education:(r.match(/(学历不限|初中及以下|高中|中专|大专|本科|硕士|博士|统招本科)/)?.[0]||``).trim(),jd:r}},S=async(e,t)=>{let o=await a(),d=await i(),f=typeof d==`string`&&d.startsWith(`custom:`);if(!f&&!o.enabled)throw Error(`AI 服务未启用，请在设置中开启 AI 代理`);if(!f&&!o.proxyUrl)throw Error(`AI 代理未配置：缺少 Proxy URL`);let h=await p(o.clientId||`public`),g=d===`glm5`,_=n(),v=String(e||``).trim();if(!v)throw Error(_.toLowerCase().startsWith(`zh`)?`请先粘贴识别文本`:`Paste text first`);let y=await r(),x=g?3800:8200,S=m(u(v)||v,x),C=y?l(S,y):S,w=async e=>{let n=await c({proxyUrl:o.proxyUrl||`custom://local`,gatewayApiKey:o.gatewayApiKey||``,clientId:h,tier:o.tier,preset:e,data:{lang:_,text:C},signal:t?.signal}),r=null;try{r=JSON.parse(s(n))}catch{let e=String(n||``).slice(0,220).replace(/\s+/g,` `).trim();throw Error(e?`代理未返回可解析的 JSON：${e}`:`代理未返回可解析的 JSON`)}return b(r,_,v)},T=e=>{let t=e=>String(e??``).trim();return!t(e?.title)&&!t(e?.company)&&!t(e?.location)&&!t(e?.salaryText)&&!t(e?.experience)&&!t(e?.education)},E=await w(`recognize_job_fields`);if(!T(E))return E;let D=await w(`recognize_job_fields_lite`);return T(D)?E:D},C=async(e,t,i)=>{let o=await a();if(!o.enabled)throw Error(`AI 服务未启用，请在设置中开启 AI 代理`);if(!o.proxyUrl)throw Error(`AI 代理未配置：缺少 Proxy URL`);let u=await p(o.clientId||`public`),f=n(),h=await r(),g=String(e||``).trim();if(!g)throw Error(f.toLowerCase().startsWith(`zh`)?`解析文本为空`:`Empty text`);let _=m(g,12e3),v=h?l(_,h):_,y=d.buildRoleContextFromText(g),b=async e=>{let t=await c({proxyUrl:o.proxyUrl,gatewayApiKey:o.gatewayApiKey,clientId:u,tier:o.tier,preset:`resume_pdf_extract`,data:{lang:f,text:v,roleContext:y,force_json:e},signal:i?.signal}),n=null;try{n=JSON.parse(s(t))}catch{n=null}return n},x=await b(!1);if(x&&typeof x==`object`)return x;let S=await b(!0);if(S&&typeof S==`object`)return S;throw Error(`结构化提取失败`)};export{C as n,S as r,f as t};