PageSourceSearch

https://blockchain-jobs.lovable.app/assets/JobReclassifier-CV9TV8Vb.js

js blockchain-jobs.lovable.app collected 2026-10-03 03:24:39 UTC 3,822 bytes, 1 lines download raw bytes

1import{j as s}from"./vendor-query-DUCmC_Bj.js";import{e as g,r as t}from"./vendor-react-CaN3RTC8.js";import{u,H as f,B as m,L as p,s as b}from"./index-BzzKpoj3.js";import{C as v,a as N,b as y,c as R,d as w}from"./card-DuaxMigU.js";import{L as C}from"./LogViewer-HIfiNzeR.js";import{A}from"./arrow-left-BSYhy7GL.js";import{S as L}from"./sparkles-BTykwxjI.js";import{P as E}from"./play-D8YLGhe1.js";import"./vendor-heavy-LJgKymp8.js";import"./vendor-ui-UAm5eCyr.js";import"./scroll-area-BZoApUhd.js";function P(){const x=g(),{toast:n}=u(),[c,l]=t.useState(!1),[i,o]=t.useState(null),[h,d]=t.useState([]),a=e=>{d(r=>[...r,`[${new Date().toLocaleTimeString()}] ${e}`])},j=async()=>{l(!0),o(null),d([]),a("Starting AI-powered job reclassification...");try{a("Connecting to reclassify-jobs function...");const{data:e,error:r}=await b.functions.invoke("reclassify-jobs",{body:{}});if(r)throw a(`ERROR: ${r.message}`),r;a("Job reclassification completed successfully"),a(`Reclassified ${e.stats.reclassified} jobs`),a(`Unchanged ${e.stats.unchanged} jobs`),a(`Errors: ${e.stats.errors}`),o(e.stats),n({title:"Reclassification Complete",description:e.message})}catch(e){console.error("Error running reclassifier:",e),a(`FAILED: ${e instanceof Error?e.message:"Unknown error"}`),n({title:"Error",description:"Failed to run job reclassifier",variant:"destructive"})}finally{l(!1)}};return s.jsxs(s.Fragment,{children:[s.jsxs(f,{children:[s.jsx("title",{children:"Job Reclassifier - Admin"}),s.jsx("meta",{name:"robots",content:"noindex, nofollow"})]}),s.jsx("div",{className:"min-h-screen bg-background",children:s.jsxs("div",{className:"container mx-auto px-4 py-12 max-w-4xl",children:[s.jsxs(m,{variant:"ghost",onClick:()=>x("/admin"),className:"mb-6",children:[s.jsx(A,{className:"mr-2 h-4 w-4"}),"Back to Dashboard"]}),s.jsxs(v,{children:[s.jsx(N,{children:s.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[s.jsx("div",{className:"p-3 bg-primary/10 rounded-lg",children:s.jsx(L,{className:"h-6 w-6 text-primary"})}),s.jsxs("div",{children:[s.jsx(y,{children:"AI Job Reclassifier"}),s.jsx(R,{className:"mt-1",children:"Use AI to automatically reclassify jobs into correct categories"})]})]})}),s.jsx(w,{children:s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"bg-muted/50 rounded-lg p-4",children:[s.jsx("h3",{className:"font-semibold mb-2",children:"New Categories Added:"}),s.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[s.jsx("div",{children:"• Product Management"}),s.jsx("div",{children:"• Data & Analytics"}),s.jsx("div",{children:"• Quality Assurance"}),s.jsx("div",{children:"• DevOps & Infrastructure"}),s.jsx("div",{children:"• Legal & Compliance"}),s.jsx("div",{children:"• Finance & Accounting"}),s.jsx("div",{children:"• Human Resources"}),s.jsx("div",{children:"• Content & Writing"}),s.jsx("div",{children:"• Security"}),s.jsx("div",{children:"• AI & Machine Learning"})]})]}),s.jsx(m,{onClick:j,disabled:c,size:"lg",variant:"gradient",className:"w-full",children:c?s.jsxs(s.Fragment,{children:[s.jsx(p,{className:"mr-2 h-5 w-5 animate-spin"}),"Reclassifying Jobs..."]}):s.jsxs(s.Fragment,{children:[s.jsx(E,{className:"mr-2 h-5 w-5"}),"Run AI Reclassifier"]})}),i&&s.jsxs("div",{className:"mt-6 p-4 bg-muted rounded-lg",children:[s.jsx("h3",{className:"font-semibold mb-2",children:"Results:"}),s.jsxs("ul",{className:"space-y-1 text-sm",children:[s.jsxs("li",{children:["Total Jobs Analyzed: ",i.total_jobs]}),s.jsxs("li",{className:"text-green-600 dark:text-green-400",children:["Reclassified: ",i.reclassified]}),s.jsxs("li",{children:["Unchanged: ",i.unchanged]}),s.jsxs("li",{className:"text-destructive",children:["Errors: ",i.errors]})]})]})]})})]}),s.jsx(C,{logs:h,title:"Reclassification Logs"})]})})]})}export{P as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.