hunter-mate 0.1.26 → 0.1.28

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 (91) hide show
  1. package/dist/assets/extension/background/{service-worker.20261019161523.js → service-worker.20261023013927.js} +4 -0
  2. package/dist/assets/extension/background/service-worker.js +4 -0
  3. package/dist/assets/extension/build-info.json +1 -1
  4. package/dist/assets/extension/content/index.js +284 -64
  5. package/dist/assets/extension/manifest.json +3 -3
  6. package/dist/assets/extension/sidepanel/index.html +1 -1
  7. package/dist/assets/extension/sidepanel/index.js +14 -14
  8. package/dist/assets/server/main.mjs +1464 -1207
  9. package/dist/index.js +62 -67
  10. package/dist/watchdog.js +49 -4
  11. package/dist/web/dist/404.html +1 -1
  12. package/dist/web/dist/_next/static/chunks/187-48dc1acca97c62ba.js +1 -0
  13. package/dist/web/dist/_next/static/chunks/{253-9278ce6c4d446329.js → 327-6b8f348b06e7977f.js} +1 -1
  14. package/dist/web/dist/_next/static/chunks/353-845111f2789c5a03.js +12 -0
  15. package/dist/web/dist/_next/static/chunks/587-e449469e56a2bfff.js +1 -0
  16. package/dist/web/dist/_next/static/chunks/{589-cc56950ae4117cdd.js → 589-5bb84ab8060e960b.js} +1 -1
  17. package/dist/web/dist/_next/static/chunks/603-765c4fa1ed757ca5.js +32 -0
  18. package/dist/web/dist/_next/static/chunks/659-3db6e9c90ee9d238.js +1 -0
  19. package/dist/web/dist/_next/static/chunks/{686-05b99d3674f45bf7.js → 686-5f4ee3649cce07f1.js} +1 -1
  20. package/dist/web/dist/_next/static/chunks/882-1bcdfd2499403efd.js +1 -0
  21. package/dist/web/dist/_next/static/chunks/896-9dce6a3bc525edba.js +1 -0
  22. package/dist/web/dist/_next/static/chunks/{935-efb30b9f6f558e3f.js → 935-12f1084f0e18c962.js} +1 -1
  23. package/dist/web/dist/_next/static/chunks/app/_not-found/{page-d939b40bb8878d26.js → page-46929212b0496a89.js} +1 -1
  24. package/dist/web/dist/_next/static/chunks/app/admin/data/{page-df1d84c14e85f294.js → page-666f99fbfee46cc9.js} +1 -1
  25. package/dist/web/dist/_next/static/chunks/app/auth/verify/{page-cfeb844e1b72ccaa.js → page-2da5807d6cdfdb4e.js} +1 -1
  26. package/dist/web/dist/_next/static/chunks/app/companies/{page-57b1ef0b12134ce0.js → page-e1e730e2dc5ad84c.js} +1 -1
  27. package/dist/web/dist/_next/static/chunks/app/company/admin/{page-010928306f8df0ed.js → page-02244f3f1a212c76.js} +1 -1
  28. package/dist/web/dist/_next/static/chunks/app/entity/{page-fa96319650d38e78.js → page-d59a8103f8107d3b.js} +1 -1
  29. package/dist/web/dist/_next/static/chunks/app/jobs/page-a32a17c5a6384358.js +1 -0
  30. package/dist/web/dist/_next/static/chunks/app/layout-1e492ed8c639edf5.js +1 -0
  31. package/dist/web/dist/_next/static/chunks/app/logs/{page-bcdbb3885abda5a2.js → page-badf48f4e7e32e17.js} +1 -1
  32. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/{page-8aca89db1e666a49.js → page-73bca3864b8b9e44.js} +1 -1
  33. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/{page-7086f1b773e57511.js → page-477c66bee61225fa.js} +1 -1
  34. package/dist/web/dist/_next/static/chunks/app/{page-49fe1e8630d2237e.js → page-8ea324b366e3d374.js} +1 -1
  35. package/dist/web/dist/_next/static/chunks/app/parselog/{page-fcdfdd41cf1f86f7.js → page-4f5c186442feb386.js} +1 -1
  36. package/dist/web/dist/_next/static/chunks/app/recordings/page-0fb8cafdd2f6762c.js +1 -0
  37. package/dist/web/dist/_next/static/chunks/app/resource-usage/{page-7b939cf673d764e6.js → page-76be36ca978391a3.js} +1 -1
  38. package/dist/web/dist/_next/static/chunks/app/shared/[token]/page-6741cd1b0a4aca2e.js +1 -0
  39. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/{page-7d4d25de2c6704e9.js → page-60ea46364a74b294.js} +1 -1
  40. package/dist/web/dist/_next/static/chunks/app/talents/{page-5a2caa7a503ee041.js → page-4b00d69580f49f97.js} +1 -1
  41. package/dist/web/dist/_next/static/chunks/app/team/insights/{page-f097b4b8578a6e5d.js → page-5385dcd363f6e0cd.js} +1 -1
  42. package/dist/web/dist/_next/static/chunks/webpack-9cebd25e322e2cd7.js +1 -0
  43. package/dist/web/dist/_next/static/css/8f3c454cab3414d0.css +3 -0
  44. package/dist/web/dist/admin/data.html +1 -1
  45. package/dist/web/dist/admin/data.txt +5 -5
  46. package/dist/web/dist/auth/verify.html +1 -1
  47. package/dist/web/dist/auth/verify.txt +5 -5
  48. package/dist/web/dist/companies.html +1 -1
  49. package/dist/web/dist/companies.txt +5 -5
  50. package/dist/web/dist/company/admin.html +1 -1
  51. package/dist/web/dist/company/admin.txt +5 -5
  52. package/dist/web/dist/entity.html +1 -1
  53. package/dist/web/dist/entity.txt +5 -5
  54. package/dist/web/dist/index.html +1 -1
  55. package/dist/web/dist/index.txt +5 -5
  56. package/dist/web/dist/jobs.html +1 -1
  57. package/dist/web/dist/jobs.txt +5 -5
  58. package/dist/web/dist/logs.html +1 -1
  59. package/dist/web/dist/logs.txt +5 -5
  60. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
  61. package/dist/web/dist/matching/jobs/placeholder/talents.txt +5 -5
  62. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
  63. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +5 -5
  64. package/dist/web/dist/parselog.html +1 -1
  65. package/dist/web/dist/parselog.txt +5 -5
  66. package/dist/web/dist/recordings.html +1 -1
  67. package/dist/web/dist/recordings.txt +5 -5
  68. package/dist/web/dist/resource-usage.html +1 -1
  69. package/dist/web/dist/resource-usage.txt +5 -5
  70. package/dist/web/dist/shared/placeholder.html +1 -1
  71. package/dist/web/dist/shared/placeholder.txt +5 -5
  72. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
  73. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +5 -5
  74. package/dist/web/dist/talents.html +1 -1
  75. package/dist/web/dist/talents.txt +5 -5
  76. package/dist/web/dist/team/insights.html +1 -1
  77. package/dist/web/dist/team/insights.txt +5 -5
  78. package/package.json +1 -4
  79. package/dist/web/dist/_next/static/chunks/166.b263e636ff66212f.js +0 -1
  80. package/dist/web/dist/_next/static/chunks/187-f067914dcd1330c2.js +0 -32
  81. package/dist/web/dist/_next/static/chunks/659-122057f46f941df7.js +0 -1
  82. package/dist/web/dist/_next/static/chunks/728-cffab7e836020551.js +0 -12
  83. package/dist/web/dist/_next/static/chunks/app/jobs/page-5ba0bdc881b98d42.js +0 -1
  84. package/dist/web/dist/_next/static/chunks/app/layout-bd9a7e5e4474b692.js +0 -1
  85. package/dist/web/dist/_next/static/chunks/app/recordings/page-7ba5d89391c9dace.js +0 -1
  86. package/dist/web/dist/_next/static/chunks/app/shared/[token]/page-df87328c52f862f1.js +0 -1
  87. package/dist/web/dist/_next/static/chunks/webpack-54e74ccc9e9451ee.js +0 -1
  88. package/dist/web/dist/_next/static/css/a8f0a381a2372781.css +0 -3
  89. package/dist/web/dist/_next/static/css/f60d210841fab76b.css +0 -1
  90. /package/dist/web/dist/_next/static/{m0UGHVTGvtvb9mn4-uzJJ → cC7rsTCys5_15wJ8BiPDm}/_buildManifest.js +0 -0
  91. /package/dist/web/dist/_next/static/{m0UGHVTGvtvb9mn4-uzJJ → cC7rsTCys5_15wJ8BiPDm}/_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]="80a62c53-1806-4301-9bde-04a9b893aeb6",e._sentryDebugIdIdentifier="sentry-dbid-80a62c53-1806-4301-9bde-04a9b893aeb6")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[109],{74843:function(e,t,s){Promise.resolve().then(s.bind(s,96041))},96041:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return es}});var l=s(72835),a=s(59659),n=s(60635),r=s(27473),i=s(74431),d=s(8448),c=s(94518),o=s(63718),u=s(86777),m=s(27828),x=s(26119),h=s(93464),p=s(65777),b=s(58574),g=s(38119),y=s(27485),v=s(6443),j=s(33365),f=s(78606),N=s(59998),k=s(31595),w=s(74435),S=s(67002),C=s(95909),I=s(86892),A=s(87018),O=s(32587);function T(e){var t;let{entityId:s,name:a,open:r,onClose:d}=e,[c,o]=(0,n.useState)(null),[u,m]=(0,n.useState)([]),[x,h]=(0,n.useState)(null),[p,b]=(0,n.useState)(null),[g,y]=(0,n.useState)(!1),[j,f]=(0,n.useState)(!1),[N,k]=(0,n.useState)(0);return(0,n.useEffect)(()=>{if(!r||null==s)return;let e=!0;return y(!0),f(!1),o(null),m([]),h(null),b(null),Promise.all([(0,i.aA)("/entities/talent/".concat(s)),(0,i.aA)("/entities/talent/".concat(s,"/sources")).catch(()=>null),(0,i.aA)("/entities/talent/".concat(s,"/matches")).catch(()=>null)]).then(t=>{var s,l;let[a,n,r]=t;e&&(o(a.entity),m(n?n.items:[]),h(null!==(s=null==r?void 0:r.portraitId)&&void 0!==s?s:null),b(null!==(l=null==r?void 0:r.matches)&&void 0!==l?l:[]))}).catch(()=>{e&&f(!0)}).finally(()=>{e&&y(!1)}),()=>{e=!1}},[r,s,N]),(0,l.jsx)(C.Z,{title:null!==(t=null==c?void 0:c.name)&&void 0!==t?t:a,placement:"right",width:860,open:r,onClose:d,destroyOnHidden:!0,children:g?(0,l.jsx)(I.Z,{active:!0,paragraph:{rows:8}}):j?(0,l.jsx)(A.Z,{type:"error",message:"人才详情加载失败",description:(0,l.jsx)(v.ZP,{size:"small",onClick:()=>k(e=>e+1),children:"重试"})}):c?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(O.n,{entity:c}),(0,l.jsx)(O.z,{entity:c,portraitId:x,matches:p,sources:u})]}):null})}let P=[{hours:24,label:"1 天"},{hours:72,label:"3 天"},{hours:168,label:"7 天"},{hours:720,label:"30 天"}];function z(e){var t;let s,{jobCaseId:a,onClose:r}=e,[d,c]=(0,n.useState)(null),[o,u]=(0,n.useState)("tenant"),[m,x]=(0,n.useState)(new Set),[h,p]=(0,n.useState)(168),[b,g]=(0,n.useState)(""),[y,v]=(0,n.useState)(!1),[j,f]=(0,n.useState)(null),[N,k]=(0,n.useState)(null),[w,C]=(0,n.useState)(!1);async function I(){v(!0),f(null);try{let e=await (0,i.aA)("/shares",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobCaseId:a,scope:"users"===o?{type:"users",hmUserIds:Array.from(m)}:{type:"tenant"},ttlHours:h,note:b.trim()||void 0})});if(!(null==e?void 0:e.token)){f("创建失败:未登录云端账号 / 云服务不可达 / 该职位未同步上云");return}k(e)}catch(e){f("创建失败:未登录云端账号 / 云服务不可达 / 该职位未同步上云")}finally{v(!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,S.Lc)(e)},[]);let A=N?(t=N.urlPath,"".concat(window.location.origin).concat(t)):null;return s=null===d?(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"加载同事目录…(未登录云端账号时为空)"}):d.length?d.map(e=>(0,l.jsxs)("label",{className:"flex items-center gap-2 py-1 text-sm",children:[(0,l.jsx)("input",{type:"checkbox",checked:m.has(e.hmUserId),onChange:t=>{let s=new Set(m);t.target.checked?s.add(e.hmUserId):s.delete(e.hmUserId),x(s)}}),(0,l.jsx)("span",{children:e.name}),(0,l.jsx)("span",{className:"text-xs text-gray-400",children:e.email})]},e.hmUserId)):(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"暂无公司租户同事"}),(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",onClick:r,children:(0,l.jsxs)("div",{className:"w-[520px] max-w-[92vw] rounded-lg bg-white p-5 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsxs)("div",{className:"mb-4 flex items-center justify-between",children:[(0,l.jsxs)("h3",{className:"text-base font-semibold",children:["分享职位推荐(职位 #",a,")"]}),(0,l.jsx)("button",{onClick:r,className:"text-gray-400 hover:text-gray-600",children:"✕"})]}),N?(0,l.jsxs)("div",{children:[(0,l.jsxs)("div",{className:"mb-2 rounded bg-emerald-50 px-3 py-2 text-sm text-emerald-800",children:["分享已创建,有效期至 ",new Date(N.expiresAt).toLocaleString()]}),(0,l.jsx)("div",{className:"mb-1 text-xs text-gray-500",children:"把链接发给同事(对方在自己本地 hm 打开):"}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("input",{readOnly:!0,value:null!=A?A:"",className:"flex-1 rounded border border-gray-300 px-2 py-1.5 font-mono text-xs",onFocus:e=>e.target.select()}),(0,l.jsx)("button",{onClick:()=>{A&&navigator.clipboard.writeText(A).then(()=>{C(!0),setTimeout(()=>C(!1),2500)})},className:"rounded bg-blue-600 px-3 py-1.5 text-xs text-white hover:bg-blue-700",children:w?"已复制 ✓":"复制"})]}),(0,l.jsx)("div",{className:"mt-4 text-right",children:(0,l.jsx)("button",{onClick:r,className:"rounded border border-gray-300 px-4 py-1.5 text-sm hover:bg-gray-50",children:"完成"})})]}):(0,l.jsxs)("div",{className:"space-y-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"分享范围"}),(0,l.jsxs)("label",{className:"mr-4 text-sm",children:[(0,l.jsx)("input",{type:"radio",checked:"tenant"===o,onChange:()=>u("tenant")})," 租户内所有同事"]}),(0,l.jsxs)("label",{className:"text-sm",children:[(0,l.jsx)("input",{type:"radio",checked:"users"===o,onChange:()=>u("users")})," 指定同事"]}),"users"===o?(0,l.jsx)("div",{className:"mt-2 max-h-36 overflow-auto rounded border border-gray-200 p-2",children:s}):null]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"有效期"}),(0,l.jsx)("select",{value:h,onChange:e=>p(Number(e.target.value)),className:"rounded border border-gray-300 px-2 py-1 text-sm",children:P.map(e=>(0,l.jsx)("option",{value:e.hours,children:e.label},e.hours))})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"mb-1 text-xs font-medium text-gray-600",children:"备注(可选,给查看者的说明)"}),(0,l.jsx)("input",{value:b,onChange:e=>g(e.target.value),maxLength:200,placeholder:"例如:这 10 位是本周重点推荐,请 op 优先跟进",className:"w-full rounded border border-gray-300 px-2 py-1.5 text-sm"})]}),j?(0,l.jsx)("div",{className:"text-xs text-red-600",children:j}):null,(0,l.jsxs)("div",{className:"flex justify-end gap-2 pt-1",children:[(0,l.jsx)("button",{onClick:r,className:"rounded border border-gray-300 px-4 py-1.5 text-sm hover:bg-gray-50",children:"取消"}),(0,l.jsx)("button",{onClick:()=>void I(),disabled:y||"users"===o&&!m.size,className:"rounded bg-blue-600 px-4 py-1.5 text-sm text-white hover:bg-blue-700 disabled:opacity-40",children:y?"创建中…":"生成分享链接"})]})]})]})})}let E=null;function Z(e,t,s){return(0,i.aA)(e,{method:t,headers:{"Content-Type":"application/json"},body:null!=s?JSON.stringify(s):void 0})}let U={create:"建档",move:"阶段迁移",form:"保存表单",invite:"记录邀请",invite_approved:"批准邀请",note:"备注",delete:"移出流程"};function D(e){return(0,l.jsx)(b.Z,{children:(0,l.jsx)(L,{...e})})}function L(e){var t,s,a,r,c;let{jobCaseId:o,canOperate:u=!0}=e,{message:x}=b.Z.useApp(),[h,p]=(0,n.useState)(E),[C,I]=(0,n.useState)("recommended"),[A,O]=(0,n.useState)([]),[P,D]=(0,n.useState)({}),[L,_]=(0,n.useState)(null),[F,M]=(0,n.useState)({}),[B,J]=(0,n.useState)(!1),[R,q]=(0,n.useState)(new Set),[H,W]=(0,n.useState)(new Set),[K,Y]=(0,n.useState)(null),[G,Q]=(0,n.useState)(!1),[V,X]=(0,n.useState)([]),[$,ee]=(0,n.useState)(o),[et,es]=(0,n.useState)(""),[el,ea]=(0,n.useState)(!1),[en,er]=(0,n.useState)(null),[ei,ed]=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)})},[])]}(),[ec,eo]=(0,n.useState)(!1),[eu]=g.Z.useForm(),[em,ex]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(E)return;let e=!0,t=()=>{E||(0,i.aA)("/recommendations/meta").then(t=>{t&&e&&(E=t,p(t))}).catch(()=>{})};t();let s=(0,S.Lc)(t);return()=>{e=!1,s()}},[h]);let eh=(0,n.useMemo)(()=>{var e;return null!==(e=null==h?void 0:h.stages.map(e=>e.key))&&void 0!==e?e:[]},[h]),ep=(0,n.useCallback)(async()=>{J(!0);try{var e;let t=await (0,i.aA)("/job-cases/".concat(o,"/recommendations"));O(t.items),D(null!==(e=t.counts)&&void 0!==e?e:{}),q(new Set)}catch(e){x.error("列表刷新失败,请手动刷新页面")}finally{J(!1)}},[o,x]);(0,n.useEffect)(()=>{I("recommended"),Y(null),_(null),ep()},[ep]),(0,n.useEffect)(()=>{"matched"===C&&null===L&&(async()=>{var e,t;let[s,l]=await Promise.all([(0,i.aA)("/matching/jobs/".concat(o,"/talents")).catch(()=>[]),(0,i.aA)("/talent-portraits").catch(()=>[])]);_(s);let a={};for(let s of l)a[s.id]=null!==(t=null===(e=s.identity)||void 0===e?void 0:e.displayName)&&void 0!==t?t:"(未命名)";M(a)})()},[C,L,o]);let eb=(0,n.useCallback)(async(e,t)=>{try{let s=await t();(null==s?void 0:s.prompt)&&ed(e,s.prompt)}catch(e){}},[ed]),eg=(e,t,s)=>{let l=new Set(e);l.has(t)?l.delete(t):l.add(t),s(l)},ey=e=>{var t;return e&&h?null!==(t=h.stageLabels[e])&&void 0!==t?t:e:""},ev=async()=>{var e;if(!et||!h)return;let t=null!==(e=h.formTemplates[et])&&void 0!==e?e:[],s={};if(t.length)try{s=await eu.validateFields()}catch(e){return}let l={};for(let e of t){let t="string"==typeof s[e.key]?s[e.key].trim():s[e.key];null!=t&&""!==t&&(l[e.key]=t)}let a=R.size;ea(!0),er(null);try{await Z("/recommendations/batch-move","POST",{ids:Array.from(R),stage:et,jobCaseId:$,formData:Object.keys(l).length?l:void 0})}catch(e){ea(!1),x.error("移动失败,请重试");return}ea(!1),Q(!1),eu.resetFields(),x.success("已移动 ".concat(a," 人到「").concat(ey(et),"」")),await ep()},ej=async()=>{ea(!0),er(null);let e=Array.from(H),t=(await Promise.all(e.map(e=>Z("/recommendations/adopt","POST",{matchId:e}).then(()=>!0,()=>!1)))).filter(e=>!e).length;ea(!1),W(new Set),await ep(),t&&x.warning("".concat(t," 个采纳失败,请重试"))},ef=async()=>{ee(o),es(""),eu.resetFields(),Q(!0);try{var e;let t=await (0,i.aA)("/job-cases?limit=200");X(null!==(e=t.items)&&void 0!==e?e:[])}catch(e){}};if(!h)return(0,l.jsx)("div",{className:"p-4 text-sm text-gray-400",children:"加载推荐流水线定义…"});let eN=[...h.stages.map(e=>{var t;return{key:e.key,label:"".concat(e.label,"(").concat(null!==(t=P[e.key])&&void 0!==t?t:0,")")}})];eN.splice(1,0,{key:"matched",label:"匹配人才(".concat(null!==(s=null==L?void 0:L.length)&&void 0!==s?s:"…",")")});let ek="matched"===C?[]:A.filter(e=>e.stage===C),ew=et&&null!==(a=h.formTemplates[et])&&void 0!==a?a:[];return(0,l.jsxs)("div",{children:[(0,l.jsx)(y.Z,{size:"small",activeKey:C,onChange:e=>{I(e),Y(null)},items:eN.map(e=>({key:e.key,label:e.label}))}),u?(0,l.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:["recommended"===C?(0,l.jsx)(v.ZP,{size:"small",color:"gold",variant:"solid",onClick:()=>void eb("recommend",()=>(0,i.aA)("/job-cases/".concat(o,"/recommend-prompt"))),children:"recommend"===ei?"已复制 ✓ 请发给 agent":"再推荐(复制 prompt)"}):null,"matched"===C?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(v.ZP,{size:"small",color:"gold",variant:"solid",onClick:()=>void eb("match",()=>(0,i.aA)("/job-cases/".concat(o,"/match-prompt"))),children:"match"===ei?"已复制 ✓ 请发给 agent":"打分分析推荐(复制 prompt)"}),(0,l.jsxs)(v.ZP,{size:"small",color:"green",variant:"solid",disabled:!H.size||el,onClick:()=>void ej(),children:["采纳为推荐(",H.size,")"]})]}):null,"pending_invite"===C&&R.size?(0,l.jsx)(v.ZP,{size:"small",color:"blue",variant:"solid",onClick:()=>void eb("invite",()=>Z("/recommendations/invite-prompt","POST",{ids:Array.from(R)})),children:"invite"===ei?"已复制 ✓ 请发给 agent":"发送邀请(".concat(R.size,")")}):null,"invited"===C&&R.size?(0,l.jsx)(v.ZP,{size:"small",color:"blue",variant:"solid",onClick:()=>void eb("reply",()=>Z("/recommendations/reply-check-prompt","POST",{ids:Array.from(R)})),children:"reply"===ei?"已复制 ✓ 请发给 agent":"检查回复(".concat(R.size,")")}):null,"matched"!==C&&R.size?(0,l.jsxs)(v.ZP,{size:"small",onClick:()=>void ef(),children:["移动到…(",R.size,")"]}):null,R.size||H.size?(0,l.jsx)(v.ZP,{size:"small",type:"text",onClick:()=>{q(new Set),W(new Set)},children:"清除选择"}):null,(0,l.jsx)(v.ZP,{size:"small",color:"purple",variant:"solid",className:"ml-auto",onClick:()=>eo(!0),children:"分享给同事"})]}):(0,l.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 可操作推荐流程,你可查看"}),ec?(0,l.jsx)(z,{jobCaseId:o,onClose:()=>eo(!1)}):null,en?(0,l.jsx)("div",{className:"mb-2 text-xs text-red-500",children:en}):null,B?(0,l.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"加载中…"}):"matched"===C?(0,l.jsx)(function(e){return null===e.matches?(0,l.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"计算匹配中…"}):e.matches.length?(0,l.jsx)("div",{className:"space-y-2",children:e.matches.map(t=>{var s,a,n,r,i,d;return(0,l.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-2",children:[(0,l.jsxs)("div",{className:"flex items-start gap-2",children:[e.canOperate?(0,l.jsx)(k.Z,{checked:e.selected.has(t.id),onChange:()=>e.onToggle(t.id),className:"mt-1"}):null,(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("span",{className:"font-medium text-gray-900",children:null!==(r=e.names[t.portraitId])&&void 0!==r?r:t.portraitId}),(0,l.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,l.jsx)("span",{className:"rounded bg-purple-100 px-1.5 py-0.5 text-xs text-purple-700",children:t.humanFeedback.isRecommended?"已采纳":"已排除"}):null]}),(0,l.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,l.jsxs)("div",{className:"mt-2 border-t border-gray-100 pt-2 text-xs text-gray-600",children:[null!==(d=null===(a=t.recommendation)||void 0===a?void 0:a.aiReason)&&void 0!==d?d:"(无推荐理由)",(null===(n=t.humanFeedback)||void 0===n?void 0:n.reason)?(0,l.jsxs)("div",{className:"mt-1 text-purple-600",children:["人工反馈:",t.humanFeedback.reason]}):null]}):null]},t.id)})}):(0,l.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"暂无人岗匹配数据"})},{matches:L,names:F,selected:H,onToggle:e=>eg(H,e,W),expanded:K,onExpand:e=>Y(K===e?null:e),canOperate:u}):0===ek.length?(0,l.jsxs)("div",{className:"py-8 text-center text-sm text-gray-400",children:["本阶段暂无人选","recommended"===C?",点上方「再推荐」让 agent 寻访":"","pending_invite"===C?",可在人才详情「加入推荐流程」":""]}):(0,l.jsx)("div",{className:"space-y-2",children:ek.map(e=>(0,l.jsx)(eS,{row:e,meta:h,checked:R.has(e.id),onToggle:()=>eg(R,e.id,q),expanded:K===e.id,onExpand:()=>Y(K===e.id?null:e.id),onChanged:ep,canOperate:u,stageLabelOf:ey,onOpenDrawer:()=>ex(e)},e.id))}),(0,l.jsx)(T,{entityId:null!==(r=null==em?void 0:em.entityId)&&void 0!==r?r:null,name:null!==(c=null==em?void 0:null===(t=em.snapshot)||void 0===t?void 0:t.name)&&void 0!==c?c:"(未命名)",open:null!==em,onClose:()=>ex(null)}),(0,l.jsx)(j.Z,{title:"批量移动(".concat(R.size," 人)"),open:G,onCancel:()=>Q(!1),onOk:()=>void ev(),okText:el?"移动中…":"确认移动",cancelText:"取消",confirmLoading:el,okButtonProps:{disabled:!et},destroyOnHidden:!0,width:480,children:(0,l.jsxs)(g.Z,{form:eu,layout:"vertical",preserve:!1,children:[(0,l.jsx)(g.Z.Item,{label:"目标职位",className:"mb-3",children:(0,l.jsx)(f.Z,{size:"small",value:$,onChange:e=>{ee(e),es("")},options:(()=>{let e=V.map(e=>({value:e.id,label:e.title||e.externalId}));return V.find(e=>e.id===o)||e.unshift({value:o,label:"当前职位"}),e})()})}),(0,l.jsx)(g.Z.Item,{label:"目标阶段(当前职位的当前阶段不可选)",className:"mb-3",children:(0,l.jsx)(f.Z,{size:"small",placeholder:"选择阶段…",value:et||void 0,onChange:e=>es(e),options:eh.filter(e=>!($===o&&e===C)).map(e=>({value:e,label:ey(e)}))})}),et?ew.length?(0,l.jsxs)("div",{className:"rounded border border-gray-100 bg-gray-50 p-3",children:[(0,l.jsxs)("div",{className:"mb-2 text-xs font-medium text-gray-600",children:["阶段表单\xb7",ey(et),"(将写入全部 ",R.size," 人)"]}),ew.map(e=>(0,l.jsx)(g.Z.Item,{name:e.key,label:e.label,className:"mb-2",rules:e.required?[{required:!0,message:"请填写".concat(e.label)}]:void 0,children:(0,l.jsx)(N.Z.TextArea,{rows:2,size:"small",placeholder:e.required?"必填":"选填"})},e.key))]}):(0,l.jsx)("div",{className:"rounded border border-gray-100 bg-gray-50 px-3 py-2 text-xs text-gray-400",children:"该阶段无需填写表单信息"}):null]},et||"no-stage")})]});function eS(e){var t,s,a,r,i,c,o,u,x,h,p,b,g,y,j,f,S,C;let I=e.row,A=null!==(x=e.meta.formTemplates[I.stage])&&void 0!==x?x:[],[O,T]=(0,n.useState)(!1),[P,z]=(0,n.useState)({}),E=async()=>{var t;let s={},l=null!==(t=I.formData)&&void 0!==t?t:{};for(let[e,t]of Object.entries(P)){let a="string"==typeof t?t.trim():t;""===a||void 0===a?e in l&&(s[e]=null):l[e]!==a&&(s[e]=a)}for(let e of Object.keys(l))e in P||(s[e]=null);try{await Z("/recommendations/".concat(I.id),"PATCH",Object.keys(s).length?{formData:s}:{})}catch(e){er("保存表单失败,请重试");return}T(!1),await e.onChanged()},D=async()=>{try{await Z("/recommendations/".concat(I.id),"DELETE")}catch(e){er("移出流程失败,请重试");return}await e.onChanged()};return(0,l.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-2",children:[(0,l.jsxs)("div",{className:"flex items-start gap-2",children:[e.canOperate?(0,l.jsx)(k.Z,{checked:e.checked,onChange:e.onToggle,className:"mt-1"}):null,(0,l.jsx)("button",{className:"min-w-0 flex-1 text-left",onClick:e.onExpand,children:(0,l.jsx)(m.h5,{name:null!==(h=null===(t=I.snapshot)||void 0===t?void 0:t.name)&&void 0!==h?h:"(未命名)",headline:null===(s=I.snapshot)||void 0===s?void 0:s.headline,aiReason:null!==(p=null===(a=I.scores)||void 0===a?void 0:a.aiReason)&&void 0!==p?p:null,overall:null!==(b=null===(i=I.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=I.invitation)||void 0===c?void 0:c.channel)&&void 0!==g?g:null,stageLabel:e.stageLabelOf(I.stage),updatedAt:I.updatedAt,onNameClick:I.entityId?e.onOpenDrawer:void 0})}),e.canOperate?(0,l.jsx)(w.Z,{title:"把 ".concat(null!==(y=null===(o=I.snapshot)||void 0===o?void 0:o.name)&&void 0!==y?y:"(未命名)"," 移出推荐流程?"),description:"删除后不可恢复",okText:"确认移出",okButtonProps:{danger:!0},cancelText:"取消",onConfirm:()=>void D(),children:(0,l.jsx)("button",{className:"mt-1 text-xs text-gray-300 hover:text-red-500",title:"移出流程",children:"\xd7"})}):null]}),e.expanded?(0,l.jsxs)("div",{className:"mt-2 space-y-3 border-t border-gray-100 pt-2",children:[(0,l.jsxs)("section",{children:[(0,l.jsxs)("div",{className:"mb-1 flex items-center justify-between",children:[(0,l.jsxs)("h4",{className:"text-xs font-medium text-gray-700",children:[e.stageLabelOf(I.stage),"\xb7阶段表单"]}),O?(0,l.jsxs)("span",{className:"flex gap-2",children:[(0,l.jsx)(v.ZP,{size:"small",type:"primary",onClick:()=>void E(),children:"保存"}),(0,l.jsx)(v.ZP,{size:"small",onClick:()=>T(!1),children:"取消"})]}):e.canOperate?(0,l.jsx)(v.ZP,{size:"small",type:"link",onClick:()=>{var e;let t={...null!==(e=I.formData)&&void 0!==e?e:{}};for(let e of A)e.key in t||(t[e.key]="");z(t),T(!0)},children:"编辑表单"}):null]}),O?(0,l.jsxs)("div",{className:"space-y-1.5",children:[Object.entries(P).map(e=>{var t,s;let[a,n]=e,r=null!==(s=null===(t=A.find(e=>e.key===a))||void 0===t?void 0:t.label)&&void 0!==s?s:a;return(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"w-40 shrink-0 truncate text-gray-500",title:r,children:r}),(0,l.jsx)(N.Z,{size:"small",value:String(null!=n?n:""),onChange:e=>z({...P,[a]:e.target.value}),className:"min-w-0 flex-1"}),(0,l.jsx)("button",{onClick:()=>{let e={...P};delete e[a],z(e)},className:"text-gray-300 hover:text-red-500",children:"\xd7"})]},a)}),(0,l.jsx)(eC,{onAdd:(e,t)=>z({...P,[e]:t}),existing:Object.keys(P)})]}):(0,l.jsxs)("dl",{className:"space-y-1 text-xs",children:[Object.entries(null!==(j=I.formData)&&void 0!==j?j:{}).length?Object.entries(null!==(f=I.formData)&&void 0!==f?f:{}).map(e=>{var t,s;let[a,n]=e;return(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)("dt",{className:"w-40 shrink-0 truncate text-gray-500",children:null!==(s=null===(t=A.find(e=>e.key===a))||void 0===t?void 0:t.label)&&void 0!==s?s:a}),(0,l.jsx)("dd",{className:"min-w-0 flex-1 whitespace-pre-wrap text-gray-800",children:String(n)})]},a)}):(0,l.jsx)("div",{className:"text-gray-400",children:"(表单为空)"}),(null===(u=I.invitation)||void 0===u?void 0:u.sentAt)?(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.jsx)("dt",{className:"w-40 shrink-0 text-gray-500",children:"邀请发送时间"}),(0,l.jsx)("dd",{className:"text-gray-800",children:(0,d.d3)(I.invitation.sentAt)})]}):null]})]}),(0,l.jsxs)("section",{children:[(0,l.jsx)("h4",{className:"mb-1 text-xs font-medium text-gray-700",children:"操作历史"}),(0,l.jsxs)("ol",{className:"space-y-1 text-xs text-gray-500",children:[[...null!==(S=I.history)&&void 0!==S?S:[]].reverse().map((t,s)=>{var a;return(0,l.jsxs)("li",{className:"flex flex-wrap gap-x-2",children:[(0,l.jsx)("span",{className:"text-gray-400",children:(0,d.d3)(t.at)}),(0,l.jsx)("span",{className:"text-gray-700",children:null!==(a=U[t.action])&&void 0!==a?a:t.action}),t.fromStage?(0,l.jsxs)("span",{children:[e.stageLabelOf(t.fromStage)," → ",e.stageLabelOf(t.toStage)]}):null,t.note?(0,l.jsxs)("span",{className:"text-gray-500",children:["\xb7 ",t.note]}):null,(0,l.jsxs)("span",{className:"text-gray-300",children:["by ",t.by]})]},s)}),(null!==(C=I.history)&&void 0!==C?C:[]).length?null:(0,l.jsx)("li",{className:"text-gray-400",children:"(暂无)"})]})]})]}):null]})}function eC(e){let{onAdd:t,existing:s}=e,[a,r]=(0,n.useState)(""),[i,d]=(0,n.useState)("");return(0,l.jsxs)("div",{className:"flex items-center gap-2 border-t border-dashed border-gray-200 pt-1.5 text-xs",children:[(0,l.jsx)(N.Z,{size:"small",value:a,onChange:e=>r(e.target.value),placeholder:"新字段名",className:"w-32"}),(0,l.jsx)(N.Z,{size:"small",value:i,onChange:e=>d(e.target.value),placeholder:"内容",className:"min-w-0 flex-1"}),(0,l.jsx)(v.ZP,{size:"small",onClick:()=>{let e=a.trim();!e||s.includes(e)||(t(e,i),r(""),d(""))},children:"加一行"})]})}}var _=s(49616);let F=[{key:"active",label:"启动中",cls:"bg-emerald-100 text-emerald-700"},{key:"closed",label:"结束",cls:"bg-gray-300 text-gray-700"}],M=[{key:"op",label:"我是 op",cls:"bg-blue-100 text-blue-700"},{key:"rs",label:"我是 rs",cls:"bg-cyan-100 text-cyan-700"}],B=[{key:"recommended",label:"有推荐"},{key:"invite",label:"邀约中"},{key:"replied",label:"已回复"},{key:"to_client",label:"已推客户"},{key:"interview",label:"面试"},{key:"offer",label:"offer"},{key:"onboarding",label:"入职"}],J=["liepin","linkedin","lagou","zhaopin","51job","boss"];function R(e){var t,s;let l;let a=(null!==(t=e.folderPath)&&void 0!==t?t:"").split("/").filter(Boolean).filter(e=>!["job","jd","raw"].includes(e));return(l=e.title)&&!["job","jd","raw"].includes(l)?e.title:null!==(s=a.at(-1))&&void 0!==s?s:"职位 #".concat(e.id)}function q(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 H(){var e,t;let s=(0,r.useRouter)(),a=(0,r.useSearchParams)(),d=a.get("id"),[u,b]=(0,n.useState)({}),[g,y]=(0,n.useState)(new Set),[v,j]=(0,n.useState)(""),[k,w]=(0,n.useState)(""),[S,C]=(0,n.useState)(null),[I,A]=(0,n.useState)(!1),[O,T]=(0,n.useState)(!1),[P,z]=(0,n.useState)(0),{session:E,sync:Z}=(0,p.nu)(),U=null!==(e=null==E?void 0:E.hmUserId)&&void 0!==e?e:null,D=null!==(t=null==Z?void 0:Z.activeTenantId)&&void 0!==t?t:null,L=a.get("st")||"",_=a.get("rel")||"",H=a.get("cust")||"",K=a.get("stage")||"",Y=a.get("ch")||"",G=(0,n.useMemo)(()=>L.split(",").map(e=>e.trim()).filter(Boolean),[L]),Q=(0,n.useMemo)(()=>K?K.split(",").map(e=>e.trim()).filter(Boolean):[],[K]),V=(0,n.useMemo)(()=>Y?Y.split(",").map(e=>e.trim()).filter(Boolean):[],[Y]),X=!!(L||_||H||K||Y),$=(0,n.useMemo)(()=>_?_.split(",").map(e=>e.trim()).filter(Boolean):X?[]:["op","rs"],[_,X]),[ee,et]=(0,n.useState)(!1),[es,el]=(0,n.useState)(!1),ea=(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)({}),[eu,em]=(0,n.useState)({}),[ex,eh]=(0,n.useState)(!1),[ep,eb]=(0,n.useState)(""),[eg,ey]=(0,n.useState)(!1),[ev,ej]=(0,n.useState)(null),ef=(0,x.B)({deleteUrl:"/job-cases",label:"职位",onDeleted:()=>ek.refresh(),currentUserId:U}),eN=(0,n.useMemo)(()=>Array.from(ef.selectedIds),[ef.selectedIds]),ek=(0,h.k)({fetchPage:(0,n.useCallback)(async(e,t)=>{var s;let l=new URLSearchParams;l.set("q",k),l.set("limit",String(t)),l.set("offset",String(e)),G.length&&l.set("status",G.join(",")),ea.length&&l.set("relation",ea.join(",")),H&&l.set("customerId",H),K&&l.set("stage",K),Y&&l.set("channel",Y);let a=await (0,i.aA)("/job-cases?".concat(l.toString()));er(null!==(s=a.statusCounts)&&void 0!==s?s:{active:0,closed:0});let n=a.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:a.items,total:a.total}},[k,G,ea,H,K,Y,D]),pageSize:50,deps:[k,G,ea,H,K,Y,D]});(0,n.useEffect)(()=>{X||ee||es||ek.loading||ek.error||0!==ek.total||et(!0)},[X,ee,es,ek.loading,ek.error,ek.total]),(0,n.useEffect)(()=>{et(!1),el(!1)},[D]),(0,n.useEffect)(()=>{let e=setTimeout(()=>w(v.trim()),300);return()=>clearTimeout(e)},[v]),(0,n.useEffect)(()=>{(0,i.aA)("/customers").then(e=>{let t={},s=new Set;for(let a of e){var l;t[a.id]=a.canonicalName,(null===(l=a.dedupKey)||void 0===l?void 0:l.startsWith("placeholder:"))&&s.add(a.id)}b(t),y(s)}).catch(()=>{b({}),y(new Set)})},[D]),(0,n.useEffect)(()=>{(0,i.aA)("/job-cases/tenant-members").then(e=>{var t;let s={};for(let l of null!==(t=e.items)&&void 0!==t?t:[])s[l.hmUserId]=l;em(s)}).catch(()=>{em({})})},[D]);let ew=(0,n.useCallback)(e=>{var t,s;return null==e?void 0:null!==(s=null===(t=eu[e])||void 0===t?void 0:t.label)&&void 0!==s?s:e===U?"我":"用户 #".concat(e)},[eu,U]);(0,n.useEffect)(()=>{ef.prune(ek.items.map(e=>String(e.id)))},[ek.items,ef]),(0,n.useEffect)(()=>{if(!d){C(null),T(!1);return}A(!0),T(!1),(0,i.aA)("/job-cases/".concat(d)).then(e=>{C(e)}).catch(()=>{C(null),T(!0)}).finally(()=>{A(!1)})},[d,D,P]);let eS=(0,n.useCallback)(e=>{let t=new URLSearchParams(a.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,a]),eC=(0,n.useCallback)(e=>{var t;return null==U?null:e.ownerId===U?"op":(null!==(t=e.rsUserIds)&&void 0!==t?t:[]).includes(U)?"rs":null},[U]),eI=(0,n.useMemo)(()=>ek.items.map(e=>{var t,s,a,n,r;return{id:String(e.id),content:(0,l.jsxs)("div",{className:"flex items-start gap-2",children:[ef.checkbox(String(e.id)),(0,l.jsx)(m.dy,{title:null!==(t=R(e))&&void 0!==t?t:"(职位 #".concat(e.id,")"),status:e.status,hmhLocal:(null!==(s=e.folderPath)&&void 0!==s?s:"").includes("/local/clients/"),subtitle:q(e),customerName:null!==(n=e.customerName)&&void 0!==n?n:e.customerId?null!==(a=u[e.customerId])&&void 0!==a?a:"客户 #".concat(e.customerId):"未关联客户",opName:null!=e.ownerId?ew(e.ownerId):void 0,rsNames:(null!==(r=e.rsUserIds)&&void 0!==r?r:[]).map(e=>{var t;return null!==(t=ew(e))&&void 0!==t?t:"用户 #".concat(e)}),updatedAt:e.updatedAt,createdAt:e.createdAt,stages:ei[e.id],platforms:ec[e.id],myRole:eC(e)})]})}}),[ek.items,u,ef,ei,ec,eC,ew]),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 J)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 l=Object.values(e.moved).reduce((e,t)=>e+t,0);ej("已合并 ".concat(e.sourceIds.length," 个职位 → #").concat(e.targetId,",迁移 ").concat(l," 条关联")+(e.matchConflicts?",匹配冲突按高分保留 ".concat(e.matchConflicts," 处"):"")),ef.clear(),ek.refresh(),setTimeout(()=>ej(null),8e3)},eT=d?I?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):O?(0,l.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,l.jsx)("button",{type:"button",onClick:()=>z(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):S?(0,l.jsx)(W,{detail:S,customers:u,placeholderCusts:g,myUserId:U}):(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该职位"}):(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一个职位查看详情"}),eP=G.length>0||$.length>0||H||K||Y||ee;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.m,{filterBar:(0,l.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,l.jsx)(N.Z,{allowClear:!0,size:"small",value:v,onChange:e=>j(e.target.value),placeholder:"搜索职位/客户/路径…"}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"状态:"}),F.map(e=>{let t=G.includes(e.key);return(0,l.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,l.jsx)("span",{className:"mx-1 text-gray-300",children:"|"}),(0,l.jsx)("span",{className:"text-gray-400",children:"关系:"}),M.map(e=>{let t=$.includes(e.key);return(0,l.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,l.jsx)("span",{className:"mx-1 text-gray-300",children:"|"}),(0,l.jsx)("button",{type:"button",title:"unlinked"===H?"点击取消未关联客户筛选":"只显示未关联客户的职位",onClick:()=>eS({cust:"unlinked"===H?"":"unlinked"}),className:"rounded bg-amber-100 px-1.5 py-0.5 text-xs text-amber-700 transition ".concat("unlinked"===H?"ring-1 ring-current":"opacity-40 hover:opacity-80"),children:"未关联客户"}),(0,l.jsxs)("span",{className:"ml-auto text-gray-400",children:["共 ",ek.total," 个"]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"客户:"}),(0,l.jsx)(f.Z,{size:"small",showSearch:!0,allowClear:!0,placeholder:"全部客户",style:{minWidth:220},value:H&&"unlinked"!==H?Number(H):void 0,onChange:e=>eS({cust:e?String(e):""}),options:Object.entries(u).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return{value:Number(t),label:s}})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"招聘状态:"}),(0,l.jsx)(f.Z,{mode:"multiple",size:"small",allowClear:!0,maxTagCount:"responsive",placeholder:"全部",style:{minWidth:260},value:Q,onChange:e=>eS({stage:e}),options:B.map(e=>({value:e.key,label:e.label}))})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,l.jsx)("span",{className:"w-12 shrink-0 text-gray-400",children:"渠道:"}),(0,l.jsx)(f.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,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[eP&&(0,l.jsx)("button",{type:"button",onClick:()=>{et(!1),el(!1),eS({st:[],rel:[],cust:"",stage:[],ch:[]})},className:"text-xs text-gray-400 hover:text-gray-600",children:"清除筛选"}),!ee||es||X?null:(0,l.jsx)("button",{type:"button",title:"无我操作的职位,已显示全部;点击恢复只看自己参与的",onClick:()=>el(!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,l.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,l.jsx)("div",{className:"mt-1 text-xs text-emerald-600",children:ev}):null]}),listPanel:ek.error?(0,l.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,l.jsx)("span",{className:"text-red-500",children:"加载失败"}),(0,l.jsx)("button",{type:"button",onClick:()=>ek.refresh(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,l.jsx)(o.L,{items:eI,selectedId:null!=d?d:void 0,onSelect:e=>eS({id:e}),loading:ek.loading,emptyText:"暂无职位",onLoadMore:ek.loadMore,loadingMore:ek.loadingMore,exhausted:ek.exhausted}),detailPanel:eT}),ef.modal(),ex?(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,l.jsxs)("div",{className:"w-96 rounded-lg bg-white p-4 shadow-xl",children:[(0,l.jsxs)("h3",{className:"mb-2 text-sm font-semibold text-gray-900",children:["合并职位(保留目标,其余 ",eN.length-1," 个结束)"]}),(0,l.jsx)("p",{className:"mb-3 text-xs text-gray-500",children:"源职位的推荐流水/发布/简历/画像/评估/沟通记录全部迁到目标职位;同人才匹配冲突保留高分。"}),(0,l.jsx)("div",{className:"mb-3 max-h-48 space-y-1 overflow-auto",children:eN.map(e=>{var t;let s=ek.items.find(t=>String(t.id)===e);return(0,l.jsxs)("label",{className:"flex items-center gap-2 text-sm text-gray-700",children:[(0,l.jsx)("input",{type:"radio",name:"merge-target",checked:ep===e,onChange:()=>eb(e)}),(0,l.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:["#",e," ",s?R(s):"",s?(0,l.jsxs)("span",{className:"text-xs text-gray-400",children:[" ",null!==(t=q(s))&&void 0!==t?t:""]}):null]})]},e)})}),(0,l.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,l.jsx)("button",{type:"button",onClick:()=>eh(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,l.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 W(e){var t,s,a;let{detail:r,customers:i,placeholderCusts:c,myUserId:o}=e,[u,m]=(0,n.useState)("info"),x=null!=o&&(r.ownerId===o||(null!==(t=r.rsUserIds)&&void 0!==t?t:[]).includes(o));return(0,l.jsxs)("div",{className:"h-full overflow-y-auto p-4",children:[(0,l.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,l.jsxs)("div",{className:"mb-3 text-xs text-gray-400",children:["externalId: ",r.externalId," \xb7 更新于 ",(0,d.d3)(r.updatedAt)]}),(0,l.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,l.jsx)("button",{onClick:()=>m(e.key),className:"rounded-t px-3 py-1.5 text-sm ".concat(u===e.key?"bg-gray-100 font-medium text-gray-900":"text-gray-500 hover:text-gray-700"),children:e.label},e.key))}),"info"===u?(0,l.jsx)(K,{detail:r,customers:i,placeholderCusts:c,myUserId:o}):"members"===u?(0,l.jsx)(Y,{detail:r,myUserId:o},"".concat(r.id,"-").concat(null!=o?o:"anon")):"criteria"===u?(0,l.jsx)(G,{detail:r,myUserId:o},"".concat(r.id,"-").concat(null!=o?o:"anon")):"history"===u?(0,l.jsx)(X,{jobCaseId:r.id},r.id):"pipeline"===u?(0,l.jsx)(D,{jobCaseId:r.id,canOperate:x},r.id):(0,l.jsx)(_.I,{jobCaseId:r.id,caseTitle:null!==(a=r.title)&&void 0!==a?a:"职位 #".concat(r.id),canOperate:x},r.id)]})}function K(e){var t,s,a;let{detail:d,customers:c,placeholderCusts:o,myUserId:m}=e,x=(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,k]=(0,n.useState)(d.customerId?String(d.customerId):""),[w,S]=(0,n.useState)(!1),C=null!=m&&d.ownerId===m,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),x.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,l.jsxs)("div",{children:[I&&C?(0,l.jsxs)("div",{className:"mb-4 rounded border border-amber-300 bg-amber-50 p-3",children:[(0,l.jsx)("div",{className:"mb-2 text-sm font-medium text-amber-800",children:"该职位尚未关联客户,请先选择客户公司(客户不能为空)"}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsxs)("select",{value:N,onChange:e=>k(e.target.value),className:"rounded border border-amber-300 px-2 py-1.5 text-sm",children:[(0,l.jsx)("option",{value:"",children:"选择客户…"}),Object.entries(c).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return(0,l.jsx)("option",{value:t,children:s},t)})]}),(0,l.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,l.jsx)("div",{className:"mb-4 rounded border border-gray-200 bg-gray-50 p-3 text-sm text-gray-500",children:"该职位尚未关联客户,请联系 op 选择客户公司"}):null,(0,l.jsxs)("div",{className:"mb-4 rounded border border-gray-200 bg-gray-50 p-2",children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,l.jsx)("span",{className:"text-gray-500",children:"状态:"}),(0,l.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,l.jsx)("button",{type:"button",disabled:w,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:w?"申请中…":"申请做 op(无人管理,直接生效)"}):null,C&&!I?"active"===d.status?(0,l.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,l.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,l.jsx)("span",{className:"text-xs text-gray-400",children:"仅 op 可切换状态"})]}),b?(0,l.jsx)("div",{className:"mt-1 text-xs text-red-500",children:b}):null]}),d.customerId?(0,l.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,l.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,l.jsx)("span",{className:"text-gray-500",children:"客户公司:"}),(0,l.jsx)("span",{className:"font-medium",children:null!==(s=c[d.customerId])&&void 0!==s?s:"#".concat(d.customerId)}),(0,l.jsx)("span",{className:"text-xs text-amber-500",children:"查看公司详情 →"})]}),C?(0,l.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,l.jsx)("option",{value:t,children:s},t)})}):null]}):null,(0,l.jsxs)("div",{className:"mb-4",children:[(0,l.jsxs)("div",{className:"mb-1 flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:"职位名"}),C&&!y?(0,l.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,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.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,l.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,l.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,l.jsx)("div",{className:"text-sm text-gray-700",children:null!==(a=d.title)&&void 0!==a?a:"—"})]}),d.folderPath?(0,l.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,l.jsxs)("section",{className:"mb-4",children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"职位要求(requirements)"}),(0,l.jsx)(u.Y,{data:d.requirements})]}):null,d.rawFiles&&Object.keys(d.rawFiles).length>0?(0,l.jsxs)("section",{children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"原始文件(rawFiles)"}),(0,l.jsx)(u.Y,{data:d.rawFiles})]}):null]})}function Y(e){let{detail:t,myUserId:s}=e,[a,r]=(0,n.useState)({op:null,rs:[]}),[d,c]=(0,n.useState)([]),[o,u]=(0,n.useState)(null),[m,x]=(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,l;return null!==(l=null===(t=d.find(t=>t.hmUserId===e))||void 0===t?void 0:t.label)&&void 0!==l?l:e===s?"我":"用户 #".concat(e)},j=null!=s&&a.op===s,f=async function(e,s){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"操作失败(仅 op 可操作)";x(!0),u(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){x(!1),u(l);return}x(!1),y()},N=d.filter(e=>e.hmUserId!==a.op&&!a.rs.includes(e.hmUserId));return(0,l.jsxs)("div",{children:[(0,l.jsxs)("section",{className:"mb-4",children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"op(职位管理者,唯一)"}),null!=a.op?(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[(0,l.jsxs)("span",{className:"rounded bg-blue-100 px-2 py-0.5 text-blue-700",children:[v(a.op),a.op===s?"(我)":""]}),j?(0,l.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:[(0,l.jsxs)("select",{value:h,onChange:e=>p(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5",children:[(0,l.jsx)("option",{value:"",children:"转移给…"}),d.filter(e=>e.hmUserId!==a.op).map(e=>{var t;return(0,l.jsx)("option",{value:e.hmUserId,children:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(e.hmUserId)},e.hmUserId)})]}),(0,l.jsx)("button",{type:"button",disabled:!h||m,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,l.jsx)("span",{className:"text-gray-400",children:"直接生效,无需对方确认"})]}):null]}):(0,l.jsx)("div",{className:"text-sm text-gray-500",children:"当前无 op——到「职位信息」tab 点「申请做 op」即可直接接管(无需审批)"})]}),(0,l.jsxs)("section",{className:"mb-4",children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"rs(协作成员,可多个)"}),a.rs.length?(0,l.jsx)("div",{className:"flex flex-wrap gap-1.5",children:a.rs.map(e=>(0,l.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,l.jsx)("button",{type:"button",disabled:m,onClick:()=>void(0,i.aA)("/job-cases/".concat(t.id,"/rs/").concat(e),{method:"DELETE"}).then(()=>y()).catch(()=>u("移除失败(仅 op 可操作)")),className:"text-cyan-500 hover:text-red-500",title:"移除该 rs",children:"\xd7"}):null]},e))}):(0,l.jsx)("div",{className:"text-sm text-gray-400",children:"暂无 rs"}),j?(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-1 text-xs",children:[(0,l.jsxs)("select",{value:b,onChange:e=>g(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5",children:[(0,l.jsx)("option",{value:"",children:"添加 rs(限同租户成员)…"}),N.map(e=>{var t;return(0,l.jsx)("option",{value:e.hmUserId,children:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(e.hmUserId)},e.hmUserId)})]}),(0,l.jsx)("button",{type:"button",disabled:!b||m,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,l.jsx)("div",{className:"text-xs text-red-500",children:o}):null]})}function G(e){var t;let{detail:s,myUserId:a}=e,[r,d]=(0,n.useState)([]),[c,o]=(0,n.useState)(null),[u,m]=(0,n.useState)(null),[x,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!=a?a:0));r.find(e=>{var t;return e.userId===(null!==(t=s.ownerId)&&void 0!==t?t:-1)});let f=null!=a&&(s.ownerId===a||(null!==(t=s.rsUserIds)&&void 0!==t?t:[]).includes(a)),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)},k=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)},w=async e=>{let t;h(!0),o(null),m(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),m("已叠加 ".concat(t.applied," 条新条件到我的条件")),v()},S=e=>(0,l.jsx)("ul",{className:"space-y-1",children:e.map((e,t)=>(0,l.jsxs)("li",{className:"text-xs text-gray-600",children:[(0,l.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,l.jsxs)("span",{className:"text-gray-400",children:["(权重 ",e.weight,")"]}):null]},t))});return(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsx)("p",{className:"text-xs text-gray-400",children:"招人条件按人维护:op 一份(=职位共享规则),每个 rs 一份。agent 找人默认按「op 条件 + 自己那份」;可叠加他人条件后选择是否更新自己那份。"}),null==a?(0,l.jsx)("div",{className:"rounded border border-gray-200 bg-gray-50 p-2 text-xs text-gray-500",children:"未登录同步用户,展示全部条件(本机工具视角)"}):null,null==a||f?null:(0,l.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!=a&&e.userId===a,n=null!=s.ownerId&&e.userId===s.ownerId,r=t?"我的条件":n?"op 的条件(职位共享,#".concat(e.userId,")"):"用户 #".concat(e.userId," 的条件");return(0,l.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,l.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:r}),t&&null!=a&&!p&&f?(0,l.jsx)("button",{type:"button",onClick:N,className:"text-xs text-blue-600 hover:underline",children:"编辑我的条件"}):null,t||null==a||p||!f?null:(0,l.jsx)("button",{type:"button",disabled:x,onClick:()=>void w(e.userId),className:"text-xs text-indigo-600 hover:underline disabled:opacity-40",children:"叠加到我的条件"})]}),t&&p?(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"(正在下方编辑我的条件)"}):e.criteria.length?S(e.criteria):(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"(空)"})]},e.userId)}):(0,l.jsx)("div",{className:"text-sm text-gray-400",children:"暂无找人条件"}),null!=a&&p&&f?(0,l.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"我的条件(编辑中)"}),(0,l.jsxs)("div",{className:"space-y-2",children:[g.map((e,t)=>(0,l.jsxs)("div",{className:"flex items-center gap-1.5 text-xs",children:[(0,l.jsx)("input",{type:"text",value:e.dimension,placeholder:"维度,如 city/skill/school",onChange:e=>y(g.map((s,l)=>l===t?{...s,dimension:e.target.value}:s)),className:"w-36 rounded border border-gray-300 px-1.5 py-0.5"}),(0,l.jsx)("input",{type:"text",value:e.value,placeholder:"值(字符串或 JSON)",onChange:e=>y(g.map((s,l)=>l===t?{...s,value:e.target.value}:s)),className:"w-56 rounded border border-gray-300 px-1.5 py-0.5"}),(0,l.jsx)("input",{type:"text",value:e.weight,placeholder:"权重",onChange:e=>y(g.map((s,l)=>l===t?{...s,weight:e.target.value}:s)),className:"w-14 rounded border border-gray-300 px-1.5 py-0.5"}),(0,l.jsx)("button",{type:"button",onClick:()=>y(g.filter((e,s)=>s!==t)),className:"text-gray-400 hover:text-red-500",children:"\xd7"})]},t)),(0,l.jsxs)("div",{className:"flex gap-2",children:[(0,l.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,l.jsx)("button",{type:"button",disabled:x,onClick:()=>void k(),className:"rounded bg-blue-600 px-2.5 py-0.5 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:x?"保存中…":"保存(整体替换我的条件)"}),(0,l.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==a||j||p||!f?null:(0,l.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:"添加我的条件"}),u?(0,l.jsx)("div",{className:"text-xs text-emerald-600",children:u}):null,c?(0,l.jsx)("div",{className:"text-xs text-red-500",children:c}):null,(0,l.jsx)(Q,{externalId:s.externalId})]})}function Q(e){let{externalId:t}=e,[s,a]=(0,n.useState)(null),[r,c]=(0,n.useState)(!1),[o,u]=(0,n.useState)("");(0,n.useEffect)(()=>{let e=!0;return(async()=>{try{var s;let l=await (0,i.aA)("/searchlog?jobCaseExternalId=".concat(encodeURIComponent(t),"&limit=100"));e&&a(null!==(s=l.items)&&void 0!==s?s:[])}catch(t){e&&(a([]),c(!0))}})(),()=>{e=!1}},[t]);let m=Array.from(new Set((null!=s?s:[]).map(e=>e.actorEmail).filter(Boolean))),x=(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,l.jsxs)("section",{className:"rounded border border-gray-200 p-3",children:[(0,l.jsxs)("div",{className:"mb-2 flex items-center justify-between",children:[(0,l.jsx)("h3",{className:"text-sm font-medium text-gray-800",children:"agent 找人历史"}),m.length>1?(0,l.jsxs)("label",{className:"flex items-center gap-1 text-xs text-gray-500",children:["按用户:",(0,l.jsxs)("select",{value:o,onChange:e=>u(e.target.value),className:"rounded border border-gray-300 px-1.5 py-0.5 text-xs",children:[(0,l.jsx)("option",{value:"",children:"全部"}),m.map(e=>(0,l.jsx)("option",{value:e,children:e},e))]})]}):null]}),null===s?(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"加载中…"}):0===x.length?(0,l.jsx)("div",{className:"text-xs text-gray-400",children:r?"历史服务不可用(需 hm 0.1.23+ 且已登录),不影响找人条件":"暂无搜索历史——agent 每轮搜索后会自动登记"}):(0,l.jsx)("ul",{className:"space-y-2",children:x.map(e=>{var t;return(0,l.jsxs)("li",{className:"rounded border border-gray-100 bg-gray-50 p-2 text-xs text-gray-600",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between text-gray-500",children:[(0,l.jsxs)("span",{children:[(0,l.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,l.jsxs)("span",{className:"text-gray-400",children:[" \xb7 ",e.model]}):null]}),(0,l.jsx)("span",{children:(0,d.d3)(e.createdAt)})]}),(0,l.jsxs)("div",{className:"mt-1",children:[(0,l.jsx)("span",{className:"text-gray-400",children:"条件:"})," ",h(e.conditions)]}),(0,l.jsxs)("div",{className:"mt-0.5",children:[(0,l.jsx)("span",{className:"text-gray-400",children:"结果:"})," ",h(e.stats)]}),e.note?(0,l.jsxs)("div",{className:"mt-0.5",children:[(0,l.jsx)("span",{className:"text-gray-400",children:"备注:"})," ",e.note]}):null]},e.id)})})]})}let V={created:"创建职位",status_change:"状态切换",op_claim:"申请成为 op",op_transfer:"转移 op",op_cleared:"退租清空 op",rs_add:"添加 rs",rs_remove:"移除 rs",customer_change:"客户变更",info_update:"信息更新"};function X(e){let{jobCaseId:t}=e,[s,a]=(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&&a(s.items)}catch(e){}})(),()=>{e=!1}},[t]),s.length)?(0,l.jsx)("ol",{className:"relative ml-2 space-y-3 border-l border-gray-200 pl-4",children:s.map(e=>{var t;return(0,l.jsxs)("li",{className:"relative",children:[(0,l.jsx)("span",{className:"absolute -left-[21px] top-1 h-2.5 w-2.5 rounded-full bg-blue-300"}),(0,l.jsx)("div",{className:"text-xs text-gray-400",children:(0,d.d3)(e.createdAt)}),(0,l.jsxs)("div",{className:"text-sm text-gray-800",children:[null!==(t=V[e.action])&&void 0!==t?t:e.action,null!=e.actorId?(0,l.jsxs)("span",{className:"text-gray-400",children:[" \xb7 操作人 #",e.actorId]}):null]}),e.detail&&Object.keys(e.detail).length?(0,l.jsx)("div",{className:"mt-0.5 text-xs text-gray-500",children:JSON.stringify(e.detail)}):null]},e.id)})}):(0,l.jsx)("div",{className:"text-sm text-gray-400",children:"暂无历史记录"})}function $(){return(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,l.jsx)(H,{})})}function ee(){var e;let[t,s]=(0,n.useState)(""),[a,r]=(0,n.useState)(""),[d,u]=(0,n.useState)(""),[m,x]=(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)(),w=null!==(e=null==k?void 0:k.activeTenantId)&&void 0!==e?e:null,S=(0,n.useCallback)(async()=>{y(!0);let e=new URLSearchParams;a&&e.set("q",a),d&&e.set("touched",d),e.set("limit","200");try{let t=await (0,i.aA)("/market/jobs?".concat(e.toString()));j(null),x(t.items),b(t.total)}catch(e){j("加载失败")}finally{y(!1)}},[a,d,w]);(0,n.useEffect)(()=>{let e=setTimeout(()=>r(t.trim()),300);return()=>clearTimeout(e)},[t]),(0,n.useEffect)(()=>{S()},[S]);let C=(0,n.useMemo)(()=>{var e;return null!==(e=m.find(e=>e.key===f))&&void 0!==e?e:null},[m,f]),I=(0,n.useMemo)(()=>m.map(e=>({id:e.key,content:(0,l.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:"truncate font-medium text-gray-900",children:e.title}),e.touched?(0,l.jsx)("span",{className:"rounded bg-emerald-100 px-1.5 py-0.5 text-[10px] text-emerald-700",children:"已操作"}):null]}),e.company?(0,l.jsx)("div",{className:"truncate text-xs text-gray-500",children:e.company}):null,(0,l.jsxs)("div",{className:"mt-0.5 flex items-center gap-0.5",children:[e.sources.map(e=>(0,l.jsx)(_.v,{platform:e},e)),(0,l.jsxs)("span",{className:"ml-1 text-[10px] text-gray-400",children:[e.postings.length," 个发布"]})]})]})})),[m]);return(0,l.jsx)(c.m,{filterBar:(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-gray-200 bg-white p-3",children:[(0,l.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,l.jsx)("button",{type:"button",onClick:()=>u(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,l.jsxs)("span",{className:"ml-auto text-xs text-gray-400",children:["共 ",h," 组(BD 市场视角)"]})]}),listPanel:v?(0,l.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,l.jsx)("span",{className:"text-red-500",children:v}),(0,l.jsx)("button",{type:"button",onClick:()=>void S(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,l.jsx)(o.L,{items:I,selectedId:null!=f?f:void 0,onSelect:N,loading:g,emptyText:"暂无市场职位(解析库暂无数据)"}),detailPanel:C?(0,l.jsxs)("div",{className:"h-full overflow-y-auto p-4",children:[(0,l.jsx)("h2",{className:"mb-1 text-lg font-semibold text-gray-900",children:C.title}),(0,l.jsxs)("div",{className:"mb-4 text-xs text-gray-400",children:[C.company?"".concat(C.company," \xb7 "):"",C.touched?"本租户已操作过":"本租户未操作"," \xb7 ",C.postings.length," 个平台发布"]}),C.jobCaseIds.length>0?(0,l.jsxs)("div",{className:"mb-4 rounded border border-emerald-200 bg-emerald-50 px-3 py-2 text-sm",children:[(0,l.jsx)("span",{className:"text-emerald-800",children:"我们交付中的案件:"}),C.jobCaseIds.map(e=>(0,l.jsxs)("a",{href:"/jobs?id=".concat(e),className:"ml-2 font-medium text-emerald-700 underline",children:["案件 #",e]},e))]}):null,(0,l.jsxs)("section",{children:[(0,l.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-800",children:"平台发布"}),(0,l.jsx)("div",{className:"space-y-1",children:C.postings.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2 rounded border border-gray-100 px-2 py-1.5 text-sm",children:[(0,l.jsx)(_.v,{platform:e.source}),(0,l.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,l.jsx)("span",{className:"text-xs text-gray-400",children:e.updatedAt.slice(0,10)})]},e.id))})]})]}):(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"选择左侧职位查看各平台发布"})})}var et=s(88801);function es(){let e=(0,et.mJ)();return"1"===new URLSearchParams(window.location.search).get("entities")?(0,l.jsx)("div",{className:"flex h-full flex-col",children:(0,l.jsx)("div",{className:"min-h-0 flex-1",children:(0,l.jsx)(a.EntityListPage,{type:"job",label:"职位",batchDelete:!0})})}):(0,l.jsxs)("div",{className:"flex h-full flex-col",children:["bd"===e?(0,l.jsx)("div",{className:"flex border-b border-gray-200 bg-white px-3 py-1.5",children:(0,l.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,l.jsx)("div",{className:"min-h-0 flex-1",children:"bd"===e?(0,l.jsx)(ee,{}):(0,l.jsx)($,{})})]})}}},function(e){e.O(0,[187,728,253,659,686,400,935,744],function(){return e(e.s=74843)}),_N_E=e.O()}]);
@@ -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]="7ce267b5-df2f-47d2-b50b-eb94179336f0",e._sentryDebugIdIdentifier="sentry-dbid-7ce267b5-df2f-47d2-b50b-eb94179336f0")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{86280:function(e,t,n){Promise.resolve().then(n.t.bind(n,61115,23)),Promise.resolve().then(n.bind(n,67188)),Promise.resolve().then(n.bind(n,15214)),Promise.resolve().then(n.bind(n,9424))},5111:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default={items_per_page:"条/页",jump_to:"跳至",jump_to_confirm:"确定",page:"页",prev_page:"上一页",next_page:"下一页",prev_5:"向前 5 页",next_5:"向后 5 页",prev_3:"向前 3 页",next_3:"向后 3 页",page_size:"页码"}},39721:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.commonLocale=void 0,t.commonLocale={yearFormat:"YYYY",dayFormat:"D",cellMeridiemFormat:"A",monthBeforeYear:!0}},6972:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;let l={...n(39721).commonLocale,locale:"zh_CN",today:"今天",now:"此刻",backToToday:"返回今天",ok:"确定",timeSelect:"选择时间",dateSelect:"选择日期",weekSelect:"选择周",clear:"清除",week:"周",month:"月",year:"年",previousMonth:"上个月",nextMonth:"下个月",monthSelect:"选择月份",yearSelect:"选择年份",decadeSelect:"选择年代",previousYear:"上一年",nextYear:"下一年",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世纪",nextCentury:"下一世纪",yearFormat:"YYYY年",cellDateFormat:"D",monthBeforeYear:!1};t.default=l},54539:function(e,t,n){"use strict";var l=n(50129).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(47034));t.default=r.default},47034:function(e,t,n){"use strict";var l=n(50129).default;Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(6972)),a=l(n(53523));let s={lang:{placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"],...r.default},timePickerLocale:{...a.default}};s.lang.ok="确定",t.default=s},26499:function(e,t,n){"use strict";var l=n(50129).default;t.Z=void 0;var r=l(n(5111)),a=l(n(54539)),s=l(n(47034)),i=l(n(53523));let o="${label}不是一个有效的${type}",c={locale:"zh-cn",Pagination:r.default,DatePicker:s.default,TimePicker:i.default,Calendar:a.default,global:{placeholder:"请选择",close:"关闭",sortable:"可排序",show:"显示",hide:"隐藏"},Table:{filterTitle:"筛选",filterConfirm:"确定",filterReset:"重置",filterEmptyText:"无筛选项",filterCheckAll:"全选",filterSearchPlaceholder:"在筛选项中搜索",emptyText:"暂无数据",selectAll:"全选当页",selectInvert:"反选当页",selectNone:"清空所有",selectionAll:"全选所有",sortTitle:"排序",expand:"展开行",collapse:"关闭行",triggerDesc:"点击降序",triggerAsc:"点击升序",cancelSort:"取消排序"},Modal:{okText:"确定",cancelText:"取消",justOkText:"知道了"},Tour:{Next:"下一步",Previous:"上一步",Finish:"结束导览"},Popconfirm:{cancelText:"取消",okText:"确定"},Transfer:{titles:["",""],searchPlaceholder:"请输入搜索内容",itemUnit:"项",itemsUnit:"项",remove:"删除",selectCurrent:"全选当页",removeCurrent:"删除当页",selectAll:"全选所有",deselectAll:"取消全选",removeAll:"删除全部",selectInvert:"反选当页"},Upload:{uploading:"文件上传中",removeFile:"删除文件",uploadError:"上传错误",previewFile:"预览文件",downloadFile:"下载文件"},Empty:{description:"暂无数据"},Icon:{icon:"图标"},Text:{edit:"编辑",copy:"复制",copied:"复制成功",expand:"展开",collapse:"收起"},Carousel:{prevSlide:"上一张幻灯片",nextSlide:"下一张幻灯片"},Form:{optional:"(可选)",defaultValidateMessages:{default:"字段验证错误${label}",required:"请输入${label}",enum:"${label}必须是其中一个[${enum}]",whitespace:"${label}不能为空字符",date:{format:"${label}日期格式无效",parse:"${label}不能转换为日期",invalid:"${label}是一个无效日期"},types:{string:o,method:o,array:o,object:o,number:o,date:o,boolean:o,integer:o,float:o,regexp:o,email:o,url:o,hex:o},string:{len:"${label}须为${len}个字符",min:"${label}最少${min}个字符",max:"${label}最多${max}个字符",range:"${label}须在${min}-${max}字符之间"},number:{len:"${label}必须等于${len}",min:"${label}最小值为${min}",max:"${label}最大值为${max}",range:"${label}须在${min}-${max}之间"},array:{len:"须为${len}个${label}",min:"最少${min}个${label}",max:"最多${max}个${label}",range:"${label}数量须在${min}-${max}之间"},pattern:{mismatch:"${label}与模式不匹配${pattern}"}}},QRCode:{expired:"二维码过期",refresh:"点击刷新",scanned:"已扫描"},ColorPicker:{presetEmpty:"暂无",transparent:"无色",singleColor:"单色",gradientColor:"渐变色"}};t.Z=c},53523:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]}},67188:function(e,t,n){"use strict";n.d(t,{AntdProvider:function(){return m}});var l=n(72835),r=n(60662),a=n(27473),s=n(60635);function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e}).apply(this,arguments)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,l=Array(t);n<t;n++)l[n]=e[n];return l}var c=function(e){var t,n=(function(e){if(Array.isArray(e))return e}(t=(0,s.useState)(function(){return(0,r.Df)()}))||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var l,r,a,s,i=[],o=!0,c=!1;try{for(a=(n=n.call(e)).next;!(o=(l=a.call(n)).done)&&(i.push(l.value),1!==i.length);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return i}}(t,1)||function(e,t){if(e){if("string"==typeof e)return o(e,1);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,1)}}(t,1)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return(0,a.useServerInsertedHTML)(function(){var e=(0,r.EN)(n,{plain:!0,once:!0});return e.includes('.data-ant-cssinjs-cache-path{content:"";}')?null:s.createElement("style",{id:"antd-cssinjs","data-rc-order":"prepend","data-rc-priority":"-1000",dangerouslySetInnerHTML:{__html:e}})}),s.createElement(r.V9,i({},e,{cache:n}))},u=n(12502),d=n(26499);function m(e){let{children:t}=e;return(0,l.jsx)(c,{children:(0,l.jsx)(u.ZP,{locale:d.Z,children:t})})}},15214:function(e,t,n){"use strict";n.d(t,{AuthGate:function(){return i}});var l=n(72835),r=n(60635),a=n(65777),s=n(69625);function i(e){let{children:t}=e,{authStatus:n,refreshing:r,loadError:i,refresh:u}=(0,a.nu)();return i&&"loading"===n?(0,l.jsxs)(o,{children:[(0,l.jsxs)("div",{className:"text-sm text-red-500",children:[i,"(本地服务未启动?)"]}),(0,l.jsx)("button",{onClick:()=>void u(),className:"mt-4 rounded-lg bg-blue-600 px-4 py-2 text-sm text-white hover:bg-blue-700",children:"重试"})]}):"loading"===n?(0,l.jsxs)(o,{children:[(0,l.jsx)("span",{className:"hm-spinner","aria-label":"加载中"}),(0,l.jsx)("div",{className:"mt-4 text-sm text-gray-400",children:"正在加载,请稍候…"})]}):"out"===n?(0,l.jsx)("div",{className:"flex h-screen w-screen flex-col items-center justify-center bg-gray-50",children:(0,l.jsxs)("div",{className:"w-80 rounded-2xl border border-gray-200 bg-white p-8 text-center shadow-sm",children:[(0,l.jsx)("div",{className:"mb-2 text-3xl",children:"\uD83E\uDD1D"}),(0,l.jsx)("div",{className:"mb-1 text-lg font-semibold text-gray-900",children:"HunterMate"}),(0,l.jsx)("div",{className:"mb-4 text-xs text-gray-400",children:"登录后,你的数据在任何设备同步"}),i&&(0,l.jsx)("div",{className:"mb-3 text-xs text-red-500",children:i}),r&&(0,l.jsxs)("div",{className:"mb-3 flex items-center justify-center gap-2 rounded-lg bg-blue-50 py-2 text-sm text-blue-600",children:[(0,l.jsx)("span",{className:"hm-spinner hm-spinner-sm","aria-label":"加载中"}),"登录中,正在加载你的数据…"]}),(0,l.jsx)(s.U0,{onDone:()=>{u()}})]})}):(0,l.jsxs)(l.Fragment,{children:[r&&(0,l.jsx)(c,{}),t]})}function o(e){let{children:t}=e;return(0,l.jsx)("div",{className:"flex h-screen w-screen flex-col items-center justify-center bg-gray-50",children:t})}function c(){let[e,t]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let e=setTimeout(()=>t(!0),250);return()=>clearTimeout(e)},[]),e)?(0,l.jsx)("div",{className:"hm-top-bar","aria-hidden":!0}):null}},9424:function(e,t,n){"use strict";n.d(t,{SystemSidebar:function(){return y}});var l=n(72835),r=n(55589),a=n(27473),s=n(60635),i=n(65777),o=n(82182);function c(){let e=(0,s.useSyncExternalStore)(o.mn,o.nk,()=>null),{session:t,sync:n,refresh:r}=(0,i.nu)(),[a,c]=(0,s.useState)(""),[u,d]=(0,s.useState)(""),[m,x]=(0,s.useState)("email"),[f,h]=(0,s.useState)(!1),[y,b]=(0,s.useState)(null),[g,p]=(0,s.useState)(!1),[v,j]=(0,s.useState)(0),w=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(e){var n;x("email"),c(null!==(n=null==t?void 0:t.email)&&void 0!==n?n:""),d(""),b(null),p(!1),j(0)}w.current&&clearInterval(w.current)},[null==e?void 0:e.message]);let N=(0,s.useRef)(!1);if((0,s.useEffect)(()=>{var e;if(!(null==n?void 0:n.authFailed)){N.current=!1;return}!N.current&&((0,o.nk)()||(N.current=!0,(0,o.jr)({message:"登录态已失效,需要登录才可以继续使用",oldUserId:null!==(e=null==t?void 0:t.hmUserId)&&void 0!==e?e:null,retry:async()=>(await r(),!0)})))},[null==n?void 0:n.authFailed,null==t?void 0:t.hmUserId,r]),(0,s.useEffect)(()=>()=>{w.current&&clearInterval(w.current)},[]),!e)return null;let S=()=>{j(60),w.current&&clearInterval(w.current),w.current=setInterval(()=>{j(e=>(e<=1&&w.current&&clearInterval(w.current),Math.max(0,e-1)))},1e3)},C=async()=>{if(!a.includes("@")){b("请输入有效邮箱");return}h(!0),b(null);try{let e=await fetch("".concat((0,i.tQ)(),"/auth/email/send-code"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:a})});if(!e.ok){let t=await e.json().catch(()=>null);b((null==t?void 0:t.message)||"发送失败(HTTP ".concat(e.status,")"));return}x("code"),S()}finally{h(!1)}},k=async()=>{if(!/^\d{4,8}$/.test(u)){b("请输入验证码(4-8 位数字)");return}h(!0),b(null);try{var t;let n=await fetch("".concat((0,i.tQ)(),"/auth/email/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:a,code:u})}),l=await n.json().catch(()=>null);if(!n.ok||!(null==l?void 0:l.access_token)){b((null==l?void 0:l.message)||"验证失败(HTTP ".concat(n.status,")"));return}let s=(0,o.H7)(l.access_token),c=null!==(t=e.oldUserId)&&void 0!==t?t:null;if(null!=c&&null!=s&&c!==s){window.location.reload();return}p(!0),(0,o.qd)(),await r(),await e.retry()||p(!1)}finally{h(!1)}};return(0,l.jsx)("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/40",children:(0,l.jsxs)("div",{className:"w-80 rounded-xl bg-white p-5 shadow-xl",children:[(0,l.jsx)("h3",{className:"text-base font-semibold text-gray-900",children:"登录已过期"}),(0,l.jsxs)("p",{className:"mt-1 text-xs text-gray-500",children:[e.message,"。重新登录后将自动继续刚才的操作;若登录其他账号,页面将重新加载。"]}),g?(0,l.jsx)("div",{className:"mt-4 rounded bg-blue-50 p-3 text-sm text-blue-700",children:"正在继续刚才的操作…"}):(0,l.jsx)(l.Fragment,{children:"email"===m?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{type:"email",autoFocus:!0,value:a,onChange:e=>c(e.target.value),placeholder:"you@example.com",className:"mb-3 mt-3 w-full rounded-md border border-gray-300 px-3 py-2 text-sm"}),(0,l.jsx)("button",{onClick:C,disabled:f,className:"w-full rounded-lg bg-blue-600 py-2 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:f?"发送中…":"发送验证码"})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"mb-2 mt-3 text-xs text-gray-500",children:["验证码已发送至 ",a,",请查收邮件后输入"]}),(0,l.jsx)("input",{type:"text",inputMode:"numeric",autoFocus:!0,value:u,onChange:e=>d(e.target.value),placeholder:"6 位验证码",className:"mb-3 w-full rounded-md border border-gray-300 px-3 py-2 text-sm tracking-widest"}),(0,l.jsx)("button",{onClick:k,disabled:f,className:"w-full rounded-lg bg-blue-600 py-2 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:f?"验证中…":"登录并继续"}),(0,l.jsx)("button",{type:"button",onClick:C,disabled:f||v>0,className:"mt-2 w-full rounded-lg border border-blue-600 py-1.5 text-sm text-blue-600 disabled:border-gray-300 disabled:text-gray-400",children:v>0?"".concat(v,"s 后重发"):"重发验证码"}),(0,l.jsx)("button",{onClick:()=>{x("email"),b(null)},className:"mt-1 w-full py-1 text-xs text-gray-400 hover:text-gray-600",children:"返回修改邮箱"})]})}),y&&(0,l.jsx)("div",{className:"mt-2 text-xs text-red-500",children:y}),!g&&(0,l.jsx)("button",{onClick:o.qd,className:"mt-2 w-full py-1 text-xs text-gray-400 hover:text-gray-600",children:"取消(放弃本次操作)"})]})})}var u=n(69625),d=n(88801);let m=[{key:"delivery",label:"交付",icon:"\uD83C\uDFAF"},{key:"bd",label:"BD",icon:"\uD83E\uDDED"}];function x(){let e=(0,d.mJ)();return(0,l.jsx)("div",{className:"mx-2 mb-2 rounded-lg bg-gray-100 p-1",title:"角色视角:列表与详情按视角展示内容,记住上次选择",children:(0,l.jsx)("div",{className:"grid grid-cols-2 gap-1",children:m.map(t=>{let n=e===t.key;return(0,l.jsxs)("button",{type:"button",onClick:()=>(0,d.hm)(t.key),className:"rounded-md px-2 py-1.5 text-xs font-medium transition ".concat(n?"bg-white shadow-sm":"text-gray-500 hover:text-gray-700"),style:n?{color:"var(--brand-strong)"}:void 0,children:[t.icon," ",t.label]},t.key)})})})}let f=null,h=[{href:"/",label:"仪表盘",icon:"\uD83D\uDCCA"},{href:"/talents",label:"人才",icon:"\uD83D\uDC64"},{href:"/jobs",label:"职位",icon:"\uD83D\uDCBC"},{href:"/companies",label:"公司",icon:"\uD83C\uDFE2"},{href:"/parselog",label:"解析日志",icon:"\uD83D\uDCCB"},{href:"/recordings",label:"录制",icon:"\uD83D\uDD34"},{href:"/resource-usage",label:"资源占用",icon:"\uD83D\uDCBD"},{href:"/team/insights",label:"团队统计",icon:"\uD83D\uDCC8"}];function y(){var e,t,n,o;let m=(0,a.usePathname)()||"/",{sync:y,utoken:b}=(0,i.nu)();(0,s.useEffect)(()=>(0,d.oU)(),[]);let g=(0,i.cp)(y),p=(0,i.Cd)(y,g),v=null!==(n=null===(e=(null!==(t=null==y?void 0:y.pendingCounts)&&void 0!==t?t:[]).find(e=>e.tenantId===g))||void 0===e?void 0:e.count)&&void 0!==n?n:0,[j,w]=(0,s.useState)(null!==(o=null==f?void 0:f.isAdmin)&&void 0!==o&&o);return(0,s.useEffect)(()=>{if(!b){w(!1);return}if((null==f?void 0:f.utoken)===b){w(f.isAdmin);return}let e=!1;return(async()=>{try{let t=await fetch("/admin/entities?pageSize=1&hmUserId=1",{headers:{Authorization:"UTOKEN ".concat(b)}}),n=403!==t.status&&401!==t.status;f={utoken:b,isAdmin:n},e||w(n)}catch(t){e||w(!1)}})(),()=>{e=!0}},[b]),(0,l.jsxs)("aside",{className:"flex h-screen w-56 flex-col border-r border-gray-200 bg-white",style:{borderTopColor:"var(--brand)"},children:[(0,l.jsxs)("div",{className:"flex items-center gap-2 border-b border-gray-200 px-4 py-3",style:{boxShadow:"inset 3px 0 0 var(--brand)"},children:[(0,l.jsx)("span",{className:"text-xl",children:"\uD83E\uDD1D"}),(0,l.jsx)("span",{className:"font-semibold text-gray-900",children:"HunterMate"})]}),(0,l.jsxs)("nav",{className:"flex-1 overflow-auto py-3",children:[h.map(e=>{let t=m===e.href||m.startsWith("".concat(e.href,"/"));return(0,l.jsxs)(r.default,{href:e.href,className:"mx-2 flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors ".concat(t?"hm-active":"text-gray-600 hover:bg-gray-50 hover:text-gray-900"),children:[(0,l.jsx)("span",{className:"text-base",children:e.icon}),e.label]},e.href)}),null!=g&&("owner"===p||"admin"===p)&&(0,l.jsxs)(r.default,{href:"/company/admin",className:"mx-2 flex items-center justify-between rounded-lg px-3 py-2 text-sm transition-colors ".concat(m.startsWith("/company/admin")?"hm-active":"text-gray-600 hover:bg-gray-50 hover:text-gray-900"),children:[(0,l.jsxs)("span",{className:"flex items-center gap-3",children:[(0,l.jsx)("span",{className:"text-base",children:"⚙️"}),"企业管理"]}),v>0&&(0,l.jsx)("span",{className:"rounded-full bg-red-500 px-1.5 text-[10px] leading-4 text-white",children:v>99?"99+":v})]}),j&&(0,l.jsxs)(r.default,{href:"/admin/data",className:"mx-2 flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors ".concat(m.startsWith("/admin")?"hm-active":"text-gray-600 hover:bg-gray-50 hover:text-gray-900"),children:[(0,l.jsx)("span",{className:"text-base",children:"\uD83E\uDDF9"}),"数据管理"]})]}),(0,l.jsx)(x,{}),(0,l.jsx)(u.st,{}),(0,l.jsx)(c,{})]})}},69625:function(e,t,n){"use strict";n.d(t,{U0:function(){return h},st:function(){return i}});var l=n(72835),r=n(60635),a=n(82182),s=n(65777);function i(){var e,t,n;let{session:i,sync:u,utoken:d,loadError:m,refresh:x}=(0,s.nu)(),[f,h]=(0,r.useState)(!1),[b,g]=(0,r.useState)(!1),[p,v]=(0,r.useState)(!1),[j,w]=(0,r.useState)(!1),N=(null==i?void 0:i.loggedIn)||(null==u?void 0:u.loggedIn),S=(0,s.aG)(u),C=(0,s.cp)(u),k=null==C?null:null!==(t=null===(e=S.find(e=>e.tenantId===C))||void 0===e?void 0:e.name)&&void 0!==t?t:null,T=async e=>{w(!0);try{var t,n,l,r;let o=null!==(l=null==u?void 0:null===(n=u.memberships)||void 0===n?void 0:null===(t=n.find(e=>e.isPersonal))||void 0===t?void 0:t.tenantId)&&void 0!==l?l:null,c=new Headers({"Content-Type":"application/json"});d&&c.set("Authorization","UTOKEN ".concat(d));let m=await fetch("".concat((0,s.tQ)(),"/datasync/active-tenant"),{method:"POST",headers:c,body:JSON.stringify({id:null!=e?e:o})});if(401===m.status){(0,a.jr)({message:"登录已过期,请重新登录",oldUserId:null!==(r=null==i?void 0:i.hmUserId)&&void 0!==r?r:null,retry:async()=>{let t=new Headers({"Content-Type":"application/json"}),n=(0,s.Xc)();return n&&t.set("Authorization","UTOKEN ".concat(n)),!!(await fetch("".concat((0,s.tQ)(),"/datasync/active-tenant"),{method:"POST",headers:t,body:JSON.stringify({id:e})})).ok&&(await x(),!0)}});return}await x()}finally{w(!1)}},I=async()=>{let e=new Headers({"Content-Type":"application/json"});d&&e.set("Authorization","UTOKEN ".concat(d)),await fetch("".concat((0,s.tQ)(),"/datasync/logout"),{method:"POST",headers:e}).catch(()=>null),await x()},E=null===u?{text:"同步状态加载中…",cls:"bg-gray-100 text-gray-400"}:u.enabled?u.authFailed?{text:"登录态失效",cls:"bg-red-100 text-red-600"}:u.remoteError?{text:"云端不可达",cls:"bg-amber-100 text-amber-600"}:{text:"同步正常",cls:"bg-green-100 text-green-600"}:{text:"同步未启用",cls:"bg-gray-100 text-gray-500"};return(0,l.jsxs)("div",{className:"relative border-t border-gray-200 px-3 py-3",children:[m?(0,l.jsxs)("div",{className:"text-xs text-red-500",children:[m,"(本地服务未启动?)"]}):N?(0,l.jsxs)("div",{className:"space-y-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("div",{className:"truncate text-sm font-medium text-gray-900",children:(null==i?void 0:i.email)||"已登录"}),(0,l.jsx)("span",{className:"inline-block rounded-full px-2 py-0.5 text-xs ".concat(E.cls),children:E.text})]}),(0,l.jsx)("button",{onClick:I,title:"退出登录",className:"shrink-0 rounded-md px-2 py-1 text-xs text-gray-400 hover:bg-gray-100 hover:text-gray-600",children:"退出"})]}),(0,l.jsxs)("div",{children:[(0,l.jsxs)("button",{onClick:()=>g(e=>!e),disabled:j,className:"flex w-full items-center justify-between rounded-md border border-gray-200 bg-white px-2 py-1.5 text-sm text-gray-700 hover:border-gray-300 disabled:opacity-50",children:[(0,l.jsx)("span",{className:"truncate",children:null==C?"个人使用(不归属公司)":null!=k?k:"未知公司"}),(0,l.jsx)("span",{className:"text-xs text-gray-400",children:j?"切换中…":"▾"})]}),(0,l.jsx)("div",{className:"mt-1 truncate whitespace-nowrap text-xs text-gray-400",children:"当前归属公司;公司内数据互通"})]})]}):(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:"text-sm text-gray-500",children:"未登录"}),(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"登录后可跨设备同步数据"})]}),(0,l.jsx)("button",{onClick:()=>h(!0),className:"rounded-lg bg-blue-600 px-3 py-1.5 text-sm text-white hover:bg-blue-700",children:"登录"})]}),b&&N&&(0,l.jsx)(o,{sync:u,companies:S,activeTenantId:C,onPick:async e=>{g(!1),await T(e)},onCreateJoin:()=>{g(!1),v(!0)},onClose:()=>g(!1)}),p&&N&&(0,l.jsx)(c,{utoken:d,oldUserId:null!==(n=null==i?void 0:i.hmUserId)&&void 0!==n?n:null,onDone:async e=>{v(!1),null!=e&&await T(e),await x()},onClose:()=>v(!1)}),f&&(0,l.jsx)(y,{onClose:()=>h(!1),onDone:()=>{h(!1),x()}})]})}function o(e){let{sync:t,companies:n,activeTenantId:a,onPick:s,onCreateJoin:i,onClose:o}=e,c=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=e=>{c.current&&!c.current.contains(e.target)&&o()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[o]),(0,l.jsxs)("div",{ref:c,className:"absolute bottom-full left-2 right-2 z-40 mb-1 overflow-hidden rounded-xl border border-gray-200 bg-white shadow-xl",children:[(0,l.jsx)("div",{className:"border-b border-gray-100 px-3 py-2 text-xs font-medium text-gray-400",children:"切换公司"}),(0,l.jsxs)("div",{className:"max-h-64 overflow-auto py-1",children:[(0,l.jsxs)("button",{onClick:()=>s(null),className:"flex w-full items-center justify-between px-3 py-2 text-left text-sm hover:bg-gray-50",children:[(0,l.jsx)("span",{className:"text-gray-700",children:"个人使用(不归属公司)"}),null==a&&(0,l.jsx)("span",{className:"text-blue-600",children:"✓"})]}),n.map(e=>{var t;return(0,l.jsxs)("button",{onClick:()=>s(e.tenantId),className:"flex w-full items-center justify-between gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50",children:[(0,l.jsxs)("span",{className:"flex min-w-0 items-center gap-1.5",children:[(0,l.jsx)("span",{className:"truncate text-gray-700",children:e.name}),"owner"===(t=e.role)?(0,l.jsx)("span",{className:"text-[10px] text-amber-600",children:"归属者"}):"admin"===t?(0,l.jsx)("span",{className:"text-[10px] text-blue-600",children:"管理员"}):null]}),a===e.tenantId&&(0,l.jsx)("span",{className:"shrink-0 text-blue-600",children:"✓"})]},e.tenantId)}),0===n.length&&(0,l.jsx)("div",{className:"px-3 py-2 text-xs text-gray-400",children:"尚未加入任何公司"})]}),(0,l.jsx)("button",{onClick:i,className:"w-full border-t border-gray-100 px-3 py-2 text-left text-sm text-blue-600 hover:bg-blue-50",children:"+ 创建或加入公司"})]})}function c(e){let{utoken:t,oldUserId:n,onDone:i,onClose:o}=e,[c,u]=(0,r.useState)(""),[d,m]=(0,r.useState)(!1),[x,f]=(0,r.useState)([]),[h,y]=(0,r.useState)(!1),[b,g]=(0,r.useState)(null),[p,v]=(0,r.useState)(null),[j,w]=(0,r.useState)(null),N=(0,r.useCallback)(async(e,n)=>{let l=new Headers(null==n?void 0:n.headers);return l.set("Content-Type","application/json"),t&&l.set("Authorization","UTOKEN ".concat(t)),fetch("".concat((0,s.tQ)()).concat(e),{...n,headers:l})},[t]);(0,r.useEffect)(()=>{let e=c.trim();if(!e){f([]),m(!1);return}m(!0);let t=setTimeout(async()=>{var t;let n=await N("/company/search?q=".concat(encodeURIComponent(e)));if(!n.ok){f([]),m(!1);return}f(null!==(t=(await n.json()).items)&&void 0!==t?t:[]),m(!1)},300);return()=>clearTimeout(t)},[c,N]);let S=(e,t)=>{(null==t?void 0:t.already)?w("已申请过「".concat(e.name,"」,等待管理员审批")):w("已申请加入「".concat(e.name,"」,管理员通过后即可数据互通")),f(t=>t.map(t=>t.id===e.id?{...t,myApplication:"pending"}:t))},C=async()=>{let e=c.trim();if(e){y(!0),v(null);try{var l;let r=await N("/company",{method:"POST",body:JSON.stringify({name:e})}),o=await r.json().catch(()=>null);if(!r.ok){if(401===r.status){v("登录已过期,请在弹窗中重新登录;登录后自动继续创建"),(0,a.jr)({message:"登录已过期,请重新登录",oldUserId:null!=n?n:null,retry:async()=>{var n,l;let r=new Headers({"Content-Type":"application/json"}),a=null!==(n=(0,s.Xc)())&&void 0!==n?n:t;a&&r.set("Authorization","UTOKEN ".concat(a));let o=await fetch("".concat((0,s.tQ)(),"/company"),{method:"POST",headers:r,body:JSON.stringify({name:e})}),c=await o.json().catch(()=>null);return o.ok?(i(null!==(l=null==c?void 0:c.id)&&void 0!==l?l:null),!0):(v((null==c?void 0:c.message)||"创建失败(HTTP ".concat(o.status,")")),!1)}});return}v((null==o?void 0:o.message)||"创建失败(HTTP ".concat(r.status,")"));return}i(null!==(l=null==o?void 0:o.id)&&void 0!==l?l:null)}finally{y(!1)}}},k=async e=>{g(e.id),v(null),w(null);try{let l=await N("/company/".concat(e.id,"/apply"),{method:"POST",body:JSON.stringify({})}),r=await l.json().catch(()=>null);if(!l.ok){if(401===l.status){v("登录已过期,请在弹窗中重新登录;登录后自动继续申请"),(0,a.jr)({message:"登录已过期,请重新登录",oldUserId:null!=n?n:null,retry:async()=>{var n;let l=new Headers({"Content-Type":"application/json"}),r=null!==(n=(0,s.Xc)())&&void 0!==n?n:t;r&&l.set("Authorization","UTOKEN ".concat(r));let a=await fetch("".concat((0,s.tQ)(),"/company/").concat(e.id,"/apply"),{method:"POST",headers:l,body:JSON.stringify({})}),i=await a.json().catch(()=>null);return a.ok?(S(e,i),!0):(v((null==i?void 0:i.message)||"申请失败(HTTP ".concat(a.status,")")),!1)}});return}v((null==r?void 0:r.message)||"申请失败(HTTP ".concat(l.status,")"));return}S(e,r)}finally{g(null)}},T=e=>"owner"===e.myRole?{label:"归属者",disabled:!0}:"admin"===e.myRole||"member"===e.myRole?{label:"已加入",disabled:!0}:"pending"===e.myApplication?{label:"待审批",disabled:!0}:{label:"申请加入",disabled:!1};return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",onClick:o,children:(0,l.jsxs)("div",{className:"w-96 rounded-xl bg-white p-5 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,l.jsx)("h3",{className:"mb-3 text-base font-semibold text-gray-900",children:"创建或加入公司"}),(0,l.jsx)("input",{autoFocus:!0,value:c,onChange:e=>u(e.target.value),placeholder:"输入公司名称,检索是否已存在",className:"mb-2 w-full rounded-md border border-gray-300 px-3 py-2 text-sm"}),(0,l.jsx)("div",{className:"mb-3 max-h-56 min-h-16 overflow-auto rounded-md border border-gray-100",children:""===c.trim()?(0,l.jsx)("div",{className:"px-3 py-4 text-center text-xs text-gray-400",children:"输入关键词可检索已存在的公司并申请加入"}):d?(0,l.jsx)("div",{className:"px-3 py-4 text-center text-xs text-gray-400",children:"检索中…"}):0===x.length?(0,l.jsxs)("div",{className:"px-3 py-4 text-center text-xs text-gray-400",children:["没有匹配「",c.trim(),"」的公司,可直接创建"]}):x.map(e=>{let t=T(e);return(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-gray-50 px-3 py-2 last:border-0",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("div",{className:"truncate text-sm text-gray-800",children:e.name}),(0,l.jsxs)("div",{className:"text-xs text-gray-400",children:[e.memberCount," 名成员"]})]}),(0,l.jsx)("button",{onClick:()=>!t.disabled&&k(e),disabled:t.disabled||b===e.id,className:"shrink-0 rounded-md px-2.5 py-1 text-xs ".concat(t.disabled?"bg-gray-100 text-gray-400":"bg-blue-600 text-white hover:bg-blue-700 disabled:opacity-50"),children:b===e.id?"申请中…":t.label})]},e.id)})}),(0,l.jsx)("button",{onClick:C,disabled:h||""===c.trim(),className:"w-full rounded-lg bg-blue-600 py-2 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:h?"创建中…":"创建公司「".concat(c.trim()||"…","」")}),j&&(0,l.jsx)("div",{className:"mt-2 text-xs text-green-600",children:j}),p&&(0,l.jsx)("div",{className:"mt-2 text-xs text-red-500",children:p}),(0,l.jsx)("button",{onClick:o,className:"mt-2 w-full py-1 text-xs text-gray-400 hover:text-gray-600",children:"关闭"})]})})}let u="hm-login-draft",d="hm-login-resend-at",m="hm-last-email";function x(){let e={email:"",step:"email",code:""};try{let t=window.sessionStorage.getItem(u);if(!t)return e;let n=JSON.parse(t);return{email:"string"==typeof n.email?n.email:"",step:"code"===n.step?"code":"email",code:"string"==typeof n.code?n.code:""}}catch(t){return e}}function f(){try{var e;let t=Number(null!==(e=window.sessionStorage.getItem(d))&&void 0!==e?e:0);return Math.max(0,Math.ceil((t-Date.now())/1e3))}catch(e){return 0}}function h(e){let{onDone:t}=e,[n,a]=(0,r.useState)(x),[i,o]=(0,r.useState)(!1),[c,h]=(0,r.useState)(f),[y,b]=(0,r.useState)(null),[g,p]=(0,r.useState)(null),v=(0,r.useRef)(null),{email:j,step:w,code:N}=n;(0,r.useEffect)(()=>{if(!j){let e=function(){try{var e;return null!==(e=window.localStorage.getItem(m))&&void 0!==e?e:""}catch(e){return""}}();e&&S({email:e})}},[]),(0,r.useEffect)(()=>()=>{v.current&&clearInterval(v.current)},[]);let S=e=>{a(t=>{let n={...t,...e};try{window.sessionStorage.setItem(u,JSON.stringify(n))}catch(e){}return n})},C=e=>{try{window.localStorage.setItem(m,e)}catch(e){}},k=()=>{try{window.sessionStorage.removeItem(u),window.sessionStorage.removeItem(d)}catch(e){}},T=()=>{try{window.sessionStorage.setItem(d,String(Date.now()+6e4))}catch(e){}h(60),v.current&&clearInterval(v.current),v.current=setInterval(()=>{h(e=>(e<=1&&v.current&&clearInterval(v.current),Math.max(0,e-1)))},1e3)},I=/^[^@\s]+@[^@\s]+\.[^@\s]+$/,E=async()=>{let e=j.trim().toLowerCase();if(!I.test(e)){p("请输入有效邮箱");return}o(!0),p(null),b(null);let t=await fetch("".concat((0,s.tQ)(),"/auth/email/send-code"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})});if(o(!1),!t.ok){let e=await t.json().catch(()=>null);p((null==e?void 0:e.message)||"发送失败(HTTP ".concat(t.status,")"));return}C(e),S({email:e,step:"code"}),T(),b("验证码已发送,请查收邮件")},D=async()=>{if(!/^\d{6}$/.test(N.trim())){p("请输入 6 位数字验证码");return}o(!0),p(null);let e=await fetch("".concat((0,s.tQ)(),"/auth/email/verify"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:j.trim().toLowerCase(),code:N.trim()})});if(o(!1),!e.ok){let t=await e.json().catch(()=>null);p((null==t?void 0:t.message)||"验证失败(HTTP ".concat(e.status,")"));return}C(j.trim().toLowerCase()),k(),t()};return(0,l.jsxs)("div",{children:["email"===w?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{type:"email",autoFocus:!0,value:j,onFocus:e=>e.target.select(),onChange:e=>S({email:e.target.value}),onBlur:e=>S({email:e.target.value.trim().toLowerCase()}),placeholder:"you@example.com",className:"mb-3 w-full rounded-md border border-gray-300 px-3 py-2 text-sm"}),(0,l.jsx)("button",{onClick:E,disabled:i,className:"w-full rounded-lg bg-blue-600 py-2 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:i?"发送中…":"发送验证码"})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"mb-2 text-left text-xs text-gray-500",children:["验证码已发送至 ",j,",请查收邮件"]}),(0,l.jsx)("input",{type:"text",inputMode:"numeric",autoFocus:!0,maxLength:6,value:N,onChange:e=>S({code:e.target.value}),placeholder:"6 位验证码",className:"mb-3 w-full rounded-md border border-gray-300 px-3 py-2 text-sm tracking-widest"}),(0,l.jsx)("button",{onClick:D,disabled:i,className:"w-full rounded-lg bg-blue-600 py-2 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:i?"登录中…":"登录"}),(0,l.jsxs)("div",{className:"mt-2 flex items-center justify-between text-xs",children:[(0,l.jsx)("button",{onClick:E,disabled:i||c>0,className:"text-gray-400 hover:text-gray-600 disabled:text-gray-300",children:c>0?"重新发送(".concat(c,"s)"):"重新发送"}),(0,l.jsx)("button",{onClick:()=>{S({step:"email",code:""}),p(null)},className:"text-gray-400 hover:text-gray-600",children:"返回修改邮箱"})]})]}),y&&(0,l.jsx)("div",{className:"mt-2 text-xs text-green-600",children:y}),g&&(0,l.jsx)("div",{className:"mt-2 text-xs text-red-500",children:g})]})}function y(e){let{onClose:t,onDone:n}=e;return(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,l.jsxs)("div",{className:"w-80 rounded-xl bg-white p-5 shadow-xl",children:[(0,l.jsx)("h3",{className:"mb-3 text-base font-semibold text-gray-900",children:"邮箱验证码登录"}),(0,l.jsx)(h,{onDone:n}),(0,l.jsx)("button",{onClick:t,className:"mt-2 w-full py-1 text-xs text-gray-400 hover:text-gray-600",children:"关闭"})]})})}},65777:function(e,t,n){"use strict";let l;n.d(t,{Cd:function(){return C},Xc:function(){return T},aG:function(){return N},cp:function(){return S},nu:function(){return w},tQ:function(){return k}});var r=n(60635),a=n(74431),s=n(67002),i=n(60529);let o=null,c=null,u=null,d=new Set;function m(){d.forEach(e=>e())}function x(e){o=o?{...o,refreshing:e}:{...p,refreshing:e},m()}async function f(){try{return await (0,a.aA)("/auth/session")}catch(e){return null}}async function h(e){let t=new Headers,n=(0,s.Xc)();n&&t.set("Authorization","UTOKEN ".concat(n));try{return await (0,a.aA)(e,{headers:t})}catch(e){return null}}async function y(){x(!0);try{var e;let[t,n]=await Promise.all([f(),h("/datasync/state")]),r=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,a=null!=n?n:null;!a&&t&&r&&r!==(0,s.Xc)()?((0,s.GK)(r),a=await h("/datasync/state")):(0,s.GK)(r),function(e){if(void 0===l){l=e;return}if(e!==l){l=e;try{window.localStorage.removeItem("hm-view-mode")}catch(e){}}}((null==t?void 0:t.loggedIn)&&null!==(e=t.hmUserId)&&void 0!==e?e:null);let i=!!((null==t?void 0:t.loggedIn)||(null==a?void 0:a.loggedIn));if(!t&&!a){o=o?{...o,loadError:"本地服务无响应"}:{...p,loadError:"本地服务无响应"},m();return}o={session:null!=t?t:{loggedIn:!1},sync:a,utoken:(0,s.Xc)(),loadError:null,refreshing:!1,authStatus:i?"in":"out",refresh:b},m()}finally{(null==o?void 0:o.refreshing)&&x(!1)}}function b(){return c||(c=y().finally(()=>{c=null}))}function g(e){return d.add(e),1===d.size&&(b(),u=setInterval(()=>void b(),6e4)),()=>{d.delete(e),0===d.size&&u&&(clearInterval(u),u=null)}}let p={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:b};function v(){return null!=o?o:p}function j(){return v()}function w(){return(0,r.useSyncExternalStore)(g,v,j)}function N(e){var t;return(null!==(t=null==e?void 0:e.memberships)&&void 0!==t?t:[]).filter(e=>!e.isPersonal&&!e.leftAt)}function S(e){var t,n;let l=null!==(t=null==e?void 0:e.activeTenantId)&&void 0!==t?t:null;if(null==l)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===l&&!e.leftAt);return!r||r.isPersonal?null:l}function C(e,t){var n,l;if(!t)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===t&&!e.leftAt&&!e.isPersonal);return null!==(l=null==r?void 0:r.role)&&void 0!==l?l:null}function k(){return i.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function T(){return(0,s.Xc)()}},82182:function(e,t,n){"use strict";n.d(t,{H7:function(){return u},jr:function(){return s},mn:function(){return c},nk:function(){return o},qd:function(){return i}});let l=null,r=new Set;function a(){r.forEach(e=>e())}function s(e){l=e,a()}function i(){l&&(l=null,a())}function o(){return l}function c(e){return r.add(e),()=>r.delete(e)}function u(e){if(!e)return null;try{var t,n,l,r,a;let s=e.split(".")[1],i=JSON.parse(decodeURIComponent(escape(atob(s.replace(/-/g,"+").replace(/_/g,"/"))))),o=null!==(a=null!==(r=null!==(l=null==i?void 0:null===(t=i.data)||void 0===t?void 0:t._id)&&void 0!==l?l:null==i?void 0:null===(n=i.data)||void 0===n?void 0:n.id)&&void 0!==r?r:null==i?void 0:i.sub)&&void 0!==a?a:null;return"number"==typeof o?o:null}catch(e){return null}}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return a},aA:function(){return o}});var l=n(67002),r=n(60529);function a(){return r.env.HUNTER_MATE_SERVER_URL||""}let s=a();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let n;try{n=await fetch("".concat(s).concat(e),{cache:"no-store",...function(e){let t=(0,l.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return s},Lc:function(){return i},Xc:function(){return a}});let l=null,r=new Set;function a(){return l}function s(e){e!==l&&(l=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}},88801:function(e,t,n){"use strict";n.d(t,{hm:function(){return c},mJ:function(){return d},oU:function(){return u}});var l=n(60635);let r="hm-view-mode",a=new Set;function s(){return"bd"===window.localStorage.getItem(r)?"bd":"delivery"}function i(e){return a.add(e),()=>a.delete(e)}function o(e){"undefined"!=typeof document&&(document.documentElement.dataset.view=e)}function c(e){window.localStorage.setItem(r,e),o(e),a.forEach(e=>e())}function u(){o(s())}function d(e){let t=(0,l.useSyncExternalStore)(i,s,()=>"delivery");return null!=e?e:t}},61115:function(){},50129:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}},function(e){e.O(0,[24,589,187,400,935,744],function(){return e(e.s=86280)}),_N_E=e.O()}]);
@@ -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]="3da81d10-4e17-46c2-8913-e52b1e07ce22",e._sentryDebugIdIdentifier="sentry-dbid-3da81d10-4e17-46c2-8913-e52b1e07ce22")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[370],{71428:function(e,t,s){Promise.resolve().then(s.bind(s,36297))},27473:function(e,t,s){"use strict";var n=s(38321);s.o(n,"useParams")&&s.d(t,{useParams:function(){return n.useParams}}),s.o(n,"usePathname")&&s.d(t,{usePathname:function(){return n.usePathname}}),s.o(n,"useRouter")&&s.d(t,{useRouter:function(){return n.useRouter}}),s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}}),s.o(n,"useServerInsertedHTML")&&s.d(t,{useServerInsertedHTML:function(){return n.useServerInsertedHTML}})},36297:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return T}});var n=s(72835),r=s(60635),l=s(27473),a=s(74431),i=s(37202),o=s(94518),d=s(8448);function c(e){var t,s,r,l,a;let{sessionId:i,eventCount:o,sourceUrl:c,startedAt:u,lastEventAt:x,summary:m}=e,v=[{label:"rrweb",value:null!==(t=null==m?void 0:m.rrwebCount)&&void 0!==t?t:0},{label:"network",value:null!==(s=null==m?void 0:m.networkCount)&&void 0!==s?s:0},{label:"console",value:null!==(r=null==m?void 0:m.consoleCount)&&void 0!==r?r:0},{label:"简历",value:null!==(l=null==m?void 0:m.resumeCount)&&void 0!==l?l:0},{label:"操作",value:null!==(a=null==m?void 0:m.actionCount)&&void 0!==a?a:0}].filter(e=>e.value>0);return(0,n.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"事件数"}),(0,n.jsx)("div",{className:"text-lg font-semibold",children:o})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"来源页面"}),c?(0,n.jsx)("a",{href:c,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:c}):(0,n.jsx)("div",{className:"text-sm text-gray-400",children:"-"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"开始时间"}),(0,n.jsx)("div",{className:"text-sm",children:(0,d.d3)(u)})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"最近事件"}),(0,n.jsx)("div",{className:"text-sm",children:(0,d.d3)(x)})]})]}),v.length>0?(0,n.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-gray-100 pt-3",children:v.map(e=>(0,n.jsxs)("span",{className:"rounded bg-gray-100 px-2 py-1 text-xs text-gray-700",children:[e.label,": ",e.value]},e.label))}):null,(0,n.jsx)("div",{className:"mt-3 border-t border-gray-100 pt-3",children:(0,n.jsx)("div",{className:"font-mono text-xs text-gray-400",children:i})})]})}let u={rrweb:"rrweb",network:"network",console:"console",resume:"简历",action:"操作"},x={rrweb:"bg-purple-100 text-purple-700",network:"bg-blue-100 text-blue-700",console:"bg-yellow-100 text-yellow-700",resume:"bg-green-100 text-green-700",action:"bg-gray-100 text-gray-700"};function m(e){var t,s;let{type:r}=e,l=null!==(t=u[r])&&void 0!==t?t:r,a=null!==(s=x[r])&&void 0!==s?s:"bg-gray-100 text-gray-600";return(0,n.jsx)("span",{className:"inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ".concat(a),children:l})}let v=["rrweb","network","console","resume","action"];function h(e){let{events:t,selectedEventId:s,onSelectEvent:l}=e,[a,i]=(0,r.useState)("all"),o=(0,r.useMemo)(()=>{let e=[...t].sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime());return"all"===a?e:e.filter(e=>e.eventType===a)},[t,a]);return(0,n.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,n.jsx)("button",{type:"button",onClick:()=>i("all"),className:"rounded px-2 py-1 text-xs ".concat("all"===a?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:"全部"}),v.map(e=>(0,n.jsx)("button",{type:"button",onClick:()=>i(e),className:"rounded px-2 py-1 text-xs ".concat(a===e?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:(0,n.jsx)(m,{type:e})},e))]}),(0,n.jsx)("div",{className:"max-h-96 overflow-auto",children:0===o.length?(0,n.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"暂无事件"}):(0,n.jsx)("ul",{className:"space-y-1",children:o.map((e,t)=>{var r;return(0,n.jsxs)("li",{role:l?"button":void 0,tabIndex:l?0:void 0,onClick:()=>null==l?void 0:l(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(null==l||l(e))},className:"flex items-start gap-3 rounded p-2 text-sm ".concat(l?"cursor-pointer hover:bg-gray-50":""," ").concat(s===e.id?"bg-blue-50":""),children:[(0,n.jsx)(m,{type:e.eventType}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("div",{className:"truncate text-gray-900",children:function(e){var t,s,n,r,l,a,i;let{eventType:o,payload:d}=e;switch(o){case"rrweb":return"rrweb ".concat(null!==(t=null==d?void 0:d.type)&&void 0!==t?t:"event");case"network":return"".concat(null!==(s=null==d?void 0:d.method)&&void 0!==s?s:"GET"," ").concat(null!==(n=null==d?void 0:d.url)&&void 0!==n?n:"?");case"console":return"[".concat(null!==(l=null==d?void 0:d.level)&&void 0!==l?l:"log","] ").concat(String(null!==(a=null==d?void 0:null===(r=d.args)||void 0===r?void 0:r[0])&&void 0!==a?a:""));case"resume":return"简历提取事件";case"action":return null!==(i=null==d?void 0:d.action)&&void 0!==i?i:"操作事件";default:return o}}(e)}),(0,n.jsx)("div",{className:"text-xs text-gray-400",children:(0,d.d3)(e.createdAt)})]})]},null!==(r=e.id)&&void 0!==r?r:t)})})})]})}function g(e){let{data:t}=e;return(0,n.jsx)("pre",{className:"max-h-64 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t,null,2)})}function f(e){var t;let{event:s}=e,r=s.payload,l=(null==r?void 0:r.type)===2?"全量快照":(null==r?void 0:r.type)===3?"增量":"类型 ".concat(null!==(t=null==r?void 0:r.type)&&void 0!==t?t:"?");return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{className:"text-sm text-gray-500",children:["rrweb ",l," \xb7 ",s.sourceUrl?(0,n.jsx)("a",{href:s.sourceUrl,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:s.sourceUrl}):"来源未知"]}),(0,n.jsx)("div",{className:"rounded border border-purple-100 bg-purple-50 p-3 text-sm text-purple-700",children:"rrweb-player 完整回放将在后续迭代接入,当前可查看下方原始 JSON。"}),(0,n.jsx)(g,{data:s.payload})]})}function b(e){var t,s,r,l;let{event:a}=e,i=a.payload;return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-xs text-gray-500",children:"Method"}),(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==i?void 0:i.method)&&void 0!==t?t:"?"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-xs text-gray-500",children:"Status"}),(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(s=null==i?void 0:i.status)&&void 0!==s?s:"?"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-xs text-gray-500",children:"MIME"}),(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(r=null==i?void 0:i.mimeType)&&void 0!==r?r:"?"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-xs text-gray-500",children:"Size"}),(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(l=null==i?void 0:i.size)&&void 0!==l?l:"?"})]})]}),(null==i?void 0:i.url)?(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-xs text-gray-500",children:"URL"}),(0,n.jsx)("a",{href:i.url,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:i.url})]}):null,(0,n.jsx)(g,{data:a.payload})]})}function y(e){var t,s,r,l;let{event:a}=e,i=a.payload,o=null!==(r=({error:"text-red-600",warn:"text-yellow-600",info:"text-blue-600",debug:"text-gray-500",log:"text-gray-700"})[null!==(s=null==i?void 0:i.level)&&void 0!==s?s:"log"])&&void 0!==r?r:"text-gray-700";return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{className:"text-sm",children:["Level: ",(0,n.jsx)("span",{className:"font-medium ".concat(o),children:null!==(l=null==i?void 0:i.level)&&void 0!==l?l:"log"})]}),(null==i?void 0:null===(t=i.args)||void 0===t?void 0:t.length)?(0,n.jsx)("div",{className:"space-y-2",children:i.args.map((e,t)=>(0,n.jsx)(g,{data:e},t))}):(0,n.jsx)(g,{data:a.payload})]})}function p(e){var t;let{event:s}=e,r=s.payload;return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==r?void 0:r.title)&&void 0!==t?t:"简历提取事件"}),(null==r?void 0:r.source)?(0,n.jsxs)("div",{className:"text-xs text-gray-500",children:["来源: ",(0,n.jsx)("a",{href:r.source,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:r.source})]}):null,(null==r?void 0:r.fields)?(0,n.jsx)(g,{data:r.fields}):(0,n.jsx)(g,{data:s.payload})]})}function j(e){var t;let{event:s}=e,r=s.payload;return(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==r?void 0:r.action)&&void 0!==t?t:"操作事件"}),(0,n.jsx)(g,{data:s.payload})]})}function N(e){let t,{event:s}=e,[l,a]=(0,r.useState)(!1);switch(s.eventType){case"rrweb":t=(0,n.jsx)(f,{event:s});break;case"network":t=(0,n.jsx)(b,{event:s});break;case"console":t=(0,n.jsx)(y,{event:s});break;case"resume":t=(0,n.jsx)(p,{event:s});break;case"action":t=(0,n.jsx)(j,{event:s});break;default:t=(0,n.jsx)(g,{data:s.payload})}return(0,n.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold",children:"事件详情"}),(0,n.jsx)("button",{type:"button",onClick:()=>a(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:l?"收起原始 JSON":"查看原始 JSON"})]}),t,l?(0,n.jsx)("div",{className:"mt-3",children:(0,n.jsx)(g,{data:s})}):null]})}function w(e){let{sessionId:t}=e,[s,l]=(0,r.useState)("idle"),[i,o]=(0,r.useState)(null),[d,c]=(0,r.useState)("");async function u(){l("loading"),c("");try{let e=await (0,a.aA)("/api/recordings/".concat(encodeURIComponent(t),"/parse"),{method:"POST"});o(e),l("success")}catch(e){l("error"),c(e instanceof Error?e.message:String(e))}}let x=i&&"object"==typeof i&&"entity"in i&&i.entity&&"object"==typeof i.entity&&"id"in i.entity&&"type"in i.entity?"/entity?type=".concat(encodeURIComponent(String(i.entity.type)),"&id=").concat(encodeURIComponent(String(i.entity.id))):null;return(0,n.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold",children:"解析"}),(0,n.jsx)("button",{type:"button",onClick:u,disabled:"loading"===s,className:"rounded bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50",children:"loading"===s?"解析中…":"触发解析"})]}),"success"===s?(0,n.jsxs)("div",{className:"mt-3 rounded border border-green-200 bg-green-50 p-3 text-sm text-green-700",children:[(0,n.jsx)("div",{children:"解析成功 ✅"}),x?(0,n.jsx)("a",{href:x,className:"mt-1 inline-block text-blue-600 hover:underline",children:"查看解析结果 →"}):null]}):null,"error"===s?(0,n.jsxs)("div",{className:"mt-3 rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700",children:[(0,n.jsx)("div",{children:"解析失败"}),d?(0,n.jsx)("div",{className:"mt-1",children:d}):null]}):null]})}function S(e){let{events:t}=e,l=(0,r.useRef)(null),[a,i]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let e;if(!l.current||0===t.length)return;let n=!1;return async function(){let r=await Promise.all([s.e(131),s.e(671)]).then(s.bind(s,15841));await Promise.all([s.e(608),s.e(166)]).then(s.t.bind(s,20166,23)),!n&&l.current&&(e=new(r.default||r)({target:l.current,props:{events:t}}),i(!0))}(),()=>{var t;n=!0,null==e||null===(t=e.$destroy)||void 0===t||t.call(e),l.current&&(l.current.innerHTML="")}},[t]),0===t.length)?(0,n.jsx)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm text-sm text-gray-500",children:"暂无 rrweb 回放事件"}):(0,n.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm",children:[(0,n.jsx)("div",{ref:l,className:"w-full"}),a?null:(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"播放器加载中…"})]})}function k(e){let{data:t}=e,s=(0,l.useSearchParams)().get("eventId"),[a,i]=(0,r.useState)(null),[o,d]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(!s||!t.events.length){i(null);return}let e=Number(s),n=t.events.find(t=>t.id===e);i(null!=n?n:null)},[s,t.events]);let u=t.events.filter(e=>"rrweb"===e.eventType).map(e=>e.payload);return(0,n.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,n.jsx)("header",{className:"mb-6",children:(0,n.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"录制会话"})}),(0,n.jsx)(c,{sessionId:t.sessionId,eventCount:t.eventCount,sourceUrl:t.sourceUrl,startedAt:t.startedAt,lastEventAt:t.lastEventAt,summary:t.summary}),(0,n.jsx)("div",{className:"mt-4",children:(0,n.jsx)(S,{events:u})}),(0,n.jsx)("div",{className:"mt-4",children:(0,n.jsx)(w,{sessionId:t.sessionId})}),(0,n.jsx)("div",{className:"mt-4",children:(0,n.jsx)(h,{events:t.events,selectedEventId:null==a?void 0:a.id,onSelectEvent:i})}),a?(0,n.jsx)("div",{className:"mt-4",children:(0,n.jsx)(N,{event:a})}):null,(0,n.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,n.jsx)("h2",{className:"text-lg font-semibold",children:"原始事件 JSON"}),(0,n.jsx)("button",{type:"button",onClick:()=>d(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:o?"收起":"展开"})]}),o?(0,n.jsx)("pre",{className:"max-h-96 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t.events,null,2)}):(0,n.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",t.events.length," 条事件,点击展开查看原始 JSON"]})]})]})}var I=s(63718);function C(e){let{session:t}=e;return(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"font-mono text-xs text-gray-500",children:t.sessionId}),(0,n.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-gray-900",children:[(0,n.jsxs)("span",{children:[t.eventCount," 事件"]}),"number"==typeof t.tabId?(0,n.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["tab #",t.tabId]}):null]}),t.sourceUrl?(0,n.jsx)("div",{className:"truncate text-xs text-blue-600",children:t.sourceUrl}):null,(0,n.jsx)("div",{className:"text-xs text-gray-400",children:(0,d.d3)(t.lastEventAt)})]})}function E(e){let{sessions:t,selectedId:s,onSelect:r,loading:l}=e,a=t.map(e=>({id:e.sessionId,content:(0,n.jsx)(C,{session:e})}));return(0,n.jsx)(I.L,{items:a,selectedId:s,onSelect:r,loading:l,emptyText:"暂无录制会话"})}function L(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[s,n]=e;n&&t.set(s,n)});let s=t.toString();return s?"?".concat(s):""}function A(){var e,t,s,d;let c=(0,l.useRouter)(),u=(0,l.usePathname)(),x=(0,l.useSearchParams)(),m=x.get("sessionId")||"",v=(0,r.useMemo)(()=>({q:x.get("q")||"",status:"",from:x.get("from")||"",to:x.get("to")||""}),[x]),[h,g]=(0,r.useState)([]),[f,b]=(0,r.useState)(!1),[y,p]=(0,r.useState)(null),[j,N]=(0,r.useState)(!0),[w,S]=(0,r.useState)(!1),[I,C]=(0,r.useState)(!1),A=(0,r.useCallback)(e=>{var t,s;let n=null!==(t=e.filters)&&void 0!==t?t:v,r=L({sessionId:null!==(s=e.sessionId)&&void 0!==s?s:m,q:n.q,from:n.from,to:n.to});c.replace("".concat(u).concat(r))},[v,m,u,c]),T=(0,r.useCallback)(e=>{(null==e?void 0:e.withLoading)&&N(!0);let t=L({q:v.q,from:v.from,to:v.to});(0,a.aA)("/api/recordings?limit=200".concat(t.replace("?","&"))).then(e=>{g(t=>{var s;return function(e,t){let s=new Map(e.map(e=>[e.sessionId,e]));return t.map(e=>{let t=s.get(e.sessionId);return t&&t.eventCount===e.eventCount&&t.lastEventAt===e.lastEventAt&&t.tabId===e.tabId?t:{...e}})}(t,null!==(s=e.sessions)&&void 0!==s?s:[])}),b(!1)}).catch(()=>{b(!0)}).finally(()=>{(null==e?void 0:e.withLoading)&&N(!1)})},[v.q,v.from,v.to]),P=(0,r.useCallback)(e=>{if(!m){p(null),C(!1);return}(null==e?void 0:e.withLoading)&&S(!0),(0,a.aA)("/api/recordings/".concat(encodeURIComponent(m))).then(e=>{p(e),C(!1)}).catch(()=>{p(null),C(!0)}).finally(()=>{(null==e?void 0:e.withLoading)&&S(!1)})},[m]);(0,r.useEffect)(()=>{T({withLoading:!0})},[T]),(0,r.useEffect)(()=>{let e=setInterval(()=>T({withLoading:!1}),1e4);return()=>clearInterval(e)},[T]),(0,r.useEffect)(()=>{P({withLoading:!0})},[P]),(0,r.useEffect)(()=>{let e=setInterval(()=>P({withLoading:!1}),1e4);return()=>clearInterval(e)},[P]);let R=f?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,n.jsx)("button",{type:"button",onClick:()=>T({withLoading:!0}),className:"text-blue-500 hover:underline",children:"重试"})]}):(0,n.jsx)(E,{sessions:h,selectedId:m,onSelect:e=>A({sessionId:e}),loading:j}),U=m?w?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):I?(0,n.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,n.jsx)("button",{type:"button",onClick:()=>P({withLoading:!0}),className:"text-blue-500 hover:underline",children:"重试"})]}):y?(0,n.jsx)(k,{data:{sessionId:y.sessionId,eventCount:y.eventCount,sourceUrl:null!==(d=null===(e=h.find(e=>e.sessionId===m))||void 0===e?void 0:e.sourceUrl)&&void 0!==d?d:null,startedAt:(null===(t=y.events[0])||void 0===t?void 0:t.createdAt)||"",lastEventAt:(null===(s=y.events[y.events.length-1])||void 0===s?void 0:s.createdAt)||"",events:y.events}}):(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该录制会话"}):(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一个录制会话查看详情"});return(0,n.jsx)(o.m,{filterBar:(0,n.jsx)(i.f,{value:v,onChange:e=>A({filters:e})}),listPanel:R,detailPanel:U})}function T(){return(0,n.jsx)(r.Suspense,{fallback:(0,n.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,n.jsx)(A,{})})}},37202:function(e,t,s){"use strict";s.d(t,{f:function(){return l}});var n=s(72835),r=s(60635);function l(e){let{value:t,showStatus:s,statusOptions:l,onChange:a}=e,[i,o]=(0,r.useState)(t);return(0,r.useEffect)(()=>{o(t)},[t.q,t.status,t.from,t.to]),(0,r.useEffect)(()=>{let e=setTimeout(()=>{(i.q!==t.q||i.status!==t.status||i.from!==t.from||i.to!==t.to)&&a(i)},300);return()=>clearTimeout(e)},[i.q,i.status,i.from,i.to]),(0,n.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("div",{className:"relative flex-1",children:[(0,n.jsx)("input",{type:"text",value:i.q,onChange:e=>o(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,n.jsx)("button",{type:"button",onClick:()=>a({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,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,n.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"})})})]}),s?(0,n.jsxs)("select",{value:i.status,onChange:e=>o(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,n.jsx)("option",{value:"",children:"全部状态"}),(l||[]).map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("input",{type:"date",value:i.from,onChange:e=>o(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,n.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,n.jsx)("input",{type:"date",value:i.to,onChange:e=>o(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"})]})]})}},94518:function(e,t,s){"use strict";s.d(t,{m:function(){return r}});var n=s(72835);function r(e){let{filterBar:t,listPanel:s,detailPanel:r}=e;return(0,n.jsxs)("div",{className:"flex h-full",children:[(0,n.jsxs)("div",{className:"flex w-80 flex-col border-r border-gray-200 bg-white",children:[t,s]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto bg-gray-50 p-6",children:r})]})}},63718:function(e,t,s){"use strict";s.d(t,{L:function(){return l}});var n=s(72835),r=s(60635);function l(e){let{items:t,selectedId:s,onSelect:l,loading:a,emptyText:i="暂无数据",onLoadMore:o,loadingMore:d,exhausted:c}=e,u=(0,r.useRef)(null);return(0,r.useEffect)(()=>{if(!o)return;let e=u.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&o()},{root:e.closest(".overflow-auto"),rootMargin:"200px"});return t.observe(e),()=>t.disconnect()},[o]),(0,n.jsxs)("div",{className:"flex-1 overflow-auto",children:[a?(0,n.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:"加载中…"}):0===t.length?(0,n.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:i}):(0,n.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,n.jsx)("li",{role:"button",tabIndex:0,onClick:()=>l(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&l(e.id)},className:"cursor-pointer px-3 py-2 text-sm transition-colors ".concat(s===e.id?"bg-blue-50":"hover:bg-gray-50"),children:e.content},e.id))}),o&&!a&&t.length>0&&(0,n.jsx)("div",{ref:u,className:"p-3 text-center text-xs text-gray-400",children:d?"加载更多…":c?"没有更多了":""})]})}},8448:function(e,t,s){"use strict";function n(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}s.d(t,{d3:function(){return n}})},74431:function(e,t,s){"use strict";s.d(t,{Ox:function(){return l},aA:function(){return o}});var n=s(67002),r=s(60529);function l(){return r.env.HUNTER_MATE_SERVER_URL||""}let a=l();class i extends Error{constructor(e,t,s){super(null!=s?s:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let s;try{s=await fetch("".concat(a).concat(e),{cache:"no-store",...function(e){let t=(0,n.Xc)();if(!t)return e;let s=new Headers(null==e?void 0:e.headers);return s.has("Authorization")||s.set("Authorization","UTOKEN ".concat(t)),{...e,headers:s}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!s.ok)throw new i(s.status,e,"HTTP ".concat(s.status));try{return await s.json()}catch(t){throw new i(s.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,s){"use strict";s.d(t,{GK:function(){return a},Lc:function(){return i},Xc:function(){return l}});let n=null,r=new Set;function l(){return n}function a(e){e!==n&&(n=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=71428)}),_N_E=e.O()}]);
@@ -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]="2fb88101-209d-4d18-97f4-aff29efd5cfd",e._sentryDebugIdIdentifier="sentry-dbid-2fb88101-209d-4d18-97f4-aff29efd5cfd")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[245],{41689:function(e,t,n){Promise.resolve().then(n.bind(n,48517))},48517:function(e,t,n){"use strict";n.d(t,{default:function(){return l}});var s=n(72835),r=n(60635),d=n(74431),o=n(67002);let i={not_found:"分享链接不存在、已失效,或你没有访问权限",expired:"分享链接已过期,请让分享者重新生成",revoked:"分享已被分享者撤销",out_of_scope:"你不在本次分享的范围内,请联系分享者"},a={recommended:"已推荐",pending_invite:"待邀请",invited:"已邀请",replied:"已回复",interview_scheduled:"已约面试",offer:"Offer",onboarding:"已入职",rejected:"已拒绝"};function l(){var e;let[t,n]=(0,r.useState)({kind:"loading"}),[a,l]=(0,r.useState)("");return(0,r.useEffect)(()=>{let e=window.location.pathname.match(/^\/shared\/([^/]+)/);l((null==e?void 0:e[1])?decodeURIComponent(e[1]):"")},[]),(0,r.useEffect)(()=>{if(a)return e(),(0,o.Lc)(()=>void e());async function e(){let e=(0,o.Xc)();if(!e){n({kind:"need-login"});return}let t=await fetch("".concat((0,d.Ox)(),"/shared/").concat(encodeURIComponent(a),"/data"),{headers:{Authorization:"UTOKEN ".concat(e)},cache:"no-store"});if(401===t.status){n({kind:"need-login"});return}let s=await t.json().catch(()=>({}));if(!t.ok){var r,i,l;n({kind:"error",code:null!==(i=null!==(r=null==s?void 0:s.errorCode)&&void 0!==r?r:null==s?void 0:s.code)&&void 0!==i?i:"not_found",message:null!==(l=null==s?void 0:s.message)&&void 0!==l?l:""});return}n({kind:"ok",data:s})}},[a]),(0,s.jsx)("div",{className:"h-full overflow-auto p-6",children:(0,s.jsxs)("div",{className:"mx-auto max-w-3xl",children:[(0,s.jsx)("h1",{className:"mb-1 text-lg font-semibold",children:"同事分享的职位推荐"}),"loading"===t.kind?(0,s.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:"加载中…"}):null,"need-login"===t.kind?(0,s.jsx)("div",{className:"mt-4 rounded border border-amber-200 bg-amber-50 px-4 py-6 text-center text-sm text-amber-800",children:"请先登录本地 hm(左下角登录),登录后本页会自动加载分享内容。"}):null,"error"===t.kind?(0,s.jsxs)("div",{className:"mt-4 rounded border border-red-200 bg-red-50 px-4 py-6 text-center text-sm text-red-700",children:[null!==(e=i[t.code])&&void 0!==e?e:i.not_found,t.message?(0,s.jsx)("div",{className:"mt-1 text-xs text-red-400",children:t.message}):null]}):null,"ok"===t.kind?(0,s.jsx)(c,{data:t.data}):null]})})}function c(e){var t,n,r,d,o,i,l,c,u;let{data:f}=e,x=null!==(i=f.recommendations)&&void 0!==i?i:[];return(0,s.jsxs)("div",{className:"mt-4 space-y-4",children:[(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-base font-medium",children:null!==(c=null===(t=f.jobCase)||void 0===t?void 0:t.title)&&void 0!==c?c:"职位 #".concat(null!==(l=null===(n=f.jobCase)||void 0===n?void 0:n.id)&&void 0!==l?l:"")}),(0,s.jsxs)("div",{className:"mt-0.5 text-xs text-gray-500",children:["分享者:",(null===(r=f.fromUser)||void 0===r?void 0:r.email)||"#".concat(null===(d=f.fromUser)||void 0===d?void 0:d.hmUserId),f.expiresAt?" \xb7 有效期至 ".concat(new Date(f.expiresAt).toLocaleString()):""]})]}),(0,s.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:null!==(u=null===(o=f.jobCase)||void 0===o?void 0:o.status)&&void 0!==u?u:""})]}),f.note?(0,s.jsx)("div",{className:"mt-2 rounded bg-blue-50 px-3 py-2 text-sm text-blue-800",children:f.note}):null]}),(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["共 ",x.length," 位推荐人才(只读快照,实时数据以分享者本地为准)"]}),x.map(e=>{var t,n,r,d,o,i,l,c;return(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{className:"font-medium",children:null!==(l=null!==(i=null===(t=e.snapshot)||void 0===t?void 0:t.name)&&void 0!==i?i:e.portraitName)&&void 0!==l?l:"推荐 #".concat(e.id.slice(0,8))}),(0,s.jsx)("span",{className:"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700",children:null!==(c=a[e.stage])&&void 0!==c?c:e.stage})]}),(null===(n=e.snapshot)||void 0===n?void 0:n.headline)?(0,s.jsx)("div",{className:"mt-1 text-xs text-gray-500",children:e.snapshot.headline}):null,"number"==typeof(null===(d=e.scores)||void 0===d?void 0:null===(r=d.dimensions)||void 0===r?void 0:r.overall)?(0,s.jsxs)("div",{className:"mt-1 text-xs text-gray-500",children:["综合匹配分:",e.scores.dimensions.overall]}):null,(null===(o=e.scores)||void 0===o?void 0:o.aiReason)?(0,s.jsx)("pre",{className:"mt-2 whitespace-pre-wrap rounded bg-gray-50 p-2 text-xs text-gray-600",children:e.scores.aiReason}):null]},e.id)}),x.length?null:(0,s.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"该职位暂无推荐人才"})]})}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return d},aA:function(){return a}});var s=n(67002),r=n(60529);function d(){return r.env.HUNTER_MATE_SERVER_URL||""}let o=d();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function a(e,t){let n;try{n=await fetch("".concat(o).concat(e),{cache:"no-store",...function(e){let t=(0,s.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return o},Lc:function(){return i},Xc:function(){return d}});let s=null,r=new Set;function d(){return s}function o(e){e!==s&&(s=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=41689)}),_N_E=e.O()}]);
@@ -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]="03ba1ed0-5241-4f44-9c7d-bbff2be03ee3",e._sentryDebugIdIdentifier="sentry-dbid-03ba1ed0-5241-4f44-9c7d-bbff2be03ee3")}catch(e){}}(),function(){"use strict";var e,t,n,r,o,u,i,f,c,a,d,l,s={},p={};function b(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}},r=!0;try{s[e].call(n.exports,n,n.exports,b),r=!1}finally{r&&delete p[e]}return n.exports}b.m=s,e=[],b.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,c=0;c<n.length;c++)i>=o&&Object.keys(b.O).every(function(e){return b.O[e](n[c])})?n.splice(c--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},b.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},b.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);b.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},b.d(o,u),o},b.d=function(e,t){for(var n in t)b.o(t,n)&&!b.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},b.f={},b.e=function(e){return Promise.all(Object.keys(b.f).reduce(function(t,n){return b.f[n](e,t),t},[]))},b.u=function(e){return"static/chunks/"+(131===e?"1e6d5a0c":e)+"."+({131:"75afa2d319272f42",166:"b263e636ff66212f",608:"66673de3aeeda77d",671:"ae431f885d6c7f0c"})[e]+".js"},b.miniCssF=function(e){return"static/css/f60d210841fab76b.css"},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",b.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,c=document.getElementsByTagName("script"),a=0;a<c.length;a++){var d=c[a];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==o+n){i=d;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,b.nc&&i.setAttribute("nonce",b.nc),i.setAttribute("data-webpack",o+n),i.src=b.tu(e)),r[e]=[t];var l=function(t,n){i.onerror=i.onload=null,clearTimeout(s);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),f&&document.head.appendChild(i)},b.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},b.tu=function(e){return b.tt().createScriptURL(e)},b.p="/_next/",i=function(e,t,n,r){var o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.onerror=o.onload=function(u){if(o.onerror=o.onload=null,"load"===u.type)n();else{var i=u&&("load"===u.type?"missing":u.type),f=u&&u.target&&u.target.href||t,c=Error("Loading CSS chunk "+e+" failed.\n("+f+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=i,c.request=f,o.parentNode.removeChild(o),r(c)}},o.href=t,document.head.appendChild(o),o},f=function(e,t){for(var n=document.getElementsByTagName("link"),r=0;r<n.length;r++){var o=n[r],u=o.getAttribute("data-href")||o.getAttribute("href");if("stylesheet"===o.rel&&(u===e||u===t))return o}for(var i=document.getElementsByTagName("style"),r=0;r<i.length;r++){var o=i[r],u=o.getAttribute("data-href");if(u===e||u===t)return o}},c={272:0},b.f.miniCss=function(e,t){c[e]?t.push(c[e]):0!==c[e]&&({608:1})[e]&&t.push(c[e]=new Promise(function(t,n){var r=b.miniCssF(e),o=b.p+r;if(f(r,o))return t();i(e,o,t,n)}).then(function(){c[e]=0},function(t){throw delete c[e],t}))},a={272:0,24:0},b.f.j=function(e,t){var n=b.o(a,e)?a[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(24|272|608)$/.test(e))a[e]=0;else{var r=new Promise(function(t,r){n=a[e]=[t,r]});t.push(n[2]=r);var o=b.p+b.u(e),u=Error();b.l(o,function(t){if(b.o(a,e)&&(0!==(n=a[e])&&(a[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},b.O.j=function(e){return 0===a[e]},d=function(e,t){var n,r,o=t[0],u=t[1],i=t[2],f=0;if(o.some(function(e){return 0!==a[e]})){for(n in u)b.o(u,n)&&(b.m[n]=u[n]);if(i)var c=i(b)}for(e&&e(t);f<o.length;f++)r=o[f],b.o(a,r)&&a[r]&&a[r][0](),a[r]=0;return b.O(c)},(l=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(d.bind(null,0)),l.push=d.bind(null,l.push.bind(l))}();
@@ -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}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.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-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-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-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))}}
@@ -1 +0,0 @@
1
- .switch.svelte-a6h7w7.svelte-a6h7w7.svelte-a6h7w7{height:1em;display:flex;align-items:center}.switch.disabled.svelte-a6h7w7.svelte-a6h7w7.svelte-a6h7w7{opacity:.5}.label.svelte-a6h7w7.svelte-a6h7w7.svelte-a6h7w7{margin:0 8px}.switch.svelte-a6h7w7 input[type=checkbox].svelte-a6h7w7.svelte-a6h7w7{position:absolute;opacity:0}.switch.svelte-a6h7w7 label.svelte-a6h7w7.svelte-a6h7w7{width:2em;height:1em;position:relative;cursor:pointer;display:block}.switch.disabled.svelte-a6h7w7 label.svelte-a6h7w7.svelte-a6h7w7{cursor:not-allowed}.switch.svelte-a6h7w7 label.svelte-a6h7w7.svelte-a6h7w7:before{content:"";position:absolute;width:2em;height:1em;left:.1em;transition:background .1s ease;background:rgba(73,80,246,.5);border-radius:50px}.switch.svelte-a6h7w7 label.svelte-a6h7w7.svelte-a6h7w7:after{content:"";position:absolute;width:1em;height:1em;border-radius:50px;left:0;transition:all .2s ease;box-shadow:0 2px 5px 0 rgba(0,0,0,.3);background:#fcfff4;animation:switch-off .2s ease-out;z-index:2}.switch.svelte-a6h7w7 input[type=checkbox].svelte-a6h7w7:checked+label.svelte-a6h7w7:before{background:#4950f6}.switch.svelte-a6h7w7 input[type=checkbox].svelte-a6h7w7:checked+label.svelte-a6h7w7:after{animation:switch-on .2s ease-out;left:1.1em}.rr-controller.svelte-189zk2r.svelte-189zk2r{width:100%;height:80px;background:#fff;display:flex;flex-direction:column;justify-content:space-around;align-items:center;border-radius:0 0 5px 5px}.rr-timeline.svelte-189zk2r.svelte-189zk2r{width:80%;display:flex;align-items:center}.rr-timeline__time.svelte-189zk2r.svelte-189zk2r{display:inline-block;width:100px;text-align:center;color:#11103e}.rr-progress.svelte-189zk2r.svelte-189zk2r{flex:1;height:12px;background:#eee;position:relative;border-radius:3px;cursor:pointer;box-sizing:border-box;border-top:4px solid #fff;border-bottom:4px solid #fff}.rr-progress.disabled.svelte-189zk2r.svelte-189zk2r{cursor:not-allowed}.rr-progress__step.svelte-189zk2r.svelte-189zk2r{height:100%;position:absolute;left:0;top:0;background:#e0e1fe}.rr-progress__handler.svelte-189zk2r.svelte-189zk2r{width:20px;height:20px;border-radius:10px;position:absolute;top:2px;transform:translate(-50%,-50%);background:#4950f6}.rr-controller__btns.svelte-189zk2r.svelte-189zk2r{display:flex;align-items:center;justify-content:center;font-size:13px}.rr-controller__btns.svelte-189zk2r button.svelte-189zk2r{width:32px;height:32px;display:flex;padding:0;align-items:center;justify-content:center;background:none;border:none;border-radius:50%;cursor:pointer}.rr-controller__btns.svelte-189zk2r button.svelte-189zk2r:active{background:#e0e1fe}.rr-controller__btns.svelte-189zk2r button.active.svelte-189zk2r{color:#fff;background:#4950f6}.rr-controller__btns.svelte-189zk2r button.svelte-189zk2r:disabled{cursor:not-allowed}.replayer-wrapper{position:relative}.replayer-mouse{position:absolute;width:20px;height:20px;transition:left .05s linear,top .05s linear;background-size:contain;background-position:50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzMwMHB4JyB3aWR0aD0nMzAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iTGF5ZXIgMSIgdmlld0JveD0iMCAwIDUwIDUwIiB4PSIwcHgiIHk9IjBweCI+PHRpdGxlPkRlc2lnbl90bnA8L3RpdGxlPjxwYXRoIGQ9Ik00OC43MSw0Mi45MUwzNC4wOCwyOC4yOSw0NC4zMywxOEExLDEsMCwwLDAsNDQsMTYuMzlMMi4zNSwxLjA2QTEsMSwwLDAsMCwxLjA2LDIuMzVMMTYuMzksNDRhMSwxLDAsMCwwLDEuNjUuMzZMMjguMjksMzQuMDgsNDIuOTEsNDguNzFhMSwxLDAsMCwwLDEuNDEsMGw0LjM4LTQuMzhBMSwxLDAsMCwwLDQ4LjcxLDQyLjkxWm0tNS4wOSwzLjY3TDI5LDMyYTEsMSwwLDAsMC0xLjQxLDBsLTkuODUsOS44NUwzLjY5LDMuNjlsMzguMTIsMTRMMzIsMjcuNThBMSwxLDAsMCwwLDMyLDI5TDQ2LjU5LDQzLjYyWiI+PC9wYXRoPjwvc3ZnPg==");border-color:transparent}.replayer-mouse:after{content:"";display:inline-block;width:20px;height:20px;background:#4950f6;border-radius:100%;transform:translate(-50%,-50%);opacity:.3}.replayer-mouse.active:after{animation:click .2s ease-in-out 1}.replayer-mouse.touch-device{background-image:none;width:70px;height:70px;border-radius:100%;margin-left:-37px;margin-top:-37px;border:4px solid rgba(73,80,246,0);transition:left 0s linear,top 0s linear,border-color .2s ease-in-out}.replayer-mouse.touch-device.touch-active{border-color:#4950f6;transition:left .25s linear,top .25s linear,border-color .2s ease-in-out}.replayer-mouse.touch-device:after{opacity:0}.replayer-mouse.touch-device.active:after{animation:touch-click .2s ease-in-out 1}.replayer-mouse-tail{position:absolute;pointer-events:none}@keyframes click{0%{opacity:.3;width:20px;height:20px}50%{opacity:.5;width:10px;height:10px}}@keyframes touch-click{0%{opacity:0;width:20px;height:20px}50%{opacity:.5;width:10px;height:10px}}.rr-player{position:relative;background:#fff;float:left;border-radius:5px;box-shadow:0 24px 48px rgba(17,16,62,.12)}.rr-player__frame{overflow:hidden}.replayer-wrapper{float:left;clear:both;transform-origin:top left;left:50%;top:50%}.replayer-wrapper>iframe{border:none}