hunter-mate 0.1.36 → 0.1.37
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.
- package/dist/assets/extension/background/{service-worker.20261103192009.js → service-worker.20261107043433.js} +2 -2
- package/dist/assets/extension/background/service-worker.js +2 -2
- package/dist/assets/extension/build-info.json +1 -1
- package/dist/assets/extension/manifest.json +3 -3
- package/dist/assets/extension/sidepanel/index.html +1 -1
- package/dist/assets/extension/sidepanel/index.js +1 -1
- package/dist/assets/server/main.mjs +169 -150
- package/dist/index.js +97 -32
- package/dist/web/dist/404.html +1 -1
- package/dist/web/dist/_next/static/chunks/431-187a20ba9a18321e.js +1 -0
- package/dist/web/dist/_next/static/chunks/659-d79f05fe8494a4a3.js +1 -0
- package/dist/web/dist/_next/static/chunks/686-566781e8fdd620d5.js +1 -0
- package/dist/web/dist/_next/static/chunks/{987-d5135025f46d8a26.js → 987-4bd304cd48dc9e3c.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/admin/data/page-cfe12240271d0430.js +1 -0
- package/dist/web/dist/_next/static/chunks/app/company/admin/{page-940476e223ed5291.js → page-b14cac4a2b898625.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/jobs/page-72230dfd0d86fd69.js +1 -0
- package/dist/web/dist/_next/static/chunks/app/{layout-56e9f652ec460661.js → layout-19172f741a295f90.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/login/{page-11dbf5148d19a037.js → page-bbbb051e69009a06.js} +1 -1
- package/dist/web/dist/_next/static/chunks/{main-app-6971513122242cd6.js → main-app-e2b7b078a4e28e22.js} +1 -1
- package/dist/web/dist/_next/static/chunks/pages/{_app-1d7fd225cc89f0d5.js → _app-b75cc951fea59503.js} +2 -2
- package/dist/web/dist/_next/static/css/fe65ef3f12d9c55d.css +3 -0
- package/dist/web/dist/admin/data.html +1 -1
- package/dist/web/dist/admin/data.txt +3 -3
- package/dist/web/dist/auth/verify.html +1 -1
- package/dist/web/dist/auth/verify.txt +2 -2
- package/dist/web/dist/companies.html +1 -1
- package/dist/web/dist/companies.txt +3 -3
- package/dist/web/dist/company/admin.html +1 -1
- package/dist/web/dist/company/admin.txt +3 -3
- package/dist/web/dist/entity.html +1 -1
- package/dist/web/dist/entity.txt +2 -2
- package/dist/web/dist/index.html +1 -1
- package/dist/web/dist/index.txt +3 -3
- package/dist/web/dist/jobs.html +1 -1
- package/dist/web/dist/jobs.txt +3 -3
- package/dist/web/dist/login.html +2 -2
- package/dist/web/dist/login.txt +3 -3
- package/dist/web/dist/logs.html +1 -1
- package/dist/web/dist/logs.txt +2 -2
- package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
- package/dist/web/dist/matching/jobs/placeholder/talents.txt +3 -3
- package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
- package/dist/web/dist/matching/portraits/placeholder/jobs.txt +3 -3
- package/dist/web/dist/memory.html +1 -1
- package/dist/web/dist/memory.txt +3 -3
- package/dist/web/dist/parselog.html +1 -1
- package/dist/web/dist/parselog.txt +3 -3
- package/dist/web/dist/recordings.html +1 -1
- package/dist/web/dist/recordings.txt +3 -3
- package/dist/web/dist/resource-usage.html +1 -1
- package/dist/web/dist/resource-usage.txt +3 -3
- package/dist/web/dist/shared/placeholder.html +1 -1
- package/dist/web/dist/shared/placeholder.txt +3 -3
- package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
- package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +3 -3
- package/dist/web/dist/talents.html +1 -1
- package/dist/web/dist/talents.txt +3 -3
- package/dist/web/dist/team/insights.html +1 -1
- package/dist/web/dist/team/insights.txt +3 -3
- package/package.json +1 -1
- package/dist/web/dist/_next/static/chunks/431-6c54d8d0cf2bf768.js +0 -1
- package/dist/web/dist/_next/static/chunks/659-bf056de14f6162b6.js +0 -1
- package/dist/web/dist/_next/static/chunks/686-332bfa3dbd6e0aac.js +0 -1
- package/dist/web/dist/_next/static/chunks/app/admin/data/page-31aa598c712a211d.js +0 -1
- package/dist/web/dist/_next/static/chunks/app/jobs/page-0a0ee2f8b389a147.js +0 -1
- package/dist/web/dist/_next/static/css/03e3fa723e374884.css +0 -3
- /package/dist/web/dist/_next/static/{JrLiYIK9zn4SBFFfOW1uK → wtzfFVjEfzUKkY3Epal_2}/_buildManifest.js +0 -0
- /package/dist/web/dist/_next/static/{JrLiYIK9zn4SBFFfOW1uK → wtzfFVjEfzUKkY3Epal_2}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
2:I[21670,["502","static/chunks/502-4776504e89a09b68.js","606","static/chunks/606-9bac5cf9187e9901.js","431","static/chunks/431-
|
|
1
|
+
2:I[21670,["502","static/chunks/502-4776504e89a09b68.js","606","static/chunks/606-9bac5cf9187e9901.js","431","static/chunks/431-187a20ba9a18321e.js","14","static/chunks/app/team/insights/page-4ec3304e214e7c20.js"],"default"]
|
|
2
2
|
3:I[74268,[],""]
|
|
3
3
|
4:I[81050,[],""]
|
|
4
|
-
5:I[75946,["502","static/chunks/502-4776504e89a09b68.js","589","static/chunks/589-5bb84ab8060e960b.js","431","static/chunks/431-
|
|
5
|
-
0:["
|
|
4
|
+
5:I[75946,["502","static/chunks/502-4776504e89a09b68.js","589","static/chunks/589-5bb84ab8060e960b.js","431","static/chunks/431-187a20ba9a18321e.js","185","static/chunks/app/layout-19172f741a295f90.js"],"GateByRoute"]
|
|
5
|
+
0:["wtzfFVjEfzUKkY3Epal_2",[[["",{"children":["team",{"children":["insights",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["team",{"children":["insights",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{}],null],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","team","children","insights","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","team","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/fe65ef3f12d9c55d.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"className":"flex h-screen overflow-hidden bg-gray-50 text-gray-900","children":["$","$L5",null,{"children":["$","main",null,{"className":"flex-1 overflow-hidden","children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]}]}]],null],null],["$L6",null]]]]
|
|
6
6
|
6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"HunterMate 采集仪表盘"}],["$","meta","3",{"name":"description","content":"HunterMate 采集/解析/入库仪表盘"}]]
|
|
7
7
|
1:null
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(){try{var t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=(new t.Error).stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="bba782d0-d732-4ec4-9181-8183d7379c61",t._sentryDebugIdIdentifier="sentry-dbid-bba782d0-d732-4ec4-9181-8183d7379c61")}catch(t){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[431],{21260:function(t,e,n){n.d(e,{OG:function(){return r},RB:function(){return m},VA:function(){return u},clearCloudToken:function(){return l},notifyCloudTokenChanged:function(){return i},xq:function(){return c}});let o="hm_jwt";function a(t){let e=t.split(".");if(3!==e.length)return null;try{return JSON.parse(atob(e[1].replace(/-/g,"+").replace(/_/g,"/")))}catch(t){return null}}function r(t){var e;let n=null===(e=a(t))||void 0===e?void 0:e.data;return{hmUserId:"number"==typeof(null==n?void 0:n._id)?n._id:null,email:"string"==typeof(null==n?void 0:n.email)?n.email:null}}function c(){try{let t=window.localStorage.getItem(o);if(!t)return null;let e=function(t){let e=a(t);return"number"==typeof(null==e?void 0:e.exp)?e.exp:null}(t);if(e&&1e3*e<=Date.now()+3e4)return window.localStorage.removeItem(o),null;return t}catch(t){return null}}function u(t){try{window.localStorage.setItem(o,t)}catch(t){}}function l(){try{window.localStorage.removeItem(o)}catch(t){}}let s=new Set;function i(){s.forEach(t=>t())}function m(t){return s.add(t),()=>{s.delete(t)}}},28431:function(t,e,n){n.d(e,{MA:function(){return i},YZ:function(){return s},bw:function(){return l},nZ:function(){return m}});let o="hm-cloud-active-tenant",a=null,r=null;function c(){try{let t=window.localStorage.getItem(o);if(null===t)return null;let e=Number(t);return Number.isFinite(e)?e:null}catch(t){return null}}function u(t){try{null===t?window.localStorage.removeItem(o):window.localStorage.setItem(o,String(t))}catch(t){}}function l(t){a=t,u(t)}function s(t){r=t,null===c()&&(a=t)}function i(){if(null!==a)return a;let t=c();return null!==t?a=t:r}function m(){a=null,r=null,u(null)}},26416:function(t,e,n){n.d(e,{_:function(){return r},e:function(){return o}});class o extends Error{constructor(t,e){super("云端模式暂不支持:".concat(t," ").concat(e,"(需本机 HunterMate)")),this.method=t,this.path=e,this.name="CloudUnsupportedError"}}let a=[{match:/^\/parse-log(\/|$)/,to:null},{match:/^\/api\/recordings(-view)?(\/|$)/,to:null},{match:/^\/job-case-postings(\/|$)/,to:null},{match:/^\/job-postings(\/|$)/,to:null},{match:/^\/job-cases\/[^/]+\/(applications|postings)(\/|$)/,to:null},{match:/^\/job-cases\/merge$/,methods:["POST"],to:null},{match:/^\/job-cases\/[^/]+\/criteria\/merge$/,methods:["POST"],to:null},{match:/^\/job-cases$/,methods:["DELETE"],to:null},{match:/-prompt$/,to:null},{match:/^\/customers\/merge$/,methods:["POST"],to:null},{match:/^\/customers$/,methods:["DELETE"],to:null},{match:/^\/entities\/talent\/merge$/,methods:["POST"],to:null},{match:/^\/entities\/talent\/[^/]+\/duplicates\/dismiss$/,methods:["POST"],to:null},{match:/^\/matching\/matches\/[^/]+\/feedback$/,methods:["POST"],to:null},{match:/^\/resource-usage(\/|$)/,to:null},{match:/^\/adapters(\/|$)/,to:null},{match:/^\/extract(\/|$)/,to:null},{match:/^\/market(\/|$)/,to:null},{match:/^\/resume-field-changes(\/|$)/,to:null},{match:/^\/api\/internal(\/|$)/,to:null},{match:/^\/datasync\/logout$/,to:null},{match:/^\/datasync\/state$/,methods:["GET"],to:"/hunter-mate/sync/state?heads=0"},{match:/^\/datasync\/active-tenant$/,methods:["POST"],to:"/hunter-mate/tenant/last-active"},{match:/^\/job-cases\/tenant-members$/,methods:["GET"],to:"/hunter-mate/hm-web/tenant-members"},{match:/^\/job-cases(\/|$)/,to:"/hunter-mate/collab/job-cases$1",stripParams:["channel"]},{match:/^\/recommendations\/meta$/,methods:["GET"],to:"/hunter-mate/hm-web/recommendations/meta"},{match:/^\/recommendations(\/|$)/,to:"/hunter-mate/collab/recommendations$1"},{match:/^\/searchlog(\/|$)/,to:"/hunter-mate/searchlog$1"},{match:/^\/shares(\/|$)/,to:"/hunter-mate/shares$1"},{match:/^\/shared\/([^/]+)\/data$/,methods:["GET"],to:"/hunter-mate/shares/$1/data"},{match:/^\/shared\/([^/]+)\/revoke$/,methods:["POST"],to:"/hunter-mate/shares/$1/revoke"},{match:/^\/team\/(members|insights)$/,to:"/hunter-mate/team/$1"},{match:/^\/company\/applications\/([^/]+)\/decide$/,methods:["POST"],to:"/hunter-mate/tenant/applications/$1/decide"},{match:/^\/company\/([^/]+)\/(apply|applications|members|admins|transfer-ownership)$/,to:"/hunter-mate/tenant/$1/$2"},{match:/^\/company$/,methods:["POST"],to:"/hunter-mate/tenant"},{match:/^\/admin\/(entities|purge)$/,to:"/hunter-mate/admin/$1"},{match:/^\/customers(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/customers$1"},{match:/^\/entities(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/entities$1"},{match:/^\/matching(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/matching$1"},{match:/^\/talent-portraits(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/talent-portraits$1"},{match:/^\/portraits(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/portraits$1"},{match:/^\/parsed-resumes(\/|$)/,methods:["GET"],to:"/hunter-mate/hm-web/parsed-resumes$1"}];function r(t,e){let n=e.indexOf("?"),o=n>=0?e.slice(0,n):e,r=n>=0?e.slice(n+1):"",c=t.toUpperCase();for(let t of a){var u;if(t.methods&&!t.methods.includes(c)||!o.match(t.match))continue;if(null===t.to)return null;let e=o.replace(t.match,t.to);if(!r)return{path:e};let n=new URLSearchParams(r);for(let e of null!==(u=t.stripParams)&&void 0!==u?u:[])n.delete(e);let a=n.toString(),l=e.indexOf("?");if(l>=0){let t=e.slice(0,l),n=e.slice(l+1);return{path:a?"".concat(t,"?").concat(n,"&").concat(a):e}}return{path:a?"".concat(e,"?").concat(a):e}}return{path:e}}},74431:function(t,e,n){n.d(e,{Ox:function(){return s},requestJson:function(){return m}});var o=n(67002),a=n(33447),r=n(21260),c=n(26416),u=n(28431),l=n(60529);function s(){return l.env.HUNTER_MATE_SERVER_URL||""}class i extends Error{constructor(t,e,n){super(null!=n?n:"请求失败(".concat(t,")").concat(e?": ".concat(e):"")),this.status=t,this.path=e,this.name="HttpError"}}async function m(t,e){let n,l="".concat((0,a.XJ)()).concat(t);if((0,a.K5)()){var s,m;let n=(0,c._)(null!==(s=null==e?void 0:e.method)&&void 0!==s?s:"GET",t);if(null===n)throw new c.e(null!==(m=null==e?void 0:e.method)&&void 0!==m?m:"GET",t);l="".concat((0,a.XJ)()).concat(n.path)}try{n=await fetch(l,{cache:"no-store",...function(t){let e=(0,a.K5)()?(0,r.xq)():(0,o.Xc)(),n=(0,a.K5)()?(0,u.MA)():null;if(!e&&null===n)return t;let c=new Headers(null==t?void 0:t.headers);return e&&!c.has("Authorization")&&c.set("Authorization","".concat((0,a.K5)()?"HMJWT":"UTOKEN"," ").concat(e)),null===n||c.has("x-hm-active-tenant")||c.set("x-hm-active-tenant",String(n)),{...t,headers:c}}(e)})}catch(e){throw new i(0,t,e instanceof Error?e.message:"网络错误")}if(!n.ok){if(401===n.status&&(0,a.K5)()&&!t.startsWith("/hunter-mate/auth/")&&((0,r.clearCloudToken)(),!window.location.pathname.endsWith("/login"))){let t=encodeURIComponent(window.location.pathname+window.location.search);window.location.assign("".concat((0,a.Qv)(),"?next=").concat(t))}throw new i(n.status,t,"HTTP ".concat(n.status))}try{return await n.json()}catch(e){throw new i(n.status,t,e instanceof Error?"响应解析失败: ".concat(e.message):"响应解析失败")}}},33447:function(t,e,n){n.d(e,{K5:function(){return a},Qv:function(){return c},XJ:function(){return r}});var o=n(60529);function a(){return!1}function r(){return o.env.HUNTER_MATE_SERVER_URL||""}function c(){return"".concat("","/login")}},67002:function(t,e,n){n.d(e,{GK:function(){return c},Lc:function(){return u},Xc:function(){return r}});let o=null,a=new Set;function r(){return o}function c(t){t!==o&&(o=t,a.forEach(t=>t()))}function u(t){return a.add(t),()=>{a.delete(t)}}}}]);
|
|
@@ -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]="036d6036-7733-4363-ac88-fc8f1e376da3",e._sentryDebugIdIdentifier="sentry-dbid-036d6036-7733-4363-ac88-fc8f1e376da3")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[659],{59659:function(e,t,l){l.d(t,{EntityListPage:function(){return _}});var r=l(72835),a=l(60635),s=l(27473),n=l(74431),i=l(33447),d=l(37202),o=l(94518),c=l(63718),u=l(19036),x=l(78606),m=l(8448),h=l(86777);let b=["workExperiences","projects","education"],p={intent:["position","salary","city","industries"]},g={name:"姓名",headline:"头衔",currentPosition:"现职位",currentCompany:"现公司",city:"城市",degree:"学历",workYears:"工作年限",age:"年龄",gender:"性别",resId:"resId",statusTag:"状态标签",contactTime:"方便联系时间",phone:"电话",email:"邮箱",profileUrl:"主页 URL",sourceUrl:"来源 URL",selfEvaluation:"自我评价",statement:"平台声明","intent.position":"期望职位","intent.salary":"期望薪资","intent.city":"期望城市","intent.industries":"期望行业",updatedAt:"更新时间"},y={workExperiences:"工作经历",projects:"项目经历",education:"教育经历"},f={company:"公司",position:"职位",period:"时间段",start:"开始",end:"结束",department:"部门",location:"地点",reportsTo:"汇报对象",school:"学校",major:"专业",degree:"学历",name:"名称",role:"角色",description:"描述",duties:"职责",industry:"行业"};function v(e){return null==e||""===e?"—":Array.isArray(e)?e.length?e.map(e=>v(e)).filter(e=>"—"!==e).join("、"):"—":"object"==typeof e?JSON.stringify(e):"string"==typeof e&&/^\d{4}-\d{2}-\d{2}T/.test(e)?(0,m.d3)(e):String(e)}function j(e){var t;let{entity:l}=e,i=(0,s.useRouter)(),d=l.id,[o,c]=(0,a.useState)(null),[u,x]=(0,a.useState)(!1),[h,j]=(0,a.useState)({}),[N,w]=(0,a.useState)(null),[k,S]=(0,a.useState)(new Set),[C,U]=(0,a.useState)({}),[q,I]=(0,a.useState)({}),[E,T]=(0,a.useState)(!1),[A,O]=(0,a.useState)("");(0,a.useEffect)(()=>{let e=!0;return c(null),O(""),(async()=>{try{let t=await (0,n.requestJson)("/entities/talent/".concat(d,"/duplicates"));e&&c(t.candidates)}catch(t){e&&c([])}})(),()=>{e=!1}},[d]);let _=(0,a.useMemo)(()=>{var e;return null!==(e=l.extracted)&&void 0!==e?e:{}},[l.extracted]),J=async e=>{if(h[e])return h[e];try{let t=await (0,n.requestJson)("/entities/talent/".concat(e));if(!t.entity)return null;return j(l=>({...l,[e]:t.entity})),t.entity}catch(e){return null}},P=async()=>{var e,t,l,r,a,s,n;T(!0),O("");let i=[d,...(null!=o?o:[]).map(e=>e.talent.id)],c=await Promise.all(i.map(e=>J(e)));if(T(!1),c.some(e=>!e)){O("全量简历拉取失败,请重试");return}let u=c[0],m=null!==(t=u.extracted)&&void 0!==t?t:{},h={name:u.name,headline:u.headline},g={};for(let e of Object.keys(m))if(b.includes(e))g[e]=Array.isArray(m[e])?[...m[e]]:[];else if(p[e]){let t=null!==(r=m[e])&&void 0!==r?r:{};for(let l of p[e])h["".concat(e,".").concat(l)]=null!==(a=t[l])&&void 0!==a?a:"industries"===l?[]:""}else(null==(n=m[e])||["string","number","boolean"].includes(typeof n))&&!e.startsWith("_")&&(h[e]=null!==(l=m[e])&&void 0!==l?l:"");U(h),I(g),w(null!==(s=null==o?void 0:null===(e=o[0])||void 0===e?void 0:e.talent.id)&&void 0!==s?s:null),x(!0)},L=e=>{var t;let r=[],a=t=>{var l,r,a,s;if(t){if("name"===e)return t.name;if("headline"===e)return t.headline;if(e.startsWith("intent.")){let l=e.slice(7),s=null===(a=t.extracted)||void 0===a?void 0:null===(r=a.intent)||void 0===r?void 0:r[l];return"industries"===l?Array.isArray(s)?s:[]:null!=s?s:""}return null!==(s=null===(l=t.extracted)||void 0===l?void 0:l[e])&&void 0!==s?s:""}},s=a(null!==(t=h[d])&&void 0!==t?t:l);for(let e of(r.push({id:0,label:"当前",value:s}),null!=o?o:[])){let t=h[e.talent.id];if(!t)continue;let l=a(t);void 0!==l&&"—"!==v(l)&&r.push({id:e.talent.id,label:"#".concat(e.talent.id),value:l})}return r},R=(e,t)=>U(l=>({...l,[e]:t})),M=async e=>{T(!0);try{await (0,n.requestJson)("/entities/talent/".concat(d,"/duplicates/dismiss"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({otherId:e})}),c(t=>(null!=t?t:[]).filter(t=>t.talent.id!==e)),N===e&&w(null)}catch(e){O("标注失败,请重试")}finally{T(!1)}},z=async()=>{var e,t,l,r;let a={..._};for(let[t,l]of Object.entries(C))if("name"!==t&&"headline"!==t){if(t.startsWith("intent.")){let r=t.slice(7);a.intent={...null!==(e=a.intent)&&void 0!==e?e:{},[r]:l}}else a[t]="number"!=typeof(r=_[t])||"string"!=typeof l||""===l.trim()||Number.isNaN(Number(l))?"boolean"==typeof r&&"string"==typeof l?"true"===l:l:Number(l)}for(let e of b)q[e]&&(a[e]=q[e]);let s=(null!=o?o:[]).filter(e=>!k.has(e.talent.id)).map(e=>e.talent.id);if(0===s.length){O("未勾选任何候选参与合并");return}T(!0);let c=!1;for(let e of s)try{await (0,n.requestJson)("/entities/talent/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepId:d,removeId:e,extracted:a,name:null!==(t=C.name)&&void 0!==t?t:null,headline:null!==(l=C.headline)&&void 0!==l?l:null})})}catch(e){c=!0;break}if(T(!1),c){O("合并失败,请重试");return}i.replace("/talents?id=".concat(d)),i.refresh(),window.location.reload()},W=async()=>{let e=(null!=o?o:[]).filter(e=>!k.has(e.talent.id)).map(e=>e.talent.id);if(0===e.length){O("未勾选任何候选参与合并");return}T(!0);let t=!0;for(let l of e)try{await (0,n.requestJson)("/entities/talent/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepId:d,removeId:l})})}catch(e){t=!1;break}if(T(!1),!t){O("合并失败,请重试");return}i.replace("/talents?id=".concat(d)),i.refresh(),window.location.reload()};if(null===o||0===o.length)return null;let F=null!==(t=o.find(e=>e.talent.id===N))&&void 0!==t?t:null,D=null!=N?h[N]:null,Y=e=>(0,r.jsx)("span",{className:"flex flex-wrap items-center gap-1",children:L(e).map(t=>(0,r.jsx)("button",{type:"button",title:"采纳:".concat(v(t.value)),onClick:()=>R(e,t.value),className:"rounded border border-gray-200 px-1.5 py-0.5 text-xs text-gray-500 hover:border-blue-400 hover:text-blue-600",children:t.label},t.id))});return(0,r.jsxs)("div",{className:"mb-4 rounded-lg border border-amber-300 bg-amber-50 p-3",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsxs)("span",{className:"text-sm font-medium text-amber-800",children:["发现 ",o.length," 条可能重复的人才记录"]}),(0,r.jsx)("button",{onClick:()=>void P(),disabled:E,className:"rounded bg-amber-600 px-3 py-1 text-sm text-white hover:bg-amber-700 disabled:opacity-50",children:"查看并处理"}),(0,r.jsx)("button",{onClick:()=>void M(o[0].talent.id),disabled:E,className:"rounded border border-amber-400 px-3 py-1 text-sm text-amber-700 hover:bg-amber-100 disabled:opacity-50",children:"与最高分条目非重复"}),A?(0,r.jsx)("span",{className:"text-sm text-red-600",children:A}):null]}),u?(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30 p-2 sm:p-4",onClick:()=>x(!1),children:(0,r.jsxs)("div",{className:"flex max-h-[92vh] w-full max-w-6xl flex-col overflow-hidden rounded-lg bg-white shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 border-b border-gray-200 px-4 py-3",children:[(0,r.jsx)("h3",{className:"text-lg font-semibold text-gray-900",children:"重复简历合并工作区"}),(0,r.jsxs)("span",{className:"text-sm text-gray-500",children:["当前 #",d,l.name?" \xb7 ".concat(l.name):""," — ",o.length," 条候选"]}),(0,r.jsx)("button",{onClick:()=>x(!1),className:"ml-auto text-sm text-gray-500 hover:text-gray-700",children:"关闭"})]}),(0,r.jsxs)("div",{className:"grid flex-1 gap-0 overflow-hidden md:grid-cols-[250px,1fr]",children:[(0,r.jsxs)("div",{className:"overflow-y-auto border-b border-gray-200 p-3 md:border-b-0 md:border-r",children:[(0,r.jsx)("div",{className:"mb-2 text-xs font-medium text-gray-500",children:"候选简历(逐条处理)"}),(0,r.jsx)("div",{className:"space-y-2",children:o.map(e=>{var t;return(0,r.jsxs)("div",{className:"rounded-lg border p-2 ".concat(N===e.talent.id?"border-blue-400 bg-blue-50":"border-gray-200"),children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"checkbox",checked:!k.has(e.talent.id),disabled:E,onChange:t=>{S(l=>{let r=new Set(l);return t.target.checked?r.delete(e.talent.id):r.add(e.talent.id),r})},title:"勾选=同一人,参与本次合并"}),(0,r.jsx)("span",{className:"text-sm font-medium text-gray-900",children:null!==(t=e.talent.name)&&void 0!==t?t:"(未命名)"}),(0,r.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["相似度 ",e.score]})]}),(0,r.jsxs)("div",{className:"mt-0.5 truncate text-xs text-gray-500",title:e.talent.sourceUrl,children:[e.talent.source," \xb7 ",(0,m.d3)(e.talent.updatedAt)]}),(0,r.jsxs)("div",{className:"mt-1.5 flex gap-1.5",children:[(0,r.jsx)("button",{type:"button",onClick:()=>w(e.talent.id),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-700 hover:bg-gray-50",children:"选中对比"}),(0,r.jsx)("button",{type:"button",disabled:E,onClick:()=>void M(e.talent.id),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-700 hover:bg-gray-50 disabled:opacity-50",children:"非同一人"})]})]},e.talent.id)})})]}),(0,r.jsxs)("div",{className:"flex flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex-1 space-y-4 overflow-y-auto p-4",children:[(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-gray-100 px-3 py-2",children:[(0,r.jsx)("h4",{className:"text-sm font-semibold text-gray-900",children:"最终采用简历(可编辑)"}),(0,r.jsx)("button",{type:"button",onClick:()=>{P()},className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600 hover:bg-gray-50",children:"重置为当前简历"})]}),(0,r.jsx)("div",{className:"divide-y divide-gray-100",children:Object.keys(C).map(e=>{var t,a;return(0,r.jsxs)("div",{className:"grid grid-cols-[90px,1fr,auto] items-center gap-2 px-3 py-1.5",children:[(0,r.jsx)("label",{className:"text-xs text-gray-500",children:null!==(t=g[e])&&void 0!==t?t:e}),"sourceUrl"===e?(0,r.jsx)("a",{href:String(null!==(a=C[e])&&void 0!==a?a:l.sourceUrl),target:"_blank",rel:"noreferrer",className:"truncate text-sm text-blue-600 hover:underline",children:"—"===v(C[e])?l.sourceUrl:v(C[e])}):"selfEvaluation"===e||"statement"===e?(0,r.jsx)("textarea",{value:"—"===v(C[e])?"":String(C[e]),onChange:t=>R(e,t.target.value),rows:2,className:"w-full rounded border border-gray-300 px-2 py-1 text-sm"}):(0,r.jsx)("input",{value:"—"===v(C[e])?"":String(C[e]),onChange:t=>R(e,t.target.value),className:"w-full rounded border border-gray-300 px-2 py-1 text-sm"}),Y(e)]},e)})})]}),b.map(e=>{var t,l,a;let s=null!==(t=q[e])&&void 0!==t?t:[],n=[];for(let t of null!=o?o:[]){let r=h[t.talent.id],a=null==r?void 0:null===(l=r.extracted)||void 0===l?void 0:l[e];Array.isArray(a)&&a.forEach(e=>n.push({id:t.talent.id,item:e}))}return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,r.jsx)("div",{className:"flex items-center justify-between border-b border-gray-100 px-3 py-2",children:(0,r.jsxs)("h4",{className:"text-sm font-semibold text-gray-900",children:[null!==(a=y[e])&&void 0!==a?a:e,"(",s.length,")"]})}),0===s.length&&0===n.length?(0,r.jsx)("p",{className:"px-3 py-2 text-xs text-gray-400",children:"两侧均无数据"}):(0,r.jsxs)("div",{className:"space-y-2 p-3",children:[s.map((t,l)=>(0,r.jsxs)("div",{className:"rounded border border-gray-200 p-2",children:[(0,r.jsx)("div",{className:"grid grid-cols-2 gap-2 lg:grid-cols-4",children:Object.keys(null!=t?t:{}).filter(e=>!e.startsWith("_")).map(a=>{var n;return(0,r.jsxs)("label",{className:"block",children:[(0,r.jsx)("span",{className:"text-xs text-gray-400",children:null!==(n=f[a])&&void 0!==n?n:a}),"string"==typeof t[a]&&t[a].length>40?(0,r.jsx)("textarea",{value:t[a],rows:2,onChange:t=>{let r=[...s];r[l]={...r[l],[a]:t.target.value},I(t=>({...t,[e]:r}))},className:"w-full rounded border border-gray-300 px-2 py-1 text-xs"}):(0,r.jsx)("input",{value:"—"===v(t[a])?"":String(t[a]),onChange:t=>{let r=[...s];r[l]={...r[l],[a]:t.target.value},I(t=>({...t,[e]:r}))},className:"w-full rounded border border-gray-300 px-2 py-1 text-xs"})]},a)})}),(0,r.jsx)("div",{className:"mt-1.5 flex items-center gap-2",children:(0,r.jsx)("button",{type:"button",onClick:()=>I(t=>({...t,[e]:s.filter((e,t)=>t!==l)})),className:"rounded border border-red-200 px-2 py-0.5 text-xs text-red-600 hover:bg-red-50",children:"删除此条"})})]},l)),n.length?(0,r.jsxs)("div",{className:"rounded border border-dashed border-gray-300 p-2",children:[(0,r.jsx)("div",{className:"mb-1 text-xs text-gray-500",children:"候选条目(选择合入或更新)"}),(0,r.jsx)("div",{className:"space-y-1.5",children:n.map((t,l)=>{var a,n,i,d,o,c,u,x,m;let h=s.findIndex(e=>(function(e,t){let l=e=>{var t,l,r;return String(null!==(r=null!==(l=null!==(t=null==e?void 0:e.company)&&void 0!==t?t:null==e?void 0:e.school)&&void 0!==l?l:null==e?void 0:e.name)&&void 0!==r?r:"")},r=e=>{var t,l,r;return String(null!==(r=null==e?void 0:e.period)&&void 0!==r?r:"".concat(null!==(t=null==e?void 0:e.start)&&void 0!==t?t:"","-").concat(null!==(l=null==e?void 0:e.end)&&void 0!==l?l:""))},a=l(e),s=l(t),n=r(e),i=r(t);return!!a&&!!s&&a===s||!!n&&!!i&&n===i&&(!a||!s||a===s)})(e,t.item));return(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,r.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-gray-500",children:["#",t.id]}),(0,r.jsxs)("span",{className:"min-w-0 flex-1 truncate text-gray-700",children:[v(null!==(i=null!==(n=null!==(a=t.item.company)&&void 0!==a?a:t.item.school)&&void 0!==n?n:t.item.name)&&void 0!==i?i:"")," \xb7 ",v(null!==(c=null!==(o=null!==(d=t.item.position)&&void 0!==d?d:t.item.major)&&void 0!==o?o:t.item.role)&&void 0!==c?c:"")," \xb7 ",v(null!==(m=t.item.period)&&void 0!==m?m:"".concat(null!==(u=t.item.start)&&void 0!==u?u:"","-").concat(null!==(x=t.item.end)&&void 0!==x?x:""))]}),h>=0?(0,r.jsxs)("button",{type:"button",onClick:()=>{let l=[...s];l[h]={...t.item},I(t=>({...t,[e]:l}))},className:"shrink-0 rounded border border-blue-300 px-2 py-0.5 text-blue-600 hover:bg-blue-50",children:["更新条目",h+1]}):(0,r.jsx)("button",{type:"button",onClick:()=>I(l=>({...l,[e]:[...s,{...t.item}]})),className:"shrink-0 rounded border border-green-300 px-2 py-0.5 text-green-700 hover:bg-green-50",children:"合入"})]},l)})})]}):null]})]},e)}),F&&D?(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200",children:[(0,r.jsx)("div",{className:"border-b border-gray-100 px-3 py-2",children:(0,r.jsxs)("h4",{className:"text-sm font-semibold text-gray-900",children:["与候选 #",F.talent.id," 对比",F.reasons.length?(0,r.jsx)("span",{className:"ml-2 space-x-1",children:F.reasons.map(e=>(0,r.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs font-normal text-gray-600",children:e},e))}):null]})}),(0,r.jsxs)("table",{className:"w-full border-collapse text-sm",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-gray-100 text-left text-xs text-gray-500",children:[(0,r.jsx)("th",{className:"py-1.5 pl-3 pr-2 font-medium",children:"字段"}),(0,r.jsxs)("th",{className:"py-1.5 pr-2 font-medium",children:["当前 #",d]}),(0,r.jsxs)("th",{className:"py-1.5 pr-3 font-medium",children:["候选 #",F.talent.id]})]})}),(0,r.jsx)("tbody",{children:Object.keys(C).map(e=>{var t,a,s,n;let i=v(null===(t=L(e)[0])||void 0===t?void 0:t.value),d=v((()=>{var t,l,r,a;let s=h[F.talent.id];if(s){if("name"===e)return s.name;if("headline"===e)return s.headline;if(e.startsWith("intent.")){let t=e.slice(7),a=null===(r=s.extracted)||void 0===r?void 0:null===(l=r.intent)||void 0===l?void 0:l[t];return"industries"===t?Array.isArray(a)?a:[]:null!=a?a:""}return null!==(a=null===(t=s.extracted)||void 0===t?void 0:t[e])&&void 0!==a?a:""}})()),o=i!==d&&"—"!==i&&"—"!==d;return(0,r.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,r.jsx)("td",{className:"py-1 pl-3 pr-2 text-xs text-gray-500",children:null!==(s=g[e])&&void 0!==s?s:e}),(0,r.jsx)("td",{className:"py-1 pr-2 ".concat(o?"bg-amber-50":""),children:"sourceUrl"===e?(0,r.jsx)("a",{href:String(null!==(n=null===(a=L(e)[0])||void 0===a?void 0:a.value)&&void 0!==n?n:l.sourceUrl),target:"_blank",rel:"noreferrer",className:"break-all text-blue-600 hover:underline",children:i}):(0,r.jsx)("span",{className:"break-all",children:i})}),(0,r.jsx)("td",{className:"py-1 pr-3 ".concat(o?"bg-amber-50":""),children:"sourceUrl"===e?(0,r.jsx)("a",{href:String((()=>{var e;let t=h[F.talent.id];return null!==(e=null==t?void 0:t.sourceUrl)&&void 0!==e?e:""})()),target:"_blank",rel:"noreferrer",className:"break-all text-blue-600 hover:underline",children:d}):(0,r.jsx)("span",{className:"break-all",children:d})})]},e)})})]})]}):null]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-t border-gray-200 px-4 py-3",children:[(0,r.jsx)("button",{type:"button",onClick:()=>void z(),disabled:E,className:"rounded bg-blue-600 px-4 py-1.5 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:"提交合并(采用上方编辑值)"}),(0,r.jsx)("button",{type:"button",onClick:()=>void W(),disabled:E,title:"传统语义:保留字段更全的一侧,另一侧补空合并",className:"rounded border border-gray-300 px-4 py-1.5 text-sm text-gray-700 hover:bg-gray-50 disabled:opacity-50",children:"快捷:整行补空合并"}),(0,r.jsx)("span",{className:"text-xs text-gray-500",children:"被合并的候选会进入回收站(可恢复)"}),A?(0,r.jsx)("span",{className:"text-sm text-red-600",children:A}):null]})]})]})]})}):null]})}var N=l(12789),w=l(65777);function k(e){var t,l;let{entityId:s,name:i}=e,[d,o]=(0,a.useState)(!1),[c,u]=(0,a.useState)(null),[m,h]=(0,a.useState)([]),[b,p]=(0,a.useState)(""),[g,y]=(0,a.useState)("pending_invite"),[f,v]=(0,a.useState)(!1),[j,N]=(0,a.useState)(null),[k,S]=(0,a.useState)(null),{sync:C}=(0,w.nu)(),U=null!==(t=null==C?void 0:C.activeTenantId)&&void 0!==t?t:null;(0,a.useEffect)(()=>{d&&((async()=>{try{u(await (0,n.requestJson)("/recommendations/meta"))}catch(e){}})(),(async()=>{try{let e=await (0,n.requestJson)("/job-cases?limit=200");h(e.items)}catch(e){}})())},[d,U]);let q=async()=>{if(""!==b){v(!0),S(null);try{await (0,n.requestJson)("/recommendations",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobCaseId:b,entityId:s,stage:g})}),N({jobCaseId:Number(b)})}catch(e){S("写入失败(服务未启动或无权限)")}finally{v(!1)}}};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:()=>{o(!0),N(null),S(null)},className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700",children:"加入推荐流程"}),d?(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/30",children:(0,r.jsx)("div",{className:"w-96 rounded-lg bg-white p-4 shadow-xl",children:j?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("p",{className:"mb-3 text-sm text-gray-800",children:["已把 ",(0,r.jsx)("span",{className:"font-medium",children:i})," 加入推荐流程。"]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:()=>o(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"关闭"}),(0,r.jsx)("a",{href:"/jobs?id=".concat(j.jobCaseId),className:"rounded bg-blue-600 px-3 py-1 text-xs text-white hover:bg-blue-700",children:"去职位推荐流程 →"})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("h3",{className:"mb-3 text-sm font-semibold text-gray-900",children:["把 ",i," 加入推荐流程"]}),(0,r.jsxs)("label",{className:"mb-2 block text-xs text-gray-500",children:["目标职位",(0,r.jsx)(x.Z,{allowClear:!0,placeholder:"选择职位…",className:"mt-1",style:{width:"100%"},value:""===b?void 0:b,onChange:e=>p(null!=e?e:""),options:m.map(e=>({value:e.id,label:e.title||e.externalId}))})]}),(0,r.jsxs)("label",{className:"mb-3 block text-xs text-gray-500",children:["推荐阶段(默认待邀请)",(0,r.jsx)(x.Z,{placeholder:"推荐阶段(默认待邀请)",className:"mt-1",style:{width:"100%"},value:g,onChange:e=>y(e),options:(null!==(l=null==c?void 0:c.stages)&&void 0!==l?l:[{key:"pending_invite",label:"待邀请"}]).map(e=>({value:e.key,label:e.label}))})]}),k?(0,r.jsx)("p",{className:"mb-2 text-xs text-red-600",children:k}):null,(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)("button",{onClick:()=>o(!1),className:"rounded border border-gray-300 px-3 py-1 text-xs text-gray-600",children:"取消"}),(0,r.jsx)("button",{onClick:()=>void q(),disabled:""===b||f,className:"rounded bg-blue-600 px-3 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:f?"写入中…":"确认加入"})]})]})})}):null]})}var S=l(32587);let C={talent:"人才",job:"职位",company:"公司"},U={talent:"bg-blue-50 text-blue-700",job:"bg-yellow-50 text-yellow-700",company:"bg-green-50 text-green-700"};function q(e){var t,l,s,d,o,c;let{type:u,entity:b,sources:p}=e,[g,y]=(0,a.useState)(p.length?String(p[0].id):""),[f,v]=(0,a.useState)(!1),[w,q]=(0,a.useState)(null),[I,E]=(0,a.useState)(null),[T,A]=(0,a.useState)(null);async function O(){q(null);try{let e=await fetch("".concat((0,n.Ox)(),"/entities/").concat(u,"/").concat(b.id,"/repair-prompt"));if(!e.ok)throw Error("HTTP ".concat(e.status));let t=await e.json();await navigator.clipboard.writeText(t.prompt),v(!0),setTimeout(()=>v(!1),4e3)}catch(e){q(e.message)}}(0,a.useEffect)(()=>{if("talent"!==u)return;let e=!0;return(async()=>{try{var t,l;let r=await fetch("".concat((0,n.Ox)(),"/entities/talent/").concat(b.id,"/matches"));if(!r.ok)return;let a=await r.json();if(!e)return;E(null!==(t=null==a?void 0:a.portraitId)&&void 0!==t?t:null),A(null!==(l=null==a?void 0:a.matches)&&void 0!==l?l:[])}catch(e){}})(),()=>{e=!1}},[u,b.id]);let _="talent"===u?null!==(t=b.name)&&void 0!==t?t:"(未命名)":"job"===u?null!==(l=b.title)&&void 0!==l?l:"(未命名职位)":null!==(s=b.name)&&void 0!==s?s:"(未命名)",J="talent"===u?b.headline:"job"===u?b.company:"",P=p.find(e=>String(e.id)===g)||p[0];return(0,r.jsxs)("div",{className:"w-full",children:["talent"===u?(0,i.K5)()?(0,r.jsx)(N.X,{feature:"人才查重合并",localPath:"/entity/talent/".concat(b.id)}):(0,r.jsx)(j,{entity:b}):null,(0,r.jsxs)("header",{className:"mb-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:_}),(0,r.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(null!==(d=U[u])&&void 0!==d?d:"bg-gray-100 text-gray-600"),children:null!==(o=C[u])&&void 0!==o?o:u}),(0,r.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:b.source}),b.sourceUrl?(0,r.jsx)("a",{href:b.sourceUrl,target:"_blank",rel:"noreferrer",title:b.sourceUrl,className:"max-w-xl truncate text-sm text-blue-600 hover:underline",children:b.sourceUrl}):null]}),J?(0,r.jsx)("p",{className:"mt-1 text-gray-600",children:J}):null,b.sessionId?(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:O,className:"rounded bg-amber-600 px-3 py-1 text-sm text-white hover:bg-amber-700",children:f?"已复制 ✓ 请发给 agent":"解析有误让agent修复"}),(0,r.jsx)("span",{className:"text-xs text-gray-400",children:"按录制重解析、修解析 bug、提 issue"}),w?(0,r.jsx)("span",{className:"text-xs text-red-600",children:w}):null]}):null,"talent"===u?(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,r.jsx)(k,{entityId:b.id,name:_}),(0,r.jsx)("span",{className:"text-xs text-gray-400",children:"加入某职位推荐流水线,默认待邀请"})]}):null]}),"talent"===u?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(S.n,{entity:b}),(0,r.jsx)(S.z,{entity:b,portraitId:I,matches:T,sources:p.map(e=>({id:e.id,sourceUrl:e.sourceUrl,domain:e.domain,createdAt:e.createdAt}))})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"解析来源"}),P?(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"当前来源页面"}),(0,r.jsx)("a",{href:P.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:P.sourceUrl}),P.hasSnapshot?(0,r.jsx)("span",{className:"ml-2 rounded bg-green-50 px-1.5 py-0.5 text-xs text-green-700",children:"有录制快照"}):null]}),p.length>1?(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)("label",{className:"text-sm text-gray-600",children:"历史来源:"}),(0,r.jsx)(x.Z,{size:"small",style:{minWidth:220},value:g,onChange:e=>y(e),options:p.map(e=>({value:String(e.id),label:"".concat(e.domain," \xb7 ").concat((0,m.d3)(e.createdAt))}))}),(0,r.jsx)("a",{href:P.sourceUrl,target:"_blank",rel:"noreferrer",className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700",children:"打开该来源页面"})]}):null]}):(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"暂无解析来源记录"})]}),(0,r.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"原始数据"}),(0,r.jsx)(h.Y,{data:null!==(c=b.extracted)&&void 0!==c?c:b.raw})]})]})]})}var I=l(27828),E=l(26119),T=l(93464);function A(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[l,r]=e;r&&t.set(l,r)});let l=t.toString();return l?"?".concat(l):""}function O(e){var t,l;let{type:x,label:h,batchDelete:b}=e,p=(0,s.useRouter)(),g=(0,s.usePathname)(),y=(0,s.useSearchParams)(),f=y.get("id")||"",v=(0,a.useMemo)(()=>({q:y.get("q")||"",status:"",from:y.get("from")||"",to:y.get("to")||""}),[y]),[j,N]=(0,a.useState)(null),[k,S]=(0,a.useState)(!1),[C,U]=(0,a.useState)(!1),[O,_]=(0,a.useState)(0),J=(0,a.useCallback)(e=>{var t,l;let r=null!==(t=e.filters)&&void 0!==t?t:v,a=A({id:null!==(l=e.id)&&void 0!==l?l:f,q:r.q,from:r.from,to:r.to});p.replace("".concat(g).concat(a))},[v,f,g,p]),{session:P,sync:L}=(0,w.nu)(),R=null!==(t=null==L?void 0:L.activeTenantId)&&void 0!==t?t:null,M=(0,E.B)({deleteUrl:"/entities/".concat(x),label:h,onDeleted:()=>z.refresh(),currentUserId:null!==(l=null==P?void 0:P.hmUserId)&&void 0!==l?l:null}),z=(0,T.k)({fetchPage:(0,a.useCallback)(async(e,t)=>{let l=A({q:v.q,from:v.from,to:v.to}),r=await (0,n.requestJson)("/entities?type=".concat(x,"&limit=").concat(t,"&offset=").concat(e).concat(l.replace("?","&")));return{items:r.items,total:r.total,nextOffset:r.nextOffset}},[x,v.q,v.from,v.to,R]),pageSize:50,deps:[x,v.q,v.from,v.to,R]}),W=z.items;(0,a.useEffect)(()=>{M.prune(W.map(e=>String(e.id)))},[W,M]);let F=(0,a.useCallback)(()=>{if(W.length)return W[0].updatedAt},[W]);(0,a.useEffect)(()=>{if(!f){N(null),U(!1);return}S(!0),U(!1),Promise.all([(0,n.requestJson)("/entities/".concat(x,"/").concat(f)),(0,n.requestJson)("/entities/".concat(x,"/").concat(f,"/sources")).catch(()=>null)]).then(e=>{let[t,l]=e;N({entity:t.entity,sources:l?l.items:[]})}).catch(()=>{N(null),U(!0)}).finally(()=>{S(!1)})},[x,f,R,O]);let D=(0,a.useMemo)(()=>W.map(e=>{var t,l,a;let s=String(e.id),n="talent"===x?(0,r.jsx)(I.oj,{name:null!==(t=e.name)&&void 0!==t?t:"(未命名)",headline:e.headline,source:e.source,updatedAt:e.updatedAt}):"job"===x?(0,r.jsx)(I.rY,{title:null!==(l=e.title)&&void 0!==l?l:"(无标题)",source:e.source,company:e.company,sourceUrl:e.sourceUrl,updatedAt:e.updatedAt}):(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"font-medium text-gray-900",children:null!==(a=e.name)&&void 0!==a?a:"(未命名)"}),(0,r.jsxs)("div",{className:"mt-0.5 flex items-center gap-2 text-xs text-gray-400",children:[(0,r.jsx)("span",{children:e.source}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsx)("span",{children:(0,m.d3)(e.updatedAt)})]})]});return{id:s,content:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[b&&!(0,i.K5)()&&M.checkbox(s),n]})}}),[W,x,b,M]),Y=f?k?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):C?(0,r.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,r.jsx)("button",{type:"button",onClick:()=>_(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):j?(0,r.jsx)(q,{type:x,entity:j.entity,sources:j.sources}):(0,r.jsxs)("div",{className:"flex h-full items-center justify-center text-red-500",children:["未找到该",h]}):(0,r.jsxs)("div",{className:"flex h-full items-center justify-center text-gray-400",children:["请在左侧选择一条",h,"查看详情"]});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.m,{filterBar:(0,r.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,r.jsx)(d.f,{value:v,onChange:e=>J({filters:e})}),(0,r.jsx)(u.Y,{pollUrl:"/entities/count?type=".concat(x),getLatestTimestamp:F,onRefresh:()=>z.refresh(),label:h}),b&&!(0,i.K5)()&&M.bar(D)]}),listPanel:z.error?(0,r.jsxs)("div",{className:"flex-1 overflow-auto p-4 text-center text-sm",children:[(0,r.jsx)("span",{className:"text-red-500",children:"加载失败"}),(0,r.jsx)("button",{type:"button",onClick:()=>z.refresh(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,r.jsx)(c.L,{items:D,selectedId:f,onSelect:e=>J({id:e}),loading:z.loading,emptyText:"暂无".concat(h,"数据"),onLoadMore:z.loadMore,loadingMore:z.loadingMore,exhausted:z.exhausted}),detailPanel:Y}),M.modal()]})}function _(e){return(0,r.jsx)(a.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(O,{...e})})}},37202:function(e,t,l){l.d(t,{f:function(){return n}});var r=l(72835),a=l(60635),s=l(78606);function n(e){let{value:t,showStatus:l,statusOptions:n,onChange:i}=e,[d,o]=(0,a.useState)(t);return(0,a.useEffect)(()=>{o(t)},[t.q,t.status,t.from,t.to]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{(d.q!==t.q||d.status!==t.status||d.from!==t.from||d.to!==t.to)&&i(d)},300);return()=>clearTimeout(e)},[d.q,d.status,d.from,d.to]),(0,r.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)("input",{type:"text",value:d.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,r.jsx)("button",{type:"button",onClick:()=>i({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:!d.q&&!d.status&&!d.from&&!d.to,children:(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,r.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),l?(0,r.jsx)(s.Z,{size:"small",allowClear:!0,placeholder:"全部状态",style:{minWidth:130},value:d.status||void 0,onChange:e=>o(t=>({...t,status:null!=e?e:""})),options:(n||[]).map(e=>({value:e.value,label:e.label}))}):null]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"date",value:d.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,r.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,r.jsx)("input",{type:"date",value:d.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"})]})]})}},19036:function(e,t,l){l.d(t,{Y:function(){return n}});var r=l(72835),a=l(60635),s=l(74431);function n(e){let{pollUrl:t,intervalMs:l=5e3,onRefresh:n,getLatestTimestamp:i,label:d="新数据"}=e,[o,c]=(0,a.useState)(0),[u,x]=(0,a.useState)(!1),m=(0,a.useRef)(void 0);return((0,a.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,a.useEffect)(()=>{m.current=i(),c(0)},[i]),(0,a.useEffect)(()=>{if(u)return;let e=async()=>{let e=m.current;if(!e)return;let l=t.includes("?")?"&":"?",r=0;try{var a;let n=await (0,s.requestJson)("".concat(t).concat(l,"since=").concat(encodeURIComponent(e)));r=null!==(a=n.count)&&void 0!==a?a:0}catch(e){}c(e=>Math.max(e,r))};e();let r=setInterval(e,l);return()=>clearInterval(r)},[t,l,u]),o<=0)?null:(0,r.jsxs)("button",{type:"button",onClick:()=>{c(0),n()},className:"w-full bg-blue-50 px-3 py-2 text-center text-sm text-blue-700 hover:bg-blue-100 active:bg-blue-200",children:["有 ",o," 条",d,",点击刷新"]})}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="55400a25-37a2-4f26-9083-32947ab0753c",e._sentryDebugIdIdentifier="sentry-dbid-55400a25-37a2-4f26-9083-32947ab0753c")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[686],{49616:function(e,t,a){a.d(t,{I:function(){return x},v:function(){return p}});var s=a(72835),n=a(60635),r=a(74431),o=a(84704);function l(e){let t=null!=e?e:"<职位管理页 tabId>";return["公共纪律(全文 SSOT: hunter-mate-harness .harness/workflows/subagent-job-platform-ops.md,先读再动手):",'0. 浏览器操作只走 hunter-mate extension *;控制命令 JSON 显式带 "__tab":"'.concat(t,'"(cp.tab.* 子命令用 "tab":"').concat(t,'");录制 title 带 job-ops- 前缀;执行环境带写护栏先切 SINGLE_REPO_DEV。'),"1. 风控红线:cp.eval 读 location.href/document.title 判页面存活;CAPTCHA/登录墙/空白杀 → 立即 halt 当日不重试;eval ≥2s、字段填写 ≥1.5s、切页 3-5s(human-paced,平台数值以 risk-profile 为准)。","2. 回写契约:结果必须调 hunter-mate API 落库并 GET 读回;只操作不落库=未完成。凭证零落地:平台账号密码不入库,note 只记别名。"].join("\n")}function d(e,t,a,s,n){return["[hunter-mate] ".concat(e),"","职位案件: #".concat(t," ").concat(a,"(平台槽位: ").concat(s,")"),"API 基址: http://127.0.0.1:34571",...n?["平台页 tab: ".concat(n,"(已开则定向复用;未开用 hunter-mate extension 后台新开,禁 CDP 附加导航)")]:[],""].join("\n")}function c(e){return[d("收简历:到平台收件箱收取本案职位简历,落人才库并回写简历流水。",e.jobCaseId,e.title,e.platform),l(),"","执行步骤:","1. 前置:GET /job-cases/".concat(e.jobCaseId,"/postings 确认 ").concat(e.platform," 槽位 status=published(未发布无收件箱)。"),"2. 打开收件箱(猎聘=职位详情页 /job/gethjobdetail?hjobId=<id> 内待处理简历区;入口结构按 flows/resume-collect.yaml,标 recon-pending 处先只读 recon 固化再提取)。","3. 逐份提取:候选人姓名/接收时间;详情走既有 talent adapter 落人才库,命中已有人才复用 talentEntityId(dedup 结论),不重复建档。","4. 回写:先 GET /job-cases/".concat(e.jobCaseId,"/applications 查重(同人同案跳过),再 POST /job-cases/").concat(e.jobCaseId,'/applications {name, platform:"').concat(e.platform,'", talentEntityId?, note};单平台单次 ≤20 份;回写后 GET 读回确认。'),"5. 只读平台:沟通/回复/下载等任何平台写操作不在范围。"].join("\n")}let i={draft:{label:"待发布",cls:"bg-gray-100 text-gray-500"},published:{label:"已发布",cls:"bg-emerald-100 text-emerald-700"},offline:{label:"已下线",cls:"bg-gray-200 text-gray-400"}},u=["job","job-list","job-detail"];function p(e){let{platform:t,sm:a}=e,n=(0,o.mS)(t);return(0,s.jsx)("span",{title:t,className:"inline-flex items-center justify-center rounded bg-[color:var(--brand-soft)] font-semibold ".concat(a?"h-3.5 w-3.5 text-[8px]":"h-4 w-4 text-[9px]"),style:{color:n.fg},children:n.label})}function b(e){let{text:t,label:a,primary:r}=e,[o,l]=(0,n.useState)(!1);return(0,s.jsx)("button",{type:"button",onClick:async()=>{try{await navigator.clipboard.writeText(t)}catch(a){let e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),e.remove()}l(!0),window.setTimeout(()=>l(!1),2e3)},className:r?"rounded bg-blue-600 px-2 py-1 text-xs text-white hover:bg-blue-700":"rounded border border-blue-300 px-1.5 py-0.5 text-xs text-blue-700 hover:bg-blue-50",children:o?"已复制 ✓":a})}function x(e){var t,a;let{jobCaseId:o,caseTitle:x,canOperate:m=!0}=e,g=Number(String(o).split(":").pop()),[h,y]=(0,n.useState)([]),[f,j]=(0,n.useState)([]),[v,N]=(0,n.useState)(new Set),[C,w]=(0,n.useState)(""),[S,k]=(0,n.useState)([]),[I,E]=(0,n.useState)(!1),[T,A]=(0,n.useState)(""),[P,_]=(0,n.useState)(null),[J,D]=(0,n.useState)(null),[O,q]=(0,n.useState)(""),[G,H]=(0,n.useState)([]),[U,L]=(0,n.useState)(!1),[R,M]=(0,n.useState)([]),[K,V]=(0,n.useState)(""),[W,z]=(0,n.useState)(""),[B,F]=(0,n.useState)(""),Q=(0,n.useCallback)(async()=>{try{y(await (0,r.requestJson)("/job-cases/".concat(g,"/postings")))}catch(e){}try{M(await (0,r.requestJson)("/job-cases/".concat(g,"/applications")))}catch(e){}},[o]);(0,n.useEffect)(()=>{Q(),(async()=>{try{k(await (0,r.requestJson)("/job-postings/sources"))}catch(e){}})(),(async()=>{try{let e=await (0,r.requestJson)("/adapters/capabilities");j(e.platforms)}catch(e){}})()},[Q]);let X=(0,n.useCallback)(e=>{let t=e.trim().toLowerCase();return f.find(e=>e.platform===t||t.includes(e.platform)||e.platform.includes(t))},[f]),Y=(0,n.useCallback)(async(e,t,a)=>{E(!0),A("");try{await (0,r.requestJson)(e,{method:t,headers:{"Content-Type":"application/json"},body:null!=a?JSON.stringify(a):void 0})}catch(e){return E(!1),A("操作失败(服务端拒绝或网络错误)"),!1}return E(!1),await Q(),!0},[Q]),Z=(0,n.useCallback)(async()=>{try{let e=await (0,r.requestJson)("/entities?type=job&limit=10&q=".concat(encodeURIComponent(O.trim())));H(e.items)}catch(e){H([]),A("搜索失败,请重试")}},[O]),$=(0,n.useCallback)(async(e,t)=>{("new"===e?await Y("/job-cases/".concat(g,"/postings"),"POST",{platform:t.source,jobPostingId:t.id,status:"published"}):await Y("/job-case-postings/".concat(e),"PATCH",{jobPostingId:t.id,status:"published"}))&&(D(null),H([]),q(""))},[Y,o]),ee=(0,n.useMemo)(()=>{let e=new Set;for(let t of h)e.add(t.platform);for(let t of R)t.platform&&e.add(t.platform);return Array.from(e).sort()},[h,R]),et=ee.includes(K)?K:null!==(t=ee[0])&&void 0!==t?t:"",ea=(0,n.useMemo)(()=>R.filter(e=>{var t;return(null!==(t=e.platform)&&void 0!==t?t:"")===et}),[R,et]),es=h.filter(e=>v.has(e.id)).map(e=>e.platform);return(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("div",{className:"flex items-center gap-2 text-xs text-gray-400",children:(0,s.jsx)("span",{children:"发布是 agent 平台适配能力:勾选平台后复制任务 prompt 给 agent 执行;手动操作收在「手动」里。"})}),T?(0,s.jsx)("div",{className:"text-xs text-red-500",children:T}):null,(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(b,{primary:!0,label:"让Agent同步检查".concat(es.length?"(".concat(es.join("、"),")"):""),text:[d("职位已发布同步检查:到平台职位管理页核对本案职位是否已发布,回写槽位状态。",(a={jobCaseId:g,title:x,platforms:es.length?es:["<勾选平台>"]}).jobCaseId,a.title,a.platforms.join("、"),a.tabId),l(a.tabId),"","执行步骤:","1. GET /job-cases/".concat(a.jobCaseId,"/postings 读目标平台槽位(须有 pid;无槽位先 POST 建 draft 槽位)。"),"2. 打开平台职位管理页(猎聘=https://h.liepin.com/job/showlistpage?jobStatus=11);解析优先走 adapter:录制该页 → recordings show <sid> --parse(jobs-list adapter);adapter 未就绪按 flows/job-sync.yaml recon 选择器只读提取(标 assumed)。","3. 标题归一化比对(去空白/全半角/大小写;企业名包装差异忽略):命中 → 取平台行 id+状态;同标题多行取最新,note 记全部候选。",'4. 回写:命中 → PATCH /job-case-postings/<pid> {status:"published", note:"synced <date> 平台行=<id> 平台状态=<status>"};未命中 → note 记"未找到发布 <date>",status 保持 draft。',"5. 平台有而本地 job_postings 无 → 触发 adapter parse 落库后再补链接;全部回写后 GET 读回确认。"].join("\n")}),(0,s.jsx)("span",{className:"text-xs text-gray-400",children:es.length?"把 prompt 贴给 agent,回写后刷新可见":"先勾选下方平台槽位"})]}),(0,s.jsx)("div",{className:"space-y-1.5",children:0===h.length?(0,s.jsx)("div",{className:"rounded border border-dashed border-gray-200 p-4 text-center text-xs text-gray-400",children:"还没有平台槽位,先在下方添加"}):h.map(e=>{var t,a;let n=X(e.platform),r=!!n&&n.rules>0,o=!!n&&n.pageClasses.some(e=>u.some(t=>e.startsWith(t)));return(0,s.jsxs)("div",{className:"flex items-center gap-2 rounded border border-gray-200 px-2.5 py-1.5 text-sm",children:[(0,s.jsx)("input",{type:"checkbox",checked:v.has(e.id),onChange:t=>{let a=new Set(v);t.target.checked?a.add(e.id):a.delete(e.id),N(a)},title:"勾选后纳入同步检查"}),(0,s.jsx)(p,{platform:e.platform}),(0,s.jsx)("span",{className:"w-24 truncate font-medium text-gray-800",children:e.platform}),(0,s.jsx)("span",{className:"rounded px-1.5 py-0.5 text-[10px] ".concat(r?"bg-blue-50 text-blue-600":"bg-gray-100 text-gray-400"),title:n?"adapter rules=".concat(n.rules," pageClasses=").concat(n.pageClasses.join(",")):"adapter 未登记",children:r?o?"适配\xb7职位":"适配\xb7人才":"未适配"}),(0,s.jsx)("span",{className:"rounded px-1.5 py-0.5 text-xs ".concat(i[e.status].cls),children:i[e.status].label}),e.posting?(0,s.jsxs)("a",{href:e.posting.sourceUrl,target:"_blank",rel:"noreferrer",className:"min-w-0 flex-1 truncate text-xs text-blue-600 hover:underline",title:e.posting.sourceUrl,children:[null!==(t=e.posting.title)&&void 0!==t?t:"(无标题)",e.posting.company?" \xb7 ".concat(e.posting.company):""]}):(0,s.jsx)("span",{className:"flex-1 text-xs text-gray-300",children:"未链接发布"}),e.publishedAt?(0,s.jsx)("span",{className:"text-xs text-gray-400",children:e.publishedAt.slice(0,10)}):null,(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:["published"!==e.status?(0,s.jsx)(b,{label:"让Agent发布",text:[d("发布职位(谨慎级写操作,费用敏感):代用户在平台发布本职位,查重前置(禁止重复发布)→资格前置→recon→填单→自检→提交→回写。",(a={jobCaseId:g,title:x,platform:e.platform}).jobCaseId,a.title,a.platform,a.tabId),l(a.tabId),"","执行步骤:","1. 资格硬闸门:读平台发布资格(猎聘=职位管理页顶《猎头诚信联盟承诺函》审核状态+账户资源配额);不足 → halt 报告,不绕过。",'2. 查重硬闸门(发布可能产生费用,禁止重复发布):先做同步检查同款列表核对(adapter parse 优先,标题归一化比对本案职位);命中已发布/审核中 → 立即 halt,回报用户裁定"再发重复 vs 旧职位修改再发",不得自行决定;未命中须把比对证据(行数+标题集合)写进汇报。',"2b. 费用意识:发布前 recon 平台收费规则(不可见标 assumed 并声明);同平台同职位只发一次,再发/多平台代发须用户逐个授权。","3. 表单 recon:打开发职位页(猎聘=职位管理「发职位」入口,禁直达表单 URL),按 flows/job-publish.yaml 字段清单逐项读控件;recon-pending 项首跑只 recon 不提交,补录 flow 后再执行。","4. 填单(JobCase #".concat(a.jobCaseId,"):").concat(a.jd?"JD 摘要:".concat(a.jd):"职位信息以 JobCase 详情为准",";每字段间隔 ≥2s,eval 间隔 ≥3s(表单页红线)。"),"5. 提交前自检:cp.eval 读表单全部已填值与期望逐字段比对;提交前状态录一次(录制最后一镜)。","6. 提交+读回:点击提交 → 等审核态/结果文案 → 读平台状态;提交步出现 CAPTCHA/二次验证 → 立即 halt 报告人工,绝不重试提交。",'7. 回写:PATCH /job-case-postings/<pid> {status:"published", note:"published <date> 平台状态=<审核中|已发布|失败原因原文> 查重证据=<行数+标题>"};失败完整回写原因;等平台列表可见后走同步检查补链接。'].join("\n")}):(0,s.jsx)(b,{label:"让Agent收简历",text:c({jobCaseId:g,title:x,platform:e.platform})}),m?(0,s.jsx)("button",{type:"button",onClick:()=>_(P===e.id?null:e.id),className:"rounded border border-gray-200 px-1.5 py-0.5 text-gray-400 hover:bg-gray-50",children:"手动"}):null]}),P===e.id&&m?(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:["published"!==e.status?(0,s.jsx)("button",{type:"button",disabled:I,onClick:()=>void Y("/job-case-postings/".concat(e.id),"PATCH",{status:"published"}),className:"rounded border border-emerald-300 px-1.5 py-0.5 text-emerald-700 hover:bg-emerald-50",children:"标记已发布"}):(0,s.jsx)("button",{type:"button",disabled:I,onClick:()=>void Y("/job-case-postings/".concat(e.id),"PATCH",{status:"offline"}),className:"rounded border border-gray-300 px-1.5 py-0.5 text-gray-500 hover:bg-gray-50",children:"下线"}),(0,s.jsx)("button",{type:"button",disabled:I,onClick:()=>{D(J===e.id?null:e.id),q(""),H([])},className:"rounded border border-blue-300 px-1.5 py-0.5 text-blue-700 hover:bg-blue-50",children:e.posting?"换链接":"链接发布"}),(0,s.jsx)("button",{type:"button",disabled:I,onClick:()=>void Y("/job-case-postings/".concat(e.id),"DELETE"),className:"rounded border border-gray-200 px-1.5 py-0.5 text-gray-400 hover:bg-red-50 hover:text-red-500",children:"删除槽位"})]}):null]},e.id)})}),null!=J&&m?(0,s.jsxs)("div",{className:"rounded border border-blue-200 bg-blue-50/50 p-2",children:[(0,s.jsxs)("div",{className:"flex gap-1.5",children:[(0,s.jsx)("input",{type:"text",value:O,onChange:e=>q(e.target.value),onKeyDown:e=>"Enter"===e.key&&void Z(),placeholder:"按标题/公司搜索解析库里的职位发布…",className:"flex-1 rounded border border-gray-300 px-2 py-1 text-xs outline-none focus:border-blue-500"}),(0,s.jsx)("button",{type:"button",onClick:()=>void Z(),className:"rounded bg-blue-600 px-2 py-1 text-xs text-white hover:bg-blue-700",children:"搜索"})]}),(0,s.jsxs)("div",{className:"mt-1.5 space-y-1",children:[G.map(e=>{var t;return(0,s.jsxs)("button",{type:"button",onClick:()=>void $(J,e),className:"block w-full truncate rounded bg-white px-2 py-1 text-left text-xs hover:bg-blue-100",title:e.sourceUrl,children:[(0,s.jsx)(p,{platform:e.source,sm:!0})," ",null!==(t=e.title)&&void 0!==t?t:"(无标题)",e.company?" \xb7 ".concat(e.company):""," ",(0,s.jsxs)("span",{className:"text-gray-400",children:["(",e.source,")"]})]},e.id)}),0===G.length&&O?(0,s.jsx)("div",{className:"text-xs text-gray-400",children:"无匹配,换个关键词"}):null]})]}):null,m?(0,s.jsxs)("div",{className:"flex items-center gap-1.5 border-t border-gray-100 pt-2",children:[(0,s.jsx)("input",{type:"text",list:"hm-known-platforms",value:C,onChange:e=>w(e.target.value),placeholder:"平台名(如 liepin.com / 拉勾)",className:"w-56 rounded border border-gray-300 px-2 py-1 text-xs outline-none focus:border-blue-500"}),(0,s.jsx)("datalist",{id:"hm-known-platforms",children:S.map(e=>(0,s.jsx)("option",{value:e},e))}),(0,s.jsx)("button",{type:"button",disabled:I||!C.trim(),onClick:()=>void Y("/job-cases/".concat(g,"/postings"),"POST",{platform:C.trim()}).then(e=>e&&w("")),className:"rounded border border-gray-300 px-2 py-1 text-xs hover:bg-gray-50 disabled:opacity-40",children:"添加待发布"}),(0,s.jsx)("button",{type:"button",disabled:I||!C.trim(),onClick:()=>{D("new"),q(C.trim()),Z()},className:"rounded border border-blue-300 px-2 py-1 text-xs text-blue-700 hover:bg-blue-50 disabled:opacity-40",children:"添加并链接发布…"})]}):(0,s.jsx)("div",{className:"rounded border border-amber-100 bg-amber-50 px-2 py-1 text-xs text-amber-600",children:"仅该职位的 op/rs 可管理发布与简历,你可查看"}),(0,s.jsxs)("section",{className:"border-t border-gray-100 pt-3",children:[(0,s.jsxs)("div",{className:"mb-1.5 flex items-center justify-between",children:[(0,s.jsxs)("h3",{className:"text-sm font-medium text-gray-800",children:["收到的简历(",R.length,")"]}),et?(0,s.jsx)(b,{label:"让Agent收简历",text:c({jobCaseId:g,title:x,platform:et})}):null]}),ee.length?(0,s.jsx)("div",{className:"mb-2 flex gap-1",children:ee.map(e=>(0,s.jsxs)("button",{type:"button",onClick:()=>V(e),className:"flex items-center gap-1 rounded px-2 py-1 text-xs ".concat(et===e?"bg-[color:var(--brand-soft)] font-medium text-[color:var(--brand-strong)]":"text-gray-500 hover:bg-gray-100"),children:[(0,s.jsx)(p,{platform:e,sm:!0}),e,(0,s.jsxs)("span",{className:"text-gray-400",children:["(",R.filter(t=>{var a;return(null!==(a=t.platform)&&void 0!==a?a:"")===e}).length,")"]})]},e))}):(0,s.jsx)("div",{className:"rounded border border-dashed border-gray-200 p-3 text-center text-xs text-gray-400",children:"还没有平台槽位;添加平台并发布后,按平台收简历"}),et?0===ea.length?(0,s.jsxs)("div",{className:"rounded border border-dashed border-gray-200 p-3 text-center text-xs text-gray-400",children:[et," 还没有收到简历"]}):(0,s.jsx)("div",{className:"space-y-1",children:ea.map(e=>{var t,a;return(0,s.jsxs)("div",{className:"flex items-center gap-2 rounded border border-gray-100 px-2 py-1 text-xs",children:[(0,s.jsx)("span",{className:"font-medium text-gray-800",children:e.name}),(null===(t=e.posting)||void 0===t?void 0:t.title)?(0,s.jsx)("span",{className:"min-w-0 flex-1 truncate text-gray-400",children:e.posting.title}):(0,s.jsx)("span",{className:"flex-1"}),e.note?(0,s.jsx)("span",{className:"text-gray-400",children:e.note}):null,(0,s.jsx)("span",{className:"text-gray-400",children:null===(a=e.receivedAt)||void 0===a?void 0:a.slice(0,10)}),m?(0,s.jsx)("button",{type:"button",disabled:I,onClick:()=>void Y("/job-applications/".concat(e.id),"DELETE"),className:"text-gray-300 hover:text-red-500",children:"✕"}):null]},e.id)})}):null,m?(0,s.jsxs)("div",{className:"mt-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>L(!U),className:"text-xs text-gray-400 underline hover:text-gray-600",children:U?"收起手动录入":"手动录入简历(agent 不在场兜底)"}),U?(0,s.jsxs)("div",{className:"mt-1.5 flex items-center gap-1.5",children:[(0,s.jsx)("input",{type:"text",value:W,onChange:e=>z(e.target.value),placeholder:"候选人姓名",className:"w-36 rounded border border-gray-300 px-2 py-1 text-xs outline-none focus:border-blue-500"}),(0,s.jsxs)("span",{className:"text-xs text-gray-500",children:["平台=",(0,s.jsx)("b",{children:et||"未选"})]}),(0,s.jsx)("input",{type:"text",value:B,onChange:e=>F(e.target.value),placeholder:"备注(可空)",className:"w-44 rounded border border-gray-300 px-2 py-1 text-xs outline-none focus:border-blue-500"}),(0,s.jsx)("button",{type:"button",disabled:I||!W.trim()||!et,onClick:()=>void Y("/job-cases/".concat(g,"/applications"),"POST",{name:W.trim(),platform:et,note:B.trim()||void 0}).then(e=>{e&&(z(""),F(""))}),className:"rounded border border-gray-300 px-2 py-1 text-xs hover:bg-gray-50 disabled:opacity-40",children:"录入"})]}):null]}):null]})]})}},88801:function(e,t,a){a.d(t,{hm:function(){return c},mJ:function(){return u},oU:function(){return i}});var s=a(60635);let n="hm-view-mode",r=new Set;function o(){return"bd"===window.localStorage.getItem(n)?"bd":"delivery"}function l(e){return r.add(e),()=>r.delete(e)}function d(e){"undefined"!=typeof document&&(document.documentElement.dataset.view=e)}function c(e){window.localStorage.setItem(n,e),d(e),r.forEach(e=>e())}function i(){d(o())}function u(e){let t=(0,s.useSyncExternalStore)(l,o,()=>"delivery");return null!=e?e:t}}}]);
|
|
@@ -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]="0076c486-7258-48ff-97fb-dd3320b5022e",e._sentryDebugIdIdentifier="sentry-dbid-0076c486-7258-48ff-97fb-dd3320b5022e")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[116],{87126:function(e,t,n){Promise.resolve().then(n.bind(n,84042))},84042:function(e,t,n){"use strict";n.d(t,{AdminDataPage:function(){return c}});var l=n(72835),s=n(4025),a=n(78606),r=n(60635),i=n(65777),u=n(82182),o=n(8448);let d=[{value:"talent_profiles",label:"人才"},{value:"jobcases",label:"职位"},{value:"company_profiles",label:"公司"},{value:"customers",label:"客户"}];function c(){var e,t,n;let{session:c,utoken:h}=(0,i.nu)(),f=null!==(e=null==c?void 0:c.hmUserId)&&void 0!==e?e:null,[x,m]=(0,r.useState)(""),[y,v]=(0,r.useState)("talent_profiles"),[g,p]=(0,r.useState)("all"),[b,N]=(0,r.useState)(1),[j,w]=(0,r.useState)(null),[S,I]=(0,r.useState)(!1),[k,E]=(0,r.useState)(null),[C,_]=(0,r.useState)(new Set),[U,T]=(0,r.useState)(null),[R,z]=(0,r.useState)(!1),[A,O]=(0,r.useState)(null);(0,r.useEffect)(()=>{null==f||x||m(String(f))},[f,x]);let P=(0,r.useCallback)(async(e,t)=>(0,s.k)(e,null!=t?t:{}),[]),D=(0,r.useCallback)(async()=>{if(x){I(!0),E(null);try{let n=new URLSearchParams({hmUserId:x,entity:y,softDeleted:g,page:String(b),pageSize:String(50)}),l=await P("/admin/entities?".concat(n));if(403===l.status){var e,t;let n=await l.json().catch(()=>null),s=null!==(t=null==n?void 0:null===(e=n.message)||void 0===e?void 0:e.code)&&void 0!==t?t:null==n?void 0:n.code;E("ADMIN_NOT_CONFIGURED"===s?"管理功能未开启":"你没有管理权限"),w(null);return}if(!l.ok){E("加载失败(HTTP ".concat(l.status,")")),w(null);return}let s=await l.json();w(s),_(e=>{let t=new Set(s.items.map(e=>e.entityRef)),n=new Set(Array.from(e).filter(e=>t.has(e)));return n.size===e.size?e:n})}finally{I(!1)}}},[P,x,y,g,b]);(0,r.useEffect)(()=>{D()},[D]);let M=(0,r.useMemo)(()=>j?Math.max(1,Math.ceil(j.total/50)):1,[j]),J=(0,r.useCallback)(e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),X=(0,r.useCallback)(async()=>{if(!(null==U?void 0:U.length))return;z(!0),O(null);let e=async()=>{let e=await (0,s.k)("/admin/purge",{method:"POST",body:JSON.stringify({hmUserId:Number(x),entity:y,entityRefs:U})});if(!e.ok){let t=await e.json().catch(()=>null),n=null==t?void 0:t.message;return O("string"==typeof n?n:"清除失败,请稍后重试"),!1}return O("已清除 ".concat(U.length," 条,所有设备会同步删除")),_(new Set),await D(),!0};try{let n=await P("/admin/purge",{method:"POST",body:JSON.stringify({hmUserId:Number(x),entity:y,entityRefs:U})});if(!n.ok){if(401===n.status){var t;O("登录已过期,请在弹窗中重新登录;登录后自动继续清除"),(0,u.jr)({message:"登录已过期,请重新登录",oldUserId:null!==(t=null==c?void 0:c.hmUserId)&&void 0!==t?t:null,retry:()=>e()});return}let l=await n.json().catch(()=>null),s=null==l?void 0:l.message;O("string"==typeof s?s:"清除失败,请稍后重试");return}O("已清除 ".concat(U.length," 条,所有设备会同步删除")),_(new Set),await D()}finally{z(!1),T(null)}},[P,U,x,y,D,h,null==c?void 0:c.hmUserId]);return(0,l.jsxs)("div",{className:"flex h-full flex-col bg-white",children:[(0,l.jsxs)("div",{className:"border-b border-gray-200 px-6 py-4",children:[(0,l.jsx)("h1",{className:"text-lg font-semibold text-gray-900",children:"数据管理"}),(0,l.jsx)("p",{className:"mt-1 text-sm text-gray-500",children:"查看并清理有问题的数据。彻底删除后无法恢复,所有设备同步清除。"})]}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-3 border-b border-gray-100 px-6 py-3",children:[(0,l.jsxs)("label",{className:"flex items-center gap-1.5 text-sm text-gray-600",children:["用户编号",(0,l.jsx)("input",{type:"number",value:x,onChange:e=>m(e.target.value),className:"w-24 rounded border border-gray-300 px-2 py-1 text-sm"})]}),(0,l.jsxs)("label",{className:"flex items-center gap-1.5 text-sm text-gray-600",children:["数据类型",(0,l.jsx)(a.Z,{size:"small",style:{minWidth:140},value:y,onChange:e=>{v(e),N(1)},options:d.map(e=>({value:e.value,label:e.label}))})]}),(0,l.jsxs)("label",{className:"flex items-center gap-1.5 text-sm text-gray-600",children:["删除状态",(0,l.jsx)(a.Z,{size:"small",style:{minWidth:110},value:g,onChange:e=>{p(e),N(1)},options:[{value:"all",label:"全部"},{value:"yes",label:"已删除的"},{value:"no",label:"正常的"}]})]}),(0,l.jsx)("button",{type:"button",onClick:()=>void D(),disabled:S,className:"rounded-lg bg-blue-600 px-4 py-1 text-sm text-white hover:bg-blue-700 disabled:opacity-50",children:S?"加载中…":"查询"}),C.size>0&&(0,l.jsxs)("span",{className:"flex items-center gap-2 text-sm",children:[(0,l.jsxs)("span",{className:"text-gray-500",children:["已选 ",C.size," 条"]}),(0,l.jsx)("button",{type:"button",onClick:()=>T(Array.from(C)),className:"rounded-lg bg-red-600 px-3 py-1 text-white hover:bg-red-700",children:"彻底删除"})]}),A&&(0,l.jsx)("span",{className:"text-xs text-green-600",children:A}),k&&(0,l.jsx)("span",{className:"text-xs text-red-500",children:k})]}),(0,l.jsxs)("div",{className:"flex-1 overflow-auto px-6 py-3",children:[k&&!j?(0,l.jsx)("div",{className:"py-12 text-center text-sm text-gray-400",children:k}):(0,l.jsxs)("table",{className:"w-full text-sm",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"border-b border-gray-100 text-left text-xs text-gray-400",children:[(0,l.jsx)("th",{className:"w-8 py-2",children:(0,l.jsx)("input",{type:"checkbox",className:"accent-blue-600",checked:!!(null==j?void 0:j.items.length)&&C.size===j.items.length,onChange:()=>{var e;return _(C.size===(null==j?void 0:j.items.length)?new Set:new Set(null!==(e=null==j?void 0:j.items.map(e=>e.entityRef))&&void 0!==e?e:[]))}})}),(0,l.jsx)("th",{className:"py-2",children:"编号"}),(0,l.jsx)("th",{className:"py-2",children:"数据类型"}),(0,l.jsx)("th",{className:"py-2",children:"状态"}),(0,l.jsx)("th",{className:"py-2",children:"更新时间"})]})}),(0,l.jsx)("tbody",{className:"divide-y divide-gray-50",children:(null!==(t=null==j?void 0:j.items)&&void 0!==t?t:[]).map(e=>{var t,n;let s=1===e.deleted,a=!s&&null!=e.softDeleted;return(0,l.jsxs)("tr",{className:"hover:bg-gray-50",children:[(0,l.jsx)("td",{className:"py-2",children:(0,l.jsx)("input",{type:"checkbox",className:"accent-blue-600",checked:C.has(e.entityRef),onChange:()=>J(e.entityRef)})}),(0,l.jsx)("td",{className:"py-2 font-mono text-xs text-gray-700",children:e.entityRef}),(0,l.jsx)("td",{className:"py-2 text-gray-600",children:null!==(n=null===(t=d.find(t=>t.value===e.entity))||void 0===t?void 0:t.label)&&void 0!==n?n:e.entity}),(0,l.jsx)("td",{className:"py-2",children:s?(0,l.jsx)("span",{className:"rounded bg-red-100 px-1.5 py-0.5 text-[10px] text-red-600",children:"已清除"}):a?(0,l.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-[10px] text-gray-500",children:"已删除"}):(0,l.jsx)("span",{className:"rounded bg-green-100 px-1.5 py-0.5 text-[10px] text-green-600",children:"正常"})}),(0,l.jsx)("td",{className:"py-2 text-xs text-gray-400",children:(0,o.d3)(e.updatedAt)})]},e.entityRef)})})]}),j&&!j.items.length&&!k&&(0,l.jsx)("div",{className:"py-12 text-center text-sm text-gray-400",children:"没有符合条件的数据"})]}),(0,l.jsxs)("div",{className:"flex items-center justify-between border-t border-gray-100 px-6 py-2 text-sm text-gray-500",children:[(0,l.jsxs)("span",{children:["共 ",null!==(n=null==j?void 0:j.total)&&void 0!==n?n:0," 条"]}),(0,l.jsxs)("span",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{type:"button",disabled:b<=1,onClick:()=>N(e=>e-1),className:"rounded border border-gray-300 px-3 py-1 hover:bg-gray-50 disabled:opacity-40",children:"上一页"}),(0,l.jsxs)("span",{children:[b," / ",M]}),(0,l.jsx)("button",{type:"button",disabled:b>=M,onClick:()=>N(e=>e+1),className:"rounded border border-gray-300 px-3 py-1 hover:bg-gray-50 disabled:opacity-40",children:"下一页"})]})]}),U&&(0,l.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40",children:(0,l.jsxs)("div",{className:"w-96 rounded-xl bg-white p-6 shadow-xl",children:[(0,l.jsx)("h3",{className:"text-base font-semibold text-gray-900",children:"彻底删除确认"}),(0,l.jsxs)("p",{className:"mt-3 text-sm text-gray-600",children:["选中的 ",U.length," 条数据会被永久清除,无法恢复,所有设备同步删除。确定继续吗?"]}),(0,l.jsxs)("div",{className:"mt-6 flex justify-end gap-2",children:[(0,l.jsx)("button",{type:"button",disabled:R,onClick:()=>T(null),className:"rounded-lg px-4 py-1.5 text-sm text-gray-600 hover:bg-gray-100",children:"取消"}),(0,l.jsx)("button",{type:"button",disabled:R,onClick:()=>void X(),className:"rounded-lg bg-red-600 px-4 py-1.5 text-sm text-white hover:bg-red-700 disabled:opacity-50",children:R?"处理中…":"确定删除"})]})]})})]})}},65777:function(e,t,n){"use strict";let l;n.d(t,{Cd:function(){return U},Xc:function(){return R},aG:function(){return C},cp:function(){return _},nu:function(){return E},tQ:function(){return T}});var s=n(60635),a=n(74431),r=n(67002),i=n(33447),u=n(21260),o=n(28431),d=n(60529);let c=null,h=null,f=null,x=new Set;function m(){x.forEach(e=>e())}function y(e){c=c?{...c,refreshing:e}:{...S,refreshing:e},m()}function v(e){if(void 0===l){l=e;return}if(e!==l){l=e;try{window.localStorage.removeItem("hm-view-mode")}catch(e){}}}async function g(){try{return await (0,a.requestJson)("/auth/session")}catch(e){return null}}async function p(e){let t=new Headers,n=(0,r.Xc)();n&&t.set("Authorization","UTOKEN ".concat(n));try{return await (0,a.requestJson)(e,{headers:t})}catch(e){return null}}async function b(){y(!0);try{var e,t,n,l,s,r,i,d,h;let f=(0,u.xq)();if(!f){(0,o.nZ)(),c={...S,session:{loggedIn:!1},refreshing:!1,authStatus:"out"},m();return}let x=await (0,a.requestJson)("/hunter-mate/sync/state?heads=0");(0,o.YZ)(null!==(e=x.activeTenantId)&&void 0!==e?e:null);let y=(0,u.OG)(f);v(null!==(n=null!==(t=x.hmUserId)&&void 0!==t?t:y.hmUserId)&&void 0!==n?n:null),c={session:{loggedIn:!0,email:null!==(l=y.email)&&void 0!==l?l:void 0,hmUserId:null!==(r=null!==(s=x.hmUserId)&&void 0!==s?s:y.hmUserId)&&void 0!==r?r:void 0,token:f},sync:{loggedIn:!0,enabled:!0,activeTenantId:(0,o.MA)(),serverSuggestedTenantId:null!==(i=x.activeTenantId)&&void 0!==i?i:null,memberships:null!==(d=x.memberships)&&void 0!==d?d:[],pendingCounts:null!==(h=x.pendingCounts)&&void 0!==h?h:[]},utoken:f,loadError:null,refreshing:!1,authStatus:"in",refresh:j},m()}catch(e){c=c?{...c,loadError:"云端无响应"}:{...S,loadError:"云端无响应"},m()}finally{(null==c?void 0:c.refreshing)&&y(!1)}}async function N(){if((0,i.K5)())return b();y(!0);try{var e;let[t,n]=await Promise.all([g(),p("/datasync/state")]),l=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,s=null!=n?n:null;!s&&t&&l&&l!==(0,r.Xc)()?((0,r.GK)(l),s=await p("/datasync/state")):(0,r.GK)(l),v((null==t?void 0:t.loggedIn)&&null!==(e=t.hmUserId)&&void 0!==e?e:null);let a=!!((null==t?void 0:t.loggedIn)||(null==s?void 0:s.loggedIn));if(!t&&!s){c=c?{...c,loadError:"本地服务无响应"}:{...S,loadError:"本地服务无响应"},m();return}c={session:null!=t?t:{loggedIn:!1},sync:s,utoken:(0,r.Xc)(),loadError:null,refreshing:!1,authStatus:a?"in":"out",refresh:j},m()}finally{(null==c?void 0:c.refreshing)&&y(!1)}}function j(){return h||(h=N().finally(()=>{h=null}))}function w(e){return x.add(e),1===x.size&&(j(),f=setInterval(()=>void j(),6e4)),()=>{x.delete(e),0===x.size&&f&&(clearInterval(f),f=null)}}let S={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:j};function I(){return null!=c?c:S}function k(){return I()}function E(){return(0,s.useSyncExternalStore)(w,I,k)}function C(e){var t;return(null!==(t=null==e?void 0:e.memberships)&&void 0!==t?t:[]).filter(e=>!e.isPersonal&&!e.leftAt)}function _(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 s=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===l&&!e.leftAt);return!s||s.isPersonal?null:l}function U(e,t){var n,l;if(!t)return null;let s=(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==s?void 0:s.role)&&void 0!==l?l:null}function T(){return d.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function R(){return(0,r.Xc)()}},4025:function(e,t,n){"use strict";n.d(t,{k:function(){return o}});var l=n(33447),s=n(21260),a=n(28431),r=n(26416),i=n(67002),u=n(60529);async function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new Headers(t.headers);if(n.has("Content-Type")||n.set("Content-Type","application/json"),(0,l.K5)()){var o,d;let i=(0,s.xq)();i&&n.set("Authorization","HMJWT ".concat(i));let u=(0,a.MA)();null!==u&&n.set("x-hm-active-tenant",String(u));let c=(0,r._)(null!==(o=t.method)&&void 0!==o?o:"GET",e);if(null===c)throw new r.e(null!==(d=t.method)&&void 0!==d?d:"GET",e);return fetch("".concat((0,l.XJ)()).concat(c.path),{...t,headers:n,cache:"no-store"})}let c=(0,i.Xc)();return c&&n.set("Authorization","UTOKEN ".concat(c)),fetch("".concat(u.env.HUNTER_MATE_SERVER_URL||"").concat(e),{...t,headers:n})}},82182:function(e,t,n){"use strict";n.d(t,{H7:function(){return d},jr:function(){return r},mn:function(){return o},nk:function(){return u},qd:function(){return i}});let l=null,s=new Set;function a(){s.forEach(e=>e())}function r(e){l=e,a()}function i(){l&&(l=null,a())}function u(){return l}function o(e){return s.add(e),()=>s.delete(e)}function d(e){if(!e)return null;try{var t,n,l,s,a;let r=e.split(".")[1],i=JSON.parse(decodeURIComponent(escape(atob(r.replace(/-/g,"+").replace(/_/g,"/"))))),u=null!==(a=null!==(s=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!==s?s:null==i?void 0:i.sub)&&void 0!==a?a:null;return"number"==typeof u?u:null}catch(e){return null}}},8448:function(e,t,n){"use strict";function l(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}n.d(t,{d3:function(){return l}})}},function(e){e.O(0,[502,606,431,400,935,744],function(){return e(e.s=87126)}),_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]="1a8d197a-72cf-41b8-b3c5-b123c0dd9355",e._sentryDebugIdIdentifier="sentry-dbid-1a8d197a-72cf-41b8-b3c5-b123c0dd9355")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[109],{74843:function(e,t,s){Promise.resolve().then(s.bind(s,5311))},5311:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return et}});var l=s(72835),a=s(59659),n=s(60635),r=s(27473),i=s(74431),d=s(33447),o=s(8448),c=s(94518),u=s(63718),m=s(86777),x=s(27828),h=s(26119),p=s(93464),b=s(65777),g=s(12789),y=s(58574),v=s(38119),j=s(27485),f=s(6443),N=s(33365),w=s(78606),k=s(59998),S=s(31595),C=s(74435),I=s(67002),O=s(21717);let z=[{hours:24,label:"1 天"},{hours:72,label:"3 天"},{hours:168,label:"7 天"},{hours:720,label:"30 天"}];function T(e){var t;let s,{jobCaseId:a,onClose:r}=e,[d,o]=(0,n.useState)(null),[c,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),[S,C]=(0,n.useState)(!1);async function O(){v(!0),f(null);try{let e=await (0,i.requestJson)("/shares",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jobCaseId:a,scope:"users"===c?{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.requestJson)("/team/members");o(Array.isArray(e.items)?e.items:[])}catch(e){o([])}})()};return e(),(0,I.Lc)(e)},[]);let T=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!=T?T:"",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:()=>{T&&navigator.clipboard.writeText(T).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:S?"已复制 ✓":"复制"})]}),(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"===c,onChange:()=>u("tenant")})," 租户内所有同事"]}),(0,l.jsxs)("label",{className:"text-sm",children:[(0,l.jsx)("input",{type:"radio",checked:"users"===c,onChange:()=>u("users")})," 指定同事"]}),"users"===c?(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)(w.Z,{size:"small",style:{minWidth:130},value:h,onChange:e=>p(e),options:z.map(e=>({value:e.hours,label:e.label}))})]}),(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 O(),disabled:y||"users"===c&&!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 P=null;function J(e,t,s){return(0,i.requestJson)(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 Z(e){return(0,l.jsx)(y.Z,{children:(0,l.jsx)(q,{...e})})}function q(e){var t,s,a,r,c;let{jobCaseId:u,canOperate:m=!0}=e,h=encodeURIComponent(String(u)),p=Number(String(u).split(":").pop()),{message:b}=y.Z.useApp(),[g,z]=(0,n.useState)(P),[Z,q]=(0,n.useState)("recommended"),[E,A]=(0,n.useState)([]),[R,D]=(0,n.useState)({}),[L,_]=(0,n.useState)(null),[F,M]=(0,n.useState)({}),[B,K]=(0,n.useState)(!1),[W,H]=(0,n.useState)(new Set),[Y,X]=(0,n.useState)(new Set),[G,Q]=(0,n.useState)(null),[V,$]=(0,n.useState)(!1),[ee,et]=(0,n.useState)([]),[es,el]=(0,n.useState)(String(u)),[ea,en]=(0,n.useState)(""),[er,ei]=(0,n.useState)(!1),[ed,eo]=(0,n.useState)(null),[ec,eu]=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)})},[])]}(),[em,ex]=(0,n.useState)(!1),[eh]=v.Z.useForm(),[ep,eb]=(0,n.useState)(null);(0,n.useEffect)(()=>{if(P)return;let e=!0,t=()=>{P||(0,i.requestJson)("/recommendations/meta").then(t=>{t&&e&&(P=t,z(t))}).catch(()=>{})};t();let s=(0,I.Lc)(t);return()=>{e=!1,s()}},[g]);let eg=(0,n.useMemo)(()=>{var e;return null!==(e=null==g?void 0:g.stages.map(e=>e.key))&&void 0!==e?e:[]},[g]),ey=(0,n.useCallback)(async()=>{K(!0);try{var e;let t=await (0,i.requestJson)("/job-cases/".concat(h,"/recommendations"));A(t.items),D(null!==(e=t.counts)&&void 0!==e?e:{}),H(new Set)}catch(e){b.error("列表刷新失败,请手动刷新页面")}finally{K(!1)}},[u,b]);(0,n.useEffect)(()=>{q("recommended"),Q(null),_(null),ey()},[ey]),(0,n.useEffect)(()=>{"matched"===Z&&null===L&&(async()=>{var e,t;let[s,l]=await Promise.all([(0,i.requestJson)("/matching/jobs/".concat(p,"/talents")).catch(()=>[]),(0,i.requestJson)("/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)})()},[Z,L,u]);let ev=(0,n.useCallback)(async(e,t)=>{try{let s=await t();(null==s?void 0:s.prompt)&&eu(e,s.prompt)}catch(e){}},[eu]),ej=(e,t,s)=>{let l=new Set(e);l.has(t)?l.delete(t):l.add(t),s(l)},ef=e=>{var t;return e&&g?null!==(t=g.stageLabels[e])&&void 0!==t?t:e:""},eN=async()=>{var e;if(!ea||!g)return;let t=null!==(e=g.formTemplates[ea])&&void 0!==e?e:[],s={};if(t.length)try{s=await eh.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=W.size;ei(!0),eo(null);try{await J("/recommendations/batch-move","POST",{ids:Array.from(W),stage:ea,jobRef:es,formData:Object.keys(l).length?l:void 0})}catch(e){ei(!1),b.error("移动失败,请重试");return}ei(!1),$(!1),eh.resetFields(),b.success("已移动 ".concat(a," 人到「").concat(ef(ea),"」")),await ey()},ew=async()=>{ei(!0),eo(null);let e=Array.from(Y),t=(await Promise.all(e.map(e=>J("/recommendations/adopt","POST",{matchId:e}).then(()=>!0,()=>!1)))).filter(e=>!e).length;ei(!1),X(new Set),await ey(),t&&b.warning("".concat(t," 个采纳失败,请重试"))},ek=async()=>{el(String(u)),en(""),eh.resetFields(),$(!0);try{var e;let t=await (0,i.requestJson)("/job-cases?limit=200");et((null!==(e=t.items)&&void 0!==e?e:[]).map(e=>{var t,s;return{...e,caseKey:null!==(s=e.caseKey)&&void 0!==s?s:null!==(t=e.ref)&&void 0!==t?t:Number.isInteger(e.id)?String(e.id):void 0}}))}catch(e){}};if(!g)return(0,l.jsx)("div",{className:"p-4 text-sm text-gray-400",children:"加载推荐流水线定义…"});let eS=[...g.stages.map(e=>{var t;return{key:e.key,label:"".concat(e.label,"(").concat(null!==(t=R[e.key])&&void 0!==t?t:0,")")}})];eS.splice(1,0,{key:"matched",label:"匹配人才(".concat(null!==(s=null==L?void 0:L.length)&&void 0!==s?s:"…",")")});let eC="matched"===Z?[]:E.filter(e=>e.stage===Z),eI=ea&&null!==(a=g.formTemplates[ea])&&void 0!==a?a:[];return(0,l.jsxs)("div",{children:[(0,l.jsx)(j.Z,{size:"small",activeKey:Z,onChange:e=>{q(e),Q(null)},items:eS.map(e=>({key:e.key,label:e.label}))}),m?(0,l.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-2",children:["recommended"!==Z||(0,d.K5)()?null:(0,l.jsx)(f.ZP,{size:"small",color:"gold",variant:"solid",onClick:()=>void ev("recommend",()=>(0,i.requestJson)("/job-cases/".concat(p,"/recommend-prompt"))),children:"recommend"===ec?"已复制 ✓ 请发给 agent":"再推荐(复制 prompt)"}),"matched"===Z?(0,l.jsxs)(l.Fragment,{children:[(0,d.K5)()?null:(0,l.jsx)(f.ZP,{size:"small",color:"gold",variant:"solid",onClick:()=>void ev("match",()=>(0,i.requestJson)("/job-cases/".concat(p,"/match-prompt"))),children:"match"===ec?"已复制 ✓ 请发给 agent":"打分分析推荐(复制 prompt)"}),(0,l.jsxs)(f.ZP,{size:"small",color:"green",variant:"solid",disabled:!Y.size||er,onClick:()=>void ew(),children:["采纳为推荐(",Y.size,")"]})]}):null,"pending_invite"===Z&&W.size&&!(0,d.K5)()?(0,l.jsx)(f.ZP,{size:"small",color:"blue",variant:"solid",onClick:()=>void ev("invite",()=>J("/recommendations/invite-prompt","POST",{ids:Array.from(W)})),children:"invite"===ec?"已复制 ✓ 请发给 agent":"发送邀请(".concat(W.size,")")}):null,"invited"===Z&&W.size&&!(0,d.K5)()?(0,l.jsx)(f.ZP,{size:"small",color:"blue",variant:"solid",onClick:()=>void ev("reply",()=>J("/recommendations/reply-check-prompt","POST",{ids:Array.from(W)})),children:"reply"===ec?"已复制 ✓ 请发给 agent":"检查回复(".concat(W.size,")")}):null,"matched"!==Z&&W.size?(0,l.jsxs)(f.ZP,{size:"small",onClick:()=>void ek(),children:["移动到…(",W.size,")"]}):null,W.size||Y.size?(0,l.jsx)(f.ZP,{size:"small",type:"text",onClick:()=>{H(new Set),X(new Set)},children:"清除选择"}):null,(0,l.jsx)(f.ZP,{size:"small",color:"purple",variant:"solid",className:"ml-auto",onClick:()=>ex(!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 可操作推荐流程,你可查看"}),em?(0,l.jsx)(T,{jobCaseId:p,onClose:()=>ex(!1)}):null,ed?(0,l.jsx)("div",{className:"mb-2 text-xs text-red-500",children:ed}):null,B?(0,l.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"加载中…"}):"matched"===Z?(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)(S.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:Y,onToggle:e=>ej(Y,e,X),expanded:G,onExpand:e=>Q(G===e?null:e),canOperate:m}):0===eC.length?(0,l.jsxs)("div",{className:"py-8 text-center text-sm text-gray-400",children:["本阶段暂无人选","recommended"===Z?",点上方「再推荐」让 agent 寻访":"","pending_invite"===Z?",可在人才详情「加入推荐流程」":""]}):(0,l.jsx)("div",{className:"space-y-2",children:eC.map(e=>(0,l.jsx)(eO,{row:e,meta:g,checked:W.has(e.id),onToggle:()=>ej(W,e.id,H),expanded:G===e.id,onExpand:()=>Q(G===e.id?null:e.id),onChanged:ey,canOperate:m,stageLabelOf:ef,onOpenDrawer:()=>eb(e)},e.id))}),(0,l.jsx)(O.I,{entityId:null!==(r=null==ep?void 0:ep.entityId)&&void 0!==r?r:null,name:null!==(c=null==ep?void 0:null===(t=ep.snapshot)||void 0===t?void 0:t.name)&&void 0!==c?c:"(未命名)",open:null!==ep,onClose:()=>eb(null)}),(0,l.jsx)(N.Z,{title:"批量移动(".concat(W.size," 人)"),open:V,onCancel:()=>$(!1),onOk:()=>void eN(),okText:er?"移动中…":"确认移动",cancelText:"取消",confirmLoading:er,okButtonProps:{disabled:!ea},destroyOnHidden:!0,width:480,children:(0,l.jsxs)(v.Z,{form:eh,layout:"vertical",preserve:!1,children:[(0,l.jsx)(v.Z.Item,{label:"目标职位",className:"mb-3",children:(0,l.jsx)(w.Z,{size:"small",value:es,onChange:e=>{el(e),en("")},options:(()=>{let e=ee.filter(e=>null!=e.caseKey).map(e=>({value:e.caseKey,label:e.title||e.externalId}));return ee.find(e=>e.caseKey===String(u))||e.unshift({value:String(u),label:"当前职位"}),e})()})}),(0,l.jsx)(v.Z.Item,{label:"目标阶段(当前职位的当前阶段不可选)",className:"mb-3",children:(0,l.jsx)(w.Z,{size:"small",placeholder:"选择阶段…",value:ea||void 0,onChange:e=>en(e),options:eg.filter(e=>!(es===String(u)&&e===Z)).map(e=>({value:e,label:ef(e)}))})}),ea?eI.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",ef(ea),"(将写入全部 ",W.size," 人)"]}),eI.map(e=>(0,l.jsx)(v.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)(k.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]},ea||"no-stage")})]});function eO(e){var t,s,a,r,i,d,c,u,m,h,p,b,g,y,v,j,N,w;let I=e.row,O=null!==(m=e.meta.formTemplates[I.stage])&&void 0!==m?m:[],[z,T]=(0,n.useState)(!1),[P,Z]=(0,n.useState)({}),q=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 J("/recommendations/".concat(I.id),"PATCH",Object.keys(s).length?{formData:s}:{})}catch(e){eo("保存表单失败,请重试");return}T(!1),await e.onChanged()},E=async()=>{try{await J("/recommendations/".concat(I.id),"DELETE")}catch(e){eo("移出流程失败,请重试");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)(S.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)(x.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===(d=I.invitation)||void 0===d?void 0:d.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)(C.Z,{title:"把 ".concat(null!==(y=null===(c=I.snapshot)||void 0===c?void 0:c.name)&&void 0!==y?y:"(未命名)"," 移出推荐流程?"),description:"删除后不可恢复",okText:"确认移出",okButtonProps:{danger:!0},cancelText:"取消",onConfirm:()=>void E(),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阶段表单"]}),z?(0,l.jsxs)("span",{className:"flex gap-2",children:[(0,l.jsx)(f.ZP,{size:"small",type:"primary",onClick:()=>void q(),children:"保存"}),(0,l.jsx)(f.ZP,{size:"small",onClick:()=>T(!1),children:"取消"})]}):e.canOperate?(0,l.jsx)(f.ZP,{size:"small",type:"link",onClick:()=>{var e;let t={...null!==(e=I.formData)&&void 0!==e?e:{}};for(let e of O)e.key in t||(t[e.key]="");Z(t),T(!0)},children:"编辑表单"}):null]}),z?(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=O.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)(k.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)(ez,{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!==(v=I.formData)&&void 0!==v?v:{}).length?Object.entries(null!==(j=I.formData)&&void 0!==j?j:{}).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=O.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,o.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!==(N=I.history)&&void 0!==N?N:[]].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,o.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!==(w=I.history)&&void 0!==w?w:[]).length?null:(0,l.jsx)("li",{className:"text-gray-400",children:"(暂无)"})]})]})]}):null]})}function ez(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)(k.Z,{size:"small",value:a,onChange:e=>r(e.target.value),placeholder:"新字段名",className:"w-32"}),(0,l.jsx)(k.Z,{size:"small",value:i,onChange:e=>d(e.target.value),placeholder:"内容",className:"min-w-0 flex-1"}),(0,l.jsx)(f.ZP,{size:"small",onClick:()=>{let e=a.trim();!e||s.includes(e)||(t(e,i),r(""),d(""))},children:"加一行"})]})}}var E=s(49616);function A(e){var t;return null!==(t=e.ref)&&void 0!==t?t:String(e.id)}let R=[{key:"active",label:"启动中",cls:"bg-emerald-100 text-emerald-700"},{key:"closed",label:"结束",cls:"bg-gray-300 text-gray-700"}],D=[{key:"op",label:"我是 op",cls:"bg-blue-100 text-blue-700"},{key:"rs",label:"我是 rs",cls:"bg-cyan-100 text-cyan-700"}],L=[{key:"recommended",label:"有推荐"},{key:"invite",label:"邀约中"},{key:"replied",label:"已回复"},{key:"to_client",label:"已推客户"},{key:"interview",label:"面试"},{key:"offer",label:"offer"},{key:"onboarding",label:"入职"}],_=["liepin","linkedin","lagou","zhaopin","51job","boss"];function F(e){var t,s,l;let a;let n=(null!==(t=e.folderPath)&&void 0!==t?t:"").split("/").filter(Boolean).filter(e=>!["job","jd","raw"].includes(e));return(a=e.title)&&!["job","jd","raw"].includes(a)?e.title:null!==(l=n.at(-1))&&void 0!==l?l:"职位 ".concat(null!==(s=e.ref)&&void 0!==s?s:"#".concat(e.id))}function M(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 B(){var e,t;let s=(0,r.useRouter)(),a=(0,r.useSearchParams)(),d=a.get("id"),o=a.get("job"),m=null!=o?o:d,[g,y]=(0,n.useState)({}),[v,j]=(0,n.useState)(new Set),[f,N]=(0,n.useState)(""),[S,C]=(0,n.useState)(""),[I,O]=(0,n.useState)(null),[z,T]=(0,n.useState)(!1),[P,J]=(0,n.useState)(!1),[U,Z]=(0,n.useState)(0),{session:q,sync:E}=(0,b.nu)(),B=null!==(e=null==q?void 0:q.hmUserId)&&void 0!==e?e:null,W=null!==(t=null==E?void 0:E.activeTenantId)&&void 0!==t?t:null,H=a.get("st")||"",Y=a.get("rel")||"",X=a.get("cust")||"",G=a.get("stage")||"",Q=a.get("ch")||"",V=(0,n.useMemo)(()=>H.split(",").map(e=>e.trim()).filter(Boolean),[H]),$=(0,n.useMemo)(()=>G?G.split(",").map(e=>e.trim()).filter(Boolean):[],[G]),ee=(0,n.useMemo)(()=>Q?Q.split(",").map(e=>e.trim()).filter(Boolean):[],[Q]),et=!!(H||Y||X||G||Q),es=(0,n.useMemo)(()=>Y?Y.split(",").map(e=>e.trim()).filter(Boolean):et?[]:["op","rs"],[Y,et]),[el,ea]=(0,n.useState)(!1),[en,er]=(0,n.useState)(!1),ei=(0,n.useMemo)(()=>et||en||!el?es:[],[et,en,el,es]),[ed,eo]=(0,n.useState)({active:0,closed:0}),[ec,eu]=(0,n.useState)({}),[em,ex]=(0,n.useState)({}),[eh,ep]=(0,n.useState)({}),[eb,eg]=(0,n.useState)(!1),[ey,ev]=(0,n.useState)(""),[ej,ef]=(0,n.useState)(!1),[eN,ew]=(0,n.useState)(null),ek=(0,h.B)({deleteUrl:"/job-cases",label:"职位",onDeleted:()=>eC.refresh(),currentUserId:B}),eS=(0,n.useMemo)(()=>Array.from(ek.selectedIds),[ek.selectedIds]),eC=(0,p.k)({fetchPage:(0,n.useCallback)(async(e,t)=>{var s;let l=new URLSearchParams;l.set("q",S),l.set("limit",String(t)),l.set("offset",String(e)),V.length&&l.set("status",V.join(",")),ei.length&&l.set("relation",ei.join(",")),X&&l.set("customerId",X),G&&l.set("stage",G),Q&&l.set("channel",Q);let a=await (0,i.requestJson)("/job-cases?".concat(l.toString()));eo(null!==(s=a.statusCounts)&&void 0!==s?s:{active:0,closed:0});let n=a.items.map(e=>A(e));if(n.length){let e=n.some(e=>e.includes(":"))?"refs=".concat(encodeURIComponent(n.join(","))):"ids=".concat(n.join(","));(0,i.requestJson)("/recommendations/summary?".concat(e)).then(e=>{eu(t=>({...t,...e}))}).catch(()=>{});let t=a.items.map(e=>e.id).filter(e=>Number.isInteger(e));t.length&&(0,i.requestJson)("/job-case-postings?ids=".concat(t.join(","))).then(e=>{ex(t=>({...t,...e}))}).catch(()=>{})}return{items:a.items,total:a.total}},[S,V,ei,X,G,Q,W]),pageSize:50,deps:[S,V,ei,X,G,Q,W]});(0,n.useEffect)(()=>{et||el||en||eC.loading||eC.error||0!==eC.total||ea(!0)},[et,el,en,eC.loading,eC.error,eC.total]),(0,n.useEffect)(()=>{ea(!1),er(!1)},[W]),(0,n.useEffect)(()=>{let e=setTimeout(()=>C(f.trim()),300);return()=>clearTimeout(e)},[f]),(0,n.useEffect)(()=>{(0,i.requestJson)("/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)}y(t),j(s)}).catch(()=>{y({}),j(new Set)})},[W]),(0,n.useEffect)(()=>{(0,i.requestJson)("/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;ep(s)}).catch(()=>{ep({})})},[W]);let eI=(0,n.useCallback)(e=>{var t,s;return null==e?void 0:null!==(s=null===(t=eh[e])||void 0===t?void 0:t.label)&&void 0!==s?s:e===B?"我":"用户 #".concat(e)},[eh,B]);(0,n.useEffect)(()=>{ek.prune(eC.items.map(e=>String(e.id)))},[eC.items,ek]),(0,n.useEffect)(()=>{if(!m){O(null),J(!1);return}T(!0),J(!1),(0,i.requestJson)("/job-cases/".concat(encodeURIComponent(m))).then(e=>{O(e)}).catch(()=>{O(null),J(!0)}).finally(()=>{T(!1)})},[m,W,U]);let eO=(0,n.useCallback)(e=>{let t=new URLSearchParams(a.toString());e.id?e.id.includes(":")?(t.set("job",e.id),t.delete("id")):(t.set("id",e.id),t.delete("job")):null===e.id&&(t.delete("id"),t.delete("job")),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]),ez=(0,n.useCallback)(e=>{var t;return null==B?null:e.ownerId===B?"op":(null!==(t=e.rsUserIds)&&void 0!==t?t:[]).includes(B)?"rs":null},[B]),eT=(0,n.useMemo)(()=>eC.items.map(e=>{var t,s,a,n,r,i;return{id:A(e),content:(0,l.jsxs)("div",{className:"flex items-start gap-2",children:[Number.isInteger(e.id)?ek.checkbox(String(e.id)):null,(0,l.jsx)(x.dy,{title:null!==(s=F(e))&&void 0!==s?s:"(职位 ".concat(null!==(t=e.ref)&&void 0!==t?t:"#".concat(e.id),")"),status:e.status,hmhLocal:(null!==(a=e.folderPath)&&void 0!==a?a:"").includes("/local/clients/"),subtitle:M(e),customerName:null!==(r=e.customerName)&&void 0!==r?r:e.customerId?null!==(n=g[e.customerId])&&void 0!==n?n:"客户 #".concat(e.customerId):"未关联客户",opName:null!=e.ownerId?eI(e.ownerId):void 0,rsNames:(null!==(i=e.rsUserIds)&&void 0!==i?i:[]).map(e=>{var t;return null!==(t=eI(e))&&void 0!==t?t:"用户 #".concat(e)}),updatedAt:e.updatedAt,createdAt:e.createdAt,stages:ec[A(e)],platforms:em[e.id],myRole:ez(e)})]})}}),[eC.items,g,ek,ec,em,ez,eI]),eP=(0,n.useMemo)(()=>{let e=new Set;for(let t of Object.values(em))for(let s of t)e.add(s);for(let t of _)e.add(t);return Array.from(e)},[em]),eJ=async()=>{let e;let t=Number(ey),s=eS.map(Number).filter(e=>e!==t);if(!t||!s.length)return;ef(!0);try{e=await (0,i.requestJson)("/job-cases/merge",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({targetId:t,sourceIds:s})})}catch(e){ef(!1),eg(!1),ew("合并失败(服务无响应),请重试");return}ef(!1),eg(!1);let l=Object.values(e.moved).reduce((e,t)=>e+t,0);ew("已合并 ".concat(e.sourceIds.length," 个职位 → #").concat(e.targetId,",迁移 ").concat(l," 条关联")+(e.matchConflicts?",匹配冲突按高分保留 ".concat(e.matchConflicts," 处"):"")),ek.clear(),eC.refresh(),setTimeout(()=>ew(null),8e3)},eU=m?z?(0,l.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):P?(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:"重试"})]}):I?(0,l.jsx)(K,{detail:I,customers:g,placeholderCusts:v,myUserId:B}):(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:"请在左侧选择一个职位查看详情"}),eZ=V.length>0||es.length>0||X||G||Q||el;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)(k.Z,{allowClear:!0,size:"small",value:f,onChange:e=>N(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:"状态:"}),R.map(e=>{let t=V.includes(e.key);return(0,l.jsxs)("button",{type:"button",title:t?"点击取消该状态筛选":"点击按该状态过滤(可多选)",onClick:()=>eO({st:t?V.filter(t=>t!==e.key):[...V,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," ",ed[e.key]]},e.key)}),(0,l.jsx)("span",{className:"mx-1 text-gray-300",children:"|"}),(0,l.jsx)("span",{className:"text-gray-400",children:"关系:"}),D.map(e=>{let t=es.includes(e.key);return(0,l.jsx)("button",{type:"button",title:t?"点击取消该关系筛选":"点击按该关系过滤(op∨rs=我操作的)",onClick:()=>eO({rel:t?es.filter(t=>t!==e.key):[...es,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"===X?"点击取消未关联客户筛选":"只显示未关联客户的职位",onClick:()=>eO({cust:"unlinked"===X?"":"unlinked"}),className:"rounded bg-amber-100 px-1.5 py-0.5 text-xs text-amber-700 transition ".concat("unlinked"===X?"ring-1 ring-current":"opacity-40 hover:opacity-80"),children:"未关联客户"}),(0,l.jsxs)("span",{className:"ml-auto text-gray-400",children:["共 ",eC.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)(w.Z,{size:"small",showSearch:!0,allowClear:!0,placeholder:"全部客户",style:{minWidth:220},value:X&&"unlinked"!==X?Number(X):void 0,onChange:e=>eO({cust:e?String(e):""}),options:Object.entries(g).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)(w.Z,{mode:"multiple",size:"small",allowClear:!0,maxTagCount:"responsive",placeholder:"全部",style:{minWidth:260},value:$,onChange:e=>eO({stage:e}),options:L.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)(w.Z,{mode:"multiple",size:"small",allowClear:!0,maxTagCount:"responsive",placeholder:"全部",style:{minWidth:220},value:ee,onChange:e=>eO({ch:e}),options:eP.map(e=>({value:e,label:e}))})]}),(0,l.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[eZ&&(0,l.jsx)("button",{type:"button",onClick:()=>{ea(!1),er(!1),eO({st:[],rel:[],cust:"",stage:[],ch:[]})},className:"text-xs text-gray-400 hover:text-gray-600",children:"清除筛选"}),!el||en||et?null:(0,l.jsx)("button",{type:"button",title:"无我操作的职位,已显示全部;点击恢复只看自己参与的",onClick:()=>er(!0),className:"rounded bg-indigo-50 px-1.5 py-0.5 text-xs text-indigo-600 hover:bg-indigo-100",children:"已显示全部(无我操作的)→ 只看我的"})]}),ek.bar(eT),eS.length>=2?(0,l.jsxs)("button",{type:"button",onClick:()=>{ev(eS[0]),eg(!0)},className:"mt-1 rounded bg-indigo-600 px-2.5 py-1 text-xs text-white hover:bg-indigo-700",children:["合并所选职位(",eS.length,")"]}):null,eN?(0,l.jsx)("div",{className:"mt-1 text-xs text-emerald-600",children:eN}):null]}),listPanel:eC.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:()=>eC.refresh(),className:"ml-2 text-blue-500 hover:underline",children:"重试"})]}):(0,l.jsx)(u.L,{items:eT,selectedId:null!=m?m:void 0,onSelect:e=>eO({id:e}),loading:eC.loading,emptyText:"暂无职位",onLoadMore:eC.loadMore,loadingMore:eC.loadingMore,exhausted:eC.exhausted}),detailPanel:eU}),ek.modal(),eb?(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:["合并职位(保留目标,其余 ",eS.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:eS.map(e=>{var t;let s=eC.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:ey===e,onChange:()=>ev(e)}),(0,l.jsxs)("span",{className:"min-w-0 flex-1 truncate",children:["#",e," ",s?F(s):"",s?(0,l.jsxs)("span",{className:"text-xs text-gray-400",children:[" ",null!==(t=M(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:()=>eg(!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 eJ(),disabled:!ey||ej,className:"rounded bg-indigo-600 px-3 py-1 text-xs text-white hover:bg-indigo-700 disabled:opacity-40",children:ej?"合并中…":"确认合并"})]})]})}):null]})}function K(e){var t,s,a,r,i;let{detail:c,customers:u,placeholderCusts:m,myUserId:x}=e,[h,p]=(0,n.useState)("info"),b=null!=x&&(c.ownerId===x||(null!==(t=c.rsUserIds)&&void 0!==t?t:[]).includes(x));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!==(a=c.title)&&void 0!==a?a:"职位 ".concat(null!==(s=c.ref)&&void 0!==s?s:"#".concat(c.id))}),(0,l.jsxs)("div",{className:"mb-3 text-xs text-gray-400",children:["externalId: ",c.externalId," \xb7 更新于 ",(0,o.d3)(c.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:()=>p(e.key),className:"rounded-t px-3 py-1.5 text-sm ".concat(h===e.key?"bg-gray-100 font-medium text-gray-900":"text-gray-500 hover:text-gray-700"),children:e.label},e.key))}),"info"===h?(0,l.jsx)(W,{detail:c,customers:u,placeholderCusts:m,myUserId:x}):"members"===h?(0,l.jsx)(H,{detail:c,myUserId:x},"".concat(A(c),"-").concat(null!=x?x:"anon")):"criteria"===h?(0,l.jsx)(Y,{detail:c,myUserId:x},"".concat(A(c),"-").concat(null!=x?x:"anon")):"history"===h?(0,l.jsx)(Q,{jobCaseId:A(c)},A(c)):"pipeline"===h?(0,l.jsx)(Z,{jobCaseId:A(c),canOperate:b},A(c)):(0,d.K5)()?(0,l.jsx)(g.X,{feature:"职位发布",localPath:"/jobs"}):(0,l.jsx)(E.I,{jobCaseId:c.id,caseTitle:null!==(i=c.title)&&void 0!==i?i:"职位 ".concat(null!==(r=c.ref)&&void 0!==r?r:"#".concat(c.id)),canOperate:b},c.id)]})}function W(e){var t,s,a;let{detail:d,customers:o,placeholderCusts:c,myUserId:u}=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):""),[S,C]=(0,n.useState)(!1),I=null!=u&&d.ownerId===u,O=null==d.customerId||c.has(d.customerId),z=async(e,t)=>{let s;p(!0),g(null);try{s=await (0,i.requestJson)("/job-cases/".concat(encodeURIComponent(A(d))),{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},T=async()=>{C(!0),g(null);try{await (0,i.requestJson)("/job-cases/".concat(encodeURIComponent(A(d)),"/op/claim"),{method:"POST"})}catch(e){C(!1),g("申请 op 失败:该职位可能已有 op,或服务无响应");return}C(!1),location.reload()};return(0,l.jsxs)("div",{children:[O&&I?(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.jsx)(w.Z,{size:"small",allowClear:!0,placeholder:"选择客户…",style:{minWidth:180},value:N||void 0,onChange:e=>k(null!=e?e:""),options:Object.entries(o).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return{value:t,label:s}})}),(0,l.jsx)("button",{type:"button",disabled:!N||h,onClick:()=>void z({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,O&&!I?(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:S,onClick:()=>void T(),className:"rounded bg-blue-600 px-2.5 py-1 text-xs text-white hover:bg-blue-700 disabled:opacity-40",children:S?"申请中…":"申请做 op(无人管理,直接生效)"}):null,I&&!O?"active"===d.status?(0,l.jsx)("button",{type:"button",disabled:h,onClick:()=>void z({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 z({status:"active"},"状态更新失败(仅 op 可操作)"),className:"rounded bg-emerald-600 px-2.5 py-1 text-xs text-white hover:bg-emerald-700",children:"重新启动"}):null,I||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=o[d.customerId])&&void 0!==s?s:"#".concat(d.customerId)}),(0,l.jsx)("span",{className:"text-xs text-amber-500",children:"查看公司详情 →"})]}),I?(0,l.jsx)(w.Z,{size:"small",style:{minWidth:180},value:d.customerId,onChange:e=>{e!==d.customerId&&z({customerId:e},"更换客户失败:同客户下可能已有同名职位")},options:Object.entries(o).sort((e,t)=>e[1].localeCompare(t[1],"zh")).map(e=>{let[t,s]=e;return{value:Number(t),label:s}})}):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:"职位名"}),I&&!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:()=>{z({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)(m.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)(m.Y,{data:d.rawFiles})]}):null]})}function H(e){let{detail:t,myUserId:s}=e,[a,r]=(0,n.useState)({op:null,rs:[]}),[d,o]=(0,n.useState)([]),[c,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.requestJson)("/job-cases/".concat(encodeURIComponent(A(t)),"/members"));r(e)}catch(e){}})()},[t.id]);(0,n.useEffect)(()=>{y(),(async()=>{try{let e=await (0,i.requestJson)("/job-cases/tenant-members");o(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.requestJson)("/job-cases/".concat(encodeURIComponent(A(t))).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.jsx)(w.Z,{size:"small",allowClear:!0,placeholder:"转移给…",style:{minWidth:140},value:h||void 0,onChange:e=>p(null!=e?e:""),options:d.filter(e=>e.hmUserId!==a.op).map(e=>{var t;return{value:String(e.hmUserId),label:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(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.requestJson)("/job-cases/".concat(encodeURIComponent(A(t)),"/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.jsx)(w.Z,{size:"small",allowClear:!0,placeholder:"添加 rs(限同租户成员)…",style:{minWidth:160},value:b||void 0,onChange:e=>g(null!=e?e:""),options:N.map(e=>{var t;return{value:String(e.hmUserId),label:null!==(t=e.label)&&void 0!==t?t:"用户 #".concat(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]}),c?(0,l.jsx)("div",{className:"text-xs text-red-500",children:c}):null]})}function Y(e){var t;let{detail:s,myUserId:a}=e,[r,o]=(0,n.useState)([]),[c,u]=(0,n.useState)(null),[m,x]=(0,n.useState)(null),[h,p]=(0,n.useState)(!1),[b,g]=(0,n.useState)(!1),[y,v]=(0,n.useState)([]),j=(0,n.useCallback)(()=>{(async()=>{try{let e=await (0,i.requestJson)("/job-cases/".concat(encodeURIComponent(A(s)),"/criteria"));o(e.items)}catch(e){}})()},[s.id]);(0,n.useEffect)(()=>{j()},[j]);let f=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 N=null!=a&&(s.ownerId===a||(null!==(t=s.rsUserIds)&&void 0!==t?t:[]).includes(a)),w=()=>{var e;v((null!==(e=null==f?void 0:f.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)}})),g(!0),u(null)},k=async()=>{let e;let t=y.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){u("至少保留一条条件(dimension + value)");return}p(!0),u(null);try{e=await (0,i.requestJson)("/job-cases/".concat(encodeURIComponent(A(s)),"/criteria"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:t})})}catch(e){p(!1),u("保存失败,请重试");return}p(!1),o(e.items),g(!1)},S=async e=>{let t;p(!0),u(null),x(null);try{t=await (0,i.requestJson)("/job-cases/".concat(encodeURIComponent(A(s)),"/criteria/merge"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fromUserId:e,mode:"apply"})})}catch(e){p(!1),u("叠加失败,请重试");return}p(!1),x("已叠加 ".concat(t.applied," 条新条件到我的条件")),j()},C=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||N?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||b?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&&!b&&N?(0,l.jsx)("button",{type:"button",onClick:w,className:"text-xs text-blue-600 hover:underline",children:"编辑我的条件"}):null,t||null==a||b||!N?null:(0,d.K5)()?(0,l.jsx)("span",{className:"text-xs text-amber-600",title:"条件叠加需在本机 HunterMate 使用",children:"叠加需本机"}):(0,l.jsx)("button",{type:"button",disabled:h,onClick:()=>void S(e.userId),className:"text-xs text-indigo-600 hover:underline disabled:opacity-40",children:"叠加到我的条件"})]}),t&&b?(0,l.jsx)("div",{className:"text-xs text-gray-400",children:"(正在下方编辑我的条件)"}):e.criteria.length?C(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&&b&&N?(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:[y.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=>v(y.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=>v(y.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=>v(y.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:()=>v(y.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:()=>v([...y,{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:h,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:h?"保存中…":"保存(整体替换我的条件)"}),(0,l.jsx)("button",{type:"button",onClick:()=>g(!1),className:"rounded border border-gray-300 px-2 py-0.5 text-xs text-gray-600",children:"取消"})]})]})]}):null,null==a||f||b||!N?null:(0,l.jsx)("button",{type:"button",onClick:w,className:"rounded bg-blue-600 px-2.5 py-1 text-xs text-white hover:bg-blue-700",children:"添加我的条件"}),m?(0,l.jsx)("div",{className:"text-xs text-emerald-600",children:m}):null,c?(0,l.jsx)("div",{className:"text-xs text-red-500",children:c}):null,(0,l.jsx)(X,{externalId:s.externalId})]})}function X(e){let{externalId:t}=e,[s,a]=(0,n.useState)(null),[r,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)("");(0,n.useEffect)(()=>{let e=!0;return(async()=>{try{var s;let l=await (0,i.requestJson)("/searchlog?jobCaseExternalId=".concat(encodeURIComponent(t),"&limit=100"));e&&a(null!==(s=l.items)&&void 0!==s?s:[])}catch(t){e&&(a([]),d(!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=>!c||e.actorEmail===c),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.jsx)(w.Z,{size:"small",allowClear:!0,placeholder:"全部",style:{minWidth:160},value:c||void 0,onChange:e=>u(null!=e?e:""),options:m.map(e=>({value:e,label: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,o.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 G={created:"创建职位",status_change:"状态切换",op_claim:"申请成为 op",op_transfer:"转移 op",op_cleared:"退租清空 op",rs_add:"添加 rs",rs_remove:"移除 rs",customer_change:"客户变更",info_update:"信息更新"};function Q(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.requestJson)("/job-cases/".concat(encodeURIComponent(String(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,o.d3)(e.createdAt)}),(0,l.jsxs)("div",{className:"text-sm text-gray-800",children:[null!==(t=G[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 V(){return(0,l.jsx)(n.Suspense,{fallback:(0,l.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,l.jsx)(B,{})})}function $(){var e;let[t,s]=(0,n.useState)(""),[a,r]=(0,n.useState)(""),[d,o]=(0,n.useState)(""),[m,x]=(0,n.useState)([]),[h,p]=(0,n.useState)(0),[g,y]=(0,n.useState)(!1),[v,j]=(0,n.useState)(null),[f,N]=(0,n.useState)(null),{sync:w}=(0,b.nu)(),k=null!==(e=null==w?void 0:w.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.requestJson)("/market/jobs?".concat(e.toString()));j(null),x(t.items),p(t.total)}catch(e){j("加载失败")}finally{y(!1)}},[a,d,k]);(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)(E.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:()=>o(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)(u.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)(E.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 ee=s(88801);function et(){let e=(0,ee.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)($,{}):(0,l.jsx)(V,{})})]})}},21717:function(e,t,s){"use strict";s.d(t,{I:function(){return u}});var l=s(72835),a=s(60635),n=s(95909),r=s(86892),i=s(87018),d=s(6443),o=s(74431),c=s(32587);function u(e){var t;let{entityId:s,name:u,open:m,onClose:x}=e,[h,p]=(0,a.useState)(null),[b,g]=(0,a.useState)([]),[y,v]=(0,a.useState)(null),[j,f]=(0,a.useState)(null),[N,w]=(0,a.useState)(!1),[k,S]=(0,a.useState)(!1),[C,I]=(0,a.useState)(0);return(0,a.useEffect)(()=>{if(!m||null==s)return;let e=!0;return w(!0),S(!1),p(null),g([]),v(null),f(null),Promise.all([(0,o.requestJson)("/entities/talent/".concat(s)),(0,o.requestJson)("/entities/talent/".concat(s,"/sources")).catch(()=>null),(0,o.requestJson)("/entities/talent/".concat(s,"/matches")).catch(()=>null)]).then(t=>{var s,l;let[a,n,r]=t;e&&(p(a.entity),g(n?n.items:[]),v(null!==(s=null==r?void 0:r.portraitId)&&void 0!==s?s:null),f(null!==(l=null==r?void 0:r.matches)&&void 0!==l?l:[]))}).catch(()=>{e&&S(!0)}).finally(()=>{e&&w(!1)}),()=>{e=!1}},[m,s,C]),(0,l.jsx)(n.Z,{title:null!==(t=null==h?void 0:h.name)&&void 0!==t?t:u,placement:"right",width:860,open:m,onClose:x,destroyOnHidden:!0,children:N?(0,l.jsx)(r.Z,{active:!0,paragraph:{rows:8}}):k?(0,l.jsx)(i.Z,{type:"error",message:"人才详情加载失败",description:(0,l.jsx)(d.ZP,{size:"small",onClick:()=>I(e=>e+1),children:"重试"})}):h?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.n,{entity:h}),(0,l.jsx)(c.z,{entity:h,portraitId:y,matches:j,sources:b})]}):null})}}},function(e){e.O(0,[502,606,882,706,431,587,987,659,686,400,935,744],function(){return e(e.s=74843)}),_N_E=e.O()}]);
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
|
|
2
|
-
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
|
|
3
|
-
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.\!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-32{height:8rem}.h-4{height:1rem}.h-64{height:16rem}.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-lg{max-width:32rem}.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-not-allowed{cursor:not-allowed}.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-1{grid-template-columns:repeat(1,minmax(0,1fr))}.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-6{gap:1.5rem}.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-words{overflow-wrap:break-word}.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-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/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-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-10{padding:2.5rem}.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-5{padding-left:1.25rem;padding-right:1.25rem}.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}.pb-3{padding-bottom:.75rem}.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-\[0\.5em\]{letter-spacing:.5em}.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-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/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-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/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-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-orange-50:hover{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/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-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/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\:cursor-not-allowed:disabled{cursor:not-allowed}.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\:grid-cols-3{grid-template-columns:repeat(3,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))}}.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}
|
|
File without changes
|
/package/dist/web/dist/_next/static/{JrLiYIK9zn4SBFFfOW1uK → wtzfFVjEfzUKkY3Epal_2}/_ssgManifest.js
RENAMED
|
File without changes
|