hunter-mate 0.1.15 → 0.1.17

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 (654) hide show
  1. package/dist/assets/extension/background/service-worker.20261001153649.js +4618 -0
  2. package/dist/assets/extension/background/service-worker.js +536 -99
  3. package/dist/assets/extension/build-info.json +1 -1
  4. package/dist/assets/extension/content/index.js +2 -2
  5. package/dist/assets/extension/icons/icon128.png +0 -0
  6. package/dist/assets/extension/manifest.json +7 -3
  7. package/dist/assets/extension/offscreen/offscreen.html +1 -1
  8. package/dist/assets/extension/offscreen/offscreen.js +269 -117
  9. package/dist/assets/extension/package.json +2 -1
  10. package/dist/assets/extension/sidepanel/index.css +1 -1
  11. package/dist/assets/extension/sidepanel/index.html +1 -1
  12. package/dist/assets/extension/sidepanel/index.js +27 -10
  13. package/dist/assets/server/chunks/chunk-EKKMDS42.mjs +26 -0
  14. package/dist/assets/server/chunks/chunk-GNM26E3H.mjs +54 -0
  15. package/dist/assets/server/chunks/chunk-IXYSL3NT.mjs +567 -0
  16. package/dist/assets/server/chunks/chunk-SAJB6JRK.mjs +14421 -0
  17. package/dist/assets/server/chunks/chunk-U7FVFSKP.mjs +1565 -0
  18. package/dist/assets/server/chunks/esm-4U746B76.mjs +29 -0
  19. package/dist/assets/server/chunks/getMachineId-bsd-L5TFP6QC.mjs +46 -0
  20. package/dist/assets/server/chunks/getMachineId-darwin-OY4E7LEK.mjs +45 -0
  21. package/dist/assets/server/chunks/getMachineId-linux-NSVVMJTW.mjs +39 -0
  22. package/dist/assets/server/chunks/getMachineId-unsupported-WBPZVDKV.mjs +29 -0
  23. package/dist/assets/server/chunks/getMachineId-win-LGO5ETVN.mjs +48 -0
  24. package/dist/assets/server/chunks/script-rule-ANR2J7E6.mjs +14 -0
  25. package/dist/assets/server/main.mjs +302490 -0
  26. package/dist/index.js +72986 -174
  27. package/dist/postinstall.js +221 -27
  28. package/dist/watchdog.js +324 -233
  29. package/dist/web/dist/404.html +1 -1
  30. package/dist/web/dist/_next/static/chunks/170-b66b6f731381943e.js +1 -0
  31. package/dist/web/dist/_next/static/chunks/{589-d632233641f35681.js → 589-5e99e548a0ee6bac.js} +1 -1
  32. package/dist/web/dist/_next/static/chunks/686-ade57c57a1737818.js +1 -0
  33. package/dist/web/dist/_next/static/chunks/{935-99f57b7d4151d9e7.js → 935-bb4adb3868af4cd4.js} +2 -2
  34. package/dist/web/dist/_next/static/chunks/{a7067448-96dd4b8457c447e8.js → a7067448-d3882c7e74c162bf.js} +1 -1
  35. package/dist/web/dist/_next/static/chunks/app/_not-found/{page-fdf1a13a7656886a.js → page-cf5ab201496f0914.js} +1 -1
  36. package/dist/web/dist/_next/static/chunks/app/admin/data/page-37e01dad70306bf3.js +1 -0
  37. package/dist/web/dist/_next/static/chunks/app/auth/verify/page-38fa28a48f76defa.js +1 -0
  38. package/dist/web/dist/_next/static/chunks/app/companies/page-985002eea5b295d0.js +1 -0
  39. package/dist/web/dist/_next/static/chunks/app/company/admin/page-8c7ecc92bef09e92.js +1 -0
  40. package/dist/web/dist/_next/static/chunks/app/entity/{page-250f8a9b6d91ab19.js → page-dc9664fb628e2d08.js} +1 -1
  41. package/dist/web/dist/_next/static/chunks/app/jobs/page-e39b3e25f0a81254.js +1 -0
  42. package/dist/web/dist/_next/static/chunks/app/layout-d094dc654772bf32.js +1 -0
  43. package/dist/web/dist/_next/static/chunks/app/logs/{page-d478031d49f7ba00.js → page-ccc6bb863cf77e56.js} +1 -1
  44. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/page-936f6190c968d20b.js +1 -0
  45. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-ea44a2236bd53cae.js +1 -0
  46. package/dist/web/dist/_next/static/chunks/app/page-41d8e008a9411221.js +1 -0
  47. package/dist/web/dist/_next/static/chunks/app/parselog/page-3f756bbd580f337e.js +1 -0
  48. package/dist/web/dist/_next/static/chunks/app/recordings/page-ffd507b12e67f2db.js +1 -0
  49. package/dist/web/dist/_next/static/chunks/app/resource-usage/page-3b8bd27536a7889a.js +1 -0
  50. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-c89b32aa2ef509f5.js +1 -0
  51. package/dist/web/dist/_next/static/chunks/app/talents/page-8e0b4072df138fa3.js +1 -0
  52. package/dist/web/dist/_next/static/chunks/{main-app-74b80a6877b21dfc.js → main-app-d053d37cc3b76ace.js} +1 -1
  53. package/dist/web/dist/_next/static/chunks/{main-5a4e0cd75dd7f04b.js → main-ead3ac50aa4bc931.js} +1 -1
  54. package/dist/web/dist/_next/static/chunks/pages/{_app-638dc63058a49a9c.js → _app-e11d02a41d9f3cb9.js} +2 -2
  55. package/dist/web/dist/_next/static/chunks/webpack-cf21e951181fd345.js +1 -0
  56. package/dist/web/dist/_next/static/css/1dd88e02ef1af7b9.css +3 -0
  57. package/dist/web/dist/admin/data.html +1 -0
  58. package/dist/web/dist/admin/data.txt +7 -0
  59. package/dist/web/dist/auth/verify.html +1 -1
  60. package/dist/web/dist/auth/verify.txt +3 -3
  61. package/dist/web/dist/companies.html +1 -1
  62. package/dist/web/dist/companies.txt +3 -3
  63. package/dist/web/dist/company/admin.html +1 -0
  64. package/dist/web/dist/company/admin.txt +7 -0
  65. package/dist/web/dist/entity.html +1 -1
  66. package/dist/web/dist/entity.txt +3 -3
  67. package/dist/web/dist/index.html +1 -1
  68. package/dist/web/dist/index.txt +3 -3
  69. package/dist/web/dist/jobs.html +1 -1
  70. package/dist/web/dist/jobs.txt +7 -6
  71. package/dist/web/dist/logs.html +1 -1
  72. package/dist/web/dist/logs.txt +3 -3
  73. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -1
  74. package/dist/web/dist/matching/jobs/placeholder/talents.txt +3 -3
  75. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -1
  76. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +3 -3
  77. package/dist/web/dist/parselog.html +1 -1
  78. package/dist/web/dist/parselog.txt +3 -3
  79. package/dist/web/dist/recordings.html +1 -1
  80. package/dist/web/dist/recordings.txt +3 -3
  81. package/dist/web/dist/resource-usage.html +1 -0
  82. package/dist/web/dist/resource-usage.txt +8 -0
  83. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -1
  84. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +3 -3
  85. package/dist/web/dist/talents.html +1 -1
  86. package/dist/web/dist/talents.txt +3 -3
  87. package/package.json +18 -15
  88. package/dist/assets/server/agent-session/agent-session.controller.d.ts +0 -32
  89. package/dist/assets/server/agent-session/agent-session.controller.js +0 -83
  90. package/dist/assets/server/agent-session/agent-session.controller.js.map +0 -1
  91. package/dist/assets/server/agent-session/agent-session.guard.d.ts +0 -4
  92. package/dist/assets/server/agent-session/agent-session.guard.js +0 -32
  93. package/dist/assets/server/agent-session/agent-session.guard.js.map +0 -1
  94. package/dist/assets/server/agent-session/agent-session.module.d.ts +0 -2
  95. package/dist/assets/server/agent-session/agent-session.module.js +0 -28
  96. package/dist/assets/server/agent-session/agent-session.module.js.map +0 -1
  97. package/dist/assets/server/agent-session/agent-session.service.d.ts +0 -54
  98. package/dist/assets/server/agent-session/agent-session.service.js +0 -431
  99. package/dist/assets/server/agent-session/agent-session.service.js.map +0 -1
  100. package/dist/assets/server/agent-session/agent-session.types.d.ts +0 -56
  101. package/dist/assets/server/agent-session/agent-session.types.js +0 -3
  102. package/dist/assets/server/agent-session/agent-session.types.js.map +0 -1
  103. package/dist/assets/server/agent-session/entities/agent-event.entity.d.ts +0 -12
  104. package/dist/assets/server/agent-session/entities/agent-event.entity.js +0 -73
  105. package/dist/assets/server/agent-session/entities/agent-event.entity.js.map +0 -1
  106. package/dist/assets/server/agent-session/entities/agent-message.entity.d.ts +0 -13
  107. package/dist/assets/server/agent-session/entities/agent-message.entity.js +0 -77
  108. package/dist/assets/server/agent-session/entities/agent-message.entity.js.map +0 -1
  109. package/dist/assets/server/agent-session/entities/agent-session.entity.d.ts +0 -14
  110. package/dist/assets/server/agent-session/entities/agent-session.entity.js +0 -83
  111. package/dist/assets/server/agent-session/entities/agent-session.entity.js.map +0 -1
  112. package/dist/assets/server/app.module.d.ts +0 -4
  113. package/dist/assets/server/app.module.js +0 -141
  114. package/dist/assets/server/app.module.js.map +0 -1
  115. package/dist/assets/server/auth/auth.controller.d.ts +0 -43
  116. package/dist/assets/server/auth/auth.controller.js +0 -127
  117. package/dist/assets/server/auth/auth.controller.js.map +0 -1
  118. package/dist/assets/server/auth/auth.middleware.d.ts +0 -5
  119. package/dist/assets/server/auth/auth.middleware.js +0 -42
  120. package/dist/assets/server/auth/auth.middleware.js.map +0 -1
  121. package/dist/assets/server/auth/auth.module.d.ts +0 -2
  122. package/dist/assets/server/auth/auth.module.js +0 -27
  123. package/dist/assets/server/auth/auth.module.js.map +0 -1
  124. package/dist/assets/server/auth/auth.service.d.ts +0 -58
  125. package/dist/assets/server/auth/auth.service.js +0 -303
  126. package/dist/assets/server/auth/auth.service.js.map +0 -1
  127. package/dist/assets/server/auth/auth.types.d.ts +0 -28
  128. package/dist/assets/server/auth/auth.types.js +0 -3
  129. package/dist/assets/server/auth/auth.types.js.map +0 -1
  130. package/dist/assets/server/auth/saas-token.entity.d.ts +0 -7
  131. package/dist/assets/server/auth/saas-token.entity.js +0 -46
  132. package/dist/assets/server/auth/saas-token.entity.js.map +0 -1
  133. package/dist/assets/server/build-info.json +0 -4
  134. package/dist/assets/server/common/common.module.d.ts +0 -2
  135. package/dist/assets/server/common/common.module.js +0 -22
  136. package/dist/assets/server/common/common.module.js.map +0 -1
  137. package/dist/assets/server/common/crypto.service.d.ts +0 -11
  138. package/dist/assets/server/common/crypto.service.js +0 -73
  139. package/dist/assets/server/common/crypto.service.js.map +0 -1
  140. package/dist/assets/server/communication/communication-record.entity.d.ts +0 -15
  141. package/dist/assets/server/communication/communication-record.entity.js +0 -80
  142. package/dist/assets/server/communication/communication-record.entity.js.map +0 -1
  143. package/dist/assets/server/communication/communication.controller.d.ts +0 -12
  144. package/dist/assets/server/communication/communication.controller.js +0 -61
  145. package/dist/assets/server/communication/communication.controller.js.map +0 -1
  146. package/dist/assets/server/communication/communication.module.d.ts +0 -2
  147. package/dist/assets/server/communication/communication.module.js +0 -25
  148. package/dist/assets/server/communication/communication.module.js.map +0 -1
  149. package/dist/assets/server/communication/communication.service.d.ts +0 -23
  150. package/dist/assets/server/communication/communication.service.js +0 -51
  151. package/dist/assets/server/communication/communication.service.js.map +0 -1
  152. package/dist/assets/server/customer/customer.controller.d.ts +0 -18
  153. package/dist/assets/server/customer/customer.controller.js +0 -81
  154. package/dist/assets/server/customer/customer.controller.js.map +0 -1
  155. package/dist/assets/server/customer/customer.entity.d.ts +0 -17
  156. package/dist/assets/server/customer/customer.entity.js +0 -82
  157. package/dist/assets/server/customer/customer.entity.js.map +0 -1
  158. package/dist/assets/server/customer/customer.module.d.ts +0 -2
  159. package/dist/assets/server/customer/customer.module.js +0 -28
  160. package/dist/assets/server/customer/customer.module.js.map +0 -1
  161. package/dist/assets/server/customer/customer.service.d.ts +0 -36
  162. package/dist/assets/server/customer/customer.service.js +0 -200
  163. package/dist/assets/server/customer/customer.service.js.map +0 -1
  164. package/dist/assets/server/datasync/datasync.module.d.ts +0 -2
  165. package/dist/assets/server/datasync/datasync.module.js +0 -26
  166. package/dist/assets/server/datasync/datasync.module.js.map +0 -1
  167. package/dist/assets/server/datasync/datasync.service.d.ts +0 -50
  168. package/dist/assets/server/datasync/datasync.service.js +0 -389
  169. package/dist/assets/server/datasync/datasync.service.js.map +0 -1
  170. package/dist/assets/server/datasync/entities/sync-conflict.entity.d.ts +0 -10
  171. package/dist/assets/server/datasync/entities/sync-conflict.entity.js +0 -61
  172. package/dist/assets/server/datasync/entities/sync-conflict.entity.js.map +0 -1
  173. package/dist/assets/server/datasync/entities/sync-cursor.entity.d.ts +0 -9
  174. package/dist/assets/server/datasync/entities/sync-cursor.entity.js +0 -56
  175. package/dist/assets/server/datasync/entities/sync-cursor.entity.js.map +0 -1
  176. package/dist/assets/server/datasync/registry.d.ts +0 -8
  177. package/dist/assets/server/datasync/registry.js +0 -55
  178. package/dist/assets/server/datasync/registry.js.map +0 -1
  179. package/dist/assets/server/db/schema-validator.service.d.ts +0 -27
  180. package/dist/assets/server/db/schema-validator.service.js +0 -138
  181. package/dist/assets/server/db/schema-validator.service.js.map +0 -1
  182. package/dist/assets/server/db/schema-version.entity.d.ts +0 -5
  183. package/dist/assets/server/db/schema-version.entity.js +0 -35
  184. package/dist/assets/server/db/schema-version.entity.js.map +0 -1
  185. package/dist/assets/server/db/sqlite.module.d.ts +0 -3
  186. package/dist/assets/server/db/sqlite.module.js +0 -99
  187. package/dist/assets/server/db/sqlite.module.js.map +0 -1
  188. package/dist/assets/server/devops/devops-sink-init.d.ts +0 -10
  189. package/dist/assets/server/devops/devops-sink-init.js +0 -96
  190. package/dist/assets/server/devops/devops-sink-init.js.map +0 -1
  191. package/dist/assets/server/devops/devops-sink-init.spec.d.ts +0 -1
  192. package/dist/assets/server/devops/devops-sink-init.spec.js +0 -71
  193. package/dist/assets/server/devops/devops-sink-init.spec.js.map +0 -1
  194. package/dist/assets/server/devops/devops-sink.module.d.ts +0 -2
  195. package/dist/assets/server/devops/devops-sink.module.js +0 -22
  196. package/dist/assets/server/devops/devops-sink.module.js.map +0 -1
  197. package/dist/assets/server/doctor/doctor.controller.d.ts +0 -13
  198. package/dist/assets/server/doctor/doctor.controller.js +0 -62
  199. package/dist/assets/server/doctor/doctor.controller.js.map +0 -1
  200. package/dist/assets/server/doctor/doctor.module.d.ts +0 -2
  201. package/dist/assets/server/doctor/doctor.module.js +0 -27
  202. package/dist/assets/server/doctor/doctor.module.js.map +0 -1
  203. package/dist/assets/server/doctor/doctor.service.d.ts +0 -15
  204. package/dist/assets/server/doctor/doctor.service.js +0 -209
  205. package/dist/assets/server/doctor/doctor.service.js.map +0 -1
  206. package/dist/assets/server/doctor/doctor.types.d.ts +0 -46
  207. package/dist/assets/server/doctor/doctor.types.js +0 -3
  208. package/dist/assets/server/doctor/doctor.types.js.map +0 -1
  209. package/dist/assets/server/extension/extension-control.controller.d.ts +0 -86
  210. package/dist/assets/server/extension/extension-control.controller.js +0 -229
  211. package/dist/assets/server/extension/extension-control.controller.js.map +0 -1
  212. package/dist/assets/server/extension/extension-control.service.d.ts +0 -59
  213. package/dist/assets/server/extension/extension-control.service.js +0 -275
  214. package/dist/assets/server/extension/extension-control.service.js.map +0 -1
  215. package/dist/assets/server/extension/extension-core.module.d.ts +0 -2
  216. package/dist/assets/server/extension/extension-core.module.js +0 -21
  217. package/dist/assets/server/extension/extension-core.module.js.map +0 -1
  218. package/dist/assets/server/extension/extension-version.controller.d.ts +0 -6
  219. package/dist/assets/server/extension/extension-version.controller.js +0 -41
  220. package/dist/assets/server/extension/extension-version.controller.js.map +0 -1
  221. package/dist/assets/server/extension/extension.module.d.ts +0 -2
  222. package/dist/assets/server/extension/extension.module.js +0 -26
  223. package/dist/assets/server/extension/extension.module.js.map +0 -1
  224. package/dist/assets/server/extraction/adapter.service.d.ts +0 -58
  225. package/dist/assets/server/extraction/adapter.service.js +0 -396
  226. package/dist/assets/server/extraction/adapter.service.js.map +0 -1
  227. package/dist/assets/server/extraction/anomaly-report.service.d.ts +0 -12
  228. package/dist/assets/server/extraction/anomaly-report.service.js +0 -81
  229. package/dist/assets/server/extraction/anomaly-report.service.js.map +0 -1
  230. package/dist/assets/server/extraction/entities/adapter-rule.entity.d.ts +0 -15
  231. package/dist/assets/server/extraction/entities/adapter-rule.entity.js +0 -81
  232. package/dist/assets/server/extraction/entities/adapter-rule.entity.js.map +0 -1
  233. package/dist/assets/server/extraction/entities/company-profile.entity.d.ts +0 -14
  234. package/dist/assets/server/extraction/entities/company-profile.entity.js +0 -81
  235. package/dist/assets/server/extraction/entities/company-profile.entity.js.map +0 -1
  236. package/dist/assets/server/extraction/entities/job-posting.entity.d.ts +0 -15
  237. package/dist/assets/server/extraction/entities/job-posting.entity.js +0 -86
  238. package/dist/assets/server/extraction/entities/job-posting.entity.js.map +0 -1
  239. package/dist/assets/server/extraction/entities/parse-log.entity.d.ts +0 -18
  240. package/dist/assets/server/extraction/entities/parse-log.entity.js +0 -102
  241. package/dist/assets/server/extraction/entities/parse-log.entity.js.map +0 -1
  242. package/dist/assets/server/extraction/entities/talent-profile.entity.d.ts +0 -15
  243. package/dist/assets/server/extraction/entities/talent-profile.entity.js +0 -86
  244. package/dist/assets/server/extraction/entities/talent-profile.entity.js.map +0 -1
  245. package/dist/assets/server/extraction/extraction-entity.controller.d.ts +0 -156
  246. package/dist/assets/server/extraction/extraction-entity.controller.js +0 -528
  247. package/dist/assets/server/extraction/extraction-entity.controller.js.map +0 -1
  248. package/dist/assets/server/extraction/extraction-rule.controller.d.ts +0 -7
  249. package/dist/assets/server/extraction/extraction-rule.controller.js +0 -48
  250. package/dist/assets/server/extraction/extraction-rule.controller.js.map +0 -1
  251. package/dist/assets/server/extraction/extraction-rule.entity.d.ts +0 -15
  252. package/dist/assets/server/extraction/extraction-rule.entity.js +0 -80
  253. package/dist/assets/server/extraction/extraction-rule.entity.js.map +0 -1
  254. package/dist/assets/server/extraction/extraction-rule.service.d.ts +0 -24
  255. package/dist/assets/server/extraction/extraction-rule.service.js +0 -89
  256. package/dist/assets/server/extraction/extraction-rule.service.js.map +0 -1
  257. package/dist/assets/server/extraction/extraction.module.d.ts +0 -2
  258. package/dist/assets/server/extraction/extraction.module.js +0 -63
  259. package/dist/assets/server/extraction/extraction.module.js.map +0 -1
  260. package/dist/assets/server/extraction/extraction.service.d.ts +0 -81
  261. package/dist/assets/server/extraction/extraction.service.js +0 -488
  262. package/dist/assets/server/extraction/extraction.service.js.map +0 -1
  263. package/dist/assets/server/extraction/harness-overlay.service.d.ts +0 -41
  264. package/dist/assets/server/extraction/harness-overlay.service.js +0 -319
  265. package/dist/assets/server/extraction/harness-overlay.service.js.map +0 -1
  266. package/dist/assets/server/extraction/liepin-extractor.d.ts +0 -1
  267. package/dist/assets/server/extraction/liepin-extractor.js +0 -172
  268. package/dist/assets/server/extraction/liepin-extractor.js.map +0 -1
  269. package/dist/assets/server/extraction/linkedin-extractor.d.ts +0 -1
  270. package/dist/assets/server/extraction/linkedin-extractor.js +0 -244
  271. package/dist/assets/server/extraction/linkedin-extractor.js.map +0 -1
  272. package/dist/assets/server/extraction/rrweb-snapshot.utils.d.ts +0 -15
  273. package/dist/assets/server/extraction/rrweb-snapshot.utils.js +0 -48
  274. package/dist/assets/server/extraction/rrweb-snapshot.utils.js.map +0 -1
  275. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.d.ts +0 -1
  276. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js +0 -60
  277. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js.map +0 -1
  278. package/dist/assets/server/extraction/script-rule.d.ts +0 -14
  279. package/dist/assets/server/extraction/script-rule.js +0 -61
  280. package/dist/assets/server/extraction/script-rule.js.map +0 -1
  281. package/dist/assets/server/extraction/snapshot-analysis.service.d.ts +0 -23
  282. package/dist/assets/server/extraction/snapshot-analysis.service.js +0 -147
  283. package/dist/assets/server/extraction/snapshot-analysis.service.js.map +0 -1
  284. package/dist/assets/server/extraction/structured-data.d.ts +0 -7
  285. package/dist/assets/server/extraction/structured-data.js +0 -96
  286. package/dist/assets/server/extraction/structured-data.js.map +0 -1
  287. package/dist/assets/server/governance/action-audit.entity.d.ts +0 -12
  288. package/dist/assets/server/governance/action-audit.entity.js +0 -66
  289. package/dist/assets/server/governance/action-audit.entity.js.map +0 -1
  290. package/dist/assets/server/governance/governance.command-recorder.d.ts +0 -17
  291. package/dist/assets/server/governance/governance.command-recorder.js +0 -98
  292. package/dist/assets/server/governance/governance.command-recorder.js.map +0 -1
  293. package/dist/assets/server/governance/governance.controller.d.ts +0 -14
  294. package/dist/assets/server/governance/governance.controller.js +0 -77
  295. package/dist/assets/server/governance/governance.controller.js.map +0 -1
  296. package/dist/assets/server/governance/governance.ingester.d.ts +0 -21
  297. package/dist/assets/server/governance/governance.ingester.js +0 -117
  298. package/dist/assets/server/governance/governance.ingester.js.map +0 -1
  299. package/dist/assets/server/governance/governance.module.d.ts +0 -2
  300. package/dist/assets/server/governance/governance.module.js +0 -27
  301. package/dist/assets/server/governance/governance.module.js.map +0 -1
  302. package/dist/assets/server/governance/governance.service.d.ts +0 -122
  303. package/dist/assets/server/governance/governance.service.js +0 -398
  304. package/dist/assets/server/governance/governance.service.js.map +0 -1
  305. package/dist/assets/server/hcapi/hcapi.module.d.ts +0 -2
  306. package/dist/assets/server/hcapi/hcapi.module.js +0 -23
  307. package/dist/assets/server/hcapi/hcapi.module.js.map +0 -1
  308. package/dist/assets/server/hcapi/hcapi.service.d.ts +0 -28
  309. package/dist/assets/server/hcapi/hcapi.service.js +0 -81
  310. package/dist/assets/server/hcapi/hcapi.service.js.map +0 -1
  311. package/dist/assets/server/health/health.controller.d.ts +0 -19
  312. package/dist/assets/server/health/health.controller.js +0 -59
  313. package/dist/assets/server/health/health.controller.js.map +0 -1
  314. package/dist/assets/server/jobcase/jobcase.controller.d.ts +0 -13
  315. package/dist/assets/server/jobcase/jobcase.controller.js +0 -61
  316. package/dist/assets/server/jobcase/jobcase.controller.js.map +0 -1
  317. package/dist/assets/server/jobcase/jobcase.entity.d.ts +0 -14
  318. package/dist/assets/server/jobcase/jobcase.entity.js +0 -77
  319. package/dist/assets/server/jobcase/jobcase.entity.js.map +0 -1
  320. package/dist/assets/server/jobcase/jobcase.module.d.ts +0 -2
  321. package/dist/assets/server/jobcase/jobcase.module.js +0 -26
  322. package/dist/assets/server/jobcase/jobcase.module.js.map +0 -1
  323. package/dist/assets/server/jobcase/jobcase.service.d.ts +0 -23
  324. package/dist/assets/server/jobcase/jobcase.service.js +0 -57
  325. package/dist/assets/server/jobcase/jobcase.service.js.map +0 -1
  326. package/dist/assets/server/llm/llm.module.d.ts +0 -2
  327. package/dist/assets/server/llm/llm.module.js +0 -21
  328. package/dist/assets/server/llm/llm.module.js.map +0 -1
  329. package/dist/assets/server/llm/llm.service.d.ts +0 -18
  330. package/dist/assets/server/llm/llm.service.js +0 -65
  331. package/dist/assets/server/llm/llm.service.js.map +0 -1
  332. package/dist/assets/server/main.d.ts +0 -1
  333. package/dist/assets/server/main.js +0 -31
  334. package/dist/assets/server/main.js.map +0 -1
  335. package/dist/assets/server/matching/matching.controller.d.ts +0 -16
  336. package/dist/assets/server/matching/matching.controller.js +0 -97
  337. package/dist/assets/server/matching/matching.controller.js.map +0 -1
  338. package/dist/assets/server/matching/matching.module.d.ts +0 -2
  339. package/dist/assets/server/matching/matching.module.js +0 -36
  340. package/dist/assets/server/matching/matching.module.js.map +0 -1
  341. package/dist/assets/server/matching/matching.service.d.ts +0 -55
  342. package/dist/assets/server/matching/matching.service.js +0 -409
  343. package/dist/assets/server/matching/matching.service.js.map +0 -1
  344. package/dist/assets/server/package.json +0 -59
  345. package/dist/assets/server/parsed-resume/parsed-resume.controller.d.ts +0 -6
  346. package/dist/assets/server/parsed-resume/parsed-resume.controller.js +0 -42
  347. package/dist/assets/server/parsed-resume/parsed-resume.controller.js.map +0 -1
  348. package/dist/assets/server/parsed-resume/parsed-resume.entity.d.ts +0 -124
  349. package/dist/assets/server/parsed-resume/parsed-resume.entity.js +0 -72
  350. package/dist/assets/server/parsed-resume/parsed-resume.entity.js.map +0 -1
  351. package/dist/assets/server/parsed-resume/parsed-resume.module.d.ts +0 -2
  352. package/dist/assets/server/parsed-resume/parsed-resume.module.js +0 -26
  353. package/dist/assets/server/parsed-resume/parsed-resume.module.js.map +0 -1
  354. package/dist/assets/server/parsed-resume/parsed-resume.service.d.ts +0 -10
  355. package/dist/assets/server/parsed-resume/parsed-resume.service.js +0 -45
  356. package/dist/assets/server/parsed-resume/parsed-resume.service.js.map +0 -1
  357. package/dist/assets/server/parsing/parse-error-report.entity.d.ts +0 -11
  358. package/dist/assets/server/parsing/parse-error-report.entity.js +0 -66
  359. package/dist/assets/server/parsing/parse-error-report.entity.js.map +0 -1
  360. package/dist/assets/server/parsing/parsing.controller.d.ts +0 -19
  361. package/dist/assets/server/parsing/parsing.controller.js +0 -97
  362. package/dist/assets/server/parsing/parsing.controller.js.map +0 -1
  363. package/dist/assets/server/parsing/parsing.module.d.ts +0 -2
  364. package/dist/assets/server/parsing/parsing.module.js +0 -38
  365. package/dist/assets/server/parsing/parsing.module.js.map +0 -1
  366. package/dist/assets/server/parsing/parsing.service.d.ts +0 -38
  367. package/dist/assets/server/parsing/parsing.service.js +0 -263
  368. package/dist/assets/server/parsing/parsing.service.js.map +0 -1
  369. package/dist/assets/server/preference/preference.controller.d.ts +0 -14
  370. package/dist/assets/server/preference/preference.controller.js +0 -66
  371. package/dist/assets/server/preference/preference.controller.js.map +0 -1
  372. package/dist/assets/server/preference/preference.entity.d.ts +0 -13
  373. package/dist/assets/server/preference/preference.entity.js +0 -77
  374. package/dist/assets/server/preference/preference.entity.js.map +0 -1
  375. package/dist/assets/server/preference/preference.module.d.ts +0 -2
  376. package/dist/assets/server/preference/preference.module.js +0 -26
  377. package/dist/assets/server/preference/preference.module.js.map +0 -1
  378. package/dist/assets/server/preference/preference.service.d.ts +0 -33
  379. package/dist/assets/server/preference/preference.service.js +0 -122
  380. package/dist/assets/server/preference/preference.service.js.map +0 -1
  381. package/dist/assets/server/query/fields-meta.controller.d.ts +0 -28
  382. package/dist/assets/server/query/fields-meta.controller.js +0 -57
  383. package/dist/assets/server/query/fields-meta.controller.js.map +0 -1
  384. package/dist/assets/server/query/query-builder.controller.d.ts +0 -11
  385. package/dist/assets/server/query/query-builder.controller.js +0 -40
  386. package/dist/assets/server/query/query-builder.controller.js.map +0 -1
  387. package/dist/assets/server/query/query-builder.service.d.ts +0 -8
  388. package/dist/assets/server/query/query-builder.service.js +0 -41
  389. package/dist/assets/server/query/query-builder.service.js.map +0 -1
  390. package/dist/assets/server/query/query.module.d.ts +0 -2
  391. package/dist/assets/server/query/query.module.js +0 -23
  392. package/dist/assets/server/query/query.module.js.map +0 -1
  393. package/dist/assets/server/recording/entities/recording-event.entity.d.ts +0 -9
  394. package/dist/assets/server/recording/entities/recording-event.entity.js +0 -56
  395. package/dist/assets/server/recording/entities/recording-event.entity.js.map +0 -1
  396. package/dist/assets/server/recording/entities/recording-snapshot.entity.d.ts +0 -16
  397. package/dist/assets/server/recording/entities/recording-snapshot.entity.js +0 -91
  398. package/dist/assets/server/recording/entities/recording-snapshot.entity.js.map +0 -1
  399. package/dist/assets/server/recording/recording-event-bus.service.d.ts +0 -4
  400. package/dist/assets/server/recording/recording-event-bus.service.js +0 -25
  401. package/dist/assets/server/recording/recording-event-bus.service.js.map +0 -1
  402. package/dist/assets/server/recording/recording-event-queue.service.d.ts +0 -26
  403. package/dist/assets/server/recording/recording-event-queue.service.js +0 -115
  404. package/dist/assets/server/recording/recording-event-queue.service.js.map +0 -1
  405. package/dist/assets/server/recording/recording-retention.service.d.ts +0 -38
  406. package/dist/assets/server/recording/recording-retention.service.js +0 -174
  407. package/dist/assets/server/recording/recording-retention.service.js.map +0 -1
  408. package/dist/assets/server/recording/recording-snapshot.service.d.ts +0 -14
  409. package/dist/assets/server/recording/recording-snapshot.service.js +0 -85
  410. package/dist/assets/server/recording/recording-snapshot.service.js.map +0 -1
  411. package/dist/assets/server/recording/recording-snapshot.service.spec.d.ts +0 -1
  412. package/dist/assets/server/recording/recording-snapshot.service.spec.js +0 -65
  413. package/dist/assets/server/recording/recording-snapshot.service.spec.js.map +0 -1
  414. package/dist/assets/server/recording/recording.controller.d.ts +0 -74
  415. package/dist/assets/server/recording/recording.controller.js +0 -112
  416. package/dist/assets/server/recording/recording.controller.js.map +0 -1
  417. package/dist/assets/server/recording/recording.gateway.d.ts +0 -15
  418. package/dist/assets/server/recording/recording.gateway.js +0 -132
  419. package/dist/assets/server/recording/recording.gateway.js.map +0 -1
  420. package/dist/assets/server/recording/recording.module.d.ts +0 -2
  421. package/dist/assets/server/recording/recording.module.js +0 -50
  422. package/dist/assets/server/recording/recording.module.js.map +0 -1
  423. package/dist/assets/server/recording/recording.service.d.ts +0 -52
  424. package/dist/assets/server/recording/recording.service.js +0 -149
  425. package/dist/assets/server/recording/recording.service.js.map +0 -1
  426. package/dist/assets/server/remark/remark.controller.d.ts +0 -21
  427. package/dist/assets/server/remark/remark.controller.js +0 -50
  428. package/dist/assets/server/remark/remark.controller.js.map +0 -1
  429. package/dist/assets/server/remark/remark.entity.d.ts +0 -18
  430. package/dist/assets/server/remark/remark.entity.js +0 -67
  431. package/dist/assets/server/remark/remark.entity.js.map +0 -1
  432. package/dist/assets/server/remark/remark.module.d.ts +0 -2
  433. package/dist/assets/server/remark/remark.module.js +0 -26
  434. package/dist/assets/server/remark/remark.module.js.map +0 -1
  435. package/dist/assets/server/remark/remark.service.d.ts +0 -8
  436. package/dist/assets/server/remark/remark.service.js +0 -39
  437. package/dist/assets/server/remark/remark.service.js.map +0 -1
  438. package/dist/assets/server/report/report.controller.d.ts +0 -18
  439. package/dist/assets/server/report/report.controller.js +0 -41
  440. package/dist/assets/server/report/report.controller.js.map +0 -1
  441. package/dist/assets/server/report/report.module.d.ts +0 -2
  442. package/dist/assets/server/report/report.module.js +0 -24
  443. package/dist/assets/server/report/report.module.js.map +0 -1
  444. package/dist/assets/server/report/report.service.d.ts +0 -23
  445. package/dist/assets/server/report/report.service.js +0 -54
  446. package/dist/assets/server/report/report.service.js.map +0 -1
  447. package/dist/assets/server/rules/rules.controller.d.ts +0 -6
  448. package/dist/assets/server/rules/rules.controller.js +0 -35
  449. package/dist/assets/server/rules/rules.controller.js.map +0 -1
  450. package/dist/assets/server/rules/rules.module.d.ts +0 -2
  451. package/dist/assets/server/rules/rules.module.js +0 -23
  452. package/dist/assets/server/rules/rules.module.js.map +0 -1
  453. package/dist/assets/server/rules/rules.service.d.ts +0 -10
  454. package/dist/assets/server/rules/rules.service.js +0 -26
  455. package/dist/assets/server/rules/rules.service.js.map +0 -1
  456. package/dist/assets/server/search/search.controller.d.ts +0 -6
  457. package/dist/assets/server/search/search.controller.js +0 -53
  458. package/dist/assets/server/search/search.controller.js.map +0 -1
  459. package/dist/assets/server/search/search.module.d.ts +0 -2
  460. package/dist/assets/server/search/search.module.js +0 -24
  461. package/dist/assets/server/search/search.module.js.map +0 -1
  462. package/dist/assets/server/search/search.service.d.ts +0 -6
  463. package/dist/assets/server/search/search.service.js +0 -46
  464. package/dist/assets/server/search/search.service.js.map +0 -1
  465. package/dist/assets/server/sentry.d.ts +0 -3
  466. package/dist/assets/server/sentry.js +0 -10
  467. package/dist/assets/server/sentry.js.map +0 -1
  468. package/dist/assets/server/site/entities/site-registry.entity.d.ts +0 -13
  469. package/dist/assets/server/site/entities/site-registry.entity.js +0 -76
  470. package/dist/assets/server/site/entities/site-registry.entity.js.map +0 -1
  471. package/dist/assets/server/site/site.controller.d.ts +0 -38
  472. package/dist/assets/server/site/site.controller.js +0 -60
  473. package/dist/assets/server/site/site.controller.js.map +0 -1
  474. package/dist/assets/server/site/site.module.d.ts +0 -2
  475. package/dist/assets/server/site/site.module.js +0 -26
  476. package/dist/assets/server/site/site.module.js.map +0 -1
  477. package/dist/assets/server/site/site.service.d.ts +0 -42
  478. package/dist/assets/server/site/site.service.js +0 -154
  479. package/dist/assets/server/site/site.service.js.map +0 -1
  480. package/dist/assets/server/snapshot/raw-snapshot.entity.d.ts +0 -35
  481. package/dist/assets/server/snapshot/raw-snapshot.entity.js +0 -62
  482. package/dist/assets/server/snapshot/raw-snapshot.entity.js.map +0 -1
  483. package/dist/assets/server/snapshot/snapshot.controller.d.ts +0 -18
  484. package/dist/assets/server/snapshot/snapshot.controller.js +0 -76
  485. package/dist/assets/server/snapshot/snapshot.controller.js.map +0 -1
  486. package/dist/assets/server/snapshot/snapshot.module.d.ts +0 -2
  487. package/dist/assets/server/snapshot/snapshot.module.js +0 -26
  488. package/dist/assets/server/snapshot/snapshot.module.js.map +0 -1
  489. package/dist/assets/server/snapshot/snapshot.service.d.ts +0 -10
  490. package/dist/assets/server/snapshot/snapshot.service.js +0 -48
  491. package/dist/assets/server/snapshot/snapshot.service.js.map +0 -1
  492. package/dist/assets/server/system/system.controller.d.ts +0 -40
  493. package/dist/assets/server/system/system.controller.js +0 -93
  494. package/dist/assets/server/system/system.controller.js.map +0 -1
  495. package/dist/assets/server/system/system.module.d.ts +0 -2
  496. package/dist/assets/server/system/system.module.js +0 -26
  497. package/dist/assets/server/system/system.module.js.map +0 -1
  498. package/dist/assets/server/system/system.service.d.ts +0 -87
  499. package/dist/assets/server/system/system.service.js +0 -434
  500. package/dist/assets/server/system/system.service.js.map +0 -1
  501. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.d.ts +0 -28
  502. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js +0 -186
  503. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js.map +0 -1
  504. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.d.ts +0 -30
  505. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js +0 -55
  506. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js.map +0 -1
  507. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.d.ts +0 -2
  508. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js +0 -25
  509. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js.map +0 -1
  510. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.d.ts +0 -8
  511. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js +0 -44
  512. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js.map +0 -1
  513. package/dist/assets/server/talent-job-match/talent-job-match.controller.d.ts +0 -6
  514. package/dist/assets/server/talent-job-match/talent-job-match.controller.js +0 -42
  515. package/dist/assets/server/talent-job-match/talent-job-match.controller.js.map +0 -1
  516. package/dist/assets/server/talent-job-match/talent-job-match.entity.d.ts +0 -33
  517. package/dist/assets/server/talent-job-match/talent-job-match.entity.js +0 -73
  518. package/dist/assets/server/talent-job-match/talent-job-match.entity.js.map +0 -1
  519. package/dist/assets/server/talent-job-match/talent-job-match.module.d.ts +0 -2
  520. package/dist/assets/server/talent-job-match/talent-job-match.module.js +0 -26
  521. package/dist/assets/server/talent-job-match/talent-job-match.module.js.map +0 -1
  522. package/dist/assets/server/talent-job-match/talent-job-match.service.d.ts +0 -9
  523. package/dist/assets/server/talent-job-match/talent-job-match.service.js +0 -42
  524. package/dist/assets/server/talent-job-match/talent-job-match.service.js.map +0 -1
  525. package/dist/assets/server/talent-portrait/portrait-merge.service.d.ts +0 -17
  526. package/dist/assets/server/talent-portrait/portrait-merge.service.js +0 -200
  527. package/dist/assets/server/talent-portrait/portrait-merge.service.js.map +0 -1
  528. package/dist/assets/server/talent-portrait/talent-portrait.controller.d.ts +0 -7
  529. package/dist/assets/server/talent-portrait/talent-portrait.controller.js +0 -52
  530. package/dist/assets/server/talent-portrait/talent-portrait.controller.js.map +0 -1
  531. package/dist/assets/server/talent-portrait/talent-portrait.entity.d.ts +0 -91
  532. package/dist/assets/server/talent-portrait/talent-portrait.entity.js +0 -71
  533. package/dist/assets/server/talent-portrait/talent-portrait.entity.js.map +0 -1
  534. package/dist/assets/server/talent-portrait/talent-portrait.module.d.ts +0 -2
  535. package/dist/assets/server/talent-portrait/talent-portrait.module.js +0 -27
  536. package/dist/assets/server/talent-portrait/talent-portrait.module.js.map +0 -1
  537. package/dist/assets/server/talent-portrait/talent-portrait.service.d.ts +0 -10
  538. package/dist/assets/server/talent-portrait/talent-portrait.service.js +0 -46
  539. package/dist/assets/server/talent-portrait/talent-portrait.service.js.map +0 -1
  540. package/dist/assets/server/telemetry/telemetry.module.d.ts +0 -2
  541. package/dist/assets/server/telemetry/telemetry.module.js +0 -24
  542. package/dist/assets/server/telemetry/telemetry.module.js.map +0 -1
  543. package/dist/assets/server/telemetry/telemetry.service.d.ts +0 -29
  544. package/dist/assets/server/telemetry/telemetry.service.js +0 -116
  545. package/dist/assets/server/telemetry/telemetry.service.js.map +0 -1
  546. package/dist/auto-doctor.d.ts +0 -8
  547. package/dist/auto-doctor.js +0 -34
  548. package/dist/bundled-assets.d.ts +0 -22
  549. package/dist/bundled-assets.js +0 -80
  550. package/dist/cache/db.d.ts +0 -7
  551. package/dist/cache/db.js +0 -61
  552. package/dist/commands/addons.d.ts +0 -4
  553. package/dist/commands/addons.js +0 -354
  554. package/dist/commands/cache.d.ts +0 -8
  555. package/dist/commands/cache.js +0 -59
  556. package/dist/commands/case.d.ts +0 -67
  557. package/dist/commands/case.js +0 -101
  558. package/dist/commands/config.d.ts +0 -17
  559. package/dist/commands/config.js +0 -30
  560. package/dist/commands/customer.d.ts +0 -25
  561. package/dist/commands/customer.js +0 -137
  562. package/dist/commands/doctor.d.ts +0 -63
  563. package/dist/commands/doctor.js +0 -666
  564. package/dist/commands/extension.d.ts +0 -5
  565. package/dist/commands/extension.js +0 -420
  566. package/dist/commands/extras.d.ts +0 -55
  567. package/dist/commands/extras.js +0 -456
  568. package/dist/commands/init.d.ts +0 -10
  569. package/dist/commands/init.js +0 -58
  570. package/dist/commands/install.d.ts +0 -14
  571. package/dist/commands/install.js +0 -77
  572. package/dist/commands/issue-env.d.ts +0 -23
  573. package/dist/commands/issue-env.js +0 -101
  574. package/dist/commands/job.d.ts +0 -13
  575. package/dist/commands/job.js +0 -131
  576. package/dist/commands/login.d.ts +0 -22
  577. package/dist/commands/login.js +0 -192
  578. package/dist/commands/logout.d.ts +0 -3
  579. package/dist/commands/logout.js +0 -12
  580. package/dist/commands/migrate.d.ts +0 -32
  581. package/dist/commands/migrate.js +0 -116
  582. package/dist/commands/note.d.ts +0 -3
  583. package/dist/commands/note.js +0 -75
  584. package/dist/commands/ops.d.ts +0 -6
  585. package/dist/commands/ops.js +0 -461
  586. package/dist/commands/preference.d.ts +0 -6
  587. package/dist/commands/preference.js +0 -80
  588. package/dist/commands/record.d.ts +0 -12
  589. package/dist/commands/record.js +0 -56
  590. package/dist/commands/report.d.ts +0 -7
  591. package/dist/commands/report.js +0 -48
  592. package/dist/commands/search.d.ts +0 -14
  593. package/dist/commands/search.js +0 -46
  594. package/dist/commands/server.d.ts +0 -35
  595. package/dist/commands/server.js +0 -471
  596. package/dist/commands/status.d.ts +0 -24
  597. package/dist/commands/status.js +0 -98
  598. package/dist/commands/update.d.ts +0 -8
  599. package/dist/commands/update.js +0 -125
  600. package/dist/config.d.ts +0 -67
  601. package/dist/config.js +0 -121
  602. package/dist/extension-sync.d.ts +0 -35
  603. package/dist/extension-sync.js +0 -159
  604. package/dist/i18n/index.d.ts +0 -7
  605. package/dist/i18n/index.js +0 -18
  606. package/dist/i18n/locales/en-US.json +0 -79
  607. package/dist/i18n/locales/zh-CN.json +0 -79
  608. package/dist/index.d.ts +0 -2
  609. package/dist/keychain.d.ts +0 -18
  610. package/dist/keychain.js +0 -109
  611. package/dist/logger.d.ts +0 -7
  612. package/dist/logger.js +0 -80
  613. package/dist/native-check.d.ts +0 -6
  614. package/dist/native-check.js +0 -30
  615. package/dist/postinstall.d.ts +0 -1
  616. package/dist/sentry.d.ts +0 -4
  617. package/dist/sentry.js +0 -6
  618. package/dist/updater.d.ts +0 -119
  619. package/dist/updater.js +0 -475
  620. package/dist/utils/artifact-checksum.d.ts +0 -4
  621. package/dist/utils/artifact-checksum.js +0 -40
  622. package/dist/utils/command-error.d.ts +0 -11
  623. package/dist/utils/command-error.js +0 -47
  624. package/dist/utils/link.d.ts +0 -18
  625. package/dist/utils/link.js +0 -83
  626. package/dist/utils/local-http.d.ts +0 -7
  627. package/dist/utils/local-http.js +0 -30
  628. package/dist/utils/proc.d.ts +0 -35
  629. package/dist/utils/proc.js +0 -81
  630. package/dist/utils/proxy-detect.d.ts +0 -20
  631. package/dist/utils/proxy-detect.js +0 -96
  632. package/dist/utils/script-path.d.ts +0 -5
  633. package/dist/utils/script-path.js +0 -27
  634. package/dist/utils/spawn.d.ts +0 -19
  635. package/dist/utils/spawn.js +0 -60
  636. package/dist/version.d.ts +0 -16
  637. package/dist/version.js +0 -388
  638. package/dist/watchdog.d.ts +0 -31
  639. package/dist/web/dist/_next/static/chunks/539-cd9d7c0ee78f8874.js +0 -1
  640. package/dist/web/dist/_next/static/chunks/app/auth/verify/page-f13c66b48f7cf13e.js +0 -1
  641. package/dist/web/dist/_next/static/chunks/app/companies/page-e38a69e1929d0953.js +0 -1
  642. package/dist/web/dist/_next/static/chunks/app/jobs/page-6a281776fec065f6.js +0 -1
  643. package/dist/web/dist/_next/static/chunks/app/layout-83e623e973c1693f.js +0 -1
  644. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/page-cdf1ed0971999f35.js +0 -1
  645. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-87f04f1d61b94cb2.js +0 -1
  646. package/dist/web/dist/_next/static/chunks/app/page-affa1ffde089f1dd.js +0 -1
  647. package/dist/web/dist/_next/static/chunks/app/parselog/page-31d3630d611649f7.js +0 -1
  648. package/dist/web/dist/_next/static/chunks/app/recordings/page-9cdefceb2bff613f.js +0 -1
  649. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-6996f7f221b1a7eb.js +0 -1
  650. package/dist/web/dist/_next/static/chunks/app/talents/page-30748338da20d7e0.js +0 -1
  651. package/dist/web/dist/_next/static/chunks/webpack-1784baecc6fdcf0b.js +0 -1
  652. package/dist/web/dist/_next/static/css/b7097b50a6497650.css +0 -3
  653. /package/dist/web/dist/_next/static/{hG-sO5oTR0EvAw6sU7EMO → L4ZJv0swR7OTsvB_PaAB4}/_buildManifest.js +0 -0
  654. /package/dist/web/dist/_next/static/{hG-sO5oTR0EvAw6sU7EMO → L4ZJv0swR7OTsvB_PaAB4}/_ssgManifest.js +0 -0
