hunter-mate 0.1.26 → 0.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/assets/extension/background/{service-worker.20261019161523.js → service-worker.20261020181646.js} +4 -0
  2. package/dist/assets/extension/background/service-worker.js +4 -0
  3. package/dist/assets/extension/build-info.json +1 -1
  4. package/dist/assets/extension/content/index.js +284 -64
  5. package/dist/assets/extension/manifest.json +3 -3
  6. package/dist/assets/extension/sidepanel/index.html +1 -1
  7. package/dist/assets/extension/sidepanel/index.js +14 -14
  8. package/dist/assets/server/main.mjs +1433 -1205
  9. package/dist/index.js +33 -64
  10. package/dist/watchdog.js +49 -4
  11. package/dist/web/dist/404.html +1 -1
  12. package/dist/web/dist/_next/static/chunks/{253-9278ce6c4d446329.js → 253-f4ac7af6647e4dba.js} +1 -1
  13. package/dist/web/dist/_next/static/chunks/{589-cc56950ae4117cdd.js → 589-5bb84ab8060e960b.js} +1 -1
  14. package/dist/web/dist/_next/static/chunks/{659-122057f46f941df7.js → 659-b23050764c004f5f.js} +1 -1
  15. package/dist/web/dist/_next/static/chunks/{686-05b99d3674f45bf7.js → 686-5f4ee3649cce07f1.js} +1 -1
  16. package/dist/web/dist/_next/static/chunks/896-9dce6a3bc525edba.js +1 -0
  17. package/dist/web/dist/_next/static/chunks/{935-efb30b9f6f558e3f.js → 935-12f1084f0e18c962.js} +1 -1
  18. package/dist/web/dist/_next/static/chunks/app/_not-found/{page-d939b40bb8878d26.js → page-46929212b0496a89.js} +1 -1
  19. package/dist/web/dist/_next/static/chunks/app/admin/data/{page-df1d84c14e85f294.js → page-666f99fbfee46cc9.js} +1 -1
  20. package/dist/web/dist/_next/static/chunks/app/auth/verify/{page-cfeb844e1b72ccaa.js → page-2da5807d6cdfdb4e.js} +1 -1
  21. package/dist/web/dist/_next/static/chunks/app/companies/{page-57b1ef0b12134ce0.js → page-390d5e3073ec151d.js} +1 -1
  22. package/dist/web/dist/_next/static/chunks/app/company/admin/{page-010928306f8df0ed.js → page-02244f3f1a212c76.js} +1 -1
  23. package/dist/web/dist/_next/static/chunks/app/entity/{page-fa96319650d38e78.js → page-d59a8103f8107d3b.js} +1 -1
  24. package/dist/web/dist/_next/static/chunks/app/jobs/{page-5ba0bdc881b98d42.js → page-fa83ce1b6c3b345d.js} +1 -1
  25. package/dist/web/dist/_next/static/chunks/app/layout-15c4c2ba595b2a92.js +1 -0
  26. package/dist/web/dist/_next/static/chunks/app/logs/{page-bcdbb3885abda5a2.js → page-badf48f4e7e32e17.js} +1 -1
  27. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/{page-8aca89db1e666a49.js → page-73bca3864b8b9e44.js} +1 -1
  28. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/{page-7086f1b773e57511.js → page-477c66bee61225fa.js} +1 -1
  29. package/dist/web/dist/_next/static/chunks/app/{page-49fe1e8630d2237e.js → page-8ea324b366e3d374.js} +1 -1
  30. package/dist/web/dist/_next/static/chunks/app/parselog/{page-fcdfdd41cf1f86f7.js → page-4f5c186442feb386.js} +1 -1
  31. package/dist/web/dist/_next/static/chunks/app/recordings/page-0fb8cafdd2f6762c.js +1 -0
  32. package/dist/web/dist/_next/static/chunks/app/resource-usage/{page-7b939cf673d764e6.js → page-76be36ca978391a3.js} +1 -1
  33. package/dist/web/dist/_next/static/chunks/app/shared/[token]/{page-df87328c52f862f1.js → page-fe2b986867d317c0.js} +1 -1
  34. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/{page-7d4d25de2c6704e9.js → page-60ea46364a74b294.js} +1 -1
  35. package/dist/web/dist/_next/static/chunks/app/team/insights/{page-f097b4b8578a6e5d.js → page-5385dcd363f6e0cd.js} +1 -1
  36. package/dist/web/dist/_next/static/chunks/webpack-9cebd25e322e2cd7.js +1 -0
  37. package/dist/web/dist/_next/static/css/8f3c454cab3414d0.css +3 -0
  38. package/dist/web/dist/admin/data.html +1 -1
  39. package/dist/web/dist/admin/data.txt +5 -5
  40. package/dist/web/dist/auth/verify.html +1 -1
  41. package/dist/web/dist/auth/verify.txt +5 -5
  42. package/dist/web/dist/companies.html +1 -1
  43. package/dist/web/dist/companies.txt +5 -5
  44. package/dist/web/dist/company/admin.html +1 -1
  45. package/dist/web/dist/company/admin.txt +5 -5
  46. package/dist/web/dist/entity.html +1 -1
  47. package/dist/web/dist/entity.txt +5 -5
  48. package/dist/web/dist/index.html +1 -1
  49. package/dist/web/dist/index.txt +5 -5
  50. package/dist/web/dist/jobs.html +1 -1
  51. package/dist/web/dist/jobs.txt +5 -5
  52. package/dist/web/dist/logs.html +1 -1
  53. package/dist/web/dist/logs.txt +5 -5
  54. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
  55. package/dist/web/dist/matching/jobs/placeholder/talents.txt +5 -5
  56. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
  57. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +5 -5
  58. package/dist/web/dist/parselog.html +1 -1
  59. package/dist/web/dist/parselog.txt +5 -5
  60. package/dist/web/dist/recordings.html +1 -1
  61. package/dist/web/dist/recordings.txt +5 -5
  62. package/dist/web/dist/resource-usage.html +1 -1
  63. package/dist/web/dist/resource-usage.txt +5 -5
  64. package/dist/web/dist/shared/placeholder.html +1 -1
  65. package/dist/web/dist/shared/placeholder.txt +5 -5
  66. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
  67. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +5 -5
  68. package/dist/web/dist/talents.html +1 -1
  69. package/dist/web/dist/talents.txt +5 -5
  70. package/dist/web/dist/team/insights.html +1 -1
  71. package/dist/web/dist/team/insights.txt +5 -5
  72. package/package.json +3 -6
  73. package/dist/web/dist/_next/static/chunks/166.b263e636ff66212f.js +0 -1
  74. package/dist/web/dist/_next/static/chunks/app/layout-bd9a7e5e4474b692.js +0 -1
  75. package/dist/web/dist/_next/static/chunks/app/recordings/page-7ba5d89391c9dace.js +0 -1
  76. package/dist/web/dist/_next/static/chunks/webpack-54e74ccc9e9451ee.js +0 -1
  77. package/dist/web/dist/_next/static/css/a8f0a381a2372781.css +0 -3
  78. package/dist/web/dist/_next/static/css/f60d210841fab76b.css +0 -1
  79. /package/dist/web/dist/_next/static/{m0UGHVTGvtvb9mn4-uzJJ → tYFZz41gyWi4-BhxuxlGU}/_buildManifest.js +0 -0
  80. /package/dist/web/dist/_next/static/{m0UGHVTGvtvb9mn4-uzJJ → tYFZz41gyWi4-BhxuxlGU}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- !function(){try{var n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new n.Error).stack;t&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[t]="f3d89939-b410-4b82-939a-d3e8cca7bb3e",n._sentryDebugIdIdentifier="sentry-dbid-f3d89939-b410-4b82-939a-d3e8cca7bb3e")}catch(n){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{34947:function(n,t,e){Promise.resolve().then(e.bind(e,19145))},19145:function(n,t,e){"use strict";e.r(t),e.d(t,{default:function(){return s}});var l=e(72835),r=e(60635),o=e(55589),u=e(74431),a=e(8448),i=e(65777);function s(){var n;let[t,e]=(0,r.useState)({}),[s,c]=(0,r.useState)(0),[d,f]=(0,r.useState)(null),[h,v]=(0,r.useState)(""),{sync:m}=(0,i.nu)(),g=null!==(n=null==m?void 0:m.activeTenantId)&&void 0!==n?n:null,y=(0,r.useCallback)(async()=>{var n,t,l,r,o,i,s;let[d,h,m,g,y]=await Promise.all([(0,u.aA)("/entities?type=talent&limit=1").catch(()=>null),(0,u.aA)("/entities?type=job&limit=1").catch(()=>null),(0,u.aA)("/entities?type=company&limit=1").catch(()=>null),(0,u.aA)("/parse-log?limit=1").catch(()=>null),(0,u.aA)("/api/recordings?limit=1").catch(()=>null)]);f(!!(d||h||m||g||y)),e({talent:d?null!==(t=d.total)&&void 0!==t?t:0:null,job:h?null!==(l=h.total)&&void 0!==l?l:0:null,company:m?null!==(r=m.total)&&void 0!==r?r:0:null,parseLog:g?null!==(o=g.total)&&void 0!==o?o:0:null,recording:y?null!==(i=null===(n=y.sessions)||void 0===n?void 0:n.length)&&void 0!==i?i:0:null}),c(g&&null!==(s=g.abnormal)&&void 0!==s?s:0),v((0,a.d3)(new Date().toISOString()))},[]);(0,r.useEffect)(()=>{y()},[y,g]);let b=[{key:"talent",label:"人才",href:"/talents",count:t.talent},{key:"job",label:"职位",href:"/jobs",count:t.job},{key:"company",label:"公司",href:"/companies",count:t.company},{key:"parseLog",label:"解析日志",href:"/parselog",count:t.parseLog,abnormal:s},{key:"recording",label:"录制会话",href:"/recordings",count:t.recording}];return(0,l.jsxs)("div",{className:"h-full overflow-auto p-6",children:[(0,l.jsxs)("header",{className:"mb-6",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold",children:"HunterMate 仪表盘"}),(0,l.jsxs)("p",{className:"mt-1 text-sm text-gray-500",children:["本地服务"," ",(0,l.jsx)("span",{className:d?"text-green-600":"text-red-600",children:null===d?"检测中…":d?"在线":"离线"}),h?" \xb7 刷新于 ".concat(h):""]})]}),(0,l.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:b.map(n=>{var t;return(0,l.jsxs)(o.default,{href:n.href,className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm transition-shadow hover:shadow-md",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("span",{className:"text-gray-500",children:n.label}),(0,l.jsx)("span",{className:"text-2xl font-bold text-gray-900",children:null!==(t=n.count)&&void 0!==t?t:"—"})]}),n.abnormal?(0,l.jsxs)("div",{className:"mt-2 text-sm text-red-600",children:["异常 ",n.abnormal]}):null]},n.key)})})]})}},65777:function(n,t,e){"use strict";let l;e.d(t,{Cd:function(){return j},Xc:function(){return k},aG:function(){return I},cp:function(){return N},nu:function(){return E},tQ:function(){return _}});var r=e(60635),o=e(74431),u=e(67002),a=e(60529);let i=null,s=null,c=null,d=new Set;function f(){d.forEach(n=>n())}function h(n){i=i?{...i,refreshing:n}:{...p,refreshing:n},f()}async function v(){try{return await (0,o.aA)("/auth/session")}catch(n){return null}}async function m(n){let t=new Headers,e=(0,u.Xc)();e&&t.set("Authorization","UTOKEN ".concat(e));try{return await (0,o.aA)(n,{headers:t})}catch(n){return null}}async function g(){h(!0);try{var n;let[t,e]=await Promise.all([v(),m("/datasync/state")]),r=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,o=null!=e?e:null;!o&&t&&r&&r!==(0,u.Xc)()?((0,u.GK)(r),o=await m("/datasync/state")):(0,u.GK)(r),function(n){if(void 0===l){l=n;return}if(n!==l){l=n;try{window.localStorage.removeItem("hm-view-mode")}catch(n){}}}((null==t?void 0:t.loggedIn)&&null!==(n=t.hmUserId)&&void 0!==n?n:null);let a=!!((null==t?void 0:t.loggedIn)||(null==o?void 0:o.loggedIn));if(!t&&!o){i=i?{...i,loadError:"本地服务无响应"}:{...p,loadError:"本地服务无响应"},f();return}i={session:null!=t?t:{loggedIn:!1},sync:o,utoken:(0,u.Xc)(),loadError:null,refreshing:!1,authStatus:a?"in":"out",refresh:y},f()}finally{(null==i?void 0:i.refreshing)&&h(!1)}}function y(){return s||(s=g().finally(()=>{s=null}))}function b(n){return d.add(n),1===d.size&&(y(),c=setInterval(()=>void y(),6e4)),()=>{d.delete(n),0===d.size&&c&&(clearInterval(c),c=null)}}let p={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:y};function w(){return null!=i?i:p}function x(){return w()}function E(){return(0,r.useSyncExternalStore)(b,w,x)}function I(n){var t;return(null!==(t=null==n?void 0:n.memberships)&&void 0!==t?t:[]).filter(n=>!n.isPersonal&&!n.leftAt)}function N(n){var t,e;let l=null!==(t=null==n?void 0:n.activeTenantId)&&void 0!==t?t:null;if(null==l)return null;let r=(null!==(e=null==n?void 0:n.memberships)&&void 0!==e?e:[]).find(n=>n.tenantId===l&&!n.leftAt);return!r||r.isPersonal?null:l}function j(n,t){var e,l;if(!t)return null;let r=(null!==(e=null==n?void 0:n.memberships)&&void 0!==e?e:[]).find(n=>n.tenantId===t&&!n.leftAt&&!n.isPersonal);return null!==(l=null==r?void 0:r.role)&&void 0!==l?l:null}function _(){return a.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function k(){return(0,u.Xc)()}},8448:function(n,t,e){"use strict";function l(n){return n?("string"==typeof n?new Date(n):n).toLocaleString("zh-CN",{hour12:!1}):""}e.d(t,{d3:function(){return l}})},74431:function(n,t,e){"use strict";e.d(t,{Ox:function(){return o},aA:function(){return i}});var l=e(67002),r=e(60529);function o(){return r.env.HUNTER_MATE_SERVER_URL||""}let u=o();class a extends Error{constructor(n,t,e){super(null!=e?e:"请求失败(".concat(n,")").concat(t?": ".concat(t):"")),this.status=n,this.path=t,this.name="HttpError"}}async function i(n,t){let e;try{e=await fetch("".concat(u).concat(n),{cache:"no-store",...function(n){let t=(0,l.Xc)();if(!t)return n;let e=new Headers(null==n?void 0:n.headers);return e.has("Authorization")||e.set("Authorization","UTOKEN ".concat(t)),{...n,headers:e}}(t)})}catch(t){throw new a(0,n,t instanceof Error?t.message:"网络错误")}if(!e.ok)throw new a(e.status,n,"HTTP ".concat(e.status));try{return await e.json()}catch(t){throw new a(e.status,n,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(n,t,e){"use strict";e.d(t,{GK:function(){return u},Lc:function(){return a},Xc:function(){return o}});let l=null,r=new Set;function o(){return l}function u(n){n!==l&&(l=n,r.forEach(n=>n()))}function a(n){return r.add(n),()=>{r.delete(n)}}}},function(n){n.O(0,[589,400,935,744],function(){return n(n.s=34947)}),_N_E=n.O()}]);
1
+ !function(){try{var n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new n.Error).stack;t&&(n._sentryDebugIds=n._sentryDebugIds||{},n._sentryDebugIds[t]="26804a2c-37b8-4bd9-b61d-34f00c051aca",n._sentryDebugIdIdentifier="sentry-dbid-26804a2c-37b8-4bd9-b61d-34f00c051aca")}catch(n){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{34947:function(n,t,e){Promise.resolve().then(e.bind(e,19145))},19145:function(n,t,e){"use strict";e.r(t),e.d(t,{default:function(){return c}});var l=e(72835),r=e(60635),a=e(55589),o=e(74431),u=e(8448),i=e(65777);function c(){var n;let[t,e]=(0,r.useState)({}),[c,s]=(0,r.useState)(0),[d,f]=(0,r.useState)(null),[h,v]=(0,r.useState)(""),{sync:m}=(0,i.nu)(),g=null!==(n=null==m?void 0:m.activeTenantId)&&void 0!==n?n:null,y=(0,r.useCallback)(async()=>{var n,t,l,r,a,i,c;let[d,h,m,g,y]=await Promise.all([(0,o.aA)("/entities?type=talent&limit=1").catch(()=>null),(0,o.aA)("/entities?type=job&limit=1").catch(()=>null),(0,o.aA)("/entities?type=company&limit=1").catch(()=>null),(0,o.aA)("/parse-log?limit=1").catch(()=>null),(0,o.aA)("/api/recordings?limit=1").catch(()=>null)]);f(!!(d||h||m||g||y)),e({talent:d?null!==(t=d.total)&&void 0!==t?t:0:null,job:h?null!==(l=h.total)&&void 0!==l?l:0:null,company:m?null!==(r=m.total)&&void 0!==r?r:0:null,parseLog:g?null!==(a=g.total)&&void 0!==a?a:0:null,recording:y?null!==(i=null===(n=y.sessions)||void 0===n?void 0:n.length)&&void 0!==i?i:0:null}),s(g&&null!==(c=g.abnormal)&&void 0!==c?c:0),v((0,u.d3)(new Date().toISOString()))},[]);(0,r.useEffect)(()=>{y()},[y,g]);let b=[{key:"talent",label:"人才",href:"/talents",count:t.talent},{key:"job",label:"职位",href:"/jobs",count:t.job},{key:"company",label:"公司",href:"/companies",count:t.company},{key:"parseLog",label:"解析日志",href:"/parselog",count:t.parseLog,abnormal:c},{key:"recording",label:"录制会话",href:"/recordings",count:t.recording}];return(0,l.jsxs)("div",{className:"h-full overflow-auto p-6",children:[(0,l.jsxs)("header",{className:"mb-6",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold",children:"HunterMate 仪表盘"}),(0,l.jsxs)("p",{className:"mt-1 text-sm text-gray-500",children:["本地服务"," ",(0,l.jsx)("span",{className:d?"text-green-600":"text-red-600",children:null===d?"检测中…":d?"在线":"离线"}),h?" \xb7 刷新于 ".concat(h):""]})]}),(0,l.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:b.map(n=>{var t;return(0,l.jsxs)(a.default,{href:n.href,className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm transition-shadow hover:shadow-md",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("span",{className:"text-gray-500",children:n.label}),(0,l.jsx)("span",{className:"text-2xl font-bold text-gray-900",children:null!==(t=n.count)&&void 0!==t?t:"—"})]}),n.abnormal?(0,l.jsxs)("div",{className:"mt-2 text-sm text-red-600",children:["异常 ",n.abnormal]}):null]},n.key)})})]})}},65777:function(n,t,e){"use strict";let l;e.d(t,{Cd:function(){return j},Xc:function(){return k},aG:function(){return I},cp:function(){return N},nu:function(){return E},tQ:function(){return _}});var r=e(60635),a=e(74431),o=e(67002),u=e(60529);let i=null,c=null,s=null,d=new Set;function f(){d.forEach(n=>n())}function h(n){i=i?{...i,refreshing:n}:{...p,refreshing:n},f()}async function v(){try{return await (0,a.aA)("/auth/session")}catch(n){return null}}async function m(n){let t=new Headers,e=(0,o.Xc)();e&&t.set("Authorization","UTOKEN ".concat(e));try{return await (0,a.aA)(n,{headers:t})}catch(n){return null}}async function g(){h(!0);try{var n;let[t,e]=await Promise.all([v(),m("/datasync/state")]),r=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,a=null!=e?e:null;!a&&t&&r&&r!==(0,o.Xc)()?((0,o.GK)(r),a=await m("/datasync/state")):(0,o.GK)(r),function(n){if(void 0===l){l=n;return}if(n!==l){l=n;try{window.localStorage.removeItem("hm-view-mode")}catch(n){}}}((null==t?void 0:t.loggedIn)&&null!==(n=t.hmUserId)&&void 0!==n?n:null);let u=!!((null==t?void 0:t.loggedIn)||(null==a?void 0:a.loggedIn));if(!t&&!a){i=i?{...i,loadError:"本地服务无响应"}:{...p,loadError:"本地服务无响应"},f();return}i={session:null!=t?t:{loggedIn:!1},sync:a,utoken:(0,o.Xc)(),loadError:null,refreshing:!1,authStatus:u?"in":"out",refresh:y},f()}finally{(null==i?void 0:i.refreshing)&&h(!1)}}function y(){return c||(c=g().finally(()=>{c=null}))}function b(n){return d.add(n),1===d.size&&(y(),s=setInterval(()=>void y(),6e4)),()=>{d.delete(n),0===d.size&&s&&(clearInterval(s),s=null)}}let p={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:y};function w(){return null!=i?i:p}function x(){return w()}function E(){return(0,r.useSyncExternalStore)(b,w,x)}function I(n){var t;return(null!==(t=null==n?void 0:n.memberships)&&void 0!==t?t:[]).filter(n=>!n.isPersonal&&!n.leftAt)}function N(n){var t,e;let l=null!==(t=null==n?void 0:n.activeTenantId)&&void 0!==t?t:null;if(null==l)return null;let r=(null!==(e=null==n?void 0:n.memberships)&&void 0!==e?e:[]).find(n=>n.tenantId===l&&!n.leftAt);return!r||r.isPersonal?null:l}function j(n,t){var e,l;if(!t)return null;let r=(null!==(e=null==n?void 0:n.memberships)&&void 0!==e?e:[]).find(n=>n.tenantId===t&&!n.leftAt&&!n.isPersonal);return null!==(l=null==r?void 0:r.role)&&void 0!==l?l:null}function _(){return u.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function k(){return(0,o.Xc)()}},8448:function(n,t,e){"use strict";function l(n){return n?("string"==typeof n?new Date(n):n).toLocaleString("zh-CN",{hour12:!1}):""}e.d(t,{d3:function(){return l}})},74431:function(n,t,e){"use strict";e.d(t,{Ox:function(){return a},aA:function(){return i}});var l=e(67002),r=e(60529);function a(){return r.env.HUNTER_MATE_SERVER_URL||""}let o=a();class u extends Error{constructor(n,t,e){super(null!=e?e:"请求失败(".concat(n,")").concat(t?": ".concat(t):"")),this.status=n,this.path=t,this.name="HttpError"}}async function i(n,t){let e;try{e=await fetch("".concat(o).concat(n),{cache:"no-store",...function(n){let t=(0,l.Xc)();if(!t)return n;let e=new Headers(null==n?void 0:n.headers);return e.has("Authorization")||e.set("Authorization","UTOKEN ".concat(t)),{...n,headers:e}}(t)})}catch(t){throw new u(0,n,t instanceof Error?t.message:"网络错误")}if(!e.ok)throw new u(e.status,n,"HTTP ".concat(e.status));try{return await e.json()}catch(t){throw new u(e.status,n,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(n,t,e){"use strict";e.d(t,{GK:function(){return o},Lc:function(){return u},Xc:function(){return a}});let l=null,r=new Set;function a(){return l}function o(n){n!==l&&(l=n,r.forEach(n=>n()))}function u(n){return r.add(n),()=>{r.delete(n)}}}},function(n){n.O(0,[589,400,935,744],function(){return n(n.s=34947)}),_N_E=n.O()}]);
@@ -1 +1 @@
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]="8fa42135-4c4a-485e-9179-7ffa08cacb80",e._sentryDebugIdIdentifier="sentry-dbid-8fa42135-4c4a-485e-9179-7ffa08cacb80")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[788],{10793:function(e,t,s){Promise.resolve().then(s.bind(s,4895))},27473:function(e,t,s){"use strict";var r=s(38321);s.o(r,"useParams")&&s.d(t,{useParams:function(){return r.useParams}}),s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}}),s.o(r,"useServerInsertedHTML")&&s.d(t,{useServerInsertedHTML:function(){return r.useServerInsertedHTML}})},4895:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return y}});var r=s(72835),n=s(60635),a=s(27473),l=s(74431),c=s(37202),o=s(94518),i=s(63718),u=s(19036),d=s(55589),x=s(8448);let m={ok:"正常",empty:"关键字段为空","no-snapshot":"缺快照","no-rule":"无规则"},f={ok:"bg-green-50 text-green-700",empty:"bg-yellow-50 text-yellow-700","no-snapshot":"bg-red-50 text-red-700","no-rule":"bg-gray-100 text-gray-600"};function h(e){var t,s;let{item:n}=e;return(0,r.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,r.jsx)(d.default,{href:"/parselog",className:"text-sm text-blue-600 hover:underline",children:"← 返回解析日志列表"}),(0,r.jsxs)("header",{className:"mt-4 mb-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsxs)("h1",{className:"text-2xl font-bold text-gray-900",children:["解析记录 #",n.id]}),(0,r.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(f[n.status]),children:null!==(s=m[n.status])&&void 0!==s?s:n.status}),n.hasSnapshot?(0,r.jsx)("span",{className:"rounded bg-green-50 px-2 py-0.5 text-xs text-green-700",children:"有录制快照"}):null]}),(0,r.jsxs)("p",{className:"mt-1 text-sm text-gray-500",children:[n.domain," \xb7 ",n.pageClass," \xb7 ",(0,x.d3)(n.createdAt)]})]}),(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:"来源"}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"text-sm",children:[(0,r.jsx)("span",{className:"text-gray-500",children:"sessionId: "}),(0,r.jsx)("span",{className:"font-mono",children:n.sessionId})]}),(0,r.jsx)("a",{href:n.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:n.sourceUrl}),n.entityId?(0,r.jsxs)("div",{className:"pt-2",children:[(0,r.jsx)("span",{className:"text-sm text-gray-500",children:"关联实体: "}),(0,r.jsxs)(d.default,{href:"/".concat(n.pageClass,"s?id=").concat(n.entityId),className:"text-sm text-blue-600 hover:underline",children:["#",n.entityId," (",n.pageClass,")"]})]}):null]})]}),n.extractedFields?(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)("pre",{className:"max-h-96 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(n.extractedFields,null,2)})]}):null,(null===(t=n.missingFields)||void 0===t?void 0:t.length)?(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)("ul",{className:"list-inside list-disc text-sm text-gray-700",children:n.missingFields.map(e=>(0,r.jsx)("li",{children:e},e))})]}):null]})}let g=[{value:"ok",label:"正常"},{value:"empty",label:"关键字段为空"},{value:"no-snapshot",label:"缺快照"},{value:"no-rule",label:"无规则"}],b={ok:"bg-green-50 text-green-700",empty:"bg-yellow-50 text-yellow-700","no-snapshot":"bg-red-50 text-red-700","no-rule":"bg-gray-100 text-gray-600"};function p(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[s,r]=e;r&&t.set(s,r)});let s=t.toString();return s?"?".concat(s):""}function v(){let e=(0,a.useRouter)(),t=(0,a.usePathname)(),s=(0,a.useSearchParams)(),d=s.get("id")||"",m=(0,n.useMemo)(()=>({q:s.get("q")||"",status:s.get("status")||"",from:s.get("from")||"",to:s.get("to")||""}),[s]),[f,v]=(0,n.useState)(null),[y,j]=(0,n.useState)(!1),[N,w]=(0,n.useState)(null),[S,E]=(0,n.useState)(!0),[k,C]=(0,n.useState)(!1),[I,L]=(0,n.useState)(!1),[P,q]=(0,n.useState)(0),[R,_]=(0,n.useState)(0),T=(0,n.useCallback)(s=>{var r,n;let a=null!==(r=s.filters)&&void 0!==r?r:m,l=p({id:null!==(n=s.id)&&void 0!==n?n:d,q:a.q,status:a.status,from:a.from,to:a.to});e.replace("".concat(t).concat(l))},[m,d,t,e]),A=(0,n.useCallback)(()=>{_(e=>e+1)},[]),M=(0,n.useCallback)(()=>{let e=null==f?void 0:f.items[0];return null==e?void 0:e.createdAt},[f]);(0,n.useEffect)(()=>{E(!0),j(!1);let e=p({q:m.q,status:m.status,from:m.from,to:m.to});(0,l.aA)("/parse-log?limit=200".concat(e.replace("?","&"))).then(e=>{v(e)}).catch(()=>{j(!0)}).finally(()=>{E(!1)})},[m.q,m.status,m.from,m.to,R]),(0,n.useEffect)(()=>{if(!d){w(null),L(!1);return}C(!0),L(!1),(0,l.aA)("/parse-log/".concat(d)).then(e=>{w(e)}).catch(()=>{w(null),L(!0)}).finally(()=>{C(!1)})},[d,P]);let O=(0,n.useMemo)(()=>{var e;return(null!==(e=null==f?void 0:f.items)&&void 0!==e?e:[]).map(e=>({id:String(e.id),content:(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded px-1.5 py-0.5 text-xs ".concat(b[e.status]),children:e.status}),(0,r.jsx)("span",{className:"text-xs text-gray-500",children:e.pageClass})]}),(0,r.jsx)("div",{className:"mt-0.5 text-sm font-medium text-gray-900",children:e.domain}),(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,x.d3)(e.createdAt)})]})}))},[f]),U=d?k?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):I?(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:()=>q(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):N?(0,r.jsx)(h,{item:N}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该解析日志"}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一条解析日志查看详情"});return(0,r.jsx)(o.m,{filterBar:(0,r.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,r.jsx)(c.f,{value:m,showStatus:!0,statusOptions:g,onChange:e=>T({filters:e})}),f?(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 pb-2 text-xs text-gray-500",children:[(0,r.jsxs)("span",{children:["共 ",f.total," 条"]}),f.abnormal>0?(0,r.jsxs)("span",{className:"rounded bg-red-50 px-1.5 py-0.5 text-red-700",children:["异常 ",f.abnormal]}):null]}):null,(0,r.jsx)(u.Y,{pollUrl:"/parse-log/count",getLatestTimestamp:M,onRefresh:A,label:"解析日志"})]}),listPanel:y?(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:A,className:"text-blue-500 hover:underline",children:"重试"})]}):(0,r.jsx)(i.L,{items:O,selectedId:d,onSelect:e=>T({id:e}),loading:S,emptyText:"暂无解析日志"}),detailPanel:U})}function y(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(v,{})})}},37202:function(e,t,s){"use strict";s.d(t,{f:function(){return a}});var r=s(72835),n=s(60635);function a(e){let{value:t,showStatus:s,statusOptions:a,onChange:l}=e,[c,o]=(0,n.useState)(t);return(0,n.useEffect)(()=>{o(t)},[t.q,t.status,t.from,t.to]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{(c.q!==t.q||c.status!==t.status||c.from!==t.from||c.to!==t.to)&&l(c)},300);return()=>clearTimeout(e)},[c.q,c.status,c.from,c.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:c.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:()=>l({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:!c.q&&!c.status&&!c.from&&!c.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"})})})]}),s?(0,r.jsxs)("select",{value:c.status,onChange:e=>o(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,r.jsx)("option",{value:"",children:"全部状态"}),(a||[]).map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"date",value:c.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:c.to,onChange:e=>o(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},94518:function(e,t,s){"use strict";s.d(t,{m:function(){return n}});var r=s(72835);function n(e){let{filterBar:t,listPanel:s,detailPanel:n}=e;return(0,r.jsxs)("div",{className:"flex h-full",children:[(0,r.jsxs)("div",{className:"flex w-80 flex-col border-r border-gray-200 bg-white",children:[t,s]}),(0,r.jsx)("div",{className:"flex-1 overflow-auto bg-gray-50 p-6",children:n})]})}},63718:function(e,t,s){"use strict";s.d(t,{L:function(){return a}});var r=s(72835),n=s(60635);function a(e){let{items:t,selectedId:s,onSelect:a,loading:l,emptyText:c="暂无数据",onLoadMore:o,loadingMore:i,exhausted:u}=e,d=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!o)return;let e=d.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&o()},{root:e.closest(".overflow-auto"),rootMargin:"200px"});return t.observe(e),()=>t.disconnect()},[o]),(0,r.jsxs)("div",{className:"flex-1 overflow-auto",children:[l?(0,r.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:"加载中…"}):0===t.length?(0,r.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:c}):(0,r.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,r.jsx)("li",{role:"button",tabIndex:0,onClick:()=>a(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&a(e.id)},className:"cursor-pointer px-3 py-2 text-sm transition-colors ".concat(s===e.id?"bg-blue-50":"hover:bg-gray-50"),children:e.content},e.id))}),o&&!l&&t.length>0&&(0,r.jsx)("div",{ref:d,className:"p-3 text-center text-xs text-gray-400",children:i?"加载更多…":u?"没有更多了":""})]})}},19036:function(e,t,s){"use strict";s.d(t,{Y:function(){return l}});var r=s(72835),n=s(60635),a=s(74431);function l(e){let{pollUrl:t,intervalMs:s=5e3,onRefresh:l,getLatestTimestamp:c,label:o="新数据"}=e,[i,u]=(0,n.useState)(0),[d,x]=(0,n.useState)(!1),m=(0,n.useRef)(void 0);return((0,n.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,n.useEffect)(()=>{m.current=c(),u(0)},[c]),(0,n.useEffect)(()=>{if(d)return;let e=async()=>{let e=m.current;if(!e)return;let s=t.includes("?")?"&":"?",r=0;try{var n;let l=await (0,a.aA)("".concat(t).concat(s,"since=").concat(encodeURIComponent(e)));r=null!==(n=l.count)&&void 0!==n?n:0}catch(e){}u(e=>Math.max(e,r))};e();let r=setInterval(e,s);return()=>clearInterval(r)},[t,s,d]),i<=0)?null:(0,r.jsxs)("button",{type:"button",onClick:()=>{u(0),l()},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:["有 ",i," 条",o,",点击刷新"]})}},8448:function(e,t,s){"use strict";function r(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}s.d(t,{d3:function(){return r}})},74431:function(e,t,s){"use strict";s.d(t,{Ox:function(){return a},aA:function(){return o}});var r=s(67002),n=s(60529);function a(){return n.env.HUNTER_MATE_SERVER_URL||""}let l=a();class c extends Error{constructor(e,t,s){super(null!=s?s:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let s;try{s=await fetch("".concat(l).concat(e),{cache:"no-store",...function(e){let t=(0,r.Xc)();if(!t)return e;let s=new Headers(null==e?void 0:e.headers);return s.has("Authorization")||s.set("Authorization","UTOKEN ".concat(t)),{...e,headers:s}}(t)})}catch(t){throw new c(0,e,t instanceof Error?t.message:"网络错误")}if(!s.ok)throw new c(s.status,e,"HTTP ".concat(s.status));try{return await s.json()}catch(t){throw new c(s.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,s){"use strict";s.d(t,{GK:function(){return l},Lc:function(){return c},Xc:function(){return a}});let r=null,n=new Set;function a(){return r}function l(e){e!==r&&(r=e,n.forEach(e=>e()))}function c(e){return n.add(e),()=>{n.delete(e)}}}},function(e){e.O(0,[589,400,935,744],function(){return e(e.s=10793)}),_N_E=e.O()}]);
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]="f6e9f3e8-bd66-462e-8697-8cfd04a8bca8",e._sentryDebugIdIdentifier="sentry-dbid-f6e9f3e8-bd66-462e-8697-8cfd04a8bca8")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[788],{10793:function(e,t,s){Promise.resolve().then(s.bind(s,4895))},27473:function(e,t,s){"use strict";var r=s(38321);s.o(r,"useParams")&&s.d(t,{useParams:function(){return r.useParams}}),s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}}),s.o(r,"useServerInsertedHTML")&&s.d(t,{useServerInsertedHTML:function(){return r.useServerInsertedHTML}})},4895:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return y}});var r=s(72835),n=s(60635),a=s(27473),l=s(74431),c=s(37202),o=s(94518),i=s(63718),u=s(19036),d=s(55589),x=s(8448);let m={ok:"正常",empty:"关键字段为空","no-snapshot":"缺快照","no-rule":"无规则"},f={ok:"bg-green-50 text-green-700",empty:"bg-yellow-50 text-yellow-700","no-snapshot":"bg-red-50 text-red-700","no-rule":"bg-gray-100 text-gray-600"};function h(e){var t,s;let{item:n}=e;return(0,r.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,r.jsx)(d.default,{href:"/parselog",className:"text-sm text-blue-600 hover:underline",children:"← 返回解析日志列表"}),(0,r.jsxs)("header",{className:"mt-4 mb-6",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsxs)("h1",{className:"text-2xl font-bold text-gray-900",children:["解析记录 #",n.id]}),(0,r.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(f[n.status]),children:null!==(s=m[n.status])&&void 0!==s?s:n.status}),n.hasSnapshot?(0,r.jsx)("span",{className:"rounded bg-green-50 px-2 py-0.5 text-xs text-green-700",children:"有录制快照"}):null]}),(0,r.jsxs)("p",{className:"mt-1 text-sm text-gray-500",children:[n.domain," \xb7 ",n.pageClass," \xb7 ",(0,x.d3)(n.createdAt)]})]}),(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:"来源"}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"text-sm",children:[(0,r.jsx)("span",{className:"text-gray-500",children:"sessionId: "}),(0,r.jsx)("span",{className:"font-mono",children:n.sessionId})]}),(0,r.jsx)("a",{href:n.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:n.sourceUrl}),n.entityId?(0,r.jsxs)("div",{className:"pt-2",children:[(0,r.jsx)("span",{className:"text-sm text-gray-500",children:"关联实体: "}),(0,r.jsxs)(d.default,{href:"/".concat(n.pageClass,"s?id=").concat(n.entityId),className:"text-sm text-blue-600 hover:underline",children:["#",n.entityId," (",n.pageClass,")"]})]}):null]})]}),n.extractedFields?(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)("pre",{className:"max-h-96 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(n.extractedFields,null,2)})]}):null,(null===(t=n.missingFields)||void 0===t?void 0:t.length)?(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)("ul",{className:"list-inside list-disc text-sm text-gray-700",children:n.missingFields.map(e=>(0,r.jsx)("li",{children:e},e))})]}):null]})}let g=[{value:"ok",label:"正常"},{value:"empty",label:"关键字段为空"},{value:"no-snapshot",label:"缺快照"},{value:"no-rule",label:"无规则"}],b={ok:"bg-green-50 text-green-700",empty:"bg-yellow-50 text-yellow-700","no-snapshot":"bg-red-50 text-red-700","no-rule":"bg-gray-100 text-gray-600"};function p(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[s,r]=e;r&&t.set(s,r)});let s=t.toString();return s?"?".concat(s):""}function v(){let e=(0,a.useRouter)(),t=(0,a.usePathname)(),s=(0,a.useSearchParams)(),d=s.get("id")||"",m=(0,n.useMemo)(()=>({q:s.get("q")||"",status:s.get("status")||"",from:s.get("from")||"",to:s.get("to")||""}),[s]),[f,v]=(0,n.useState)(null),[y,j]=(0,n.useState)(!1),[N,w]=(0,n.useState)(null),[S,E]=(0,n.useState)(!0),[k,C]=(0,n.useState)(!1),[I,L]=(0,n.useState)(!1),[P,q]=(0,n.useState)(0),[R,_]=(0,n.useState)(0),T=(0,n.useCallback)(s=>{var r,n;let a=null!==(r=s.filters)&&void 0!==r?r:m,l=p({id:null!==(n=s.id)&&void 0!==n?n:d,q:a.q,status:a.status,from:a.from,to:a.to});e.replace("".concat(t).concat(l))},[m,d,t,e]),A=(0,n.useCallback)(()=>{_(e=>e+1)},[]),M=(0,n.useCallback)(()=>{let e=null==f?void 0:f.items[0];return null==e?void 0:e.createdAt},[f]);(0,n.useEffect)(()=>{E(!0),j(!1);let e=p({q:m.q,status:m.status,from:m.from,to:m.to});(0,l.aA)("/parse-log?limit=200".concat(e.replace("?","&"))).then(e=>{v(e)}).catch(()=>{j(!0)}).finally(()=>{E(!1)})},[m.q,m.status,m.from,m.to,R]),(0,n.useEffect)(()=>{if(!d){w(null),L(!1);return}C(!0),L(!1),(0,l.aA)("/parse-log/".concat(d)).then(e=>{w(e)}).catch(()=>{w(null),L(!0)}).finally(()=>{C(!1)})},[d,P]);let O=(0,n.useMemo)(()=>{var e;return(null!==(e=null==f?void 0:f.items)&&void 0!==e?e:[]).map(e=>({id:String(e.id),content:(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"rounded px-1.5 py-0.5 text-xs ".concat(b[e.status]),children:e.status}),(0,r.jsx)("span",{className:"text-xs text-gray-500",children:e.pageClass})]}),(0,r.jsx)("div",{className:"mt-0.5 text-sm font-medium text-gray-900",children:e.domain}),(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,x.d3)(e.createdAt)})]})}))},[f]),U=d?k?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):I?(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:()=>q(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):N?(0,r.jsx)(h,{item:N}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该解析日志"}):(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一条解析日志查看详情"});return(0,r.jsx)(o.m,{filterBar:(0,r.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,r.jsx)(c.f,{value:m,showStatus:!0,statusOptions:g,onChange:e=>T({filters:e})}),f?(0,r.jsxs)("div",{className:"flex items-center justify-between px-3 pb-2 text-xs text-gray-500",children:[(0,r.jsxs)("span",{children:["共 ",f.total," 条"]}),f.abnormal>0?(0,r.jsxs)("span",{className:"rounded bg-red-50 px-1.5 py-0.5 text-red-700",children:["异常 ",f.abnormal]}):null]}):null,(0,r.jsx)(u.Y,{pollUrl:"/parse-log/count",getLatestTimestamp:M,onRefresh:A,label:"解析日志"})]}),listPanel:y?(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:A,className:"text-blue-500 hover:underline",children:"重试"})]}):(0,r.jsx)(i.L,{items:O,selectedId:d,onSelect:e=>T({id:e}),loading:S,emptyText:"暂无解析日志"}),detailPanel:U})}function y(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(v,{})})}},37202:function(e,t,s){"use strict";s.d(t,{f:function(){return a}});var r=s(72835),n=s(60635);function a(e){let{value:t,showStatus:s,statusOptions:a,onChange:l}=e,[c,o]=(0,n.useState)(t);return(0,n.useEffect)(()=>{o(t)},[t.q,t.status,t.from,t.to]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{(c.q!==t.q||c.status!==t.status||c.from!==t.from||c.to!==t.to)&&l(c)},300);return()=>clearTimeout(e)},[c.q,c.status,c.from,c.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:c.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:()=>l({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:!c.q&&!c.status&&!c.from&&!c.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"})})})]}),s?(0,r.jsxs)("select",{value:c.status,onChange:e=>o(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,r.jsx)("option",{value:"",children:"全部状态"}),(a||[]).map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("input",{type:"date",value:c.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:c.to,onChange:e=>o(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},94518:function(e,t,s){"use strict";s.d(t,{m:function(){return n}});var r=s(72835);function n(e){let{filterBar:t,listPanel:s,detailPanel:n}=e;return(0,r.jsxs)("div",{className:"flex h-full",children:[(0,r.jsxs)("div",{className:"flex w-80 flex-col border-r border-gray-200 bg-white",children:[t,s]}),(0,r.jsx)("div",{className:"flex-1 overflow-auto bg-gray-50 p-6",children:n})]})}},63718:function(e,t,s){"use strict";s.d(t,{L:function(){return a}});var r=s(72835),n=s(60635);function a(e){let{items:t,selectedId:s,onSelect:a,loading:l,emptyText:c="暂无数据",onLoadMore:o,loadingMore:i,exhausted:u}=e,d=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!o)return;let e=d.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&o()},{root:e.closest(".overflow-auto"),rootMargin:"200px"});return t.observe(e),()=>t.disconnect()},[o]),(0,r.jsxs)("div",{className:"flex-1 overflow-auto",children:[l?(0,r.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:"加载中…"}):0===t.length?(0,r.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:c}):(0,r.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,r.jsx)("li",{role:"button",tabIndex:0,onClick:()=>a(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&a(e.id)},className:"cursor-pointer px-3 py-2 text-sm transition-colors ".concat(s===e.id?"bg-blue-50":"hover:bg-gray-50"),children:e.content},e.id))}),o&&!l&&t.length>0&&(0,r.jsx)("div",{ref:d,className:"p-3 text-center text-xs text-gray-400",children:i?"加载更多…":u?"没有更多了":""})]})}},19036:function(e,t,s){"use strict";s.d(t,{Y:function(){return l}});var r=s(72835),n=s(60635),a=s(74431);function l(e){let{pollUrl:t,intervalMs:s=5e3,onRefresh:l,getLatestTimestamp:c,label:o="新数据"}=e,[i,u]=(0,n.useState)(0),[d,x]=(0,n.useState)(!1),m=(0,n.useRef)(void 0);return((0,n.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,n.useEffect)(()=>{m.current=c(),u(0)},[c]),(0,n.useEffect)(()=>{if(d)return;let e=async()=>{let e=m.current;if(!e)return;let s=t.includes("?")?"&":"?",r=0;try{var n;let l=await (0,a.aA)("".concat(t).concat(s,"since=").concat(encodeURIComponent(e)));r=null!==(n=l.count)&&void 0!==n?n:0}catch(e){}u(e=>Math.max(e,r))};e();let r=setInterval(e,s);return()=>clearInterval(r)},[t,s,d]),i<=0)?null:(0,r.jsxs)("button",{type:"button",onClick:()=>{u(0),l()},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:["有 ",i," 条",o,",点击刷新"]})}},8448:function(e,t,s){"use strict";function r(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}s.d(t,{d3:function(){return r}})},74431:function(e,t,s){"use strict";s.d(t,{Ox:function(){return a},aA:function(){return o}});var r=s(67002),n=s(60529);function a(){return n.env.HUNTER_MATE_SERVER_URL||""}let l=a();class c extends Error{constructor(e,t,s){super(null!=s?s:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let s;try{s=await fetch("".concat(l).concat(e),{cache:"no-store",...function(e){let t=(0,r.Xc)();if(!t)return e;let s=new Headers(null==e?void 0:e.headers);return s.has("Authorization")||s.set("Authorization","UTOKEN ".concat(t)),{...e,headers:s}}(t)})}catch(t){throw new c(0,e,t instanceof Error?t.message:"网络错误")}if(!s.ok)throw new c(s.status,e,"HTTP ".concat(s.status));try{return await s.json()}catch(t){throw new c(s.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,s){"use strict";s.d(t,{GK:function(){return l},Lc:function(){return c},Xc:function(){return a}});let r=null,n=new Set;function a(){return r}function l(e){e!==r&&(r=e,n.forEach(e=>e()))}function c(e){return n.add(e),()=>{n.delete(e)}}}},function(e){e.O(0,[589,400,935,744],function(){return e(e.s=10793)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
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]="b59a2262-25f3-43c3-975a-368e5f2f43bf",e._sentryDebugIdIdentifier="sentry-dbid-b59a2262-25f3-43c3-975a-368e5f2f43bf")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[370],{71428:function(e,t,r){Promise.resolve().then(r.bind(r,3402))},3402:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return P}});var s=r(72835),n=r(60635),l=r(27473),a=r(74431),o=r(37202),i=r(94518),d=r(14590);let c=null,u="";function x(){let e="".concat((0,a.Ox)(),"/api/recordings-view");return c&&u===e||(c=new d.kE(e),u=e),c}var m=r(8448);function f(e){let{sessionId:t,eventCount:r,sourceUrl:n,startedAt:l,lastEventAt:a,counts:o}=e,i=[{label:"页面轨迹",value:null==o?void 0:o.rrwebCount},{label:"网络请求",value:null==o?void 0:o.networkCount},{label:"控制台消息",value:null==o?void 0:o.consoleCount},{label:"简历提取",value:null==o?void 0:o.resumeCount},{label:"操作记录",value:null==o?void 0:o.actionCount}].filter(e=>{var t;return(null!==(t=e.value)&&void 0!==t?t:0)>0});return(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"事件数"}),(0,s.jsx)("div",{className:"text-lg font-semibold",children:r})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"来源页面"}),n?(0,s.jsx)("a",{href:n,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:n}):(0,s.jsx)("div",{className:"text-sm text-gray-400",children:"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"开始时间"}),(0,s.jsx)("div",{className:"text-sm",children:(0,m.d3)(l)})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-500",children:"最近事件"}),(0,s.jsx)("div",{className:"text-sm",children:(0,m.d3)(a)})]})]}),i.length>0?(0,s.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-gray-100 pt-3",children:i.map(e=>(0,s.jsxs)("span",{className:"rounded bg-gray-100 px-2 py-1 text-xs text-gray-700",children:[e.label,": ",e.value]},e.label))}):null,(0,s.jsx)("div",{className:"mt-3 border-t border-gray-100 pt-3",children:(0,s.jsx)("div",{className:"font-mono text-xs text-gray-400",children:t})})]})}let h={rrweb:"rrweb",network:"network",console:"console",resume:"简历",action:"操作"},v={rrweb:"bg-purple-100 text-purple-700",network:"bg-blue-100 text-blue-700",console:"bg-yellow-100 text-yellow-700",resume:"bg-green-100 text-green-700",action:"bg-gray-100 text-gray-700"};function g(e){var t,r;let{type:n}=e,l=null!==(t=h[n])&&void 0!==t?t:n,a=null!==(r=v[n])&&void 0!==r?r:"bg-gray-100 text-gray-600";return(0,s.jsx)("span",{className:"inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ".concat(a),children:l})}function b(e){let{data:t}=e;return(0,s.jsx)("pre",{className:"max-h-64 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t,null,2)})}function p(e){var t;let{event:r}=e,n=r.payload;return(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==n?void 0:n.title)&&void 0!==t?t:"简历提取事件"}),(null==n?void 0:n.source)?(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["来源:"," ",(0,s.jsx)("a",{href:n.source,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:n.source})]}):null,(null==n?void 0:n.fields)?(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"mb-1 text-xs text-gray-500",children:"提取到的字段"}),(0,s.jsx)(b,{data:n.fields})]}):(0,s.jsx)(b,{data:r.payload})]})}function y(e){var t;let{event:r}=e,n=r.payload;return(0,s.jsxs)("div",{className:"space-y-3",children:[(0,s.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==n?void 0:n.action)&&void 0!==t?t:"操作事件"}),(0,s.jsx)(b,{data:r.payload})]})}function j(e){let{sessionId:t}=e,[r,l]=(0,n.useState)(null),[o,i]=(0,n.useState)(!1),[d,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let e=!0;return l(null),i(!1),c(null),(0,a.aA)("/api/recordings-view/recordings/".concat(encodeURIComponent(t),"/business")).then(t=>{var r;e&&l(null!==(r=t.items)&&void 0!==r?r:[])}).catch(()=>{e&&i(!0)}),()=>{e=!1}},[t,u]),(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"本次操作与简历"}),o?(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm text-red-500",children:["加载失败",(0,s.jsx)("button",{type:"button",onClick:()=>x(e=>e+1),className:"text-blue-500 hover:underline",children:"重试"})]}):null===r?(0,s.jsx)("div",{className:"text-sm text-gray-400",children:"加载中…"}):0===r.length?(0,s.jsx)("div",{className:"text-sm text-gray-400",children:"本次录制没有捕捉到简历提取或操作记录"}):(0,s.jsx)("ul",{className:"space-y-1",children:r.map((e,t)=>(0,s.jsxs)("li",{children:[(0,s.jsxs)("button",{type:"button",onClick:()=>c(e=>e===t?null:t),className:"flex w-full items-start gap-3 rounded p-2 text-left text-sm hover:bg-gray-50",children:[(0,s.jsx)(g,{type:e.eventType}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:"truncate text-gray-900",children:function(e){var t,r;if("resume"===e.eventType){let r=e.payload;return null!==(t=null==r?void 0:r.title)&&void 0!==t?t:"简历提取事件"}let s=e.payload;return null!==(r=null==s?void 0:s.action)&&void 0!==r?r:"操作事件"}(e)}),(0,s.jsx)("div",{className:"text-xs text-gray-400",children:(0,m.d3)(e.createdAt)})]}),(0,s.jsx)("span",{className:"text-xs text-gray-400",children:d===t?"收起":"展开"})]}),d===t?(0,s.jsx)("div",{className:"ml-2 mt-1 border-l-2 border-gray-100 pl-4 pb-2",children:"resume"===e.eventType?(0,s.jsx)(p,{event:e}):(0,s.jsx)(y,{event:e})}):null]},t))})]})}function N(e){let{sessionId:t}=e,[r,l]=(0,n.useState)("idle"),[o,i]=(0,n.useState)(null);async function d(){l("loading");try{let e=await (0,a.aA)("/api/recordings/".concat(encodeURIComponent(t),"/parse"),{method:"POST"});i(e),l("success")}catch(e){console.error("[recordings] 解析失败:",e),l("error")}}let c=o&&"object"==typeof o&&"entity"in o&&o.entity&&"object"==typeof o.entity&&"id"in o.entity&&"type"in o.entity?"/entity?type=".concat(encodeURIComponent(String(o.entity.type)),"&id=").concat(encodeURIComponent(String(o.entity.id))):null;return(0,s.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("h2",{className:"text-lg font-semibold",children:"解析"}),(0,s.jsx)("button",{type:"button",onClick:d,disabled:"loading"===r,className:"rounded bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50",children:"loading"===r?"解析中,请稍候…":"开始解析"})]}),"success"===r?(0,s.jsxs)("div",{className:"mt-3 rounded border border-green-200 bg-green-50 p-3 text-sm text-green-700",children:[(0,s.jsx)("div",{children:"解析完成"}),c?(0,s.jsx)("a",{href:c,className:"mt-1 inline-block text-blue-600 hover:underline",children:"查看解析结果 →"}):null]}):null,"error"===r?(0,s.jsx)("div",{className:"mt-3 rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700",children:(0,s.jsx)("div",{children:"解析失败,请稍后重试"})}):null]})}function w(e){if(!e.sourceUrl)return"录制会话";try{return new URL(e.sourceUrl).hostname||"录制会话"}catch(t){return e.sourceUrl}}function I(e){var t;let{session:r,onCompare:n}=e;return(0,s.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,s.jsxs)("header",{className:"mb-6 flex items-center gap-3",children:[(0,s.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:w(r)}),n&&(0,s.jsx)("button",{type:"button",onClick:n,className:"rounded border border-gray-300 px-3 py-1 text-sm text-gray-600 hover:bg-gray-50 hover:text-gray-900",children:"与其他录制对比"})]}),(0,s.jsx)(f,{sessionId:r.sessionId,eventCount:r.eventCount,sourceUrl:null!==(t=r.sourceUrl)&&void 0!==t?t:null,startedAt:r.startedAt,lastEventAt:r.lastEventAt,counts:r.counts}),(0,s.jsx)("div",{className:"mt-4",children:(0,s.jsx)(d.$q,{api:x(),sessionId:r.sessionId,renderError:(e,t)=>(0,s.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600",children:[(0,s.jsx)("span",{children:"回放加载失败"}),(0,s.jsx)("button",{type:"button",onClick:t,className:"rounded border border-red-300 px-3 py-1 hover:bg-red-100",children:"重试"})]})},r.sessionId)}),(0,s.jsx)("div",{className:"mt-4",children:(0,s.jsx)(j,{sessionId:r.sessionId})}),(0,s.jsx)("div",{className:"mt-4",children:(0,s.jsx)(N,{sessionId:r.sessionId})})]})}function C(e){if(e.urlKey)return e.urlKey;let t=e.sourceUrl;if(!t)return"";try{return new URL(t).hostname||""}catch(e){return t}}function k(e){let t=Date.parse(e.startedAt.replace(" ","T"));return Number.isFinite(t)?t:0}function E(e,t){let r=e.find(e=>e.sessionId===t),s=r?C(r):"";return e.filter(e=>e.sessionId!==t).sort((e,t)=>{let r=""!==s&&C(e)===s?0:1,n=""!==s&&C(t)===s?0:1;return r!==n?r-n:k(t)-k(e)})}function S(e){if("number"==typeof e.duration)return e.duration;let t=Date.parse(e.startedAt.replace(" ","T")),r=Date.parse(e.lastEventAt.replace(" ","T"));if(!Number.isFinite(t)||!Number.isFinite(r))return null;let s=r-t;return s>=0?s:null}function A(e){var t,r,s;let n=null!==(t=e.sourceUrl)&&void 0!==t?t:"",l="";if(n)try{l=new URL(n).hostname||""}catch(e){l=""}let a=Date.parse(e.lastEventAt.replace(" ","T"));return{sessionId:e.sessionId,title:n||e.sessionId,status:"completed",startTime:k(e),endTime:Number.isFinite(a)?a:null,duration:S(e),startUrl:n,domain:l,url:n,urlKey:null!==(r=e.urlKey)&&void 0!==r?r:"",tabId:null!==(s=e.tabId)&&void 0!==s?s:null,tags:[]}}let U={rrweb:[],network:[],console:[],exceptions:[]};function L(e,t){let[r,s]=(0,n.useState)({events:null,error:null,loading:!1});return(0,n.useEffect)(()=>{s({events:null,error:null,loading:!1})},[e]),(0,n.useEffect)(()=>{if(!e)return;let t=!1;return s(e=>({...e,error:null,loading:!0})),x().events(e).then(e=>{t||s({events:e,error:null,loading:!1})}).catch(()=>{t||s({events:null,error:"network_error",loading:!1})}),()=>{t=!0}},[e,t]),r}function T(e){var t,r,l,a;let{base:o,target:i,sessions:c,onSelectTarget:u,onSwap:x,onExit:m}=e,f=E(c,o.sessionId),[h,v]=(0,n.useState)(0),g=(0,n.useCallback)(()=>v(e=>e+1),[]);(0,n.useEffect)(()=>v(0),[o.sessionId,null==i?void 0:i.sessionId]);let b=L(o.sessionId,h),p=L(null!==(t=null==i?void 0:i.sessionId)&&void 0!==t?t:null,h),y=b.loading||!!i&&p.loading,j={meta:A(o),events:null!==(r=b.events)&&void 0!==r?r:U},N=i?{meta:A(i),events:null!==(l=p.events)&&void 0!==l?l:U}:null;return(0,s.jsxs)("div",{className:"mx-auto max-w-6xl",children:[(0,s.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm",children:[(0,s.jsx)("span",{className:"text-gray-500",children:"基准:"}),(0,s.jsxs)("span",{title:"基准为当前选中会话,不可更改",className:"cursor-not-allowed select-none rounded border border-gray-200 bg-gray-50 px-2 py-1 text-gray-700",children:[w(o),(0,s.jsx)("span",{className:"ml-1 text-xs text-gray-400",children:"(本次)▾"})]}),(0,s.jsx)("button",{type:"button",onClick:x,disabled:!i,title:i?"互换基准与对照":"请先选择对照录制",className:"rounded border border-gray-300 px-2 py-1 text-gray-600 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-40",children:"⇄ 互换"}),(0,s.jsx)("span",{className:"text-gray-500",children:"对照:"}),0===f.length?(0,s.jsx)("span",{className:"text-gray-400",children:"还需要至少另一条录制才能对比"}):(0,s.jsxs)("select",{value:null!==(a=null==i?void 0:i.sessionId)&&void 0!==a?a:"",onChange:e=>u(e.target.value),"aria-label":"选择对照录制",className:"rounded border border-gray-300 bg-white px-2 py-1 text-gray-700",children:[(0,s.jsx)("option",{value:"",disabled:!0,children:"选择对照录制"}),f.map(e=>(0,s.jsx)("option",{value:e.sessionId,children:function(e){let t=e.startedAt.length>=16?e.startedAt.slice(5,16):e.startedAt;return"".concat(t," \xb7 ").concat(function(e){let t=S(e);if(null===t)return"—";let r=Math.floor(t/1e3);if(r<1)return"不足1秒";let s=Math.floor(r/60),n=r%60;return s>0?"".concat(s,"分").concat(n,"秒"):"".concat(n,"秒")}(e)," \xb7 ").concat(e.eventCount," 事件")}(e)},e.sessionId))]}),(0,s.jsx)("button",{type:"button",onClick:m,className:"ml-auto rounded border border-gray-300 px-3 py-1 text-gray-600 hover:bg-gray-50",children:"退出对比"})]}),i?y?(0,s.jsx)("div",{className:"flex h-64 items-center justify-center text-gray-400",children:"加载回放中…"}):(0,s.jsx)(d._f,{base:j,target:N,baseError:b.error,targetError:p.error,onRetryError:g,renderError:(e,t)=>(0,s.jsxs)("div",{className:"flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600",children:[(0,s.jsxs)("span",{children:["对比加载失败:",e]}),(0,s.jsx)("button",{type:"button",onClick:t,className:"rounded border border-red-300 px-3 py-1 hover:bg-red-100",children:"重试"})]})},"".concat(o.sessionId,":").concat(i.sessionId)):(0,s.jsx)("div",{className:"flex h-64 items-center justify-center text-gray-400",children:"从上方对照下拉选择另一条录制后开始对比"})]})}var R=r(63718);function _(e){let{session:t}=e;return(0,s.jsxs)("div",{children:[t.sourceUrl?(0,s.jsx)("div",{className:"truncate text-sm font-medium text-gray-900",children:t.sourceUrl}):(0,s.jsx)("div",{className:"text-sm font-medium text-gray-400",children:"无来源页面"}),(0,s.jsxs)("div",{className:"flex items-center gap-2 text-xs text-gray-500",children:[(0,s.jsxs)("span",{children:[t.eventCount," 事件"]}),"number"==typeof t.tabId?(0,s.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["tab #",t.tabId]}):null]}),(0,s.jsx)("div",{className:"text-xs text-gray-400",children:(0,m.d3)(t.lastEventAt)}),(0,s.jsx)("div",{className:"truncate font-mono text-[10px] text-gray-300",children:t.sessionId})]})}function q(e){let{sessions:t,selectedId:r,onSelect:n,loading:l}=e,a=t.map(e=>({id:e.sessionId,content:(0,s.jsx)(_,{session:e})}));return(0,s.jsx)(R.L,{items:a,selectedId:r,onSelect:n,loading:l,emptyText:"暂无录制会话"})}function D(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[r,s]=e;void 0!==s&&(s||"compare"===r)&&t.set(r,s)});let r=t.toString();return r?"?".concat(r):""}function O(){let e=(0,l.useRouter)(),t=(0,l.usePathname)(),r=(0,l.useSearchParams)(),d=r.get("sessionId")||"",c=r.get("compare"),u=r.has("compare"),x=(0,n.useMemo)(()=>({q:r.get("q")||"",status:"",from:r.get("from")||"",to:r.get("to")||""}),[r]),[m,f]=(0,n.useState)([]),[h,v]=(0,n.useState)(!1),[g,b]=(0,n.useState)(!1),[p,y]=(0,n.useState)(!0),j=(0,n.useCallback)(r=>{var s,n;let l=null!==(s=r.filters)&&void 0!==s?s:x,a=void 0===r.compare?null!=c?c:void 0:null===r.compare?void 0:r.compare,o=D({sessionId:null!==(n=r.sessionId)&&void 0!==n?n:d,q:l.q,from:l.from,to:l.to,compare:a});e.replace("".concat(t).concat(o))},[x,d,c,t,e]),N=(0,n.useCallback)(()=>{let e=E(m,d)[0];j({compare:e?e.sessionId:""})},[m,d,j]),w=(0,n.useCallback)(()=>j({compare:null}),[j]),C=(0,n.useCallback)(e=>j({compare:e}),[j]),k=(0,n.useCallback)(()=>{c&&j({sessionId:c,compare:d})},[c,d,j]),S=(0,n.useCallback)(e=>{(null==e?void 0:e.withLoading)&&y(!0);let t=D({q:x.q,from:x.from,to:x.to});(0,a.aA)("/api/recordings-view/recordings?limit=200".concat(t.replace("?","&"))).then(e=>{f(t=>{var r;return function(e,t){let r=new Map(e.map(e=>[e.sessionId,e]));return t.map(e=>{let t=r.get(e.sessionId);return t&&t.eventCount===e.eventCount&&t.lastEventAt===e.lastEventAt&&t.tabId===e.tabId?t:{...e}})}(t,null!==(r=e.recordings)&&void 0!==r?r:[])}),v(!1),b(!1)}).catch(()=>{(null==e?void 0:e.withLoading)?v(!0):b(!0)}).finally(()=>{(null==e?void 0:e.withLoading)&&y(!1)})},[x.q,x.from,x.to]);(0,n.useEffect)(()=>{S({withLoading:!0})},[S]),(0,n.useEffect)(()=>{let e=setInterval(()=>S({withLoading:!1}),1e4);return()=>clearInterval(e)},[S]);let A=h?(0,s.jsxs)("div",{className:"flex h-full items-center justify-center gap-2 text-red-500",children:["加载失败",(0,s.jsx)("button",{type:"button",onClick:()=>S({withLoading:!0}),className:"text-blue-500 hover:underline",children:"重试"})]}):(0,s.jsxs)(s.Fragment,{children:[g&&(0,s.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-amber-100 bg-amber-50 px-3 py-1.5 text-xs text-amber-600",children:[(0,s.jsx)("span",{children:"列表更新失败,显示上次数据"}),(0,s.jsx)("button",{type:"button",onClick:()=>S({withLoading:!1}),className:"text-blue-500 hover:underline",children:"重试"})]}),(0,s.jsx)(q,{sessions:m,selectedId:d,onSelect:e=>j({sessionId:e}),loading:p})]}),U=d?m.find(e=>e.sessionId===d):void 0,L=u&&d?m.find(e=>e.sessionId===d):void 0,R=u&&c?m.find(e=>e.sessionId===c):void 0,_=d?u?L?(0,s.jsx)(T,{base:L,target:null!=R?R:null,sessions:m,onSelectTarget:C,onSwap:k,onExit:w}):p?(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该录制会话"}):U?(0,s.jsx)(I,{session:U,onCompare:N}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-red-500",children:"未找到该录制会话"}):(0,s.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"请在左侧选择一个录制会话查看详情"});return(0,s.jsx)(i.m,{filterBar:(0,s.jsx)(o.f,{value:x,onChange:e=>j({filters:e})}),listPanel:A,detailPanel:_})}function P(){return(0,s.jsx)(n.Suspense,{fallback:(0,s.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,s.jsx)(O,{})})}},37202:function(e,t,r){"use strict";r.d(t,{f:function(){return l}});var s=r(72835),n=r(60635);function l(e){let{value:t,showStatus:r,statusOptions:l,onChange:a}=e,[o,i]=(0,n.useState)(t);return(0,n.useEffect)(()=>{i(t)},[t.q,t.status,t.from,t.to]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{(o.q!==t.q||o.status!==t.status||o.from!==t.from||o.to!==t.to)&&a(o)},300);return()=>clearTimeout(e)},[o.q,o.status,o.from,o.to]),(0,s.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsxs)("div",{className:"relative flex-1",children:[(0,s.jsx)("input",{type:"text",value:o.q,onChange:e=>i(t=>({...t,q:e.target.value})),placeholder:"搜索关键词...",className:"w-full rounded border border-gray-300 px-2 py-1.5 pr-8 text-sm outline-none focus:border-blue-500"}),(0,s.jsx)("button",{type:"button",onClick:()=>a({q:"",status:"",from:"",to:""}),title:"重置筛选",className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600 disabled:opacity-30",disabled:!o.q&&!o.status&&!o.from&&!o.to,children:(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),r?(0,s.jsxs)("select",{value:o.status,onChange:e=>i(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,s.jsx)("option",{value:"",children:"全部状态"}),(l||[]).map(e=>(0,s.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("input",{type:"date",value:o.from,onChange:e=>i(t=>({...t,from:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),(0,s.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,s.jsx)("input",{type:"date",value:o.to,onChange:e=>i(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},94518:function(e,t,r){"use strict";r.d(t,{m:function(){return n}});var s=r(72835);function n(e){let{filterBar:t,listPanel:r,detailPanel:n}=e;return(0,s.jsxs)("div",{className:"flex h-full",children:[(0,s.jsxs)("div",{className:"flex w-80 flex-col border-r border-gray-200 bg-white",children:[t,r]}),(0,s.jsx)("div",{className:"flex-1 overflow-auto bg-gray-50 p-6",children:n})]})}},63718:function(e,t,r){"use strict";r.d(t,{L:function(){return l}});var s=r(72835),n=r(60635);function l(e){let{items:t,selectedId:r,onSelect:l,loading:a,emptyText:o="暂无数据",onLoadMore:i,loadingMore:d,exhausted:c}=e,u=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!i)return;let e=u.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&i()},{root:e.closest(".overflow-auto"),rootMargin:"200px"});return t.observe(e),()=>t.disconnect()},[i]),(0,s.jsxs)("div",{className:"flex-1 overflow-auto",children:[a?(0,s.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:"加载中…"}):0===t.length?(0,s.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:o}):(0,s.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,s.jsx)("li",{role:"button",tabIndex:0,onClick:()=>l(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&l(e.id)},className:"cursor-pointer px-3 py-2 text-sm transition-colors ".concat(r===e.id?"bg-blue-50":"hover:bg-gray-50"),children:e.content},e.id))}),i&&!a&&t.length>0&&(0,s.jsx)("div",{ref:u,className:"p-3 text-center text-xs text-gray-400",children:d?"加载更多…":c?"没有更多了":""})]})}},8448:function(e,t,r){"use strict";function s(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}r.d(t,{d3:function(){return s}})},74431:function(e,t,r){"use strict";r.d(t,{Ox:function(){return l},aA:function(){return i}});var s=r(67002),n=r(60529);function l(){return n.env.HUNTER_MATE_SERVER_URL||""}let a=l();class o extends Error{constructor(e,t,r){super(null!=r?r:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function i(e,t){let r;try{r=await fetch("".concat(a).concat(e),{cache:"no-store",...function(e){let t=(0,s.Xc)();if(!t)return e;let r=new Headers(null==e?void 0:e.headers);return r.has("Authorization")||r.set("Authorization","UTOKEN ".concat(t)),{...e,headers:r}}(t)})}catch(t){throw new o(0,e,t instanceof Error?t.message:"网络错误")}if(!r.ok)throw new o(r.status,e,"HTTP ".concat(r.status));try{return await r.json()}catch(t){throw new o(r.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,r){"use strict";r.d(t,{GK:function(){return a},Lc:function(){return o},Xc:function(){return l}});let s=null,n=new Set;function l(){return s}function a(e){e!==s&&(s=e,n.forEach(e=>e()))}function o(e){return n.add(e),()=>{n.delete(e)}}}},function(e){e.O(0,[896,400,935,744],function(){return e(e.s=71428)}),_N_E=e.O()}]);
@@ -1 +1 @@
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]="a94964b7-1d94-4954-a8b5-b9e31e742668",e._sentryDebugIdIdentifier="sentry-dbid-a94964b7-1d94-4954-a8b5-b9e31e742668")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[514],{19155:function(e,t,s){Promise.resolve().then(s.bind(s,80611))},80611:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return T}});var r=s(72835),a=s(60635),n=s(74431),l=s(51140),c=s(96049),i=s(85018),o=s(5200),d=s(85673),u=s(86583),h=s(74800),m=s(16308),x=s(8425),p=s(95090);let y=["#2563eb","#16a34a","#f59e0b","#dc2626","#7c3aed","#0891b2"],f={hm:"hunter-mate",hmh:"harness 工具链",extra:"其他"},g={hm:"#2563eb",hmh:"#16a34a",extra:"#94a3b8"};function j(e){if(!Number.isFinite(e)||e<0)return"-";let t=["B","KB","MB","GB","TB"],s=e,r=0;for(;s>=1024&&r<t.length-1;)s/=1024,r++;return"".concat(s>=100||0===r?Math.round(s):s.toFixed(1)," ").concat(t[r])}function b(e){let t=new Date(e);return"".concat(String(t.getMonth()+1).padStart(2,"0"),"-").concat(String(t.getDate()).padStart(2,"0")," ").concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}function v(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"),":").concat(String(t.getSeconds()).padStart(2,"0"))}function N(e){return e.group?e.group:e.key.startsWith("hunter-mate-h")?"hmh":e.key.startsWith("hunter-mate-")?"hm":"extra"}function w(e){return e.group?e.group:/hunter-mate-harness|chromepilot|hmx/i.test(e.cmd)||/hmx|chromepilot/i.test(e.name)?"hmh":"hm"}function S(e){let{title:t,children:s}=e;return(0,r.jsxs)("section",{className:"rounded-xl border border-gray-200 bg-white p-4",children:[(0,r.jsx)("h3",{className:"mb-3 text-sm font-medium text-gray-700",children:t}),s]})}let k=(0,a.memo)(function(e){let{items:t}=e,s=Array.from(new Set(t.flatMap(e=>e.paths.map(e=>e.key)))),a=t.map(e=>{let t={ts:b(e.ts)};for(let s of e.paths)t[s.key]=Number((s.totalBytes/1073741824).toFixed(3));return t});return(0,r.jsx)(S,{title:"磁盘占用趋势(按受监控路径,GB)",children:(0,r.jsx)(l.h,{width:"100%",height:260,children:(0,r.jsxs)(c.T,{data:a,margin:{top:4,right:12,bottom:0,left:0},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),(0,r.jsx)(o.K,{dataKey:"ts",tick:{fontSize:11},minTickGap:40}),(0,r.jsx)(d.B,{tick:{fontSize:11},width:56}),(0,r.jsx)(u.u,{formatter:e=>["".concat(e," GB"),void 0]}),(0,r.jsx)(h.D,{}),s.map((e,t)=>(0,r.jsx)(m.uN,{type:"monotone",dataKey:e,stroke:y[t%y.length],fill:y[t%y.length],fillOpacity:.15,name:e,connectNulls:!0},e))]})})})}),B=(0,a.memo)(function(e){let{p:t,diskTotalBytes:s}=e,a=N(t),n=s>0?(t.totalBytes/s*100).toFixed(1):null;return(0,r.jsx)(S,{title:"路径构成:".concat(t.key,"(").concat(f[a],")(").concat(t.path,")— 共 ").concat(j(t.totalBytes)).concat(null!==n?" \xb7 占总磁盘 ".concat(n,"%"):""),children:(0,r.jsx)(l.h,{width:"100%",height:Math.max(120,26*t.topEntries.length+40),children:(0,r.jsxs)(x.v,{data:t.topEntries,layout:"vertical",margin:{top:0,right:16,bottom:0,left:8},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb",horizontal:!1}),(0,r.jsx)(o.K,{type:"number",tick:{fontSize:11},tickFormatter:e=>j(e)}),(0,r.jsx)(d.B,{type:"category",dataKey:"name",tick:{fontSize:11},width:180}),(0,r.jsx)(u.u,{formatter:e=>j(Number(e))}),(0,r.jsx)(p.$Q,{dataKey:"bytes",name:"占用",fill:g[a],radius:[0,3,3,0]})]})})})}),M=(0,a.memo)(function(e){var t,s,a;let{items:n}=e,l=n[n.length-1];if(!l)return null;let c=new Map;for(let e of l.paths.filter(e=>e.exists)){let t=N(e);c.set(t,(null!==(s=c.get(t))&&void 0!==s?s:0)+e.totalBytes)}let i=Array.from(c.entries()).sort((e,t)=>t[1]-e[1]),o=null!==(a=null===(t=l.totals)||void 0===t?void 0:t.diskTotalBytes)&&void 0!==a?a:0;return(0,r.jsx)(S,{title:"磁盘分组概览(hm / harness 工具链,占总磁盘比例)",children:(0,r.jsxs)("table",{className:"w-full text-xs text-gray-600",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-gray-100 text-left",children:[(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"分组"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"占用"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"占总磁盘"}),(0,r.jsx)("th",{className:"py-1 font-medium",children:"占比条"})]})}),(0,r.jsxs)("tbody",{children:[i.map(e=>{let[t,s]=e,a=o>0?s/o*100:null;return(0,r.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,r.jsx)("td",{className:"py-1 pr-4",children:f[t]}),(0,r.jsx)("td",{className:"py-1 pr-4",children:j(s)}),(0,r.jsx)("td",{className:"py-1 pr-4",children:null===a?"-":"".concat(a.toFixed(1),"%")}),(0,r.jsx)("td",{className:"py-1",children:null!==a&&(0,r.jsx)("div",{className:"h-2 w-full min-w-[120px] rounded bg-gray-100",children:(0,r.jsx)("div",{className:"h-2 rounded",style:{width:"".concat(Math.min(100,a),"%"),background:g[t]}})})})]},t)}),!i.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:4,className:"py-2 text-gray-400",children:"本帧无路径数据"})})]})]})})}),A=(0,a.memo)(function(e){let{items:t,liveSamples:s}=e,a=s.length>0,n=a?s[s.length-1]:null,x=t[t.length-1],p=a?s.map(e=>{var t,s,r,a;if(e.groups)return{ts:v(e.ts),rssMBHm:Number((e.groups.hm.rssBytes/1048576).toFixed(1)),rssMBHmh:Number((e.groups.hmh.rssBytes/1048576).toFixed(1)),cpuHm:Number((null!==(t=e.groups.hm.cpuPercent)&&void 0!==t?t:0).toFixed(1)),cpuHmh:Number((null!==(s=e.groups.hmh.cpuPercent)&&void 0!==s?s:0).toFixed(1))};let n=0,l=0,c=0,i=0;for(let t of e.processes)"hmh"===w(t)?(l+=t.rssBytes,i+=null!==(r=t.cpuPercent)&&void 0!==r?r:0):(n+=t.rssBytes,c+=null!==(a=t.cpuPercent)&&void 0!==a?a:0);return{ts:v(e.ts),rssMBHm:Number((n/1048576).toFixed(1)),rssMBHmh:Number((l/1048576).toFixed(1)),cpuHm:Number(c.toFixed(1)),cpuHmh:Number(i.toFixed(1))}}):t.map(e=>{let t=0,s=0,r=0,a=0;for(let n of e.processes)"hmh"===w(n)?(s+=n.rssBytes,a+=n.cpuPercent):(t+=n.rssBytes,r+=n.cpuPercent);return{ts:b(e.ts),rssMBHm:Number((t/1048576).toFixed(1)),rssMBHmh:Number((s/1048576).toFixed(1)),cpuHm:Number(r.toFixed(1)),cpuHmh:Number(a.toFixed(1))}}),y=n?n.processes:x.processes;return(0,r.jsxs)(S,{title:a?"相关进程占用趋势(准实时 5s \xb7 按 hm / 工具链分开 \xb7 内存 MB / CPU %)":"相关进程占用趋势(按 hm / harness 工具链分开 \xb7 内存 MB / CPU %)",children:[(0,r.jsx)(l.h,{width:"100%",height:240,children:(0,r.jsxs)(c.T,{data:p,margin:{top:4,right:12,bottom:0,left:0},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),(0,r.jsx)(o.K,{dataKey:"ts",tick:{fontSize:11},minTickGap:40}),(0,r.jsx)(d.B,{yAxisId:"mb",tick:{fontSize:11},width:52}),(0,r.jsx)(d.B,{yAxisId:"pct",orientation:"right",tick:{fontSize:11},width:44}),(0,r.jsx)(u.u,{}),(0,r.jsx)(h.D,{}),(0,r.jsx)(m.uN,{yAxisId:"mb",type:"monotone",dataKey:"rssMBHm",name:"hm 内存(MB)",stroke:g.hm,fill:g.hm,fillOpacity:.15,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"mb",type:"monotone",dataKey:"rssMBHmh",name:"工具链内存(MB)",stroke:g.hmh,fill:g.hmh,fillOpacity:.15,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"pct",type:"monotone",dataKey:"cpuHm",name:"hm CPU(%)",stroke:"#dc2626",fill:"#dc2626",fillOpacity:.1,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"pct",type:"monotone",dataKey:"cpuHmh",name:"工具链 CPU(%)",stroke:"#f59e0b",fill:"#f59e0b",fillOpacity:.1,isAnimationActive:!1})]})}),(0,r.jsx)("div",{className:"mt-3 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-xs text-gray-600",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-gray-100 text-left",children:[(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"分组"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"PID"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"进程"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"RSS"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"CPU%"})]})}),(0,r.jsxs)("tbody",{children:[y.map(e=>(0,r.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,r.jsx)("td",{className:"py-1 pr-4",children:"hmh"===w(e)?"工具链":"hm"}),(0,r.jsx)("td",{className:"py-1 pr-4",children:e.pid}),(0,r.jsx)("td",{className:"max-w-[360px] truncate py-1 pr-4",title:e.cmd,children:e.cmd||e.name}),(0,r.jsx)("td",{className:"py-1 pr-4",children:j(e.rssBytes)}),(0,r.jsx)("td",{className:"py-1 pr-4",children:null===e.cpuPercent?"—":"".concat(e.cpuPercent,"%")})]},e.pid)),!y.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:5,className:"py-2 text-gray-400",children:"本帧无匹配进程"})})]})]})})]})});function P(e){var t;let{items:s,liveSamples:a=[]}=e,n=s[s.length-1];if(!n)return null;let l=n.paths.filter(e=>e.exists),c=null!==(t=n.totals)&&void 0!==t?t:null;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("section",{className:"rounded-xl border border-gray-200 bg-white p-4",children:[(0,r.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-700",children:"系统信息"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-x-6 gap-y-1 text-xs text-gray-600",children:[(0,r.jsxs)("span",{children:["主机:",n.system.hostname]}),(0,r.jsxs)("span",{children:["用户:",n.system.username]}),(0,r.jsxs)("span",{children:["系统:",n.system.platform," ",n.system.osRelease,"(",n.system.arch,")"]}),(0,r.jsxs)("span",{children:["CPU:",n.system.cpuModel," \xd7 ",n.system.cpuCores," 核"]}),(0,r.jsxs)("span",{children:["内存:",j(n.system.totalMemBytes)]}),(0,r.jsxs)("span",{children:["快照:",new Date(n.ts).toLocaleString()]})]}),c&&(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap gap-x-6 gap-y-1 border-t border-gray-100 pt-2 text-xs text-gray-600",children:[(0,r.jsxs)("span",{children:["整机 CPU:",c.cpuPercent,"%"]}),(0,r.jsxs)("span",{children:["整机内存:",j(c.memUsedBytes)," / ",j(c.memTotalBytes),"(",c.memUsedPercent,"%)"]}),(0,r.jsxs)("span",{children:["整机磁盘:",j(c.diskUsedBytes)," / ",j(c.diskTotalBytes),"(",c.diskUsedPercent,"%)"]})]})]}),(0,r.jsx)(M,{items:s}),(0,r.jsx)(k,{items:s}),(0,r.jsx)(A,{items:s,liveSamples:a}),l.map(e=>{var t;return(0,r.jsx)(B,{p:e,diskTotalBytes:null!==(t=null==c?void 0:c.diskTotalBytes)&&void 0!==t?t:0},e.key)})]})}let H=[{value:24,label:"最近 1 天"},{value:72,label:"最近 3 天"},{value:168,label:"最近 7 天"}];function T(){let[e,t]=(0,a.useState)(72),[s,l]=(0,a.useState)([]),[c,i]=(0,a.useState)([]),[o,d]=(0,a.useState)(!1),[u,h]=(0,a.useState)(!0),[m,x]=(0,a.useState)(!1),[p,y]=(0,a.useState)(""),f=(0,a.useRef)(e),g=(0,a.useRef)(null),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{f.current=e},[e]);let b=(0,a.useCallback)(async e=>{h(!0);try{var t;let s=await (0,n.aA)("/resource-usage/history?hours=".concat(e)),r=null!==(t=null==s?void 0:s.items)&&void 0!==t?t:[];l(r);let a=r[r.length-1];a&&(g.current=a.ts)}catch(e){l([]),y("历史快照加载失败,请稍后重试")}finally{h(!1)}},[]);(0,a.useEffect)(()=>{b(e)},[e,b]),(0,a.useEffect)(()=>{let e,t=!1,s=e=>{if(!t){if(!e.sampleIntervalMs||e.sampleIntervalMs<=0){d(!1);return}if(d(!0),e.last&&e.last.ts!==j.current){j.current=e.last.ts;let t=e.last;i(e=>{let s=[...e,t];return s.length>720?s.slice(s.length-720):s})}e.lastFullSnapshotTs&&e.lastFullSnapshotTs!==g.current&&(g.current=e.lastFullSnapshotTs,b(f.current))}};return(async()=>{var r,a,l,c;try{let e=await (0,n.aA)("/resource-usage/samples");if(t)return;if(null==e?void 0:null===(r=e.samples)||void 0===r?void 0:r.length){let t=e.samples.slice(-720);i(t),j.current=null!==(l=null===(a=t[t.length-1])||void 0===a?void 0:a.ts)&&void 0!==l?l:null}}catch(e){}(0,n.aA)("/resource-usage/collect-now",{method:"POST",headers:{"Content-Type":"application/json"}}).catch(()=>{});let o=null;try{o=await (0,n.aA)("/resource-usage/live")}catch(e){}o&&s(o),t||(e=setInterval(()=>{(0,n.aA)("/resource-usage/live").then(s).catch(()=>{})},Math.max(null!==(c=null==o?void 0:o.sampleIntervalMs)&&void 0!==c?c:5e3,2e3)))})(),()=>{t=!0,e&&clearInterval(e)}},[b]);let v=async()=>{x(!0),y("");try{var e;let t=await (0,n.aA)("/resource-usage/collect-now",{method:"POST",headers:{"Content-Type":"application/json"}});y((null===(e=t.report)||void 0===e?void 0:e.reported)?"已采集并上报 ".concat(t.report.reported," 条"):"已采集(本地)"),b(f.current)}catch(e){y("采集失败(查看 server 日志)")}finally{x(!1)}};return(0,r.jsx)("div",{className:"h-full overflow-auto bg-gray-50 p-6",children:(0,r.jsxs)("div",{className:"mx-auto max-w-5xl",children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-lg font-semibold text-gray-900",children:"资源占用"}),(0,r.jsxs)("p",{className:"text-xs text-gray-500",children:["hunter-mate / hunter-mate-harness 磁盘占用、相关进程内存 CPU 与系统配置(默认保留 3 天)",o&&" \xb7 进程准实时 5s"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("select",{value:e,onChange:e=>t(Number(e.target.value)),className:"rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-sm text-gray-700",children:H.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,r.jsx)("button",{type:"button",onClick:v,disabled:m,className:"rounded-lg bg-blue-600 px-3 py-1.5 text-sm text-white transition-colors hover:bg-blue-700 disabled:opacity-50",children:m?"采集中…":"立即采集"})]})]}),p&&(0,r.jsx)("p",{className:"mb-3 text-xs text-gray-500",children:p}),u?(0,r.jsx)("div",{className:"py-20 text-center text-sm text-gray-400",children:"加载中…"}):0===s.length?(0,r.jsxs)("div",{className:"rounded-xl border border-dashed border-gray-300 bg-white py-20 text-center",children:[(0,r.jsx)("p",{className:"text-sm text-gray-500",children:"窗口内暂无快照"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-gray-400",children:"server 每 5 分钟自动采集一帧,也可点「立即采集」"})]}):(0,r.jsx)(P,{items:s,liveSamples:c})]})})}},74431:function(e,t,s){"use strict";s.d(t,{Ox:function(){return n},aA:function(){return i}});var r=s(67002),a=s(60529);function n(){return a.env.HUNTER_MATE_SERVER_URL||""}let l=n();class c extends Error{constructor(e,t,s){super(null!=s?s:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function i(e,t){let s;try{s=await fetch("".concat(l).concat(e),{cache:"no-store",...function(e){let t=(0,r.Xc)();if(!t)return e;let s=new Headers(null==e?void 0:e.headers);return s.has("Authorization")||s.set("Authorization","UTOKEN ".concat(t)),{...e,headers:s}}(t)})}catch(t){throw new c(0,e,t instanceof Error?t.message:"网络错误")}if(!s.ok)throw new c(s.status,e,"HTTP ".concat(s.status));try{return await s.json()}catch(t){throw new c(s.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,s){"use strict";s.d(t,{GK:function(){return l},Lc:function(){return c},Xc:function(){return n}});let r=null,a=new Set;function n(){return r}function l(e){e!==r&&(r=e,a.forEach(e=>e()))}function c(e){return a.add(e),()=>{a.delete(e)}}}},function(e){e.O(0,[865,400,935,744],function(){return e(e.s=19155)}),_N_E=e.O()}]);
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]="f4e05807-51e2-4048-b306-f9a0dd1cb853",e._sentryDebugIdIdentifier="sentry-dbid-f4e05807-51e2-4048-b306-f9a0dd1cb853")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[514],{19155:function(e,t,s){Promise.resolve().then(s.bind(s,80611))},80611:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return T}});var r=s(72835),a=s(60635),n=s(74431),l=s(51140),c=s(96049),i=s(85018),o=s(5200),d=s(85673),u=s(86583),h=s(74800),m=s(16308),x=s(8425),p=s(95090);let y=["#2563eb","#16a34a","#f59e0b","#dc2626","#7c3aed","#0891b2"],f={hm:"hunter-mate",hmh:"harness 工具链",extra:"其他"},g={hm:"#2563eb",hmh:"#16a34a",extra:"#94a3b8"};function j(e){if(!Number.isFinite(e)||e<0)return"-";let t=["B","KB","MB","GB","TB"],s=e,r=0;for(;s>=1024&&r<t.length-1;)s/=1024,r++;return"".concat(s>=100||0===r?Math.round(s):s.toFixed(1)," ").concat(t[r])}function b(e){let t=new Date(e);return"".concat(String(t.getMonth()+1).padStart(2,"0"),"-").concat(String(t.getDate()).padStart(2,"0")," ").concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}function v(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"),":").concat(String(t.getSeconds()).padStart(2,"0"))}function N(e){return e.group?e.group:e.key.startsWith("hunter-mate-h")?"hmh":e.key.startsWith("hunter-mate-")?"hm":"extra"}function w(e){return e.group?e.group:/hunter-mate-harness|chromepilot|hmx/i.test(e.cmd)||/hmx|chromepilot/i.test(e.name)?"hmh":"hm"}function S(e){let{title:t,children:s}=e;return(0,r.jsxs)("section",{className:"rounded-xl border border-gray-200 bg-white p-4",children:[(0,r.jsx)("h3",{className:"mb-3 text-sm font-medium text-gray-700",children:t}),s]})}let k=(0,a.memo)(function(e){let{items:t}=e,s=Array.from(new Set(t.flatMap(e=>e.paths.map(e=>e.key)))),a=t.map(e=>{let t={ts:b(e.ts)};for(let s of e.paths)t[s.key]=Number((s.totalBytes/1073741824).toFixed(3));return t});return(0,r.jsx)(S,{title:"磁盘占用趋势(按受监控路径,GB)",children:(0,r.jsx)(l.h,{width:"100%",height:260,children:(0,r.jsxs)(c.T,{data:a,margin:{top:4,right:12,bottom:0,left:0},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),(0,r.jsx)(o.K,{dataKey:"ts",tick:{fontSize:11},minTickGap:40}),(0,r.jsx)(d.B,{tick:{fontSize:11},width:56}),(0,r.jsx)(u.u,{formatter:e=>["".concat(e," GB"),void 0]}),(0,r.jsx)(h.D,{}),s.map((e,t)=>(0,r.jsx)(m.uN,{type:"monotone",dataKey:e,stroke:y[t%y.length],fill:y[t%y.length],fillOpacity:.15,name:e,connectNulls:!0},e))]})})})}),B=(0,a.memo)(function(e){let{p:t,diskTotalBytes:s}=e,a=N(t),n=s>0?(t.totalBytes/s*100).toFixed(1):null;return(0,r.jsx)(S,{title:"路径构成:".concat(t.key,"(").concat(f[a],")(").concat(t.path,")— 共 ").concat(j(t.totalBytes)).concat(null!==n?" \xb7 占总磁盘 ".concat(n,"%"):""),children:(0,r.jsx)(l.h,{width:"100%",height:Math.max(120,26*t.topEntries.length+40),children:(0,r.jsxs)(x.v,{data:t.topEntries,layout:"vertical",margin:{top:0,right:16,bottom:0,left:8},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb",horizontal:!1}),(0,r.jsx)(o.K,{type:"number",tick:{fontSize:11},tickFormatter:e=>j(e)}),(0,r.jsx)(d.B,{type:"category",dataKey:"name",tick:{fontSize:11},width:180}),(0,r.jsx)(u.u,{formatter:e=>j(Number(e))}),(0,r.jsx)(p.$Q,{dataKey:"bytes",name:"占用",fill:g[a],radius:[0,3,3,0]})]})})})}),M=(0,a.memo)(function(e){var t,s,a;let{items:n}=e,l=n[n.length-1];if(!l)return null;let c=new Map;for(let e of l.paths.filter(e=>e.exists)){let t=N(e);c.set(t,(null!==(s=c.get(t))&&void 0!==s?s:0)+e.totalBytes)}let i=Array.from(c.entries()).sort((e,t)=>t[1]-e[1]),o=null!==(a=null===(t=l.totals)||void 0===t?void 0:t.diskTotalBytes)&&void 0!==a?a:0;return(0,r.jsx)(S,{title:"磁盘分组概览(hm / harness 工具链,占总磁盘比例)",children:(0,r.jsxs)("table",{className:"w-full text-xs text-gray-600",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-gray-100 text-left",children:[(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"分组"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"占用"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"占总磁盘"}),(0,r.jsx)("th",{className:"py-1 font-medium",children:"占比条"})]})}),(0,r.jsxs)("tbody",{children:[i.map(e=>{let[t,s]=e,a=o>0?s/o*100:null;return(0,r.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,r.jsx)("td",{className:"py-1 pr-4",children:f[t]}),(0,r.jsx)("td",{className:"py-1 pr-4",children:j(s)}),(0,r.jsx)("td",{className:"py-1 pr-4",children:null===a?"-":"".concat(a.toFixed(1),"%")}),(0,r.jsx)("td",{className:"py-1",children:null!==a&&(0,r.jsx)("div",{className:"h-2 w-full min-w-[120px] rounded bg-gray-100",children:(0,r.jsx)("div",{className:"h-2 rounded",style:{width:"".concat(Math.min(100,a),"%"),background:g[t]}})})})]},t)}),!i.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:4,className:"py-2 text-gray-400",children:"本帧无路径数据"})})]})]})})}),A=(0,a.memo)(function(e){let{items:t,liveSamples:s}=e,a=s.length>0,n=a?s[s.length-1]:null,x=t[t.length-1],p=a?s.map(e=>{var t,s,r,a;if(e.groups)return{ts:v(e.ts),rssMBHm:Number((e.groups.hm.rssBytes/1048576).toFixed(1)),rssMBHmh:Number((e.groups.hmh.rssBytes/1048576).toFixed(1)),cpuHm:Number((null!==(t=e.groups.hm.cpuPercent)&&void 0!==t?t:0).toFixed(1)),cpuHmh:Number((null!==(s=e.groups.hmh.cpuPercent)&&void 0!==s?s:0).toFixed(1))};let n=0,l=0,c=0,i=0;for(let t of e.processes)"hmh"===w(t)?(l+=t.rssBytes,i+=null!==(r=t.cpuPercent)&&void 0!==r?r:0):(n+=t.rssBytes,c+=null!==(a=t.cpuPercent)&&void 0!==a?a:0);return{ts:v(e.ts),rssMBHm:Number((n/1048576).toFixed(1)),rssMBHmh:Number((l/1048576).toFixed(1)),cpuHm:Number(c.toFixed(1)),cpuHmh:Number(i.toFixed(1))}}):t.map(e=>{let t=0,s=0,r=0,a=0;for(let n of e.processes)"hmh"===w(n)?(s+=n.rssBytes,a+=n.cpuPercent):(t+=n.rssBytes,r+=n.cpuPercent);return{ts:b(e.ts),rssMBHm:Number((t/1048576).toFixed(1)),rssMBHmh:Number((s/1048576).toFixed(1)),cpuHm:Number(r.toFixed(1)),cpuHmh:Number(a.toFixed(1))}}),y=n?n.processes:x.processes;return(0,r.jsxs)(S,{title:a?"相关进程占用趋势(准实时 5s \xb7 按 hm / 工具链分开 \xb7 内存 MB / CPU %)":"相关进程占用趋势(按 hm / harness 工具链分开 \xb7 内存 MB / CPU %)",children:[(0,r.jsx)(l.h,{width:"100%",height:240,children:(0,r.jsxs)(c.T,{data:p,margin:{top:4,right:12,bottom:0,left:0},children:[(0,r.jsx)(i.q,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),(0,r.jsx)(o.K,{dataKey:"ts",tick:{fontSize:11},minTickGap:40}),(0,r.jsx)(d.B,{yAxisId:"mb",tick:{fontSize:11},width:52}),(0,r.jsx)(d.B,{yAxisId:"pct",orientation:"right",tick:{fontSize:11},width:44}),(0,r.jsx)(u.u,{}),(0,r.jsx)(h.D,{}),(0,r.jsx)(m.uN,{yAxisId:"mb",type:"monotone",dataKey:"rssMBHm",name:"hm 内存(MB)",stroke:g.hm,fill:g.hm,fillOpacity:.15,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"mb",type:"monotone",dataKey:"rssMBHmh",name:"工具链内存(MB)",stroke:g.hmh,fill:g.hmh,fillOpacity:.15,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"pct",type:"monotone",dataKey:"cpuHm",name:"hm CPU(%)",stroke:"#dc2626",fill:"#dc2626",fillOpacity:.1,isAnimationActive:!1}),(0,r.jsx)(m.uN,{yAxisId:"pct",type:"monotone",dataKey:"cpuHmh",name:"工具链 CPU(%)",stroke:"#f59e0b",fill:"#f59e0b",fillOpacity:.1,isAnimationActive:!1})]})}),(0,r.jsx)("div",{className:"mt-3 overflow-x-auto",children:(0,r.jsxs)("table",{className:"w-full text-xs text-gray-600",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"border-b border-gray-100 text-left",children:[(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"分组"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"PID"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"进程"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"RSS"}),(0,r.jsx)("th",{className:"py-1 pr-4 font-medium",children:"CPU%"})]})}),(0,r.jsxs)("tbody",{children:[y.map(e=>(0,r.jsxs)("tr",{className:"border-b border-gray-50",children:[(0,r.jsx)("td",{className:"py-1 pr-4",children:"hmh"===w(e)?"工具链":"hm"}),(0,r.jsx)("td",{className:"py-1 pr-4",children:e.pid}),(0,r.jsx)("td",{className:"max-w-[360px] truncate py-1 pr-4",title:e.cmd,children:e.cmd||e.name}),(0,r.jsx)("td",{className:"py-1 pr-4",children:j(e.rssBytes)}),(0,r.jsx)("td",{className:"py-1 pr-4",children:null===e.cpuPercent?"—":"".concat(e.cpuPercent,"%")})]},e.pid)),!y.length&&(0,r.jsx)("tr",{children:(0,r.jsx)("td",{colSpan:5,className:"py-2 text-gray-400",children:"本帧无匹配进程"})})]})]})})]})});function P(e){var t;let{items:s,liveSamples:a=[]}=e,n=s[s.length-1];if(!n)return null;let l=n.paths.filter(e=>e.exists),c=null!==(t=n.totals)&&void 0!==t?t:null;return(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("section",{className:"rounded-xl border border-gray-200 bg-white p-4",children:[(0,r.jsx)("h3",{className:"mb-2 text-sm font-medium text-gray-700",children:"系统信息"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-x-6 gap-y-1 text-xs text-gray-600",children:[(0,r.jsxs)("span",{children:["主机:",n.system.hostname]}),(0,r.jsxs)("span",{children:["用户:",n.system.username]}),(0,r.jsxs)("span",{children:["系统:",n.system.platform," ",n.system.osRelease,"(",n.system.arch,")"]}),(0,r.jsxs)("span",{children:["CPU:",n.system.cpuModel," \xd7 ",n.system.cpuCores," 核"]}),(0,r.jsxs)("span",{children:["内存:",j(n.system.totalMemBytes)]}),(0,r.jsxs)("span",{children:["快照:",new Date(n.ts).toLocaleString()]})]}),c&&(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap gap-x-6 gap-y-1 border-t border-gray-100 pt-2 text-xs text-gray-600",children:[(0,r.jsxs)("span",{children:["整机 CPU:",c.cpuPercent,"%"]}),(0,r.jsxs)("span",{children:["整机内存:",j(c.memUsedBytes)," / ",j(c.memTotalBytes),"(",c.memUsedPercent,"%)"]}),(0,r.jsxs)("span",{children:["整机磁盘:",j(c.diskUsedBytes)," / ",j(c.diskTotalBytes),"(",c.diskUsedPercent,"%)"]})]})]}),(0,r.jsx)(M,{items:s}),(0,r.jsx)(k,{items:s}),(0,r.jsx)(A,{items:s,liveSamples:a}),l.map(e=>{var t;return(0,r.jsx)(B,{p:e,diskTotalBytes:null!==(t=null==c?void 0:c.diskTotalBytes)&&void 0!==t?t:0},e.key)})]})}let H=[{value:24,label:"最近 1 天"},{value:72,label:"最近 3 天"},{value:168,label:"最近 7 天"}];function T(){let[e,t]=(0,a.useState)(72),[s,l]=(0,a.useState)([]),[c,i]=(0,a.useState)([]),[o,d]=(0,a.useState)(!1),[u,h]=(0,a.useState)(!0),[m,x]=(0,a.useState)(!1),[p,y]=(0,a.useState)(""),f=(0,a.useRef)(e),g=(0,a.useRef)(null),j=(0,a.useRef)(null);(0,a.useEffect)(()=>{f.current=e},[e]);let b=(0,a.useCallback)(async e=>{h(!0);try{var t;let s=await (0,n.aA)("/resource-usage/history?hours=".concat(e)),r=null!==(t=null==s?void 0:s.items)&&void 0!==t?t:[];l(r);let a=r[r.length-1];a&&(g.current=a.ts)}catch(e){l([]),y("历史快照加载失败,请稍后重试")}finally{h(!1)}},[]);(0,a.useEffect)(()=>{b(e)},[e,b]),(0,a.useEffect)(()=>{let e,t=!1,s=e=>{if(!t){if(!e.sampleIntervalMs||e.sampleIntervalMs<=0){d(!1);return}if(d(!0),e.last&&e.last.ts!==j.current){j.current=e.last.ts;let t=e.last;i(e=>{let s=[...e,t];return s.length>720?s.slice(s.length-720):s})}e.lastFullSnapshotTs&&e.lastFullSnapshotTs!==g.current&&(g.current=e.lastFullSnapshotTs,b(f.current))}};return(async()=>{var r,a,l,c;try{let e=await (0,n.aA)("/resource-usage/samples");if(t)return;if(null==e?void 0:null===(r=e.samples)||void 0===r?void 0:r.length){let t=e.samples.slice(-720);i(t),j.current=null!==(l=null===(a=t[t.length-1])||void 0===a?void 0:a.ts)&&void 0!==l?l:null}}catch(e){}(0,n.aA)("/resource-usage/collect-now",{method:"POST",headers:{"Content-Type":"application/json"}}).catch(()=>{});let o=null;try{o=await (0,n.aA)("/resource-usage/live")}catch(e){}o&&s(o),t||(e=setInterval(()=>{(0,n.aA)("/resource-usage/live").then(s).catch(()=>{})},Math.max(null!==(c=null==o?void 0:o.sampleIntervalMs)&&void 0!==c?c:5e3,2e3)))})(),()=>{t=!0,e&&clearInterval(e)}},[b]);let v=async()=>{x(!0),y("");try{var e;let t=await (0,n.aA)("/resource-usage/collect-now",{method:"POST",headers:{"Content-Type":"application/json"}});y((null===(e=t.report)||void 0===e?void 0:e.reported)?"已采集并上报 ".concat(t.report.reported," 条"):"已采集(本地)"),b(f.current)}catch(e){y("采集失败(查看 server 日志)")}finally{x(!1)}};return(0,r.jsx)("div",{className:"h-full overflow-auto bg-gray-50 p-6",children:(0,r.jsxs)("div",{className:"mx-auto max-w-5xl",children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center justify-between gap-3",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"text-lg font-semibold text-gray-900",children:"资源占用"}),(0,r.jsxs)("p",{className:"text-xs text-gray-500",children:["hunter-mate / hunter-mate-harness 磁盘占用、相关进程内存 CPU 与系统配置(默认保留 3 天)",o&&" \xb7 进程准实时 5s"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("select",{value:e,onChange:e=>t(Number(e.target.value)),className:"rounded-lg border border-gray-300 bg-white px-3 py-1.5 text-sm text-gray-700",children:H.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}),(0,r.jsx)("button",{type:"button",onClick:v,disabled:m,className:"rounded-lg bg-blue-600 px-3 py-1.5 text-sm text-white transition-colors hover:bg-blue-700 disabled:opacity-50",children:m?"采集中…":"立即采集"})]})]}),p&&(0,r.jsx)("p",{className:"mb-3 text-xs text-gray-500",children:p}),u?(0,r.jsx)("div",{className:"py-20 text-center text-sm text-gray-400",children:"加载中…"}):0===s.length?(0,r.jsxs)("div",{className:"rounded-xl border border-dashed border-gray-300 bg-white py-20 text-center",children:[(0,r.jsx)("p",{className:"text-sm text-gray-500",children:"窗口内暂无快照"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-gray-400",children:"server 每 5 分钟自动采集一帧,也可点「立即采集」"})]}):(0,r.jsx)(P,{items:s,liveSamples:c})]})})}},74431:function(e,t,s){"use strict";s.d(t,{Ox:function(){return n},aA:function(){return i}});var r=s(67002),a=s(60529);function n(){return a.env.HUNTER_MATE_SERVER_URL||""}let l=n();class c extends Error{constructor(e,t,s){super(null!=s?s:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function i(e,t){let s;try{s=await fetch("".concat(l).concat(e),{cache:"no-store",...function(e){let t=(0,r.Xc)();if(!t)return e;let s=new Headers(null==e?void 0:e.headers);return s.has("Authorization")||s.set("Authorization","UTOKEN ".concat(t)),{...e,headers:s}}(t)})}catch(t){throw new c(0,e,t instanceof Error?t.message:"网络错误")}if(!s.ok)throw new c(s.status,e,"HTTP ".concat(s.status));try{return await s.json()}catch(t){throw new c(s.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,s){"use strict";s.d(t,{GK:function(){return l},Lc:function(){return c},Xc:function(){return n}});let r=null,a=new Set;function n(){return r}function l(e){e!==r&&(r=e,a.forEach(e=>e()))}function c(e){return a.add(e),()=>{a.delete(e)}}}},function(e){e.O(0,[865,400,935,744],function(){return e(e.s=19155)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2fb88101-209d-4d18-97f4-aff29efd5cfd",e._sentryDebugIdIdentifier="sentry-dbid-2fb88101-209d-4d18-97f4-aff29efd5cfd")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[245],{41689:function(e,t,n){Promise.resolve().then(n.bind(n,48517))},48517:function(e,t,n){"use strict";n.d(t,{default:function(){return l}});var s=n(72835),r=n(60635),d=n(74431),o=n(67002);let i={not_found:"分享链接不存在、已失效,或你没有访问权限",expired:"分享链接已过期,请让分享者重新生成",revoked:"分享已被分享者撤销",out_of_scope:"你不在本次分享的范围内,请联系分享者"},a={recommended:"已推荐",pending_invite:"待邀请",invited:"已邀请",replied:"已回复",interview_scheduled:"已约面试",offer:"Offer",onboarding:"已入职",rejected:"已拒绝"};function l(){var e;let[t,n]=(0,r.useState)({kind:"loading"}),[a,l]=(0,r.useState)("");return(0,r.useEffect)(()=>{let e=window.location.pathname.match(/^\/shared\/([^/]+)/);l((null==e?void 0:e[1])?decodeURIComponent(e[1]):"")},[]),(0,r.useEffect)(()=>{if(a)return e(),(0,o.Lc)(()=>void e());async function e(){let e=(0,o.Xc)();if(!e){n({kind:"need-login"});return}let t=await fetch("".concat((0,d.Ox)(),"/shared/").concat(encodeURIComponent(a),"/data"),{headers:{Authorization:"UTOKEN ".concat(e)},cache:"no-store"});if(401===t.status){n({kind:"need-login"});return}let s=await t.json().catch(()=>({}));if(!t.ok){var r,i,l;n({kind:"error",code:null!==(i=null!==(r=null==s?void 0:s.errorCode)&&void 0!==r?r:null==s?void 0:s.code)&&void 0!==i?i:"not_found",message:null!==(l=null==s?void 0:s.message)&&void 0!==l?l:""});return}n({kind:"ok",data:s})}},[a]),(0,s.jsx)("div",{className:"h-full overflow-auto p-6",children:(0,s.jsxs)("div",{className:"mx-auto max-w-3xl",children:[(0,s.jsx)("h1",{className:"mb-1 text-lg font-semibold",children:"同事分享的职位推荐"}),"loading"===t.kind?(0,s.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:"加载中…"}):null,"need-login"===t.kind?(0,s.jsx)("div",{className:"mt-4 rounded border border-amber-200 bg-amber-50 px-4 py-6 text-center text-sm text-amber-800",children:"请先登录本地 hm(左下角登录),登录后本页会自动加载分享内容。"}):null,"error"===t.kind?(0,s.jsxs)("div",{className:"mt-4 rounded border border-red-200 bg-red-50 px-4 py-6 text-center text-sm text-red-700",children:[null!==(e=i[t.code])&&void 0!==e?e:i.not_found,t.message?(0,s.jsx)("div",{className:"mt-1 text-xs text-red-400",children:t.message}):null]}):null,"ok"===t.kind?(0,s.jsx)(c,{data:t.data}):null]})})}function c(e){var t,n,r,d,o,i,l,c,u;let{data:f}=e,x=null!==(i=f.recommendations)&&void 0!==i?i:[];return(0,s.jsxs)("div",{className:"mt-4 space-y-4",children:[(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-base font-medium",children:null!==(c=null===(t=f.jobCase)||void 0===t?void 0:t.title)&&void 0!==c?c:"职位 #".concat(null!==(l=null===(n=f.jobCase)||void 0===n?void 0:n.id)&&void 0!==l?l:"")}),(0,s.jsxs)("div",{className:"mt-0.5 text-xs text-gray-500",children:["分享者:",(null===(r=f.fromUser)||void 0===r?void 0:r.email)||"#".concat(null===(d=f.fromUser)||void 0===d?void 0:d.hmUserId),f.expiresAt?" \xb7 有效期至 ".concat(new Date(f.expiresAt).toLocaleString()):""]})]}),(0,s.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:null!==(u=null===(o=f.jobCase)||void 0===o?void 0:o.status)&&void 0!==u?u:""})]}),f.note?(0,s.jsx)("div",{className:"mt-2 rounded bg-blue-50 px-3 py-2 text-sm text-blue-800",children:f.note}):null]}),(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["共 ",x.length," 位推荐人才(只读快照,实时数据以分享者本地为准)"]}),x.map(e=>{var t,n,r,d,o,i,l,c;return(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{className:"font-medium",children:null!==(l=null!==(i=null===(t=e.snapshot)||void 0===t?void 0:t.name)&&void 0!==i?i:e.portraitName)&&void 0!==l?l:"推荐 #".concat(e.id.slice(0,8))}),(0,s.jsx)("span",{className:"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700",children:null!==(c=a[e.stage])&&void 0!==c?c:e.stage})]}),(null===(n=e.snapshot)||void 0===n?void 0:n.headline)?(0,s.jsx)("div",{className:"mt-1 text-xs text-gray-500",children:e.snapshot.headline}):null,"number"==typeof(null===(d=e.scores)||void 0===d?void 0:null===(r=d.dimensions)||void 0===r?void 0:r.overall)?(0,s.jsxs)("div",{className:"mt-1 text-xs text-gray-500",children:["综合匹配分:",e.scores.dimensions.overall]}):null,(null===(o=e.scores)||void 0===o?void 0:o.aiReason)?(0,s.jsx)("pre",{className:"mt-2 whitespace-pre-wrap rounded bg-gray-50 p-2 text-xs text-gray-600",children:e.scores.aiReason}):null]},e.id)}),x.length?null:(0,s.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"该职位暂无推荐人才"})]})}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return d},aA:function(){return a}});var s=n(67002),r=n(60529);function d(){return r.env.HUNTER_MATE_SERVER_URL||""}let o=d();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function a(e,t){let n;try{n=await fetch("".concat(o).concat(e),{cache:"no-store",...function(e){let t=(0,s.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return o},Lc:function(){return i},Xc:function(){return d}});let s=null,r=new Set;function d(){return s}function o(e){e!==s&&(s=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=41689)}),_N_E=e.O()}]);
1
+ !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]="176df8b1-e728-4928-9a52-b472210dc954",e._sentryDebugIdIdentifier="sentry-dbid-176df8b1-e728-4928-9a52-b472210dc954")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[245],{41689:function(e,t,n){Promise.resolve().then(n.bind(n,48517))},48517:function(e,t,n){"use strict";n.d(t,{default:function(){return l}});var s=n(72835),r=n(60635),o=n(74431),d=n(67002);let i={not_found:"分享链接不存在、已失效,或你没有访问权限",expired:"分享链接已过期,请让分享者重新生成",revoked:"分享已被分享者撤销",out_of_scope:"你不在本次分享的范围内,请联系分享者"},a={recommended:"已推荐",pending_invite:"待邀请",invited:"已邀请",replied:"已回复",interview_scheduled:"已约面试",offer:"Offer",onboarding:"已入职",rejected:"已拒绝"};function l(){var e;let[t,n]=(0,r.useState)({kind:"loading"}),[a,l]=(0,r.useState)("");return(0,r.useEffect)(()=>{let e=window.location.pathname.match(/^\/shared\/([^/]+)/);l((null==e?void 0:e[1])?decodeURIComponent(e[1]):"")},[]),(0,r.useEffect)(()=>{if(a)return e(),(0,d.Lc)(()=>void e());async function e(){let e=(0,d.Xc)();if(!e){n({kind:"need-login"});return}let t=await fetch("".concat((0,o.Ox)(),"/shared/").concat(encodeURIComponent(a),"/data"),{headers:{Authorization:"UTOKEN ".concat(e)},cache:"no-store"});if(401===t.status){n({kind:"need-login"});return}let s=await t.json().catch(()=>({}));if(!t.ok){var r,i,l;n({kind:"error",code:null!==(i=null!==(r=null==s?void 0:s.errorCode)&&void 0!==r?r:null==s?void 0:s.code)&&void 0!==i?i:"not_found",message:null!==(l=null==s?void 0:s.message)&&void 0!==l?l:""});return}n({kind:"ok",data:s})}},[a]),(0,s.jsx)("div",{className:"h-full overflow-auto p-6",children:(0,s.jsxs)("div",{className:"mx-auto max-w-3xl",children:[(0,s.jsx)("h1",{className:"mb-1 text-lg font-semibold",children:"同事分享的职位推荐"}),"loading"===t.kind?(0,s.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:"加载中…"}):null,"need-login"===t.kind?(0,s.jsx)("div",{className:"mt-4 rounded border border-amber-200 bg-amber-50 px-4 py-6 text-center text-sm text-amber-800",children:"请先登录本地 hm(左下角登录),登录后本页会自动加载分享内容。"}):null,"error"===t.kind?(0,s.jsxs)("div",{className:"mt-4 rounded border border-red-200 bg-red-50 px-4 py-6 text-center text-sm text-red-700",children:[null!==(e=i[t.code])&&void 0!==e?e:i.not_found,t.message?(0,s.jsx)("div",{className:"mt-1 text-xs text-red-400",children:t.message}):null]}):null,"ok"===t.kind?(0,s.jsx)(c,{data:t.data}):null]})})}function c(e){var t,n,r,o,d,i,l,c,u;let{data:x}=e,m=null!==(i=x.recommendations)&&void 0!==i?i:[];return(0,s.jsxs)("div",{className:"mt-4 space-y-4",children:[(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-start justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-base font-medium",children:null!==(c=null===(t=x.jobCase)||void 0===t?void 0:t.title)&&void 0!==c?c:"职位 #".concat(null!==(l=null===(n=x.jobCase)||void 0===n?void 0:n.id)&&void 0!==l?l:"")}),(0,s.jsxs)("div",{className:"mt-0.5 text-xs text-gray-500",children:["分享者:",(null===(r=x.fromUser)||void 0===r?void 0:r.email)||"#".concat(null===(o=x.fromUser)||void 0===o?void 0:o.hmUserId),x.expiresAt?" \xb7 有效期至 ".concat(new Date(x.expiresAt).toLocaleString()):""]})]}),(0,s.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:null!==(u=null===(d=x.jobCase)||void 0===d?void 0:d.status)&&void 0!==u?u:""})]}),x.note?(0,s.jsx)("div",{className:"mt-2 rounded bg-blue-50 px-3 py-2 text-sm text-blue-800",children:x.note}):null]}),(0,s.jsxs)("div",{className:"text-xs text-gray-500",children:["共 ",m.length," 位推荐人才(只读快照,实时数据以分享者本地为准)"]}),m.map(e=>{var t,n,r,o,d,i,l,c;return(0,s.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("div",{className:"font-medium",children:null!==(l=null!==(i=null===(t=e.snapshot)||void 0===t?void 0:t.name)&&void 0!==i?i:e.portraitName)&&void 0!==l?l:"推荐 #".concat(e.id.slice(0,8))}),(0,s.jsx)("span",{className:"rounded bg-blue-100 px-2 py-0.5 text-xs text-blue-700",children:null!==(c=a[e.stage])&&void 0!==c?c:e.stage})]}),(null===(n=e.snapshot)||void 0===n?void 0:n.headline)?(0,s.jsx)("div",{className:"mt-1 text-xs text-gray-500",children:e.snapshot.headline}):null,"number"==typeof(null===(o=e.scores)||void 0===o?void 0:null===(r=o.dimensions)||void 0===r?void 0:r.overall)?(0,s.jsxs)("div",{className:"mt-1 text-xs text-gray-500",children:["综合匹配分:",e.scores.dimensions.overall]}):null,(null===(d=e.scores)||void 0===d?void 0:d.aiReason)?(0,s.jsx)("pre",{className:"mt-2 whitespace-pre-wrap rounded bg-gray-50 p-2 text-xs text-gray-600",children:e.scores.aiReason}):null]},e.id)}),m.length?null:(0,s.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"该职位暂无推荐人才"})]})}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return o},aA:function(){return a}});var s=n(67002),r=n(60529);function o(){return r.env.HUNTER_MATE_SERVER_URL||""}let d=o();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function a(e,t){let n;try{n=await fetch("".concat(d).concat(e),{cache:"no-store",...function(e){let t=(0,s.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return d},Lc:function(){return i},Xc:function(){return o}});let s=null,r=new Set;function o(){return s}function d(e){e!==s&&(s=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=41689)}),_N_E=e.O()}]);
@@ -1 +1 @@
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]="437ca156-7bdd-4ffc-935b-8fa41c839b4b",t._sentryDebugIdIdentifier="sentry-dbid-437ca156-7bdd-4ffc-935b-8fa41c839b4b")}catch(t){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[325],{71765:function(t,e,n){Promise.resolve().then(n.bind(n,24492))},27473:function(t,e,n){"use strict";var r=n(38321);n.o(r,"useParams")&&n.d(e,{useParams:function(){return r.useParams}}),n.o(r,"usePathname")&&n.d(e,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(e,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(e,{useSearchParams:function(){return r.useSearchParams}}),n.o(r,"useServerInsertedHTML")&&n.d(e,{useServerInsertedHTML:function(){return r.useServerInsertedHTML}})},24492:function(t,e,n){"use strict";n.d(e,{default:function(){return c}});var r=n(72835),a=n(60635),s=n(27473),u=n(74431);function c(){let t=(0,s.useParams)().id,[e,n]=(0,a.useState)(null),[c,o]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),[f,l]=(0,a.useState)(null);async function h(){o(!0),l(null);try{let e=await fetch("".concat((0,u.Ox)(),"/parsing/snapshots/").concat(t,"/agent-prompt"));if(!e.ok)throw Error("HTTP ".concat(e.status));let r=await e.json();n(r.prompt)}catch(t){l(t.message)}finally{o(!1)}}async function p(){e&&(await navigator.clipboard.writeText(e),d(!0),setTimeout(()=>d(!1),2e3))}return(0,r.jsxs)("div",{style:{padding:24,maxWidth:800,margin:"0 auto"},children:[(0,r.jsx)("h1",{children:"Agent 解析 Prompt"}),(0,r.jsxs)("p",{children:["Snapshot ID: ",t]}),(0,r.jsx)("button",{onClick:h,disabled:c,children:c?"加载中...":"生成 Prompt"}),f&&(0,r.jsx)("div",{style:{color:"red",marginTop:12},children:f}),e&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:p,style:{marginLeft:12},children:i?"已复制 ✅":"复制到剪贴板"}),(0,r.jsx)("pre",{style:{marginTop:16,padding:16,background:"#f5f5f5",borderRadius:8,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e})]})]})}},74431:function(t,e,n){"use strict";n.d(e,{Ox:function(){return s},aA:function(){return o}});var r=n(67002),a=n(60529);function s(){return a.env.HUNTER_MATE_SERVER_URL||""}let u=s();class c 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 o(t,e){let n;try{n=await fetch("".concat(u).concat(t),{cache:"no-store",...function(t){let e=(0,r.Xc)();if(!e)return t;let n=new Headers(null==t?void 0:t.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(e)),{...t,headers:n}}(e)})}catch(e){throw new c(0,t,e instanceof Error?e.message:"网络错误")}if(!n.ok)throw new c(n.status,t,"HTTP ".concat(n.status));try{return await n.json()}catch(e){throw new c(n.status,t,e instanceof Error?"响应解析失败: ".concat(e.message):"响应解析失败")}}},67002:function(t,e,n){"use strict";n.d(e,{GK:function(){return u},Lc:function(){return c},Xc:function(){return s}});let r=null,a=new Set;function s(){return r}function u(t){t!==r&&(r=t,a.forEach(t=>t()))}function c(t){return a.add(t),()=>{a.delete(t)}}}},function(t){t.O(0,[400,935,744],function(){return t(t.s=71765)}),_N_E=t.O()}]);
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]="cd836efa-1fd7-4a34-864e-3cab98da186c",t._sentryDebugIdIdentifier="sentry-dbid-cd836efa-1fd7-4a34-864e-3cab98da186c")}catch(t){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[325],{71765:function(t,e,n){Promise.resolve().then(n.bind(n,24492))},27473:function(t,e,n){"use strict";var r=n(38321);n.o(r,"useParams")&&n.d(e,{useParams:function(){return r.useParams}}),n.o(r,"usePathname")&&n.d(e,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(e,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(e,{useSearchParams:function(){return r.useSearchParams}}),n.o(r,"useServerInsertedHTML")&&n.d(e,{useServerInsertedHTML:function(){return r.useServerInsertedHTML}})},24492:function(t,e,n){"use strict";n.d(e,{default:function(){return c}});var r=n(72835),a=n(60635),s=n(27473),u=n(74431);function c(){let t=(0,s.useParams)().id,[e,n]=(0,a.useState)(null),[c,o]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),[f,l]=(0,a.useState)(null);async function h(){o(!0),l(null);try{let e=await fetch("".concat((0,u.Ox)(),"/parsing/snapshots/").concat(t,"/agent-prompt"));if(!e.ok)throw Error("HTTP ".concat(e.status));let r=await e.json();n(r.prompt)}catch(t){l(t.message)}finally{o(!1)}}async function p(){e&&(await navigator.clipboard.writeText(e),d(!0),setTimeout(()=>d(!1),2e3))}return(0,r.jsxs)("div",{style:{padding:24,maxWidth:800,margin:"0 auto"},children:[(0,r.jsx)("h1",{children:"Agent 解析 Prompt"}),(0,r.jsxs)("p",{children:["Snapshot ID: ",t]}),(0,r.jsx)("button",{onClick:h,disabled:c,children:c?"加载中...":"生成 Prompt"}),f&&(0,r.jsx)("div",{style:{color:"red",marginTop:12},children:f}),e&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:p,style:{marginLeft:12},children:i?"已复制 ✅":"复制到剪贴板"}),(0,r.jsx)("pre",{style:{marginTop:16,padding:16,background:"#f5f5f5",borderRadius:8,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:e})]})]})}},74431:function(t,e,n){"use strict";n.d(e,{Ox:function(){return s},aA:function(){return o}});var r=n(67002),a=n(60529);function s(){return a.env.HUNTER_MATE_SERVER_URL||""}let u=s();class c 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 o(t,e){let n;try{n=await fetch("".concat(u).concat(t),{cache:"no-store",...function(t){let e=(0,r.Xc)();if(!e)return t;let n=new Headers(null==t?void 0:t.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(e)),{...t,headers:n}}(e)})}catch(e){throw new c(0,t,e instanceof Error?e.message:"网络错误")}if(!n.ok)throw new c(n.status,t,"HTTP ".concat(n.status));try{return await n.json()}catch(e){throw new c(n.status,t,e instanceof Error?"响应解析失败: ".concat(e.message):"响应解析失败")}}},67002:function(t,e,n){"use strict";n.d(e,{GK:function(){return u},Lc:function(){return c},Xc:function(){return s}});let r=null,a=new Set;function s(){return r}function u(t){t!==r&&(r=t,a.forEach(t=>t()))}function c(t){return a.add(t),()=>{a.delete(t)}}}},function(t){t.O(0,[400,935,744],function(){return t(t.s=71765)}),_N_E=t.O()}]);
@@ -1 +1 @@
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]="6833f1e5-7eae-410e-8036-962cf8c702ee",e._sentryDebugIdIdentifier="sentry-dbid-6833f1e5-7eae-410e-8036-962cf8c702ee")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[14],{80812:function(e,t,n){Promise.resolve().then(n.bind(n,21670))},21670:function(e,t,n){"use strict";n.d(t,{default:function(){return x}});var l=n(72835),r=n(60635),a=n(74431),s=n(67002),i=n(65777);let o=[{key:"today",label:"今天"},{key:"yesterday",label:"昨天"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"last7",label:"近 7 天"},{key:"custom",label:"自定义"}],c={recommended:"已推荐",pending_invite:"待邀请",invited:"已邀请",replied:"已回复",interview_scheduled:"已约面试",offer:"Offer",onboarding:"已入职",rejected:"已拒绝"},u={create:"建档",move:"阶段迁移",form:"保存表单",invite:"记录邀请",invite_approved:"批准邀请",note:"备注",delete:"移出流程"};function d(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function m(e){let{actorType:t}=e;return"agent"===t?(0,l.jsx)("span",{className:"rounded bg-purple-100 px-1.5 py-0.5 text-xs text-purple-700",children:"agent 代操作"}):"human"===t?(0,l.jsx)("span",{className:"rounded bg-emerald-100 px-1.5 py-0.5 text-xs text-emerald-700",children:"本人操作"}):(0,l.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-500",children:"来源不明"})}function x(){var e,t,n,x,h;let[f,y]=(0,r.useState)(null),[p,v]=(0,r.useState)(null),[b,j]=(0,r.useState)("last7"),[N,w]=(0,r.useState)(""),[S,I]=(0,r.useState)(""),[E,k]=(0,r.useState)(null),[T,O]=(0,r.useState)(!1),[D,_]=(0,r.useState)(null),{sync:A}=(0,i.nu)(),U=null!==(e=null==A?void 0:A.activeTenantId)&&void 0!==e?e:null,C=(0,r.useCallback)(()=>{(0,a.aA)("/team/members").then(e=>{let t=Array.isArray(null==e?void 0:e.items)?e.items:[];y(t),v(e=>{var n,l;return null!=e&&t.some(t=>t.hmUserId===e)?e:null!==(l=null===(n=t[0])||void 0===n?void 0:n.hmUserId)&&void 0!==l?l:null})}).catch(()=>{})},[U]);(0,r.useEffect)(()=>(C(),(0,s.Lc)(C)),[C]);let R=(0,r.useCallback)(async()=>{if(null==p)return;O(!0),_(null);let{from:e,to:t}=function(e,t,n){let l=d(new Date);switch(e){case"today":return{from:l.toISOString(),to:new Date(l.getTime()+864e5).toISOString()};case"yesterday":return{from:new Date(l.getTime()-864e5).toISOString(),to:l.toISOString()};case"week":{let e=(l.getDay()+6)%7;return{from:new Date(l.getTime()-864e5*e).toISOString(),to:new Date(l.getTime()+864e5).toISOString()}}case"month":return{from:new Date(l.getFullYear(),l.getMonth(),1).toISOString(),to:new Date(l.getTime()+864e5).toISOString()};case"custom":return{from:t?d(new Date("".concat(t,"T00:00:00"))).toISOString():l.toISOString(),to:n?new Date(d(new Date("".concat(n,"T00:00:00"))).getTime()+864e5).toISOString():new Date(l.getTime()+864e5).toISOString()};default:return{from:new Date(l.getTime()-5184e5).toISOString(),to:new Date(l.getTime()+864e5).toISOString()}}}(b,N,S);try{let n=await (0,a.aA)("/team/insights?hmUserId=".concat(p,"&from=").concat(encodeURIComponent(e),"&to=").concat(encodeURIComponent(t)));k(n)}catch(e){_("加载失败:未登录云端账号、与对方不在同一公司租户,或云服务不可达"),k(null)}finally{O(!1)}},[p,b,N,S,U]);(0,r.useEffect)(()=>(R(),(0,s.Lc)(()=>void R())),[R]);let H=null==E?void 0:E.summary,X=(0,r.useMemo)(()=>{var e;return Object.entries(null!==(e=null==H?void 0:H.terminal)&&void 0!==e?e:{})},[H]);return(0,l.jsx)("div",{className:"h-full overflow-auto p-6",children:(0,l.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,l.jsx)("h1",{className:"mb-4 text-lg font-semibold",children:"同事工作统计"}),(0,l.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-3 rounded-lg border border-gray-200 bg-white p-3",children:[(0,l.jsxs)("label",{className:"text-sm text-gray-600",children:["同事:",(0,l.jsxs)("select",{value:null!=p?p:"",onChange:e=>v(Number(e.target.value)),className:"ml-2 rounded border border-gray-300 px-2 py-1 text-sm",children:[null===f?(0,l.jsx)("option",{children:"加载中…"}):null,(null!=f?f:[]).map(e=>(0,l.jsxs)("option",{value:e.hmUserId,children:[e.name,"(",e.email,")"]},e.hmUserId))]})]}),(0,l.jsx)("div",{className:"flex gap-1",children:o.map(e=>(0,l.jsx)("button",{onClick:()=>j(e.key),className:"rounded px-2.5 py-1 text-xs ".concat(b===e.key?"bg-blue-100 font-medium text-blue-800":"text-gray-500 hover:bg-gray-100"),children:e.label},e.key))}),"custom"===b?(0,l.jsxs)("span",{className:"flex items-center gap-1 text-sm",children:[(0,l.jsx)("input",{type:"date",value:N,onChange:e=>w(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm"}),"~",(0,l.jsx)("input",{type:"date",value:S,onChange:e=>I(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm"})]}):null]}),D?(0,l.jsx)("div",{className:"mb-4 rounded border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700",children:D}):null,T?(0,l.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:"加载中…"}):null,!T&&E?(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-3 md:grid-cols-4",children:[(0,l.jsx)(g,{label:"区间新建推荐",value:null!==(t=null==H?void 0:H.recsTotal)&&void 0!==t?t:0}),(0,l.jsx)(g,{label:"agent 代操作",value:null!==(n=null==H?void 0:H.recsByAgent)&&void 0!==n?n:0,tone:"purple"}),(0,l.jsx)(g,{label:"本人操作",value:null!==(x=null==H?void 0:H.recsByHuman)&&void 0!==x?x:0,tone:"green"}),(0,l.jsx)(g,{label:"来源不明(存量)",value:null!==(h=null==H?void 0:H.recsUnknown)&&void 0!==h?h:0,tone:"gray"})]}),X.length?(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-3 text-sm",children:[(0,l.jsx)("span",{className:"mr-2 text-xs text-gray-500",children:"终端阶段:"}),X.map(e=>{var t;let[n,r]=e;return(0,l.jsxs)("span",{className:"mr-3",children:[null!==(t=c[n])&&void 0!==t?t:n," ",(0,l.jsx)("b",{children:r})]},n)})]}):null,(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white",children:[(0,l.jsx)("div",{className:"border-b border-gray-100 px-4 py-2 text-sm font-medium",children:"分职位产出"}),E.jobs.length?(0,l.jsxs)("table",{className:"w-full text-sm",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"text-left text-xs text-gray-400",children:[(0,l.jsx)("th",{className:"px-4 py-2",children:"职位"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"推荐数"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"agent"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"本人"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"不明"}),(0,l.jsx)("th",{className:"px-4 py-2",children:"阶段分布"})]})}),(0,l.jsx)("tbody",{children:E.jobs.map(e=>(0,l.jsxs)("tr",{className:"border-t border-gray-50",children:[(0,l.jsxs)("td",{className:"px-4 py-2",children:[e.title,e.status?(0,l.jsxs)("span",{className:"ml-1 text-xs text-gray-400",children:["(",e.status,")"]}):null]}),(0,l.jsx)("td",{className:"px-2 py-2 font-medium",children:e.recsTotal}),(0,l.jsx)("td",{className:"px-2 py-2 text-purple-600",children:e.byAgent}),(0,l.jsx)("td",{className:"px-2 py-2 text-emerald-600",children:e.byHuman}),(0,l.jsx)("td",{className:"px-2 py-2 text-gray-400",children:e.byUnknown}),(0,l.jsx)("td",{className:"px-4 py-2 text-xs text-gray-500",children:Object.entries(e.stageDist).map(e=>{var t;let[n,l]=e;return"".concat(null!==(t=c[n])&&void 0!==t?t:n," ").concat(l)}).join(" / ")})]},e.jobCaseId))})]}):(0,l.jsx)("div",{className:"px-4 py-6 text-center text-sm text-gray-400",children:"该区间无推荐产出"})]}),(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white",children:[(0,l.jsxs)("div",{className:"border-b border-gray-100 px-4 py-2 text-sm font-medium",children:["操作时间线(区间内 ",E.timeline.length," 条)"]}),E.timeline.length?(0,l.jsx)("ul",{className:"divide-y divide-gray-50",children:E.timeline.map((e,t)=>{var n,r;return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-2 text-sm",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-xs text-gray-400",children:new Date(e.at).toLocaleString()}),(0,l.jsx)(m,{actorType:e.actorType}),(0,l.jsx)("span",{className:"font-medium",children:e.talentName||"—"}),(0,l.jsxs)("span",{className:"text-xs text-gray-500",children:[null!==(n=u[e.action])&&void 0!==n?n:e.action,e.toStage?" → ".concat(null!==(r=c[e.toStage])&&void 0!==r?r:e.toStage):""]}),(0,l.jsx)("span",{className:"ml-auto truncate text-xs text-gray-400",children:e.jobTitle})]},"".concat(e.at,"-").concat(t))})}):(0,l.jsx)("div",{className:"px-4 py-6 text-center text-sm text-gray-400",children:"该区间无操作记录"})]})]}):null,T||E||D?null:(0,l.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:f&&!f.length?"暂无公司租户同事(加入公司租户后可用)":"选择同事与时间段查看统计"})]})})}function g(e){let{label:t,value:n,tone:r}=e;return(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-3",children:[(0,l.jsx)("div",{className:"text-xs text-gray-500",children:t}),(0,l.jsx)("div",{className:"mt-1 text-2xl font-semibold ".concat("purple"===r?"text-purple-700":"green"===r?"text-emerald-700":"gray"===r?"text-gray-500":"text-gray-900"),children:n})]})}},65777:function(e,t,n){"use strict";let l;n.d(t,{Cd:function(){return I},Xc:function(){return k},aG:function(){return w},cp:function(){return S},nu:function(){return N},tQ:function(){return E}});var r=n(60635),a=n(74431),s=n(67002),i=n(60529);let o=null,c=null,u=null,d=new Set;function m(){d.forEach(e=>e())}function x(e){o=o?{...o,refreshing:e}:{...v,refreshing:e},m()}async function g(){try{return await (0,a.aA)("/auth/session")}catch(e){return null}}async function h(e){let t=new Headers,n=(0,s.Xc)();n&&t.set("Authorization","UTOKEN ".concat(n));try{return await (0,a.aA)(e,{headers:t})}catch(e){return null}}async function f(){x(!0);try{var e;let[t,n]=await Promise.all([g(),h("/datasync/state")]),r=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,a=null!=n?n:null;!a&&t&&r&&r!==(0,s.Xc)()?((0,s.GK)(r),a=await h("/datasync/state")):(0,s.GK)(r),function(e){if(void 0===l){l=e;return}if(e!==l){l=e;try{window.localStorage.removeItem("hm-view-mode")}catch(e){}}}((null==t?void 0:t.loggedIn)&&null!==(e=t.hmUserId)&&void 0!==e?e:null);let i=!!((null==t?void 0:t.loggedIn)||(null==a?void 0:a.loggedIn));if(!t&&!a){o=o?{...o,loadError:"本地服务无响应"}:{...v,loadError:"本地服务无响应"},m();return}o={session:null!=t?t:{loggedIn:!1},sync:a,utoken:(0,s.Xc)(),loadError:null,refreshing:!1,authStatus:i?"in":"out",refresh:y},m()}finally{(null==o?void 0:o.refreshing)&&x(!1)}}function y(){return c||(c=f().finally(()=>{c=null}))}function p(e){return d.add(e),1===d.size&&(y(),u=setInterval(()=>void y(),6e4)),()=>{d.delete(e),0===d.size&&u&&(clearInterval(u),u=null)}}let v={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:y};function b(){return null!=o?o:v}function j(){return b()}function N(){return(0,r.useSyncExternalStore)(p,b,j)}function w(e){var t;return(null!==(t=null==e?void 0:e.memberships)&&void 0!==t?t:[]).filter(e=>!e.isPersonal&&!e.leftAt)}function S(e){var t,n;let l=null!==(t=null==e?void 0:e.activeTenantId)&&void 0!==t?t:null;if(null==l)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===l&&!e.leftAt);return!r||r.isPersonal?null:l}function I(e,t){var n,l;if(!t)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===t&&!e.leftAt&&!e.isPersonal);return null!==(l=null==r?void 0:r.role)&&void 0!==l?l:null}function E(){return i.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function k(){return(0,s.Xc)()}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return a},aA:function(){return o}});var l=n(67002),r=n(60529);function a(){return r.env.HUNTER_MATE_SERVER_URL||""}let s=a();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let n;try{n=await fetch("".concat(s).concat(e),{cache:"no-store",...function(e){let t=(0,l.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return s},Lc:function(){return i},Xc:function(){return a}});let l=null,r=new Set;function a(){return l}function s(e){e!==l&&(l=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=80812)}),_N_E=e.O()}]);
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]="1cdcdd5b-71ef-40ce-8021-00dd63fbe1a8",e._sentryDebugIdIdentifier="sentry-dbid-1cdcdd5b-71ef-40ce-8021-00dd63fbe1a8")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[14],{80812:function(e,t,n){Promise.resolve().then(n.bind(n,21670))},21670:function(e,t,n){"use strict";n.d(t,{default:function(){return x}});var l=n(72835),r=n(60635),a=n(74431),s=n(67002),i=n(65777);let o=[{key:"today",label:"今天"},{key:"yesterday",label:"昨天"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"last7",label:"近 7 天"},{key:"custom",label:"自定义"}],c={recommended:"已推荐",pending_invite:"待邀请",invited:"已邀请",replied:"已回复",interview_scheduled:"已约面试",offer:"Offer",onboarding:"已入职",rejected:"已拒绝"},u={create:"建档",move:"阶段迁移",form:"保存表单",invite:"记录邀请",invite_approved:"批准邀请",note:"备注",delete:"移出流程"};function d(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function m(e){let{actorType:t}=e;return"agent"===t?(0,l.jsx)("span",{className:"rounded bg-purple-100 px-1.5 py-0.5 text-xs text-purple-700",children:"agent 代操作"}):"human"===t?(0,l.jsx)("span",{className:"rounded bg-emerald-100 px-1.5 py-0.5 text-xs text-emerald-700",children:"本人操作"}):(0,l.jsx)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-500",children:"来源不明"})}function x(){var e,t,n,x,h;let[f,y]=(0,r.useState)(null),[p,v]=(0,r.useState)(null),[b,j]=(0,r.useState)("last7"),[N,w]=(0,r.useState)(""),[S,I]=(0,r.useState)(""),[E,k]=(0,r.useState)(null),[T,O]=(0,r.useState)(!1),[D,_]=(0,r.useState)(null),{sync:A}=(0,i.nu)(),U=null!==(e=null==A?void 0:A.activeTenantId)&&void 0!==e?e:null,C=(0,r.useCallback)(()=>{(0,a.aA)("/team/members").then(e=>{let t=Array.isArray(null==e?void 0:e.items)?e.items:[];y(t),v(e=>{var n,l;return null!=e&&t.some(t=>t.hmUserId===e)?e:null!==(l=null===(n=t[0])||void 0===n?void 0:n.hmUserId)&&void 0!==l?l:null})}).catch(()=>{})},[U]);(0,r.useEffect)(()=>(C(),(0,s.Lc)(C)),[C]);let R=(0,r.useCallback)(async()=>{if(null==p)return;O(!0),_(null);let{from:e,to:t}=function(e,t,n){let l=d(new Date);switch(e){case"today":return{from:l.toISOString(),to:new Date(l.getTime()+864e5).toISOString()};case"yesterday":return{from:new Date(l.getTime()-864e5).toISOString(),to:l.toISOString()};case"week":{let e=(l.getDay()+6)%7;return{from:new Date(l.getTime()-864e5*e).toISOString(),to:new Date(l.getTime()+864e5).toISOString()}}case"month":return{from:new Date(l.getFullYear(),l.getMonth(),1).toISOString(),to:new Date(l.getTime()+864e5).toISOString()};case"custom":return{from:t?d(new Date("".concat(t,"T00:00:00"))).toISOString():l.toISOString(),to:n?new Date(d(new Date("".concat(n,"T00:00:00"))).getTime()+864e5).toISOString():new Date(l.getTime()+864e5).toISOString()};default:return{from:new Date(l.getTime()-5184e5).toISOString(),to:new Date(l.getTime()+864e5).toISOString()}}}(b,N,S);try{let n=await (0,a.aA)("/team/insights?hmUserId=".concat(p,"&from=").concat(encodeURIComponent(e),"&to=").concat(encodeURIComponent(t)));k(n)}catch(e){_("加载失败:未登录云端账号、与对方不在同一公司租户,或云服务不可达"),k(null)}finally{O(!1)}},[p,b,N,S,U]);(0,r.useEffect)(()=>(R(),(0,s.Lc)(()=>void R())),[R]);let H=null==E?void 0:E.summary,X=(0,r.useMemo)(()=>{var e;return Object.entries(null!==(e=null==H?void 0:H.terminal)&&void 0!==e?e:{})},[H]);return(0,l.jsx)("div",{className:"h-full overflow-auto p-6",children:(0,l.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,l.jsx)("h1",{className:"mb-4 text-lg font-semibold",children:"同事工作统计"}),(0,l.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-3 rounded-lg border border-gray-200 bg-white p-3",children:[(0,l.jsxs)("label",{className:"text-sm text-gray-600",children:["同事:",(0,l.jsxs)("select",{value:null!=p?p:"",onChange:e=>v(Number(e.target.value)),className:"ml-2 rounded border border-gray-300 px-2 py-1 text-sm",children:[null===f?(0,l.jsx)("option",{children:"加载中…"}):null,(null!=f?f:[]).map(e=>(0,l.jsxs)("option",{value:e.hmUserId,children:[e.name,"(",e.email,")"]},e.hmUserId))]})]}),(0,l.jsx)("div",{className:"flex gap-1",children:o.map(e=>(0,l.jsx)("button",{onClick:()=>j(e.key),className:"rounded px-2.5 py-1 text-xs ".concat(b===e.key?"bg-blue-100 font-medium text-blue-800":"text-gray-500 hover:bg-gray-100"),children:e.label},e.key))}),"custom"===b?(0,l.jsxs)("span",{className:"flex items-center gap-1 text-sm",children:[(0,l.jsx)("input",{type:"date",value:N,onChange:e=>w(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm"}),"~",(0,l.jsx)("input",{type:"date",value:S,onChange:e=>I(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm"})]}):null]}),D?(0,l.jsx)("div",{className:"mb-4 rounded border border-red-200 bg-red-50 px-4 py-3 text-sm text-red-700",children:D}):null,T?(0,l.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:"加载中…"}):null,!T&&E?(0,l.jsxs)("div",{className:"space-y-4",children:[(0,l.jsxs)("div",{className:"grid grid-cols-2 gap-3 md:grid-cols-4",children:[(0,l.jsx)(g,{label:"区间新建推荐",value:null!==(t=null==H?void 0:H.recsTotal)&&void 0!==t?t:0}),(0,l.jsx)(g,{label:"agent 代操作",value:null!==(n=null==H?void 0:H.recsByAgent)&&void 0!==n?n:0,tone:"purple"}),(0,l.jsx)(g,{label:"本人操作",value:null!==(x=null==H?void 0:H.recsByHuman)&&void 0!==x?x:0,tone:"green"}),(0,l.jsx)(g,{label:"来源不明(存量)",value:null!==(h=null==H?void 0:H.recsUnknown)&&void 0!==h?h:0,tone:"gray"})]}),X.length?(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-3 text-sm",children:[(0,l.jsx)("span",{className:"mr-2 text-xs text-gray-500",children:"终端阶段:"}),X.map(e=>{var t;let[n,r]=e;return(0,l.jsxs)("span",{className:"mr-3",children:[null!==(t=c[n])&&void 0!==t?t:n," ",(0,l.jsx)("b",{children:r})]},n)})]}):null,(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white",children:[(0,l.jsx)("div",{className:"border-b border-gray-100 px-4 py-2 text-sm font-medium",children:"分职位产出"}),E.jobs.length?(0,l.jsxs)("table",{className:"w-full text-sm",children:[(0,l.jsx)("thead",{children:(0,l.jsxs)("tr",{className:"text-left text-xs text-gray-400",children:[(0,l.jsx)("th",{className:"px-4 py-2",children:"职位"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"推荐数"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"agent"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"本人"}),(0,l.jsx)("th",{className:"px-2 py-2",children:"不明"}),(0,l.jsx)("th",{className:"px-4 py-2",children:"阶段分布"})]})}),(0,l.jsx)("tbody",{children:E.jobs.map(e=>(0,l.jsxs)("tr",{className:"border-t border-gray-50",children:[(0,l.jsxs)("td",{className:"px-4 py-2",children:[e.title,e.status?(0,l.jsxs)("span",{className:"ml-1 text-xs text-gray-400",children:["(",e.status,")"]}):null]}),(0,l.jsx)("td",{className:"px-2 py-2 font-medium",children:e.recsTotal}),(0,l.jsx)("td",{className:"px-2 py-2 text-purple-600",children:e.byAgent}),(0,l.jsx)("td",{className:"px-2 py-2 text-emerald-600",children:e.byHuman}),(0,l.jsx)("td",{className:"px-2 py-2 text-gray-400",children:e.byUnknown}),(0,l.jsx)("td",{className:"px-4 py-2 text-xs text-gray-500",children:Object.entries(e.stageDist).map(e=>{var t;let[n,l]=e;return"".concat(null!==(t=c[n])&&void 0!==t?t:n," ").concat(l)}).join(" / ")})]},e.jobCaseId))})]}):(0,l.jsx)("div",{className:"px-4 py-6 text-center text-sm text-gray-400",children:"该区间无推荐产出"})]}),(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white",children:[(0,l.jsxs)("div",{className:"border-b border-gray-100 px-4 py-2 text-sm font-medium",children:["操作时间线(区间内 ",E.timeline.length," 条)"]}),E.timeline.length?(0,l.jsx)("ul",{className:"divide-y divide-gray-50",children:E.timeline.map((e,t)=>{var n,r;return(0,l.jsxs)("li",{className:"flex items-center gap-3 px-4 py-2 text-sm",children:[(0,l.jsx)("span",{className:"w-32 shrink-0 text-xs text-gray-400",children:new Date(e.at).toLocaleString()}),(0,l.jsx)(m,{actorType:e.actorType}),(0,l.jsx)("span",{className:"font-medium",children:e.talentName||"—"}),(0,l.jsxs)("span",{className:"text-xs text-gray-500",children:[null!==(n=u[e.action])&&void 0!==n?n:e.action,e.toStage?" → ".concat(null!==(r=c[e.toStage])&&void 0!==r?r:e.toStage):""]}),(0,l.jsx)("span",{className:"ml-auto truncate text-xs text-gray-400",children:e.jobTitle})]},"".concat(e.at,"-").concat(t))})}):(0,l.jsx)("div",{className:"px-4 py-6 text-center text-sm text-gray-400",children:"该区间无操作记录"})]})]}):null,T||E||D?null:(0,l.jsx)("div",{className:"py-10 text-center text-sm text-gray-400",children:f&&!f.length?"暂无公司租户同事(加入公司租户后可用)":"选择同事与时间段查看统计"})]})})}function g(e){let{label:t,value:n,tone:r}=e;return(0,l.jsxs)("div",{className:"rounded-lg border border-gray-200 bg-white p-3",children:[(0,l.jsx)("div",{className:"text-xs text-gray-500",children:t}),(0,l.jsx)("div",{className:"mt-1 text-2xl font-semibold ".concat("purple"===r?"text-purple-700":"green"===r?"text-emerald-700":"gray"===r?"text-gray-500":"text-gray-900"),children:n})]})}},65777:function(e,t,n){"use strict";let l;n.d(t,{Cd:function(){return I},Xc:function(){return k},aG:function(){return w},cp:function(){return S},nu:function(){return N},tQ:function(){return E}});var r=n(60635),a=n(74431),s=n(67002),i=n(60529);let o=null,c=null,u=null,d=new Set;function m(){d.forEach(e=>e())}function x(e){o=o?{...o,refreshing:e}:{...v,refreshing:e},m()}async function g(){try{return await (0,a.aA)("/auth/session")}catch(e){return null}}async function h(e){let t=new Headers,n=(0,s.Xc)();n&&t.set("Authorization","UTOKEN ".concat(n));try{return await (0,a.aA)(e,{headers:t})}catch(e){return null}}async function f(){x(!0);try{var e;let[t,n]=await Promise.all([g(),h("/datasync/state")]),r=(null==t?void 0:t.loggedIn)&&t.token?t.token:null,a=null!=n?n:null;!a&&t&&r&&r!==(0,s.Xc)()?((0,s.GK)(r),a=await h("/datasync/state")):(0,s.GK)(r),function(e){if(void 0===l){l=e;return}if(e!==l){l=e;try{window.localStorage.removeItem("hm-view-mode")}catch(e){}}}((null==t?void 0:t.loggedIn)&&null!==(e=t.hmUserId)&&void 0!==e?e:null);let i=!!((null==t?void 0:t.loggedIn)||(null==a?void 0:a.loggedIn));if(!t&&!a){o=o?{...o,loadError:"本地服务无响应"}:{...v,loadError:"本地服务无响应"},m();return}o={session:null!=t?t:{loggedIn:!1},sync:a,utoken:(0,s.Xc)(),loadError:null,refreshing:!1,authStatus:i?"in":"out",refresh:y},m()}finally{(null==o?void 0:o.refreshing)&&x(!1)}}function y(){return c||(c=f().finally(()=>{c=null}))}function p(e){return d.add(e),1===d.size&&(y(),u=setInterval(()=>void y(),6e4)),()=>{d.delete(e),0===d.size&&u&&(clearInterval(u),u=null)}}let v={session:null,sync:null,utoken:null,loadError:null,refreshing:!1,authStatus:"loading",refresh:y};function b(){return null!=o?o:v}function j(){return b()}function N(){return(0,r.useSyncExternalStore)(p,b,j)}function w(e){var t;return(null!==(t=null==e?void 0:e.memberships)&&void 0!==t?t:[]).filter(e=>!e.isPersonal&&!e.leftAt)}function S(e){var t,n;let l=null!==(t=null==e?void 0:e.activeTenantId)&&void 0!==t?t:null;if(null==l)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===l&&!e.leftAt);return!r||r.isPersonal?null:l}function I(e,t){var n,l;if(!t)return null;let r=(null!==(n=null==e?void 0:e.memberships)&&void 0!==n?n:[]).find(e=>e.tenantId===t&&!e.leftAt&&!e.isPersonal);return null!==(l=null==r?void 0:r.role)&&void 0!==l?l:null}function E(){return i.env.NEXT_PUBLIC_HUNTER_MATE_SERVER_URL||""}function k(){return(0,s.Xc)()}},74431:function(e,t,n){"use strict";n.d(t,{Ox:function(){return a},aA:function(){return o}});var l=n(67002),r=n(60529);function a(){return r.env.HUNTER_MATE_SERVER_URL||""}let s=a();class i extends Error{constructor(e,t,n){super(null!=n?n:"请求失败(".concat(e,")").concat(t?": ".concat(t):"")),this.status=e,this.path=t,this.name="HttpError"}}async function o(e,t){let n;try{n=await fetch("".concat(s).concat(e),{cache:"no-store",...function(e){let t=(0,l.Xc)();if(!t)return e;let n=new Headers(null==e?void 0:e.headers);return n.has("Authorization")||n.set("Authorization","UTOKEN ".concat(t)),{...e,headers:n}}(t)})}catch(t){throw new i(0,e,t instanceof Error?t.message:"网络错误")}if(!n.ok)throw new i(n.status,e,"HTTP ".concat(n.status));try{return await n.json()}catch(t){throw new i(n.status,e,t instanceof Error?"响应解析失败: ".concat(t.message):"响应解析失败")}}},67002:function(e,t,n){"use strict";n.d(t,{GK:function(){return s},Lc:function(){return i},Xc:function(){return a}});let l=null,r=new Set;function a(){return l}function s(e){e!==l&&(l=e,r.forEach(e=>e()))}function i(e){return r.add(e),()=>{r.delete(e)}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=80812)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
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]="3ff321f2-c048-4bb9-882f-90f4f4790759",e._sentryDebugIdIdentifier="sentry-dbid-3ff321f2-c048-4bb9-882f-90f4f4790759")}catch(e){}}(),function(){"use strict";var e,t,n,r,o,u,i,f,c,a={},l={};function d(e){var t=l[e];if(void 0!==t)return t.exports;var n=l[e]={exports:{}},r=!0;try{a[e].call(n.exports,n,n.exports,d),r=!1}finally{r&&delete l[e]}return n.exports}d.m=a,e=[],d.O=function(t,n,r,o){if(n){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o];return}for(var i=1/0,u=0;u<e.length;u++){for(var n=e[u][0],r=e[u][1],o=e[u][2],f=!0,c=0;c<n.length;c++)i>=o&&Object.keys(d.O).every(function(e){return d.O[e](n[c])})?n.splice(c--,1):(f=!1,o<i&&(i=o));if(f){e.splice(u--,1);var a=r();void 0!==a&&(t=a)}}return t},d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},d.t=function(e,r){if(1&r&&(e=this(e)),8&r||"object"==typeof e&&e&&(4&r&&e.__esModule||16&r&&"function"==typeof e.then))return e;var o=Object.create(null);d.r(o);var u={};t=t||[null,n({}),n([]),n(n)];for(var i=2&r&&e;"object"==typeof i&&!~t.indexOf(i);i=n(i))Object.getOwnPropertyNames(i).forEach(function(t){u[t]=function(){return e[t]}});return u.default=function(){return e},d.d(o,u),o},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return"static/chunks/"+(131===e?"1e6d5a0c":e)+"."+({131:"75afa2d319272f42",671:"ae431f885d6c7f0c"})[e]+".js"},d.miniCssF=function(e){},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="_N_E:",d.l=function(e,t,n,u){if(r[e]){r[e].push(t);return}if(void 0!==n)for(var i,f,c=document.getElementsByTagName("script"),a=0;a<c.length;a++){var l=c[a];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==o+n){i=l;break}}i||(f=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,d.nc&&i.setAttribute("nonce",d.nc),i.setAttribute("data-webpack",o+n),i.src=d.tu(e)),r[e]=[t];var s=function(t,n){i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=s.bind(null,i.onerror),i.onload=s.bind(null,i.onload),f&&document.head.appendChild(i)},d.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=function(){return void 0===u&&(u={createScriptURL:function(e){return e}},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(u=trustedTypes.createPolicy("nextjs#bundler",u))),u},d.tu=function(e){return d.tt().createScriptURL(e)},d.p="/_next/",i={272:0,633:0},d.f.j=function(e,t){var n=d.o(i,e)?i[e]:void 0;if(0!==n){if(n)t.push(n[2]);else if(/^(272|633)$/.test(e))i[e]=0;else{var r=new Promise(function(t,r){n=i[e]=[t,r]});t.push(n[2]=r);var o=d.p+d.u(e),u=Error();d.l(o,function(t){if(d.o(i,e)&&(0!==(n=i[e])&&(i[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;u.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",u.name="ChunkLoadError",u.type=r,u.request=o,n[1](u)}},"chunk-"+e,e)}}},d.O.j=function(e){return 0===i[e]},f=function(e,t){var n,r,o=t[0],u=t[1],f=t[2],c=0;if(o.some(function(e){return 0!==i[e]})){for(n in u)d.o(u,n)&&(d.m[n]=u[n]);if(f)var a=f(d)}for(e&&e(t);c<o.length;c++)r=o[c],d.o(i,r)&&i[r]&&i[r][0](),i[r]=0;return d.O(a)},(c=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(f.bind(null,0)),c.push=f.bind(null,c.push.bind(c))}();
@@ -0,0 +1,3 @@
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-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-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-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr\2c 2fr\2c auto\]{grid-template-columns:1fr 2fr auto}.grid-cols-\[90px\2c 1fr\2c auto\]{grid-template-columns:90px 1fr auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.divide-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(249 250 251/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-100{--tw-border-opacity:1;border-color:rgb(254 243 199/var(--tw-border-opacity,1))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-50{--tw-border-opacity:1;border-color:rgb(249 250 251/var(--tw-border-opacity,1))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity,1))}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity,1))}.border-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-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-sky-100{--tw-bg-opacity:1;background-color:rgb(224 242 254/var(--tw-bg-opacity,1))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity,1))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.tracking-widest{letter-spacing:.1em}.text-\[color\:var\(--brand-strong\)\]{color:var(--brand-strong)}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity,1))}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.text-indigo-700{--tw-text-opacity:1;color:rgb(67 56 202/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-sky-700{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-red-300{text-decoration-color:#fca5a5}.accent-amber-600{accent-color:#d97706}.accent-blue-600{accent-color:#2563eb}.opacity-40{opacity:.4}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-current{--tw-ring-color:currentColor}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root,:root[data-view=delivery]{--brand:#0e7490;--brand-strong:#155e75;--brand-soft:#ecfeff;--accent:#2563eb}:root[data-view=bd]{--brand:#b45309;--brand-strong:#92400e;--brand-soft:#fffbeb;--accent:#7c3aed}.hm-active{background:var(--brand-soft);color:var(--brand-strong)}.hm-spinner{display:inline-block;width:28px;height:28px;border:3px solid var(--brand-soft);border-top-color:var(--brand);border-radius:9999px;animation:hm-spin .8s linear infinite}.hm-spinner-sm{width:16px;height:16px;border-width:2px}@keyframes hm-spin{to{transform:rotate(1turn)}}.hm-top-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;overflow:hidden;pointer-events:none}.hm-top-bar:before{content:"";position:absolute;top:0;bottom:0;width:40%;background:var(--accent);animation:hm-top-bar-slide 1.1s ease-in-out infinite}@keyframes hm-top-bar-slide{0%{left:-40%}to{left:100%}}.last\:border-0:last-child{border-width:0}.hover\:border-amber-400:hover{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.hover\:bg-amber-200:hover{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-amber-700:hover{--tw-bg-opacity:1;background-color:rgb(180 83 9/var(--tw-bg-opacity,1))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-cyan-700:hover{--tw-bg-opacity:1;background-color:rgb(14 116 144/var(--tw-bg-opacity,1))}.hover\:bg-emerald-50:hover{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-green-50:hover{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.hover\:bg-red-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-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\: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}
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a8f0a381a2372781.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-54e74ccc9e9451ee.js"/><script src="/_next/static/chunks/a7067448-3f2b194cfadb91fb.js" async=""></script><script src="/_next/static/chunks/935-efb30b9f6f558e3f.js" async=""></script><script src="/_next/static/chunks/main-app-f496bd51a73ef9f3.js" async=""></script><script src="/_next/static/chunks/app/admin/data/page-df1d84c14e85f294.js" async=""></script><script src="/_next/static/chunks/589-cc56950ae4117cdd.js" async=""></script><script src="/_next/static/chunks/187-f067914dcd1330c2.js" async=""></script><script src="/_next/static/chunks/app/layout-bd9a7e5e4474b692.js" async=""></script><title>HunterMate 采集仪表盘</title><meta name="description" content="HunterMate 采集/解析/入库仪表盘"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="flex h-screen overflow-hidden bg-gray-50 text-gray-900"><div class="flex h-screen w-screen flex-col items-center justify-center bg-gray-50"><span class="hm-spinner" aria-label="加载中"></span><div class="mt-4 text-sm text-gray-400">正在加载,请稍候…</div></div><script src="/_next/static/chunks/webpack-54e74ccc9e9451ee.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a8f0a381a2372781.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[76939,[],\"\"]\n4:I[84042,[\"116\",\"static/chunks/app/admin/data/page-df1d84c14e85f294.js\"],\"AdminDataPage\"]\n5:I[74268,[],\"\"]\n6:I[81050,[],\"\"]\n7:I[15214,[\"589\",\"static/chunks/589-cc56950ae4117cdd.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-bd9a7e5e4474b692.js\"],\"AuthGate\"]\n8:I[67188,[\"589\",\"static/chunks/589-cc56950ae4117cdd.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-bd9a7e5e4474b692.js\"],\"AntdProvider\"]\n9:I[9424,[\"589\",\"static/chunks/589-cc56950ae4117cdd.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-bd9a7e5e4474b692.js\"],\"SystemSidebar\"]\nb:I[62319,[],\"\"]\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"m0UGHVTGvtvb9mn4-uzJJ\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"admin\",\"data\"],\"initialTree\":[\"\",{\"children\":[\"admin\",{\"children\":[\"data\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"admin\",{\"children\":[\"data\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{}],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"admin\",\"children\",\"data\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"admin\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a8f0a381a2372781.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\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-hidden\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"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 采集/解析/入库仪表盘\"}]]\n3:null\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/8f3c454cab3414d0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9cebd25e322e2cd7.js"/><script src="/_next/static/chunks/a7067448-3f2b194cfadb91fb.js" async=""></script><script src="/_next/static/chunks/935-12f1084f0e18c962.js" async=""></script><script src="/_next/static/chunks/main-app-f496bd51a73ef9f3.js" async=""></script><script src="/_next/static/chunks/app/admin/data/page-666f99fbfee46cc9.js" async=""></script><script src="/_next/static/chunks/589-5bb84ab8060e960b.js" async=""></script><script src="/_next/static/chunks/187-f067914dcd1330c2.js" async=""></script><script src="/_next/static/chunks/app/layout-15c4c2ba595b2a92.js" async=""></script><title>HunterMate 采集仪表盘</title><meta name="description" content="HunterMate 采集/解析/入库仪表盘"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="flex h-screen overflow-hidden bg-gray-50 text-gray-900"><div class="flex h-screen w-screen flex-col items-center justify-center bg-gray-50"><span class="hm-spinner" aria-label="加载中"></span><div class="mt-4 text-sm text-gray-400">正在加载,请稍候…</div></div><script src="/_next/static/chunks/webpack-9cebd25e322e2cd7.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/8f3c454cab3414d0.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[76939,[],\"\"]\n4:I[84042,[\"116\",\"static/chunks/app/admin/data/page-666f99fbfee46cc9.js\"],\"AdminDataPage\"]\n5:I[74268,[],\"\"]\n6:I[81050,[],\"\"]\n7:I[15214,[\"589\",\"static/chunks/589-5bb84ab8060e960b.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-15c4c2ba595b2a92.js\"],\"AuthGate\"]\n8:I[67188,[\"589\",\"static/chunks/589-5bb84ab8060e960b.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-15c4c2ba595b2a92.js\"],\"AntdProvider\"]\n9:I[9424,[\"589\",\"static/chunks/589-5bb84ab8060e960b.js\",\"187\",\"static/chunks/187-f067914dcd1330c2.js\",\"185\",\"static/chunks/app/layout-15c4c2ba595b2a92.js\"],\"SystemSidebar\"]\nb:I[62319,[],\"\"]\nc:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L2\",null,{\"buildId\":\"tYFZz41gyWi4-BhxuxlGU\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"admin\",\"data\"],\"initialTree\":[\"\",{\"children\":[\"admin\",{\"children\":[\"data\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"admin\",{\"children\":[\"data\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"$L4\",null,{}],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"admin\",\"children\",\"data\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"admin\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/8f3c454cab3414d0.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\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L8\",null,{\"children\":[[\"$\",\"$L9\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 overflow-hidden\",\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",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],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$La\"],\"globalErrorComponent\":\"$b\",\"missingSlots\":\"$Wc\"}]\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"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 采集/解析/入库仪表盘\"}]]\n3:null\n"])</script></body></html>