hunter-mate 0.1.25 → 0.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/assets/extension/background/{service-worker.20261017183328.js → service-worker.20261019161523.js} +56 -4
  2. package/dist/assets/extension/background/service-worker.js +56 -4
  3. package/dist/assets/extension/build-info.json +1 -1
  4. package/dist/assets/extension/manifest.json +3 -3
  5. package/dist/assets/server/main.mjs +885 -782
  6. package/dist/index.js +20 -5
  7. package/dist/watchdog.js +14 -3
  8. package/dist/web/dist/404.html +1 -1
  9. package/dist/web/dist/_next/static/chunks/187-f067914dcd1330c2.js +32 -0
  10. package/dist/web/dist/_next/static/chunks/253-9278ce6c4d446329.js +1 -0
  11. package/dist/web/dist/_next/static/chunks/{589-f984bff035a1cb85.js → 589-cc56950ae4117cdd.js} +1 -1
  12. package/dist/web/dist/_next/static/chunks/659-122057f46f941df7.js +1 -0
  13. package/dist/web/dist/_next/static/chunks/{686-9f419b70feea9470.js → 686-05b99d3674f45bf7.js} +1 -1
  14. package/dist/web/dist/_next/static/chunks/728-cffab7e836020551.js +12 -0
  15. package/dist/web/dist/_next/static/chunks/{865-0ed23dd43c0832a2.js → 865-8e1d8c34192526ed.js} +1 -1
  16. package/dist/web/dist/_next/static/chunks/{935-7be3e60dd8bc29d2.js → 935-efb30b9f6f558e3f.js} +1 -1
  17. package/dist/web/dist/_next/static/chunks/{a7067448-e416655baf443992.js → a7067448-3f2b194cfadb91fb.js} +1 -1
  18. package/dist/web/dist/_next/static/chunks/app/_not-found/{page-5b7249eb3c9a6cb9.js → page-d939b40bb8878d26.js} +1 -1
  19. package/dist/web/dist/_next/static/chunks/app/admin/data/{page-14698e9c4ddaa6d9.js → page-df1d84c14e85f294.js} +1 -1
  20. package/dist/web/dist/_next/static/chunks/app/auth/verify/{page-05304d5803008d61.js → page-cfeb844e1b72ccaa.js} +1 -1
  21. package/dist/web/dist/_next/static/chunks/app/companies/{page-e8d02fe997579315.js → page-57b1ef0b12134ce0.js} +1 -1
  22. package/dist/web/dist/_next/static/chunks/app/company/admin/{page-c2584183bc4b34d1.js → page-010928306f8df0ed.js} +1 -1
  23. package/dist/web/dist/_next/static/chunks/app/entity/{page-08755f96102f0565.js → page-fa96319650d38e78.js} +1 -1
  24. package/dist/web/dist/_next/static/chunks/app/jobs/page-5ba0bdc881b98d42.js +1 -0
  25. package/dist/web/dist/_next/static/chunks/app/{layout-af39afc7866e74db.js → layout-bd9a7e5e4474b692.js} +1 -1
  26. package/dist/web/dist/_next/static/chunks/app/logs/{page-be50a4e10b1a0024.js → page-bcdbb3885abda5a2.js} +1 -1
  27. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/{page-cf445b0cb8c2cb0a.js → page-8aca89db1e666a49.js} +1 -1
  28. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/{page-c7ff0d79b6a75915.js → page-7086f1b773e57511.js} +1 -1
  29. package/dist/web/dist/_next/static/chunks/app/{page-bd282e1e5f0965f1.js → page-49fe1e8630d2237e.js} +1 -1
  30. package/dist/web/dist/_next/static/chunks/app/parselog/{page-9814e75d6900a743.js → page-fcdfdd41cf1f86f7.js} +1 -1
  31. package/dist/web/dist/_next/static/chunks/app/recordings/{page-441016638b43c4f8.js → page-7ba5d89391c9dace.js} +1 -1
  32. package/dist/web/dist/_next/static/chunks/app/resource-usage/{page-f6fa06bfe21bcd32.js → page-7b939cf673d764e6.js} +1 -1
  33. package/dist/web/dist/_next/static/chunks/app/shared/[token]/{page-c9c5042a2d07c0bc.js → page-df87328c52f862f1.js} +1 -1
  34. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/{page-f54cf2f0058035ca.js → page-7d4d25de2c6704e9.js} +1 -1
  35. package/dist/web/dist/_next/static/chunks/app/talents/{page-0edef6d07b3cf69d.js → page-5a2caa7a503ee041.js} +1 -1
  36. package/dist/web/dist/_next/static/chunks/app/team/insights/{page-8b3934df3e292368.js → page-f097b4b8578a6e5d.js} +1 -1
  37. package/dist/web/dist/_next/static/css/a8f0a381a2372781.css +3 -0
  38. package/dist/web/dist/admin/data.html +1 -1
  39. package/dist/web/dist/admin/data.txt +5 -5
  40. package/dist/web/dist/auth/verify.html +1 -1
  41. package/dist/web/dist/auth/verify.txt +5 -5
  42. package/dist/web/dist/companies.html +1 -1
  43. package/dist/web/dist/companies.txt +5 -5
  44. package/dist/web/dist/company/admin.html +1 -1
  45. package/dist/web/dist/company/admin.txt +5 -5
  46. package/dist/web/dist/entity.html +1 -1
  47. package/dist/web/dist/entity.txt +5 -5
  48. package/dist/web/dist/index.html +1 -1
  49. package/dist/web/dist/index.txt +5 -5
  50. package/dist/web/dist/jobs.html +1 -1
  51. package/dist/web/dist/jobs.txt +5 -5
  52. package/dist/web/dist/logs.html +1 -1
  53. package/dist/web/dist/logs.txt +5 -5
  54. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
  55. package/dist/web/dist/matching/jobs/placeholder/talents.txt +5 -5
  56. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
  57. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +5 -5
  58. package/dist/web/dist/parselog.html +1 -1
  59. package/dist/web/dist/parselog.txt +5 -5
  60. package/dist/web/dist/recordings.html +1 -1
  61. package/dist/web/dist/recordings.txt +5 -5
  62. package/dist/web/dist/resource-usage.html +1 -1
  63. package/dist/web/dist/resource-usage.txt +5 -5
  64. package/dist/web/dist/shared/placeholder.html +1 -1
  65. package/dist/web/dist/shared/placeholder.txt +5 -5
  66. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
  67. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +5 -5
  68. package/dist/web/dist/talents.html +1 -1
  69. package/dist/web/dist/talents.txt +5 -5
  70. package/dist/web/dist/team/insights.html +1 -1
  71. package/dist/web/dist/team/insights.txt +5 -5
  72. package/package.json +1 -1
  73. package/dist/web/dist/_next/static/chunks/105-dcd8f6d5867c8995.js +0 -32
  74. package/dist/web/dist/_next/static/chunks/253-a05d05b94bfbd7a4.js +0 -1
  75. package/dist/web/dist/_next/static/chunks/555-e2a871b9d2eccb03.js +0 -12
  76. package/dist/web/dist/_next/static/chunks/852-ad19b97821a4cf9e.js +0 -1
  77. package/dist/web/dist/_next/static/chunks/app/jobs/page-4827a9ef286b6483.js +0 -1
  78. package/dist/web/dist/_next/static/css/10ba1fa1d6ce23a7.css +0 -3
  79. /package/dist/web/dist/_next/static/{5MA8faUttk6FzlxGWnOlM → m0UGHVTGvtvb9mn4-uzJJ}/_buildManifest.js +0 -0
  80. /package/dist/web/dist/_next/static/{5MA8faUttk6FzlxGWnOlM → m0UGHVTGvtvb9mn4-uzJJ}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="89f41ef8-c626-4ab1-bb49-bc914404a112",e._sentryDebugIdIdentifier="sentry-dbid-89f41ef8-c626-4ab1-bb49-bc914404a112")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[852],{70852:function(e,t,l){l.d(t,{EntityListPage:function(){return X}});var s=l(72835),a=l(60635),n=l(27473),r=l(74431),i=l(37202),d=l(94518),o=l(63718),c=l(19036),u=l(8448),x=l(86777);let m=["workExperiences","projects","education"],h={intent:["position","salary","city","industries"]},p={name:"姓名",headline:"头衔",currentPosition:"现职位",currentCompany:"现公司",city:"城市",degree:"学历",workYears:"工作年限",age:"年龄",gender:"性别",resId:"resId",statusTag:"状态标签",contactTime:"方便联系时间",phone:"电话",email:"邮箱",profileUrl:"主页 URL",sourceUrl:"来源 URL",selfEvaluation:"自我评价",statement:"平台声明","intent.position":"期望职位","intent.salary":"期望薪资","intent.city":"期望城市","intent.industries":"期望行业",updatedAt:"更新时间"},g={workExperiences:"工作经历",projects:"项目经历",education:"教育经历"},y={company:"公司",position:"职位",period:"时间段",start:"开始",end:"结束",department:"部门",location:"地点",reportsTo:"汇报对象",school:"学校",major:"专业",degree:"学历",name:"名称",role:"角色",description:"描述",duties:"职责",industry:"行业"};function b(e){return null==e||""===e?"—":Array.isArray(e)?e.length?e.map(e=>b(e)).filter(e=>"—"!==e).join("、"):"—":"object"==typeof e?JSON.stringify(e):"string"==typeof e&&/^\d{4}-\d{2}-\d{2}T/.test(e)?(0,u.d3)(e):String(e)}function v(e){var t;let{entity:l}=e,i=(0,n.useRouter)(),d=l.id,[o,c]=(0,a.useState)(null),[x,v]=(0,a.useState)(!1),[j,f]=(0,a.useState)({}),[N,w]=(0,a.useState)(null),[k,S]=(0,a.useState)(new Set),[A,C]=(0,a.useState)({}),[T,I]=(0,a.useState)({}),[E,U]=(0,a.useState)(!1),[O,D]=(0,a.useState)("");(0,a.useEffect)(()=>{let e=!0;return c(null),D(""),(async()=>{try{let t=await (0,r.aA)("/entities/talent/".concat(d,"/duplicates"));e&&c(t.candidates)}catch(t){e&&c([])}})(),()=>{e=!1}},[d]);let F=(0,a.useMemo)(()=>{var e;return null!==(e=l.extracted)&&void 0!==e?e:{}},[l.extracted]),P=async e=>{if(j[e])return j[e];try{let t=await (0,r.aA)("/entities/talent/".concat(e));if(!t.entity)return null;return f(l=>({...l,[e]:t.entity})),t.entity}catch(e){return null}},L=async()=>{var e,t,l,s,a,n,r;U(!0),D("");let i=[d,...(null!=o?o:[]).map(e=>e.talent.id)],c=await Promise.all(i.map(e=>P(e)));if(U(!1),c.some(e=>!e)){D("全量简历拉取失败,请重试");return}let u=c[0],x=null!==(t=u.extracted)&&void 0!==t?t:{},p={name:u.name,headline:u.headline},g={};for(let e of Object.keys(x))if(m.includes(e))g[e]=Array.isArray(x[e])?[...x[e]]:[];else if(h[e]){let t=null!==(s=x[e])&&void 0!==s?s:{};for(let l of h[e])p["".concat(e,".").concat(l)]=null!==(a=t[l])&&void 0!==a?a:"industries"===l?[]:""}else(null==(r=x[e])||["string","number","boolean"].includes(typeof r))&&!e.startsWith("_")&&(p[e]=null!==(l=x[e])&&void 0!==l?l:"");C(p),I(g),w(null!==(n=null==o?void 0:null===(e=o[0])||void 0===e?void 0:e.talent.id)&&void 0!==n?n:null),v(!0)},M=e=>{var t;let s=[],a=t=>{var l,s,a,n;if(t){if("name"===e)return t.name;if("headline"===e)return t.headline;if(e.startsWith("intent.")){let l=e.slice(7),n=null===(a=t.extracted)||void 0===a?void 0:null===(s=a.intent)||void 0===s?void 0:s[l];return"industries"===l?Array.isArray(n)?n:[]:null!=n?n:""}return null!==(n=null===(l=t.extracted)||void 0===l?void 0:l[e])&&void 0!==n?n:""}},n=a(null!==(t=j[d])&&void 0!==t?t:l);for(let e of(s.push({id:0,label:"当前",value:n}),null!=o?o:[])){let t=j[e.talent.id];if(!t)continue;let l=a(t);void 0!==l&&"—"!==b(l)&&s.push({id:e.talent.id,label:"#".concat(e.talent.id),value:l})}return s},_=(e,t)=>C(l=>({...l,[e]:t})),B=async e=>{U(!0);try{await (0,r.aA)("/entities/talent/".concat(d,"/duplicates/dismiss"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({otherId:e})}),c(t=>(null!=t?t:[]).filter(t=>t.talent.id!==e)),N===e&&w(null)}catch(e){D("标注失败,请重试")}finally{U(!1)}},q=async()=>{var e,t,l,s;let a={...F};for(let[t,l]of Object.entries(A))if("name"!==t&&"headline"!==t){if(t.startsWith("intent.")){let s=t.slice(7);a.intent={...null!==(e=a.intent)&&void 0!==e?e:{},[s]:l}}else a[t]="number"!=typeof(s=F[t])||"string"!=typeof l||""===l.trim()||Number.isNaN(Number(l))?"boolean"==typeof s&&"string"==typeof l?"true"===l:l:Number(l)}for(let e of m)T[e]&&(a[e]=T[e]);let n=(null!=o?o:[]).filter(e=>!k.has(e.talent.id)).map(e=>e.talent.id);if(0===n.length){D("未勾选任何候选参与合并");return}U(!0);let c=!1;for(let e of n)try{await (0,r.aA)("/entities/talent/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepId:d,removeId:e,extracted:a,name:null!==(t=A.name)&&void 0!==t?t:null,headline:null!==(l=A.headline)&&void 0!==l?l:null})})}catch(e){c=!0;break}if(U(!1),c){D("合并失败,请重试");return}i.replace("/talents?id=".concat(d)),i.refresh(),window.location.reload()},R=async()=>{let e=(null!=o?o:[]).filter(e=>!k.has(e.talent.id)).map(e=>e.talent.id);if(0===e.length){D("未勾选任何候选参与合并");return}U(!0);let t=!0;for(let l of e)try{await (0,r.aA)("/entities/talent/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepId:d,removeId:l})})}catch(e){t=!1;break}if(U(!1),!t){D("合并失败,请重试");return}i.replace("/talents?id=".concat(d)),i.refresh(),window.location.reload()};if(null===o||0===o.length)return null;let J=null!==(t=o.find(e=>e.talent.id===N))&&void 0!==t?t:null,Y=null!=N?j[N]:null,V=e=>(0,s.jsx)("span",{className:"flex flex-wrap items-center gap-1",children:M(e).map(t=>(0,s.jsx)("button",{type:"button",title:"采纳:".concat(b(t.value)),onClick:()=>_(e,t.value),className:"rounded border border-gray-200 px-1.5 py-0.5 text-xs text-gray-500 hover:border-blue-400 hover:text-blue-600",children:t.label},t.id))});return(0,s.jsxs)("div",{className:"mb-4 rounded-lg border border-amber-300 bg-amber-50 p-3",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsxs)("span",{className:"text-sm font-medium text-amber-800",children:["发现 ",o.length," 条可能重复的人才记录"]}),(0,s.jsx)("button",{onClick:()=>void L(),disabled:E,className:"rounded bg-amber-600 px-3 py-1 text-sm text-white hover:bg-amber-700 disabled:opacity-50",children:"查看并处理"}),(0,s.jsx)("button",{onClick:()=>void B(o[0].talent.id),disabled:E,className:"rounded border border-amber-400 px-3 py-1 text-sm text-amber-700 hover:bg-amber-100 disabled:opacity-50",children:"与最高分条目非重复"}),O?(0,s.jsx)("span",{className:"text-sm text-red-600",children:O}):null]}),x?(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-2 sm:p-4",onClick:()=>v(!1),children:(0,s.jsxs)("div",{className:"flex max-h-[92vh] w-full max-w-6xl flex-col overflow-hidden rounded-lg bg-white shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("div",{className:"flex items-center gap-3 border-b border-gray-200 px-4 py-3",children:[(0,s.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"重复简历合并工作区"}),(0,s.jsxs)("span",{className:"text-sm text-gray-500",children:["当前 #",d,l.name?" \xb7 ".concat(l.name):""," — ",o.length," 条候选"]}),(0,s.jsx)("button",{onClick:()=>v(!1),className:"ml-auto text-sm text-gray-500 hover:text-gray-700",children:"关闭"})]}),(0,s.jsxs)("div",{className:"grid flex-1 gap-0 overflow-hidden md:grid-cols-[250px,1fr]",children:[(0,s.jsxs)("div",{className:"overflow-y-auto border-b border-gray-200 p-3 md:border-b-0 md:border-r",children:[(0,s.jsx)("div",{className:"mb-2 text-xs font-medium text-gray-500",children:"候选简历(逐条处理)"}),(0,s.jsx)("div",{className:"space-y-2",children:o.map(e=>{var t;return(0,s.jsxs)("div",{className:"rounded-lg border p-2 ".concat(N===e.talent.id?"border-blue-400 bg-blue-50":"border-gray-200"),children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("input",{type:"checkbox",checked:!k.has(e.talent.id),disabled:E,onChange:t=>{S(l=>{let s=new Set(l);return t.target.checked?s.delete(e.talent.id):s.add(e.talent.id),s})},title:"勾选=同一人,参与本次合并"}),(0,s.jsx)("span",{className:"text-sm font-medium text-gray-900",children:null!==(t=e.talent.name)&&void 0!==t?t:"(未命名)"}),(0,s.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["相似度 ",e.score]})]}),(0,s.jsxs)("div",{className:"mt-0.5 truncate text-xs text-gray-500",title:e.talent.sourceUrl,children:[e.talent.source," \xb7 ",(0,u.d3)(e.talent.updatedAt)]}),(0,s.jsxs)("div",{className:"mt-1.5 flex gap-1.5",children:[(0,s.jsx)("button",{type:"button",onClick:()=>w(e.talent.id),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-700 hover:bg-gray-50",children:"选中对比"}),(0,s.jsx)("button",{type:"button",disabled:E,onClick:()=>void B(e.talent.id),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-700 hover:bg-gray-50 disabled:opacity-50",children:"非同一人"})]})]},e.talent.id)})})]}),(0,s.jsxs)("div",{className:"flex flex-col overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex-1 space-y-4 overflow-y-auto p-4",children:[(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 border-b border-gray-100 px-3 py-2",children:[(0,s.jsx)("h4",{className:"text-sm font-semibold text-gray-900",children:"最终采用简历(可编辑)"}),(0,s.jsx)("button",{type:"button",onClick:()=>{L()},className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600 hover:bg-gray-50",children:"重置为当前简历"})]}),(0,s.jsx)("div",{className:"divide-y divide-gray-100",children:Object.keys(A).map(e=>{var t,a;return(0,s.jsxs)("div",{className:"grid grid-cols-[90px,1fr,auto] items-center gap-2 px-3 py-1.5",children:[(0,s.jsx)("label",{className:"text-xs text-gray-500",children:null!==(t=p[e])&&void 0!==t?t:e}),"sourceUrl"===e?(0,s.jsx)("a",{href:String(null!==(a=A[e])&&void 0!==a?a:l.sourceUrl),target:"_blank",rel:"noreferrer",className:"truncate text-sm text-blue-600 hover:underline",children:"—"===b(A[e])?l.sourceUrl:b(A[e])}):"selfEvaluation"===e||"statement"===e?(0,s.jsx)("textarea",{value:"—"===b(A[e])?"":String(A[e]),onChange:t=>_(e,t.target.value),rows:2,className:"w-full rounded border border-gray-300 px-2 py-1 text-sm"}):(0,s.jsx)("input",{value:"—"===b(A[e])?"":String(A[e]),onChange:t=>_(e,t.target.value),className:"w-full rounded border border-gray-300 px-2 py-1 text-sm"}),V(e)]},e)})})]}),m.map(e=>{var t,l,a;let n=null!==(t=T[e])&&void 0!==t?t:[],r=[];for(let t of null!=o?o:[]){let s=j[t.talent.id],a=null==s?void 0:null===(l=s.extracted)||void 0===l?void 0:l[e];Array.isArray(a)&&a.forEach(e=>r.push({id:t.talent.id,item:e}))}return(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,s.jsx)("div",{className:"flex items-center justify-between border-b border-gray-100 px-3 py-2",children:(0,s.jsxs)("h4",{className:"text-sm font-semibold text-gray-900",children:[null!==(a=g[e])&&void 0!==a?a:e,"(",n.length,")"]})}),0===n.length&&0===r.length?(0,s.jsx)("p",{className:"px-3 py-2 text-xs text-gray-400",children:"两侧均无数据"}):(0,s.jsxs)("div",{className:"space-y-2 p-3",children:[n.map((t,l)=>(0,s.jsxs)("div",{className:"rounded border border-gray-200 p-2",children:[(0,s.jsx)("div",{className:"grid grid-cols-2 gap-2 lg:grid-cols-4",children:Object.keys(null!=t?t:{}).filter(e=>!e.startsWith("_")).map(a=>{var r;return(0,s.jsxs)("label",{className:"block",children:[(0,s.jsx)("span",{className:"text-xs text-gray-400",children:null!==(r=y[a])&&void 0!==r?r:a}),"string"==typeof t[a]&&t[a].length>40?(0,s.jsx)("textarea",{value:t[a],rows:2,onChange:t=>{let s=[...n];s[l]={...s[l],[a]:t.target.value},I(t=>({...t,[e]:s}))},className:"w-full rounded border border-gray-300 px-2 py-1 text-xs"}):(0,s.jsx)("input",{value:"—"===b(t[a])?"":String(t[a]),onChange:t=>{let s=[...n];s[l]={...s[l],[a]:t.target.value},I(t=>({...t,[e]:s}))},className:"w-full rounded border border-gray-300 px-2 py-1 text-xs"})]},a)})}),(0,s.jsx)("div",{className:"mt-1.5 flex items-center gap-2",children:(0,s.jsx)("button",{type:"button",onClick:()=>I(t=>({...t,[e]:n.filter((e,t)=>t!==l)})),className:"rounded border border-red-200 px-2 py-0.5 text-xs text-red-600 hover:bg-red-50",children:"删除此条"})})]},l)),r.length?(0,s.jsxs)("div",{className:"rounded border border-dashed border-gray-300 p-2",children:[(0,s.jsx)("div",{className:"mb-1 text-xs text-gray-500",children:"候选条目(选择合入或更新)"}),(0,s.jsx)("div",{className:"space-y-1.5",children:r.map((t,l)=>{var a,r,i,d,o,c,u,x,m;let h=n.findIndex(e=>(function(e,t){let l=e=>{var t,l,s;return String(null!==(s=null!==(l=null!==(t=null==e?void 0:e.company)&&void 0!==t?t:null==e?void 0:e.school)&&void 0!==l?l:null==e?void 0:e.name)&&void 0!==s?s:"")},s=e=>{var t,l,s;return String(null!==(s=null==e?void 0:e.period)&&void 0!==s?s:"".concat(null!==(t=null==e?void 0:e.start)&&void 0!==t?t:"","-").concat(null!==(l=null==e?void 0:e.end)&&void 0!==l?l:""))},a=l(e),n=l(t),r=s(e),i=s(t);return!!a&&!!n&&a===n||!!r&&!!i&&r===i&&(!a||!n||a===n)})(e,t.item));return(0,s.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,s.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-gray-500",children:["#",t.id]}),(0,s.jsxs)("span",{className:"min-w-0 flex-1 truncate text-gray-700",children:[b(null!==(i=null!==(r=null!==(a=t.item.company)&&void 0!==a?a:t.item.school)&&void 0!==r?r:t.item.name)&&void 0!==i?i:"")," \xb7 ",b(null!==(c=null!==(o=null!==(d=t.item.position)&&void 0!==d?d:t.item.major)&&void 0!==o?o:t.item.role)&&void 0!==c?c:"")," \xb7 ",b(null!==(m=t.item.period)&&void 0!==m?m:"".concat(null!==(u=t.item.start)&&void 0!==u?u:"","-").concat(null!==(x=t.item.end)&&void 0!==x?x:""))]}),h>=0?(0,s.jsxs)("button",{type:"button",onClick:()=>{let l=[...n];l[h]={...t.item},I(t=>({...t,[e]:l}))},className:"shrink-0 rounded border border-blue-300 px-2 py-0.5 text-blue-600 hover:bg-blue-50",children:["更新条目",h+1]}):(0,s.jsx)("button",{type:"button",onClick:()=>I(l=>({...l,[e]:[...n,{...t.item}]})),className:"shrink-0 rounded border border-green-300 px-2 py-0.5 text-green-700 hover:bg-green-50",children:"合入"})]},l)})})]}):null]})]},e)}),J&&Y?(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,s.jsx)("div",{className:"border-b border-gray-100 px-3 py-2",children:(0,s.jsxs)("h4",{className:"text-sm font-semibold text-gray-900",children:["与候选 #",J.talent.id," 对比",J.reasons.length?(0,s.jsx)("span",{className:"ml-2 space-x-1",children:J.reasons.map(e=>(0,s.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs font-normal text-gray-600",children:e},e))}):null]})}),(0,s.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"border-b border-gray-100 text-left text-xs text-gray-500",children:[(0,s.jsx)("th",{className:"py-1.5 pl-3 pr-2 font-medium",children:"字段"}),(0,s.jsxs)("th",{className:"py-1.5 pr-2 font-medium",children:["当前 #",d]}),(0,s.jsxs)("th",{className:"py-1.5 pr-3 font-medium",children:["候选 #",J.talent.id]})]})}),(0,s.jsx)("tbody",{children:Object.keys(A).map(e=>{var t,a,n,r;let i=b(null===(t=M(e)[0])||void 0===t?void 0:t.value),d=b((()=>{var t,l,s,a;let n=j[J.talent.id];if(n){if("name"===e)return n.name;if("headline"===e)return n.headline;if(e.startsWith("intent.")){let t=e.slice(7),a=null===(s=n.extracted)||void 0===s?void 0:null===(l=s.intent)||void 0===l?void 0:l[t];return"industries"===t?Array.isArray(a)?a:[]:null!=a?a:""}return null!==(a=null===(t=n.extracted)||void 0===t?void 0:t[e])&&void 0!==a?a:""}})()),o=i!==d&&"—"!==i&&"—"!==d;return(0,s.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,s.jsx)("td",{className:"py-1 pl-3 pr-2 text-xs text-gray-500",children:null!==(n=p[e])&&void 0!==n?n:e}),(0,s.jsx)("td",{className:"py-1 pr-2 ".concat(o?"bg-amber-50":""),children:"sourceUrl"===e?(0,s.jsx)("a",{href:String(null!==(r=null===(a=M(e)[0])||void 0===a?void 0:a.value)&&void 0!==r?r:l.sourceUrl),target:"_blank",rel:"noreferrer",className:"break-all text-blue-600 hover:underline",children:i}):(0,s.jsx)("span",{className:"break-all",children:i})}),(0,s.jsx)("td",{className:"py-1 pr-3 ".concat(o?"bg-amber-50":""),children:"sourceUrl"===e?(0,s.jsx)("a",{href:String((()=>{var e;let t=j[J.talent.id];return null!==(e=null==t?void 0:t.sourceUrl)&&void 0!==e?e:""})()),target:"_blank",rel:"noreferrer",className:"break-all text-blue-600 hover:underline",children:d}):(0,s.jsx)("span",{className:"break-all",children:d})})]},e)})})]})]}):null]}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-t border-gray-200 px-4 py-3",children:[(0,s.jsx)("button",{type:"button",onClick:()=>void q(),disabled:E,className:"rounded bg-blue-600 px-4 py-1.5 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:"提交合并(采用上方编辑值)"}),(0,s.jsx)("button",{type:"button",onClick:()=>void R(),disabled:E,title:"传统语义:保留字段更全的一侧,另一侧补空合并",className:"rounded border border-gray-300 px-4 py-1.5 text-sm text-gray-700 hover:bg-gray-50 disabled:opacity-50",children:"快捷:整行补空合并"}),(0,s.jsx)("span",{className:"text-xs text-gray-500",children:"被合并的候选会进入回收站(可恢复)"}),O?(0,s.jsx)("span",{className:"text-sm text-red-600",children:O}):null]})]})]})]})}):null]})}var j=l(65777);function f(e){var t,l;let{entityId:n,name:i}=e,[d,o]=(0,a.useState)(!1),[c,u]=(0,a.useState)(null),[x,m]=(0,a.useState)([]),[h,p]=(0,a.useState)(""),[g,y]=(0,a.useState)("pending_invite"),[b,v]=(0,a.useState)(!1),[f,N]=(0,a.useState)(null),[w,k]=(0,a.useState)(null),{sync:S}=(0,j.nu)(),A=null!==(t=null==S?void 0:S.activeTenantId)&&void 0!==t?t:null;(0,a.useEffect)(()=>{d&&((async()=>{try{u(await (0,r.aA)("/recommendations/meta"))}catch(e){}})(),(async()=>{try{let e=await (0,r.aA)("/job-cases?limit=200");m(e.items)}catch(e){}})())},[d,A]);let C=async()=>{if(""!==h){v(!0),k(null);try{await (0,r.aA)("/recommendations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobCaseId:h,entityId:n,stage:g})}),N({jobCaseId:Number(h)})}catch(e){k("写入失败(服务未启动或无权限)")}finally{v(!1)}}};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:()=>{o(!0),N(null),k(null)},className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700",children:"加入推荐流程"}),d?(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,s.jsx)("div",{className:"w-96 rounded-lg bg-white p-4 shadow-xl",children:f?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("p",{className:"mb-3 text-sm text-gray-800",children:["已把 ",(0,s.jsx)("span",{className:"font-medium",children:i})," 加入推荐流程。"]}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{onClick:()=>o(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"关闭"}),(0,s.jsx)("a",{href:"/jobs?id=".concat(f.jobCaseId),className:"rounded bg-blue-600 px-3 py-1 text-xs text-white hover:bg-blue-700",children:"去职位推荐流程 →"})]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("h3",{className:"mb-3 text-sm font-semibold text-gray-900",children:["把 ",i," 加入推荐流程"]}),(0,s.jsxs)("label",{className:"mb-2 block text-xs text-gray-500",children:["目标职位",(0,s.jsxs)("select",{value:h,onChange:e=>p(""===e.target.value?"":Number(e.target.value)),className:"mt-1 w-full rounded border border-gray-300 px-2 py-1.5 text-sm",children:[(0,s.jsx)("option",{value:"",children:"选择职位…"}),x.map(e=>(0,s.jsx)("option",{value:e.id,children:e.title||e.externalId},e.id))]})]}),(0,s.jsxs)("label",{className:"mb-3 block text-xs text-gray-500",children:["推荐阶段(默认待邀请)",(0,s.jsx)("select",{value:g,onChange:e=>y(e.target.value),className:"mt-1 w-full rounded border border-gray-300 px-2 py-1.5 text-sm",children:(null!==(l=null==c?void 0:c.stages)&&void 0!==l?l:[{key:"pending_invite",label:"待邀请"}]).map(e=>(0,s.jsx)("option",{value:e.key,children:e.label},e.key))})]}),w?(0,s.jsx)("p",{className:"mb-2 text-xs text-red-600",children:w}):null,(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)("button",{onClick:()=>o(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,s.jsx)("button",{onClick:()=>void C(),disabled:""===h||b,className:"rounded bg-blue-600 px-3 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:b?"写入中…":"确认加入"})]})]})})}):null]})}let N={merge:"解析合并",sync:"同步覆盖",manual:"人工编辑",backfill:"回溯回填"},w={"identity.displayName":"姓名","identity.gender":"性别","identity.birthYear":"出生年","identity.location":"地点","identity.nationality":"国籍","professional.headline":"头衔","professional.summary":"简介","professional.currentCompany":"现任公司","professional.currentTitle":"现任职位","professional.titleLevel":"职级","professional.yearsOfExperience":"工作年限","professional.currentStatus":"当前状态","professional.desiredJob":"求职意向","professional.skills":"技能","professional.workExperiences":"工作经历","professional.educations":"教育经历","professional.projects":"项目经历","professional.languages":"语言","professional.certifications":"证书","contact.phones":"电话","contact.emails":"邮箱","contact.wechats":"微信","contact.linkedinUrls":"LinkedIn"},k=e=>{if(null==e)return"(空)";if("object"==typeof e){if(e.truncated)return"".concat(String(e.preview).slice(0,40),"…");if(e.name)return String(e.name);if(e.city)return String(e.city);if(e.added||e.removed){var t,l;let s=[];return(null===(t=e.added)||void 0===t?void 0:t.length)&&s.push("+".concat(e.added.map(e=>{var t,l,s,a;return null!==(a=null!==(s=null!==(l=null!==(t=null==e?void 0:e.name)&&void 0!==t?t:null==e?void 0:e.companyName)&&void 0!==l?l:null==e?void 0:e.school)&&void 0!==s?s:null==e?void 0:e.language)&&void 0!==a?a:String(e)}).join("、"))),(null===(l=e.removed)||void 0===l?void 0:l.length)&&s.push("-".concat(e.removed.map(e=>{var t,l,s,a;return null!==(a=null!==(s=null!==(l=null!==(t=null==e?void 0:e.name)&&void 0!==t?t:null==e?void 0:e.companyName)&&void 0!==l?l:null==e?void 0:e.school)&&void 0!==s?s:null==e?void 0:e.language)&&void 0!==a?a:String(e)}).join("、"))),s.join(" ")||"(数量变化)"}return JSON.stringify(e).slice(0,40)}return String(e)};function S(e){let{versions:t,recommendations:l,changes:n,evaluations:r,matches:i}=e,d=(0,a.useMemo)(()=>{if(!(null==l?void 0:l.length))return null;let e=null;for(let r of l){var t,s,a,n;let l=null!==(t=r.history)&&void 0!==t?t:[],i=l.length?l[l.length-1]:null,d=null!==(s=null==i?void 0:i.at)&&void 0!==s?s:r.createdAt;(!e||d>e.at)&&(e={at:d,jobTitle:null!==(a=r.jobTitle)&&void 0!==a?a:"职位 #".concat(r.jobCaseId),toStage:null!==(n=null==i?void 0:i.toStage)&&void 0!==n?n:r.stage,by:null==i?void 0:i.by})}return e},[l]),o=(0,a.useMemo)(()=>{if(!(null==l?void 0:l.length))return[];let e=new Map;for(let a of l){var t,s;e.set(a.jobCaseId,{jobTitle:null!==(t=a.jobTitle)&&void 0!==t?t:"职位 #".concat(a.jobCaseId),stage:a.stage,stageLabel:null!==(s=a.stageLabel)&&void 0!==s?s:a.stage,updatedAt:a.updatedAt})}return Array.from(e.entries()).map(e=>{let[t,l]=e;return{jobCaseId:t,...l}}).sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))},[l]),c={rejected:"bg-red-50 text-red-700",onboarding:"bg-green-50 text-green-700"},x=(e,t)=>{var l;return(0,s.jsxs)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(null!==(l=c[e])&&void 0!==l?l:"bg-blue-50 text-blue-700"),children:[t,c[e]?"":"(在途)"]})},m=(0,a.useMemo)(()=>{var e,a,i,d,o,c,u,x,m,h;let p=[];for(let t of null!=l?l:[])for(let l of null!==(e=t.history)&&void 0!==e?e:[])p.push({at:l.at,icon:"\uD83D\uDCE4",tone:"text-blue-700",text:(0,s.jsxs)("span",{children:[(0,s.jsx)("b",{children:null!==(a=t.jobTitle)&&void 0!==a?a:"职位 #".concat(t.jobCaseId)}),":",l.fromStage?"".concat(l.fromStage," → "):"",null!==(i=l.toStage)&&void 0!==i?i:l.action,l.by?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",l.by]}):null,l.note?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",l.note]}):null]})});for(let e of null!=n?n:[])p.push({at:e.createdAt,icon:"\uD83D\uDCDD",tone:"text-amber-700",text:(0,s.jsxs)("span",{children:["简历变更:",null!==(d=w[e.fieldPath])&&void 0!==d?d:e.fieldPath,"(",null!==(o=N[e.changeType])&&void 0!==o?o:e.changeType,")",(0,s.jsxs)("span",{className:"text-gray-400",children:[" ",k(e.oldValue)," → ",k(e.newValue)]}),e.sourceSystem?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 来源 ",e.sourceSystem]}):null]})});for(let e of null!=t?t:[])p.push({at:e.createdAt,icon:"\uD83C\uDD95",tone:"text-green-700",text:(0,s.jsxs)("span",{children:["新版本简历入库:",null!==(m=null===(c=e.source)||void 0===c?void 0:c.system)&&void 0!==m?m:"未知渠道",(null===(x=e.source)||void 0===x?void 0:null===(u=x.collector)||void 0===u?void 0:u.creatorName)?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 同步人 ",e.source.collector.creatorName]}):null]})});for(let e of null!=r?r:[])p.push({at:e.createdAt,icon:"\uD83D\uDCCA",tone:"text-violet-700",text:(0,s.jsxs)("span",{children:["生成评估:",(0,s.jsx)("b",{children:null!==(h=e.jobTitle)&&void 0!==h?h:"职位 #".concat(e.jobCaseId)}),(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",e.generatedBy]})]})});return p.sort((e,t)=>t.at.localeCompare(e.at)).slice(0,30)},[l,n,t,r]),h=(0,a.useMemo)(()=>(null!=i?i:[]).slice().sort((e,t)=>{var l,s,a,n;return(null!==(a=null===(l=t.scores)||void 0===l?void 0:l.overall)&&void 0!==a?a:0)-(null!==(n=null===(s=e.scores)||void 0===s?void 0:s.overall)&&void 0!==n?n:0)}).slice(0,3),[i]);return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("section",{className:"rounded-lg border border-blue-200 bg-blue-50/50 p-4",children:[(0,s.jsx)("div",{className:"text-xs text-gray-500",children:"最近一次推荐"}),d?(0,s.jsxs)("div",{className:"mt-1 flex flex-wrap items-center gap-2",children:[(0,s.jsx)("span",{className:"text-lg font-semibold text-gray-900",children:d.jobTitle}),d.toStage?x(d.toStage,d.toStage):null,(0,s.jsxs)("span",{className:"text-xs text-gray-400",children:[(0,u.d3)(d.at),d.by?" \xb7 ".concat(d.by):""]})]}):(0,s.jsx)("p",{className:"mt-1 text-sm text-gray-500",children:"暂无推荐记录"})]}),(0,s.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-4 shadow-sm",children:[(0,s.jsxs)("h3",{className:"mb-2 text-sm font-semibold text-gray-900",children:["推荐履历(",o.length,")"]}),o.length?(0,s.jsx)("ul",{className:"space-y-2",children:o.map(e=>(0,s.jsxs)("li",{className:"flex items-center justify-between gap-2 text-sm",children:[(0,s.jsx)("a",{href:"/jobs?id=".concat(e.jobCaseId),className:"truncate text-blue-600 hover:underline",children:e.jobTitle}),x(e.stage,e.stageLabel)]},e.jobCaseId))}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无推荐记录"})]}),(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-4 shadow-sm",children:[(0,s.jsx)("h3",{className:"mb-2 text-sm font-semibold text-gray-900",children:"在管职位匹配 Top 3"}),h.length?(0,s.jsx)("ul",{className:"space-y-2",children:h.map(e=>{var t,l,a,n,r,i,d;return(0,s.jsxs)("li",{className:"flex items-center justify-between gap-2 text-sm",children:[(0,s.jsx)("a",{href:"/jobs?id=".concat(e.jobCaseId),className:"truncate text-blue-600 hover:underline",children:(null===(t=e.jobCase)||void 0===t?void 0:t.title)||"职位 #".concat(e.jobCaseId)}),(0,s.jsxs)("span",{className:"rounded px-2 py-0.5 text-xs ".concat((null!==(r=null===(l=e.scores)||void 0===l?void 0:l.overall)&&void 0!==r?r:0)>=75?"bg-green-50 text-green-700":(null!==(i=null===(a=e.scores)||void 0===a?void 0:a.overall)&&void 0!==i?i:0)>=60?"bg-amber-50 text-amber-700":"bg-gray-100 text-gray-600"),children:[null!==(d=null===(n=e.scores)||void 0===n?void 0:n.overall)&&void 0!==d?d:"-"," 分"]})]},e.id)})}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无高匹配在管职位"}),(0,s.jsx)("p",{className:"mt-2 text-xs text-gray-400",children:"完整匹配与规则明细见「简历」tab"})]})]}),(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-4 shadow-sm",children:[(0,s.jsx)("h3",{className:"mb-3 text-sm font-semibold text-gray-900",children:"动态(推荐 / 简历变更 / 新版本 / 评估)"}),m.length?(0,s.jsx)("ol",{className:"space-y-2",children:m.map((e,t)=>(0,s.jsxs)("li",{className:"flex items-start gap-2 text-sm",children:[(0,s.jsx)("span",{children:e.icon}),(0,s.jsx)("span",{className:e.tone,children:e.text}),(0,s.jsx)("span",{className:"shrink-0 text-xs text-gray-400",children:(0,u.d3)(e.at)})]},t))}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无动态"})]})]})}let A=[["skill","技能",.25],["experience","经验年限",.2],["industry","行业",.1],["company","公司",.1],["location","地点",.1],["salary","薪资",.1],["education","学历",.05],["stability","稳定性",.05],["availability","可用性",.05]],C=(e,t,l)=>[e,t].filter(Boolean).join(" - ")+(l?"(".concat(l,")"):"");function T(e){let{title:t,children:l}=e;return(0,s.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold text-gray-900",children:t}),l]})}function I(e){let{children:t}=e;return(0,s.jsx)("span",{className:"rounded bg-blue-50 px-2 py-0.5 text-xs text-blue-700",children:t})}function E(e){var t,l;let{entity:n}=e,i=n.extracted||{},[d,o]=(0,a.useState)(null),[c,u]=(0,a.useState)(!1),[x,m]=(0,a.useState)(!1),[h,p]=(0,a.useState)(null),g=(0,a.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];m(!0);try{var t;let l=e?await (0,r.aA)("/entities/talent/".concat(n.id,"/match-jobs"),{method:"POST",headers:{"Content-Type":"application/json"}}):await (0,r.aA)("/entities/talent/".concat(n.id,"/matches"));o(null!==(t=l.matches)&&void 0!==t?t:[]),u(!1)}catch(e){u(!0)}finally{m(!1)}},[n.id]);(0,a.useEffect)(()=>{g()},[g]);let y=Array.isArray(i.workExperiences)?i.workExperiences:[],b=Array.isArray(i.projects)?i.projects:[],v=Array.isArray(i.education)?i.education:[],j=e=>"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.name?e.name:null,f=(Array.isArray(i.languages)?i.languages:[]).map(j).filter(e=>!!e),N=(Array.isArray(i.skills)?i.skills:[]).map(j).filter(e=>!!e),w=null!==(l=null===(t=i.extra)||void 0===t?void 0:t.sections)&&void 0!==l?l:[],k=i.intent||{},S=[["性别",i.gender],["年龄",null!=i.age?"".concat(i.age," 岁"):null],["城市",i.city],["学历",i.degree],["工作年限",null!=i.workYears?"".concat(i.workYears," 年"):null],["当前职位",i.currentPosition],["当前公司",i.currentCompany],["状态",i.statusTag],["方便联系",i.contactTime]].filter(e=>{let[,t]=e;return null!=t&&""!==t});return(0,s.jsxs)("div",{className:"w-full",children:[(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[i.photoUrl?(0,s.jsx)("img",{src:i.photoUrl,alt:"",className:"h-14 w-14 rounded-full object-cover"}):null,(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"text-xl font-bold text-gray-900",children:i.name||"(未命名)"}),i.nameMasked?(0,s.jsx)(I,{children:"脱敏"}):null]}),S.length?(0,s.jsx)("div",{className:"mt-2 flex flex-wrap gap-x-4 gap-y-1 text-sm text-gray-600",children:S.map(e=>{let[t,l]=e;return(0,s.jsxs)("span",{children:[(0,s.jsx)("span",{className:"text-gray-400",children:t})," ",l]},t)})}):(0,s.jsx)("p",{className:"mt-2 text-sm text-gray-500",children:"仅卡片级数据(搜索入库),尚无详情页解析字段"})]})]}),Object.keys(k).length?(0,s.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-2 border-t border-gray-100 pt-3 text-sm",children:[(0,s.jsx)("span",{className:"text-gray-400",children:"求职意向"}),k.position?(0,s.jsx)(I,{children:k.position}):null,k.salary?(0,s.jsx)(I,{children:k.salary}):null,k.city?(0,s.jsx)(I,{children:k.city}):null,(k.industries||[]).map(e=>(0,s.jsx)(I,{children:e},e))]}):null,N.length||f.length?(0,s.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-sm",children:[N.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"text-gray-400",children:"技能"}),N.map(e=>(0,s.jsx)(I,{children:e},e))]}):null,f.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"ml-2 text-gray-400",children:"语言"}),f.map(e=>(0,s.jsx)(I,{children:e},e))]}):null]}):null]}),(0,s.jsxs)(T,{title:"在管职位匹配",children:[c?(0,s.jsxs)("p",{className:"text-sm text-red-500",children:["匹配加载失败",(0,s.jsx)("button",{type:"button",onClick:()=>void g(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):null===d?(0,s.jsx)("p",{className:"text-sm text-gray-500",children:x?"匹配计算中…":"加载中…"}):0===d.length?(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无匹配记录"}):(0,s.jsx)("ul",{className:"space-y-3",children:d.map(e=>{var t,l,a,n,r,i,d,o,c,u,x,m,g,y,b,v,j,f;let N=h===e.id,w=null!==(b=e.matchDetails)&&void 0!==b?b:{};return(0,s.jsxs)("li",{className:"rounded border border-gray-100 p-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("span",{className:"font-medium text-gray-900",children:[(null===(t=e.jobCase)||void 0===t?void 0:t.title)||"职位 #".concat(e.jobCaseId),(null===(l=e.jobCase)||void 0===l?void 0:l.company)?(0,s.jsx)("span",{className:"ml-2 text-sm text-gray-500",children:e.jobCase.company}):null]}),(0,s.jsxs)("span",{className:"rounded px-2 py-0.5 text-sm font-medium ".concat((null!==(v=null===(a=e.scores)||void 0===a?void 0:a.overall)&&void 0!==v?v:0)>=75?"bg-green-50 text-green-700":(null!==(j=null===(n=e.scores)||void 0===n?void 0:n.overall)&&void 0!==j?j:0)>=60?"bg-amber-50 text-amber-700":"bg-gray-100 text-gray-600"),children:[null!==(f=null===(r=e.scores)||void 0===r?void 0:r.overall)&&void 0!==f?f:"-"," 分"]})]}),(null===(i=e.recommendation)||void 0===i?void 0:i.aiReason)?(0,s.jsx)("p",{className:"mt-2 whitespace-pre-wrap text-sm text-gray-600",children:e.recommendation.aiReason}):null,(0,s.jsx)("button",{type:"button",onClick:()=>p(N?null:e.id),className:"mt-2 text-xs text-blue-600 hover:underline",children:N?"收起规则明细 ▲":"查看规则明细(为什么这么分)▼"}),N?(0,s.jsxs)("div",{className:"mt-2 space-y-2 border-t border-gray-100 pt-2",children:[w.gate?"fail"===w.gate.status?(0,s.jsxs)("div",{className:"rounded bg-red-50 p-2 text-xs text-red-700",children:[(0,s.jsx)("div",{className:"font-medium",children:"硬性条件不满足(一票否决,已出局)"}),(0,s.jsx)("ul",{className:"mt-1 list-disc pl-4",children:(w.gate.failed||[]).map((e,t)=>(0,s.jsxs)("li",{children:[e.label,e.talentValue?"(候选人:".concat(e.talentValue,")"):"",e.evidence?" JD 证据:「".concat(e.evidence,"」"):""]},t))})]}):"unknown"===w.gate.status?(0,s.jsxs)("div",{className:"rounded bg-amber-50 p-2 text-xs text-amber-700",children:[(0,s.jsx)("div",{className:"font-medium",children:"硬性条件待核实(信息缺失 ≠ 不满足,请人工复核)"}),(0,s.jsx)("ul",{className:"mt-1 list-disc pl-4",children:(w.gate.unknown||[]).map((e,t)=>(0,s.jsxs)("li",{children:[e.label,e.evidence?" JD 证据:「".concat(e.evidence,"」"):""]},t))})]}):(0,s.jsx)("p",{className:"text-xs text-green-700",children:"硬性条件(性别/学历/年龄/地点等):全部满足"}):null,(0,s.jsx)("div",{className:"grid grid-cols-3 gap-2 md:grid-cols-5",children:A.map(t=>{var l;let[a,n,r]=t;return(0,s.jsxs)("div",{className:"rounded bg-gray-50 p-2 text-xs",children:[(0,s.jsxs)("div",{className:"text-gray-400",children:[n," ",(0,s.jsxs)("span",{title:"规则权重",children:["\xd7",r]})]}),(0,s.jsx)("div",{className:"font-medium",children:(null===(l=e.scores)||void 0===l?void 0:l[a])!=null?"".concat(Math.round(100*e.scores[a])):"-"})]},a)})}),"number"==typeof w.vectorCosine?(0,s.jsxs)("p",{className:"text-xs text-gray-500",children:["语义向量(本地 bge-small 余弦,权重 \xd70.2):",(100*w.vectorCosine).toFixed(1)," 分"]}):null,Array.isArray(w.hitSkills)&&w.hitSkills.length?(0,s.jsxs)("p",{className:"text-xs text-green-700",children:["命中技能:",w.hitSkills.map(e=>{var t;return null!==(t=null==e?void 0:e.name)&&void 0!==t?t:e}).join("、")]}):null,Array.isArray(w.missedSkills)&&w.missedSkills.length?(0,s.jsxs)("p",{className:"text-xs text-red-600",children:["缺失技能:",w.missedSkills.map(e=>{var t;return null!==(t=null==e?void 0:e.name)&&void 0!==t?t:e}).join("、")]}):null,Array.isArray(w.concernFlags)&&w.concernFlags.length?(0,s.jsxs)("p",{className:"text-xs text-amber-700",children:["风险提示:",w.concernFlags.join(";")]}):null,(null===(d=w.industryFit)||void 0===d?void 0:d.fitTag)||(null===(o=w.salaryFit)||void 0===o?void 0:o.fitTag)||(null===(c=w.locationFit)||void 0===c?void 0:c.fitTag)||(null===(u=w.experienceFit)||void 0===u?void 0:u.fitTag)?(0,s.jsxs)("p",{className:"text-xs text-gray-500",children:["适配标签:",[null===(x=w.industryFit)||void 0===x?void 0:x.fitTag,null===(m=w.salaryFit)||void 0===m?void 0:m.fitTag,null===(g=w.locationFit)||void 0===g?void 0:g.fitTag,null===(y=w.experienceFit)||void 0===y?void 0:y.fitTag].filter(Boolean).join(" / ")]}):null]}):null]},e.id)})}),(0,s.jsx)("div",{className:"mt-3",children:(0,s.jsx)("button",{type:"button",disabled:x,onClick:()=>void g(!0),className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:x?"匹配中…":"重新匹配在管职位"})})]}),y.length?(0,s.jsx)(T,{title:"工作经历(".concat(y.length,")"),children:(0,s.jsx)("ol",{className:"space-y-4",children:y.map((e,t)=>(0,s.jsxs)("li",{className:"border-l-2 border-blue-100 pl-4",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-baseline gap-2",children:[(0,s.jsx)("span",{className:"font-medium text-gray-900",children:e.company||"(公司未知)"}),(0,s.jsx)("span",{className:"text-gray-700",children:e.position}),(0,s.jsx)("span",{className:"text-xs text-gray-400",children:C(e.start,e.end,e.duration)})]}),(0,s.jsxs)("div",{className:"mt-1 flex flex-wrap gap-x-3 text-xs text-gray-500",children:[e.department?(0,s.jsxs)("span",{children:["部门:",e.department]}):null,e.location?(0,s.jsxs)("span",{children:["地点:",e.location]}):null,e.reportsTo?(0,s.jsxs)("span",{children:["汇报:",e.reportsTo]}):null,null!=e.subordinates?(0,s.jsxs)("span",{children:["下属:",e.subordinates," 人"]}):null]}),e.responsibilities?(0,s.jsx)("p",{className:"mt-1 whitespace-pre-wrap text-sm text-gray-700",children:e.responsibilities}):null,e.extra?(0,s.jsx)("div",{className:"mt-1 flex flex-wrap gap-x-3 text-xs text-gray-500",children:Object.entries(e.extra).map(e=>{let[t,l]=e;return(0,s.jsxs)("span",{children:[t,":",l]},t)})}):null]},t))})}):null,b.length?(0,s.jsx)(T,{title:"项目经历(".concat(b.length,")"),children:(0,s.jsx)("ol",{className:"space-y-4",children:b.map((e,t)=>(0,s.jsxs)("li",{className:"border-l-2 border-green-100 pl-4",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-baseline gap-2",children:[(0,s.jsx)("span",{className:"font-medium text-gray-900",children:e.name||"(项目未知)"}),e.role?(0,s.jsx)("span",{className:"text-gray-700",children:e.role}):null,e.company?(0,s.jsx)("span",{className:"text-sm text-gray-500",children:e.company}):null,(0,s.jsx)("span",{className:"text-xs text-gray-400",children:C(e.start,e.end,e.duration)})]}),e.description?(0,s.jsx)("p",{className:"mt-1 whitespace-pre-wrap text-sm text-gray-700",children:e.description}):null,e.duties?(0,s.jsxs)("p",{className:"mt-1 whitespace-pre-wrap text-sm text-gray-600",children:["职责:",e.duties]}):null,e.extra?(0,s.jsx)("div",{className:"mt-1 flex flex-wrap gap-x-3 text-xs text-gray-500",children:Object.entries(e.extra).map(e=>{let[t,l]=e;return(0,s.jsxs)("span",{children:[t,":",l]},t)})}):null]},t))})}):null,v.length?(0,s.jsx)(T,{title:"教育经历(".concat(v.length,")"),children:(0,s.jsx)("ol",{className:"space-y-3",children:v.map((e,t)=>(0,s.jsxs)("li",{className:"flex flex-wrap items-baseline gap-2",children:[(0,s.jsx)("span",{className:"font-medium text-gray-900",children:e.school||"(学校未知)"}),e.major?(0,s.jsx)("span",{className:"text-gray-700",children:e.major}):null,e.degree?(0,s.jsx)(I,{children:e.degree}):null,e.period?(0,s.jsx)("span",{className:"text-xs text-gray-400",children:e.period}):null,(e.tags||[]).map(e=>(0,s.jsx)(I,{children:e},e))]},t))})}):null,i.selfEvaluation?(0,s.jsx)(T,{title:"自我评价",children:(0,s.jsx)("p",{className:"whitespace-pre-wrap text-sm text-gray-700",children:i.selfEvaluation})}):null,w.map(e=>(0,s.jsx)(T,{title:e.title||e.key,children:(0,s.jsx)("p",{className:"whitespace-pre-wrap text-sm text-gray-700",children:e.text})},e.key))]})}function U(e){var t;let{portraitId:l}=e,[n,i]=(0,a.useState)([]),[d,o]=(0,a.useState)(""),[c,x]=(0,a.useState)(!1),[m,h]=(0,a.useState)(null),[p,g]=(0,a.useState)([]),{sync:y}=(0,j.nu)(),b=null!==(t=null==y?void 0:y.activeTenantId)&&void 0!==t?t:null;(0,a.useEffect)(()=>{(0,r.aA)("/job-cases?limit=200").then(e=>{var t;let l=(Array.isArray(e)?e:null!==(t=null==e?void 0:e.items)&&void 0!==t?t:[]).filter(e=>"active"===e.status||!e.status);i(l),o(e=>e&&l.some(t=>String(t.id)===e)?e:"")}).catch(()=>i([]))},[b]);let v=(0,a.useCallback)(async()=>{if(!l)return;let e=null;try{e=await (0,r.aA)("/talent-portraits/".concat(l,"/evaluations"))}catch(e){}g(e?e.items:[])},[l]);async function f(){if(h(null),!l||!d){h("先选择要评估的职位");return}try{let e=await fetch("".concat((0,r.Ox)(),"/talent-job-evaluations/evaluate-prompt?portraitId=").concat(l,"&jobCaseId=").concat(d));if(!e.ok)throw Error("HTTP ".concat(e.status));let t=await e.json();await navigator.clipboard.writeText(t.prompt),x(!0),setTimeout(()=>x(!1),4e3),setTimeout(()=>void v(),3e4)}catch(e){h(e.message)}}(0,a.useEffect)(()=>{v()},[v]);let N=d?p.filter(e=>String(e.jobCaseId)===d):p;return(0,s.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold text-gray-900",children:"评估(人才 \xd7 职位)"}),(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsxs)("select",{value:d,onChange:e=>o(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm",children:[(0,s.jsx)("option",{value:"",children:"选择要评估的在管职位…"}),n.map(e=>(0,s.jsx)("option",{value:e.id,children:e.title||"职位 #".concat(e.id)},e.id))]}),(0,s.jsx)("button",{type:"button",onClick:()=>void f(),className:"rounded bg-violet-600 px-3 py-1 text-sm text-white hover:bg-violet-700",children:c?"已复制 ✓ 请发给 agent":"复制评估 prompt"}),m?(0,s.jsx)("span",{className:"text-xs text-red-600",children:m}):null]}),(0,s.jsx)("p",{className:"mt-2 text-xs text-gray-400",children:"评估由 agent 生成后写回;同一人才\xd7职位可多次评估,历史全留痕。原「AI 总结与评估」(不针对职位)已按 2026-10-04 裁定移除。"}),(0,s.jsx)("div",{className:"mt-3 space-y-3",children:N.length?N.map(e=>{var t;return(0,s.jsxs)("div",{className:"rounded border border-gray-100 p-3",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-gray-400",children:[(0,s.jsx)("span",{className:"font-medium text-gray-800",children:null!==(t=e.jobTitle)&&void 0!==t?t:"职位 #".concat(e.jobCaseId)}),(0,s.jsx)("span",{children:(0,u.d3)(e.createdAt)}),(0,s.jsxs)("span",{children:["生成:",e.generatedBy]}),e.createdBy?(0,s.jsxs)("span",{children:["操作者:",e.createdBy]}):null]}),(0,s.jsx)("p",{className:"mt-1 whitespace-pre-wrap text-sm text-gray-700",children:e.content})]},e.id)}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无评估记录"})})]})}let O=e=>"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.name?e.name:null;function D(e){var t;let{entity:l,portraitId:n,versions:r,sources:i}=e,[d,o]=(0,a.useState)("merged"),c=null!=r?r:[],m=null!==(t=c.find(e=>e.id===d))&&void 0!==t?t:null;return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>o("merged"),className:"rounded px-3 py-1 text-sm ".concat("merged"===d?"bg-blue-600 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"),children:"合并画像(默认)"}),c.map(e=>{var t,l,a,n,r,i;return(0,s.jsxs)("button",{type:"button",onClick:()=>o(e.id),className:"rounded px-3 py-1 text-sm ".concat(d===e.id?"bg-blue-600 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"),title:"".concat(null!==(r=null===(t=e.source)||void 0===t?void 0:t.url)&&void 0!==r?r:""," ").concat((0,u.d3)(e.createdAt)),children:[null!==(i=null===(l=e.source)||void 0===l?void 0:l.system)&&void 0!==i?i:"未知渠道",(null===(n=e.source)||void 0===n?void 0:null===(a=n.collector)||void 0===a?void 0:a.creatorName)?" \xb7 ".concat(e.source.collector.creatorName):""," \xb7 ",(0,u.d3)(e.createdAt)]},e.id)}),c.length?null:(0,s.jsx)("span",{className:"text-xs text-gray-400",children:"暂无独立版本(合并画像即全部已知信息)"})]}),"merged"!==d&&m?(0,s.jsx)(F,{version:m}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(E,{entity:l}),(0,s.jsx)(U,{portraitId:n}),(0,s.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h3",{className:"mb-2 text-lg font-semibold",children:"原始数据(合并画像)"}),(0,s.jsx)(x.Y,{data:l.extracted})]})]}),(0,s.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"解析来源"}),i.length?(0,s.jsx)("ul",{className:"space-y-1 text-sm",children:i.map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)("a",{href:e.sourceUrl,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:e.domain}),(0,s.jsx)("span",{className:"ml-2 text-xs text-gray-400",children:(0,u.d3)(e.createdAt)})]},e.id))}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"暂无解析来源记录"})]})]})}function F(e){var t,l,a,n,r,i,d,o,c,m,h,p,g;let{version:y}=e,b=null!==(o=y.extracted)&&void 0!==o?o:{},v=Array.isArray(b.workExperiences)?b.workExperiences:[],j=Array.isArray(b.educations)?null!==(c=b.education)&&void 0!==c?c:b.educations:Array.isArray(b.education)?b.education:[],f=(Array.isArray(b.skills)?b.skills:[]).map(O).filter(Boolean),N=null!==(m=b.contact)&&void 0!==m?m:{};return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("span",{className:"text-xl font-bold text-gray-900",children:null!==(p=null!==(h=N.fullName)&&void 0!==h?h:b.name)&&void 0!==p?p:"(未命名)"}),(0,s.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:null!==(g=null===(t=y.source)||void 0===t?void 0:t.system)&&void 0!==g?g:"未知渠道"}),(null===(a=y.source)||void 0===a?void 0:null===(l=a.collector)||void 0===l?void 0:l.creatorName)?(0,s.jsxs)("span",{className:"rounded bg-violet-50 px-2 py-0.5 text-xs text-violet-700",children:["同步人 ",y.source.collector.creatorName]}):null,(0,s.jsx)("span",{className:"text-xs text-gray-400",children:(0,u.d3)(y.createdAt)}),(null===(n=y.confidence)||void 0===n?void 0:n.overall)!=null?(0,s.jsxs)("span",{className:"text-xs text-gray-400",children:["置信度 ",Math.round(100*y.confidence.overall),"%"]}):null]}),b.headline?(0,s.jsx)("p",{className:"mt-1 text-gray-600",children:b.headline}):null,(0,s.jsxs)("div",{className:"mt-2 flex flex-wrap gap-x-4 gap-y-1 text-sm text-gray-600",children:[b.gender?(0,s.jsxs)("span",{children:["性别 ",b.gender]}):null,(null===(r=b.basic)||void 0===r?void 0:r.gender)?(0,s.jsxs)("span",{children:["性别 ",b.basic.gender]}):null,b.city?(0,s.jsxs)("span",{children:["城市 ",b.city]}):null,(null===(d=b.basic)||void 0===d?void 0:null===(i=d.location)||void 0===i?void 0:i.city)?(0,s.jsxs)("span",{children:["城市 ",b.basic.location.city]}):null]}),f.length?(0,s.jsxs)("div",{className:"mt-2 flex flex-wrap gap-1 text-sm",children:[(0,s.jsx)("span",{className:"text-gray-400",children:"技能"}),f.map(e=>(0,s.jsx)("span",{className:"rounded bg-blue-50 px-2 py-0.5 text-xs text-blue-700",children:e},e))]}):null]}),v.length?(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("h3",{className:"mb-2 text-lg font-semibold",children:["工作经历(",v.length,")"]}),(0,s.jsx)("ol",{className:"space-y-2",children:v.map((e,t)=>{var l,a,n,r,i;return(0,s.jsxs)("li",{className:"text-sm",children:[(0,s.jsx)("b",{children:null!==(a=null!==(l=e.companyName)&&void 0!==l?l:e.company)&&void 0!==a?a:"(公司未知)"})," ",null!==(n=e.title)&&void 0!==n?n:e.position," ",(0,s.jsx)("span",{className:"text-xs text-gray-400",children:[null!==(r=e.startDate)&&void 0!==r?r:e.start,null!==(i=e.endDate)&&void 0!==i?i:e.end].filter(Boolean).join(" - ")})]},t)})})]}):null,j.length?(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("h3",{className:"mb-2 text-lg font-semibold",children:["教育经历(",j.length,")"]}),(0,s.jsx)("ol",{className:"space-y-1",children:j.map((e,t)=>(0,s.jsxs)("li",{className:"text-sm",children:[(0,s.jsx)("b",{children:e.school})," ",e.major," ",(0,s.jsx)("span",{className:"text-xs text-gray-400",children:e.degree})]},t))})]}):null,(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h3",{className:"mb-2 text-lg font-semibold",children:"原始数据(该版本)"}),(0,s.jsx)(x.Y,{data:y.extracted})]})]})}let P={create:"建档",move:"阶段流转",form:"表单更新",invite:"邀请",invite_approved:"邀请批准",note:"备注",delete:"删除"};function L(e){let{recommendations:t,error:l,onRetry:n}=e,[r,i]=(0,a.useState)(null);return l?(0,s.jsxs)("p",{className:"rounded-lg border border-red-200 bg-white p-5 text-sm text-red-500 shadow-sm",children:["推荐记录加载失败:",l,n?(0,s.jsx)("button",{type:"button",onClick:n,className:"ml-2 text-blue-500 hover:underline",children:"重试"}):null]}):(null==t?void 0:t.length)?(0,s.jsx)("div",{className:"space-y-3",children:t.map(e=>{var t,l,a,n,d;let o=r===e.id,c=Object.entries(null!==(t=e.formData)&&void 0!==t?t:{}).filter(e=>{let[,t]=e;return null!=t&&""!==t});return(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-4 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("a",{href:"/jobs?id=".concat(e.jobCaseId),className:"font-medium text-blue-600 hover:underline",children:null!==(l=e.jobTitle)&&void 0!==l?l:"职位 #".concat(e.jobCaseId)}),(0,s.jsx)("span",{className:"rounded bg-blue-50 px-2 py-0.5 text-xs text-blue-700",children:null!==(a=e.stageLabel)&&void 0!==a?a:e.stage})]}),(0,s.jsx)("button",{type:"button",onClick:()=>i(o?null:e.id),className:"text-xs text-blue-600 hover:underline",children:o?"收起 ▲":"展开表单与历史 ▼"})]}),o?(0,s.jsxs)("div",{className:"mt-3 space-y-3 border-t border-gray-100 pt-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"mb-1 text-xs text-gray-400",children:["当前阶段表单(",c.length,")"]}),c.length?(0,s.jsx)("dl",{className:"grid gap-x-6 gap-y-1 md:grid-cols-2",children:c.map(e=>{let[t,l]=e;return(0,s.jsxs)("div",{className:"flex gap-2 text-sm",children:[(0,s.jsx)("dt",{className:"shrink-0 text-gray-400",children:t}),(0,s.jsx)("dd",{className:"whitespace-pre-wrap text-gray-800",children:"object"==typeof l?JSON.stringify(l):String(l)})]},t)})}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"(空)"})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"mb-1 text-xs text-gray-400",children:["操作历史(",(null!==(n=e.history)&&void 0!==n?n:[]).length,")"]}),(0,s.jsx)("ol",{className:"space-y-1",children:(null!==(d=e.history)&&void 0!==d?d:[]).map((e,t)=>{var l;return(0,s.jsxs)("li",{className:"text-sm text-gray-700",children:[(0,s.jsx)("span",{className:"text-gray-400",children:(0,u.d3)(e.at)})," ",(0,s.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs",children:null!==(l=P[e.action])&&void 0!==l?l:e.action})," ",e.fromStage?(0,s.jsxs)("span",{children:[e.fromStage," → "]}):null,e.toStage?(0,s.jsx)("b",{children:e.toStage}):null,e.by?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",e.by]}):null,e.note?(0,s.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",e.note]}):null]},t)})})]})]}):null]},e.id)})}):(0,s.jsx)("p",{className:"rounded-lg border border-gray-200 bg-white p-5 text-sm text-gray-500 shadow-sm",children:"暂无推荐记录(可从头部「加入推荐流程」建档,或让 agent 写回)"})}let M={merge:"bg-blue-50 text-blue-700",sync:"bg-violet-50 text-violet-700",manual:"bg-amber-50 text-amber-700",backfill:"bg-gray-100 text-gray-600"},_={"identity.displayName":"姓名","identity.gender":"性别","identity.birthYear":"出生年","identity.location":"地点","identity.nationality":"国籍","professional.headline":"头衔","professional.summary":"简介","professional.currentCompany":"现任公司","professional.currentTitle":"现任职位","professional.titleLevel":"职级","professional.yearsOfExperience":"工作年限","professional.currentStatus":"当前状态","professional.desiredJob":"求职意向","professional.skills":"技能","professional.workExperiences":"工作经历","professional.educations":"教育经历","professional.projects":"项目经历","professional.languages":"语言","professional.certifications":"证书","contact.phones":"电话","contact.emails":"邮箱","contact.wechats":"微信","contact.linkedinUrls":"LinkedIn"},B=e=>{if(null==e)return"(空)";if("object"==typeof e){if(e.truncated)return"".concat(String(e.preview).slice(0,60),"…");if(e.name)return String(e.name);if(e.city)return String(e.city);if(e.added||e.removed){var t,l,s;let a=[],n=e=>{var t,l,s,a,n;return null!==(n=null!==(a=null!==(s=null!==(l=null!==(t=null==e?void 0:e.name)&&void 0!==t?t:null==e?void 0:e.companyName)&&void 0!==l?l:null==e?void 0:e.school)&&void 0!==s?s:null==e?void 0:e.language)&&void 0!==a?a:null==e?void 0:e.value)&&void 0!==n?n:String(e)};return(null===(t=e.added)||void 0===t?void 0:t.length)&&a.push("新增 ".concat(e.added.map(n).join("、"))),(null===(l=e.removed)||void 0===l?void 0:l.length)&&a.push("移除 ".concat(e.removed.map(n).join("、"))),a.length||null==e.before||a.push("".concat(e.before," → ").concat(null!==(s=e.after)&&void 0!==s?s:"?"," 条")),a.join(";")}return JSON.stringify(e).slice(0,60)}return String(e)};function q(e){let{changes:t}=e;return(null==t?void 0:t.length)?(0,s.jsx)("ol",{className:"space-y-2",children:t.map(e=>{var t,l,a;return(0,s.jsxs)("li",{className:"rounded-lg border border-gray-200 bg-white p-3 text-sm shadow-sm",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,s.jsx)("span",{className:"font-medium text-gray-900",children:null!==(t=_[e.fieldPath])&&void 0!==t?t:e.fieldPath}),(0,s.jsx)("span",{className:"rounded px-1.5 py-0.5 text-xs ".concat(null!==(l=M[e.changeType])&&void 0!==l?l:"bg-gray-100 text-gray-600"),children:null!==(a=N[e.changeType])&&void 0!==a?a:e.changeType}),e.sourceSystem?(0,s.jsxs)("span",{className:"text-xs text-gray-400",children:["来源 ",e.sourceSystem]}):null,(0,s.jsx)("span",{className:"ml-auto text-xs text-gray-400",children:(0,u.d3)(e.createdAt)})]}),(0,s.jsxs)("div",{className:"mt-1 text-gray-600",children:[(0,s.jsx)("span",{className:"text-red-600 line-through decoration-red-300",children:B(e.oldValue)}),(0,s.jsx)("span",{className:"mx-2 text-gray-400",children:"→"}),(0,s.jsx)("span",{className:"text-green-700",children:B(e.newValue)})]}),e.actor?(0,s.jsxs)("div",{className:"mt-0.5 text-xs text-gray-400",children:["操作者:",e.actor]}):null]},e.id)})}):(0,s.jsx)("p",{className:"rounded-lg border border-gray-200 bg-white p-5 text-sm text-gray-500 shadow-sm",children:"暂无字段级变更记录(画像被新解析合并/同步覆盖时自动留痕,自 2026-10-04 起记)"})}function R(e){var t,l,a,n,r,i,d,o,c,u,x,m;let{entity:h}=e,p=h.extracted||{},g=Array.isArray(p.workExperiences)?p.workExperiences:[],y=Array.isArray(p.education)?p.education:[],b=e=>"string"==typeof e?e:e&&"object"==typeof e&&"string"==typeof e.name?e.name:null,v=(Array.isArray(p.skills)?p.skills:[]).map(b).filter(Boolean),j=(Array.isArray(p.languages)?p.languages:[]).map(b).filter(e=>!!e),f=[["博士后",9],["博士",8],["DBA",8],["MBA",7],["EMBA",7],["硕士",6],["研究生",6],["MBA/EMBA",7],["本科",5],["学士",5],["大专",4],["专科",4],["高中",2],["中专",2],["初中",1]],N=e=>{if(!e)return 0;let t=0;for(let[l,s]of f)e.includes(l)&&s>t&&(t=s);return t},w=y.length?y.reduce((e,t)=>N(null==t?void 0:t.degree)>N(null==e?void 0:e.degree)?t:e):null,k=e=>{var t,l;return[null!==(t=e.start)&&void 0!==t?t:e.startDate,null!==(l=e.end)&&void 0!==l?l:e.endDate].filter(Boolean).join(" - ")};return(0,s.jsxs)("div",{className:"mb-4 rounded-lg border border-gray-200 bg-white p-4 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-baseline gap-2 text-sm",children:[(0,s.jsx)("span",{className:"text-gray-500",children:"现任"}),(0,s.jsx)("b",{className:"text-gray-900",children:null!==(c=null!==(o=null!==(d=p.currentCompany)&&void 0!==d?d:null===(t=g[0])||void 0===t?void 0:t.companyName)&&void 0!==o?o:null===(l=g[0])||void 0===l?void 0:l.company)&&void 0!==c?c:"(未知)"}),(0,s.jsx)("span",{className:"text-gray-700",children:null!==(m=null!==(x=null!==(u=p.currentPosition)&&void 0!==u?u:null===(a=g[0])||void 0===a?void 0:a.title)&&void 0!==x?x:null===(n=g[0])||void 0===n?void 0:n.position)&&void 0!==m?m:""})]}),g.length?(0,s.jsxs)("div",{className:"mt-2",children:[(0,s.jsxs)("div",{className:"text-xs text-gray-400",children:["工作经历(近 3 段 / 共 ",g.length," 段)"]}),(0,s.jsx)("ul",{className:"mt-1 space-y-0.5 text-sm text-gray-700",children:g.slice(0,3).map((e,t)=>{var l,a,n;return(0,s.jsxs)("li",{children:[(0,s.jsx)("b",{children:null!==(a=null!==(l=e.companyName)&&void 0!==l?l:e.company)&&void 0!==a?a:"(公司未知)"})," ",null!==(n=e.title)&&void 0!==n?n:e.position," ",(0,s.jsx)("span",{className:"text-xs text-gray-400",children:k(e)})]},t)})})]}):null,y.length?(0,s.jsxs)("div",{className:"mt-2 text-sm text-gray-700",children:[(0,s.jsxs)("span",{className:"text-xs text-gray-400",children:["教育(最近 / 最高 / 共 ",y.length," 段):"]})," ",null===(r=y[0])||void 0===r?void 0:r.school," ",null===(i=y[0])||void 0===i?void 0:i.degree,w&&w!==y[0]?" \xb7 最高:".concat(w.school," ").concat(w.degree):""]}):null,v.length||j.length?(0,s.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1 text-sm",children:[v.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"text-xs text-gray-400",children:"技能"}),v.slice(0,12).map(e=>(0,s.jsx)("span",{className:"rounded bg-blue-50 px-2 py-0.5 text-xs text-blue-700",children:e},e))]}):null,j.length?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"ml-2 text-xs text-gray-400",children:"语言"}),j.map(e=>(0,s.jsx)("span",{className:"rounded bg-green-50 px-2 py-0.5 text-xs text-green-700",children:e},e))]}):null]}):null]})}function J(e){var t,l,n;let{entity:i,portraitId:d,matches:o,sources:c}=e,[u,x]=(0,a.useState)("overview"),{versions:m,recommendations:h,changes:p,evaluations:g,recommendationsError:y,reloadRecommendations:b}=function(e){let[t,l]=(0,a.useState)(null),[s,n]=(0,a.useState)(null),[i,d]=(0,a.useState)(null),[o,c]=(0,a.useState)(null),[u,x]=(0,a.useState)(null),[m,h]=(0,a.useState)(0);return(0,a.useEffect)(()=>{if(!e){l([]),n([]),d([]),c([]),x(null);return}let t=!0;return(async()=>{let s=async(e,t)=>{try{return await e}catch(e){return t}},[a,n,i]=await Promise.all([s((0,r.aA)("/parsed-resumes?portraitId=".concat(e)),{items:[]}),s((0,r.aA)("/resume-field-changes?portraitId=".concat(e)),{items:[]}),s((0,r.aA)("/talent-portraits/".concat(e,"/evaluations")),{items:[]})]);t&&(l(a.items),d(n.items),c(i.items))})(),(async()=>{try{let l=await (0,r.aA)("/recommendations/by-portrait/".concat(e));if(!t)return;n(l.items),x(null)}catch(e){if(!t)return;n([]),x(e instanceof Error?e.message:"加载失败")}})(),()=>{t=!1}},[e,m]),{versions:t,recommendations:s,changes:i,evaluations:o,recommendationsError:u,reloadRecommendations:()=>h(e=>e+1)}}(d),v=[{key:"overview",label:"最新情况"},{key:"resumes",label:"简历",count:null!==(t=null==m?void 0:m.length)&&void 0!==t?t:null},{key:"recommendations",label:"推荐记录",count:null!==(l=null==h?void 0:h.length)&&void 0!==l?l:null},{key:"changes",label:"变更历史",count:null!==(n=null==p?void 0:p.length)&&void 0!==n?n:null}];return(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"mb-4 flex flex-wrap gap-1 border-b border-gray-200",children:v.map(e=>(0,s.jsxs)("button",{type:"button",onClick:()=>x(e.key),className:"px-4 py-2 text-sm ".concat(u===e.key?"border-b-2 border-blue-500 font-medium text-blue-600":"text-gray-600 hover:text-gray-900"),children:[e.label,null!=e.count&&e.count>0?(0,s.jsxs)("span",{className:"ml-1 text-xs text-gray-400",children:["(",e.count,")"]}):null]},e.key))}),"overview"===u?(0,s.jsx)(S,{versions:m,recommendations:h,changes:p,evaluations:g,matches:o}):null,"resumes"===u?(0,s.jsx)(D,{entity:i,portraitId:d,versions:m,sources:c}):null,"recommendations"===u?(0,s.jsx)(L,{recommendations:h,error:y,onRetry:b}):null,"changes"===u?(0,s.jsx)(q,{changes:p}):null]})}let Y={talent:"人才",job:"职位",company:"公司"},V={talent:"bg-blue-50 text-blue-700",job:"bg-yellow-50 text-yellow-700",company:"bg-green-50 text-green-700"};function W(e){var t,l,n,i,d,o;let{type:c,entity:m,sources:h}=e,[p,g]=(0,a.useState)(h.length?String(h[0].id):""),[y,b]=(0,a.useState)(!1),[j,N]=(0,a.useState)(null),[w,k]=(0,a.useState)(null),[S,A]=(0,a.useState)(null);async function C(){N(null);try{let e=await fetch("".concat((0,r.Ox)(),"/entities/").concat(c,"/").concat(m.id,"/repair-prompt"));if(!e.ok)throw Error("HTTP ".concat(e.status));let t=await e.json();await navigator.clipboard.writeText(t.prompt),b(!0),setTimeout(()=>b(!1),4e3)}catch(e){N(e.message)}}(0,a.useEffect)(()=>{if("talent"!==c)return;let e=!0;return(async()=>{try{var t,l;let s=await fetch("".concat((0,r.Ox)(),"/entities/talent/").concat(m.id,"/matches"));if(!s.ok)return;let a=await s.json();if(!e)return;k(null!==(t=null==a?void 0:a.portraitId)&&void 0!==t?t:null),A(null!==(l=null==a?void 0:a.matches)&&void 0!==l?l:[])}catch(e){}})(),()=>{e=!1}},[c,m.id]);let T="talent"===c?null!==(t=m.name)&&void 0!==t?t:"(未命名)":"job"===c?null!==(l=m.title)&&void 0!==l?l:"(未命名职位)":null!==(n=m.name)&&void 0!==n?n:"(未命名)",I="talent"===c?m.headline:"job"===c?m.company:"",E=h.find(e=>String(e.id)===p)||h[0];return(0,s.jsxs)("div",{className:"w-full",children:["talent"===c?(0,s.jsx)(v,{entity:m}):null,(0,s.jsxs)("header",{className:"mb-6",children:[(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:T}),(0,s.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(null!==(i=V[c])&&void 0!==i?i:"bg-gray-100 text-gray-600"),children:null!==(d=Y[c])&&void 0!==d?d:c}),(0,s.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:m.source}),m.sourceUrl?(0,s.jsx)("a",{href:m.sourceUrl,target:"_blank",rel:"noreferrer",title:m.sourceUrl,className:"max-w-xl truncate text-sm text-blue-600 hover:underline",children:m.sourceUrl}):null]}),I?(0,s.jsx)("p",{className:"mt-1 text-gray-600",children:I}):null,m.sessionId?(0,s.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,s.jsx)("button",{onClick:C,className:"rounded bg-amber-600 px-3 py-1 text-sm text-white hover:bg-amber-700",children:y?"已复制 ✓ 请发给 agent":"解析有误让agent修复"}),(0,s.jsx)("span",{className:"text-xs text-gray-400",children:"按录制重解析、修解析 bug、提 issue"}),j?(0,s.jsx)("span",{className:"text-xs text-red-600",children:j}):null]}):null,"talent"===c?(0,s.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,s.jsx)(f,{entityId:m.id,name:T}),(0,s.jsx)("span",{className:"text-xs text-gray-400",children:"加入某职位推荐流水线,默认待邀请"})]}):null]}),"talent"===c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(R,{entity:m}),(0,s.jsx)(J,{entity:m,portraitId:w,matches:S,sources:h.map(e=>({id:e.id,sourceUrl:e.sourceUrl,domain:e.domain,createdAt:e.createdAt}))})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"解析来源"}),E?(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"当前来源页面"}),(0,s.jsx)("a",{href:E.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:E.sourceUrl}),E.hasSnapshot?(0,s.jsx)("span",{className:"ml-2 rounded bg-green-50 px-1.5 py-0.5 text-xs text-green-700",children:"有录制快照"}):null]}),h.length>1?(0,s.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,s.jsx)("label",{className:"text-sm text-gray-600",children:"历史来源:"}),(0,s.jsx)("select",{value:p,onChange:e=>g(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm",children:h.map(e=>(0,s.jsxs)("option",{value:e.id,children:[e.domain," \xb7 ",(0,u.d3)(e.createdAt)]},e.id))}),(0,s.jsx)("a",{href:E.sourceUrl,target:"_blank",rel:"noreferrer",className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700",children:"打开该来源页面"})]}):null]}):(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"暂无解析来源记录"})]}),(0,s.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"原始数据"}),(0,s.jsx)(x.Y,{data:null!==(o=m.extracted)&&void 0!==o?o:m.raw})]})]})]})}var z=l(27828),H=l(26119),G=l(93464);function K(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[l,s]=e;s&&t.set(l,s)});let l=t.toString();return l?"?".concat(l):""}function Q(e){var t,l;let{type:x,label:m,batchDelete:h}=e,p=(0,n.useRouter)(),g=(0,n.usePathname)(),y=(0,n.useSearchParams)(),b=y.get("id")||"",v=(0,a.useMemo)(()=>({q:y.get("q")||"",status:"",from:y.get("from")||"",to:y.get("to")||""}),[y]),[f,N]=(0,a.useState)(null),[w,k]=(0,a.useState)(!1),[S,A]=(0,a.useState)(!1),[C,T]=(0,a.useState)(0),I=(0,a.useCallback)(e=>{var t,l;let s=null!==(t=e.filters)&&void 0!==t?t:v,a=K({id:null!==(l=e.id)&&void 0!==l?l:b,q:s.q,from:s.from,to:s.to});p.replace("".concat(g).concat(a))},[v,b,g,p]),{session:E,sync:U}=(0,j.nu)(),O=null!==(t=null==U?void 0:U.activeTenantId)&&void 0!==t?t:null,D=(0,H.B)({deleteUrl:"/entities/".concat(x),label:m,onDeleted:()=>F.refresh(),currentUserId:null!==(l=null==E?void 0:E.hmUserId)&&void 0!==l?l:null}),F=(0,G.k)({fetchPage:(0,a.useCallback)(async(e,t)=>{let l=K({q:v.q,from:v.from,to:v.to}),s=await (0,r.aA)("/entities?type=".concat(x,"&limit=").concat(t,"&offset=").concat(e).concat(l.replace("?","&")));return{items:s.items,total:s.total,nextOffset:s.nextOffset}},[x,v.q,v.from,v.to,O]),pageSize:50,deps:[x,v.q,v.from,v.to,O]}),P=F.items;(0,a.useEffect)(()=>{D.prune(P.map(e=>String(e.id)))},[P,D]);let L=(0,a.useCallback)(()=>{if(P.length)return P[0].updatedAt},[P]);(0,a.useEffect)(()=>{if(!b){N(null),A(!1);return}k(!0),A(!1),Promise.all([(0,r.aA)("/entities/".concat(x,"/").concat(b)),(0,r.aA)("/entities/".concat(x,"/").concat(b,"/sources")).catch(()=>null)]).then(e=>{let[t,l]=e;N({entity:t.entity,sources:l?l.items:[]})}).catch(()=>{N(null),A(!0)}).finally(()=>{k(!1)})},[x,b,O,C]);let M=(0,a.useMemo)(()=>P.map(e=>{var t,l,a;let n=String(e.id),r="talent"===x?(0,s.jsx)(z.oj,{name:null!==(t=e.name)&&void 0!==t?t:"(未命名)",headline:e.headline,source:e.source,updatedAt:e.updatedAt}):"job"===x?(0,s.jsx)(z.rY,{title:null!==(l=e.title)&&void 0!==l?l:"(无标题)",source:e.source,company:e.company,sourceUrl:e.sourceUrl,updatedAt:e.updatedAt}):(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:"font-medium text-gray-900",children:null!==(a=e.name)&&void 0!==a?a:"(未命名)"}),(0,s.jsxs)("div",{className:"mt-0.5 flex items-center gap-2 text-xs text-gray-400",children:[(0,s.jsx)("span",{children:e.source}),(0,s.jsx)("span",{children:"\xb7"}),(0,s.jsx)("span",{children:(0,u.d3)(e.updatedAt)})]})]});return{id:n,content:(0,s.jsxs)("div",{className:"flex items-start gap-2",children:[h&&D.checkbox(n),r]})}}),[P,x,h,D]),_=b?w?(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):S?(0,s.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,s.jsx)("button",{type:"button",onClick:()=>T(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):f?(0,s.jsx)(W,{type:x,entity:f.entity,sources:f.sources}):(0,s.jsxs)("div",{className:"flex h-full items-center justify-center text-red-500",children:["未找到该",m]}):(0,s.jsxs)("div",{className:"flex h-full items-center justify-center text-gray-400",children:["请在左侧选择一条",m,"查看详情"]});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.m,{filterBar:(0,s.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,s.jsx)(i.f,{value:v,onChange:e=>I({filters:e})}),(0,s.jsx)(c.Y,{pollUrl:"/entities/count?type=".concat(x),getLatestTimestamp:L,onRefresh:()=>F.refresh(),label:m}),h&&D.bar(M)]}),listPanel:F.error?(0,s.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,s.jsx)("span",{className:"text-red-500",children:"加载失败"}),(0,s.jsx)("button",{type:"button",onClick:()=>F.refresh(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,s.jsx)(o.L,{items:M,selectedId:b,onSelect:e=>I({id:e}),loading:F.loading,emptyText:"暂无".concat(m,"数据"),onLoadMore:F.loadMore,loadingMore:F.loadingMore,exhausted:F.exhausted}),detailPanel:_}),D.modal()]})}function X(e){return(0,s.jsx)(a.Suspense,{fallback:(0,s.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,s.jsx)(Q,{...e})})}},37202:function(e,t,l){l.d(t,{f:function(){return n}});var s=l(72835),a=l(60635);function n(e){let{value:t,showStatus:l,statusOptions:n,onChange:r}=e,[i,d]=(0,a.useState)(t);return(0,a.useEffect)(()=>{d(t)},[t.q,t.status,t.from,t.to]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{(i.q!==t.q||i.status!==t.status||i.from!==t.from||i.to!==t.to)&&r(i)},300);return()=>clearTimeout(e)},[i.q,i.status,i.from,i.to]),(0,s.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)("div",{className:"relative flex-1",children:[(0,s.jsx)("input",{type:"text",value:i.q,onChange:e=>d(t=>({...t,q:e.target.value})),placeholder:"搜索关键词...",className:"w-full rounded border border-gray-300 px-2 py-1.5 pr-8 text-sm outline-none focus:border-blue-500"}),(0,s.jsx)("button",{type:"button",onClick:()=>r({q:"",status:"",from:"",to:""}),title:"重置筛选",className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600 disabled:opacity-30",disabled:!i.q&&!i.status&&!i.from&&!i.to,children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),l?(0,s.jsxs)("select",{value:i.status,onChange:e=>d(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,s.jsx)("option",{value:"",children:"全部状态"}),(n||[]).map(e=>(0,s.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("input",{type:"date",value:i.from,onChange:e=>d(t=>({...t,from:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),(0,s.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,s.jsx)("input",{type:"date",value:i.to,onChange:e=>d(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},86777:function(e,t,l){l.d(t,{Y:function(){return d}});var s=l(72835),a=l(60635);function n(e){let{value:t}=e;if(null===t)return(0,s.jsx)("span",{className:"italic text-gray-400",children:"null"});if(void 0===t)return(0,s.jsx)("span",{className:"italic text-gray-400",children:"undefined"});switch(typeof t){case"string":return(0,s.jsxs)("span",{className:"break-all text-red-700",children:['"',t,'"']});case"number":return(0,s.jsx)("span",{className:"text-emerald-700",children:String(t)});case"boolean":return(0,s.jsx)("span",{className:"text-blue-700",children:String(t)});default:return(0,s.jsx)("span",{className:"text-gray-700",children:String(t)})}}function r(e){let{name:t}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("span",{className:"text-indigo-700",children:['"',t,'"']}),(0,s.jsx)("span",{className:"text-gray-500",children:": "})]})}function i(e){let{name:t,value:l,depth:d}=e,[o,c]=(0,a.useState)(d<2);if(!("object"==typeof l&&null!==l&&!Array.isArray(l))&&!Array.isArray(l))return(0,s.jsxs)("div",{className:"min-w-0",children:[null!==t?(0,s.jsx)(r,{name:t}):null,(0,s.jsx)(n,{value:l})]});let u=Array.isArray(l),x=u?l.map((e,t)=>[String(t),e]):Object.entries(l),m=u?"]":"}",h=x.length;return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"group flex cursor-pointer select-none items-baseline rounded hover:bg-gray-100",onClick:()=>c(e=>!e),role:"button","aria-expanded":o,children:[(0,s.jsx)("span",{className:"mr-0.5 inline-block w-4 shrink-0 text-center text-gray-400",children:h>0?o?"▾":"▸":""}),null!==t?(0,s.jsx)(r,{name:t}):null,(0,s.jsx)("span",{className:"text-gray-700",children:u?"[":"{"}),o?null:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{className:"mx-1 rounded bg-gray-100 px-1 text-gray-400 group-hover:bg-gray-200",children:u?"".concat(h," 项"):"".concat(h," 键")}),(0,s.jsx)("span",{className:"text-gray-700",children:m})]})]}),o?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"ml-[7px] border-l border-gray-200 pl-3",children:x.map(e=>{let[t,l]=e;return(0,s.jsx)(i,{name:u?null:t,value:l,depth:d+1},t)})}),(0,s.jsx)("div",{className:"pl-5 text-gray-700",children:m})]}):null]})}function d(e){let{data:t}=e;return null==t?(0,s.jsx)("div",{className:"text-xs text-gray-400",children:"(无数据)"}):(0,s.jsx)("div",{className:"max-h-[32rem] overflow-auto rounded bg-gray-50 p-3 font-mono text-xs leading-5",children:(0,s.jsx)(i,{name:null,value:t,depth:0})})}},19036:function(e,t,l){l.d(t,{Y:function(){return r}});var s=l(72835),a=l(60635),n=l(74431);function r(e){let{pollUrl:t,intervalMs:l=5e3,onRefresh:r,getLatestTimestamp:i,label:d="新数据"}=e,[o,c]=(0,a.useState)(0),[u,x]=(0,a.useState)(!1),m=(0,a.useRef)(void 0);return((0,a.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,a.useEffect)(()=>{m.current=i(),c(0)},[i]),(0,a.useEffect)(()=>{if(u)return;let e=async()=>{let e=m.current;if(!e)return;let l=t.includes("?")?"&":"?",s=0;try{var a;let r=await (0,n.aA)("".concat(t).concat(l,"since=").concat(encodeURIComponent(e)));s=null!==(a=r.count)&&void 0!==a?a:0}catch(e){}c(e=>Math.max(e,s))};e();let s=setInterval(e,l);return()=>clearInterval(s)},[t,l,u]),o<=0)?null:(0,s.jsxs)("button",{type:"button",onClick:()=>{c(0),r()},className:"w-full bg-blue-50 px-3 py-2 text-center text-sm text-blue-700 hover:bg-blue-100 active:bg-blue-200",children:["有 ",o," 条",d,",点击刷新"]})}}}]);
@@ -1 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="3facb604-4e9c-4400-b2c0-24fd670ee44a",e._sentryDebugIdIdentifier="sentry-dbid-3facb604-4e9c-4400-b2c0-24fd670ee44a")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[109],{74843:function(e,t,s){Promise.resolve().then(s.bind(s,5311))},5311:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return q}});var a=s(72835),l=s(70852),n=s(60635),r=s(27473),i=s(74431),d=s(8448),c=s(94518),o=s(63718),x=s(86777),u=s(27828),m=s(26119),h=s(93464),p=s(65777),b=s(67002);let g=[{hours:24,label:"1 天"},{hours:72,label:"3 天"},{hours:168,label:"7 天"},{hours:720,label:"30 天"}];function y(e){var t;let s,{jobCaseId:l,onClose:r}=e,[d,c]=(0,n.useState)(null),[o,x]=(0,n.useState)("tenant"),[u,m]=(0,n.useState)(new Set),[h,p]=(0,n.useState)(168),[y,v]=(0,n.useState)(""),[j,f]=(0,n.useState)(!1),[N,w]=(0,n.useState)(null),[k,S]=(0,n.useState)(null),[C,I]=(0,n.useState)(!1);async function A(){f(!0),w(null);try{let e=await (0,i.aA)("/shares",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobCaseId:l,scope:"users"===o?{type:"users",hmUserIds:Array.from(u)}:{type:"tenant"},ttlHours:h,note:y.trim()||void 0})});if(!(null==e?void 0:e.token)){w("创建失败:未登录云端账号 / 云服务不可达 / 该职位未同步上云");return}S(e)}catch(e){w("创建失败:未登录云端账号 / 云服务不可达 / 该职位未同步上云")}finally{f(!1)}}(0,n.useEffect)(()=>{let e=()=>{(async()=>{try{let e=await (0,i.aA)("/team/members");c(Array.isArray(e.items)?e.items:[])}catch(e){c([])}})()};return e(),(0,b.Lc)(e)},[]);let O=k?(t=k.urlPath,"".concat(window.location.origin).concat(t)):null;return s=null===d?(0,a.jsx)("div",{className:"text-xs text-gray-400",children:"加载同事目录…(未登录云端账号时为空)"}):d.length?d.map(e=>(0,a.jsxs)("label",{className:"flex items-center gap-2 py-1 text-sm",children:[(0,a.jsx)("input",{type:"checkbox",checked:u.has(e.hmUserId),onChange:t=>{let s=new Set(u);t.target.checked?s.add(e.hmUserId):s.delete(e.hmUserId),m(s)}}),(0,a.jsx)("span",{children:e.name}),(0,a.jsx)("span",{className:"text-xs text-gray-400",children:e.email})]},e.hmUserId)):(0,a.jsx)("div",{className:"text-xs text-gray-400",children:"暂无公司租户同事"}),(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:r,children:(0,a.jsxs)("div",{className:"w-[520px] max-w-[92vw] rounded-lg bg-white p-5 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,a.jsxs)("h3",{className:"text-base font-semibold",children:["分享职位推荐(职位 #",l,")"]}),(0,a.jsx)("button",{onClick:r,className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),k?(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"mb-2 rounded bg-emerald-50 px-3 py-2 text-sm text-emerald-800",children:["分享已创建,有效期至 ",new Date(k.expiresAt).toLocaleString()]}),(0,a.jsx)("div",{className:"mb-1 text-xs text-gray-500",children:"把链接发给同事(对方在自己本地 hm 打开):"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{readOnly:!0,value:null!=O?O:"",className:"flex-1 rounded border border-gray-300 px-2 py-1.5 font-mono text-xs",onFocus:e=>e.target.select()}),(0,a.jsx)("button",{onClick:()=>{O&&navigator.clipboard.writeText(O).then(()=>{I(!0),setTimeout(()=>I(!1),2500)})},className:"rounded bg-blue-600 px-3 py-1.5 text-xs text-white hover:bg-blue-700",children:C?"已复制 ✓":"复制"})]}),(0,a.jsx)("div",{className:"mt-4 text-right",children:(0,a.jsx)("button",{onClick:r,className:"rounded border border-gray-300 px-4 py-1.5 text-sm hover:bg-gray-50",children:"完成"})})]}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"分享范围"}),(0,a.jsxs)("label",{className:"mr-4 text-sm",children:[(0,a.jsx)("input",{type:"radio",checked:"tenant"===o,onChange:()=>x("tenant")})," 租户内所有同事"]}),(0,a.jsxs)("label",{className:"text-sm",children:[(0,a.jsx)("input",{type:"radio",checked:"users"===o,onChange:()=>x("users")})," 指定同事"]}),"users"===o?(0,a.jsx)("div",{className:"mt-2 max-h-36 overflow-auto rounded border border-gray-200 p-2",children:s}):null]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"有效期"}),(0,a.jsx)("select",{value:h,onChange:e=>p(Number(e.target.value)),className:"rounded border border-gray-300 px-2 py-1 text-sm",children:g.map(e=>(0,a.jsx)("option",{value:e.hours,children:e.label},e.hours))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"备注(可选,给查看者的说明)"}),(0,a.jsx)("input",{value:y,onChange:e=>v(e.target.value),maxLength:200,placeholder:"例如:这 10 位是本周重点推荐,请 op 优先跟进",className:"w-full rounded border border-gray-300 px-2 py-1.5 text-sm"})]}),N?(0,a.jsx)("div",{className:"text-xs text-red-600",children:N}):null,(0,a.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[(0,a.jsx)("button",{onClick:r,className:"rounded border border-gray-300 px-4 py-1.5 text-sm hover:bg-gray-50",children:"取消"}),(0,a.jsx)("button",{onClick:()=>void A(),disabled:j||"users"===o&&!u.size,className:"rounded bg-blue-600 px-4 py-1.5 text-sm text-white hover:bg-blue-700 disabled:opacity-40",children:j?"创建中…":"生成分享链接"})]})]})]})})}let v=null;function j(e,t,s){return(0,i.aA)(e,{method:t,headers:{"Content-Type":"application/json"},body:null!=s?JSON.stringify(s):void 0})}let f={create:"建档",move:"阶段迁移",form:"保存表单",invite:"记录邀请",invite_approved:"批准邀请",note:"备注",delete:"移出流程"};function N(e){var t;let{jobCaseId:s,canOperate:l=!0}=e,[r,c]=(0,n.useState)(v),[o,x]=(0,n.useState)("recommended"),[m,h]=(0,n.useState)([]),[p,g]=(0,n.useState)({}),[N,w]=(0,n.useState)(null),[k,S]=(0,n.useState)({}),[C,I]=(0,n.useState)(!1),[A,O]=(0,n.useState)(new Set),[T,E]=(0,n.useState)(new Set),[U,P]=(0,n.useState)(null),[z,_]=(0,n.useState)(!1),[D,L]=(0,n.useState)([]),[M,J]=(0,n.useState)(s),[B,F]=(0,n.useState)(""),[R,q]=(0,n.useState)(!1),[W,H]=(0,n.useState)(null),[Z,Y]=function(){let[e,t]=(0,n.useState)(null);return[e,(0,n.useCallback)((e,s)=>{navigator.clipboard.writeText(s).then(()=>{t(e),setTimeout(()=>t(t=>t===e?null:t),2500)})},[])]}(),[K,G]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(v)return;let e=!0,t=()=>{v||(0,i.aA)("/recommendations/meta").then(t=>{t&&e&&(v=t,c(t))}).catch(()=>{})};t();let s=(0,b.Lc)(t);return()=>{e=!1,s()}},[r]);let Q=(0,n.useMemo)(()=>{var e;return null!==(e=null==r?void 0:r.stages.map(e=>e.key))&&void 0!==e?e:[]},[r]),V=(0,n.useCallback)(async()=>{I(!0);try{var e;let t=await (0,i.aA)("/job-cases/".concat(s,"/recommendations"));h(t.items),g(null!==(e=t.counts)&&void 0!==e?e:{}),O(new Set)}catch(e){}finally{I(!1)}},[s]);(0,n.useEffect)(()=>{x("recommended"),P(null),w(null),V()},[V]),(0,n.useEffect)(()=>{"matched"===o&&null===N&&(async()=>{var e,t;let[a,l]=await Promise.all([(0,i.aA)("/matching/jobs/".concat(s,"/talents")).catch(()=>[]),(0,i.aA)("/talent-portraits").catch(()=>[])]);w(a);let n={};for(let s of l)n[s.id]=null!==(t=null===(e=s.identity)||void 0===e?void 0:e.displayName)&&void 0!==t?t:"(未命名)";S(n)})()},[o,N,s]);let X=(0,n.useCallback)(async(e,t)=>{try{let s=await t();(null==s?void 0:s.prompt)&&Y(e,s.prompt)}catch(e){}},[Y]),$=(e,t,s)=>{let a=new Set(e);a.has(t)?a.delete(t):a.add(t),s(a)},ee=async()=>{if(B){q(!0),H(null);try{await j("/recommendations/batch-move","POST",{ids:Array.from(A),stage:B,jobCaseId:M})}catch(e){q(!1),H("移动失败,请重试");return}q(!1),_(!1),await V()}},et=async()=>{q(!0),H(null);let e=Array.from(T),t=(await Promise.all(e.map(e=>j("/recommendations/adopt","POST",{matchId:e}).then(()=>!0,()=>!1)))).filter(e=>!e).length;q(!1),E(new Set),await V(),t&&H("".concat(t," 个采纳失败,请重试"))},es=async()=>{J(s),F(""),_(!0);try{var e;let t=await (0,i.aA)("/job-cases?limit=200");L(null!==(e=t.items)&&void 0!==e?e:[])}catch(e){}};if(!r)return(0,a.jsx)("div",{className:"p-4 text-sm text-gray-400",children:"加载推荐流水线定义…"});let ea=[...r.stages.map(e=>{var t;return{key:e.key,label:"".concat(e.label,"(").concat(null!==(t=p[e.key])&&void 0!==t?t:0,")")}})];ea.splice(1,0,{key:"matched",label:"匹配人才(".concat(null!==(t=null==N?void 0:N.length)&&void 0!==t?t:"…",")")});let el=e=>{var t;return e?null!==(t=r.stageLabels[e])&&void 0!==t?t:e:""};return(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"mb-3 flex flex-wrap gap-1 border-b border-gray-200 pb-2",children:ea.map(e=>(0,a.jsx)("button",{onClick:()=>{x(e.key),P(null)},className:"rounded px-2.5 py-1 text-xs ".concat(o===e.key?"bg-blue-100 font-medium text-blue-800":"text-gray-500 hover:bg-gray-100"),children:e.label},e.key))}),l?(0,a.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:["recommended"===o?(0,a.jsx)("button",{onClick:()=>void X("recommend",()=>(0,i.aA)("/job-cases/".concat(s,"/recommend-prompt"))),className:"rounded bg-amber-600 px-3 py-1 text-xs text-white hover:bg-amber-700",children:"recommend"===Z?"已复制 ✓ 请发给 agent":"再推荐(复制 prompt)"}):null,"matched"===o?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("button",{onClick:()=>void X("match",()=>(0,i.aA)("/job-cases/".concat(s,"/match-prompt"))),className:"rounded bg-amber-600 px-3 py-1 text-xs text-white hover:bg-amber-700",children:"match"===Z?"已复制 ✓ 请发给 agent":"打分分析推荐(复制 prompt)"}),(0,a.jsxs)("button",{onClick:()=>void et(),disabled:!T.size||R,className:"rounded bg-emerald-600 px-3 py-1 text-xs text-white hover:bg-emerald-700 disabled:opacity-40",children:["采纳为推荐(",T.size,")"]})]}):null,"pending_invite"===o&&A.size?(0,a.jsx)("button",{onClick:()=>void X("invite",()=>j("/recommendations/invite-prompt","POST",{ids:Array.from(A)})),className:"rounded bg-sky-600 px-3 py-1 text-xs text-white hover:bg-sky-700",children:"invite"===Z?"已复制 ✓ 请发给 agent":"发送邀请(".concat(A.size,")")}):null,"invited"===o&&A.size?(0,a.jsx)("button",{onClick:()=>void X("reply",()=>j("/recommendations/reply-check-prompt","POST",{ids:Array.from(A)})),className:"rounded bg-sky-600 px-3 py-1 text-xs text-white hover:bg-sky-700",children:"reply"===Z?"已复制 ✓ 请发给 agent":"检查回复(".concat(A.size,")")}):null,"matched"!==o&&A.size?(0,a.jsxs)("button",{onClick:()=>void es(),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-700 hover:bg-gray-50",children:["移动到…(",A.size,")"]}):null,A.size||T.size?(0,a.jsx)("button",{onClick:()=>{O(new Set),E(new Set)},className:"text-xs text-gray-400 hover:text-gray-600",children:"清除选择"}):null,(0,a.jsx)("button",{onClick:()=>G(!0),className:"ml-auto rounded bg-violet-600 px-3 py-1 text-xs text-white hover:bg-violet-700",children:"分享给同事"})]}):(0,a.jsx)("div",{className:"mb-3 rounded border border-amber-100 bg-amber-50 px-2 py-1 text-xs text-amber-600",children:"仅该职位的 op/rs 可操作推荐流程,你可查看"}),K?(0,a.jsx)(y,{jobCaseId:s,onClose:()=>G(!1)}):null,W?(0,a.jsx)("div",{className:"mb-2 text-xs text-red-500",children:W}):null,C?(0,a.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"加载中…"}):"matched"===o?(0,a.jsx)(function(e){return null===e.matches?(0,a.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"计算匹配中…"}):e.matches.length?(0,a.jsx)("div",{className:"space-y-2",children:e.matches.map(t=>{var s,l,n,r,i,d;return(0,a.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-2",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[e.canOperate?(0,a.jsx)("input",{type:"checkbox",checked:e.selected.has(t.id),onChange:()=>e.onToggle(t.id),className:"mt-1"}):null,(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"font-medium text-gray-900",children:null!==(r=e.names[t.portraitId])&&void 0!==r?r:t.portraitId}),(0,a.jsxs)("span",{className:"rounded bg-emerald-100 px-1.5 py-0.5 text-xs text-emerald-700",children:[null!==(i=null===(s=t.scores)||void 0===s?void 0:s.overall)&&void 0!==i?i:"?","分"]}),t.humanFeedback?(0,a.jsx)("span",{className:"rounded bg-purple-100 px-1.5 py-0.5 text-xs text-purple-700",children:t.humanFeedback.isRecommended?"已采纳":"已排除"}):null]}),(0,a.jsx)("button",{onClick:()=>e.onExpand(t.id),className:"mt-0.5 text-xs text-blue-500 hover:underline",children:e.expanded===t.id?"收起":"AI 推荐理由"})]})]}),e.expanded===t.id?(0,a.jsxs)("div",{className:"mt-2 border-t border-gray-100 pt-2 text-xs text-gray-600",children:[null!==(d=null===(l=t.recommendation)||void 0===l?void 0:l.aiReason)&&void 0!==d?d:"(无推荐理由)",(null===(n=t.humanFeedback)||void 0===n?void 0:n.reason)?(0,a.jsxs)("div",{className:"mt-1 text-purple-600",children:["人工反馈:",t.humanFeedback.reason]}):null]}):null]},t.id)})}):(0,a.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"暂无人岗匹配数据"})},{matches:N,names:k,selected:T,onToggle:e=>$(T,e,E),expanded:U,onExpand:e=>P(U===e?null:e),canOperate:l}):0===m.length?(0,a.jsxs)("div",{className:"py-8 text-center text-sm text-gray-400",children:["本阶段暂无人选","recommended"===o?",点上方「再推荐」让 agent 寻访":"","pending_invite"===o?",可在人才详情「加入推荐流程」":""]}):(0,a.jsx)("div",{className:"space-y-2",children:m.map(e=>(0,a.jsx)(en,{row:e,meta:r,checked:A.has(e.id),onToggle:()=>$(A,e.id,O),expanded:U===e.id,onExpand:()=>P(U===e.id?null:e.id),onChanged:V,canOperate:l},e.id))}),z?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,a.jsxs)("div",{className:"w-96 rounded-lg bg-white p-4 shadow-xl",children:[(0,a.jsxs)("h3",{className:"mb-3 text-sm font-semibold text-gray-900",children:["批量移动(",A.size," 人)"]}),(0,a.jsxs)("label",{className:"mb-2 block text-xs text-gray-500",children:["目标职位",(0,a.jsxs)("select",{value:M,onChange:e=>J(Number(e.target.value)),className:"mt-1 w-full rounded border border-gray-300 px-2 py-1.5 text-sm",children:[D.map(e=>(0,a.jsx)("option",{value:e.id,children:e.title||e.externalId},e.id)),D.find(e=>e.id===s)?null:(0,a.jsx)("option",{value:s,children:"当前职位"})]})]}),(0,a.jsxs)("label",{className:"mb-3 block text-xs text-gray-500",children:["目标阶段(当前职位的当前阶段不可选)",(0,a.jsxs)("select",{value:B,onChange:e=>F(e.target.value),className:"mt-1 w-full rounded border border-gray-300 px-2 py-1.5 text-sm",children:[(0,a.jsx)("option",{value:"",children:"选择阶段…"}),Q.filter(e=>!(M===s&&e===o)).map(e=>(0,a.jsx)("option",{value:e,children:el(e)},e))]})]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,a.jsx)("button",{onClick:()=>_(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,a.jsx)("button",{onClick:()=>void ee(),disabled:!B||R,className:"rounded bg-blue-600 px-3 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:R?"移动中…":"确认移动"})]})]})}):null]});function en(e){var t,s,l,r,i,c,o,x,m,h,p,b,g,y,v,N,w,k;let S=e.row,C=null!==(m=e.meta.formTemplates[S.stage])&&void 0!==m?m:[],[I,A]=(0,n.useState)(!1),[O,T]=(0,n.useState)({}),[E,U]=(0,n.useState)(!1),P=async()=>{var t;let s={},a=null!==(t=S.formData)&&void 0!==t?t:{};for(let[e,t]of Object.entries(O)){let l="string"==typeof t?t.trim():t;""===l||void 0===l?e in a&&(s[e]=null):a[e]!==l&&(s[e]=l)}for(let e of Object.keys(a))e in O||(s[e]=null);try{await j("/recommendations/".concat(S.id),"PATCH",Object.keys(s).length?{formData:s}:{})}catch(e){H("保存表单失败,请重试");return}A(!1),await e.onChanged()};return(0,a.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-2",children:[(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[e.canOperate?(0,a.jsx)("input",{type:"checkbox",checked:e.checked,onChange:e.onToggle,className:"mt-1"}):null,(0,a.jsx)("button",{className:"min-w-0 flex-1 text-left",onClick:e.onExpand,children:(0,a.jsx)(u.h5,{name:null!==(h=null===(t=S.snapshot)||void 0===t?void 0:t.name)&&void 0!==h?h:"(未命名)",headline:null!==(p=null===(s=S.scores)||void 0===s?void 0:s.aiReason)&&void 0!==p?p:null===(l=S.snapshot)||void 0===l?void 0:l.headline,overall:null!==(b=null===(i=S.scores)||void 0===i?void 0:null===(r=i.dimensions)||void 0===r?void 0:r.overall)&&void 0!==b?b:null,invitationChannel:null!==(g=null===(c=S.invitation)||void 0===c?void 0:c.channel)&&void 0!==g?g:null,updatedAt:S.updatedAt})}),e.canOperate?(0,a.jsx)("button",{onClick:()=>U(!0),className:"mt-1 text-xs text-gray-300 hover:text-red-500",title:"移出流程",children:"\xd7"}):null]}),e.expanded?(0,a.jsxs)("div",{className:"mt-2 space-y-3 border-t border-gray-100 pt-2",children:[(0,a.jsxs)("section",{children:[(0,a.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,a.jsxs)("h4",{className:"text-xs font-medium text-gray-700",children:[el(S.stage),"\xb7阶段表单"]}),I?(0,a.jsxs)("span",{className:"flex gap-2",children:[(0,a.jsx)("button",{onClick:()=>void P(),className:"rounded bg-blue-600 px-2 py-0.5 text-xs text-white",children:"保存"}),(0,a.jsx)("button",{onClick:()=>A(!1),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600",children:"取消"})]}):e.canOperate?(0,a.jsx)("button",{onClick:()=>{var e;let t={...null!==(e=S.formData)&&void 0!==e?e:{}};for(let e of C)e.key in t||(t[e.key]="");T(t),A(!0)},className:"text-xs text-blue-500 hover:underline",children:"编辑表单"}):null]}),I?(0,a.jsxs)("div",{className:"space-y-1.5",children:[Object.entries(O).map(e=>{var t,s;let[l,n]=e,r=null!==(s=null===(t=C.find(e=>e.key===l))||void 0===t?void 0:t.label)&&void 0!==s?s:l;return(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-40 shrink-0 truncate text-gray-500",title:r,children:r}),(0,a.jsx)("input",{value:String(null!=n?n:""),onChange:e=>T({...O,[l]:e.target.value}),className:"min-w-0 flex-1 rounded border border-gray-300 px-1.5 py-1"}),(0,a.jsx)("button",{onClick:()=>{let e={...O};delete e[l],T(e)},className:"text-gray-300 hover:text-red-500",children:"\xd7"})]},l)}),(0,a.jsx)(er,{onAdd:(e,t)=>T({...O,[e]:t}),existing:Object.keys(O)})]}):(0,a.jsxs)("dl",{className:"space-y-1 text-xs",children:[Object.entries(null!==(y=S.formData)&&void 0!==y?y:{}).length?Object.entries(null!==(v=S.formData)&&void 0!==v?v:{}).map(e=>{var t,s;let[l,n]=e;return(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("dt",{className:"w-40 shrink-0 truncate text-gray-500",children:null!==(s=null===(t=C.find(e=>e.key===l))||void 0===t?void 0:t.label)&&void 0!==s?s:l}),(0,a.jsx)("dd",{className:"min-w-0 flex-1 whitespace-pre-wrap text-gray-800",children:String(n)})]},l)}):(0,a.jsx)("div",{className:"text-gray-400",children:"(表单为空)"}),(null===(o=S.invitation)||void 0===o?void 0:o.sentAt)?(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("dt",{className:"w-40 shrink-0 text-gray-500",children:"邀请发送时间"}),(0,a.jsx)("dd",{className:"text-gray-800",children:(0,d.d3)(S.invitation.sentAt)})]}):null]})]}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h4",{className:"mb-1 text-xs font-medium text-gray-700",children:"操作历史"}),(0,a.jsxs)("ol",{className:"space-y-1 text-xs text-gray-500",children:[[...null!==(N=S.history)&&void 0!==N?N:[]].reverse().map((e,t)=>{var s;return(0,a.jsxs)("li",{className:"flex flex-wrap gap-x-2",children:[(0,a.jsx)("span",{className:"text-gray-400",children:(0,d.d3)(e.at)}),(0,a.jsx)("span",{className:"text-gray-700",children:null!==(s=f[e.action])&&void 0!==s?s:e.action}),e.fromStage?(0,a.jsxs)("span",{children:[el(e.fromStage)," → ",el(e.toStage)]}):null,e.note?(0,a.jsxs)("span",{className:"text-gray-500",children:["\xb7 ",e.note]}):null,(0,a.jsxs)("span",{className:"text-gray-300",children:["by ",e.by]})]},t)}),(null!==(w=S.history)&&void 0!==w?w:[]).length?null:(0,a.jsx)("li",{className:"text-gray-400",children:"(暂无)"})]})]})]}):null,E?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,a.jsxs)("div",{className:"w-72 rounded-lg bg-white p-4 shadow-xl",children:[(0,a.jsxs)("p",{className:"mb-3 text-sm text-gray-800",children:["把 ",null!==(k=null===(x=S.snapshot)||void 0===x?void 0:x.name)&&void 0!==k?k:"(未命名)"," 移出推荐流程?"]}),(0,a.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,a.jsx)("button",{onClick:()=>U(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,a.jsx)("button",{onClick:async()=>{try{await j("/recommendations/".concat(S.id),"DELETE")}catch(e){H("移出流程失败,请重试"),U(!1);return}U(!1),await e.onChanged()},className:"rounded bg-red-600 px-3 py-1 text-xs text-white hover:bg-red-700",children:"确认移出"})]})]})}):null]})}function er(e){let{onAdd:t,existing:s}=e,[l,r]=(0,n.useState)(""),[i,d]=(0,n.useState)("");return(0,a.jsxs)("div",{className:"flex items-center gap-2 border-t border-dashed border-gray-200 pt-1.5 text-xs",children:[(0,a.jsx)("input",{value:l,onChange:e=>r(e.target.value),placeholder:"新字段名",className:"w-32 rounded border border-gray-300 px-1.5 py-1"}),(0,a.jsx)("input",{value:i,onChange:e=>d(e.target.value),placeholder:"内容",className:"min-w-0 flex-1 rounded border border-gray-300 px-1.5 py-1"}),(0,a.jsx)("button",{onClick:()=>{let e=l.trim();!e||s.includes(e)||(t(e,i),r(""),d(""))},className:"rounded border border-gray-300 px-2 py-1 text-gray-600 hover:bg-gray-50",children:"加一行"})]})}}var w=s(49616),k=s(80584),S=s(29858);let C=[{key:"active",label:"启动中",cls:"bg-emerald-100 text-emerald-700"},{key:"closed",label:"结束",cls:"bg-gray-300 text-gray-700"}],I=[{key:"op",label:"我是 op",cls:"bg-blue-100 text-blue-700"},{key:"rs",label:"我是 rs",cls:"bg-cyan-100 text-cyan-700"}],A=[{key:"recommended",label:"有推荐"},{key:"invite",label:"邀约中"},{key:"replied",label:"已回复"},{key:"to_client",label:"已推客户"},{key:"interview",label:"面试"},{key:"offer",label:"offer"},{key:"onboarding",label:"入职"}],O=["liepin","linkedin","lagou","zhaopin","51job","boss"];function T(e){var t,s;let a;let l=(null!==(t=e.folderPath)&&void 0!==t?t:"").split("/").filter(Boolean).filter(e=>!["job","jd","raw"].includes(e));return(a=e.title)&&!["job","jd","raw"].includes(a)?e.title:null!==(s=l.at(-1))&&void 0!==s?s:"职位 #".concat(e.id)}function E(e){let t=e.requirements;if(!t)return;let s=[t.company,t.location,t.salary].map(e=>"string"==typeof e?e.trim():"").filter(Boolean);return s.length?s.join(" \xb7 "):void 0}function U(){var e,t;let s=(0,r.useRouter)(),l=(0,r.useSearchParams)(),d=l.get("id"),[x,b]=(0,n.useState)({}),[g,y]=(0,n.useState)(new Set),[v,j]=(0,n.useState)(""),[f,N]=(0,n.useState)(""),[w,U]=(0,n.useState)(null),[z,_]=(0,n.useState)(!1),[D,L]=(0,n.useState)(!1),[M,J]=(0,n.useState)(0),{session:B,sync:F}=(0,p.nu)(),R=null!==(e=null==B?void 0:B.hmUserId)&&void 0!==e?e:null,q=null!==(t=null==F?void 0:F.activeTenantId)&&void 0!==t?t:null,W=l.get("st")||"",H=l.get("rel")||"",Z=l.get("cust")||"",Y=l.get("stage")||"",K=l.get("ch")||"",G=(0,n.useMemo)(()=>W.split(",").map(e=>e.trim()).filter(Boolean),[W]),Q=(0,n.useMemo)(()=>Y?Y.split(",").map(e=>e.trim()).filter(Boolean):[],[Y]),V=(0,n.useMemo)(()=>K?K.split(",").map(e=>e.trim()).filter(Boolean):[],[K]),X=!!(W||H||Z||Y||K),$=(0,n.useMemo)(()=>H?H.split(",").map(e=>e.trim()).filter(Boolean):X?[]:["op","rs"],[H,X]),[ee,et]=(0,n.useState)(!1),[es,ea]=(0,n.useState)(!1),el=(0,n.useMemo)(()=>X||es||!ee?$:[],[X,es,ee,$]),[en,er]=(0,n.useState)({active:0,closed:0}),[ei,ed]=(0,n.useState)({}),[ec,eo]=(0,n.useState)({}),[ex,eu]=(0,n.useState)({}),[em,eh]=(0,n.useState)(!1),[ep,eb]=(0,n.useState)(""),[eg,ey]=(0,n.useState)(!1),[ev,ej]=(0,n.useState)(null),ef=(0,m.B)({deleteUrl:"/job-cases",label:"职位",onDeleted:()=>ew.refresh(),currentUserId:R}),eN=(0,n.useMemo)(()=>Array.from(ef.selectedIds),[ef.selectedIds]),ew=(0,h.k)({fetchPage:(0,n.useCallback)(async(e,t)=>{var s;let a=new URLSearchParams;a.set("q",f),a.set("limit",String(t)),a.set("offset",String(e)),G.length&&a.set("status",G.join(",")),el.length&&a.set("relation",el.join(",")),Z&&a.set("customerId",Z),Y&&a.set("stage",Y),K&&a.set("channel",K);let l=await (0,i.aA)("/job-cases?".concat(a.toString()));er(null!==(s=l.statusCounts)&&void 0!==s?s:{active:0,closed:0});let n=l.items.map(e=>e.id);return n.length&&((0,i.aA)("/recommendations/summary?ids=".concat(n.join(","))).then(e=>{ed(t=>({...t,...e}))}).catch(()=>{}),(0,i.aA)("/job-case-postings?ids=".concat(n.join(","))).then(e=>{eo(t=>({...t,...e}))}).catch(()=>{})),{items:l.items,total:l.total}},[f,G,el,Z,Y,K,q]),pageSize:50,deps:[f,G,el,Z,Y,K,q]});(0,n.useEffect)(()=>{X||ee||es||ew.loading||ew.error||0!==ew.total||et(!0)},[X,ee,es,ew.loading,ew.error,ew.total]),(0,n.useEffect)(()=>{et(!1),ea(!1)},[q]),(0,n.useEffect)(()=>{let e=setTimeout(()=>N(v.trim()),300);return()=>clearTimeout(e)},[v]),(0,n.useEffect)(()=>{(0,i.aA)("/customers").then(e=>{let t={},s=new Set;for(let l of e){var a;t[l.id]=l.canonicalName,(null===(a=l.dedupKey)||void 0===a?void 0:a.startsWith("placeholder:"))&&s.add(l.id)}b(t),y(s)}).catch(()=>{b({}),y(new Set)})},[q]),(0,n.useEffect)(()=>{(0,i.aA)("/job-cases/tenant-members").then(e=>{var t;let s={};for(let a of null!==(t=e.items)&&void 0!==t?t:[])s[a.hmUserId]=a;eu(s)}).catch(()=>{eu({})})},[q]);let ek=(0,n.useCallback)(e=>{var t,s;return null==e?void 0:null!==(s=null===(t=ex[e])||void 0===t?void 0:t.label)&&void 0!==s?s:e===R?"我":"用户 #".concat(e)},[ex,R]);(0,n.useEffect)(()=>{ef.prune(ew.items.map(e=>String(e.id)))},[ew.items,ef]),(0,n.useEffect)(()=>{if(!d){U(null),L(!1);return}_(!0),L(!1),(0,i.aA)("/job-cases/".concat(d)).then(e=>{U(e)}).catch(()=>{U(null),L(!0)}).finally(()=>{_(!1)})},[d,q,M]);let eS=(0,n.useCallback)(e=>{let t=new URLSearchParams(l.toString());e.id?t.set("id",e.id):null===e.id&&t.delete("id"),void 0!==e.st&&(e.st.length?t.set("st",e.st.join(",")):t.delete("st")),void 0!==e.rel&&(e.rel.length?t.set("rel",e.rel.join(",")):t.delete("rel")),void 0!==e.cust&&(e.cust?t.set("cust",e.cust):t.delete("cust")),void 0!==e.stage&&(e.stage.length?t.set("stage",e.stage.join(",")):t.delete("stage")),void 0!==e.ch&&(e.ch.length?t.set("ch",e.ch.join(",")):t.delete("ch")),s.replace("/jobs?".concat(t.toString()))},[s,l]),eC=(0,n.useCallback)(e=>{var t;return null==R?null:e.ownerId===R?"op":(null!==(t=e.rsUserIds)&&void 0!==t?t:[]).includes(R)?"rs":null},[R]),eI=(0,n.useMemo)(()=>ew.items.map(e=>{var t,s,l,n,r;return{id:String(e.id),content:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[ef.checkbox(String(e.id)),(0,a.jsx)(u.dy,{title:null!==(t=T(e))&&void 0!==t?t:"(职位 #".concat(e.id,")"),status:e.status,hmhLocal:(null!==(s=e.folderPath)&&void 0!==s?s:"").includes("/local/clients/"),subtitle:E(e),customerName:null!==(n=e.customerName)&&void 0!==n?n:e.customerId?null!==(l=x[e.customerId])&&void 0!==l?l:"客户 #".concat(e.customerId):"未关联客户",opName:null!=e.ownerId?ek(e.ownerId):void 0,rsNames:(null!==(r=e.rsUserIds)&&void 0!==r?r:[]).map(e=>{var t;return null!==(t=ek(e))&&void 0!==t?t:"用户 #".concat(e)}),updatedAt:e.updatedAt,createdAt:e.createdAt,stages:ei[e.id],platforms:ec[e.id],myRole:eC(e)})]})}}),[ew.items,x,ef,ei,ec,eC,ek]),eA=(0,n.useMemo)(()=>{let e=new Set;for(let t of Object.values(ec))for(let s of t)e.add(s);for(let t of O)e.add(t);return Array.from(e)},[ec]),eO=async()=>{let e;let t=Number(ep),s=eN.map(Number).filter(e=>e!==t);if(!t||!s.length)return;ey(!0);try{e=await (0,i.aA)("/job-cases/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetId:t,sourceIds:s})})}catch(e){ey(!1),eh(!1),ej("合并失败(服务无响应),请重试");return}ey(!1),eh(!1);let a=Object.values(e.moved).reduce((e,t)=>e+t,0);ej("已合并 ".concat(e.sourceIds.length," 个职位 → #").concat(e.targetId,",迁移 ").concat(a," 条关联")+(e.matchConflicts?",匹配冲突按高分保留 ".concat(e.matchConflicts," 处"):"")),ef.clear(),ew.refresh(),setTimeout(()=>ej(null),8e3)},eT=d?z?(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):D?(0,a.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,a.jsx)("button",{type:"button",onClick:()=>J(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):w?(0,a.jsx)(P,{detail:w,customers:x,placeholderCusts:g,myUserId:R}):(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该职位"}):(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一个职位查看详情"}),eE=G.length>0||$.length>0||Z||Y||K||ee;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(c.m,{filterBar:(0,a.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,a.jsx)(k.Z,{allowClear:!0,size:"small",value:v,onChange:e=>j(e.target.value),placeholder:"搜索职位/客户/路径…"}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"状态:"}),C.map(e=>{let t=G.includes(e.key);return(0,a.jsxs)("button",{type:"button",title:t?"点击取消该状态筛选":"点击按该状态过滤(可多选)",onClick:()=>eS({st:t?G.filter(t=>t!==e.key):[...G,e.key]}),className:"rounded px-1.5 py-0.5 text-xs transition ".concat(t?"".concat(e.cls," ring-1 ring-current"):"".concat(e.cls," opacity-40 hover:opacity-80")),children:[e.label," ",en[e.key]]},e.key)}),(0,a.jsx)("span",{className:"mx-1 text-gray-300",children:"|"}),(0,a.jsx)("span",{className:"text-gray-400",children:"关系:"}),I.map(e=>{let t=$.includes(e.key);return(0,a.jsx)("button",{type:"button",title:t?"点击取消该关系筛选":"点击按该关系过滤(op∨rs=我操作的)",onClick:()=>eS({rel:t?$.filter(t=>t!==e.key):[...$,e.key]}),className:"rounded px-1.5 py-0.5 text-xs transition ".concat(t?"".concat(e.cls," ring-1 ring-current"):"".concat(e.cls," opacity-40 hover:opacity-80")),children:e.label},e.key)}),(0,a.jsx)("span",{className:"mx-1 text-gray-300",children:"|"}),(0,a.jsx)("button",{type:"button",title:"unlinked"===Z?"点击取消未关联客户筛选":"只显示未关联客户的职位",onClick:()=>eS({cust:"unlinked"===Z?"":"unlinked"}),className:"rounded bg-amber-100 px-1.5 py-0.5 text-xs text-amber-700 transition ".concat("unlinked"===Z?"ring-1 ring-current":"opacity-40 hover:opacity-80"),children:"未关联客户"}),(0,a.jsxs)("span",{className:"ml-auto text-gray-400",children:["共 ",ew.total," 个"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"客户:"}),(0,a.jsx)(S.Z,{size:"small",showSearch:!0,allowClear:!0,placeholder:"全部客户",style:{minWidth:220},value:Z&&"unlinked"!==Z?Number(Z):void 0,onChange:e=>eS({cust:e?String(e):""}),options:Object.entries(x).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return{value:Number(t),label:s}})})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"招聘状态:"}),(0,a.jsx)(S.Z,{mode:"multiple",size:"small",allowClear:!0,maxTagCount:"responsive",placeholder:"全部",style:{minWidth:260},value:Q,onChange:e=>eS({stage:e}),options:A.map(e=>({value:e.key,label:e.label}))})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,a.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"渠道:"}),(0,a.jsx)(S.Z,{mode:"multiple",size:"small",allowClear:!0,maxTagCount:"responsive",placeholder:"全部",style:{minWidth:220},value:V,onChange:e=>eS({ch:e}),options:eA.map(e=>({value:e,label:e}))})]}),(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[eE&&(0,a.jsx)("button",{type:"button",onClick:()=>{et(!1),ea(!1),eS({st:[],rel:[],cust:"",stage:[],ch:[]})},className:"text-xs text-gray-400 hover:text-gray-600",children:"清除筛选"}),!ee||es||X?null:(0,a.jsx)("button",{type:"button",title:"无我操作的职位,已显示全部;点击恢复只看自己参与的",onClick:()=>ea(!0),className:"rounded bg-indigo-50 px-1.5 py-0.5 text-xs text-indigo-600 hover:bg-indigo-100",children:"已显示全部(无我操作的)→ 只看我的"})]}),ef.bar(eI),eN.length>=2?(0,a.jsxs)("button",{type:"button",onClick:()=>{eb(eN[0]),eh(!0)},className:"mt-1 rounded bg-indigo-600 px-2.5 py-1 text-xs text-white hover:bg-indigo-700",children:["合并所选职位(",eN.length,")"]}):null,ev?(0,a.jsx)("div",{className:"mt-1 text-xs text-emerald-600",children:ev}):null]}),listPanel:ew.error?(0,a.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,a.jsx)("span",{className:"text-red-500",children:"加载失败"}),(0,a.jsx)("button",{type:"button",onClick:()=>ew.refresh(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,a.jsx)(o.L,{items:eI,selectedId:null!=d?d:void 0,onSelect:e=>eS({id:e}),loading:ew.loading,emptyText:"暂无职位",onLoadMore:ew.loadMore,loadingMore:ew.loadingMore,exhausted:ew.exhausted}),detailPanel:eT}),ef.modal(),em?(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,a.jsxs)("div",{className:"w-96 rounded-lg bg-white p-4 shadow-xl",children:[(0,a.jsxs)("h3",{className:"mb-2 text-sm font-semibold text-gray-900",children:["合并职位(保留目标,其余 ",eN.length-1," 个结束)"]}),(0,a.jsx)("p",{className:"mb-3 text-xs text-gray-500",children:"源职位的推荐流水/发布/简历/画像/评估/沟通记录全部迁到目标职位;同人才匹配冲突保留高分。"}),(0,a.jsx)("div",{className:"mb-3 max-h-48 space-y-1 overflow-auto",children:eN.map(e=>{var t;let s=ew.items.find(t=>String(t.id)===e);return(0,a.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-700",children:[(0,a.jsx)("input",{type:"radio",name:"merge-target",checked:ep===e,onChange:()=>eb(e)}),(0,a.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:["#",e," ",s?T(s):"",s?(0,a.jsxs)("span",{className:"text-xs text-gray-400",children:[" ",null!==(t=E(s))&&void 0!==t?t:""]}):null]})]},e)})}),(0,a.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>eh(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,a.jsx)("button",{type:"button",onClick:()=>void eO(),disabled:!ep||eg,className:"rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700 disabled:opacity-40",children:eg?"合并中…":"确认合并"})]})]})}):null]})}function P(e){var t,s,l;let{detail:r,customers:i,placeholderCusts:c,myUserId:o}=e,[x,u]=(0,n.useState)("info"),m=null!=o&&(r.ownerId===o||(null!==(t=r.rsUserIds)&&void 0!==t?t:[]).includes(o));return(0,a.jsxs)("div",{className:"h-full overflow-y-auto p-4",children:[(0,a.jsx)("h2",{className:"mb-1 text-lg font-semibold text-gray-900",children:null!==(s=r.title)&&void 0!==s?s:"职位 #".concat(r.id)}),(0,a.jsxs)("div",{className:"mb-3 text-xs text-gray-400",children:["externalId: ",r.externalId," \xb7 更新于 ",(0,d.d3)(r.updatedAt)]}),(0,a.jsx)("div",{className:"mb-4 flex gap-1 border-b border-gray-200",children:[{key:"info",label:"职位信息"},{key:"members",label:"成员"},{key:"criteria",label:"找人条件"},{key:"history",label:"历史"},{key:"pipeline",label:"推荐流程"},{key:"publish",label:"发布管理"}].map(e=>(0,a.jsx)("button",{onClick:()=>u(e.key),className:"rounded-t px-3 py-1.5 text-sm ".concat(x===e.key?"bg-gray-100 font-medium text-gray-900":"text-gray-500 hover:text-gray-700"),children:e.label},e.key))}),"info"===x?(0,a.jsx)(z,{detail:r,customers:i,placeholderCusts:c,myUserId:o}):"members"===x?(0,a.jsx)(_,{detail:r,myUserId:o},"".concat(r.id,"-").concat(null!=o?o:"anon")):"criteria"===x?(0,a.jsx)(D,{detail:r,myUserId:o},"".concat(r.id,"-").concat(null!=o?o:"anon")):"history"===x?(0,a.jsx)(J,{jobCaseId:r.id},r.id):"pipeline"===x?(0,a.jsx)(N,{jobCaseId:r.id,canOperate:m},r.id):(0,a.jsx)(w.I,{jobCaseId:r.id,caseTitle:null!==(l=r.title)&&void 0!==l?l:"职位 #".concat(r.id),canOperate:m},r.id)]})}function z(e){var t,s,l;let{detail:d,customers:c,placeholderCusts:o,myUserId:u}=e,m=(0,r.useRouter)(),[h,p]=(0,n.useState)(!1),[b,g]=(0,n.useState)(null),[y,v]=(0,n.useState)(!1),[j,f]=(0,n.useState)(null!==(t=d.title)&&void 0!==t?t:""),[N,w]=(0,n.useState)(d.customerId?String(d.customerId):""),[k,S]=(0,n.useState)(!1),C=null!=u&&d.ownerId===u,I=null==d.customerId||o.has(d.customerId),A=async(e,t)=>{let s;p(!0),g(null);try{s=await (0,i.aA)("/job-cases/".concat(d.id),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch(e){return p(!1),g(t),null}return p(!1),m.refresh(),location.reload(),s},O=async()=>{S(!0),g(null);try{await (0,i.aA)("/job-cases/".concat(d.id,"/op/claim"),{method:"POST"})}catch(e){S(!1),g("申请 op 失败:该职位可能已有 op,或服务无响应");return}S(!1),location.reload()};return(0,a.jsxs)("div",{children:[I&&C?(0,a.jsxs)("div",{className:"mb-4 rounded border border-amber-300 bg-amber-50 p-3",children:[(0,a.jsx)("div",{className:"mb-2 text-sm font-medium text-amber-800",children:"该职位尚未关联客户,请先选择客户公司(客户不能为空)"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("select",{value:N,onChange:e=>w(e.target.value),className:"rounded border border-amber-300 px-2 py-1.5 text-sm",children:[(0,a.jsx)("option",{value:"",children:"选择客户…"}),Object.entries(c).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return(0,a.jsx)("option",{value:t,children:s},t)})]}),(0,a.jsx)("button",{type:"button",disabled:!N||h,onClick:()=>void A({customerId:Number(N)},"关联客户失败,请重试"),className:"rounded bg-amber-600 px-3 py-1.5 text-xs text-white hover:bg-amber-700 disabled:opacity-40",children:h?"保存中…":"确认关联"})]})]}):null,I&&!C?(0,a.jsx)("div",{className:"mb-4 rounded border border-gray-200 bg-gray-50 p-3 text-sm text-gray-500",children:"该职位尚未关联客户,请联系 op 选择客户公司"}):null,(0,a.jsxs)("div",{className:"mb-4 rounded border border-gray-200 bg-gray-50 p-2",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,a.jsx)("span",{className:"text-gray-500",children:"状态:"}),(0,a.jsx)("span",{className:"rounded px-1.5 py-0.5 text-xs ".concat("active"===d.status?"bg-emerald-100 text-emerald-700":"bg-gray-300 text-gray-700"),children:"active"===d.status?"启动中":"结束"}),null==d.ownerId?(0,a.jsx)("button",{type:"button",disabled:k,onClick:()=>void O(),className:"rounded bg-blue-600 px-2.5 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:k?"申请中…":"申请做 op(无人管理,直接生效)"}):null,C&&!I?"active"===d.status?(0,a.jsx)("button",{type:"button",disabled:h,onClick:()=>void A({status:"closed"},"状态更新失败(仅 op 可操作)"),className:"rounded border border-gray-300 px-2.5 py-1 text-xs text-gray-600 hover:bg-gray-100",children:"结束职位"}):(0,a.jsx)("button",{type:"button",disabled:h,onClick:()=>void A({status:"active"},"状态更新失败(仅 op 可操作)"),className:"rounded bg-emerald-600 px-2.5 py-1 text-xs text-white hover:bg-emerald-700",children:"重新启动"}):null,C||null==d.ownerId?null:(0,a.jsx)("span",{className:"text-xs text-gray-400",children:"仅 op 可切换状态"})]}),b?(0,a.jsx)("div",{className:"mt-1 text-xs text-red-500",children:b}):null]}),d.customerId?(0,a.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,a.jsxs)("a",{href:"/companies?id=".concat(d.customerId),className:"inline-flex items-center gap-2 rounded border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-800 hover:border-amber-400",children:[(0,a.jsx)("span",{className:"text-gray-500",children:"客户公司:"}),(0,a.jsx)("span",{className:"font-medium",children:null!==(s=c[d.customerId])&&void 0!==s?s:"#".concat(d.customerId)}),(0,a.jsx)("span",{className:"text-xs text-amber-500",children:"查看公司详情 →"})]}),C?(0,a.jsx)("select",{value:String(d.customerId),onChange:e=>{e.target.value&&Number(e.target.value)!==d.customerId&&A({customerId:Number(e.target.value)},"更换客户失败:同客户下可能已有同名职位")},className:"rounded border border-gray-300 px-2 py-1.5 text-xs text-gray-600",children:Object.entries(c).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return(0,a.jsx)("option",{value:t,children:s},t)})}):null]}):null,(0,a.jsxs)("div",{className:"mb-4",children:[(0,a.jsxs)("div",{className:"mb-1 flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:"职位名"}),C&&!y?(0,a.jsx)("button",{type:"button",onClick:()=>{var e;f(null!==(e=d.title)&&void 0!==e?e:""),v(!0)},className:"text-xs text-blue-600 hover:underline",children:"修改"}):null]}),y?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("input",{type:"text",value:j,onChange:e=>f(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm"}),(0,a.jsx)("button",{type:"button",disabled:!j.trim()||h,onClick:()=>{A({title:j.trim()},"改名失败:同客户下可能已有同名职位").then(e=>{e&&v(!1)})},className:"rounded bg-blue-600 px-2.5 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:"保存"}),(0,a.jsx)("button",{type:"button",onClick:()=>v(!1),className:"rounded border border-gray-300 px-2.5 py-1 text-xs text-gray-600",children:"取消"})]}):(0,a.jsx)("div",{className:"text-sm text-gray-700",children:null!==(l=d.title)&&void 0!==l?l:"—"})]}),d.folderPath?(0,a.jsxs)("div",{className:"mb-4 break-all text-xs text-gray-500",children:["文件夹:",d.folderPath]}):null,d.requirements&&Object.keys(d.requirements).length>0?(0,a.jsxs)("section",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"职位要求(requirements)"}),(0,a.jsx)(x.Y,{data:d.requirements})]}):null,d.rawFiles&&Object.keys(d.rawFiles).length>0?(0,a.jsxs)("section",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"原始文件(rawFiles)"}),(0,a.jsx)(x.Y,{data:d.rawFiles})]}):null]})}function _(e){let{detail:t,myUserId:s}=e,[l,r]=(0,n.useState)({op:null,rs:[]}),[d,c]=(0,n.useState)([]),[o,x]=(0,n.useState)(null),[u,m]=(0,n.useState)(!1),[h,p]=(0,n.useState)(""),[b,g]=(0,n.useState)(""),y=(0,n.useCallback)(()=>{(async()=>{try{let e=await (0,i.aA)("/job-cases/".concat(t.id,"/members"));r(e)}catch(e){}})()},[t.id]);(0,n.useEffect)(()=>{y(),(async()=>{try{let e=await (0,i.aA)("/job-cases/tenant-members");c(e.items)}catch(e){}})()},[y]);let v=e=>{var t,a;return null!==(a=null===(t=d.find(t=>t.hmUserId===e))||void 0===t?void 0:t.label)&&void 0!==a?a:e===s?"我":"用户 #".concat(e)},j=null!=s&&l.op===s,f=async function(e,s){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"操作失败(仅 op 可操作)";m(!0),x(null);try{await (0,i.aA)("/job-cases/".concat(t.id).concat(e),{method:e.startsWith("/rs/")?"DELETE":"POST",headers:{"Content-Type":"application/json"},body:null!=s?JSON.stringify(s):void 0})}catch(e){m(!1),x(a);return}m(!1),y()},N=d.filter(e=>e.hmUserId!==l.op&&!l.rs.includes(e.hmUserId));return(0,a.jsxs)("div",{children:[(0,a.jsxs)("section",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"op(职位管理者,唯一)"}),null!=l.op?(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,a.jsxs)("span",{className:"rounded bg-blue-100 px-2 py-0.5 text-blue-700",children:[v(l.op),l.op===s?"(我)":""]}),j?(0,a.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:[(0,a.jsxs)("select",{value:h,onChange:e=>p(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5",children:[(0,a.jsx)("option",{value:"",children:"转移给…"}),d.filter(e=>e.hmUserId!==l.op).map(e=>{var t;return(0,a.jsx)("option",{value:e.hmUserId,children:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(e.hmUserId)},e.hmUserId)})]}),(0,a.jsx)("button",{type:"button",disabled:!h||u,onClick:()=>void f("/op/transfer",{userId:Number(h)},"转移失败,请重试").then(()=>p("")),className:"rounded border border-blue-300 px-2 py-0.5 text-blue-600 hover:bg-blue-50 disabled:opacity-40",children:"确认转移"}),(0,a.jsx)("span",{className:"text-gray-400",children:"直接生效,无需对方确认"})]}):null]}):(0,a.jsx)("div",{className:"text-sm text-gray-500",children:"当前无 op——到「职位信息」tab 点「申请做 op」即可直接接管(无需审批)"})]}),(0,a.jsxs)("section",{className:"mb-4",children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"rs(协作成员,可多个)"}),l.rs.length?(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:l.rs.map(e=>(0,a.jsxs)("span",{className:"flex items-center gap-1 rounded bg-cyan-100 px-2 py-0.5 text-cyan-700",children:[v(e),e===s?"(我)":"",j?(0,a.jsx)("button",{type:"button",disabled:u,onClick:()=>void(0,i.aA)("/job-cases/".concat(t.id,"/rs/").concat(e),{method:"DELETE"}).then(()=>y()).catch(()=>x("移除失败(仅 op 可操作)")),className:"text-cyan-500 hover:text-red-500",title:"移除该 rs",children:"\xd7"}):null]},e))}):(0,a.jsx)("div",{className:"text-sm text-gray-400",children:"暂无 rs"}),j?(0,a.jsxs)("div",{className:"mt-2 flex items-center gap-1 text-xs",children:[(0,a.jsxs)("select",{value:b,onChange:e=>g(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5",children:[(0,a.jsx)("option",{value:"",children:"添加 rs(限同租户成员)…"}),N.map(e=>{var t;return(0,a.jsx)("option",{value:e.hmUserId,children:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(e.hmUserId)},e.hmUserId)})]}),(0,a.jsx)("button",{type:"button",disabled:!b||u,onClick:()=>void f("/rs",{userId:Number(b)},"添加失败:目标须为同租户在租成员").then(()=>g("")),className:"rounded bg-cyan-600 px-2 py-0.5 text-white hover:bg-cyan-700 disabled:opacity-40",children:"添加"})]}):null]}),o?(0,a.jsx)("div",{className:"text-xs text-red-500",children:o}):null]})}function D(e){var t;let{detail:s,myUserId:l}=e,[r,d]=(0,n.useState)([]),[c,o]=(0,n.useState)(null),[x,u]=(0,n.useState)(null),[m,h]=(0,n.useState)(!1),[p,b]=(0,n.useState)(!1),[g,y]=(0,n.useState)([]),v=(0,n.useCallback)(()=>{(async()=>{try{let e=await (0,i.aA)("/job-cases/".concat(s.id,"/criteria"));d(e.items)}catch(e){}})()},[s.id]);(0,n.useEffect)(()=>{v()},[v]);let j=r.find(e=>e.userId===(null!=l?l:0));r.find(e=>{var t;return e.userId===(null!==(t=s.ownerId)&&void 0!==t?t:-1)});let f=null!=l&&(s.ownerId===l||(null!==(t=s.rsUserIds)&&void 0!==t?t:[]).includes(l)),N=()=>{var e;y((null!==(e=null==j?void 0:j.criteria)&&void 0!==e?e:[]).map(e=>{var t;return{dimension:e.dimension,value:"string"==typeof e.value?e.value:JSON.stringify(e.value),weight:String(null!==(t=e.weight)&&void 0!==t?t:1)}})),b(!0),o(null)},w=async()=>{let e;let t=g.filter(e=>e.dimension.trim()&&e.value.trim()).map(e=>{let t=e.value.trim();try{t=JSON.parse(e.value)}catch(e){}return{dimension:e.dimension.trim(),value:t,weight:Number(e.weight)||1}});if(!t.length){o("至少保留一条条件(dimension + value)");return}h(!0),o(null);try{e=await (0,i.aA)("/job-cases/".concat(s.id,"/criteria"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:t})})}catch(e){h(!1),o("保存失败,请重试");return}h(!1),d(e.items),b(!1)},k=async e=>{let t;h(!0),o(null),u(null);try{t=await (0,i.aA)("/job-cases/".concat(s.id,"/criteria/merge"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fromUserId:e,mode:"apply"})})}catch(e){h(!1),o("叠加失败,请重试");return}h(!1),u("已叠加 ".concat(t.applied," 条新条件到我的条件")),v()},S=e=>(0,a.jsx)("ul",{className:"space-y-1",children:e.map((e,t)=>(0,a.jsxs)("li",{className:"text-xs text-gray-600",children:[(0,a.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-gray-500",children:e.dimension})," ","string"==typeof e.value?e.value:JSON.stringify(e.value),1!==e.weight?(0,a.jsxs)("span",{className:"text-gray-400",children:["(权重 ",e.weight,")"]}):null]},t))});return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("p",{className:"text-xs text-gray-400",children:"招人条件按人维护:op 一份(=职位共享规则),每个 rs 一份。agent 找人默认按「op 条件 + 自己那份」;可叠加他人条件后选择是否更新自己那份。"}),null==l?(0,a.jsx)("div",{className:"rounded border border-gray-200 bg-gray-50 p-2 text-xs text-gray-500",children:"未登录同步用户,展示全部条件(本机工具视角)"}):null,null==l||f?null:(0,a.jsx)("div",{className:"rounded border border-amber-100 bg-amber-50 p-2 text-xs text-amber-600",children:"仅该职位的 op/rs 可维护找人条件,你可查看"}),0!==r.length||p?r.map(e=>{let t=null!=l&&e.userId===l,n=null!=s.ownerId&&e.userId===s.ownerId,r=t?"我的条件":n?"op 的条件(职位共享,#".concat(e.userId,")"):"用户 #".concat(e.userId," 的条件");return(0,a.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:r}),t&&null!=l&&!p&&f?(0,a.jsx)("button",{type:"button",onClick:N,className:"text-xs text-blue-600 hover:underline",children:"编辑我的条件"}):null,t||null==l||p||!f?null:(0,a.jsx)("button",{type:"button",disabled:m,onClick:()=>void k(e.userId),className:"text-xs text-indigo-600 hover:underline disabled:opacity-40",children:"叠加到我的条件"})]}),t&&p?(0,a.jsx)("div",{className:"text-xs text-gray-400",children:"(正在下方编辑我的条件)"}):e.criteria.length?S(e.criteria):(0,a.jsx)("div",{className:"text-xs text-gray-400",children:"(空)"})]},e.userId)}):(0,a.jsx)("div",{className:"text-sm text-gray-400",children:"暂无找人条件"}),null!=l&&p&&f?(0,a.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"我的条件(编辑中)"}),(0,a.jsxs)("div",{className:"space-y-2",children:[g.map((e,t)=>(0,a.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",children:[(0,a.jsx)("input",{type:"text",value:e.dimension,placeholder:"维度,如 city/skill/school",onChange:e=>y(g.map((s,a)=>a===t?{...s,dimension:e.target.value}:s)),className:"w-36 rounded border border-gray-300 px-1.5 py-0.5"}),(0,a.jsx)("input",{type:"text",value:e.value,placeholder:"值(字符串或 JSON)",onChange:e=>y(g.map((s,a)=>a===t?{...s,value:e.target.value}:s)),className:"w-56 rounded border border-gray-300 px-1.5 py-0.5"}),(0,a.jsx)("input",{type:"text",value:e.weight,placeholder:"权重",onChange:e=>y(g.map((s,a)=>a===t?{...s,weight:e.target.value}:s)),className:"w-14 rounded border border-gray-300 px-1.5 py-0.5"}),(0,a.jsx)("button",{type:"button",onClick:()=>y(g.filter((e,s)=>s!==t)),className:"text-gray-400 hover:text-red-500",children:"\xd7"})]},t)),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("button",{type:"button",onClick:()=>y([...g,{dimension:"",value:"",weight:"1"}]),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600",children:"+ 加一条"}),(0,a.jsx)("button",{type:"button",disabled:m,onClick:()=>void w(),className:"rounded bg-blue-600 px-2.5 py-0.5 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:m?"保存中…":"保存(整体替换我的条件)"}),(0,a.jsx)("button",{type:"button",onClick:()=>b(!1),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600",children:"取消"})]})]})]}):null,null==l||j||p||!f?null:(0,a.jsx)("button",{type:"button",onClick:N,className:"rounded bg-blue-600 px-2.5 py-1 text-xs text-white hover:bg-blue-700",children:"添加我的条件"}),x?(0,a.jsx)("div",{className:"text-xs text-emerald-600",children:x}):null,c?(0,a.jsx)("div",{className:"text-xs text-red-500",children:c}):null,(0,a.jsx)(L,{externalId:s.externalId})]})}function L(e){let{externalId:t}=e,[s,l]=(0,n.useState)(null),[r,c]=(0,n.useState)(!1),[o,x]=(0,n.useState)("");(0,n.useEffect)(()=>{let e=!0;return(async()=>{try{var s;let a=await (0,i.aA)("/searchlog?jobCaseExternalId=".concat(encodeURIComponent(t),"&limit=100"));e&&l(null!==(s=a.items)&&void 0!==s?s:[])}catch(t){e&&(l([]),c(!0))}})(),()=>{e=!1}},[t]);let u=Array.from(new Set((null!=s?s:[]).map(e=>e.actorEmail).filter(Boolean))),m=(null!=s?s:[]).filter(e=>!o||e.actorEmail===o),h=e=>{let t="string"==typeof e?e:JSON.stringify(e);return t&&t.length>160?"".concat(t.slice(0,160),"…"):null!=t?t:""};return(0,a.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:"agent 找人历史"}),u.length>1?(0,a.jsxs)("label",{className:"flex items-center gap-1 text-xs text-gray-500",children:["按用户:",(0,a.jsxs)("select",{value:o,onChange:e=>x(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5 text-xs",children:[(0,a.jsx)("option",{value:"",children:"全部"}),u.map(e=>(0,a.jsx)("option",{value:e,children:e},e))]})]}):null]}),null===s?(0,a.jsx)("div",{className:"text-xs text-gray-400",children:"加载中…"}):0===m.length?(0,a.jsx)("div",{className:"text-xs text-gray-400",children:r?"历史服务不可用(需 hm 0.1.23+ 且已登录),不影响找人条件":"暂无搜索历史——agent 每轮搜索后会自动登记"}):(0,a.jsx)("ul",{className:"space-y-2",children:m.map(e=>{var t;return(0,a.jsxs)("li",{className:"rounded border border-gray-100 bg-gray-50 p-2 text-xs text-gray-600",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between text-gray-500",children:[(0,a.jsxs)("span",{children:[(0,a.jsx)("span",{className:"rounded bg-blue-50 px-1.5 py-0.5 text-blue-600",children:e.platform})," ",null!==(t=e.actorEmail)&&void 0!==t?t:"#".concat(e.actorHmUserId),e.model&&"unknown"!==e.model?(0,a.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",e.model]}):null]}),(0,a.jsx)("span",{children:(0,d.d3)(e.createdAt)})]}),(0,a.jsxs)("div",{className:"mt-1",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"条件:"})," ",h(e.conditions)]}),(0,a.jsxs)("div",{className:"mt-0.5",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"结果:"})," ",h(e.stats)]}),e.note?(0,a.jsxs)("div",{className:"mt-0.5",children:[(0,a.jsx)("span",{className:"text-gray-400",children:"备注:"})," ",e.note]}):null]},e.id)})})]})}let M={created:"创建职位",status_change:"状态切换",op_claim:"申请成为 op",op_transfer:"转移 op",op_cleared:"退租清空 op",rs_add:"添加 rs",rs_remove:"移除 rs",customer_change:"客户变更",info_update:"信息更新"};function J(e){let{jobCaseId:t}=e,[s,l]=(0,n.useState)([]);return((0,n.useEffect)(()=>{let e=!0;return(async()=>{try{let s=await (0,i.aA)("/job-cases/".concat(t,"/history?limit=100"));e&&l(s.items)}catch(e){}})(),()=>{e=!1}},[t]),s.length)?(0,a.jsx)("ol",{className:"relative ml-2 space-y-3 border-l border-gray-200 pl-4",children:s.map(e=>{var t;return(0,a.jsxs)("li",{className:"relative",children:[(0,a.jsx)("span",{className:"absolute -left-[21px] top-1 h-2.5 w-2.5 rounded-full bg-blue-300"}),(0,a.jsx)("div",{className:"text-xs text-gray-400",children:(0,d.d3)(e.createdAt)}),(0,a.jsxs)("div",{className:"text-sm text-gray-800",children:[null!==(t=M[e.action])&&void 0!==t?t:e.action,null!=e.actorId?(0,a.jsxs)("span",{className:"text-gray-400",children:[" \xb7 操作人 #",e.actorId]}):null]}),e.detail&&Object.keys(e.detail).length?(0,a.jsx)("div",{className:"mt-0.5 text-xs text-gray-500",children:JSON.stringify(e.detail)}):null]},e.id)})}):(0,a.jsx)("div",{className:"text-sm text-gray-400",children:"暂无历史记录"})}function B(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,a.jsx)(U,{})})}function F(){var e;let[t,s]=(0,n.useState)(""),[l,r]=(0,n.useState)(""),[d,x]=(0,n.useState)(""),[u,m]=(0,n.useState)([]),[h,b]=(0,n.useState)(0),[g,y]=(0,n.useState)(!1),[v,j]=(0,n.useState)(null),[f,N]=(0,n.useState)(null),{sync:k}=(0,p.nu)(),S=null!==(e=null==k?void 0:k.activeTenantId)&&void 0!==e?e:null,C=(0,n.useCallback)(async()=>{y(!0);let e=new URLSearchParams;l&&e.set("q",l),d&&e.set("touched",d),e.set("limit","200");try{let t=await (0,i.aA)("/market/jobs?".concat(e.toString()));j(null),m(t.items),b(t.total)}catch(e){j("加载失败")}finally{y(!1)}},[l,d,S]);(0,n.useEffect)(()=>{let e=setTimeout(()=>r(t.trim()),300);return()=>clearTimeout(e)},[t]),(0,n.useEffect)(()=>{C()},[C]);let I=(0,n.useMemo)(()=>{var e;return null!==(e=u.find(e=>e.key===f))&&void 0!==e?e:null},[u,f]),A=(0,n.useMemo)(()=>u.map(e=>({id:e.key,content:(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:"truncate font-medium text-gray-900",children:e.title}),e.touched?(0,a.jsx)("span",{className:"rounded bg-emerald-100 px-1.5 py-0.5 text-[10px] text-emerald-700",children:"已操作"}):null]}),e.company?(0,a.jsx)("div",{className:"truncate text-xs text-gray-500",children:e.company}):null,(0,a.jsxs)("div",{className:"mt-0.5 flex items-center gap-0.5",children:[e.sources.map(e=>(0,a.jsx)(w.v,{platform:e},e)),(0,a.jsxs)("span",{className:"ml-1 text-[10px] text-gray-400",children:[e.postings.length," 个发布"]})]})]})})),[u]);return(0,a.jsx)(c.m,{filterBar:(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-gray-200 bg-white p-3",children:[(0,a.jsx)("input",{type:"text",value:t,onChange:e=>s(e.target.value),placeholder:"搜索职位/公司…",className:"w-56 rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),["","1","0"].map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>x(e),className:"rounded px-2 py-1 text-xs ".concat(d===e?"bg-[color:var(--brand-soft)] font-medium text-[color:var(--brand-strong)]":"text-gray-500 hover:bg-gray-100"),children:""===e?"全部":"1"===e?"已操作过":"未操作"},e)),(0,a.jsxs)("span",{className:"ml-auto text-xs text-gray-400",children:["共 ",h," 组(BD 市场视角)"]})]}),listPanel:v?(0,a.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,a.jsx)("span",{className:"text-red-500",children:v}),(0,a.jsx)("button",{type:"button",onClick:()=>void C(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,a.jsx)(o.L,{items:A,selectedId:null!=f?f:void 0,onSelect:N,loading:g,emptyText:"暂无市场职位(解析库暂无数据)"}),detailPanel:I?(0,a.jsxs)("div",{className:"h-full overflow-y-auto p-4",children:[(0,a.jsx)("h2",{className:"mb-1 text-lg font-semibold text-gray-900",children:I.title}),(0,a.jsxs)("div",{className:"mb-4 text-xs text-gray-400",children:[I.company?"".concat(I.company," \xb7 "):"",I.touched?"本租户已操作过":"本租户未操作"," \xb7 ",I.postings.length," 个平台发布"]}),I.jobCaseIds.length>0?(0,a.jsxs)("div",{className:"mb-4 rounded border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm",children:[(0,a.jsx)("span",{className:"text-emerald-800",children:"我们交付中的案件:"}),I.jobCaseIds.map(e=>(0,a.jsxs)("a",{href:"/jobs?id=".concat(e),className:"ml-2 font-medium text-emerald-700 underline",children:["案件 #",e]},e))]}):null,(0,a.jsxs)("section",{children:[(0,a.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"平台发布"}),(0,a.jsx)("div",{className:"space-y-1",children:I.postings.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded border border-gray-100 px-2 py-1.5 text-sm",children:[(0,a.jsx)(w.v,{platform:e.source}),(0,a.jsx)("a",{href:e.sourceUrl,target:"_blank",rel:"noreferrer",className:"min-w-0 flex-1 truncate text-blue-600 hover:underline",children:e.sourceUrl}),(0,a.jsx)("span",{className:"text-xs text-gray-400",children:e.updatedAt.slice(0,10)})]},e.id))})]})]}):(0,a.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"选择左侧职位查看各平台发布"})})}var R=s(88801);function q(){let e=(0,R.mJ)();return"1"===new URLSearchParams(window.location.search).get("entities")?(0,a.jsx)("div",{className:"flex h-full flex-col",children:(0,a.jsx)("div",{className:"min-h-0 flex-1",children:(0,a.jsx)(l.EntityListPage,{type:"job",label:"职位",batchDelete:!0})})}):(0,a.jsxs)("div",{className:"flex h-full flex-col",children:["bd"===e?(0,a.jsx)("div",{className:"flex border-b border-gray-200 bg-white px-3 py-1.5",children:(0,a.jsx)("span",{className:"ml-auto rounded bg-[color:var(--brand-soft)] px-2 py-0.5 text-xs text-[color:var(--brand-strong)]",children:"\uD83E\uDDED BD 市场视角"})}):null,(0,a.jsx)("div",{className:"min-h-0 flex-1",children:"bd"===e?(0,a.jsx)(F,{}):(0,a.jsx)(B,{})})]})}}},function(e){e.O(0,[105,555,253,852,686,400,935,744],function(){return e(e.s=74843)}),_N_E=e.O()}]);
@@ -1,3 +0,0 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
2
- ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
3
- */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-left-\[21px\]{left:-21px}.bottom-full{bottom:100%}.left-2{left:.5rem}.right-1{right:.25rem}.right-2{right:.5rem}.top-1{top:.25rem}.top-1\/2{top:50%}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-\[7px\]{margin-left:7px}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-36{max-height:9rem}.max-h-48{max-height:12rem}.max-h-56{max-height:14rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[90vh\]{max-height:90vh}.max-h-\[92vh\]{max-height:92vh}.min-h-0{min-height:0}.min-h-16{min-height:4rem}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-14{width:3.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-56{width:14rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[520px\]{width:520px}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[120px\]{min-width:120px}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[360px\]{max-width:360px}.max-w-\[92vw\]{max-width:92vw}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-\[2\]{flex:2}.flex-\[3\]{flex:3}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr\2c 2fr\2c auto\]{grid-template-columns:1fr 2fr auto}.grid-cols-\[90px\2c 1fr\2c auto\]{grid-template-columns:90px 1fr auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.divide-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(249 250 251/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity,1))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity,1))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity,1))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity,1))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.bg-\[color\:var\(--brand-soft\)\]{background-color:var(--brand-soft)}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.bg-black\/30{background-color:rgba(0,0,0,.3)}.bg-black\/40{background-color:rgba(0,0,0,.4)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-50\/50{background-color:rgba(239,246,255,.5)}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity,1))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity,1))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity,1))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity,1))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity,1))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.tracking-widest{letter-spacing:.1em}.text-\[color\:var\(--brand-strong\)\]{color:var(--brand-strong)}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity,1))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-red-300{text-decoration-color:#fca5a5}.accent-amber-600{accent-color:#d97706}.accent-blue-600{accent-color:#2563eb}.opacity-40{opacity:.4}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-current{--tw-ring-color:currentColor}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root,:root[data-view=delivery]{--brand:#0e7490;--brand-strong:#155e75;--brand-soft:#ecfeff;--accent:#2563eb}:root[data-view=bd]{--brand:#b45309;--brand-strong:#92400e;--brand-soft:#fffbeb;--accent:#7c3aed}.hm-active{background:var(--brand-soft);color:var(--brand-strong)}.hm-spinner{display:inline-block;width:28px;height:28px;border:3px solid var(--brand-soft);border-top-color:var(--brand);border-radius:9999px;animation:hm-spin .8s linear infinite}.hm-spinner-sm{width:16px;height:16px;border-width:2px}@keyframes hm-spin{to{transform:rotate(1turn)}}.hm-top-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;overflow:hidden;pointer-events:none}.hm-top-bar:before{content:"";position:absolute;top:0;bottom:0;width:40%;background:var(--accent);animation:hm-top-bar-slide 1.1s ease-in-out infinite}@keyframes hm-top-bar-slide{0%{left:-40%}to{left:100%}}.last\:border-0:last-child{border-width:0}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity,1))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity,1))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:rgb(3 105 161/var(--tw-bg-opacity,1))}.hover\:bg-violet-700:hover{--tw-bg-opacity:1;background-color:rgb(109 40 217/var(--tw-bg-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.active\:bg-blue-200:active{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.disabled\:border-gray-300:disabled{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.disabled\:text-gray-300:disabled{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.disabled\:text-gray-400:disabled{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:p-4{padding:1rem}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[250px\2c 1fr\]{grid-template-columns:250px 1fr}.md\:border-b-0{border-bottom-width:0}.md\:border-r{border-right-width:1px}}@media (min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}