package/dist/version.js DELETED
@@ -1,388 +0,0 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { fileURLToPath } from 'node:url';
4
- import axios from 'axios';
5
- import chalk from 'chalk';
6
- import { loadConfig, resolveDataDir } from './config.js';
7
- import { runStop, runStart, tryReadPid, findServerRoot, probeServerHealth } from './commands/server.js';
8
- import { runReload } from './commands/extras.js';
9
- import { dirChecksum } from './utils/artifact-checksum.js';
10
- import { compareExtensionArtifacts, syncExtensionArtifacts } from './extension-sync.js';
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
13
- const ROOT = resolveDataDir;
14
- const PLUGINS_DIR = () => path.join(ROOT(), 'plugins');
15
- const EXTENSION_MANIFEST = () => path.join(ROOT(), 'extension', 'manifest.json');
16
- const EXTENSION_DIR = () => path.join(ROOT(), 'extension');
17
- const RUNTIME_FILE = () => path.join(ROOT(), 'runtime.json');
18
- const LAST_CHECK_FILE = () => path.join(ROOT(), '.last-consistency-check');
19
- // D5(R3 定案):extension reload 广播边沿触发 —— 同一 checksum 只广播一次。
20
- // 原逻辑只要 disk≠bootSnapshot 每次 CLI 调用都广播,dev 频繁构建态下
21
- // 每个命令都杀死在途长命令(linkedin search 分钟级编排反复横死)。
22
- const LAST_EXT_RELOAD_BROADCAST_FILE = () => path.join(ROOT(), '.last-ext-reload-broadcast');
23
- const CHECK_THROTTLE_MS = 60_000;
24
- // ---------------------------------------------------------------------------
25
- // 三层指纹工具(version + checksum + mtime/linked)— 与 chromepilot version-manager / server SystemService 算法完全等价
26
- // ---------------------------------------------------------------------------
27
- function readJson(file) {
28
- try {
29
- return JSON.parse(fs.readFileSync(file, 'utf-8'));
30
- }
31
- catch {
32
- return null;
33
- }
34
- }
35
- /** 递归目录 SHA-1(文件名+内容)+ 最新 mtime — 与 server SystemService.dirChecksum 字节等价 */
36
- function inspectArtifact(dir, versionSource) {
37
- if (!fs.existsSync(dir))
38
- return null;
39
- const { checksum, latestMtimeMs } = dirChecksum(dir);
40
- let linked = false;
41
- try {
42
- linked = fs.lstatSync(dir).isSymbolicLink();
43
- }
44
- catch { /* ignore */ }
45
- return {
46
- version: versionSource?.version ?? '0.0.0',
47
- checksum,
48
- latestMtimeMs,
49
- linked,
50
- rootDir: dir,
51
- };
52
- }
53
- function resolveLinked(extensionInstallDir, serverEntryPath) {
54
- function resolve(target) {
55
- if (!fs.existsSync(target))
56
- return { linked: false, source: null, target };
57
- try {
58
- if (fs.lstatSync(target).isSymbolicLink()) {
59
- return { linked: true, source: fs.realpathSync(target), target };
60
- }
61
- }
62
- catch { /* ignore */ }
63
- return { linked: false, source: null, target };
64
- }
65
- return {
66
- extension: resolve(extensionInstallDir),
67
- serverEntry: resolve(serverEntryPath),
68
- };
69
- }
70
- /** 扫描 CLI 侧(磁盘 SSOT)的 server + extension 两份三层指纹 */
71
- function computeLocalArtifacts(cliInstalled) {
72
- // Server 产物(dist 目录): findServerRoot 返回 packages/server 包根,dist 是其子目录
73
- let serverArtifact = null;
74
- const serverRoot = findServerRoot();
75
- if (serverRoot) {
76
- const distCandidates = [path.join(serverRoot, 'dist'), serverRoot];
77
- let serverDist = '';
78
- for (const c of distCandidates) {
79
- if (fs.existsSync(path.join(c, 'main.js')) || fs.existsSync(path.join(c, 'index.js'))) {
80
- serverDist = c;
81
- break;
82
- }
83
- }
84
- if (serverDist) {
85
- const pkg = readJson(path.join(serverRoot, 'package.json'));
86
- serverArtifact = inspectArtifact(serverDist, pkg ?? { version: cliInstalled.server ?? '0.0.0' });
87
- }
88
- }
89
- // Extension 产物(~/.hunter-mate/extension)
90
- const extManifest = readJson(EXTENSION_MANIFEST());
91
- const extensionArtifact = inspectArtifact(EXTENSION_DIR(), extManifest ?? { version: cliInstalled.extension ?? '0.0.0' });
92
- // Linked 判断
93
- const serverEntry = serverArtifact
94
- ? (fs.existsSync(path.join(serverArtifact.rootDir, 'main.js')) ? path.join(serverArtifact.rootDir, 'main.js') : path.join(serverArtifact.rootDir, 'index.js'))
95
- : __filename;
96
- const linked = resolveLinked(EXTENSION_DIR(), serverEntry);
97
- return { server: serverArtifact, extension: extensionArtifact, linked };
98
- }
99
- // ---------------------------------------------------------------------------
100
- // 磁盘版本读取(SSOT)
101
- // ---------------------------------------------------------------------------
102
- export function readInstalledVersions() {
103
- // CLI 自身: src/version.ts 与 dist/version.js 的上一级都是包根
104
- const cliPkg = readJson(path.join(__dirname, '..', 'package.json'));
105
- const cli = cliPkg?.version ?? '0.0.0';
106
- // Server: 定位 packages/server 包根(与 start 命令同一套候选逻辑)
107
- let server = null;
108
- const serverRoot = findServerRoot();
109
- if (serverRoot) {
110
- const pkg = readJson(path.join(serverRoot, 'package.json'));
111
- server = pkg?.version ?? null;
112
- }
113
- // 浏览器扩展(init/install 写入 ~/.hunter-mate/extension)
114
- const manifest = readJson(EXTENSION_MANIFEST());
115
- const extension = manifest?.version;
116
- // 插件
117
- const plugins = {};
118
- const dir = PLUGINS_DIR();
119
- if (fs.existsSync(dir)) {
120
- for (const name of fs.readdirSync(dir)) {
121
- const pkg = readJson(path.join(dir, name, 'package.json'));
122
- if (pkg?.version)
123
- plugins[name] = pkg.version;
124
- }
125
- }
126
- const base = { cli, server, extension, plugins };
127
- // 三层指纹(CLI 磁盘侧计算;对比时拿 live.bootArtifacts 比)
128
- base.artifacts = computeLocalArtifacts({ server, extension });
129
- return base;
130
- }
131
- export function readRuntimeStateFile() {
132
- return readJson(RUNTIME_FILE());
133
- }
134
- // ---------------------------------------------------------------------------
135
- // live 运行中版本(来自 server /system/versions)
136
- // ---------------------------------------------------------------------------
137
- export async function fetchLiveVersions(timeoutMs = 3000) {
138
- const config = loadConfig();
139
- try {
140
- const res = await axios.get(`${config.serverUrl}/system/versions`, {
141
- timeout: timeoutMs,
142
- proxy: false,
143
- });
144
- return res.data;
145
- }
146
- catch {
147
- return null;
148
- }
149
- }
150
- // ---------------------------------------------------------------------------
151
- // 一致性决策(纯函数,便于测试)— 三层指纹:version → checksum → linked_stale
152
- // ---------------------------------------------------------------------------
153
- export function decideConsistencyActions(installed, live) {
154
- const actions = {
155
- serverRestart: false,
156
- pluginsReload: [],
157
- extensionReload: false,
158
- };
159
- if (!live)
160
- return actions;
161
- const local = installed.artifacts ?? null;
162
- const boot = live.bootArtifacts ?? null;
163
- // ==================== server: 三层 ====================
164
- if (installed.server !== null &&
165
- live.server.version !== installed.server) {
166
- actions.serverRestart = true;
167
- actions.serverReason = `running=${live.server.version} disk=${installed.server} (version_mismatch)`;
168
- }
169
- else if (live.server.needsRestart) {
170
- actions.serverRestart = true;
171
- actions.serverReason = 'server self-check marked needsRestart';
172
- }
173
- else if (!actions.serverRestart &&
174
- local?.server?.checksum &&
175
- boot?.server?.checksum &&
176
- local.server.checksum !== boot.server.checksum) {
177
- actions.serverRestart = true;
178
- actions.serverReason = 'server 产物 checksum 与启动快照不一致(本地重新构建过)(checksum_mismatch)';
179
- }
180
- else if (!actions.serverRestart &&
181
- boot?.linked?.serverEntry.linked === true &&
182
- local?.server?.latestMtimeMs &&
183
- live.server.latestMtimeMs &&
184
- local.server.latestMtimeMs > live.server.latestMtimeMs) {
185
- actions.serverRestart = true;
186
- actions.serverReason = `server 软链模式下磁盘最新 mtime(${new Date(local.server.latestMtimeMs).toISOString()}) 新于启动快照(linked_stale)`;
187
- }
188
- // ==================== 插件: 磁盘版本 vs 已加载版本(保留单层逻辑) ====================
189
- const names = new Set([
190
- ...Object.keys(installed.plugins),
191
- ...Object.keys(live.plugins),
192
- ]);
193
- for (const name of names) {
194
- if (installed.plugins[name] !== live.plugins[name]) {
195
- actions.pluginsReload.push(name);
196
- }
197
- }
198
- // ==================== extension: 三层 ====================
199
- const extVerDiff = installed.extension
200
- && live.extensions.length > 0
201
- && live.extensions.some((e) => e.version !== installed.extension);
202
- const anyExtConnected = live.extensions.length > 0;
203
- if (extVerDiff) {
204
- actions.extensionReload = true;
205
- actions.extensionReason = `running extension versions=[${[...new Set(live.extensions.map((e) => e.version))].join('/')}] != disk=${installed.extension} (version_mismatch)`;
206
- }
207
- else if (!actions.extensionReload &&
208
- anyExtConnected &&
209
- local?.extension?.checksum &&
210
- boot?.extension?.checksum &&
211
- local.extension.checksum !== boot.extension.checksum) {
212
- actions.extensionReload = true;
213
- actions.extensionReason = 'extension 产物 checksum 与启动快照不一致(改了 manifest/TS/HTML 但未改 package.json 版本)(checksum_mismatch)';
214
- }
215
- else if (!actions.extensionReload &&
216
- anyExtConnected &&
217
- boot?.linked?.extension.linked === true &&
218
- local?.extension?.latestMtimeMs &&
219
- boot?.extension?.latestMtimeMs &&
220
- local.extension.latestMtimeMs > boot.extension.latestMtimeMs) {
221
- actions.extensionReload = true;
222
- actions.extensionReason = `extension 软链模式下磁盘最新 mtime(${new Date(local.extension.latestMtimeMs).toISOString()}) 新于启动快照(linked_stale)`;
223
- }
224
- return actions;
225
- }
226
- export async function ensureRuntimeConsistency(opts = {}) {
227
- const performed = [];
228
- const noOp = (reason) => ({
229
- checked: false,
230
- reason,
231
- actions: { serverRestart: false, pluginsReload: [], extensionReload: false },
232
- performed,
233
- });
234
- // 节流: 60s 内不重复检测(force 跳过)
235
- if (!opts.force && !shouldCheckNow())
236
- return noOp('throttled');
237
- // server 是否在跑的判定:
238
- // 1) CLI 管理的 pid 文件存活 → 走完整检测
239
- // 2) pid 缺失(用户手动 node dist/main.js 起的 / 旧版 CLI 起的)→
240
- // 本地地址做快速 HTTP 探测(ECONNREFUSED 即时返回,不拖慢命令);远程地址维持 pid 闸门
241
- let live = null;
242
- const config = loadConfig();
243
- const isLocal = /\/\/(localhost|127\.0\.0\.1|\[::1\])/i.test(config.serverUrl);
244
- if (tryReadPid()) {
245
- live = await fetchLiveVersions();
246
- }
247
- else if (isLocal) {
248
- live = await fetchLiveVersions(1200);
249
- }
250
- else {
251
- return noOp('server not running (no pid file)');
252
- }
253
- if (!live) {
254
- markChecked();
255
- return noOp('server not running');
256
- }
257
- const installed = readInstalledVersions();
258
- const actions = decideConsistencyActions(installed, live);
259
- // Issue #23:npm 升级 CLI 后 ~/.hunter-mate/extension 还是旧构建——
260
- // 上面的三层指纹比对的是"运行中扩展 vs ~/.hunter-mate 磁盘",二者同为旧版
261
- // 所以误判一致。这里以 CLI 包内置产物(dist/assets/extension)为上游 SSOT
262
- // 按 checksum 比对,不一致先同步产物,再按需补 reload 广播。
263
- const bundledCmp = compareExtensionArtifacts();
264
- if (bundledCmp.stale) {
265
- const sync = syncExtensionArtifacts();
266
- if (sync.synced) {
267
- performed.push(`extension artifacts synced: ${sync.fromVersion ?? '?'} → ${sync.toVersion ?? '?'}`
268
- + ` (copied=${sync.copied}, removed=${sync.removed}, reason=bundled_mismatch)`);
269
- // 磁盘刚被刷新,重新计算 installed 指纹,供下面 broadcast 的边沿触发判据用
270
- installed.artifacts = computeLocalArtifacts({
271
- server: installed.server,
272
- extension: sync.toVersion ?? installed.extension,
273
- });
274
- }
275
- else {
276
- performed.push(`extension artifacts sync SKIPPED: ${sync.reason}`);
277
- }
278
- if (live.extensions.length > 0 && !actions.extensionReload) {
279
- actions.extensionReload = true;
280
- actions.extensionReason = `CLI 内置扩展产物与 ~/.hunter-mate/extension 不一致`
281
- + `(bundled ${bundledCmp.sourceVersion} vs installed ${bundledCmp.targetVersion}),已先同步产物(bundled_mismatch)`;
282
- }
283
- }
284
- // 1) 插件热重载
285
- if (actions.pluginsReload.length) {
286
- try {
287
- await axios.post(`${config.serverUrl}/system/reload-plugins`, { reason: `cli-consistency: ${actions.pluginsReload.join(',')}` }, { timeout: 5000, proxy: false });
288
- performed.push(`plugins reloaded: ${actions.pluginsReload
289
- .map((n) => `${n} ${live.plugins[n] ?? '-'}→${installed.plugins[n] ?? '?'}`)
290
- .join(', ')}`);
291
- }
292
- catch (err) {
293
- performed.push(`plugins reload FAILED: ${err.message}`);
294
- }
295
- }
296
- // 2) server 重启(stop + start)
297
- if (actions.serverRestart) {
298
- try {
299
- const stopped = await runStop();
300
- // FID-093:runStop 在 /health 探活失败时走 red-line 不杀(进程可能还活着,
301
- // 只是探活被机器抖动打断)。此时绝不能盲启新实例——双 server 抢端口会
302
- // EADDRINUSE 崩溃循环(2026-09-10 23:13 实机复现)。停后复核:进程仍存活
303
- // 且 /health 恢复 → 视为重启完成(跳过 start);真死了才拉新。
304
- let stillUp = false;
305
- if (!stopped.stopped && stopped.pid) {
306
- const deadline = Date.now() + 10_000;
307
- while (Date.now() < deadline) {
308
- await new Promise((r) => setTimeout(r, 1000));
309
- if (await probeServerHealth(`${config.serverUrl}`)) {
310
- stillUp = true;
311
- break;
312
- }
313
- }
314
- }
315
- if (stillUp) {
316
- performed.push(`server restart skipped (${actions.serverReason}): runStop 因健康探活失败未杀旧进程,red-line 保护生效;复核期内 /health 已恢复,旧 server 仍在服务,拉起新实例会造成双实例`);
317
- }
318
- else {
319
- const r = await runStart({});
320
- performed.push(r.started
321
- ? `server restarted (${actions.serverReason}) — new pid=${r.pid}`
322
- : `server restart FAILED: ${r.msg}`);
323
- }
324
- }
325
- catch (err) {
326
- performed.push(`server restart FAILED: ${err.message}`);
327
- }
328
- }
329
- // 3) 浏览器扩展 reload 广播(D5: checksum 边沿触发,同值不重播)
330
- if (actions.extensionReload) {
331
- const currentChecksum = installed.artifacts?.extension?.checksum ?? '';
332
- let lastBroadcast = '';
333
- try {
334
- lastBroadcast = fs.readFileSync(LAST_EXT_RELOAD_BROADCAST_FILE(), 'utf8').trim();
335
- }
336
- catch {
337
- /* 首次 */
338
- }
339
- if (currentChecksum && lastBroadcast === currentChecksum) {
340
- performed.push(`extension reload skipped (checksum 已广播过, D5 边沿去重): ${actions.extensionReason}`);
341
- }
342
- else {
343
- try {
344
- const r = await runReload(3000);
345
- performed.push(`extension reload broadcast: ${actions.extensionReason ?? 'version mismatch'} — broadcast=${r.broadcast}, msg=${r.msg}`);
346
- if (currentChecksum) {
347
- try {
348
- fs.mkdirSync(ROOT(), { recursive: true });
349
- fs.writeFileSync(LAST_EXT_RELOAD_BROADCAST_FILE(), currentChecksum);
350
- }
351
- catch {
352
- /* 尽力 */
353
- }
354
- }
355
- }
356
- catch (e) {
357
- performed.push(`extension reload FAILED: ${e.message}. Tip: chrome://extensions → 点 HunterMate 卡片的刷新图标`);
358
- }
359
- }
360
- }
361
- markChecked();
362
- if (opts.verbose && performed.length) {
363
- for (const line of performed)
364
- console.log(chalk.gray(` [auto-update] ${line}`));
365
- }
366
- return { checked: true, actions, performed };
367
- }
368
- // ---------------------------------------------------------------------------
369
- // 节流
370
- // ---------------------------------------------------------------------------
371
- export function shouldCheckNow() {
372
- try {
373
- const stat = fs.statSync(LAST_CHECK_FILE());
374
- return Date.now() - stat.mtimeMs > CHECK_THROTTLE_MS;
375
- }
376
- catch {
377
- return true;
378
- }
379
- }
380
- function markChecked() {
381
- try {
382
- fs.mkdirSync(ROOT(), { recursive: true });
383
- fs.writeFileSync(LAST_CHECK_FILE(), String(Date.now()));
384
- }
385
- catch {
386
- /* 尽力 */
387
- }
388
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * server 活性探针(FID-057 #17-A3):子进程不退但假活(事件循环被拖死)时,
3
- * exit 监听永远等不到触发。探针定时 GET /health,连续失败达到阈值判定假活,
4
- * 由 watchdog kill 子进程走正常重启路径。
5
- */
6
- export declare class LivenessProbe {
7
- private readonly opts;
8
- private failCount;
9
- private timer;
10
- constructor(opts: {
11
- healthUrl: string;
12
- intervalMs: number;
13
- threshold: number;
14
- onFailure: (lastError: string) => void;
15
- /** 可注入的探测实现(测试用),默认 HTTP GET /health */
16
- check?: (url: string) => Promise<void>;
17
- });
18
- private doCheck;
19
- /** 立即探测一次并更新失败计数;达到阈值时回调 onFailure 并清零 */
20
- checkNow(): Promise<void>;
21
- start(): void;
22
- stop(): void;
23
- }
24
- /**
25
- * 原子占用 watchdog 单例锁(O_CREAT|O_EXCL,跨平台同语义)。
26
- * 背景:旧实现 tryReadPid + writePid 分两步(check-then-write 竞态),并发 auto-start
27
- * 曾产生 5+ 个常驻 watchdog,各自拉起 server 子进程抢同一端口/SQLite →
28
- * database is locked → 全体 exit(1) → 指数退避重启风暴(server-crash.log 8.5 万行)。
29
- * 持有者崩溃残留锁时按 mtime 判 stale 抢占(崩溃的 watchdog 不会自己清锁)。
30
- */
31
- export declare function acquireWatchdogLock(file: string, staleMs?: number): boolean;
@@ -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]="41908b8f-f55a-4a65-9b91-577c7fc48ad3",e._sentryDebugIdIdentifier="sentry-dbid-41908b8f-f55a-4a65-9b91-577c7fc48ad3")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[539],{5539:function(e,t,r){Promise.resolve().then(r.bind(r,8441))},7473:function(e,t,r){"use strict";var n=r(8321);r.o(n,"useParams")&&r.d(t,{useParams:function(){return n.useParams}}),r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},8441:function(e,t,r){"use strict";r.d(t,{EntityListPage:function(){return j}});var n=r(2835),s=r(635),a=r(7473),l=r(4431),c=r(7202),i=r(4518),o=r(3718),u=r(9036),d=r(8448);function x(e){let{value:t}=e;if(null===t)return(0,n.jsx)("span",{className:"italic text-gray-400",children:"null"});if(void 0===t)return(0,n.jsx)("span",{className:"italic text-gray-400",children:"undefined"});switch(typeof t){case"string":return(0,n.jsxs)("span",{className:"break-all text-red-700",children:['"',t,'"']});case"number":return(0,n.jsx)("span",{className:"text-emerald-700",children:String(t)});case"boolean":return(0,n.jsx)("span",{className:"text-blue-700",children:String(t)});default:return(0,n.jsx)("span",{className:"text-gray-700",children:String(t)})}}function m(e){let{name:t}=e;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"text-indigo-700",children:['"',t,'"']}),(0,n.jsx)("span",{className:"text-gray-500",children:": "})]})}function h(e){let{name:t,value:r,depth:a}=e,[l,c]=(0,s.useState)(a<2);if(!("object"==typeof r&&null!==r&&!Array.isArray(r))&&!Array.isArray(r))return(0,n.jsxs)("div",{className:"min-w-0",children:[null!==t?(0,n.jsx)(m,{name:t}):null,(0,n.jsx)(x,{value:r})]});let i=Array.isArray(r),o=i?r.map((e,t)=>[String(t),e]):Object.entries(r),u=i?"]":"}",d=o.length;return(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"group flex cursor-pointer select-none items-baseline rounded hover:bg-gray-100",onClick:()=>c(e=>!e),role:"button","aria-expanded":l,children:[(0,n.jsx)("span",{className:"mr-0.5 inline-block w-4 shrink-0 text-center text-gray-400",children:d>0?l?"▾":"▸":""}),null!==t?(0,n.jsx)(m,{name:t}):null,(0,n.jsx)("span",{className:"text-gray-700",children:i?"[":"{"}),l?null:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"mx-1 rounded bg-gray-100 px-1 text-gray-400 group-hover:bg-gray-200",children:i?"".concat(d," 项"):"".concat(d," 键")}),(0,n.jsx)("span",{className:"text-gray-700",children:u})]})]}),l?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"ml-[7px] border-l border-gray-200 pl-3",children:o.map(e=>{let[t,r]=e;return(0,n.jsx)(h,{name:i?null:t,value:r,depth:a+1},t)})}),(0,n.jsx)("div",{className:"pl-5 text-gray-700",children:u})]}):null]})}function f(e){let{data:t}=e;return null==t?(0,n.jsx)("div",{className:"text-xs text-gray-400",children:"(无数据)"}):(0,n.jsx)("div",{className:"max-h-[32rem] overflow-auto rounded bg-gray-50 p-3 font-mono text-xs leading-5",children:(0,n.jsx)(h,{name:null,value:t,depth:0})})}let g={talent:"人才",job:"职位",company:"公司"},b={talent:"bg-blue-50 text-blue-700",job:"bg-yellow-50 text-yellow-700",company:"bg-green-50 text-green-700"};function p(e){var t,r,a,l,c,i;let{type:o,entity:u,sources:x}=e,[m,h]=(0,s.useState)(x.length?String(x[0].id):""),p="talent"===o?null!==(t=u.name)&&void 0!==t?t:"(未命名)":"job"===o?null!==(r=u.title)&&void 0!==r?r:"(未命名职位)":null!==(a=u.name)&&void 0!==a?a:"(未命名)",y="talent"===o?u.headline:"job"===o?u.company:"",v=x.find(e=>String(e.id)===m)||x[0];return(0,n.jsxs)("div",{className:"w-full",children:[(0,n.jsxs)("header",{className:"mb-6",children:[(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,n.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:p}),(0,n.jsx)("span",{className:"rounded px-2 py-0.5 text-xs ".concat(null!==(l=b[o])&&void 0!==l?l:"bg-gray-100 text-gray-600"),children:null!==(c=g[o])&&void 0!==c?c:o}),(0,n.jsx)("span",{className:"rounded bg-gray-100 px-2 py-0.5 text-xs text-gray-600",children:u.source})]}),y?(0,n.jsx)("p",{className:"mt-1 text-gray-600",children:y}):null]}),(0,n.jsxs)("section",{className:"rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"解析来源"}),v?(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"当前来源页面"}),(0,n.jsx)("a",{href:v.sourceUrl,target:"_blank",rel:"noreferrer",className:"break-all text-sm text-blue-600 hover:underline",children:v.sourceUrl}),v.hasSnapshot?(0,n.jsx)("span",{className:"ml-2 rounded bg-green-50 px-1.5 py-0.5 text-xs text-green-700",children:"有录制快照"}):null]}),x.length>1?(0,n.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,n.jsx)("label",{className:"text-sm text-gray-600",children:"历史来源:"}),(0,n.jsx)("select",{value:m,onChange:e=>h(e.target.value),className:"rounded border border-gray-300 px-2 py-1 text-sm",children:x.map(e=>(0,n.jsxs)("option",{value:e.id,children:[e.domain," \xb7 ",(0,d.d3)(e.createdAt)]},e.id))}),(0,n.jsx)("a",{href:v.sourceUrl,target:"_blank",rel:"noreferrer",className:"rounded bg-blue-600 px-3 py-1 text-sm text-white hover:bg-blue-700",children:"打开该来源页面"})]}):null]}):(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"暂无解析来源记录"})]}),(0,n.jsxs)("section",{className:"mt-4 rounded-lg border border-gray-200 bg-white p-5 shadow-sm",children:[(0,n.jsx)("h2",{className:"mb-3 text-lg font-semibold",children:"原始数据"}),(0,n.jsx)(f,{data:null!==(i=u.extracted)&&void 0!==i?i:u.raw})]})]})}function y(e){let t=new URLSearchParams;Object.entries(e).forEach(e=>{let[r,n]=e;n&&t.set(r,n)});let r=t.toString();return r?"?".concat(r):""}function v(e){let{type:t,label:r,titleField:x,subtitleField:m}=e,h=(0,a.useRouter)(),f=(0,a.usePathname)(),g=(0,a.useSearchParams)(),b=g.get("id")||"",v=(0,s.useMemo)(()=>({q:g.get("q")||"",status:"",from:g.get("from")||"",to:g.get("to")||""}),[g]),[j,N]=(0,s.useState)([]),[w,S]=(0,s.useState)(null),[k,E]=(0,s.useState)(!0),[C,P]=(0,s.useState)(!1),[q,R]=(0,s.useState)(0),L=(0,s.useCallback)(e=>{var t,r;let n=null!==(t=e.filters)&&void 0!==t?t:v,s=y({id:null!==(r=e.id)&&void 0!==r?r:b,q:n.q,from:n.from,to:n.to});h.replace("".concat(f).concat(s))},[v,b,f,h]),_=(0,s.useCallback)(()=>{R(e=>e+1)},[]),A=(0,s.useCallback)(()=>{if(j.length)return j[0].updatedAt},[j]);(0,s.useEffect)(()=>{E(!0);let e=y({q:v.q,from:v.from,to:v.to});(0,l.r)("/entities?type=".concat(t,"&limit=50").concat(e.replace("?","&"))).then(e=>{var t;N(null!==(t=null==e?void 0:e.items)&&void 0!==t?t:[]),E(!1)})},[t,v.q,v.from,v.to,q]),(0,s.useEffect)(()=>{if(!b){S(null);return}P(!0),Promise.all([(0,l.r)("/entities/".concat(t,"/").concat(b)),(0,l.r)("/entities/".concat(t,"/").concat(b,"/sources"))]).then(e=>{let[t,r]=e;if(t){var n;S({entity:t.entity,sources:null!==(n=null==r?void 0:r.items)&&void 0!==n?n:[]})}else S(null);P(!1)})},[t,b]);let I=(0,s.useMemo)(()=>j.map(e=>{var t;let r=null!==(t=e[x])&&void 0!==t?t:"(未命名)",s=m?e[m]:"";return{id:String(e.id),content:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"font-medium text-gray-900",children:r}),s?(0,n.jsx)("div",{className:"text-xs text-gray-500",children:s}):null,(0,n.jsxs)("div",{className:"mt-0.5 flex items-center gap-2 text-xs text-gray-400",children:[(0,n.jsx)("span",{children:e.source}),(0,n.jsx)("span",{children:"\xb7"}),(0,n.jsx)("span",{children:(0,d.d3)(e.updatedAt)})]})]})}}),[j,x,m]),U=b?C?(0,n.jsx)("div",{className:"flex h-full items-center justify-center text-gray-400",children:"加载中…"}):w?(0,n.jsx)(p,{type:t,entity:w.entity,sources:w.sources}):(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-red-500",children:["未找到该",r]}):(0,n.jsxs)("div",{className:"flex h-full items-center justify-center text-gray-400",children:["请在左侧选择一条",r,"查看详情"]});return(0,n.jsx)(i.m,{filterBar:(0,n.jsxs)("div",{className:"border-b border-gray-200 bg-white",children:[(0,n.jsx)(c.f,{value:v,onChange:e=>L({filters:e})}),(0,n.jsx)(u.Y,{pollUrl:"/entities/count?type=".concat(t),getLatestTimestamp:A,onRefresh:_,label:r})]}),listPanel:(0,n.jsx)(o.L,{items:I,selectedId:b,onSelect:e=>L({id:e}),loading:k,emptyText:"暂无".concat(r,"数据")}),detailPanel:U})}function j(e){return(0,n.jsx)(s.Suspense,{fallback:(0,n.jsx)("div",{className:"p-6 text-gray-500",children:"加载中…"}),children:(0,n.jsx)(v,{...e})})}},7202:function(e,t,r){"use strict";r.d(t,{f:function(){return a}});var n=r(2835),s=r(635);function a(e){let{value:t,showStatus:r,statusOptions:a,onChange:l}=e,[c,i]=(0,s.useState)(t);return(0,s.useEffect)(()=>{i(t)},[t.q,t.status,t.from,t.to]),(0,s.useEffect)(()=>{let e=setTimeout(()=>{(c.q!==t.q||c.status!==t.status||c.from!==t.from||c.to!==t.to)&&l(c)},300);return()=>clearTimeout(e)},[c.q,c.status,c.from,c.to]),(0,n.jsxs)("div",{className:"space-y-2 border-b border-gray-200 bg-white p-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("div",{className:"relative flex-1",children:[(0,n.jsx)("input",{type:"text",value:c.q,onChange:e=>i(t=>({...t,q:e.target.value})),placeholder:"搜索关键词...",className:"w-full rounded border border-gray-300 px-2 py-1.5 pr-8 text-sm outline-none focus:border-blue-500"}),(0,n.jsx)("button",{type:"button",onClick:()=>l({q:"",status:"",from:"",to:""}),title:"重置筛选",className:"absolute right-1 top-1/2 -translate-y-1/2 rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600 disabled:opacity-30",disabled:!c.q&&!c.status&&!c.from&&!c.to,children:(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4",viewBox:"0 0 20 20",fill:"currentColor",children:(0,n.jsx)("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),r?(0,n.jsxs)("select",{value:c.status,onChange:e=>i(t=>({...t,status:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500",children:[(0,n.jsx)("option",{value:"",children:"全部状态"}),(a||[]).map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value))]}):null]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("input",{type:"date",value:c.from,onChange:e=>i(t=>({...t,from:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"}),(0,n.jsx)("span",{className:"text-sm text-gray-400",children:"-"}),(0,n.jsx)("input",{type:"date",value:c.to,onChange:e=>i(t=>({...t,to:e.target.value})),className:"rounded border border-gray-300 px-2 py-1.5 text-sm outline-none focus:border-blue-500"})]})]})}},4518:function(e,t,r){"use strict";r.d(t,{m:function(){return s}});var n=r(2835);function s(e){let{filterBar:t,listPanel:r,detailPanel:s}=e;return(0,n.jsxs)("div",{className:"flex h-full",children:[(0,n.jsxs)("div",{className:"flex w-80 flex-col border-r border-gray-200 bg-white",children:[t,r]}),(0,n.jsx)("div",{className:"flex-1 overflow-auto bg-gray-50 p-6",children:s})]})}},3718:function(e,t,r){"use strict";r.d(t,{L:function(){return s}});var n=r(2835);function s(e){let{items:t,selectedId:r,onSelect:s,loading:a,emptyText:l="暂无数据"}=e;return(0,n.jsx)("div",{className:"flex-1 overflow-auto",children:a?(0,n.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:"加载中…"}):0===t.length?(0,n.jsx)("div",{className:"p-4 text-center text-sm text-gray-400",children:l}):(0,n.jsx)("ul",{className:"divide-y divide-gray-100",children:t.map(e=>(0,n.jsx)("li",{role:"button",tabIndex:0,onClick:()=>s(e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&s(e.id)},className:"cursor-pointer px-3 py-2 text-sm transition-colors ".concat(r===e.id?"bg-blue-50":"hover:bg-gray-50"),children:e.content},e.id))})})}},9036:function(e,t,r){"use strict";r.d(t,{Y:function(){return l}});var n=r(2835),s=r(635),a=r(4431);function l(e){let{pollUrl:t,intervalMs:r=5e3,onRefresh:l,getLatestTimestamp:c,label:i="新数据"}=e,[o,u]=(0,s.useState)(0),[d,x]=(0,s.useState)(!1),m=(0,s.useRef)(void 0);return((0,s.useEffect)(()=>{let e=()=>x(document.hidden);return document.addEventListener("visibilitychange",e),()=>document.removeEventListener("visibilitychange",e)},[]),(0,s.useEffect)(()=>{m.current=c(),u(0)},[c]),(0,s.useEffect)(()=>{if(d)return;let e=async()=>{var e;let r=m.current;if(!r)return;let n=t.includes("?")?"&":"?",s=await (0,a.r)("".concat(t).concat(n,"since=").concat(encodeURIComponent(r))).catch(()=>null),l=null!==(e=null==s?void 0:s.count)&&void 0!==e?e:0;u(e=>Math.max(e,l))};e();let n=setInterval(e,r);return()=>clearInterval(n)},[t,r,d]),o<=0)?null:(0,n.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:["有 ",o," 条",i,",点击刷新"]})}},8448:function(e,t,r){"use strict";function n(e){return e?("string"==typeof e?new Date(e):e).toLocaleString("zh-CN",{hour12:!1}):""}r.d(t,{d3:function(){return n}})},4431:function(e,t,r){"use strict";r.d(t,{O:function(){return s},r:function(){return l}});var n=r(529);function s(){return n.env.HUNTER_MATE_SERVER_URL||""}let a=s();async function l(e,t){try{let r=await fetch("".concat(a).concat(e),{cache:"no-store",...t});if(!r.ok)return null;return await r.json()}catch(e){return null}}}}]);
@@ -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]="86e26750-2315-4c8c-96b3-0e3803655f3a",e._sentryDebugIdIdentifier="sentry-dbid-86e26750-2315-4c8c-96b3-0e3803655f3a")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[937],{4116:function(e,t,a){Promise.resolve().then(a.bind(a,1332))},7473:function(e,t,a){"use strict";var s=a(8321);a.o(s,"useParams")&&a.d(t,{useParams:function(){return s.useParams}}),a.o(s,"usePathname")&&a.d(t,{usePathname:function(){return s.usePathname}}),a.o(s,"useRouter")&&a.d(t,{useRouter:function(){return s.useRouter}}),a.o(s,"useSearchParams")&&a.d(t,{useSearchParams:function(){return s.useSearchParams}})},1332:function(e,t,a){"use strict";a.d(t,{default:function(){return i}});var s=a(2835),n=a(635),r=a(7473);function i(){let e=(0,r.useSearchParams)().get("user_code")||"",[t,a]=(0,n.useState)(!0),[i,d]=(0,n.useState)({loggedIn:!1}),[o,l]=(0,n.useState)(""),[c,u]=(0,n.useState)(""),[m,h]=(0,n.useState)(0),[g,f]=(0,n.useState)(!1),[x,b]=(0,n.useState)(""),[p,y]=(0,n.useState)(!1),j=(0,n.useRef)();(0,n.useEffect)(()=>(fetch("/auth/session").then(e=>e.ok?e.json():{loggedIn:!1}).then(e=>d((null==e?void 0:e.loggedIn)?e:{loggedIn:!1})).catch(()=>d({loggedIn:!1})).finally(()=>a(!1)),()=>{j.current&&clearInterval(j.current)}),[]);let w=()=>{h(60),j.current=setInterval(()=>{h(e=>(e<=1&&j.current&&clearInterval(j.current),Math.max(0,e-1)))},1e3)},N=async()=>{if(!o.trim()){b("请输入邮箱");return}f(!0),b("");try{let e=await fetch("/auth/email/send-code",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:o.trim()})}),t=await e.json().catch(()=>({}));if(!e.ok)throw Error(t.message||t.error||"发送失败,请稍后重试");w()}catch(e){b(e.message)}finally{f(!1)}},v=async t=>{let a=await fetch("/auth/approve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userCode:e,token:t})}),s=await a.json().catch(()=>({}));if(!a.ok||!s.ok)throw Error(s.error||s.message||"授权失败");y(!0)},k=async e=>{e.preventDefault(),f(!0),b("");try{let e=await fetch("/auth/email/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:o.trim(),code:c.trim()})}),t=await e.json().catch(()=>({}));if(!e.ok||!t.access_token)throw Error(t.message||t.error||"验证码错误");await v(t.access_token)}catch(e){b(e.message)}finally{f(!1)}},S=async()=>{f(!0),b("");try{await v(i.token)}catch(e){d({loggedIn:!1}),b("".concat(e.message,";请用邮箱验证码登录"))}finally{f(!1)}};return t?(0,s.jsx)("main",{className:"flex min-h-screen items-center justify-center p-4",children:(0,s.jsx)("div",{className:"w-full max-w-md rounded-lg bg-white p-8 text-center text-gray-500 shadow",children:"正在检查登录状态..."})}):(0,s.jsx)("main",{className:"flex min-h-screen items-center justify-center p-4",children:(0,s.jsxs)("div",{className:"w-full max-w-md rounded-lg bg-white p-8 shadow",children:[(0,s.jsx)("h1",{className:"mb-2 text-2xl font-bold",children:"HunterMate 设备授权"}),(0,s.jsxs)("p",{className:"mb-6 text-gray-600",children:["用户码:",(0,s.jsx)("span",{className:"font-mono text-lg font-semibold text-indigo-600",children:e})]}),p?(0,s.jsx)("div",{className:"rounded bg-green-50 p-4 text-green-700",children:"授权成功,请回到 CLI 继续操作。"}):i.loggedIn?(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)("div",{className:"rounded bg-indigo-50 p-4 text-sm text-indigo-700",children:["当前已登录:",(0,s.jsx)("span",{className:"font-medium",children:i.email}),"(检测到本机已完成邮箱验证码登录)"]}),x&&(0,s.jsx)("div",{className:"rounded bg-red-50 p-3 text-sm text-red-700",children:x}),(0,s.jsx)("button",{onClick:S,disabled:g,className:"w-full rounded bg-indigo-600 px-4 py-2 font-medium text-white hover:bg-indigo-700 disabled:opacity-50",children:g?"处理中...":"确认授权"}),(0,s.jsx)("button",{onClick:()=>d({loggedIn:!1}),className:"w-full text-sm text-gray-400 underline",children:"不是本人?改用邮箱验证码登录"})]}):(0,s.jsxs)("form",{onSubmit:k,className:"space-y-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-sm font-medium",children:"邮箱"}),(0,s.jsx)("input",{type:"email",value:o,onChange:e=>l(e.target.value),required:!0,className:"w-full rounded border border-gray-300 p-2"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"mb-1 block text-sm font-medium",children:"验证码"}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)("input",{type:"text",inputMode:"numeric",pattern:"\\d{6}",maxLength:6,value:c,onChange:e=>u(e.target.value),required:!0,placeholder:"6 位数字",className:"w-full rounded border border-gray-300 p-2"}),(0,s.jsx)("button",{type:"button",onClick:N,disabled:g||m>0,className:"shrink-0 rounded border border-indigo-600 px-3 py-2 text-sm text-indigo-600 disabled:border-gray-300 disabled:text-gray-400",children:m>0?"".concat(m,"s 后重发"):"发送验证码"})]})]}),x&&(0,s.jsx)("div",{className:"rounded bg-red-50 p-3 text-sm text-red-700",children:x}),(0,s.jsx)("button",{type:"submit",disabled:g,className:"w-full rounded bg-indigo-600 px-4 py-2 font-medium text-white hover:bg-indigo-700 disabled:opacity-50",children:g?"处理中...":"登录并授权"})]})]})})}}},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]="fb7aa44e-1c1f-4922-a5a2-881a4fc8faba",e._sentryDebugIdIdentifier="sentry-dbid-fb7aa44e-1c1f-4922-a5a2-881a4fc8faba")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[964],{},function(e){e.O(0,[539,400,935,744],function(){return e(e.s=5539)}),_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]="93019800-9b79-48ab-8f7a-488f96a7f7ee",e._sentryDebugIdIdentifier="sentry-dbid-93019800-9b79-48ab-8f7a-488f96a7f7ee")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[109],{},function(e){e.O(0,[539,400,935,744],function(){return e(e.s=5539)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r=(new e.Error).stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="3bff89d3-665b-435a-ad27-d0679df4a9f9",e._sentryDebugIdIdentifier="sentry-dbid-3bff89d3-665b-435a-ad27-d0679df4a9f9")}catch(e){}}(),(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{3128:function(e,r,n){Promise.resolve().then(n.t.bind(n,1115,23)),Promise.resolve().then(n.bind(n,4798))},7473:function(e,r,n){"use strict";var s=n(8321);n.o(s,"useParams")&&n.d(r,{useParams:function(){return s.useParams}}),n.o(s,"usePathname")&&n.d(r,{usePathname:function(){return s.usePathname}}),n.o(s,"useRouter")&&n.d(r,{useRouter:function(){return s.useRouter}}),n.o(s,"useSearchParams")&&n.d(r,{useSearchParams:function(){return s.useSearchParams}})},4798:function(e,r,n){"use strict";n.d(r,{SystemSidebar:function(){return o}});var s=n(2835),a=n(5589),t=n(7473);let u=[{href:"/",label:"仪表盘",icon:"\uD83D\uDCCA"},{href:"/talents",label:"人才",icon:"\uD83D\uDC64"},{href:"/jobs",label:"职位",icon:"\uD83D\uDCBC"},{href:"/companies",label:"公司",icon:"\uD83C\uDFE2"},{href:"/parselog",label:"解析日志",icon:"\uD83D\uDCCB"},{href:"/recordings",label:"录制",icon:"\uD83D\uDD34"}];function o(){let e=(0,t.usePathname)()||"/";return(0,s.jsxs)("aside",{className:"flex h-screen w-56 flex-col border-r border-gray-200 bg-white",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 border-b border-gray-200 px-4 py-3",children:[(0,s.jsx)("span",{className:"text-xl",children:"\uD83E\uDD1D"}),(0,s.jsx)("span",{className:"font-semibold text-gray-900",children:"HunterMate"})]}),(0,s.jsx)("nav",{className:"flex-1 overflow-auto py-3",children:u.map(r=>{let n=e===r.href||e.startsWith("".concat(r.href,"/"));return(0,s.jsxs)(a.default,{href:r.href,className:"mx-2 flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors ".concat(n?"bg-blue-50 text-blue-700":"text-gray-600 hover:bg-gray-50 hover:text-gray-900"),children:[(0,s.jsx)("span",{className:"text-base",children:r.icon}),r.label]},r.href)})})]})}},1115:function(){}},function(e){e.O(0,[24,589,400,935,744],function(){return e(e.s=3128)}),_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]="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()}]);
@@ -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]="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()}]);
@@ -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]="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 +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]="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 +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]="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()}]);
@@ -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]="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()}]);