hunter-mate 0.1.12 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/extension/background/service-worker.js +7 -0
- package/dist/assets/extension/build-info.json +1 -1
- package/dist/assets/extension/content/index.js +4 -3
- package/dist/assets/extension/manifest.json +1 -1
- package/dist/assets/extension/sidepanel/index.css +1 -1
- package/dist/assets/extension/sidepanel/index.js +30 -8
- package/dist/assets/server/app.module.js +4 -1
- package/dist/assets/server/app.module.js.map +1 -1
- package/dist/assets/server/auth/auth.controller.d.ts +14 -0
- package/dist/assets/server/auth/auth.controller.js +19 -0
- package/dist/assets/server/auth/auth.controller.js.map +1 -1
- package/dist/assets/server/auth/auth.module.js +4 -1
- package/dist/assets/server/auth/auth.module.js.map +1 -1
- package/dist/assets/server/auth/auth.service.d.ts +18 -1
- package/dist/assets/server/auth/auth.service.js +65 -2
- package/dist/assets/server/auth/auth.service.js.map +1 -1
- package/dist/assets/server/auth/saas-token.entity.d.ts +7 -0
- package/dist/assets/server/auth/saas-token.entity.js +46 -0
- package/dist/assets/server/auth/saas-token.entity.js.map +1 -0
- package/dist/assets/server/build-info.json +1 -1
- package/dist/assets/server/datasync/datasync.module.d.ts +2 -0
- package/dist/assets/server/datasync/datasync.module.js +26 -0
- package/dist/assets/server/datasync/datasync.module.js.map +1 -0
- package/dist/assets/server/datasync/datasync.service.d.ts +50 -0
- package/dist/assets/server/datasync/datasync.service.js +389 -0
- package/dist/assets/server/datasync/datasync.service.js.map +1 -0
- package/dist/assets/server/datasync/entities/sync-conflict.entity.d.ts +10 -0
- package/dist/assets/server/datasync/entities/sync-conflict.entity.js +61 -0
- package/dist/assets/server/datasync/entities/sync-conflict.entity.js.map +1 -0
- package/dist/assets/server/datasync/entities/sync-cursor.entity.d.ts +9 -0
- package/dist/assets/server/datasync/entities/sync-cursor.entity.js +56 -0
- package/dist/assets/server/datasync/entities/sync-cursor.entity.js.map +1 -0
- package/dist/assets/server/datasync/registry.d.ts +8 -0
- package/dist/assets/server/datasync/registry.js +55 -0
- package/dist/assets/server/datasync/registry.js.map +1 -0
- package/dist/assets/server/db/sqlite.module.js +6 -0
- package/dist/assets/server/db/sqlite.module.js.map +1 -1
- package/dist/assets/server/package.json +1 -0
- package/dist/commands/doctor.js +46 -0
- package/dist/commands/ops.js +45 -8
- package/dist/commands/update.js +5 -5
- package/dist/index.js +5 -1
- package/dist/updater.d.ts +95 -2
- package/dist/updater.js +372 -32
- package/dist/web/dist/404.html +1 -1
- package/dist/web/dist/_next/static/chunks/{539-5d0e8c5c238c56f8.js → 539-cd9d7c0ee78f8874.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/auth/verify/page-f13c66b48f7cf13e.js +1 -0
- package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/{page-f57f4b7529823601.js → page-cdf1ed0971999f35.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-87f04f1d61b94cb2.js +1 -0
- package/dist/web/dist/_next/static/chunks/app/page-affa1ffde089f1dd.js +1 -0
- package/dist/web/dist/_next/static/chunks/app/parselog/{page-58d3acece95b4089.js → page-31d3630d611649f7.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/recordings/{page-e2e2e3c3a64083fb.js → page-9cdefceb2bff613f.js} +1 -1
- package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-6996f7f221b1a7eb.js +1 -0
- package/dist/web/dist/_next/static/chunks/{main-app-0af848156a5b13fc.js → main-app-cb4554c86eba200c.js} +1 -1
- package/dist/web/dist/_next/static/chunks/pages/{_app-3d844792ec91e4d1.js → _app-834b8a94a4a3c493.js} +2 -2
- package/dist/web/dist/_next/static/css/{db881c5b3072b88a.css → b7097b50a6497650.css} +1 -1
- package/dist/web/dist/auth/verify.html +1 -1
- package/dist/web/dist/auth/verify.txt +2 -2
- package/dist/web/dist/companies.html +1 -1
- package/dist/web/dist/companies.txt +2 -2
- package/dist/web/dist/entity.html +1 -1
- package/dist/web/dist/entity.txt +1 -1
- package/dist/web/dist/index.html +1 -1
- package/dist/web/dist/index.txt +2 -2
- package/dist/web/dist/jobs.html +1 -1
- package/dist/web/dist/jobs.txt +2 -2
- package/dist/web/dist/logs.html +1 -1
- package/dist/web/dist/logs.txt +1 -1
- package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
- package/dist/web/dist/matching/jobs/placeholder/talents.txt +2 -2
- package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
- package/dist/web/dist/matching/portraits/placeholder/jobs.txt +2 -2
- package/dist/web/dist/parselog.html +1 -1
- package/dist/web/dist/parselog.txt +2 -2
- package/dist/web/dist/recordings.html +1 -1
- package/dist/web/dist/recordings.txt +2 -2
- package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
- package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +2 -2
- package/dist/web/dist/talents.html +1 -1
- package/dist/web/dist/talents.txt +2 -2
- package/package.json +3 -2
- package/dist/web/dist/_next/static/chunks/app/auth/verify/page-8e5cff53d6f7d8e1.js +0 -1
- package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-614d1e62d7b9d215.js +0 -1
- package/dist/web/dist/_next/static/chunks/app/page-e3392de08ae81fba.js +0 -1
- package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-fd3b7d7373b8f8b7.js +0 -1
- /package/dist/web/dist/_next/static/{RSIT2tCOW5--9YD-rmuF7 → ZJtEh3uyN_mQhaXvrDYzJ}/_buildManifest.js +0 -0
- /package/dist/web/dist/_next/static/{RSIT2tCOW5--9YD-rmuF7 → ZJtEh3uyN_mQhaXvrDYzJ}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0add38ef-b150-45de-b475-fb187d167694",e._sentryDebugIdIdentifier="sentry-dbid-0add38ef-b150-45de-b475-fb187d167694")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[234],{866:function(e,n,t){Promise.resolve().then(t.bind(t,4762))},7473:function(e,n,t){"use strict";var r=t(8321);t.o(r,"useParams")&&t.d(n,{useParams:function(){return r.useParams}}),t.o(r,"usePathname")&&t.d(n,{usePathname:function(){return r.usePathname}}),t.o(r,"useRouter")&&t.d(n,{useRouter:function(){return r.useRouter}}),t.o(r,"useSearchParams")&&t.d(n,{useSearchParams:function(){return r.useSearchParams}})},4762:function(e,n,t){"use strict";t.d(n,{default:function(){return a}});var r=t(2835),o=t(635),s=t(7473),i=t(4431);function a(){let e=(0,s.useParams)().id,[n,t]=(0,o.useState)([]),[a,d]=(0,o.useState)(!1),[u,c]=(0,o.useState)(null);async function l(){d(!0),c(null);try{let n=await fetch("".concat((0,i.O)(),"/matching/jobs/").concat(e,"/talents"));if(!n.ok)throw Error("HTTP ".concat(n.status));t(await n.json())}catch(e){c(e.message)}finally{d(!1)}}return(0,r.jsxs)("div",{style:{padding:24,maxWidth:900,margin:"0 auto"},children:[(0,r.jsxs)("h1",{children:["职位 ",e," 的推荐人才"]}),(0,r.jsx)("button",{onClick:l,disabled:a,children:a?"计算中...":"刷新匹配"}),u&&(0,r.jsx)("div",{style:{color:"red",marginTop:12},children:u}),(0,r.jsx)("div",{style:{marginTop:16},children:n.map(e=>{var n,t,o,s,i,a,d;return(0,r.jsxs)("div",{style:{border:"1px solid #ddd",borderRadius:8,padding:16,marginBottom:12},children:[(0,r.jsxs)("div",{style:{fontWeight:"bold"},children:["人才 ID: ",e.portraitId.slice(0,8)," — 综合分 ",null===(n=e.scores)||void 0===n?void 0:n.overall]}),(0,r.jsxs)("div",{style:{fontSize:13,color:"#555",marginTop:4},children:["技能 ",null===(t=e.scores)||void 0===t?void 0:t.skill," | 经验 ",null===(o=e.scores)||void 0===o?void 0:o.experience," | 行业 ",null===(s=e.scores)||void 0===s?void 0:s.industry," | 地点 ",null===(i=e.scores)||void 0===i?void 0:i.location," | 薪酬 ",null===(a=e.scores)||void 0===a?void 0:a.salary]}),(null===(d=e.recommendation)||void 0===d?void 0:d.aiReason)&&(0,r.jsx)("pre",{style:{marginTop:8,background:"#f5f5f5",padding:12,borderRadius:4,whiteSpace:"pre-wrap"},children:e.recommendation.aiReason})]},e.id)})})]})}},4431:function(e,n,t){"use strict";t.d(n,{O:function(){return o},r:function(){return i}});var r=t(529);function o(){return r.env.HUNTER_MATE_SERVER_URL||""}let s=o();async function i(e,n){try{let t=await fetch("".concat(s).concat(e),{cache:"no-store",...n});if(!t.ok)return null;return await t.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=866)}),_N_E=e.O()}]);
|
package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-87f04f1d61b94cb2.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33066fb3-8603-4b3f-bc2a-9e1acc3e1d0c",e._sentryDebugIdIdentifier="sentry-dbid-33066fb3-8603-4b3f-bc2a-9e1acc3e1d0c")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[977],{8166:function(e,n,r){Promise.resolve().then(r.bind(r,1261))},7473:function(e,n,r){"use strict";var t=r(8321);r.o(t,"useParams")&&r.d(n,{useParams:function(){return t.useParams}}),r.o(t,"usePathname")&&r.d(n,{usePathname:function(){return t.usePathname}}),r.o(t,"useRouter")&&r.d(n,{useRouter:function(){return t.useRouter}}),r.o(t,"useSearchParams")&&r.d(n,{useSearchParams:function(){return t.useSearchParams}})},1261:function(e,n,r){"use strict";r.d(n,{default:function(){return a}});var t=r(2835),o=r(635),s=r(7473),i=r(4431);function a(){let e=(0,s.useParams)().id,[n,r]=(0,o.useState)([]),[a,c]=(0,o.useState)(!1),[u,d]=(0,o.useState)(null);async function l(){c(!0),d(null);try{let n=await fetch("".concat((0,i.O)(),"/matching/portraits/").concat(e,"/jobs"));if(!n.ok)throw Error("HTTP ".concat(n.status));r(await n.json())}catch(e){d(e.message)}finally{c(!1)}}return(0,t.jsxs)("div",{style:{padding:24,maxWidth:900,margin:"0 auto"},children:[(0,t.jsxs)("h1",{children:["人才 ",e.slice(0,8)," 的推荐职位"]}),(0,t.jsx)("button",{onClick:l,disabled:a,children:a?"计算中...":"刷新匹配"}),u&&(0,t.jsx)("div",{style:{color:"red",marginTop:12},children:u}),(0,t.jsx)("div",{style:{marginTop:16},children:n.map(e=>{var n,r,o,s,i,a,c;return(0,t.jsxs)("div",{style:{border:"1px solid #ddd",borderRadius:8,padding:16,marginBottom:12},children:[(0,t.jsxs)("div",{style:{fontWeight:"bold"},children:["职位 ID: ",e.jobCaseId," — 综合分 ",null===(n=e.scores)||void 0===n?void 0:n.overall]}),(0,t.jsxs)("div",{style:{fontSize:13,color:"#555",marginTop:4},children:["技能 ",null===(r=e.scores)||void 0===r?void 0:r.skill," | 经验 ",null===(o=e.scores)||void 0===o?void 0:o.experience," | 行业 ",null===(s=e.scores)||void 0===s?void 0:s.industry," | 地点 ",null===(i=e.scores)||void 0===i?void 0:i.location," | 薪酬 ",null===(a=e.scores)||void 0===a?void 0:a.salary]}),(null===(c=e.recommendation)||void 0===c?void 0:c.aiReason)&&(0,t.jsx)("pre",{style:{marginTop:8,background:"#f5f5f5",padding:12,borderRadius:4,whiteSpace:"pre-wrap"},children:e.recommendation.aiReason})]},e.id)})})]})}},4431:function(e,n,r){"use strict";r.d(n,{O:function(){return o},r:function(){return i}});var t=r(529);function o(){return t.env.HUNTER_MATE_SERVER_URL||""}let s=o();async function i(e,n){try{let r=await fetch("".concat(s).concat(e),{cache:"no-store",...n});if(!r.ok)return null;return await r.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=8166)}),_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]="9b41c884-0480-440a-b389-aacd3319a3e1",e._sentryDebugIdIdentifier="sentry-dbid-9b41c884-0480-440a-b389-aacd3319a3e1")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{4947:function(e,t,n){Promise.resolve().then(n.bind(n,9145))},9145:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return c}});var l=n(2835),r=n(635),a=n(5589),o=n(4431),s=n(8448);let i=(0,o.O)();function c(){var e,t,n,c,u;let[d,f]=(0,r.useState)({}),[h,b]=(0,r.useState)(0),[m,v]=(0,r.useState)(null),[g,y]=(0,r.useState)(""),p=(0,r.useCallback)(async()=>{var e,t,n,l,r,a,i;let[c,u,d,h,m]=await Promise.all([(0,o.r)("/entities?type=talent&limit=1"),(0,o.r)("/entities?type=job&limit=1"),(0,o.r)("/entities?type=company&limit=1"),(0,o.r)("/parse-log?limit=1"),(0,o.r)("/api/recordings?limit=1")]);v(!!(c||u||d||h||m)),f({talent:null!==(t=null==c?void 0:c.total)&&void 0!==t?t:0,job:null!==(n=null==u?void 0:u.total)&&void 0!==n?n:0,company:null!==(l=null==d?void 0:d.total)&&void 0!==l?l:0,parseLog:null!==(r=null==h?void 0:h.total)&&void 0!==r?r:0,recording:null!==(a=null==m?void 0:null===(e=m.sessions)||void 0===e?void 0:e.length)&&void 0!==a?a:0}),b(null!==(i=null==h?void 0:h.abnormal)&&void 0!==i?i:0),y((0,s.d3)(new Date().toISOString()))},[]);(0,r.useEffect)(()=>{p()},[p]);let x=[{key:"talent",label:"人才",href:"/talents",count:null!==(e=d.talent)&&void 0!==e?e:0},{key:"job",label:"职位",href:"/jobs",count:null!==(t=d.job)&&void 0!==t?t:0},{key:"company",label:"公司",href:"/companies",count:null!==(n=d.company)&&void 0!==n?n:0},{key:"parseLog",label:"解析日志",href:"/parselog",count:null!==(c=d.parseLog)&&void 0!==c?c:0,abnormal:h},{key:"recording",label:"录制会话",href:"/recordings",count:null!==(u=d.recording)&&void 0!==u?u:0}];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:["server: ",i," \xb7"," ",(0,l.jsx)("span",{className:m?"text-green-600":"text-red-600",children:null===m?"检测中…":m?"在线":"离线"}),g?" \xb7 刷新于 ".concat(g):""]})]}),(0,l.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:x.map(e=>(0,l.jsxs)(a.default,{href:e.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:e.label}),(0,l.jsx)("span",{className:"text-2xl font-bold text-gray-900",children:e.count})]}),e.abnormal?(0,l.jsxs)("div",{className:"mt-2 text-sm text-red-600",children:["异常 ",e.abnormal]}):null]},e.key))})]})}},8448:function(e,t,n){"use strict";function l(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}n.d(t,{d3:function(){return l}})},4431:function(e,t,n){"use strict";n.d(t,{O:function(){return r},r:function(){return o}});var l=n(529);function r(){return l.env.HUNTER_MATE_SERVER_URL||""}let a=r();async function o(e,t){try{let n=await fetch("".concat(a).concat(e),{cache:"no-store",...t});if(!n.ok)return null;return await n.json()}catch(e){return null}}}},function(e){e.O(0,[589,400,935,744],function(){return e(e.s=4947)}),_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]="bf7ab29d-63aa-42da-8066-cd619592d9a9",e._sentryDebugIdIdentifier="sentry-dbid-bf7ab29d-63aa-42da-8066-cd619592d9a9")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[788],{793:function(e,t,s){Promise.resolve().then(s.bind(s,4895))},7473:function(e,t,s){"use strict";var r=s(8321);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}})},4895:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return y}});var r=s(2835),a=s(635),n=s(7473),l=s(4431),o=s(7202),c=s(4518),i=s(3718),u=s(9036),d=s(5589),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:a}=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:["解析记录 #",a.id]}),(0,r.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(f[a.status]),children:null!==(s=m[a.status])&&void 0!==s?s:a.status}),a.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:[a.domain," \xb7 ",a.pageClass," \xb7 ",(0,x.d3)(a.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:a.sessionId})]}),(0,r.jsx)("a",{href:a.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:a.sourceUrl}),a.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(a.pageClass,"s?id=").concat(a.entityId),className:"text-sm text-blue-600 hover:underline",children:["#",a.entityId," (",a.pageClass,")"]})]}):null]})]}),a.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(a.extractedFields,null,2)})]}):null,(null===(t=a.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:a.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,n.useRouter)(),t=(0,n.usePathname)(),s=(0,n.useSearchParams)(),d=s.get("id")||"",m=(0,a.useMemo)(()=>({q:s.get("q")||"",status:s.get("status")||"",from:s.get("from")||"",to:s.get("to")||""}),[s]),[f,v]=(0,a.useState)(null),[y,j]=(0,a.useState)(null),[N,w]=(0,a.useState)(!0),[S,k]=(0,a.useState)(!1),[C,E]=(0,a.useState)(0),q=(0,a.useCallback)(s=>{var r,a;let n=null!==(r=s.filters)&&void 0!==r?r:m,l=p({id:null!==(a=s.id)&&void 0!==a?a:d,q:n.q,status:n.status,from:n.from,to:n.to});e.replace("".concat(t).concat(l))},[m,d,t,e]),I=(0,a.useCallback)(()=>{E(e=>e+1)},[]),P=(0,a.useCallback)(()=>{let e=null==f?void 0:f.items[0];return null==e?void 0:e.createdAt},[f]);(0,a.useEffect)(()=>{w(!0);let e=p({q:m.q,status:m.status,from:m.from,to:m.to});(0,l.r)("/parse-log?limit=200".concat(e.replace("?","&"))).then(e=>{v(e),w(!1)})},[m.q,m.status,m.from,m.to,C]),(0,a.useEffect)(()=>{if(!d){j(null);return}k(!0),(0,l.r)("/parse-log/".concat(d)).then(e=>{j(e),k(!1)})},[d]);let R=(0,a.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]),_=d?S?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):y?(0,r.jsx)(h,{item:y}):(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)(c.m,{filterBar:(0,r.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,r.jsx)(o.f,{value:m,showStatus:!0,statusOptions:g,onChange:e=>q({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:P,onRefresh:I,label:"解析日志"})]}),listPanel:(0,r.jsx)(i.L,{items:R,selectedId:d,onSelect:e=>q({id:e}),loading:N,emptyText:"暂无解析日志"}),detailPanel:_})}function y(){return(0,r.jsx)(a.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(v,{})})}},7202:function(e,t,s){"use strict";s.d(t,{f:function(){return n}});var r=s(2835),a=s(635);function n(e){let{value:t,showStatus:s,statusOptions:n,onChange:l}=e,[o,c]=(0,a.useState)(t);return(0,a.useEffect)(()=>{c(t)},[t.q,t.status,t.from,t.to]),(0,a.useEffect)(()=>{let e=setTimeout(()=>{(o.q!==t.q||o.status!==t.status||o.from!==t.from||o.to!==t.to)&&l(o)},300);return()=>clearTimeout(e)},[o.q,o.status,o.from,o.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:o.q,onChange:e=>c(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:!o.q&&!o.status&&!o.from&&!o.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:o.status,onChange:e=>c(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:"全部状态"}),(n||[]).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:o.from,onChange:e=>c(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:o.to,onChange:e=>c(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"})]})]})}},4518:function(e,t,s){"use strict";s.d(t,{m:function(){return a}});var r=s(2835);function a(e){let{filterBar:t,listPanel:s,detailPanel:a}=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:a})]})}},3718:function(e,t,s){"use strict";s.d(t,{L:function(){return a}});var r=s(2835);function a(e){let{items:t,selectedId:s,onSelect:a,loading:n,emptyText:l="暂无数据"}=e;return(0,r.jsx)("div",{className:"flex-1 overflow-auto",children:n?(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:l}):(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))})})}},9036:function(e,t,s){"use strict";s.d(t,{Y:function(){return l}});var r=s(2835),a=s(635),n=s(4431);function l(e){let{pollUrl:t,intervalMs:s=5e3,onRefresh:l,getLatestTimestamp:o,label:c="新数据"}=e,[i,u]=(0,a.useState)(0),[d,x]=(0,a.useState)(!1),m=(0,a.useRef)(void 0);return((0,a.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,a.useEffect)(()=>{m.current=o(),u(0)},[o]),(0,a.useEffect)(()=>{if(d)return;let e=async()=>{var e;let s=m.current;if(!s)return;let r=t.includes("?")?"&":"?",a=await (0,n.r)("".concat(t).concat(r,"since=").concat(encodeURIComponent(s))).catch(()=>null),l=null!==(e=null==a?void 0:a.count)&&void 0!==e?e:0;u(e=>Math.max(e,l))};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," 条",c,",点击刷新"]})}},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}})},4431:function(e,t,s){"use strict";s.d(t,{O:function(){return a},r:function(){return l}});var r=s(529);function a(){return r.env.HUNTER_MATE_SERVER_URL||"http://localhost:34570"}let n=a();async function l(e,t){try{let s=await fetch("".concat(n).concat(e),{cache:"no-store",...t});if(!s.ok)return null;return await s.json()}catch(e){return null}}}},function(e){e.O(0,[589,400,935,744],function(){return e(e.s=793)}),_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]="3c5f2677-9e6e-496a-b47c-2b079bf720fc",e._sentryDebugIdIdentifier="sentry-dbid-3c5f2677-9e6e-496a-b47c-2b079bf720fc")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[788],{793:function(e,t,s){Promise.resolve().then(s.bind(s,4895))},7473:function(e,t,s){"use strict";var r=s(8321);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}})},4895:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return y}});var r=s(2835),n=s(635),a=s(7473),l=s(4431),o=s(7202),c=s(4518),i=s(3718),u=s(9036),d=s(5589),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)(null),[N,w]=(0,n.useState)(!0),[S,k]=(0,n.useState)(!1),[C,E]=(0,n.useState)(0),q=(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]),I=(0,n.useCallback)(()=>{E(e=>e+1)},[]),P=(0,n.useCallback)(()=>{let e=null==f?void 0:f.items[0];return null==e?void 0:e.createdAt},[f]);(0,n.useEffect)(()=>{w(!0);let e=p({q:m.q,status:m.status,from:m.from,to:m.to});(0,l.r)("/parse-log?limit=200".concat(e.replace("?","&"))).then(e=>{v(e),w(!1)})},[m.q,m.status,m.from,m.to,C]),(0,n.useEffect)(()=>{if(!d){j(null);return}k(!0),(0,l.r)("/parse-log/".concat(d)).then(e=>{j(e),k(!1)})},[d]);let R=(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]),_=d?S?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):y?(0,r.jsx)(h,{item:y}):(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)(c.m,{filterBar:(0,r.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,r.jsx)(o.f,{value:m,showStatus:!0,statusOptions:g,onChange:e=>q({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:P,onRefresh:I,label:"解析日志"})]}),listPanel:(0,r.jsx)(i.L,{items:R,selectedId:d,onSelect:e=>q({id:e}),loading:N,emptyText:"暂无解析日志"}),detailPanel:_})}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,{})})}},7202:function(e,t,s){"use strict";s.d(t,{f:function(){return a}});var r=s(2835),n=s(635);function a(e){let{value:t,showStatus:s,statusOptions:a,onChange:l}=e,[o,c]=(0,n.useState)(t);return(0,n.useEffect)(()=>{c(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)&&l(o)},300);return()=>clearTimeout(e)},[o.q,o.status,o.from,o.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:o.q,onChange:e=>c(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:!o.q&&!o.status&&!o.from&&!o.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:o.status,onChange:e=>c(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:o.from,onChange:e=>c(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:o.to,onChange:e=>c(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"})]})]})}},4518:function(e,t,s){"use strict";s.d(t,{m:function(){return n}});var r=s(2835);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})]})}},3718:function(e,t,s){"use strict";s.d(t,{L:function(){return n}});var r=s(2835);function n(e){let{items:t,selectedId:s,onSelect:n,loading:a,emptyText:l="暂无数据"}=e;return(0,r.jsx)("div",{className:"flex-1 overflow-auto",children:a?(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:l}):(0,r.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,r.jsx)("li",{role:"button",tabIndex:0,onClick:()=>n(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&n(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))})})}},9036:function(e,t,s){"use strict";s.d(t,{Y:function(){return l}});var r=s(2835),n=s(635),a=s(4431);function l(e){let{pollUrl:t,intervalMs:s=5e3,onRefresh:l,getLatestTimestamp:o,label:c="新数据"}=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=o(),u(0)},[o]),(0,n.useEffect)(()=>{if(d)return;let e=async()=>{var e;let s=m.current;if(!s)return;let r=t.includes("?")?"&":"?",n=await (0,a.r)("".concat(t).concat(r,"since=").concat(encodeURIComponent(s))).catch(()=>null),l=null!==(e=null==n?void 0:n.count)&&void 0!==e?e:0;u(e=>Math.max(e,l))};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," 条",c,",点击刷新"]})}},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}})},4431:function(e,t,s){"use strict";s.d(t,{O:function(){return n},r:function(){return l}});var r=s(529);function n(){return r.env.HUNTER_MATE_SERVER_URL||""}let a=n();async function l(e,t){try{let s=await fetch("".concat(a).concat(e),{cache:"no-store",...t});if(!s.ok)return null;return await s.json()}catch(e){return null}}}},function(e){e.O(0,[589,400,935,744],function(){return e(e.s=793)}),_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]="78f1d444-34c4-4f2a-a197-a12dbc36736f",e._sentryDebugIdIdentifier="sentry-dbid-78f1d444-34c4-4f2a-a197-a12dbc36736f")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[370],{1428:function(e,t,s){Promise.resolve().then(s.bind(s,6297))},7473:function(e,t,s){"use strict";var r=s(8321);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}})},6297:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return R}});var r=s(2835),n=s(635),l=s(7473),a=s(4431),i=s(7202),d=s(4518),o=s(8448);function c(e){var t,s,n,l,a;let{sessionId:i,eventCount:d,sourceUrl:c,startedAt:u,lastEventAt:x,summary:m}=e,v=[{label:"rrweb",value:null!==(t=null==m?void 0:m.rrwebCount)&&void 0!==t?t:0},{label:"network",value:null!==(s=null==m?void 0:m.networkCount)&&void 0!==s?s:0},{label:"console",value:null!==(n=null==m?void 0:m.consoleCount)&&void 0!==n?n:0},{label:"简历",value:null!==(l=null==m?void 0:m.resumeCount)&&void 0!==l?l:0},{label:"操作",value:null!==(a=null==m?void 0:m.actionCount)&&void 0!==a?a:0}].filter(e=>e.value>0);return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"事件数"}),(0,r.jsx)("div",{className:"text-lg font-semibold",children:d})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"来源页面"}),c?(0,r.jsx)("a",{href:c,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:c}):(0,r.jsx)("div",{className:"text-sm text-gray-400",children:"-"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"开始时间"}),(0,r.jsx)("div",{className:"text-sm",children:(0,o.d3)(u)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"最近事件"}),(0,r.jsx)("div",{className:"text-sm",children:(0,o.d3)(x)})]})]}),v.length>0?(0,r.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-gray-100 pt-3",children:v.map(e=>(0,r.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,r.jsx)("div",{className:"mt-3 border-t border-gray-100 pt-3",children:(0,r.jsx)("div",{className:"font-mono text-xs text-gray-400",children:i})})]})}let u={rrweb:"rrweb",network:"network",console:"console",resume:"简历",action:"操作"},x={rrweb:"bg-purple-100 text-purple-700",network:"bg-blue-100 text-blue-700",console:"bg-yellow-100 text-yellow-700",resume:"bg-green-100 text-green-700",action:"bg-gray-100 text-gray-700"};function m(e){var t,s;let{type:n}=e,l=null!==(t=u[n])&&void 0!==t?t:n,a=null!==(s=x[n])&&void 0!==s?s:"bg-gray-100 text-gray-600";return(0,r.jsx)("span",{className:"inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ".concat(a),children:l})}let v=["rrweb","network","console","resume","action"];function h(e){let{events:t,selectedEventId:s,onSelectEvent:l}=e,[a,i]=(0,n.useState)("all"),d=(0,n.useMemo)(()=>{let e=[...t].sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime());return"all"===a?e:e.filter(e=>e.eventType===a)},[t,a]);return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>i("all"),className:"rounded px-2 py-1 text-xs ".concat("all"===a?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:"全部"}),v.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>i(e),className:"rounded px-2 py-1 text-xs ".concat(a===e?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:(0,r.jsx)(m,{type:e})},e))]}),(0,r.jsx)("div",{className:"max-h-96 overflow-auto",children:0===d.length?(0,r.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"暂无事件"}):(0,r.jsx)("ul",{className:"space-y-1",children:d.map((e,t)=>{var n;return(0,r.jsxs)("li",{role:l?"button":void 0,tabIndex:l?0:void 0,onClick:()=>null==l?void 0:l(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(null==l||l(e))},className:"flex items-start gap-3 rounded p-2 text-sm ".concat(l?"cursor-pointer hover:bg-gray-50":""," ").concat(s===e.id?"bg-blue-50":""),children:[(0,r.jsx)(m,{type:e.eventType}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"truncate text-gray-900",children:function(e){var t,s,r,n,l,a,i;let{eventType:d,payload:o}=e;switch(d){case"rrweb":return"rrweb ".concat(null!==(t=null==o?void 0:o.type)&&void 0!==t?t:"event");case"network":return"".concat(null!==(s=null==o?void 0:o.method)&&void 0!==s?s:"GET"," ").concat(null!==(r=null==o?void 0:o.url)&&void 0!==r?r:"?");case"console":return"[".concat(null!==(l=null==o?void 0:o.level)&&void 0!==l?l:"log","] ").concat(String(null!==(a=null==o?void 0:null===(n=o.args)||void 0===n?void 0:n[0])&&void 0!==a?a:""));case"resume":return"简历提取事件";case"action":return null!==(i=null==o?void 0:o.action)&&void 0!==i?i:"操作事件";default:return d}}(e)}),(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,o.d3)(e.createdAt)})]})]},null!==(n=e.id)&&void 0!==n?n:t)})})})]})}function g(e){let{data:t}=e;return(0,r.jsx)("pre",{className:"max-h-64 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t,null,2)})}function f(e){var t;let{event:s}=e,n=s.payload,l=(null==n?void 0:n.type)===2?"全量快照":(null==n?void 0:n.type)===3?"增量":"类型 ".concat(null!==(t=null==n?void 0:n.type)&&void 0!==t?t:"?");return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"text-sm text-gray-500",children:["rrweb ",l," \xb7 ",s.sourceUrl?(0,r.jsx)("a",{href:s.sourceUrl,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:s.sourceUrl}):"来源未知"]}),(0,r.jsx)("div",{className:"rounded border border-purple-100 bg-purple-50 p-3 text-sm text-purple-700",children:"rrweb-player 完整回放将在后续迭代接入,当前可查看下方原始 JSON。"}),(0,r.jsx)(g,{data:s.payload})]})}function b(e){var t,s,n,l;let{event:a}=e,i=a.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Method"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==i?void 0:i.method)&&void 0!==t?t:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Status"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(s=null==i?void 0:i.status)&&void 0!==s?s:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"MIME"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(n=null==i?void 0:i.mimeType)&&void 0!==n?n:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Size"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(l=null==i?void 0:i.size)&&void 0!==l?l:"?"})]})]}),(null==i?void 0:i.url)?(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"URL"}),(0,r.jsx)("a",{href:i.url,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:i.url})]}):null,(0,r.jsx)(g,{data:a.payload})]})}function y(e){var t,s,n,l;let{event:a}=e,i=a.payload,d=null!==(n=({error:"text-red-600",warn:"text-yellow-600",info:"text-blue-600",debug:"text-gray-500",log:"text-gray-700"})[null!==(s=null==i?void 0:i.level)&&void 0!==s?s:"log"])&&void 0!==n?n:"text-gray-700";return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"text-sm",children:["Level: ",(0,r.jsx)("span",{className:"font-medium ".concat(d),children:null!==(l=null==i?void 0:i.level)&&void 0!==l?l:"log"})]}),(null==i?void 0:null===(t=i.args)||void 0===t?void 0:t.length)?(0,r.jsx)("div",{className:"space-y-2",children:i.args.map((e,t)=>(0,r.jsx)(g,{data:e},t))}):(0,r.jsx)(g,{data:a.payload})]})}function p(e){var t;let{event:s}=e,n=s.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.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,r.jsxs)("div",{className:"text-xs text-gray-500",children:["来源: ",(0,r.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,r.jsx)(g,{data:n.fields}):(0,r.jsx)(g,{data:s.payload})]})}function j(e){var t;let{event:s}=e,n=s.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==n?void 0:n.action)&&void 0!==t?t:"操作事件"}),(0,r.jsx)(g,{data:s.payload})]})}function N(e){let t,{event:s}=e,[l,a]=(0,n.useState)(!1);switch(s.eventType){case"rrweb":t=(0,r.jsx)(f,{event:s});break;case"network":t=(0,r.jsx)(b,{event:s});break;case"console":t=(0,r.jsx)(y,{event:s});break;case"resume":t=(0,r.jsx)(p,{event:s});break;case"action":t=(0,r.jsx)(j,{event:s});break;default:t=(0,r.jsx)(g,{data:s.payload})}return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"事件详情"}),(0,r.jsx)("button",{type:"button",onClick:()=>a(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:l?"收起原始 JSON":"查看原始 JSON"})]}),t,l?(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsx)(g,{data:s})}):null]})}function w(e){let{sessionId:t}=e,[s,l]=(0,n.useState)("idle"),[i,d]=(0,n.useState)(null),[o,c]=(0,n.useState)("");async function u(){l("loading"),c("");try{let e=await (0,a.r)("/api/recordings/".concat(encodeURIComponent(t),"/parse"),{method:"POST"});if(null===e){l("error"),c("解析请求失败,请检查 server 日志");return}d(e),l("success")}catch(e){l("error"),c(e instanceof Error?e.message:String(e))}}let x=i&&"object"==typeof i&&"entity"in i&&i.entity&&"object"==typeof i.entity&&"id"in i.entity&&"type"in i.entity?"/entity?type=".concat(encodeURIComponent(String(i.entity.type)),"&id=").concat(encodeURIComponent(String(i.entity.id))):null;return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"解析"}),(0,r.jsx)("button",{type:"button",onClick:u,disabled:"loading"===s,className:"rounded bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50",children:"loading"===s?"解析中…":"触发解析"})]}),"success"===s?(0,r.jsxs)("div",{className:"mt-3 rounded border border-green-200 bg-green-50 p-3 text-sm text-green-700",children:[(0,r.jsx)("div",{children:"解析成功 ✅"}),x?(0,r.jsx)("a",{href:x,className:"mt-1 inline-block text-blue-600 hover:underline",children:"查看解析结果 →"}):null]}):null,"error"===s?(0,r.jsxs)("div",{className:"mt-3 rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700",children:[(0,r.jsx)("div",{children:"解析失败"}),o?(0,r.jsx)("div",{className:"mt-1",children:o}):null]}):null]})}function k(e){let{events:t}=e,l=(0,n.useRef)(null),[a,i]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{let e;if(!l.current||0===t.length)return;let r=!1;return async function(){let n=await Promise.all([s.e(131),s.e(671)]).then(s.bind(s,5841));await Promise.all([s.e(608),s.e(166)]).then(s.t.bind(s,166,23)),!r&&l.current&&(e=new(n.default||n)({target:l.current,props:{events:t}}),i(!0))}(),()=>{var t;r=!0,null==e||null===(t=e.$destroy)||void 0===t||t.call(e),l.current&&(l.current.innerHTML="")}},[t]),0===t.length)?(0,r.jsx)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm text-sm text-gray-500",children:"暂无 rrweb 回放事件"}):(0,r.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm",children:[(0,r.jsx)("div",{ref:l,className:"w-full"}),a?null:(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"播放器加载中…"})]})}function S(e){let{data:t}=e,s=(0,l.useSearchParams)().get("eventId"),[a,i]=(0,n.useState)(null),[d,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!s||!t.events.length){i(null);return}let e=Number(s),r=t.events.find(t=>t.id===e);i(null!=r?r:null)},[s,t.events]);let u=t.events.filter(e=>"rrweb"===e.eventType).map(e=>e.payload);return(0,r.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,r.jsx)("header",{className:"mb-6",children:(0,r.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"录制会话"})}),(0,r.jsx)(c,{sessionId:t.sessionId,eventCount:t.eventCount,sourceUrl:t.sourceUrl,startedAt:t.startedAt,lastEventAt:t.lastEventAt,summary:t.summary}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(k,{events:u})}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(w,{sessionId:t.sessionId})}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(h,{events:t.events,selectedEventId:null==a?void 0:a.id,onSelectEvent:i})}),a?(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(N,{event:a})}):null,(0,r.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"原始事件 JSON"}),(0,r.jsx)("button",{type:"button",onClick:()=>o(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:d?"收起":"展开"})]}),d?(0,r.jsx)("pre",{className:"max-h-96 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t.events,null,2)}):(0,r.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",t.events.length," 条事件,点击展开查看原始 JSON"]})]})]})}var I=s(3718);function C(e){let{session:t}=e;return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-mono text-xs text-gray-500",children:t.sessionId}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-gray-900",children:[(0,r.jsxs)("span",{children:[t.eventCount," 事件"]}),"number"==typeof t.tabId?(0,r.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["tab #",t.tabId]}):null]}),t.sourceUrl?(0,r.jsx)("div",{className:"truncate text-xs text-blue-600",children:t.sourceUrl}):null,(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,o.d3)(t.lastEventAt)})]})}function E(e){let{sessions:t,selectedId:s,onSelect:n,loading:l}=e,a=t.map(e=>({id:e.sessionId,content:(0,r.jsx)(C,{session:e})}));return(0,r.jsx)(I.L,{items:a,selectedId:s,onSelect:n,loading:l,emptyText:"暂无录制会话"})}function L(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 P(){var e,t,s,o;let c=(0,l.useRouter)(),u=(0,l.usePathname)(),x=(0,l.useSearchParams)(),m=x.get("sessionId")||"",v=(0,n.useMemo)(()=>({q:x.get("q")||"",status:"",from:x.get("from")||"",to:x.get("to")||""}),[x]),[h,g]=(0,n.useState)([]),[f,b]=(0,n.useState)(null),[y,p]=(0,n.useState)(!0),[j,N]=(0,n.useState)(!1),w=(0,n.useCallback)(e=>{var t,s;let r=null!==(t=e.filters)&&void 0!==t?t:v,n=L({sessionId:null!==(s=e.sessionId)&&void 0!==s?s:m,q:r.q,from:r.from,to:r.to});c.replace("".concat(u).concat(n))},[v,m,u,c]),k=(0,n.useCallback)(e=>{(null==e?void 0:e.withLoading)&&p(!0);let t=L({q:v.q,from:v.from,to:v.to});(0,a.r)("/api/recordings?limit=200".concat(t.replace("?","&"))).then(t=>{g(e=>{var s;return function(e,t){let s=new Map(e.map(e=>[e.sessionId,e]));return t.map(e=>{let t=s.get(e.sessionId);return t&&t.eventCount===e.eventCount&&t.lastEventAt===e.lastEventAt&&t.tabId===e.tabId?t:{...e}})}(e,null!==(s=null==t?void 0:t.sessions)&&void 0!==s?s:[])}),(null==e?void 0:e.withLoading)&&p(!1)})},[v.q,v.from,v.to]),I=(0,n.useCallback)(e=>{if(!m){b(null);return}(null==e?void 0:e.withLoading)&&N(!0),(0,a.r)("/api/recordings/".concat(encodeURIComponent(m))).then(t=>{b(t),(null==e?void 0:e.withLoading)&&N(!1)})},[m]);(0,n.useEffect)(()=>{k({withLoading:!0})},[k]),(0,n.useEffect)(()=>{let e=setInterval(()=>k({withLoading:!1}),3e3);return()=>clearInterval(e)},[k]),(0,n.useEffect)(()=>{I({withLoading:!0})},[I]),(0,n.useEffect)(()=>{let e=setInterval(()=>I({withLoading:!1}),3e3);return()=>clearInterval(e)},[I]);let C=(0,r.jsx)(E,{sessions:h,selectedId:m,onSelect:e=>w({sessionId:e}),loading:y}),P=m?j?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):f?(0,r.jsx)(S,{data:{sessionId:f.sessionId,eventCount:f.eventCount,sourceUrl:null!==(o=null===(e=h.find(e=>e.sessionId===m))||void 0===e?void 0:e.sourceUrl)&&void 0!==o?o:null,startedAt:(null===(t=f.events[0])||void 0===t?void 0:t.createdAt)||"",lastEventAt:(null===(s=f.events[f.events.length-1])||void 0===s?void 0:s.createdAt)||"",events:f.events}}):(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)(d.m,{filterBar:(0,r.jsx)(i.f,{value:v,onChange:e=>w({filters:e})}),listPanel:C,detailPanel:P})}function R(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(P,{})})}},7202:function(e,t,s){"use strict";s.d(t,{f:function(){return l}});var r=s(2835),n=s(635);function l(e){let{value:t,showStatus:s,statusOptions:l,onChange:a}=e,[i,d]=(0,n.useState)(t);return(0,n.useEffect)(()=>{d(t)},[t.q,t.status,t.from,t.to]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{(i.q!==t.q||i.status!==t.status||i.from!==t.from||i.to!==t.to)&&a(i)},300);return()=>clearTimeout(e)},[i.q,i.status,i.from,i.to]),(0,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:i.q,onChange:e=>d(t=>({...t,q:e.target.value})),placeholder:"搜索关键词...",className:"w-full rounded border border-gray-300 px-2 py-1.5 pr-8 text-sm outline-none focus:border-blue-500"}),(0,r.jsx)("button",{type:"button",onClick:()=>a({q:"",status:"",from:"",to:""}),title:"重置筛选",className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600 disabled:opacity-30",disabled:!i.q&&!i.status&&!i.from&&!i.to,children:(0,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:i.status,onChange:e=>d(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,r.jsx)("option",{value:"",children:"全部状态"}),(l||[]).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:i.from,onChange:e=>d(t=>({...t,from:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),(0,r.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,r.jsx)("input",{type:"date",value:i.to,onChange:e=>d(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},4518:function(e,t,s){"use strict";s.d(t,{m:function(){return n}});var r=s(2835);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})]})}},3718:function(e,t,s){"use strict";s.d(t,{L:function(){return n}});var r=s(2835);function n(e){let{items:t,selectedId:s,onSelect:n,loading:l,emptyText:a="暂无数据"}=e;return(0,r.jsx)("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:a}):(0,r.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,r.jsx)("li",{role:"button",tabIndex:0,onClick:()=>n(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&n(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))})})}},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}})},4431:function(e,t,s){"use strict";s.d(t,{O:function(){return n},r:function(){return a}});var r=s(529);function n(){return r.env.HUNTER_MATE_SERVER_URL||"http://localhost:34570"}let l=n();async function a(e,t){try{let s=await fetch("".concat(l).concat(e),{cache:"no-store",...t});if(!s.ok)return null;return await s.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=1428)}),_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]="716ea284-96d0-4cd5-a354-214e7ca36e43",e._sentryDebugIdIdentifier="sentry-dbid-716ea284-96d0-4cd5-a354-214e7ca36e43")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[370],{1428:function(e,t,s){Promise.resolve().then(s.bind(s,6297))},7473:function(e,t,s){"use strict";var r=s(8321);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}})},6297:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return R}});var r=s(2835),n=s(635),l=s(7473),a=s(4431),i=s(7202),d=s(4518),o=s(8448);function c(e){var t,s,n,l,a;let{sessionId:i,eventCount:d,sourceUrl:c,startedAt:u,lastEventAt:x,summary:m}=e,v=[{label:"rrweb",value:null!==(t=null==m?void 0:m.rrwebCount)&&void 0!==t?t:0},{label:"network",value:null!==(s=null==m?void 0:m.networkCount)&&void 0!==s?s:0},{label:"console",value:null!==(n=null==m?void 0:m.consoleCount)&&void 0!==n?n:0},{label:"简历",value:null!==(l=null==m?void 0:m.resumeCount)&&void 0!==l?l:0},{label:"操作",value:null!==(a=null==m?void 0:m.actionCount)&&void 0!==a?a:0}].filter(e=>e.value>0);return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"事件数"}),(0,r.jsx)("div",{className:"text-lg font-semibold",children:d})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"来源页面"}),c?(0,r.jsx)("a",{href:c,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:c}):(0,r.jsx)("div",{className:"text-sm text-gray-400",children:"-"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"开始时间"}),(0,r.jsx)("div",{className:"text-sm",children:(0,o.d3)(u)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"最近事件"}),(0,r.jsx)("div",{className:"text-sm",children:(0,o.d3)(x)})]})]}),v.length>0?(0,r.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-gray-100 pt-3",children:v.map(e=>(0,r.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,r.jsx)("div",{className:"mt-3 border-t border-gray-100 pt-3",children:(0,r.jsx)("div",{className:"font-mono text-xs text-gray-400",children:i})})]})}let u={rrweb:"rrweb",network:"network",console:"console",resume:"简历",action:"操作"},x={rrweb:"bg-purple-100 text-purple-700",network:"bg-blue-100 text-blue-700",console:"bg-yellow-100 text-yellow-700",resume:"bg-green-100 text-green-700",action:"bg-gray-100 text-gray-700"};function m(e){var t,s;let{type:n}=e,l=null!==(t=u[n])&&void 0!==t?t:n,a=null!==(s=x[n])&&void 0!==s?s:"bg-gray-100 text-gray-600";return(0,r.jsx)("span",{className:"inline-flex items-center rounded px-2 py-0.5 text-xs font-medium ".concat(a),children:l})}let v=["rrweb","network","console","resume","action"];function h(e){let{events:t,selectedEventId:s,onSelectEvent:l}=e,[a,i]=(0,n.useState)("all"),d=(0,n.useMemo)(()=>{let e=[...t].sort((e,t)=>new Date(e.createdAt).getTime()-new Date(t.createdAt).getTime());return"all"===a?e:e.filter(e=>e.eventType===a)},[t,a]);return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)("button",{type:"button",onClick:()=>i("all"),className:"rounded px-2 py-1 text-xs ".concat("all"===a?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:"全部"}),v.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>i(e),className:"rounded px-2 py-1 text-xs ".concat(a===e?"bg-gray-800 text-white":"border border-gray-300 text-gray-600 hover:bg-gray-50"),children:(0,r.jsx)(m,{type:e})},e))]}),(0,r.jsx)("div",{className:"max-h-96 overflow-auto",children:0===d.length?(0,r.jsx)("div",{className:"py-8 text-center text-sm text-gray-400",children:"暂无事件"}):(0,r.jsx)("ul",{className:"space-y-1",children:d.map((e,t)=>{var n;return(0,r.jsxs)("li",{role:l?"button":void 0,tabIndex:l?0:void 0,onClick:()=>null==l?void 0:l(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(null==l||l(e))},className:"flex items-start gap-3 rounded p-2 text-sm ".concat(l?"cursor-pointer hover:bg-gray-50":""," ").concat(s===e.id?"bg-blue-50":""),children:[(0,r.jsx)(m,{type:e.eventType}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"truncate text-gray-900",children:function(e){var t,s,r,n,l,a,i;let{eventType:d,payload:o}=e;switch(d){case"rrweb":return"rrweb ".concat(null!==(t=null==o?void 0:o.type)&&void 0!==t?t:"event");case"network":return"".concat(null!==(s=null==o?void 0:o.method)&&void 0!==s?s:"GET"," ").concat(null!==(r=null==o?void 0:o.url)&&void 0!==r?r:"?");case"console":return"[".concat(null!==(l=null==o?void 0:o.level)&&void 0!==l?l:"log","] ").concat(String(null!==(a=null==o?void 0:null===(n=o.args)||void 0===n?void 0:n[0])&&void 0!==a?a:""));case"resume":return"简历提取事件";case"action":return null!==(i=null==o?void 0:o.action)&&void 0!==i?i:"操作事件";default:return d}}(e)}),(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,o.d3)(e.createdAt)})]})]},null!==(n=e.id)&&void 0!==n?n:t)})})})]})}function g(e){let{data:t}=e;return(0,r.jsx)("pre",{className:"max-h-64 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t,null,2)})}function f(e){var t;let{event:s}=e,n=s.payload,l=(null==n?void 0:n.type)===2?"全量快照":(null==n?void 0:n.type)===3?"增量":"类型 ".concat(null!==(t=null==n?void 0:n.type)&&void 0!==t?t:"?");return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"text-sm text-gray-500",children:["rrweb ",l," \xb7 ",s.sourceUrl?(0,r.jsx)("a",{href:s.sourceUrl,target:"_blank",rel:"noreferrer",className:"text-blue-600 hover:underline",children:s.sourceUrl}):"来源未知"]}),(0,r.jsx)("div",{className:"rounded border border-purple-100 bg-purple-50 p-3 text-sm text-purple-700",children:"rrweb-player 完整回放将在后续迭代接入,当前可查看下方原始 JSON。"}),(0,r.jsx)(g,{data:s.payload})]})}function b(e){var t,s,n,l;let{event:a}=e,i=a.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Method"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==i?void 0:i.method)&&void 0!==t?t:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Status"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(s=null==i?void 0:i.status)&&void 0!==s?s:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"MIME"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(n=null==i?void 0:i.mimeType)&&void 0!==n?n:"?"})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"Size"}),(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(l=null==i?void 0:i.size)&&void 0!==l?l:"?"})]})]}),(null==i?void 0:i.url)?(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-gray-500",children:"URL"}),(0,r.jsx)("a",{href:i.url,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:i.url})]}):null,(0,r.jsx)(g,{data:a.payload})]})}function y(e){var t,s,n,l;let{event:a}=e,i=a.payload,d=null!==(n=({error:"text-red-600",warn:"text-yellow-600",info:"text-blue-600",debug:"text-gray-500",log:"text-gray-700"})[null!==(s=null==i?void 0:i.level)&&void 0!==s?s:"log"])&&void 0!==n?n:"text-gray-700";return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsxs)("div",{className:"text-sm",children:["Level: ",(0,r.jsx)("span",{className:"font-medium ".concat(d),children:null!==(l=null==i?void 0:i.level)&&void 0!==l?l:"log"})]}),(null==i?void 0:null===(t=i.args)||void 0===t?void 0:t.length)?(0,r.jsx)("div",{className:"space-y-2",children:i.args.map((e,t)=>(0,r.jsx)(g,{data:e},t))}):(0,r.jsx)(g,{data:a.payload})]})}function p(e){var t;let{event:s}=e,n=s.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.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,r.jsxs)("div",{className:"text-xs text-gray-500",children:["来源: ",(0,r.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,r.jsx)(g,{data:n.fields}):(0,r.jsx)(g,{data:s.payload})]})}function j(e){var t;let{event:s}=e,n=s.payload;return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("div",{className:"text-sm font-medium",children:null!==(t=null==n?void 0:n.action)&&void 0!==t?t:"操作事件"}),(0,r.jsx)(g,{data:s.payload})]})}function N(e){let t,{event:s}=e,[l,a]=(0,n.useState)(!1);switch(s.eventType){case"rrweb":t=(0,r.jsx)(f,{event:s});break;case"network":t=(0,r.jsx)(b,{event:s});break;case"console":t=(0,r.jsx)(y,{event:s});break;case"resume":t=(0,r.jsx)(p,{event:s});break;case"action":t=(0,r.jsx)(j,{event:s});break;default:t=(0,r.jsx)(g,{data:s.payload})}return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"事件详情"}),(0,r.jsx)("button",{type:"button",onClick:()=>a(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:l?"收起原始 JSON":"查看原始 JSON"})]}),t,l?(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsx)(g,{data:s})}):null]})}function w(e){let{sessionId:t}=e,[s,l]=(0,n.useState)("idle"),[i,d]=(0,n.useState)(null),[o,c]=(0,n.useState)("");async function u(){l("loading"),c("");try{let e=await (0,a.r)("/api/recordings/".concat(encodeURIComponent(t),"/parse"),{method:"POST"});if(null===e){l("error"),c("解析请求失败,请检查 server 日志");return}d(e),l("success")}catch(e){l("error"),c(e instanceof Error?e.message:String(e))}}let x=i&&"object"==typeof i&&"entity"in i&&i.entity&&"object"==typeof i.entity&&"id"in i.entity&&"type"in i.entity?"/entity?type=".concat(encodeURIComponent(String(i.entity.type)),"&id=").concat(encodeURIComponent(String(i.entity.id))):null;return(0,r.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"解析"}),(0,r.jsx)("button",{type:"button",onClick:u,disabled:"loading"===s,className:"rounded bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50",children:"loading"===s?"解析中…":"触发解析"})]}),"success"===s?(0,r.jsxs)("div",{className:"mt-3 rounded border border-green-200 bg-green-50 p-3 text-sm text-green-700",children:[(0,r.jsx)("div",{children:"解析成功 ✅"}),x?(0,r.jsx)("a",{href:x,className:"mt-1 inline-block text-blue-600 hover:underline",children:"查看解析结果 →"}):null]}):null,"error"===s?(0,r.jsxs)("div",{className:"mt-3 rounded border border-red-200 bg-red-50 p-3 text-sm text-red-700",children:[(0,r.jsx)("div",{children:"解析失败"}),o?(0,r.jsx)("div",{className:"mt-1",children:o}):null]}):null]})}function k(e){let{events:t}=e,l=(0,n.useRef)(null),[a,i]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{let e;if(!l.current||0===t.length)return;let r=!1;return async function(){let n=await Promise.all([s.e(131),s.e(671)]).then(s.bind(s,5841));await Promise.all([s.e(608),s.e(166)]).then(s.t.bind(s,166,23)),!r&&l.current&&(e=new(n.default||n)({target:l.current,props:{events:t}}),i(!0))}(),()=>{var t;r=!0,null==e||null===(t=e.$destroy)||void 0===t||t.call(e),l.current&&(l.current.innerHTML="")}},[t]),0===t.length)?(0,r.jsx)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm text-sm text-gray-500",children:"暂无 rrweb 回放事件"}):(0,r.jsxs)("div",{className:"rounded border border-gray-200 bg-white p-4 shadow-sm",children:[(0,r.jsx)("div",{ref:l,className:"w-full"}),a?null:(0,r.jsx)("div",{className:"text-sm text-gray-500",children:"播放器加载中…"})]})}function S(e){let{data:t}=e,s=(0,l.useSearchParams)().get("eventId"),[a,i]=(0,n.useState)(null),[d,o]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!s||!t.events.length){i(null);return}let e=Number(s),r=t.events.find(t=>t.id===e);i(null!=r?r:null)},[s,t.events]);let u=t.events.filter(e=>"rrweb"===e.eventType).map(e=>e.payload);return(0,r.jsxs)("div",{className:"mx-auto max-w-4xl",children:[(0,r.jsx)("header",{className:"mb-6",children:(0,r.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"录制会话"})}),(0,r.jsx)(c,{sessionId:t.sessionId,eventCount:t.eventCount,sourceUrl:t.sourceUrl,startedAt:t.startedAt,lastEventAt:t.lastEventAt,summary:t.summary}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(k,{events:u})}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(w,{sessionId:t.sessionId})}),(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(h,{events:t.events,selectedEventId:null==a?void 0:a.id,onSelectEvent:i})}),a?(0,r.jsx)("div",{className:"mt-4",children:(0,r.jsx)(N,{event:a})}):null,(0,r.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-lg font-semibold",children:"原始事件 JSON"}),(0,r.jsx)("button",{type:"button",onClick:()=>o(e=>!e),className:"rounded border border-gray-300 px-3 py-1 text-sm hover:bg-gray-50",children:d?"收起":"展开"})]}),d?(0,r.jsx)("pre",{className:"max-h-96 overflow-auto rounded bg-gray-50 p-3 text-xs text-gray-700",children:JSON.stringify(t.events,null,2)}):(0,r.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",t.events.length," 条事件,点击展开查看原始 JSON"]})]})]})}var I=s(3718);function C(e){let{session:t}=e;return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-mono text-xs text-gray-500",children:t.sessionId}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-gray-900",children:[(0,r.jsxs)("span",{children:[t.eventCount," 事件"]}),"number"==typeof t.tabId?(0,r.jsxs)("span",{className:"rounded bg-gray-100 px-1.5 py-0.5 text-xs text-gray-600",children:["tab #",t.tabId]}):null]}),t.sourceUrl?(0,r.jsx)("div",{className:"truncate text-xs text-blue-600",children:t.sourceUrl}):null,(0,r.jsx)("div",{className:"text-xs text-gray-400",children:(0,o.d3)(t.lastEventAt)})]})}function E(e){let{sessions:t,selectedId:s,onSelect:n,loading:l}=e,a=t.map(e=>({id:e.sessionId,content:(0,r.jsx)(C,{session:e})}));return(0,r.jsx)(I.L,{items:a,selectedId:s,onSelect:n,loading:l,emptyText:"暂无录制会话"})}function L(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 P(){var e,t,s,o;let c=(0,l.useRouter)(),u=(0,l.usePathname)(),x=(0,l.useSearchParams)(),m=x.get("sessionId")||"",v=(0,n.useMemo)(()=>({q:x.get("q")||"",status:"",from:x.get("from")||"",to:x.get("to")||""}),[x]),[h,g]=(0,n.useState)([]),[f,b]=(0,n.useState)(null),[y,p]=(0,n.useState)(!0),[j,N]=(0,n.useState)(!1),w=(0,n.useCallback)(e=>{var t,s;let r=null!==(t=e.filters)&&void 0!==t?t:v,n=L({sessionId:null!==(s=e.sessionId)&&void 0!==s?s:m,q:r.q,from:r.from,to:r.to});c.replace("".concat(u).concat(n))},[v,m,u,c]),k=(0,n.useCallback)(e=>{(null==e?void 0:e.withLoading)&&p(!0);let t=L({q:v.q,from:v.from,to:v.to});(0,a.r)("/api/recordings?limit=200".concat(t.replace("?","&"))).then(t=>{g(e=>{var s;return function(e,t){let s=new Map(e.map(e=>[e.sessionId,e]));return t.map(e=>{let t=s.get(e.sessionId);return t&&t.eventCount===e.eventCount&&t.lastEventAt===e.lastEventAt&&t.tabId===e.tabId?t:{...e}})}(e,null!==(s=null==t?void 0:t.sessions)&&void 0!==s?s:[])}),(null==e?void 0:e.withLoading)&&p(!1)})},[v.q,v.from,v.to]),I=(0,n.useCallback)(e=>{if(!m){b(null);return}(null==e?void 0:e.withLoading)&&N(!0),(0,a.r)("/api/recordings/".concat(encodeURIComponent(m))).then(t=>{b(t),(null==e?void 0:e.withLoading)&&N(!1)})},[m]);(0,n.useEffect)(()=>{k({withLoading:!0})},[k]),(0,n.useEffect)(()=>{let e=setInterval(()=>k({withLoading:!1}),3e3);return()=>clearInterval(e)},[k]),(0,n.useEffect)(()=>{I({withLoading:!0})},[I]),(0,n.useEffect)(()=>{let e=setInterval(()=>I({withLoading:!1}),3e3);return()=>clearInterval(e)},[I]);let C=(0,r.jsx)(E,{sessions:h,selectedId:m,onSelect:e=>w({sessionId:e}),loading:y}),P=m?j?(0,r.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):f?(0,r.jsx)(S,{data:{sessionId:f.sessionId,eventCount:f.eventCount,sourceUrl:null!==(o=null===(e=h.find(e=>e.sessionId===m))||void 0===e?void 0:e.sourceUrl)&&void 0!==o?o:null,startedAt:(null===(t=f.events[0])||void 0===t?void 0:t.createdAt)||"",lastEventAt:(null===(s=f.events[f.events.length-1])||void 0===s?void 0:s.createdAt)||"",events:f.events}}):(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)(d.m,{filterBar:(0,r.jsx)(i.f,{value:v,onChange:e=>w({filters:e})}),listPanel:C,detailPanel:P})}function R(){return(0,r.jsx)(n.Suspense,{fallback:(0,r.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,r.jsx)(P,{})})}},7202:function(e,t,s){"use strict";s.d(t,{f:function(){return l}});var r=s(2835),n=s(635);function l(e){let{value:t,showStatus:s,statusOptions:l,onChange:a}=e,[i,d]=(0,n.useState)(t);return(0,n.useEffect)(()=>{d(t)},[t.q,t.status,t.from,t.to]),(0,n.useEffect)(()=>{let e=setTimeout(()=>{(i.q!==t.q||i.status!==t.status||i.from!==t.from||i.to!==t.to)&&a(i)},300);return()=>clearTimeout(e)},[i.q,i.status,i.from,i.to]),(0,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:i.q,onChange:e=>d(t=>({...t,q:e.target.value})),placeholder:"搜索关键词...",className:"w-full rounded border border-gray-300 px-2 py-1.5 pr-8 text-sm outline-none focus:border-blue-500"}),(0,r.jsx)("button",{type:"button",onClick:()=>a({q:"",status:"",from:"",to:""}),title:"重置筛选",className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600 disabled:opacity-30",disabled:!i.q&&!i.status&&!i.from&&!i.to,children:(0,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:i.status,onChange:e=>d(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,r.jsx)("option",{value:"",children:"全部状态"}),(l||[]).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:i.from,onChange:e=>d(t=>({...t,from:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),(0,r.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,r.jsx)("input",{type:"date",value:i.to,onChange:e=>d(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},4518:function(e,t,s){"use strict";s.d(t,{m:function(){return n}});var r=s(2835);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})]})}},3718:function(e,t,s){"use strict";s.d(t,{L:function(){return n}});var r=s(2835);function n(e){let{items:t,selectedId:s,onSelect:n,loading:l,emptyText:a="暂无数据"}=e;return(0,r.jsx)("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:a}):(0,r.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,r.jsx)("li",{role:"button",tabIndex:0,onClick:()=>n(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&n(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))})})}},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}})},4431:function(e,t,s){"use strict";s.d(t,{O:function(){return n},r:function(){return a}});var r=s(529);function n(){return r.env.HUNTER_MATE_SERVER_URL||""}let l=n();async function a(e,t){try{let s=await fetch("".concat(l).concat(e),{cache:"no-store",...t});if(!s.ok)return null;return await s.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=1428)}),_N_E=e.O()}]);
|
package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-6996f7f221b1a7eb.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4001f009-b34d-42e6-9c7c-a94bdb0c91de",e._sentryDebugIdIdentifier="sentry-dbid-4001f009-b34d-42e6-9c7c-a94bdb0c91de")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[325],{1765:function(e,n,t){Promise.resolve().then(t.bind(t,4492))},7473:function(e,n,t){"use strict";var r=t(8321);t.o(r,"useParams")&&t.d(n,{useParams:function(){return r.useParams}}),t.o(r,"usePathname")&&t.d(n,{usePathname:function(){return r.usePathname}}),t.o(r,"useRouter")&&t.d(n,{useRouter:function(){return r.useRouter}}),t.o(r,"useSearchParams")&&t.d(n,{useSearchParams:function(){return r.useSearchParams}})},4492:function(e,n,t){"use strict";t.d(n,{default:function(){return c}});var r=t(2835),a=t(635),s=t(7473),u=t(4431);function c(){let e=(0,s.useParams)().id,[n,t]=(0,a.useState)(null),[c,o]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),[l,f]=(0,a.useState)(null);async function h(){o(!0),f(null);try{let n=await fetch("".concat((0,u.O)(),"/parsing/snapshots/").concat(e,"/agent-prompt"));if(!n.ok)throw Error("HTTP ".concat(n.status));let r=await n.json();t(r.prompt)}catch(e){f(e.message)}finally{o(!1)}}async function p(){n&&(await navigator.clipboard.writeText(n),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: ",e]}),(0,r.jsx)("button",{onClick:h,disabled:c,children:c?"加载中...":"生成 Prompt"}),l&&(0,r.jsx)("div",{style:{color:"red",marginTop:12},children:l}),n&&(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:n})]})]})}},4431:function(e,n,t){"use strict";t.d(n,{O:function(){return a},r:function(){return u}});var r=t(529);function a(){return r.env.HUNTER_MATE_SERVER_URL||""}let s=a();async function u(e,n){try{let t=await fetch("".concat(s).concat(e),{cache:"no-store",...n});if(!t.ok)return null;return await t.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=1765)}),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1289ef8e-5404-4b12-9fbc-b5bbaee8cb1e",e._sentryDebugIdIdentifier="sentry-dbid-1289ef8e-5404-4b12-9fbc-b5bbaee8cb1e")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[744],{5746:function(){},7539:function(e,n,t){Promise.resolve().then(t.t.bind(t,6939,23)),Promise.resolve().then(t.t.bind(t,7360,23)),Promise.resolve().then(t.t.bind(t,2319,23)),Promise.resolve().then(t.t.bind(t,4268,23)),Promise.resolve().then(t.t.bind(t,742,23)),Promise.resolve().then(t.t.bind(t,1050,23))},9531:function(e,n,t){"use strict";var r=t(258),i=t(529);globalThis._sentryRewritesTunnelPath=void 0,globalThis.SENTRY_RELEASE={id:"450a0e2db507eb196e3d9a512b0fd772c2a72a88"},globalThis._sentryBasePath=void 0,globalThis._sentryRewriteFramesAssetPrefixPath="";let s=i.env.NEXT_PUBLIC_HM_ERROR_TRACKING_DSN;"true"===i.env.NEXT_PUBLIC_HM_ERROR_TRACKING_ENABLED&&s&&r.S1({dsn:s,release:i.env.NEXT_PUBLIC_HM_RELEASE,environment:i.env.NEXT_PUBLIC_HM_ENVIRONMENT||"development",tracesSampleRate:0,sendClientReports:!1,beforeSend(e){var n;if(null===(n=e.request)||void 0===n?void 0:n.headers){let n=e.request.headers;n.authorization&&(n.authorization="***"),n.cookie&&(n.cookie="***")}return e}})}},function(e){var n=function(n){return e(e.s=n)};e.O(0,[400,935],function(){return n(9531),n(8063),n(7539)}),_N_E=e.O()}]);
|