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.
Files changed (87) hide show
  1. package/dist/assets/extension/background/service-worker.js +7 -0
  2. package/dist/assets/extension/build-info.json +1 -1
  3. package/dist/assets/extension/content/index.js +4 -3
  4. package/dist/assets/extension/manifest.json +1 -1
  5. package/dist/assets/extension/sidepanel/index.css +1 -1
  6. package/dist/assets/extension/sidepanel/index.js +30 -8
  7. package/dist/assets/server/app.module.js +4 -1
  8. package/dist/assets/server/app.module.js.map +1 -1
  9. package/dist/assets/server/auth/auth.controller.d.ts +14 -0
  10. package/dist/assets/server/auth/auth.controller.js +19 -0
  11. package/dist/assets/server/auth/auth.controller.js.map +1 -1
  12. package/dist/assets/server/auth/auth.module.js +4 -1
  13. package/dist/assets/server/auth/auth.module.js.map +1 -1
  14. package/dist/assets/server/auth/auth.service.d.ts +18 -1
  15. package/dist/assets/server/auth/auth.service.js +65 -2
  16. package/dist/assets/server/auth/auth.service.js.map +1 -1
  17. package/dist/assets/server/auth/saas-token.entity.d.ts +7 -0
  18. package/dist/assets/server/auth/saas-token.entity.js +46 -0
  19. package/dist/assets/server/auth/saas-token.entity.js.map +1 -0
  20. package/dist/assets/server/build-info.json +1 -1
  21. package/dist/assets/server/datasync/datasync.module.d.ts +2 -0
  22. package/dist/assets/server/datasync/datasync.module.js +26 -0
  23. package/dist/assets/server/datasync/datasync.module.js.map +1 -0
  24. package/dist/assets/server/datasync/datasync.service.d.ts +50 -0
  25. package/dist/assets/server/datasync/datasync.service.js +389 -0
  26. package/dist/assets/server/datasync/datasync.service.js.map +1 -0
  27. package/dist/assets/server/datasync/entities/sync-conflict.entity.d.ts +10 -0
  28. package/dist/assets/server/datasync/entities/sync-conflict.entity.js +61 -0
  29. package/dist/assets/server/datasync/entities/sync-conflict.entity.js.map +1 -0
  30. package/dist/assets/server/datasync/entities/sync-cursor.entity.d.ts +9 -0
  31. package/dist/assets/server/datasync/entities/sync-cursor.entity.js +56 -0
  32. package/dist/assets/server/datasync/entities/sync-cursor.entity.js.map +1 -0
  33. package/dist/assets/server/datasync/registry.d.ts +8 -0
  34. package/dist/assets/server/datasync/registry.js +55 -0
  35. package/dist/assets/server/datasync/registry.js.map +1 -0
  36. package/dist/assets/server/db/sqlite.module.js +6 -0
  37. package/dist/assets/server/db/sqlite.module.js.map +1 -1
  38. package/dist/assets/server/package.json +1 -0
  39. package/dist/commands/doctor.js +46 -0
  40. package/dist/commands/ops.js +45 -8
  41. package/dist/commands/update.js +5 -5
  42. package/dist/index.js +5 -1
  43. package/dist/updater.d.ts +95 -2
  44. package/dist/updater.js +372 -32
  45. package/dist/web/dist/404.html +1 -1
  46. package/dist/web/dist/_next/static/chunks/{539-5d0e8c5c238c56f8.js → 539-cd9d7c0ee78f8874.js} +1 -1
  47. package/dist/web/dist/_next/static/chunks/app/auth/verify/page-f13c66b48f7cf13e.js +1 -0
  48. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/{page-f57f4b7529823601.js → page-cdf1ed0971999f35.js} +1 -1
  49. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-87f04f1d61b94cb2.js +1 -0
  50. package/dist/web/dist/_next/static/chunks/app/page-affa1ffde089f1dd.js +1 -0
  51. package/dist/web/dist/_next/static/chunks/app/parselog/{page-58d3acece95b4089.js → page-31d3630d611649f7.js} +1 -1
  52. package/dist/web/dist/_next/static/chunks/app/recordings/{page-e2e2e3c3a64083fb.js → page-9cdefceb2bff613f.js} +1 -1
  53. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-6996f7f221b1a7eb.js +1 -0
  54. package/dist/web/dist/_next/static/chunks/{main-app-0af848156a5b13fc.js → main-app-cb4554c86eba200c.js} +1 -1
  55. package/dist/web/dist/_next/static/chunks/pages/{_app-3d844792ec91e4d1.js → _app-834b8a94a4a3c493.js} +2 -2
  56. package/dist/web/dist/_next/static/css/{db881c5b3072b88a.css → b7097b50a6497650.css} +1 -1
  57. package/dist/web/dist/auth/verify.html +1 -1
  58. package/dist/web/dist/auth/verify.txt +2 -2
  59. package/dist/web/dist/companies.html +1 -1
  60. package/dist/web/dist/companies.txt +2 -2
  61. package/dist/web/dist/entity.html +1 -1
  62. package/dist/web/dist/entity.txt +1 -1
  63. package/dist/web/dist/index.html +1 -1
  64. package/dist/web/dist/index.txt +2 -2
  65. package/dist/web/dist/jobs.html +1 -1
  66. package/dist/web/dist/jobs.txt +2 -2
  67. package/dist/web/dist/logs.html +1 -1
  68. package/dist/web/dist/logs.txt +1 -1
  69. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
  70. package/dist/web/dist/matching/jobs/placeholder/talents.txt +2 -2
  71. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
  72. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +2 -2
  73. package/dist/web/dist/parselog.html +1 -1
  74. package/dist/web/dist/parselog.txt +2 -2
  75. package/dist/web/dist/recordings.html +1 -1
  76. package/dist/web/dist/recordings.txt +2 -2
  77. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
  78. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +2 -2
  79. package/dist/web/dist/talents.html +1 -1
  80. package/dist/web/dist/talents.txt +2 -2
  81. package/package.json +3 -2
  82. package/dist/web/dist/_next/static/chunks/app/auth/verify/page-8e5cff53d6f7d8e1.js +0 -1
  83. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-614d1e62d7b9d215.js +0 -1
  84. package/dist/web/dist/_next/static/chunks/app/page-e3392de08ae81fba.js +0 -1
  85. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-fd3b7d7373b8f8b7.js +0 -1
  86. /package/dist/web/dist/_next/static/{RSIT2tCOW5--9YD-rmuF7 → ZJtEh3uyN_mQhaXvrDYzJ}/_buildManifest.js +0 -0
  87. /package/dist/web/dist/_next/static/{RSIT2tCOW5--9YD-rmuF7 → ZJtEh3uyN_mQhaXvrDYzJ}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0c5bf8b6-7838-417e-85c6-299d210d9f92",e._sentryDebugIdIdentifier="sentry-dbid-0c5bf8b6-7838-417e-85c6-299d210d9f92")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[937],{4116:function(e,t,s){Promise.resolve().then(s.bind(s,1332))},7473:function(e,t,s){"use strict";var n=s(8321);s.o(n,"useParams")&&s.d(t,{useParams:function(){return n.useParams}}),s.o(n,"usePathname")&&s.d(t,{usePathname:function(){return n.usePathname}}),s.o(n,"useRouter")&&s.d(t,{useRouter:function(){return n.useRouter}}),s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}})},1332:function(e,t,s){"use strict";s.d(t,{default:function(){return o}});var n=s(2835),a=s(635),r=s(7473);function o(){let e=(0,r.useSearchParams)().get("user_code")||"",[t,s]=(0,a.useState)("email"),[o,d]=(0,a.useState)(""),[i,l]=(0,a.useState)(""),[u,c]=(0,a.useState)(!1),[m,f]=(0,a.useState)(""),[h,b]=(0,a.useState)(!1),p=async s=>{s.preventDefault(),c(!0),f(""),b(!1);try{let s=await fetch("/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({loginWith:t,identifier:o,password:i})}),n=await s.json();if(!s.ok||!n.token)throw Error(n.error||"登录失败");let a=await fetch("/auth/approve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userCode:e,token:n.token})}),r=await a.json();if(!a.ok||!r.ok)throw Error(r.error||"授权失败");b(!0)}catch(e){f(e.message)}finally{c(!1)}};return(0,n.jsx)("main",{className:"flex min-h-screen items-center justify-center p-4",children:(0,n.jsxs)("div",{className:"w-full max-w-md rounded-lg bg-white p-8 shadow",children:[(0,n.jsx)("h1",{className:"mb-2 text-2xl font-bold",children:"HunterMate 设备授权"}),(0,n.jsxs)("p",{className:"mb-6 text-gray-600",children:["用户码:",(0,n.jsx)("span",{className:"font-mono text-lg font-semibold text-indigo-600",children:e})]}),h?(0,n.jsx)("div",{className:"rounded bg-green-50 p-4 text-green-700",children:"授权成功,请回到 CLI 继续操作。"}):(0,n.jsxs)("form",{onSubmit:p,className:"space-y-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"mb-1 block text-sm font-medium",children:"登录方式"}),(0,n.jsxs)("select",{value:t,onChange:e=>s(e.target.value),className:"w-full rounded border border-gray-300 p-2",children:[(0,n.jsx)("option",{value:"email",children:"邮箱"}),(0,n.jsx)("option",{value:"mobile",children:"手机"})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"mb-1 block text-sm font-medium",children:"email"===t?"邮箱":"手机号"}),(0,n.jsx)("input",{type:"text",value:o,onChange:e=>d(e.target.value),required:!0,className:"w-full rounded border border-gray-300 p-2"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"mb-1 block text-sm font-medium",children:"密码"}),(0,n.jsx)("input",{type:"password",value:i,onChange:e=>l(e.target.value),required:!0,className:"w-full rounded border border-gray-300 p-2"})]}),m&&(0,n.jsx)("div",{className:"rounded bg-red-50 p-3 text-sm text-red-700",children:m}),(0,n.jsx)("button",{type:"submit",disabled:u,className:"w-full rounded bg-indigo-600 px-4 py-2 font-medium text-white hover:bg-indigo-700 disabled:opacity-50",children:u?"处理中...":"确认授权"})]})]})})}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=4116)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
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]="90d95e06-1c7d-4468-a993-31728aa8a499",e._sentryDebugIdIdentifier="sentry-dbid-90d95e06-1c7d-4468-a993-31728aa8a499")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[977],{8166:function(e,n,t){Promise.resolve().then(t.bind(t,1261))},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}})},1261:function(e,n,t){"use strict";t.d(n,{default:function(){return i}});var r=t(2835),o=t(635),s=t(7473),a=t(4431);function i(){let e=(0,s.useParams)().id,[n,t]=(0,o.useState)([]),[i,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,a.O)(),"/matching/portraits/").concat(e,"/jobs"));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.slice(0,8)," 的推荐职位"]}),(0,r.jsx)("button",{onClick:l,disabled:i,children:i?"计算中...":"刷新匹配"}),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,a,i,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.jobCaseId," — 综合分 ",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===(a=e.scores)||void 0===a?void 0:a.location," | 薪酬 ",null===(i=e.scores)||void 0===i?void 0:i.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 a}});var r=t(529);function o(){return r.env.HUNTER_MATE_SERVER_URL||"http://localhost:34570"}let s=o();async function a(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=8166)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="051ab6e9-ae7d-4972-a6d8-3a1a9111d46b",e._sentryDebugIdIdentifier="sentry-dbid-051ab6e9-ae7d-4972-a6d8-3a1a9111d46b")}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 d}});var l=n(2835),a=n(635),r=n(5589),o=n(4431),s=n(8448);let i=(0,o.O)();function d(){var e,t,n,d,u;let[c,f]=(0,a.useState)({}),[h,b]=(0,a.useState)(0),[m,v]=(0,a.useState)(null),[g,y]=(0,a.useState)(""),p=(0,a.useCallback)(async()=>{var e,t,n,l,a,r,i;let[d,u,c,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(!!(d||u||c||h||m)),f({talent:null!==(t=null==d?void 0:d.total)&&void 0!==t?t:0,job:null!==(n=null==u?void 0:u.total)&&void 0!==n?n:0,company:null!==(l=null==c?void 0:c.total)&&void 0!==l?l:0,parseLog:null!==(a=null==h?void 0:h.total)&&void 0!==a?a:0,recording:null!==(r=null==m?void 0:null===(e=m.sessions)||void 0===e?void 0:e.length)&&void 0!==r?r:0}),b(null!==(i=null==h?void 0:h.abnormal)&&void 0!==i?i:0),y((0,s.d3)(new Date().toISOString()))},[]);(0,a.useEffect)(()=>{p()},[p]);let x=[{key:"talent",label:"人才",href:"/talents",count:null!==(e=c.talent)&&void 0!==e?e:0},{key:"job",label:"职位",href:"/jobs",count:null!==(t=c.job)&&void 0!==t?t:0},{key:"company",label:"公司",href:"/companies",count:null!==(n=c.company)&&void 0!==n?n:0},{key:"parseLog",label:"解析日志",href:"/parselog",count:null!==(d=c.parseLog)&&void 0!==d?d:0,abnormal:h},{key:"recording",label:"录制会话",href:"/recordings",count:null!==(u=c.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)(r.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 a},r:function(){return o}});var l=n(529);function a(){return l.env.HUNTER_MATE_SERVER_URL||"http://localhost:34570"}let r=a();async function o(e,t){try{let n=await fetch("".concat(r).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 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0b60761a-5fad-42c9-9e45-2ed22927ed29",e._sentryDebugIdIdentifier="sentry-dbid-0b60761a-5fad-42c9-9e45-2ed22927ed29")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[325],{1765:function(e,t,n){Promise.resolve().then(n.bind(n,4492))},7473:function(e,t,n){"use strict";var r=n(8321);n.o(r,"useParams")&&n.d(t,{useParams:function(){return r.useParams}}),n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},4492:function(e,t,n){"use strict";n.d(t,{default:function(){return o}});var r=n(2835),a=n(635),s=n(7473),u=n(4431);function o(){let e=(0,s.useParams)().id,[t,n]=(0,a.useState)(null),[o,c]=(0,a.useState)(!1),[i,d]=(0,a.useState)(!1),[l,f]=(0,a.useState)(null);async function h(){c(!0),f(null);try{let t=await fetch("".concat((0,u.O)(),"/parsing/snapshots/").concat(e,"/agent-prompt"));if(!t.ok)throw Error("HTTP ".concat(t.status));let r=await t.json();n(r.prompt)}catch(e){f(e.message)}finally{c(!1)}}async function p(){t&&(await navigator.clipboard.writeText(t),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:o,children:o?"加载中...":"生成 Prompt"}),l&&(0,r.jsx)("div",{style:{color:"red",marginTop:12},children:l}),t&&(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:t})]})]})}},4431:function(e,t,n){"use strict";n.d(t,{O:function(){return a},r:function(){return u}});var r=n(529);function a(){return r.env.HUNTER_MATE_SERVER_URL||"http://localhost:34570"}let s=a();async function u(e,t){try{let n=await fetch("".concat(s).concat(e),{cache:"no-store",...t});if(!n.ok)return null;return await n.json()}catch(e){return null}}}},function(e){e.O(0,[400,935,744],function(){return e(e.s=1765)}),_N_E=e.O()}]);